OWASP Web Security Testing Guide (WSTG)¶
Trang này trình bày OWASP Web Security Testing Guide (WSTG) phiên bản 4.2, hướng dẫn kiểm thử bảo mật ứng dụng web được dùng rộng rãi khi pentest, và cách áp dụng nó cho giao diện web của thiết bị nhúng. Tổng quan về các loại kiểm thử và so sánh WSTG với các phương pháp khác xem Kiểm thử bảo mật cho thiết bị nhúng. Nội dung đi theo thứ tự: tổng quan về OWASP và WSTG, cấu trúc tài liệu, khung kiểm thử theo vòng đời phát triển, mã định danh và cấu trúc một test case, 12 nhóm kiểm thử, áp dụng cho thiết bị nhúng, quan hệ với các khung tuân thủ, và quy trình một đợt kiểm thử.
Tổng quan¶
OWASP (Open Worldwide Application Security Project) là tổ chức phi lợi nhuận xây dựng tài liệu và công cụ mã nguồn mở về bảo mật phần mềm. WSTG là một dự án của OWASP. Tài liệu này trả lời hai câu hỏi khi kiểm thử bảo mật một ứng dụng web: cần kiểm tra những gì, và kiểm tra từng mục bằng cách nào.
| Thông tin | Giá trị |
|---|---|
| Phiên bản ổn định | 4.2, phát hành ngày 03/12/2020 |
| Phiên bản đang phát triển | 5.0, nội dung trên nhánh "latest" của GitHub, chưa có ngày phát hành |
| Giấy phép | Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0); mã nguồn markdown trên GitHub OWASP/wstg |
| Định dạng | Website, PDF, checklist Excel (WSTG-Checklist_v4.2.xlsx) |
OWASP khuyến nghị dẫn chiếu theo đường dẫn có số phiên bản (ví dụ /v42/), vì đường dẫn "stable" và "latest" sẽ thay đổi khi có bản mới. Lý do quan trọng hơn: mã test case có thể đổi giữa các phiên bản. Ví dụ, bản 4.2 bỏ test buffer overflow ở vị trí WSTG-INPV-13 và dùng mã đó cho format string injection; nhóm API ở bản đang phát triển cũng đã đánh số lại. Báo cáo kiểm thử vì vậy cần ghi rõ phiên bản WSTG đã dùng.
So với 4.1, bản 4.2 bổ sung mục tiêu kiểm thử (test objectives) cho mọi test case, thêm nhóm API với test GraphQL (WSTG-APIT-01), thêm test server-side request forgery (WSTG-INPV-19), và viết lại một số test như xử lý lỗi và TLS yếu.
Cấu trúc tài liệu¶
| Chương | Nội dung |
|---|---|
| 0. Foreword | Lời nói đầu |
| 1. Frontispiece | Thông tin dự án, người đóng góp |
| 2. Introduction | Nguyên tắc kiểm thử, so sánh các kỹ thuật: review thủ công, threat model, review mã nguồn, penetration test |
| 3. The OWASP Testing Framework | Khung kiểm thử theo vòng đời phát triển, và tổng quan các phương pháp penetration test khác |
| 4. Web Application Security Testing | 12 nhóm, 97 test case; phần được dùng nhiều nhất |
| 5. Reporting | Cấu trúc báo cáo kiểm thử |
| 6. Appendix | Công cụ, tài liệu đọc thêm, fuzz vector, lịch sử phiên bản |
Chương 2 nêu một quan điểm xuyên suốt: penetration test kiểu hộp đen (black-box, không biết bên trong hệ thống) cho kết quả trực quan nhưng không phải cách hiệu quả nhất để bảo đảm an toàn. Nếu có mã nguồn, review mã nguồn tìm được những lỗi mà kiểm thử từ bên ngoài bỏ sót, đặc biệt ở các nhánh điều kiện lồng nhau.
Khung kiểm thử theo vòng đời phát triển¶
Chương 3 đặt kiểm thử bảo mật vào toàn bộ vòng đời phát triển phần mềm (Software Development Life Cycle, SDLC), không chỉ ở bước cuối. Khung này là mô hình tham chiếu, tổ chức có thể điều chỉnh cho phù hợp quy trình của mình.
| Giai đoạn | Hoạt động |
|---|---|
| 1. Trước khi phát triển | Định nghĩa SDLC có bảo mật ở từng bước; review chính sách và tiêu chuẩn; xây dựng tiêu chí đo lường (metric) và bảo đảm truy vết được |
| 2. Định nghĩa và thiết kế | Review yêu cầu bảo mật; review thiết kế và kiến trúc; tạo và review mô hình UML; tạo và review threat model |
| 3. Phát triển | Code walkthrough (tác giả trình bày mã cho người review); code review |
| 4. Triển khai | Penetration test ứng dụng; kiểm thử quản lý cấu hình |
| 5. Vận hành và bảo trì | Review quản lý vận hành; kiểm tra định kỳ (health check); xác minh sau mỗi thay đổi |
Metric được đặt ở giai đoạn 1 vì nếu định nghĩa muộn, quy trình có thể phải sửa lại mới thu thập được số liệu cần thiết. 97 test case ở chương 4 chủ yếu phục vụ giai đoạn 4 và 5.
Mã định danh và cấu trúc một test case¶
Mỗi test case có mã dạng WSTG-<NHÓM>-<SỐ>, ví dụ WSTG-ATHN-02 (kiểm tra thông tin đăng nhập mặc định). Mã này cho phép yêu cầu của khách hàng, kế hoạch kiểm thử và báo cáo dẫn chiếu tới cùng một mục.
Mỗi test case trong bản 4.2 có các phần:
| Phần | Nội dung |
|---|---|
| Summary | Mô tả lỗ hổng hoặc điểm yếu cần kiểm tra |
| Test Objectives | Mục tiêu cụ thể của test, bổ sung từ bản 4.2 |
| How to Test | Các bước kiểm thử, có thể chia theo black-box và gray-box (biết một phần bên trong) |
| Remediation | Cách khắc phục, có ở một số test |
| Tools | Công cụ hỗ trợ |
| References | Tài liệu tham khảo |
Các nhóm kiểm thử¶
| Mã | Nhóm | Số test | Ví dụ |
|---|---|---|---|
| INFO | Thu thập thông tin (information gathering) | 10 | INFO-02 nhận diện web server; INFO-06 xác định các điểm vào của ứng dụng |
| CONF | Quản lý cấu hình và triển khai | 11 | CONF-05 liệt kê giao diện quản trị; CONF-06 kiểm tra HTTP method; CONF-07 HSTS |
| IDNT | Quản lý định danh | 5 | IDNT-04 dò tìm tài khoản, tên người dùng dễ đoán |
| ATHN | Xác thực | 10 | ATHN-01 thông tin đăng nhập truyền qua kênh mã hóa; ATHN-02 thông tin đăng nhập mặc định; ATHN-03 cơ chế khóa tài khoản yếu; ATHN-07 chính sách mật khẩu yếu |
| ATHZ | Phân quyền | 4 | ATHZ-01 directory traversal và file include; ATHZ-03 leo thang đặc quyền; ATHZ-04 insecure direct object reference |
| SESS | Quản lý phiên | 9 | SESS-02 thuộc tính cookie; SESS-05 cross site request forgery (CSRF); SESS-07 timeout phiên |
| INPV | Kiểm tra dữ liệu đầu vào | 19 | INPV-01, INPV-02 cross site scripting (XSS); INPV-05 SQL injection; INPV-12 command injection; INPV-19 server-side request forgery (SSRF) |
| ERRH | Xử lý lỗi | 2 | ERRH-01 xử lý lỗi không đúng; ERRH-02 lộ stack trace |
| CRYP | Mật mã yếu | 4 | CRYP-01 TLS yếu; CRYP-03 thông tin nhạy cảm gửi qua kênh không mã hóa; CRYP-04 mã hóa yếu |
| BUSL | Logic nghiệp vụ | 9 | BUSL-06 vượt qua luồng nghiệp vụ; BUSL-08, BUSL-09 upload file không mong muốn và file độc hại |
| CLNT | Phía client | 13 | CLNT-01 DOM-based XSS; CLNT-07 CORS; CLNT-09 clickjacking; CLNT-10 WebSocket |
| APIT | API | 1 | APIT-01 GraphQL |
Bảng trên đếm theo mục lục của bản 4.2. INPV-05 (SQL injection) và INPV-11 (code injection) còn có các trang con theo từng hệ quản trị cơ sở dữ liệu hoặc kiểu include, nhưng không có mã riêng.
Áp dụng cho thiết bị nhúng¶
Phần lớn thiết bị nhúng có giao diện quản trị web hoặc REST API: router, camera, gateway IoT, thiết bị viễn thông. Giao diện này thường chạy trên web server nhúng với tài nguyên hạn chế, và thường chạy với quyền cao trên hệ điều hành, nên một lỗi web có thể dẫn tới chiếm quyền toàn bộ thiết bị.
| Thành phần trên thiết bị | Rủi ro thường gặp | Test case liên quan |
|---|---|---|
| Trang đăng nhập | Mật khẩu mặc định chung cho cả dòng sản phẩm; không giới hạn số lần thử | ATHN-02, ATHN-03, ATHN-07 |
| Trang chẩn đoán mạng (ping, traceroute) | Tham số được ghép vào lệnh shell, dẫn tới command injection | INPV-12 |
| Upload firmware và file cấu hình | Chấp nhận file không được ký; đường dẫn trong file nén ghi đè file hệ thống | BUSL-08, BUSL-09, ATHZ-01 |
| HTTPS | Cipher suite cũ; chứng chỉ tự ký dùng chung cho mọi thiết bị; vẫn mở HTTP không mã hóa | CRYP-01, CRYP-03, ATHN-01, CONF-07 |
| Phiên quản trị | Thay đổi cấu hình qua CSRF; phiên không hết hạn | SESS-02, SESS-05, SESS-07 |
| REST API, WebSocket | Endpoint không kiểm tra quyền; HTTP method không cần thiết vẫn bật | ATHZ-02, ATHZ-04, CONF-06, CLNT-10 |
| Trang lỗi | Lộ phiên bản phần mềm, đường dẫn, stack trace | ERRH-01, ERRH-02, INFO-02 |
WSTG chỉ bao phủ lớp web. Các lớp khác của thiết bị cần phương pháp khác:
| Lớp | Tài liệu của OWASP |
|---|---|
| Firmware: trích xuất, phân tích, tìm thông tin nhạy cảm và thành phần có lỗ hổng | Firmware Security Testing Methodology (FSTM) |
| Toàn bộ thiết bị IoT: phần cứng, firmware, giao tiếp, hệ sinh thái | IoT Security Verification Standard (ISVS) |
| Ứng dụng di động đi kèm thiết bị | Mobile Application Security Testing Guide (MASTG) |
Chương 3 của chính WSTG cũng liệt kê FSTM và hướng dẫn kiểm thử di động là các tài liệu tương ứng cho firmware IoT và ứng dụng di động.
Todo
Viết trang riêng cho kiểm thử firmware và phần cứng (FSTM, ISVS, cổng UART và JTAG), đặt trong nhóm Security Testing.
Quan hệ với các tài liệu và khung tuân thủ khác¶
WSTG là phương pháp kiểm thử, không phải tiêu chuẩn yêu cầu hay chương trình chứng nhận. Ba tài liệu web của OWASP thường bị nhầm với nhau:
| Tài liệu | Trả lời câu hỏi | Dùng khi |
|---|---|---|
| OWASP Top 10 | Rủi ro web nào phổ biến nhất? | Nâng nhận thức, ưu tiên đào tạo |
| ASVS (Application Security Verification Standard) | Ứng dụng phải đạt những yêu cầu bảo mật nào, theo từng mức? | Đặt yêu cầu khi thiết kế, làm tiêu chí nghiệm thu |
| WSTG | Kiểm tra từng điểm yếu bằng cách nào? | Lập kế hoạch và thực hiện kiểm thử |
Các khung tuân thủ trong mục Compliance & Certification không yêu cầu WSTG, nhưng có những yêu cầu mà WSTG là cách kiểm tra thực tế:
| Khung | Yêu cầu liên quan | Test case WSTG tương ứng |
|---|---|---|
| 3GPP TS 33.117 | Hardening web server; kiểm thử lỗ hổng cơ bản (quét cổng, quét lỗ hổng, robustness) | CONF, INPV |
| EN 18031 | Cơ chế xác thực (AUM), giao tiếp an toàn (SCM), kiểm tra đầu vào trong năng lực chung (GEC) | ATHN, CRYP, INPV |
| ETSI EN 303 645 | 5.1 không dùng mật khẩu mặc định chung; 5.5 giao tiếp an toàn; 5.13 kiểm tra dữ liệu đầu vào | ATHN-02, CRYP-01, INPV |
Khi chuẩn bị hồ sơ cho các khung này, có thể dùng kết quả kiểm thử theo WSTG làm bằng chứng, với điều kiện báo cáo ghi rõ test case và phiên bản WSTG đã dùng.
Quy trình một đợt kiểm thử¶
Quy trình chung của một đợt kiểm thử (thỏa thuận phạm vi, chuẩn bị môi trường, báo cáo, kiểm thử lại) được trình bày ở Kiểm thử bảo mật cho thiết bị nhúng. Phần dưới chỉ nêu các bước riêng khi dùng WSTG cho giao diện web:
- Thống nhất phạm vi và quy tắc kiểm thử theo quy trình chung, gồm danh sách URL, tài khoản được cấp cho từng vai trò, và các chức năng không được thử (ví dụ khôi phục cấu hình gốc trên thiết bị đang vận hành).
- Thu thập thông tin theo nhóm INFO: nhận diện web server, framework, các điểm vào và luồng chức năng.
- Chọn test case từ checklist
WSTG-Checklist_v4.2.xlsx, bỏ những mục không áp dụng (ví dụ APIT-01 nếu không có GraphQL) và ghi lý do. - Thực hiện kiểm thử theo từng nhóm, kết hợp công cụ tự động và kiểm tra thủ công. Công cụ quét tự động không phát hiện được lỗi logic nghiệp vụ (BUSL) và nhiều lỗi phân quyền.
- Viết báo cáo theo chương 5.
Chương 5 đề xuất cấu trúc báo cáo gồm ba phần chính:
| Phần | Nội dung |
|---|---|
| Giới thiệu | Phiên bản báo cáo, nhóm kiểm thử, phạm vi, giới hạn, thời gian, điều khoản miễn trừ |
| Tóm tắt cho quản lý (executive summary) | Mục tiêu kiểm thử, phát hiện chính dưới góc độ ảnh hưởng tới doanh nghiệp, khuyến nghị chiến lược; không đi vào chi tiết kỹ thuật |
| Phát hiện (findings) | Bảng tổng hợp phát hiện và mức rủi ro; chi tiết từng phát hiện: mã tham chiếu, khả năng khai thác, ảnh hưởng, mức rủi ro, mô tả, cách tái hiện, cách khắc phục |
Mức rủi ro gợi ý là Informational, Low, Medium, High và Critical, với cách tính được giải thích trong phụ lục của báo cáo. Có thể dùng thêm điểm CVSS khi khách hàng yêu cầu; CVSS được trình bày trong trang CVE.
Các công cụ thường dùng là proxy chặn và sửa request như OWASP ZAP và Burp Suite, cùng các công cụ chuyên biệt được liệt kê trong mục Tools của từng test case và trong phụ lục của WSTG.
Liên quan¶
- Tổng quan về kiểm thử bảo mật và so sánh các phương pháp (NIST SP 800-115, PTES, OSSTMM, FSTM): Kiểm thử bảo mật cho thiết bị nhúng.
- Yêu cầu bảo mật cho thiết bị theo quy định và tiêu chuẩn: Chứng nhận và tuân thủ bảo mật, CE marking và RED, Telecom & RAN.
- Chấm điểm và quản lý lỗ hổng tìm được: CVE, InsightVM (Rapid7).
- Bảo vệ kênh truyền mà nhóm CRYP kiểm tra: TLS, HTTPS.
Tài liệu tham khảo¶
- OWASP Web Security Testing Guide v4.2, OWASP.
- OWASP/wstg, mã nguồn trên GitHub; nội dung trang này được đối chiếu với tag
v4.2(thư mụcdocument/vàchecklist/). - WSTG releases, ghi chú phát hành bản 4.2.
- OWASP Web Security Testing Guide, trang dự án, về tình trạng phát triển bản 5.0.
- OWASP Firmware Security Testing Methodology.
- OWASP IoT Security Verification Standard.
- OWASP Application Security Verification Standard.