Coding Gun

Threat Modeling คืออะไร?

Threat Modeling คือ Diagram ที่อธิบายการทำงานของ Application รวมทั้งช่องโหว่หรือจุดอ่อนที่อาจเกิดขึ้นในจุดต่าง พร้อมทั้งวิธีการรับมือกับความเสี่ยงต่างๆ

ใน OWASP Top 10 2023 ได้มี A4 Insecure Design เข้ามาใน Top 10 เพราะปัญหาของ Web application ณ ปัจจุบันเกิดตั้งแต่ขั้นตอนการออกแบบ ดังนั้นวิธีการป้องกันปัญหานี้คือ Secure by Design

Secure by Design

Secure by Design คือการคำนึงถึงความปลอดภัยตั้งแต่ขั้นตอนการออกแบบ พูดง่ายๆก็คือต้องออกแบบระบบให้มีความปลอดภัยนั่นเอง ซึ่งเครื่องมือในการทำ Secure by Design นั้นมีหลายตัวเช่น

แนวทางการ Secure Design

การจะออกแบบระบบให้มีความปลอดภัยนั้นเรามีวิธีคิดอยู่ 3 แนวทางด้วยกันคือ

  1. Asset Centric การนิยามว่าในองค์มีทรัพย์สินที่มีค่าอยู่ตรงไหนบ้าง ซึ่งเราจะต้องดูทั้ง

    • Sensitive Data(ข้อมูลที่เป็นความลับ)
    • Service หรือ Application(บริการที่มีผลกับ Business มากๆ)

    ผู้ที่ต้องรับผิดชอบและให้คำแนะนำในส่วนนี้จะเป็น Business Analyst

  2. Application Centric การทำความเข้าใจการทำงานของ Application โดยเราต้องทำการแตก Application ออกเป็น components ย่อยๆ(Application Decomposition) ผู้ที่ต้องรับผิดชอบในส่วนนี้จะเป็น Developer และ Operation Team

  3. Attacker Centric การคิดวิธีการโจมตีระบบในรูปแบบต่างๆ ผู้ที่รับผิดชอบในส่วนนี้จะเป็น Security Team

เมื่อนำททั้ง 3 ส่วนมาประกอบกันเราจะรู้ว่า attacker สามารถโจมตี(Attack) เพื่อให้เกิดความเสียหายกับ Asset ที่มีมูลค่าในจุดไหนหรือขั้นตอนไหนใน Application

Threat Modeling

เป็น Diagram ที่นำ Data Flow Diagram(DFD) มาพัฒนาให้กลายเป็นเครื่องมือที่สำหรับการวิเคระห์ความเสี่ยงที่ได้รบความนิยมมากที่สุด ที่เรานำ Data Flow Diagram(DFD) มาใช้เพราะเราอยากรู้ว่า

Four Questions Framework

ตอนเราทำ Threat Modeling เราต้องถามคำถามเหล่านี้ อยู่ตลอดเวลา

1. What are we working on?

ก่อนจะเริ่มต้นหาจุดอ่อน ช่องโหว่หรือภัยคุคามที่อาจเกิดขึ้นกับ Application เราต้องสร้าง diagram เพื่อทำความเข้าใจว่า application ของเราทำงานอย่างไร และประกอบไปด้วย components อะไรบ้าง

2. What can go wrong?

วิเคราะห์หาภัยคุกคาม(Threat)ที่อาจเกิดขึ้นในจุดต่างๆในระบบ

3. What are we going to do about it?

หาวิธีรับมือกับภัยคุกคามต่างๆเหล่านั้น

4. Did we do a good job?

กลับมา review และปรับปรุง diagram ให้สมบูรณ์มากขึ้น

Diagram Elements

การเขียน Threat Model จะใช้สัญลักษณ์ต่างๆ ดังนี้

External Entities
User หรือระบบ ภายนอก
External Entities
inter process communication หรือ network communication
เช่น tcp, udp, http, https
External Entities
Execution ในรูปแบบต่างๆ เช่น Desktop application,
Web application หรือ Web services
External Entities
แหล่งจัดเก็บข้อมูล เช่น file, database, no sql database
หรือ cloud storage
External Entities
network boundary, process boundary หรือ file system

หลังจากที่เรารู้จักกับ elements ต่างๆแล้วเราวสามารถนำมาวาดเป็น threat model สำหรับวิเคราะห์ภัยคุกคามของ web application ได้แบบนี้

ตัวอย่าง Threat model ของ web application
ตัวอย่าง Threat Model

ดูผลลัพธ์การทำ STRIDE ได้ที่เอกสารแบับเต็มตาม link นี้

วิธีการ Identify Threats

การจะได้มาซึ่งภัยคุกคาม(Threats) จะมีหลายวิธีซึ่งวิธี แต่ที่ได้รับความนิยมมากๆมีอยู่ 2 วิธีคือ

STRIDE

วิธีนี้ได้รับความนิยมมากที่สุดเนื่องจากมาพร้อมกับ เครื่องมือยอดนิยมอย่าง Threat Modeling Tool ของ Microsoft โดย STRIDE จะแยกปัญหาออกเป็น 6 กลุ่มคือ

การวิเคระห์ด้วย STRIDE จะเป็นวิธีการคิดแบบ Application Centric

PASTA

เป็น Methodology ที่เริ่มต้นจากการวิเคราะห์ Business Strategy แล้วค่อยๆแยกการทำงานของ Application เป็น components ย่อยๆ แล้วหลังจากนั้นก็วิเคราะห์หาความเป็นไปได้ของการโจมตีแต่ละวิธี ซึ่ง PASTA จะแบ่งการทำงานออกเป็น 7 Stages ดังนี้

  1. Define Business Objective กำหนด business strategy เพื่อให้เข้าใจว่าเราต้องการรักษา(Protect) อะไร
  2. Define Technical scope แตก application ออกเป็นส่วนย่อยๆ(components) identify user และ data source(data ได้มาจากไหน?) รวมทั้ง Infrastructure ต่างๆที่ต้องใช้ในการทำงานด้วย
  3. Decompose Application วาด diagram เพื่ออธิบายการทำงานของ application ด้วย aata flow diagramn(DFD), process flow diagram, sequence diagram และอื่นๆ
  4. Analyze Threats วิเคราะห์หาภัยคุกคามที่อาจเกิดขึ้นในแต่ละจุด
  5. Identify Vulnerabilities นำ threats ที่ได้มา mapping กับ vulnerabilities และ weakness
  6. Enumberate Attacks นำวิธีการ attacks ที่ได้มา สร้าง attack tree เพื่อวิเคราะห์หาความยากง่ายและโอกาศที่จะเกิดของการโจมตีแต่ละรูปแบบ
  7. Perform Impact Analysis นำวิธีการ attacks ที่ได้มาไปวิเคราะห์หา impact ที่จะเกิดขึ้นกับธุรกิจของเรา

OCTAVE

เป็น process ที่มาจาก Software Engineering Institute(SEI) ผู้คิดค้น CMMI นั่นเอง ซึ่งแน่นอนเมื่อมาจาก SEI ทำให้ OCTAVE เป็น methodology ที่ออกแบบมาสำหรับองค์กรขนาดใหญ่ ซึ่งจะแบ่งออกเป็น Version ย่อยๆ ดังนี้

การทำงานของ OCTAVE จะแบ่งออกเป็น 3 Phases ดังต่อไปนี้

  1. Security Requirements เป็น phase ที่สร้าง security requirements ซึ่งเป็น input ที่จำนำเข้าไปประเมินความเสี่ยงใน phase ต่อไป
  2. Identify Ingrastructure Vulnerabilities วิเคราะห์หาช่องโหว่ที่อาจเกิดขึ้นใน infrastructure ที่เรามี
  3. Determine Risk Management Strategy เป็น phase สุดท้ายที่ต้องการสร้าง mitigation(การป้องกัน) ให้เกิดขึ่้นใน application หรือ service ที่ให้บริการ
Phanupong Permpimol
Follow me

Software Engineer ที่เชื่อในเรื่องของ Process เพราะเมื่อ Process ดี Product ก็จะดีตาม ปัจจุบันเป็นอาจารย์และที่ปรึกษาด้านการออกแบบและพัฒนา Software และ Web Security