Ngoại lệ không được bắt trong Node adapter của withastro Astro có thể dừng máy chủ

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

Lỗ hổng CVE-2026-102984 là lỗ hổng Uncaught Exception ảnh hưởng tới astro (phiên bản bị ảnh hưởng: < 11.1.3). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 8.2. 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

Astro là một web framework dành cho các website lấy nội dung làm trọng tâm. Trước phiên bản 11.1.3, adapter @astrojs/node xây dựng URL của request từ header Host, và một cổng không hợp lệ có thể khiến URL đó không hợp lệ. Luồng khôi phục sử dụng lại host không hợp lệ tương tự và phát sinh TypeError: Invalid URL không được bắt trước khi bắt đầu định tuyến. Trong cấu hình standalone mặc định, request trả về HTTP 500 và server vẫn tiếp tục chạy, nhưng khi bật staticHeaders, synchronous handler không bắt được exception nên tiến trình Node bị kết thúc. Các proxy và CDN từ chối Host header không hợp lệ sẽ ngăn luồng này tiếp cận origin. Vấn đề chỉ ảnh hưởng đến availability, không làm lộ dữ liệu và không cho phép thực thi mã. Vấn đề này được khắc phục trong phiên bản 11.1.3.

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

  • Gói npm @astrojs/node của withastro Astro bị ảnh hưởng đến và bao gồm phiên bản 11.1.2; bản ghi CVE biểu diễn cùng phạm vi là < 11.1.3.
  • Phiên bản đã được xác nhận khắc phục là 11.1.3.
  • Cả cấu hình standalone và cấu hình bật staticHeaders đều nằm trong phạm vi cần kiểm tra; staticHeaders làm thay đổi mức độ tác động, không phải phạm vi phiên bản.

Chi tiết kỹ thuật

Thành phần bị ảnh hưởng là adapter @astrojs/node, nơi xây dựng request URL từ header Host do phía gửi request kiểm soát. Một Host chứa cổng không hợp lệ, chẳng hạn nhiều cặp hostname và port hoặc giá trị port vượt giới hạn, có thể tạo ra URL không hợp lệ và phát sinh TypeError: Invalid URL trước khi routing bắt đầu. Luồng khôi phục cố gắng dùng lại host không hợp lệ nên cũng thất bại, khiến exception không được bắt theo CWE-248. Trong cấu hình standalone mặc định, lỗi được chuyển thành phản hồi HTTP 500 và server tiếp tục chạy; khi bật staticHeaders, exception đi vào synchronous handler không bắt lỗi và có thể làm tiến trình Node kết thúc. Điều kiện thực tế phụ thuộc vào việc request có đi qua được proxy hoặc CDN hay không, vì các lớp này có thể loại bỏ Host không hợp lệ trước khi request tới origin.

Khả năng khai thác

Lỗi có thể được kích hoạt từ xa qua network bằng một request chứa Host được tạo thủ công. Bản ghi cho biết không cần quyền xác thực hoặc tương tác của người dùng để gửi request, nhưng request phải vượt qua các proxy, CDN hoặc lớp kiểm tra header có thể từ chối giá trị không hợp lệ. Với cấu hình standalone, tác động thường là request bị trả HTTP 500; với staticHeaders, tiến trình Node có thể bị kết thúc. Bản ghi được cung cấp không xác định exploit công khai và không đủ bằng chứng để kết luận rằng chưa từng có khai thác thực tế.

Tác động kỹ thuật

Kết quả kỹ thuật là một request có Host không hợp lệ có thể làm request thất bại trước khi route được thực thi. Với standalone, server tiếp tục hoạt động sau khi trả HTTP 500; với staticHeaders, exception không được bắt có thể chấm dứt tiến trình Node và gây mất availability của dịch vụ. Tác động được giới hạn ở availability của hệ thống bị ảnh hưởng, không bao gồm tiết lộ dữ liệu, thay đổi dữ liệu hoặc thực thi mã. Việc khai thác còn phụ thuộc vào việc header bất thường có tới được origin hay bị proxy hoặc CDN loại bỏ.

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

Tác động kinh doanh và vận hành tập trung vào availability của dịch vụ web:

  • Trong cấu hình standalone, request xấu nhận HTTP 500 nhưng server vẫn tiếp tục chạy, nên tác động có thể giới hạn ở các request bị lỗi.
  • Khi bật staticHeaders, tiến trình Node có thể bị kết thúc, dẫn tới gián đoạn dịch vụ cho đến khi cơ chế vận hành của deployment khôi phục tiến trình.
  • Không có bằng chứng trong bản ghi cho thấy lỗi làm lộ dữ liệu, sửa đổi dữ liệu hoặc cho phép thực thi mã.
  • Proxy và CDN đã chặn Host không hợp lệ có thể giảm phạm vi tiếp cận origin, nhưng không thay thế cho việc cập nhật dependency.

Cách khắc phục

  1. Nâng cấp @astrojs/node lên phiên bản 11.1.3, là phiên bản được xác nhận đã khắc phục lỗi.
  2. Nếu chưa thể nâng cấp ngay, cấu hình reverse proxy hoặc CDN để chặn Host không hợp lệ trước khi request tới origin. Đây chỉ là biện pháp giảm khả năng tiếp cận đường lỗi, không phải bản sửa thay thế.
  3. Ưu tiên xử lý các deployment đã bật staticHeaders, vì trong cấu hình này exception không được bắt và có thể làm tiến trình Node kết thúc.
  4. Sau khi cập nhật, xác minh dependency thực tế trong artifact triển khai và kiểm tra log khởi động hoặc runtime để bảo đảm process đang sử dụng package đã được sửa.

Cách phát hiện

  1. Kiểm kê dependency và metadata runtime để xác định các triển khai đang sử dụng @astrojs/node.
  2. Xác định deployment nào dùng cấu hình standalone mặc định và deployment nào bật staticHeaders, vì hai cấu hình có kết quả khác nhau khi lỗi xảy ra.
  3. Rà soát application log và process log như một biện pháp phòng ngừa để tìm TypeError: Invalid URL, exception không được bắt hoặc các phản hồi HTTP 500 liên quan đến request có Host bất thường.
  4. Kiểm tra policy của reverse proxy và CDN để xác nhận chúng có từ chối Host không hợp lệ trước khi chuyển request tới origin hay không.
  5. Không xem việc không có log phù hợp là bằng chứng hệ thống an toàn, vì lớp proxy có thể đã chặn request hoặc log có thể không ghi lại lỗi.
Nguồn (16)
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.