Nghiêm trọng: Lỗ hổng SSRF (CVE-2026-26019) đe dọa rò rỉ dữ liệu

Một lỗ hổng Server-Side Request Forgery (SSRF) nghiêm trọng đã được phát hiện trong gói langchain/community, ảnh hưởng đến các phiên bản lên đến 1.1.13. Lỗ hổng này, được định danh là CVE-2026-26019, tiềm ẩn nguy cơ rò rỉ dữ liệu siêu dữ liệu đám mây nhạy cảm và thông tin cơ sở hạ tầng nội bộ. Với mức độ nghiêm trọng vừa phải theo hệ thống CVSS 3.1, lỗ hổng SSRF này cho phép kẻ tấn công thực hiện các yêu cầu tùy ý từ phía máy chủ ứng dụng.
Cơ chế kỹ thuật và Khai thác CVE-2026-26019
Điểm yếu cốt lõi của CVE-2026-26019 nằm trong lớp RecursiveUrlLoader của gói langchain/community. Thành phần này được thiết kế để thực hiện thu thập dữ liệu web đệ quy, và theo mặc định, nó sử dụng tùy chọn preventOutside để hạn chế các yêu cầu chỉ trong cùng một tên miền, nhằm mục đích bảo vệ khỏi các truy cập trái phép ra bên ngoài.
Tuy nhiên, cách triển khai ban đầu đã sử dụng phương thức String.startsWith() của JavaScript để xác thực URL. Phương pháp này chỉ kiểm tra tiền tố chuỗi, không phải là một kiểm tra ngữ nghĩa đầy đủ theo tiêu chuẩn URL. Do đó, kẻ tấn công có thể dễ dàng vượt qua cơ chế hạn chế tên miền bằng cách chế tác các tên miền phụ. Ví dụ, một URL như https://example.com.attacker.com sẽ được coi là hợp lệ theo logic startsWith(), dù thực tế nó trỏ đến một tên miền do kẻ tấn công kiểm soát.
Ngoài ra, trình thu thập dữ liệu còn thiếu cơ chế chặn các yêu cầu đến các địa chỉ IP riêng tư hoặc dành riêng. Điều này cho phép kẻ tấn công chuyển hướng các yêu cầu từ máy chủ bị ảnh hưởng đến các tài nguyên nội bộ nhạy cảm, bao gồm:
- Các điểm cuối siêu dữ liệu đám mây như 169.254.169.254 (thường được sử dụng trong các môi trường AWS, GCP, Azure để lấy thông tin cấu hình và thông tin xác thực).
- Địa chỉ localhost (127.0.0.1), có thể chứa các dịch vụ nội bộ quan trọng.
- Các mạng nội bộ, sử dụng dải địa chỉ IP riêng tư như 10.0.0.0/8, 172.16.0.0/12, và 192.168.0.0/16.
Tác động tiềm ẩn và Kịch bản tấn công
Kẻ tấn công có thể khai thác lỗ hổng SSRF này bằng cách chèn các liên kết độc hại vào nội dung mà RecursiveUrlLoader có khả năng thu thập. Khi máy chủ chạy LangChain xử lý nội dung bị thao túng này, nó sẽ thực hiện các yêu cầu HTTP/HTTPS đến các địa chỉ mục tiêu do kẻ tấn công chỉ định.
Trong các môi trường đám mây nơi LangChain có quyền truy cập mạng đặc quyền, việc khai thác thành công có thể dẫn đến các hậu quả nghiêm trọng:
- Chiếm quyền điều khiển: Thu thập IAM credentials (thông tin xác thực quản lý định danh và truy cập), mã thông báo bảo mật (security tokens) hoặc các khóa API từ các dịch vụ đám mây như AWS, GCP, hoặc Azure. Việc này có thể dẫn đến việc chiếm quyền điều khiển tài nguyên đám mây.
- Thăm dò mạng nội bộ: Quét và tương tác với các API và dịch vụ nội bộ chỉ có thể truy cập được trong mạng riêng. Điều này có thể tiết lộ cấu trúc mạng, các dịch vụ chưa được công bố, và các điểm yếu khác.
- Rò rỉ dữ liệu nhạy cảm: Gây ra rò rỉ dữ liệu thông qua chuỗi chuyển hướng hoặc trực tiếp từ các dịch vụ nội bộ. Các dữ liệu này có thể bao gồm thông tin cấu hình, dữ liệu người dùng, hoặc mã nguồn.
Việc khai thác lỗ hổng bảo mật này yêu cầu đặc quyền tối thiểu trên hệ thống LangChain nhưng phụ thuộc vào tương tác của trình thu thập dữ liệu với nội dung độc hại. Một khi bị khai thác, nó có thể biến máy chủ LangChain thành một proxy tấn công mạnh mẽ.
Giải pháp vá lỗi và Biện pháp bảo vệ hệ thống
LangChain đã chủ động khắc phục lỗ hổng SSRF này trong phiên bản 1.1.14 của gói langchain/community. Bản vá bảo mật này đã triển khai các cải tiến đáng kể để tăng cường an toàn thông tin:
- Thay thế cơ chế kiểm tra tiền tố lỏng lẻo bằng quy trình xác thực nguồn gốc chặt chẽ hơn, sử dụng URL API chuẩn để phân tích và kiểm tra URL một cách ngữ nghĩa. Điều này đảm bảo rằng chỉ các yêu cầu đến các tên miền được phép mới được chấp thuận.
- Giới thiệu các bộ lọc SSRF mới trong thư viện @langchain/core/utils/ssrf. Các bộ lọc này được thiết kế để kiểm tra các URL mục tiêu và chủ động ngăn chặn các yêu cầu đến các địa chỉ nguy hiểm.
Cụ thể, bản cập nhật hiện chặn các yêu cầu tới các địa chỉ IP riêng tư, địa chỉ loopback (như 127.0.0.1), các điểm cuối siêu dữ liệu đám mây (169.254.169.254), và các giao thức không phải HTTP(S). Điều này đảm bảo rằng các yêu cầu được kiểm soát chặt chẽ, giảm thiểu đáng kể nguy cơ xâm nhập mạng thông qua SSRF.
Khuyến nghị và Biện pháp giảm thiểu
Đối với những người dùng không thể nâng cấp lên phiên bản 1.1.14 ngay lập tức, việc áp dụng các biện pháp giảm thiểu sau là rất quan trọng để bảo vệ hệ thống khỏi mối đe dọa mạng do CVE-2026-26019 gây ra:
- Tránh sử dụng RecursiveUrlLoader để xử lý nội dung từ các nguồn không đáng tin cậy hoặc nội dung do người dùng tạo mà không có kiểm soát chặt chẽ.
- Cô lập các thành phần sử dụng RecursiveUrlLoader trong một môi trường mạng biệt lập. Đảm bảo rằng môi trường này không thể tiếp cận các mạng nội bộ hoặc các dịch vụ siêu dữ liệu nhạy cảm. Điều này sẽ giới hạn phạm vi tác động của bất kỳ cuộc tấn công SSRF nào.
- Triển khai các chính sách tường lửa (firewall rules) để chặn các kết nối đi từ ứng dụng LangChain đến các địa chỉ IP riêng tư hoặc các điểm cuối siêu dữ liệu đám mây.
Tham khảo và Nguồn đáng tin cậy
Thông tin chi tiết về lỗ hổng CVE-2026-26019 và các giải pháp đã được công bố trên GitHub Advisory GHSA-gf3v-fwqg-4vh7 và được bổ sung vào Cơ sở dữ liệu lỗ hổng quốc gia (NVD). Cộng đồng an ninh mạng được khuyến khích xem xét các tài liệu này để cập nhật thông tin và đảm bảo an ninh mạng cho các triển khai của mình.







