Threat Modeling cho Kỹ sư: Hướng dẫn Thực tiễn
Một hướng dẫn thực tiễn, không vòng vo về threat modeling dành cho kỹ sư phần mềm, bao gồm các câu hỏi thiết yếu và những cạm bẫy thường gặp.

Threat modeling là một trong những thuật ngữ thường xuyên được nhắc đến trong các cuộc thảo luận về bảo mật nhưng hiếm khi được hiểu đúng ngoài mức độ buzzword. Một bài blog gần đây của Soatok đã cắt qua sự ồn ào với phần giới thiệu thẳng thắn, thân thiện với kỹ sư về thực hành này. Mặc dù bài gốc nhắm đến đối tượng kỹ thuật nói chung, các bài học cốt lõi có thể áp dụng trực tiếp cho bất kỳ ai xây dựng hệ thống phần mềm — đặc biệt là trong hạ tầng, microservices và ứng dụng phân tán.
Một Mô hình Mối đe dọa Thực sự Cần Trả lời Điều gì
Ở mức đơn giản nhất, một mô hình mối đe dọa nên trả lời bảy câu hỏi. Bốn câu đầu là cơ bản: chúng ta đang bảo vệ cái gì, ai hoặc cái gì muốn gây hại cho nó, chúng có thể tấn công như thế nào, và chúng ta sẽ làm gì để ngăn chặn. Nhưng giá trị thực sự đến từ ba câu tiếp theo: các tài sản được kết nối như thế nào (hãy nghĩ theo đồ thị, không phải danh sách), chúng ta đang đưa ra những giả định nào, và những mối đe dọa nào chúng ta cố tình không giải quyết.
Quá nhiều đội bỏ qua bước giả định. Nếu mô hình của bạn giả định chỉ có một khóa hợp lệ cho mỗi tin nhắn (như AES-GCM hoặc ChaCha20-Poly1305), nhưng hệ thống của bạn lại giới thiệu nhiều khóa hợp lệ — chẳng hạn như thông qua báo cáo lạm dụng — bạn vừa vô hiệu hóa các đảm bảo bảo mật của chính mình. Cuộc tấn công Invisible Salamanders là một ví dụ hoàn hảo về sự không khớp này.
Cách Xây dựng Mô hình Mối đe dọa
Bắt đầu bằng cách vẽ sơ đồ các thành phần của hệ thống trên giấy hoặc bảng trắng. Vẽ mọi mối quan hệ: dịch vụ nào nói chuyện với nhau, cái gì phụ thuộc vào cái gì. Sau đó vẽ một hộp bao quanh toàn bộ và lặp lại việc phóng to từng thành phần. Với mỗi lần lặp, ghi chú đầu vào và đầu ra, và trả lời bảy câu hỏi tốt nhất có thể. Lặp lại cho đến khi bạn đã khoan sâu đến mức trừu tượng cho phép.
Cách tiếp cận từ trên xuống này làm lộ ra các mối quan hệ không phù hợp — như một cơ sở dữ liệu không nên có RSS feed, hoặc một bộ cân bằng tải không cần biết về trao đổi khóa X25519.
Một Mô hình Mối đe dọa Tốt Trông Như Thế Nào
Một mô hình mối đe dọa được cấu trúc tốt sẽ ghi lại các giả định ngay từ đầu, sau đó liệt kê tài sản, tác nhân và rủi ro. Các rủi ro nên được phân loại: được ngăn chặn bởi thiết kế, được giảm nhẹ (thú vị cho các nhà nghiên cứu), có thể giải quyết (yêu cầu sự chăm sóc của người vận hành), hoặc mở (rủi ro bạn chấp nhận). Trung thực về các rủi ro mở là rất quan trọng — bạn không thể giải quyết mọi cuộc tấn công có thể xảy ra.
Mô hình mối đe dọa của giao thức Matrix là một ví dụ cảnh báo. Nó thất bại trong việc phân tách rõ ràng các giả định khỏi các biện pháp giảm nhẹ, khiến việc suy luận về ranh giới bảo mật thực sự nằm ở đâu trở nên khó khăn.
Những Điểm Chính cho Kỹ sư
- Mô hình mối đe dọa là tài liệu sống, không phải hiện vật một lần. Cập nhật chúng khi hệ thống của bạn phát triển.
- Luôn nêu rõ các giả định của bạn một cách tường minh. Giả định sai phá vỡ toàn bộ mô hình.
- Vẽ sơ đồ mối quan hệ dưới dạng đồ thị, không phải danh sách — kẻ tấn công suy nghĩ theo đồ thị.
- Ghi lại những gì bạn không bảo vệ. Trung thực về điểm mù tốt hơn là sự tự tin sai lầm.
Thảo luận
0 bình luận
Hãy là người đầu tiên thảo luận.