Devsecops là gì? Bài 8: Mô Hình Hóa Mối Đe Dọa (Threat Modeling) | DevSecOps Story

Chuyện về devsecops

Phần 2: Các Khái Niệm Bảo Mật Cơ Bản

Bài 8: Mô Hình Hóa Mối Đe Dọa (Threat Modeling)

Nếu PoLP là "phòng thủ", thì Threat Modeling là "tấn công". Đây là nghệ thuật tư duy như một kẻ tấn công để tìm ra lỗ hổng trước cả khi chúng tồn tại.

Ôn lại bài cũ: Nguyên Tắc Đặc Quyền Tối Thiểu (PoLP)

Ở bài 7, chúng ta đã học cách "phòng thủ" bằng cách chỉ cấp quyền tối thiểu cần thiết (PoLP). Bây giờ, chúng ta sẽ chuyển sang tư duy "chủ động tấn công": tự mình tìm ra các kịch bản tấn công và vá chúng trước khi hacker làm điều đó.

Threat Modeling là gì?

Threat Modeling là một quy trình có cấu trúc để xác định các mối đe dọa bảo mật tiềm ẩn, đánh giá rủi ro của chúng, và lên kế hoạch giảm thiểu.

Nói đơn giản, đó là việc bạn ngồi xuống trước khi viết code và tự hỏi: "Nếu tôi là hacker, tôi sẽ tấn công ứng dụng này như thế nào?".

Quy Trình 4 Bước Của Threat Modeling

1

Deconstruct

(Phân tích ứng dụng)

Chúng ta đang xây dựng cái gì? Vẽ luồng dữ liệu (Data Flow Diagram - DFD).

2

Identify Threats

(Xác định mối đe dọa)

Điều gì có thể đi sai? Sử dụng các framework như STRIDE.

3

Rate Risks

(Đánh giá rủi ro)

Mối đe dọa này nghiêm trọng đến mức nào? (Cao, Trung bình, Thấp).

4

Mitigate

(Giảm thiểu rủi ro)

Chúng ta sẽ sửa nó như thế nào? (Vá lỗi, chấp nhận rủi ro, chuyển giao rủi ro...).

Phương Pháp Phổ Biến: STRIDE

STRIDE là một framework do Microsoft tạo ra, giúp bạn "brainstorm" các mối đe dọa bằng cách phân loại chúng thành 6 nhóm:

Spoofing

(Giả mạo danh tính)

Hacker giả mạo là một người dùng hoặc một hệ thống khác (ví dụ: user A giả mạo là admin).

Ví dụ: Đánh cắp session cookie để đăng nhập với tư cách người dùng khác.

Tampering

(Can thiệp dữ liệu)

Hacker sửa đổi dữ liệu trái phép khi nó đang được truyền đi hoặc đang được lưu trữ.

Ví dụ: Can thiệp vào request API để thay đổi giá của giỏ hàng từ 1.000.000đ thành 1đ.

Repudiation

(Chối bỏ hành vi)

Hacker (hoặc người dùng) thực hiện một hành động nhưng sau đó chối bỏ việc đó và hệ thống không có bằng chứng để chứng minh.

Ví dụ: Người dùng chuyển tiền thành công nhưng sau đó nói "tôi không hề chuyển", và hệ thống không có log đầy đủ.

Info. Disclosure

(Lộ lọt thông tin)

Hệ thống làm lộ thông tin nhạy cảm (dữ liệu cá nhân, mật khẩu, khóa bí mật) cho những người không có quyền xem.

Ví dụ: Một trang báo lỗi 500 vô tình hiển thị cả chuỗi kết nối (connection string) của database.

Denial of Service

(Từ chối dịch vụ)

Hacker làm cạn kiệt tài nguyên hệ thống (CPU, RAM, băng thông), khiến người dùng hợp lệ không thể truy cập được dịch vụ.

Ví dụ: Tấn công DDoS, hoặc gọi một API tốn tài nguyên lặp đi lặp lại hàng nghìn lần (rate limiting yếu).

Elevation of Privilege

(Leo thang đặc quyền)

Một người dùng có quyền thấp (user thường) tìm cách giành được quyền cao hơn (admin) mà không được phép.

Ví dụ: User thường truy cập vào trang `/admin` do hệ thống quên kiểm tra quyền (Authorization).

Threat Modeling là một văn hóa, không phải một checklist

Threat Modeling không phải là thứ bạn làm một lần rồi quên. Nó là một hoạt động liên tục trong suốt vòng đời phát triển. Bằng cách đưa nó vào sớm (Shift Left), bạn sẽ tiết kiệm rất nhiều thời gian và chi phí so với việc vá lỗi khi sản phẩm đã ra mắt.

Bài Tiếp Theo: Phân Tích Mã Tĩnh (SAST)

Đăng nhận xét