Giới thiệu về kiểm thử bảo mật API
Trong bối cảnh công nghệ phát triển, việc phát hiện các lỗ hổng bảo mật đã trở nên chủ động và hiệu quả hơn nhờ vào các công cụ quét tự động như Nuclei, Burp Suite, Wiz và Nessus. Các lỗi bảo mật phổ biến như SQL Injection (SQLi) và Cross-Site Scripting (XSS) có thể được phát hiện dễ dàng. Tuy nhiên, một thách thức lớn nằm ở các lỗi liên quan đến logic (logic flaw), mà không dễ dàng nhận biết. Những rào cản này bao gồm:
- Sự không đồng nhất trong giao tiếp giữa client và server, phụ thuộc vào mô hình và thiết kế ứng dụng.
- Các chức năng quy định flow chặt chẽ với nhiều bước liên kết.
- Quá trình viết quy tắc cần riêng biệt cho mỗi nhóm API, kéo dài thời gian phát triển.
- Tỷ lệ false positive cao cho các loại lỗi này.
Giải Pháp Kiểm Thử
Trong bài viết trước, mình đã đề cập đến việc quản lý API thông qua tài liệu hóa kết hợp với Swagger 2 (hiện nay là OpenAPI 3). Swagger hay OpenAPI Specification là một định dạng mô tả REST API, cho phép bạn cung cấp:
- Danh sách các endpoint (/users) và cách thức hoạt động của chúng (GET/users, POST/users).
- Tham số đầu vào và đầu ra cho từng hoạt động.
- Các phương thức xác thực, thông tin liên hệ và điều khoản sử dụng.
Đối với các kỹ sư bảo mật, tài liệu hóa này là công cụ quý giá trong việc kiểm thử và phát hiện lỗi logic. Dựa trên ý tưởng này, mình đã phát triển công cụ SwaggerStrike.
Giới Thiệu SwaggerStrike
SwaggerStrike là một công cụ kiểm thử mạnh mẽ, giúp phát hiện nhanh chóng các lỗ hổng liên quan đến logic. Công cụ này phù hợp cho:
- Kỹ sư bảo mật và Bug bounty hunters tìm kiếm lỗ hổng liên quan đến logic (IDOR, chức năng phân quyền).
- Nhà phát triển phần mềm kiểm tra và phát hiện các lỗ hổng trước khi đưa lên môi trường sản xuất.
Nguyên Tắc Hoạt Động của Công Cụ
SwaggerStrike hoạt động thông qua các bước sau:
- Nhận địa chỉ Swagger 2 hoặc OpenAPI 3 để trích xuất nội dung tài liệu.
- Phân tích và parse tài liệu đó.
- Tạo các tham số của request và gửi đến server với mỗi endpoint.
- Phân tích kết quả trả về để xác định sự tồn tại của lỗ hổng bảo mật.
Các Tính Năng Nổi Bật
Công cụ cung cấp một số tính năng hữu ích:
- Liệt kê tất cả các endpoint có trong tài liệu.
- Phát hiện những lỗ hổng không cần xác thực.
- Kiểm tra các lỗ hổng IDOR.
- Phát hiện các lỗi phân quyền.
Hướng Dẫn Sử Dụng
Bạn có thể tham khảo hướng dẫn chi tiết sử dụng công cụ tại đường dẫn này. Dưới đây là một số ví dụ về lệnh sử dụng:
Liệt kê tất cả endpoint
bash
swaggerStrike listall -u "https://swagger.com/swagger" -T 'https://api.swagger.com/api/v1'
Tìm kiếm các endpoint bị lỗi không cần xác thực
bash
swaggerStrike unauth -u "https://swagger.com/swagger" -T 'https://api.swagger.com/api/v1'
Tìm các endpoint bị lỗi IDOR
bash
swaggerStrike idor -u "https://swagger.com/swagger" -T 'https://api.swagger.com/api/v1'
Tìm các endpoint bị lỗi phân quyền
bash
swaggerStrike privilege -u "https://swagger.com/swagger" -T 'https://api.swagger.com/api/v1'
Kế Hoạch Phát Triển
- Hỗ trợ thêm nhiều định dạng nội dung (JSON, URL-encoded, plaintext) và một số định dạng khác như XML trong tương lai.
- Cung cấp xuất output dưới dạng plaintext và JSON.
- Tích hợp vào chuỗi CI-CD, tự động quét lỗi sau mỗi bản build với báo cáo được xác lập.
Công Cụ Thay Thế
Bạn có thể tham khảo một số công cụ khác như:
Link tham khảo công cụ: SwaggerStrike. Nếu bạn gặp lỗi khi sử dụng, hãy tạo issue trên GitHub để nhận được hỗ trợ.
source: viblo