[OWASP] สรุป Secure Design: Threat Modelling

สำหรับวันนี้เป็น 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
  • 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.