A3-Sensitive Data Exposure

Parit Wattanasin
blog blog
Published in
2 min readMar 13, 2019

หัวข้อที่กำลังมาแรงในโลกยุคที่ data privacy มีความสำคัญอย่างมาก

แล้วเราก็มาถึงหัวข้อ OWASP Top10–2017 A3 Sensitive Data Exposure

https://depositphotos.com/125305248/stock-photo-sensitive-data-word-cloud.html

คืออะไร:

เรื่อง Sensitive Data Exposure เป็นหัวข้อมาตั้งแต่ OWASP Top10 2013 2013-A6: Sensitive Data Exposure แต่ถ้าจะให้ลึกไปกว่านั้น จริงๆ มันเกิดมาตั้งแต่ OWASP Top10 2010 เกิดจากการรวมกันของ 2010-A7 — Insecure Cryptographic Storage & 2010-A9 — Insufficient Transport Layer Protection แสดงว่ามันต้องมีความสำคัญจริงๆ

ว่าแต่มันคือะไรเหรอตามคำนิยามที่เค้าว่าไว้

Many web applications and APIs do not properly protect sensitive data, such as financial, healthcare, and PII. Attackers may steal or modify such weakly protected data to conduct credit card fraud, identity theft, or other crimes. Sensitive data may be compromised without extra protection, such as encryption at rest or in transit, and requires special precautions when exchanged with the browser.

แปลได้ความว่า Web หรือ API ที่ไม่ได้มีการป้องกัน หรือป้องกันได้ไม่ดีพอ เกี่ยวกับข้อมูลที่มีความสำคัญ เช่นข้อมูลทางด้านการเงิน สุขภาพ รวมถึง PII(ศัพท์ใหม่ ไม่เคยได้ยิน 55 คร่าวๆ คือข้อมูลที่ใช้ระบุตัวบุคคลได้ เดี๋ยวไว้ด้านล่างค่อยมาดูว่ามันคืออะไร ) ซึ่งอาจส่งผลให้ผู้ไม่หวังดี(Attacker) อาจจะขโมยหรือแก้ไขข้อมูล เพื่อกระทำการบางอย่างที่ไม่ดีต่อไป

แล้วอะไรบ้างที่ถือว่าเสี่ยง คงต้องมานิยามใน Application ของเราก่อนว่าอะไรบ้างที่ถือว่าเป็น Sensitive Data เช่น password หมายเลขบัตรเครดิต จริงๆ แล้วพวกหมายเลขบัตรประชาชน นี่ก็ถือเป็น sensitive data ด้วยนะ เพราะในหลายๆ ระบบอาจจะมีการใช้หมายเลขบัตรในการยืนยันตัวตน โดยอาจจะรวมถึงข้อมูลอื่นๆ ที่อยู่ในนิยามทางด้านกฎหมาย เช่น GDPR หรือกฎอื่นๆ แล้วแต่เรื่อง(หมายความว่าอาจจะต้องมานิยามตามแต่บริบทของการใช้งานในโปรแกรมนั้น)

ในการส่งข้อมูล — ระหว่างที่เก็บกับปลายทาง ข้อมูลเหล่านั้นมีการเข้ารหัสไว้หรือไม่ ไม่ควรส่งเป็นข้อความที่มองแล้วดูรู้เลย protocol ที่ใช้ เหมาะสมมั๊ย https, sftp, ..
การเก็บข้อมูล — ก่อนเก็บมีการเข้ารหัสหรือไม่
algorithm — เราใช้ algorithm ที่เข้ารหัสแบบที่มีความ strong พอหรือไม่ ** อาจจะต้องตั้งเป็นรอบของการ review เอาไว้ เพราะพวก algorithm ที่เคยใช้ได้ หรือยอมรับในอดีต ไม่ได้หมายความว่าปัจจุบันจะใช้ได้เสมอไป ด้วยเทคโนโลยีหรือ hardware ที่เปลี่ยนไป ทำให้การถอดรหัสทำได้ง่ายขึ้น
รวมถึง user agent ต่างๆที่ใช้ มีการเช็ค server certificate มั๊ยว่ายัง valid อยู่

แนวทางการป้องกัน
1 classify
2 กำหนด control ตามการแยกกลุ่มประเภท
3 ถ้าไม่จำเป็นไม่ควรเก็บ sensitive data หรือใช้เสร็จให้รีบเคลียร์
4 อย่าลืม encrypt data
5 up-to-date strong standard algorithm รวมถึง protocol และใช้ key management ที่เหมาะสม
6 การส่งข้อมูลควรส่งผ่าน protocol ที่ secure เช่น TLS => มีหลาย version และมีประวัติศาสตร์ รวมถึงการใช้ HSTS
7 disable cache กรณีที่ response มีข้อมูลพวก sensitive
8 password ควรใช้ strong adaptive และ salted hashing function with a work factor เช่น Argon2, scrypt, bcrypt หรือ PBKDF2

ทุกวันนี้คุณเก็บ password แบบ one-way ด้วย hashing function แล้วหรือยังงงงง

Part หน้าเรามาลงลึกทางด้าน Technical กันบ้าง

ก่อนจากกัน เรามาย้ำกันอีกครั้งว่า เรื่อง Security เป็นเรื่องของทุกคน เราจะต้องให้ความสนใจกับเรื่องนี้ให้มากๆ โดยเฉพาะ Developer ที่เป็นต้นทางของการสร้าง software โดยหวังว่า series ชุด OWASP Top10 2017 จะเป็นจุดเริ่มต้นของการตระหนักด้าน software security ให้กับผู้อ่าน

ทิ้งท้าย หาข้อมูลเพิ่มเติมได้ที่ไหน ที่นี่เลย https://www.owasp.org ข้อมูลหลักที่รวบรวมข้อมูลด้าน security ไว้ มีคลังมากมายสามารถเข้าไปค้นคว้าได้

PII => Personally Identifiable Information จากความหมายใน wiki คือ ข้อมูลที่สามารถใช้ระบุตัว ติดต่อหรือค้นหาบุคคลหนึ่งบุคคลใดโดยเฉพาะ หรือเป็นข้อมูลที่ใช้ร่วมกับข้อมูลอื่นเพื่อระบุตัวบุคคลหนึ่งบุคคลใด สนใจสามารถค้นคว้าต่อได้ที่ https://th.wikipedia.org/wiki/ข้อมูลที่ระบุตัวบุคคลได้ ในนั้นจะบอกถึงว่าข้อมูลอะไรบ้างที่ถือว่าเป็น PII แต่อาจจะเป็นแค่ตัวอย่างของอเมริกา แต่ก็คือว่าใช้เป็นหลักได้

ref:

--

--