Skip to content

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.

Năm giai đoạn trong khung kiểm thử của WSTG, từ trước khi phát triển tới vận hà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ử

12 nhóm kiểm thử của WSTG v4.2 và số test case mỗi nhóm

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ị.

Các thành phần web điển hình của thiết bị nhúng và test case WSTG tương ứng

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:

  1. 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).
  2. 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.
  3. 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.
  4. 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.
  5. 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ài liệu tham khảo