Lỗ hổng Server-Side Request Forgery trong getsentry sentry-javascript với tunneling Next.js

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-2023-46729 là gì?

Lỗ hổng CVE-2023-46729 là lỗ hổng Server-Side Request Forgery (SSRF) ảnh hưởng tới sentry-javascript (phiên bản bị ảnh hưởng: >= 7.26.0, < 7.77.0). Lỗ hổng này được xếp hạng ở mức Nghiêm trọng, với điểm CVSS 9.3. Các nguồn hiện có chưa ghi nhận lỗ hổng này bị khai thác.

Giới thiệu chung

Dữ liệu gốc

sentry-javascript cung cấp các Sentry SDK cho JavaScript. Input chưa được sanitize tại tunnel endpoint của Next.js SDK cho phép gửi các HTTP request tới những URL tùy ý và phản hồi kết quả trở lại người dùng. Vấn đề này chỉ ảnh hưởng đến người dùng đã bật tính năng tunneling của Next.js SDK. Vấn đề đã được khắc phục ở phiên bản 7.77.0.

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

  • Vendor getsentry, product sentry-javascript, cụ thể package sentry/nextjs: bị ảnh hưởng trong khoảng >= 7.26.0, < 7.77.0.
  • Chỉ các deployment đã bật Next.js SDK tunneling feature bị ảnh hưởng; deployment không sử dụng tính năng này không thuộc điều kiện ảnh hưởng được nêu trong advisory.
  • Advisory ghi nhận patched versions là >= 7.77.0. Trạng thái của các nhánh hoặc biến thể không được thể hiện trong các dữ kiện này vẫn chưa được xác định.

Chi tiết kỹ thuật

Đây là lỗi Server-Side Request Forgery (SSRF, CWE-918) trong tunnel endpoint của Next.js SDK. Khi tính năng tunneling được bật, input do attacker kiểm soát tại tunnel endpoint không được kiểm tra đầy đủ, khiến máy chủ gửi HTTP request tới URL tùy ý rồi phản hồi nội dung nhận được cho người dùng.

Luồng tổng quát đã được xác nhận:

  1. Một request từ mạng tiếp cận tunnel endpoint đang được ứng dụng cung cấp.
  2. Giá trị đích do attacker kiểm soát được xử lý mà không được sanitize đầy đủ.
  3. Thành phần phía máy chủ thực hiện request tới đích tùy ý và phản chiếu response trở lại client.

Bản ghi mô tả điều kiện khai thác là cần truy cập qua mạng, không cần quyền xác thực, độ phức tạp thấp và cần user interaction. Phạm vi thực tế phụ thuộc vào các dịch vụ mà máy chủ có thể truy cập. Tài liệu hiện có không nêu chính xác tên tham số đầu vào, endpoint path hoặc toàn bộ logic validation bên trong; pull request sửa lỗi chỉ mô tả việc kiểm tra chặt chẽ các tunnel target parameters.

Khả năng khai thác

Lỗ hổng có thể bị tiếp cận qua mạng tại tunnel endpoint của ứng dụng, nhưng chỉ khi Next.js SDK tunneling feature được bật. Bản ghi mô tả rằng attacker không cần quyền đã xác thực và độ phức tạp khai thác thấp, nhưng cần user interaction.

Trường public_exploit trong bản ghi được đặt là false, nghĩa là bản ghi không xác định một public exploit; điều này không chứng minh rằng chưa từng có khai thác thực tế. Bằng chứng hiện có cũng không xác lập trạng thái khai thác trong thực tế.

Tác động kỹ thuật

Khi bị khai thác, server có thể gửi request tới đích do attacker chọn thay vì chỉ tới dịch vụ dự kiến. Điều này có thể mở rộng khả năng truy cập sang internal network, cloud metadata service hoặc các cổng khác mà server nhìn thấy.

Việc phản hồi nội dung đích về client cũng có thể tạo điều kiện cho các client-side vulnerability như XSS hoặc CSRF trong trusted domain, tùy thuộc vào cách ứng dụng và trình duyệt xử lý response. Hậu quả về confidentiality và integrity có thể đáng kể nếu đích nội bộ trả về dữ liệu nhạy cảm hoặc chấp nhận request có tác động. Phạm vi ảnh hưởng không tự động bao gồm mọi tài nguyên trong môi trường, mà bị giới hạn bởi kết nối mạng, quyền truy cập và trust boundary của server. Bản ghi không nêu tác động trực tiếp đến availability.

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

Lỗ hổng có thể làm thay đổi ranh giới truy cập mạng của ứng dụng, vì máy chủ có thể kết nối tới các đích mà client bên ngoài không truy cập trực tiếp được.

Các hậu quả có thể xảy ra gồm:

  • Đọc hoặc truy vấn các dịch vụ trong mạng nội bộ mà máy chủ có quyền kết nối.
  • Đọc cloud metadata endpoint của AWS, Azure hoặc Google Cloud nếu môi trường cho phép truy cập.
  • Hỗ trợ local hoặc remote port scan từ vị trí mạng của máy chủ.
  • Làm phát sinh cơ hội cho XSS hoặc CSRF trong ngữ cảnh trusted domain do response được phản chiếu lại cho người dùng.

Mức độ ảnh hưởng thực tế phụ thuộc vào network reachability, thông tin xác thực có sẵn và các trust relationship của hệ thống. Bản ghi không xác định tác động trực tiếp đến tính sẵn sàng của dịch vụ.

Cách khắc phục

  1. Nâng cấp sentry/nextjs lên 7.77.0 hoặc một release được vendor xác nhận là đã patched. Kiểm tra lockfile và artifact thực tế để bảo đảm phiên bản đã nâng cấp được triển khai, không chỉ thay đổi manifest.
  2. Nếu chưa thể nâng cấp ngay, tắt tunneling bằng cách xóa tùy chọn tunnelRoute khỏi cấu hình Sentry Next.js SDK trong next.config.js hoặc next.config.mjs, theo workaround của vendor.
  3. Sau khi thay đổi, xác minh rằng tunneling feature đã bị vô hiệu hóa và tunnel endpoint không còn hoạt động qua application routing hoặc reverse proxy.
  4. Rà soát các deployment khác dùng cùng package hoặc cùng cấu hình để tránh chỉ sửa một nhánh ứng dụng trong khi instance khác vẫn còn nằm trong khoảng bị ảnh hưởng.

Cách phát hiện

  1. Kiểm kê lockfile, manifest và artifact triển khai để xác định ứng dụng có sử dụng package sentry/nextjs hay không, sau đó đối chiếu với nhánh phiên bản bị ảnh hưởng.
  2. Kiểm tra cấu hình Next.js, đặc biệt next.config.js và next.config.mjs, để tìm tùy chọn tunnelRoute và xác định tunneling feature có đang bật hay không.
  3. Xác định tunnel endpoint thực tế được expose qua application routing hoặc reverse proxy. Không suy luận rằng ứng dụng an toàn chỉ vì không thấy route trong một file cấu hình.
  4. Như một biện pháp rà soát bổ sung, kiểm tra application log và egress log nếu chúng ghi lại target URL hoặc đích outbound của các request tới tunnel endpoint. Tập trung vào đích nội bộ, cloud metadata endpoint hoặc URL không nằm trong luồng nghiệp vụ dự kiến.
  5. Rà soát các response từ tunnel endpoint để xác định liệu nội dung lấy từ đích outbound có được trả lại cho client hay không. Đây là kiểm tra hành vi phòng ngừa, không phải một IOC đã được vendor xác nhận. Không xem việc không có log là bằng chứng loại trừ lỗ hổng.
Nguồn (12)
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.