SecLab
Secure Design & Threat ModelingwalkthroughĐộ khó 3/529 phút

STRIDE dùng thật, trong bốn mươi phút

Mục tiêu: Sau bài này bạn chạy được một buổi threat modeling bốn mươi phút cho một tính năng và ra được danh sách việc cụ thể.

V15A06:2025SSDF PO.1Microsoft SDL
Bước 1 / 5 · read6 phút

Vì sao threat modeling thất bại, và cách làm nó không thất bại

Threat modeling có tiếng là một hoạt động tốn thời gian mà không ra gì, và tiếng đó xứng đáng với cách nó thường được làm. Ba cách nó thất bại:

Cách thất bạiBiểu hiện
Phạm vi quá lớn"Threat model cho cả hệ thống" — bốn giờ, một tài liệu 30 trang, không ai đọc
Ra một tài liệu thay vì ra việcDanh sách mối đe doạ, không có ticket nào, không có ai chịu trách nhiệm
Làm quá muộnSau khi code đã viết, nên mọi phát hiện là một lần refactor thay vì một quyết định

Cách làm nó không thất bại là đảo cả ba: một tính năng, bốn mươi phút, đầu ra là ticket.

STRIDE là một danh sách gợi ý sáu loại mối đe doạ. Giá trị của nó không phải sự đầy đủ mà là nó buộc bạn nghĩ theo sáu hướng thay vì một — và hướng bạn hay bỏ là hướng chưa từng gây sự cố cho bạn.

ChữMối đe doạCâu hỏi cụ thểBiện pháp
SpoofingGiả danh"Ai có thể tự nhận là người khác ở đây?"Xác thực
TamperingSửa dữ liệu"Cái gì có thể bị sửa trên đường?"Toàn vẹn, ký, tham số hoá
RepudiationPhủ nhận"Nếu họ nói không làm, tôi chứng minh được không?"Audit log
Information disclosureLộ thông tin"Cái gì lộ ra mà không nên?"Phân quyền, mã hoá, thông báo lỗi
Denial of serviceTừ chối dịch vụ"Một request làm gì tốn nhất?"Giới hạn, rate limit, timeout
Elevation of privilegeLeo thang quyền"Ai làm được nhiều hơn họ nên làm?"Phân quyền

Hai chữ hay bị bỏ nhất là RD, và mỗi cái bị bỏ vì một lý do khác nhau:

R (Repudiation) bị bỏ vì nó không phải một cuộc tấn công — nó là một tranh chấp. Câu hỏi "nếu khách hàng nói họ không xoá dữ liệu đó, tôi chứng minh được không?" không nghe như một câu hỏi bảo mật, nhưng nó là câu hỏi mà một audit log tồn tại để trả lời. Đây là chữ dẫn tới bảng security_event ở bài detect-and-alert.

D (DoS) bị bỏ vì nó cảm giác là vấn đề của hạ tầng. Nhưng câu hỏi ở tầng ứng dụng rất cụ thể và rất hữu ích: "một request làm gì tốn nhất?" Một endpoint export không phân trang, một truy vấn không có LIMIT, một regex bị catastrophic backtracking — cả ba là DoS ở tầng ứng dụng mà không load balancer nào chặn được.

Xem lộ trình

Bình luận

Tham gia thảo luận
Đăng ký để bình luận

Bình luận cần tài khoản đã hoàn thành ít nhất một bài học. Điều kiện đó là thứ giữ cho luồng thảo luận này còn đáng đọc: mỗi ý kiến gắn với một người có thể bị hỏi lại, và reputation tích luỹ theo thời gian.

Đăng kýĐăng nhập

Bạn vẫn đọc được toàn bộ bình luận dưới đây mà không cần tài khoản. Đăng nhập xong bạn sẽ quay lại đúng chỗ này, không phải đầu trang.

Đang tải bình luận…