FixVibe
Covered by FixVibehigh

Cấu hình sai CORS: Rủi ro của các chính sách quá dễ dãi

Chia sẻ tài nguyên nhiều nguồn gốc (CORS) là một cơ chế trình duyệt được thiết kế để nới lỏng Chính sách cùng nguồn gốc (SOP). Mặc dù cần thiết đối với các ứng dụng web hiện đại, nhưng việc triển khai không đúng—chẳng hạn như lặp lại tiêu đề Nguồn gốc của người yêu cầu hoặc đưa nguồn gốc 'null' vào danh sách trắng—có thể cho phép các trang web độc hại lấy cắp dữ liệu riêng tư của người dùng.

CWE-942

Tác động

Kẻ tấn công có thể đánh cắp dữ liệu nhạy cảm, được xác thực từ người dùng ứng dụng dễ bị tấn công [S2]. Nếu người dùng truy cập một trang web độc hại trong khi đăng nhập vào ứng dụng dễ bị tấn công, trang web độc hại có thể thực hiện các yêu cầu có nguồn gốc chéo tới API của ứng dụng và đọc phản hồi [S1][S2]. Điều này có thể dẫn đến việc đánh cắp thông tin cá nhân, bao gồm hồ sơ người dùng, mã thông báo CSRF hoặc tin nhắn riêng tư [S2].

Nguyên nhân gốc rễ

CORS là cơ chế dựa trên tiêu đề HTTP cho phép máy chủ chỉ định nguồn gốc nào (miền, lược đồ hoặc cổng) được phép tải tài nguyên [S1]. Các lỗ hổng thường phát sinh khi chính sách CORS của máy chủ quá linh hoạt hoặc được triển khai kém [S2]:

  • Tiêu đề gốc được phản ánh: Một số máy chủ đọc tiêu đề Origin từ yêu cầu của khách hàng và lặp lại tiêu đề đó trong tiêu đề phản hồi Access-Control-Allow-Origin (ACAO) [S2]. Điều này cho phép bất kỳ trang web nào truy cập tài nguyên [S2] một cách hiệu quả.
  • Ký tự đại diện bị định cấu hình sai: Mặc dù ký tự đại diện * cho phép mọi nguồn gốc truy cập tài nguyên nhưng không thể sử dụng nó cho các yêu cầu yêu cầu thông tin xác thực (như cookie hoặc tiêu đề Cấp phép) [S3]. Các nhà phát triển thường cố gắng bỏ qua điều này bằng cách tạo động tiêu đề ACAO dựa trên yêu cầu [S2].
  • Danh sách trắng 'null': Một số ứng dụng đưa nguồn gốc null vào danh sách trắng, có thể được kích hoạt bởi các yêu cầu được chuyển hướng hoặc tệp cục bộ, cho phép các trang web độc hại giả dạng nguồn gốc null để có quyền truy cập [S2][S3].
  • Lỗi phân tích cú pháp: Các lỗi trong kết hợp biểu thức chính quy hoặc chuỗi khi xác thực tiêu đề Origin có thể cho phép kẻ tấn công sử dụng các miền như trusted-domain.com.attacker.com [S2].

Điều quan trọng cần lưu ý là CORS không phải là biện pháp bảo vệ chống lại Giả mạo yêu cầu trên nhiều trang web (CSRF) [S2].

Sửa chữa bê tông

  • Sử dụng Danh sách trắng tĩnh: Tránh tạo động tiêu đề Access-Control-Allow-Origin từ tiêu đề Origin [S2] của yêu cầu. Thay vào đó, hãy so sánh nguồn gốc của yêu cầu với danh sách miền đáng tin cậy được mã hóa cứng [S3].
  • Tránh nguồn gốc 'null': Không bao giờ đưa null vào danh sách trắng có nguồn gốc được phép [S2].
  • Hạn chế thông tin xác thực: Chỉ đặt Access-Control-Allow-Credentials: true nếu thực sự cần thiết cho tương tác giữa nhiều nguồn gốc cụ thể [S3].
  • Sử dụng xác thực phù hợp: Nếu bạn phải hỗ trợ nhiều nguồn gốc, hãy đảm bảo logic xác thực cho tiêu đề Origin mạnh mẽ và không thể bị bỏ qua bởi tên miền phụ hoặc tên miền trông tương tự [S2].

FixVibe kiểm tra nó như thế nào

FixVibe hiện bao gồm điều này dưới dạng kiểm tra hoạt động có kiểm soát. Sau khi xác minh miền, active.cors gửi các yêu cầu API có cùng nguồn gốc với nguồn gốc tổng hợp của kẻ tấn công và đánh giá các tiêu đề phản hồi CORS. Nó báo cáo phản ánh nguồn gốc tùy ý, CORS được chứng nhận bằng ký tự đại diện và CORS mở rộng trên các điểm cuối API không công khai trong khi tránh tiếng ồn tài sản công cộng.