Họ đã tìm thấy một phiên bản mới của cuộc tấn công Buôn lậu Yêu cầu HTTP

Các hệ thống web nơi giao diện người dùng chấp nhận kết nối qua HTTP/2 và chuyển chúng đến phần phụ trợ thông qua HTTP/1.1hđã tiếp xúc với một phiên bản mới của cuộc tấn công "Truyền tải yêu cầu HTTP", cho phép gửi các yêu cầu khách hàng được tạo đặc biệt để phân chia thành nội dung các yêu cầu của người dùng khác được xử lý trong cùng một luồng giữa giao diện người dùng và phụ trợ.

Cuộc tấn công có thể được sử dụng để tiêm mã JavaScript độc hại trong phiên với trang web hợp pháp, bỏ qua hệ thống hạn chế truy cập và chặn các tham số xác thực.

Tác giả của nghiên cứu đã chứng minh khả năng tấn công các hệ thống Netflix, Verizon, Bitbucket, Netlify CDN và Atlassianvà nhận được 56.000 đô la trong các chương trình tiền thưởng để xác định các lỗ hổng. Vấn đề này cũng đã được xác nhận trong các sản phẩm của F5 Networks.

Vấn đề ảnh hưởng một phần đến mod_proxy trên máy chủ Apache http (CVE-2021-33193), các bản sửa lỗi dự kiến ​​sẽ có trong phiên bản 2.4.49 (các nhà phát triển đã được thông báo về sự cố này vào đầu tháng 3 và có 1.21.1 tháng để khắc phục sự cố). Trong nginx, khả năng chỉ định đồng thời tiêu đề "Độ dài nội dung" và "Mã hóa truyền" đã bị chặn trong phiên bản trước (XNUMX).

Nguyên lý hoạt động của phương pháp mới để phù hợp với yêu cầu vào lưu lượng truy cập Nó tương tự như lỗ hổng được phát hiện bởi cùng một nhà nghiên cứu hai năm trước, nhưng bị giới hạn ở các giao diện chấp nhận yêu cầu qua HTTP/1.1.

Cuộc tấn công “Lộn xộn yêu cầu HTTP” cổ điển dựa trên thực tế là giao diện người dùng và phụ trợ diễn giải việc sử dụng các tiêu đề HTTP “Độ dài nội dung” khác nhau (xác định tổng kích thước của dữ liệu trong yêu cầu) và “Mã hóa chuyển giao: chunked” ( cho phép bạn truyền dữ liệu theo từng khối)…

Ví dụ: nếu giao diện chỉ hỗ trợ "Độ dài nội dung" nhưng bỏ qua "Mã hóa chuyển: bị phân mảnh", kẻ tấn công có thể gửi yêu cầu chứa tiêu đề "Độ dài nội dung" và "Mã hóa chuyển: bị phân mảnh", nhưng kích thước vi “Độ dài nội dung” không khớp với kích thước của chuỗi bị phân mảnh. Trong trường hợp này, giao diện người dùng sẽ xử lý và chuyển hướng yêu cầu theo “Độ dài nội dung” và phần phụ trợ sẽ đợi khối hoàn thành dựa trên “Mã hóa chuyển: Chunked”.

Không giống như giao thức văn bản HTTP/1.1, được phân tích ở cấp độ dòng, HTTP/2 là giao thức nhị phân và thao tác các khối dữ liệu có kích thước xác định trước. Tuy nhiên, HTTP/2 sử dụng tiêu đề giả tương ứng với các tiêu đề HTTP thông thường. Khi tương tác với backend sử dụng giao thức HTTP/1.1, giao diện người dùng dịch các tiêu đề giả này trong các tiêu đề HTTP/1.1 HTTP tương tự. Vấn đề là phần phụ trợ đưa ra quyết định về việc phân tích luồng dựa trên các tiêu đề HTTP do giao diện người dùng đặt, mà không biết các thông số của yêu cầu ban đầu.

Ngay cả ở dạng tiêu đề giả, các giá trị "độ dài nội dung" và "mã hóa chuyển giao" có thể được truyền đi, mặc dù chúng không được sử dụng trong HTTP/2, vì kích thước của tất cả dữ liệu được xác định trong một trường riêng biệt. Tuy nhiên, khi chuyển đổi yêu cầu HTTP/2 thành HTTP/1.1, các tiêu đề này sẽ được chuyển và có thể gây nhầm lẫn cho chương trình phụ trợ.

Có hai phương án tấn công chính: H2.TE và H2.CL, trong đó phần phụ trợ bị đánh lừa bởi mã hóa truyền không chính xác hoặc giá trị độ dài nội dung không tương ứng với kích thước thực tế của nội dung yêu cầu mà giao diện người dùng nhận được qua Giao thức HTTP/2.

Ví dụ về cuộc tấn công H2.CL, kích thước không chính xác được chỉ định trong tiêu đề giả độ dài nội dung khi gửi yêu cầu HTTP/2 tới Netflix. Yêu cầu này dẫn đến việc bổ sung tiêu đề Độ dài nội dung HTTP tương tự khi truy cập phần phụ trợ qua HTTP/1.1, nhưng vì kích thước trong Thời lượng nội dung nhỏ hơn giá trị thực tế thì một phần dữ liệu trong hàng đợi sẽ được xử lý làm phần đầu của yêu cầu tiếp theo.

Các công cụ tấn công đã được thêm vào bộ công cụ của Burp và có sẵn dưới dạng tiện ích mở rộng Turbo Intruder. Proxy web, bộ cân bằng tải, bộ tăng tốc web, hệ thống phân phối nội dung và các thiết lập khác trong đó các yêu cầu được chuyển hướng theo sơ đồ front-end-backend đều dễ gặp sự cố.

Fuente: https://portswigger.net


Hãy là người đầu tiên nhận xét

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.