Software Development Security (EP.3)

Threat Modeling – Thinking Like an Attacker

🕵️‍♂️💻🎯 ถ้าอยากพัฒนาระบบให้ปลอดภัย สิ่งที่เราควรทำไม่ใช่แค่เขียนโค้ดให้ดีหรือทดสอบให้ครอบคลุม แต่ต้อง “คิดให้เหมือนแฮกเกอร์” เพื่อจะได้มองเห็นจุดอ่อนก่อนที่คนไม่หวังดีจะมองเห็น — และนั่นคือหัวใจของแนวคิด Threat Modeling 🎯💻🕵️‍♂️

Threat Modeling คืออะไร?

🔎🧠📌 Threat Modeling คือกระบวนการวิเคราะห์ระบบอย่างเป็นระบบเพื่อ

  • ระบุจุดอ่อน (Vulnerabilities) ที่อาจถูกโจมตี
  • คาดการณ์ภัยคุกคาม (Threats) ที่อาจเกิดขึ้น
  • วางแนวทางป้องกันหรือบรรเทาความเสี่ยง (Mitigation)

จุดเด่นของ Threat Modeling คือการทำตั้งแต่ ระยะออกแบบ (Design Phase) ไม่ใช่รอจนระบบเสร็จแล้วค่อยหาช่องโหว่ เหมาะอย่างยิ่งกับแนวทาง Secure SDLC และ DevSecOps 📌🧠🔎

เทคนิคที่ใช้ใน Threat Modeling

🧩🛡️📊 แนวทางที่นิยมใช้มีหลายแบบ แต่วิธีที่แพร่หลายและเข้าใจง่าย ได้แก่:

STRIDE

เป็น Framework ของ Microsoft ที่ช่วยระบุประเภทของภัยคุกคามได้อย่างครอบคลุม ประกอบด้วย:

  • S – Spoofing : ปลอมตัวเป็นผู้อื่น เช่น ปลอมบัญชีผู้ใช้
  • T – Tampering : แก้ไขข้อมูลที่ไม่ควรถูกเปลี่ยน
  • R – Repudiation : ปฏิเสธการกระทำของตน เช่น ไม่ยอมรับว่าเคยโอนเงิน
  • I – Information Disclosure : เปิดเผยข้อมูลให้คนที่ไม่ควรเข้าถึง
  • D – Denial of Service (DoS) : ทำให้ระบบหยุดให้บริการ
  • E – Elevation of Privilege : ได้รับสิทธิ์เกินกว่าที่ควรมี

DREAD

เป็นวิธีให้คะแนนความเสี่ยง โดยประเมินจาก 5 ด้าน:

  • Damage: ผลกระทบถ้าเกิดจริงรุนแรงแค่ไหน
  • Reproducibility : สามารถทำซ้ำได้ง่ายหรือไม่
  • Exploitability : โจมตีได้ง่ายแค่ไหน
  • Affected Users : ส่งผลต่อผู้ใช้มากน้อยแค่ไหน
  • Discoverability : แฮกเกอร์สามารถพบช่องโหว่ได้ง่ายแค่ไหน

📊 การใช้ STRIDE + DREAD ร่วมกันช่วยให้สามารถประเมินและจัดลำดับความเสี่ยงได้อย่างมีเหตุผลและนำไปใช้งานได้จริง 🛡️🧩📊

ตัวอย่าง Threat Modeling ที่นำไปใช้ได้จริง

📱💳🧾 สมมุติว่าเรากำลังพัฒนาแอปพลิเคชันชำระเงินออนไลน์:

  • ผู้ใช้สามารถดูยอดเงิน โอนเงิน และชำระบิลผ่านมือถือ
  • มีการเก็บข้อมูลบัตรเครดิตและประวัติการชำระเงิน

Threat Modeling จะช่วยระบุสิ่งต่อไปนี้

  • Spoofing : แฮกเกอร์ปลอมตัวเป็นผู้ใช้เพื่อเข้าระบบ
  • Tampering : มีคนพยายามแก้ไขข้อมูลยอดเงินในฐานข้อมูล
  • Information Disclosure : ระบบแสดงเลขบัตรเครดิตโดยไม่ได้ปิดบางส่วน
  • Elevation of Privilege : ผู้ใช้ทั่วไปสามารถเข้าถึงหน้าจัดการสิทธิ์แอดมินได้

เมื่อทราบภัยคุกคามเหล่านี้ ทีมสามารถออกแบบมาตรการป้องกัน เช่น

  • ใช้ MFA (Multi-Factor Authentication)
  • ปิดบังหมายเลขบัตรเครดิตบางส่วน
  • เขียน Log การกระทำสำคัญ พร้อมป้องกันการแก้ไข Log
  • จำกัดสิทธิ์ตาม Role และตรวจสอบสิทธิ์ทุกครั้งก่อนเข้าถึงฟังก์ชันสำคัญ 💳🧾📱

สรุป

🛠️🔐📚 Threat Modeling เป็นมากกว่าเครื่องมือด้าน Security มันคือ “วิธีคิด” ที่ช่วยให้ทีมพัฒนามองเห็นมุมมองของผู้โจมตี และป้องกันได้ก่อนเกิดเหตุจริง

ยิ่งเริ่มทำ Threat Modeling ตั้งแต่ต้น ยิ่งประหยัดเวลา ลดความเสี่ยง และเพิ่มความมั่นคงให้กับระบบ

📘✨➡️ ตอนถัดไป: Secure Coding — เขียนโค้ดยังไงให้แฮกไม่ติด >>