Chuyển đến nội dung chính
  1. Phân tích & Cảnh báo an ninh/

Kiểm thử xâm nhập API hiệu quả tại Thái Lan

·5 phút

Các ứng dụng đã ngừng là “trang web” từ lâu rồi. Chúng là API bây giờ: microservices gọi microservices, đầu này là mobile client, đầu kia là tuyến thanh toán. Cuộc nói chuyện về an ninh chưa theo kịp. Teams vẫn mua “penetration test ứng dụng web” dành 80% công sức cho front end, trong khi các API phía sau, nơi tiền và data thực sự chảy, lại thiếu được kiểm thử.

Vì sao APIs khiến scanner bó tay #

Scanner web tự động xây quanh mô hình trang: leo link, tìm form, tiêm payload. API không trình bày trang. API trình bày route, method và schema, và hành vi thú vị sống ở logic nghiệp vụ giữa chúng.

Thử nghĩ lỗi truy cập cấp đối tượng: người dùng đổi user_id=1024 thành user_id=1025 trong request và đọc hồ sơ của người khác. Không signature nào kêu. Không payload độc hại nào. Scanner thấy một request bình thường rồi đi tiếp. Đó là Broken Object Level Authorisation (BOLA), mục số một trong OWASP API Security Top 10, và gần như mọi công cụ tự động đều mù nó.

Đó là lập luận cốt lõi của kiểm thử API do con người dẫn dắt: những lỗ hổng gây hại nhất là lỗ hổng thiết kế, và phát hiện lỗ hổng thiết kế đòi hỏi analyst hiểu ngữ cảnh nghiệp vụ.

Một bài test API hiệu quả thật sự bao phủ gì #

Asesmen API có ý nghĩa đi xa hơn chạy scanner lên OpenAPI spec:

  • Xác thực và ủy quyền: xử lý token, kiểm tra scope, và truy cập cấp đối tượng qua mọi ranh giới vai trò.
  • Logic nghiệp vụ: người dùng có thể đặt giá âm cho đơn hàng, phát lại payment callback, hay bỏ bước workflow bằng cách gọi thẳng endpoint kế tiếp?
  • Phơi bày dữ liệu: endpoint nào trả thừa field, và endpoint nào nhận field client lẽ ra không được gửi.
  • Rate limiting và lạm dụng: enumeration, credential stuffing, và các lộ trình chiếm tài khoản khai thác throttling yếu.
  • Ranh giới tích hợp: webhook, callback bên thứ ba, message queue, những nơi tin tưởng được giả định và chưa bao giờ được xác minh.

Vì thế những dự án tốt nhất ghép kỹ nghệ công kích thủ công với recon và fuzzing hỗ trợ AI: tự động hóa mở rộng độ phủ, con người đánh giá mức nghiêm trọng và ngữ cảnh.

Liên tục, chứ không hằng năm #

Bài test API mỗi năm một lần là ảnh chụp thời điểm của hệ thống deploy hàng tuần. Khi báo cáo kịp viết xong, endpoint đã đổi khác. Cách tiếp cận hiện đại gắn kiểm tra an ninh API vào pipeline bàn giao:

  1. Shift-left với static analysis và kiểm tra schema trong CI.
  2. Test theo bản phát hành: review tập trung khi mặt bằng API thay đổi.
  3. Soi sâu thường niên: đánh giá trọn vẹn do con người dẫn dắt phục vụ hồ sơ kiểm toán và logic nghiệp vụ mà pipeline không tự đánh giá nổi.

PCI DSS Requirement 6Requirement 11.4 đều đẩy về hướng này với các tổ chức chạm dữ liệu thẻ, hướng dẫn an ninh kênh số của Ngân hàng Trung ương Thái Lan cũng vậy.

flowchart LR A[Schema và SAST trong CI] --> B[Rà soát API theo từng bản phát hành] B --> C[Đánh giá sâu do con người dẫn dắt] C --> D[Khắc phục và kiểm thử lại] D --> A style C stroke:#0EA5E9,stroke-width:2px style D stroke:#10B981,stroke-width:2px

Những gì automated scanner không nhìn thấy #

Đáng nói cụ thể automation bỏ sót gì, vì các khoảng trống không ngẫu nhiên: chúng tụ tập đúng nơi tiền chảy qua.

BOLA trong thực tế. Scanner chỉ thử endpoint nó phát hiện và parameter nó hiểu. Lấy một invoice API: GET /invoices/8842 trả về invoice của chính người gọi, scanner ghi đạt. Nhưng GET /invoices/8843, invoice của khách khác, có thể cũng vui vẻ trả về, và không scanner nào sẽ thử, vì hiểu rằng 8843 thuộc về người khác đòi hỏi biết quyền sở hữu nghĩa là gì trong business của bạn. Mỗi object identifier vượt ranh giới tenant là một BOLA tiềm ẩn, chỉ analyst liệt kê object xuyên account mới tìm ra.

Lỗ hổng logic nghiệp vụ. Scanner thử request thành công hay thất bại; lỗ hổng logic nằm ở những request thành công khi lẽ ra không. Ví dụ thật từ các engagement: mã coupon dùng được hai lần vì bước xác nhận redemption diễn ra sau capture thanh toán; chuyển booking giữa các tài khoản mà không re-authorisation; hủy đơn đã trả tiền sau khi giao vì cancel endpoint không bao giờ kiểm tra trạng thái fulfillment. Tất cả đều trả HTTP 200. Tất cả là thiệt hại tài chính không một dòng error message.

Giả định trust giữa các service. Trong microservices estate, một service thường tin header, token, hay internal endpoint do “caller” đưa, vì trong sơ đồ thiết kế caller luôn là service nội bộ. Rồi một ngày, một service bị compromise, hay một internal endpoint trở nên reachable từ segment mạng ít tin cậy hơn, và các giả định trust thừa hưởng đó thành thang của attacker: authenticate trước ở edge service yếu, rồi xưng danh của nó xuống hạ lưu nơi các API giá trị cao nằm. Phát hiện kiểu này cần đọc kiến trúc theo ý nhà thiết kế, rồi thử nghiệm theo đường attacker sẽ đi.

Không thứ nào trong ba mục này xuất hiện trong output scanner. Tất cả xuất hiện trong báo cáo của analyst dành thời gian hiểu API của bạn thực chất được tạo để làm gì.

Muốn biết API của bạn trông thế nào trong mắt attacker? Liên hệ để được soi nhanh, thẳng thắn. Nhắn tôi qua LINE (@PureSecurity) hoặc email (hello@puresecurity.com).

API & Application Security Review của chúng tôi ghép phân tích mã nguồn thủ công với kiểm thử xâm nhập theo bối cảnh, giao hướng khắc phục developer dùng ngay được. Nếu bạn cần xác minh rộng hơn về biên giới và phân đoạn, xem kiểm thử xâm nhập do con người dẫn dắt.