OWASP Coraza WAF âm thầm loại bỏ tham số, cho phép vượt qua rule và gây cạn kiệt bộ nhớ

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2026-41510 là gì?

Lỗ hổng CVE-2026-41510 là lỗ hổng thuộc các loại Protection Mechanism Failure và Allocation of Resources Without Limits or Throttling, ảnh hưởng tới coraza (phiên bản bị ảnh hưởng: >= 3.0.0, < 3.8.1). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 7.2. Hiện chưa đủ dữ liệu để xác định lỗ hổng này đã bị khai thác hay chưa.

Giới thiệu chung

Dữ liệu gốc

OWASP Coraza WAF là một thư viện tường lửa ứng dụng web tương thích với modsecurity, viết bằng Go. Từ 3.0.0 đến trước 3.8.1, Coraza âm thầm loại bỏ các argument sau SecArgumentsLimit trong internal/corazawaf/transaction.go, trong khi internal/bodyprocessors/urlencoded.go ghi ARGS_POST mà không thực thi giới hạn này. Lỗ hổng bị kích hoạt khi kẻ tấn công chưa xác thực gửi nhiều argument hơn SecArgumentsLimit hoặc cung cấp body mở rộng vượt quá các ngân sách argument và flattening đã cấu hình. Kẻ tấn công chưa xác thực có thể flood request bằng các argument khiến các giá trị dư thừa bị bỏ qua khỏi ARGS, ARGS_GET, ARGS_NAMES, ARGS_GET_NAMES, ARGS_POST hoặc ARGS_PATH trước khi các security rule kiểm tra; việc xử lý urlencoded và JSON bị ảnh hưởng cũng có thể tiêu thụ quá nhiều bộ nhớ. Việc bỏ sót này có thể vượt qua các rule WAF bảo vệ ứng dụng phía sau, còn quá trình xử lý argument không giới hạn hoặc bị khuếch đại có thể gây tiêu thụ bộ nhớ và suy giảm dịch vụ. Vấn đề này được khắc phục trong phiên bản 3.8.1.

Sản phẩm và phạm vi ảnh hưởng

• Package github.com/corazawaf/coraza/v3: bị ảnh hưởng từ >= 3.0.0, < 3.8.1. • Phạm vi bao gồm các deployment dùng Coraza để xử lý query arguments, urlencoded request body hoặc JSON body có thể mở rộng thành nhiều argument. • 3.8.1 là phiên bản đã được xác nhận khắc phục. Advisory nêu rõ rằng 3.8.0 vẫn nằm trong phạm vi bị ảnh hưởng do bản sửa trước đó chưa xử lý đầy đủ đường ghi array-length của JSON và ngân sách flattening. • Không có bằng chứng trong record cho thấy các nhánh hoặc wrapper khác ngoài phạm vi trên được tự động an toàn.

Chi tiết kỹ thuật

OWASP Coraza WAF lưu các tham số request trong những collection như ARGS, ARGS_GET, ARGS_POST và ARGS_PATH. Trong internal/corazawaf/transaction.go, các đường xử lý thêm tham số có thể âm thầm trả về khi đạt SecArgumentsLimit mà không đặt cờ lỗi hoặc tín hiệu để security rule nhận biết rằng dữ liệu đã bị loại bỏ. Với tham số GET, thứ tự duyệt dữ liệu có thể khiến tập giá trị còn lại không xác định, vì vậy giá trị bị bỏ qua không nhất thiết là phần cuối của request. Trong internal/bodyprocessors/urlencoded.go, dữ liệu có thể được ghi trực tiếp vào ARGS_POST mà không thực thi giới hạn; việc flatten JSON cũng có thể tạo ra nhiều entry và tiêu thụ bộ nhớ vượt quá ngân sách đã cấu hình. Kẻ tấn công chỉ cần tiếp cận qua mạng một endpoint được Coraza bảo vệ và kiểm soát query hoặc request body; không cần xác thực. Việc bypass có ảnh hưởng thực tế hay không còn phụ thuộc vào việc downstream application và security rule có dựa vào các collection này, còn cấu hình tích hợp cụ thể của từng deployment không được record xác định.

Khả năng khai thác

Lỗ hổng có thể bị khai thác từ xa qua mạng bằng cách gửi request chứa nhiều argument hơn giới hạn hoặc body làm mở rộng số argument và dữ liệu flatten. Không cần authentication và không cần user interaction; precondition chính là endpoint phải nhận input do attacker kiểm soát và được xử lý bởi Coraza. Độ phức tạp thấp vì việc thêm các argument dư thừa hoặc body lớn có thể kích hoạt các đường xử lý lỗi. Việc loại bỏ tham số trong đường GET có thể không xác định giá trị nào bị bỏ qua, trong khi các body processor có các đường riêng dẫn đến xử lý vượt giới hạn. Advisory của vendor có tài liệu kiểm thử và proof of concept, nhưng record được cung cấp không xác nhận exploitation thực tế, chiến dịch cụ thể hoặc một public exploit riêng biệt.

Tác động kỹ thuật

Tham số do attacker cung cấp có thể bị loại khỏi collection trước khi security rule kiểm tra, khiến rule bảo vệ downstream application không nhìn thấy toàn bộ input. Đây là suy giảm tính toàn vẹn của quá trình inspection, không phải cơ chế trực tiếp để đọc dữ liệu bí mật. Nếu ứng dụng phía sau vẫn xử lý request và có logic nhạy cảm phụ thuộc vào tham số bị bỏ qua, việc bypass có thể dẫn tới thay đổi hành vi ứng dụng hoặc vượt qua một lớp bảo vệ. Các đường xử lý urlencoded và JSON cũng có thể tiêu thụ bộ nhớ quá mức, làm giảm tính sẵn sàng của dịch vụ; record không xác định rằng mọi deployment sẽ bị process crash.

Tác động đến tổ chức

• Các security control dựa trên ARGS có thể đánh giá một request không đầy đủ, làm giảm khả năng phát hiện hoặc chặn payload trước khi request tới downstream application. • Ứng dụng phía sau WAF có thể nhận các tham số mà rule tương ứng không quan sát được; mức độ ảnh hưởng phụ thuộc vào logic của ứng dụng và các rule đang được triển khai. • Xử lý argument không giới hạn hoặc bị khuếch đại có thể làm tăng heap usage, giảm throughput và gây suy giảm dịch vụ khi nhận nhiều request. • Record mô tả bypass kiểm tra và tiêu thụ tài nguyên, không mô tả việc trực tiếp làm lộ dữ liệu.

Cách khắc phục

  1. Nâng cấp github.com/corazawaf/coraza/v3 lên 3.8.1. Đây là phiên bản được xác nhận đã khắc phục; không coi 3.8.0 là phiên bản an toàn vì phiên bản này vẫn thuộc phạm vi affected.
  2. Nếu chưa thể nâng cấp ngay, áp dụng và kiểm thử hướng dẫn compensating rule của vendor để từ chối request khi quá trình parse argument bị truncate. Đây chỉ là biện pháp tạm thời, vì advisory xác định riêng các đường urlencoded và JSON cần bản sửa trong code.
  3. Triển khai lại mọi ứng dụng, binary và integration có chứa Coraza trực tiếp hoặc gián tiếp. Xác minh phiên bản dependency trong build artifact và runtime inventory, không suy luận rằng một wrapper hoặc reverse proxy đã được sửa nếu chưa kiểm tra library Coraza bên trong.
  4. Sau khi nâng cấp, kiểm thử các rule nhắm tới ARGS, ARGS_GET, ARGS_NAMES, ARGS_GET_NAMES, ARGS_POST và ARGS_PATH với request vượt giới hạn trong môi trường kiểm soát.
  5. Rà soát memory limit, alerting và capacity của WAF để phát hiện sớm việc xử lý body lớn hoặc JSON flattening bất thường trong thời gian chuyển đổi.

Cách phát hiện

  1. Kiểm kê các binary, module và dependency sử dụng github.com/corazawaf/coraza/v3, bao gồm cả các wrapper hoặc integration đóng gói Coraza gián tiếp, rồi đối chiếu phiên bản đã resolve với phạm vi affected.
  2. Xác định những deployment cho phép attacker kiểm soát query string, application/x-www-form-urlencoded hoặc JSON request body, đặc biệt các endpoint có rule nhắm tới ARGS, ARGS_GET, ARGS_NAMES, ARGS_GET_NAMES, ARGS_POST hoặc ARGS_PATH.
  3. Rà soát cấu hình SecArgumentsLimit cùng các giới hạn request body và JSON flattening để biết khi nào dữ liệu có thể bị cắt hoặc mở rộng ngoài dự kiến.
  4. Trong môi trường kiểm thử được ủy quyền, gửi request vượt giới hạn đã cấu hình và xác minh rằng việc truncation được báo hiệu, bị từ chối hoặc được rule xử lý rõ ràng, thay vì âm thầm tiếp tục tới downstream application.
  5. Kiểm tra WAF audit log, lỗi xử lý request body, cảnh báo memory và telemetry về tăng heap hoặc restart trong các thời điểm có request chứa nhiều argument. Đây là biện pháp giám sát phòng ngừa, không phải indicator đã được xác nhận.
  6. Không coi việc không có log hoặc không thấy lỗi là bằng chứng deployment an toàn, vì bản chất của lỗi là dữ liệu có thể bị bỏ qua mà không tạo tín hiệu rõ ràng.
Nguồn (11)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.