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 นั้นมีหลายตัวเช่น
- Mis-UseCase Diagram จะเหมือนกับ UseCase Diagram แต่มี Actor เป็น Attacker
- Attack tree สำหรับประเมินความเป็นไปได้ของการ attack แต่ละวิธี
- Threat Modeling สำหรับประเมินความเสี่ยงที่อยู่ในการทำงานของ Application แต่ละจุด
แนวทางการ Secure Design
การจะออกแบบระบบให้มีความปลอดภัยนั้นเรามีวิธีคิดอยู่ 3 แนวทางด้วยกันคือ
-
Asset Centric การนิยามว่าในองค์มีทรัพย์สินที่มีค่าอยู่ตรงไหนบ้าง ซึ่งเราจะต้องดูทั้ง
- Sensitive Data(ข้อมูลที่เป็นความลับ)
- Service หรือ Application(บริการที่มีผลกับ Business มากๆ)
ผู้ที่ต้องรับผิดชอบและให้คำแนะนำในส่วนนี้จะเป็น Business Analyst
-
Application Centric การทำความเข้าใจการทำงานของ Application โดยเราต้องทำการแตก Application ออกเป็น components ย่อยๆ(Application Decomposition) ผู้ที่ต้องรับผิดชอบในส่วนนี้จะเป็น Developer และ Operation Team
-
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 จะใช้สัญลักษณ์ต่างๆ ดังนี้
เช่น tcp, udp, http, https
Web application หรือ Web services
หรือ cloud storage
หลังจากที่เรารู้จักกับ elements ต่างๆแล้วเราวสามารถนำมาวาดเป็น threat model สำหรับวิเคราะห์ภัยคุกคามของ web application ได้แบบนี้
ดูผลลัพธ์การทำ STRIDE ได้ที่เอกสารแบับเต็มตาม link นี้
วิธีการ Identify Threats
การจะได้มาซึ่งภัยคุกคาม(Threats) จะมีหลายวิธีซึ่งวิธี แต่ที่ได้รับความนิยมมากๆมีอยู่ 2 วิธีคือ
STRIDE
วิธีนี้ได้รับความนิยมมากที่สุดเนื่องจากมาพร้อมกับ เครื่องมือยอดนิยมอย่าง Threat Modeling Tool ของ Microsoft โดย STRIDE จะแยกปัญหาออกเป็น 6 กลุ่มคือ
- Spoofing การปลอมแปลงทุกชนิด เช่น การปลอมแปลงตัวตน(Impersonation) หรือ การปลอม IP address
- Tampering การแก้ไข Request, Parameters หรือข้อมูลใน storage เพื่อให้เกิดผลของการทำงานที่แตกต่างออกไป
- Repudiation การปฎิเสธความรับผิดชอบ เช่น การปกปิดร่องรอยด้วยทำ Log covering(ทำให้เกิด log แบบปกติเพื่อปกปิด log ที่แสดงความผิดปกติ)
- Information Disclosure การหลุดรั่วของข้อมูลในจุดต่างๆ ทั้งจาก communication chanel หรือสามารถเข้าถึง storage ได้โดยตรง
- Denial of Service(DoS) การทำให้ Service หรือ Application หยุดทำงาน
- Elevation of Privilege การยกระดับสิทธิขึ้น เช่น จาก user ที่มีสิธิอ่านอย่างเดียว กลายเป็น admin ที่มีสิทธิแก้ไข
การวิเคระห์ด้วย STRIDE จะเป็นวิธีการคิดแบบ Application Centric
PASTA
เป็น Methodology ที่เริ่มต้นจากการวิเคราะห์ Business Strategy แล้วค่อยๆแยกการทำงานของ Application เป็น components ย่อยๆ แล้วหลังจากนั้นก็วิเคราะห์หาความเป็นไปได้ของการโจมตีแต่ละวิธี ซึ่ง PASTA จะแบ่งการทำงานออกเป็น 7 Stages ดังนี้
- Define Business Objective กำหนด business strategy เพื่อให้เข้าใจว่าเราต้องการรักษา(Protect) อะไร
- Define Technical scope แตก application ออกเป็นส่วนย่อยๆ(components) identify user และ data source(data ได้มาจากไหน?) รวมทั้ง Infrastructure ต่างๆที่ต้องใช้ในการทำงานด้วย
- Decompose Application วาด diagram เพื่ออธิบายการทำงานของ application ด้วย aata flow diagramn(DFD), process flow diagram, sequence diagram และอื่นๆ
- Analyze Threats วิเคราะห์หาภัยคุกคามที่อาจเกิดขึ้นในแต่ละจุด
- Identify Vulnerabilities นำ threats ที่ได้มา mapping กับ vulnerabilities และ weakness
- Enumberate Attacks นำวิธีการ attacks ที่ได้มา สร้าง attack tree เพื่อวิเคราะห์หาความยากง่ายและโอกาศที่จะเกิดของการโจมตีแต่ละรูปแบบ
- Perform Impact Analysis นำวิธีการ attacks ที่ได้มาไปวิเคราะห์หา impact ที่จะเกิดขึ้นกับธุรกิจของเรา
OCTAVE
เป็น process ที่มาจาก Software Engineering Institute(SEI) ผู้คิดค้น CMMI นั่นเอง ซึ่งแน่นอนเมื่อมาจาก SEI ทำให้ OCTAVE เป็น methodology ที่ออกแบบมาสำหรับองค์กรขนาดใหญ่ ซึ่งจะแบ่งออกเป็น Version ย่อยๆ ดังนี้
- OCTAVE เป็น OCTAVE version เต็มเหมาะกับองค์ที่มีขนาด 300 คนขึ้นไป
- OCTAVE-S เป็น OCTAVE ขนาดย่อส่วน เหมาะกับองค์กรที่มีบุคลากรไม่เกิน 100 คน
- OCTAVE Allrego เป็น OCTAVE ที่มี documents และ guidelines มาให้ เรียกได้ว่าค่อนข้างสำเร็จรูป เหมาะกับองค์กรที่ไม่ได้มีบุคลากรที่คอบดูแล documents
การทำงานของ OCTAVE จะแบ่งออกเป็น 3 Phases ดังต่อไปนี้
- Security Requirements เป็น phase ที่สร้าง security requirements ซึ่งเป็น input ที่จำนำเข้าไปประเมินความเสี่ยงใน phase ต่อไป
- Identify Ingrastructure Vulnerabilities วิเคราะห์หาช่องโหว่ที่อาจเกิดขึ้นใน infrastructure ที่เรามี
- Determine Risk Management Strategy เป็น phase สุดท้ายที่ต้องการสร้าง mitigation(การป้องกัน) ให้เกิดขึ่้นใน application หรือ service ที่ให้บริการ