สำหรับวันนี้เป็น Blog สรุปจาก Session Secure Design: Threat Modelling โดยคุณนฤดม รุ่งศิริวงศ์ คร้บ โดยก่อนจะรู้จักกับ Threat Modelling ต้องมารู้จักกับคำว่า Attack Surface กันก่อนครับ
Application Security Risk
When We Do Threat Modeling
- ทำตั้งแต่ช่วง Phase Design เพราะการเจอปัญหาก่อน มันช่วยลด Cost ในการปรับปรุงแก้ไขได่เยอะ
Attack Surface
- จุดเสื่ยงมีเปิดโอกาศในเกิดการโจมตีระบบได้ เพื่อให้ทราบว่า
- ส่วนไหนของระบบที่ต้องมีการ Review / Test ด้าน Security
- อะไรที่เป็น High Risk
- แล้วจะลด หรือจัดการมันอย่างไร
- Attack Surface Analysis
- Defining the Attack Surface of an Application
- อะไรที่พาให้เข้าถึงระบบเราได้ พวก API ต่างๆ หรือ UI หน้าจอ
- ข้อมูลที่เก็บในระบบ อะไรที่เป็นจุดเสี่ยง
- แล้วที่กล่าวมามีการป้องกันไหม ?
- Identifying and Mapping the Attack Surface
- Entry / Exit Point
- Technology Design
- Measuring and Assessing the Attack Surface
- Measuring หาจุดที่จะโดนโจมตี เช่น
- API ที่ไม่ต้อง Login
- UI ที่กรอกข้อมูลต่างๆ
- Custom Component ที่พัฒนาเอง เช่น Library สำหรับทำ Cryptography
- Protocol / Interface ต่างๆ เป็นต้น
- Assessing
- ลด Attack Surface โดยใช้ Standard Implementation ไม่ต้องคิดเยอะ ใช้ที่มีอยู่แล้ว เช่น พวก Component / มาตรฐานต่างๆ
- การจัดการสิทธิ (Lower Privilege) / ใช้เท่าที่จำเป็น (Turn features off)
- การป้องกันหลายชั้น (Defense in Depth) เช่น การจัดการ Zone Network และมีการ Authentication + Authorization ที่ Application
- Measuring หาจุดที่จะโดนโจมตี เช่น
- Attack Surface Evaluation
- เทียบ Before / After เห็นผลแล้ว
Threat Modeling
- ตรวจสอบความเสี่ยงของสิ่งที่สนใจ เช่น Web Application ตั้งแต่ช่วงต้นๆของโครงการ
- เพื่อให้ช่วยระบุ (identify), วัดผล(quantify) และ จัดการ(address) security risks
- How to Threat Modeling
- Identify security objectives and assets
- กำหนด Scope จากข่าว / Policy ต่างๆที่เกี่ยวข้อง
- ตัด Scope ได้จากการทำ Attack Surface Analysis
- การออกแบบ Zero Thrust ทำให้ Threat Modeling ซับซ้อนขึ้น
- Profile the application
- Identify the Physical Topology ลงบนไหน VM Container
- Identify the Logical Topology
- Determine Component Service protocol ports
- Identify data elements หากข้อมูลที่มีความเสี่ยงจะถูกขโมย
- Generate data access control matrix
- Decompose the application - แตก Application เป็นมุมๆ เพื่อหาจุดที่เสี่ยง
- Trust Boundaries จุดที่ไม่มีการ Attack เช่น local network แยก Zone Network ของ App / DB
- Entry/Exit Point
- Data Flows ตรงนี้ทีจะคุย Attack Surface ยาก มีข้อมูลส่วนไหนต้องสังเกตุ แล้วมันจะ Refer ไปยัง Method / API ที่เกี่ยวข้อง เช่น การถอนเงิน มันมีเคสลัด Flow ไม่ต้อง Authentication หรือป่าว ?
- Privileged Code : API หรือพวก Script ที่ใช้สิทธิสูง
- Identify threats and vulnerabilities
- Think like an attacker (Attack Tree = จาก Attack Surface เรามีวิธีการอะไรที่เจาะได้บ้าง)
- ใช้ Model ต่างๆ มาจัดกลุ่มความเสี่ยงที่พบ โดยมีได้หลายวิธีการ เช่น NSA IAM / OCTAVE / STRIDE
- STRIDE มันจะกับแนวคิดเดียวกับของ CIA เลย
- หลังจากวาง Attack Tree แล้ว สิ่งที่ต้องทำถัดไป คือ ใช้คะแนน โดยมีวิธีที่นิยม คือ CVSS Scoring
- Document the threats + Prioritize and mitigate (Suggest Solution) the threats
- บันทึกความเสี่ยง เช่น ลำดับความสำคัญ(Risk) / เป้าหมายวของการโจมตี(Threat Target) / วิธีการโจมตี (Attack Techniques) / ผลกระทบ (Security Impact) และสุดท้ายต้องมีวิธีการแก้ไข (Mitigate)ครับ
สรุป
- การทำ Attack Surface Analysis กับ Threat Modeling สามารถทำได้ตั้งแต่ช่วง Architecture Design เลย แต่มีข้อแม้ที่สำคัญ คือ Design ต้องนิ่ง จากนั้นค่อยๆ Decompose ลง Module หรือ Service ย่อยๆได้
- Slide ของวิทยากร: Security Design: Threat Modeling (slideshare.net)
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.