CRLF Injection: Nguy cơ HTTP Desynchronization nghiêm trọng

CRLF Injection: Nguy cơ HTTP Desynchronization nghiêm trọng
CLOUD HOSTING
DỊCH VỤ
VPS • CLOUD • SERVER
Hiệu năng cao
Ổn định • Bảo mật • Tốc độ
☁️
SSD NVMe 99.9% 24/7
TÌM HIỂU NGAY

Một lỗ hổng CRLF injection có giới hạn có thể leo thang thành một cuộc tấn công HTTP desynchronization nghiêm trọng, làm ngộ độc bộ nhớ đệm CDN và cung cấp các payload XSS cho người dùng trên các trang web hợp pháp. Cuộc tấn công này, được gọi là CRLF-Powered Desync, bắt đầu khi một ứng dụng xử lý sai các ký tự xuống dòng được mã hóa, thường được biểu thị bằng %0d%0a.

CRLF Injection và Cơ chế Tấn công HTTP Desynchronization

Các ký tự này đánh dấu các dòng mới trong thông điệp HTTP. Nếu một máy chủ front-end giải mã chúng trước khi chuyển tiếp yêu cầu đến máy chủ backend, kẻ tấn công có thể chèn các tiêu đề HTTP mới hoặc thay đổi cấu trúc của yêu cầu thượng nguồn. Một cấu hình rủi ro liên quan đến các triển khai Nginx đặt các biến như $uri vào các chỉ thị proxy_pass. Nginx có thể chuẩn hóa và giải mã URL đường dẫn trước khi chuyển tiếp nó lên thượng nguồn.

Điều này có thể chuyển đổi các chuỗi CRLF được mã hóa thành các dấu ngắt dòng thực tế, cho phép chèn tiêu đề yêu cầu. Sự không khớp kết quả giữa cách các lớp cơ sở hạ tầng khác nhau diễn giải cùng một yêu cầu có thể tạo ra tình trạng HTTP request smuggling, hay còn gọi là desync.

Trong một cuộc tấn công desync, proxy front-end và ứng dụng backend không đồng ý về điểm kết thúc của một yêu cầu HTTP và điểm bắt đầu của yêu cầu tiếp theo. Kẻ tấn công có thể sử dụng sự nhầm lẫn này để chèn một yêu cầu bổ sung vào một kết nối được chia sẻ. Các phản hồi dành cho người dùng này có thể được gửi đến người dùng khác, gây ra sự cố tài khoản, lộ thông tin nhạy cảm, từ chối dịch vụ hoặc ngộ độc bộ nhớ đệm.

Tác động Nghiêm trọng tại Lớp CDN

Các nhà nghiên cứu đã chỉ ra rằng vấn đề có thể trở nên đặc biệt nguy hiểm trong cơ sở hạ tầng CDN (Content Delivery Network). Trong một trường hợp, ngộ độc hàng đợi phản hồi dường như xảy ra ở lớp CDN thay vì chỉ trong ứng dụng mục tiêu. Điều này tạo ra rủi ro rằng các yêu cầu và phản hồi từ các trang web không liên quan được lưu trữ trên cùng cơ sở hạ tầng CDN có thể bị trộn lẫn.

Các sự cố như vậy có thể làm lộ cookie phiên, token ủy quyền và các dữ liệu nhạy cảm khác nếu quá trình cô lập kết nối thất bại. Một kịch bản có tác động lớn hơn liên quan đến việc ngộ độc một trang được lưu vào bộ nhớ đệm của CDN và biến nội dung được lưu vào bộ nhớ đệm thành một cơ chế phân phối XSS.

Bằng cách kết hợp CL.TE desync do CRLF cung cấp với hành vi yêu cầu HEAD được lựa chọn cẩn thận, các nhà nghiên cứu đã có thể làm cho CDN lưu trữ một phản hồi độc hại. Tài nguyên bị ngộ độc sau đó có thể được phân phát cho người dùng đang hoạt động, cho phép JavaScript do kẻ tấn công kiểm soát thực thi trong ngữ cảnh trình duyệt của họ. Nghiên cứu cũng cảnh báo rằng các cuộc tấn công này có thể tương thích với trình duyệt.

Khai thác và Khả năng Lan truyền

Trong một số trường hợp, điều hướng trình duyệt thông thường hoặc các yêu cầu fetch() của JavaScript có thể mang theo dữ liệu được mã hóa cần thiết để kích hoạt desync. Nếu kẻ tấn công đạt được XSS trên một trang hướng tới nạn nhân, trình duyệt của nạn nhân có thể liên tục gửi các yêu cầu độc hại giống nhau, tạo ra một “worm desync” tự lan truyền.

Biện pháp Phòng ngừa và Khuyến nghị

Các tổ chức nên coi CRLFrequest-header injection là các phát hiện có mức độ nghiêm trọng cao thay vì các vấn đề xác thực đầu vào nhỏ. Người phòng thủ nên xem xét các quy tắc reverse-proxy, tránh sử dụng các biến URI đã giải mã trong các chỉ thị proxy_passreturn của Nginx, đồng thời đảm bảo rằng mọi lớp của ngăn xếp áp dụng các quy tắc phân tích cú pháp HTTP nhất quán.

Các nhóm cũng nên kiểm tra hành vi của CDN, bộ cân bằng tải, proxy và máy chủ gốc cùng nhau, vì những lỗi nghiêm trọng nhất phát sinh từ sự khác biệt của trình phân tích cú pháp giữa các lớp này. Di chuyển lưu lượng truy cập thượng nguồn sang HTTP/2 khi thực tế, cô lập các kết nối backend, từ chối sớm các ký tự điều khiển được mã hóa và thường xuyên kiểm tra các lỗi request smuggling có thể giảm đáng kể khả năng bị phơi nhiễm.

Bài học cốt lõi rất đơn giản: một chuỗi CRLF được chèn vào có thể trở thành rủi ro ngộ độc bộ nhớ đệm và XSS trên toàn bộ cơ sở hạ tầng khi các thành phần HTTP không đồng ý về ranh giới yêu cầu.

Để ngăn chặn các sự cố do điều tra chậm trễ, hãy tăng cường năng lực của bạn với threat intelligence từ 15K SOC: Tích hợp tra cứu TI vào SOC của bạn. Tìm hiểu thêm về cách tích hợp TI Lookup.