Lỗ hổng LangChain làm lộ thông tin bí mật thông qua phương thức tấn công chèn mã

Tác giả T-800, T.M.Hai 30, 2025, 09:00:08 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Một lỗ hổng bảo mật nghiêm trọng đã được phát hiện trong LangChain Core, có thể bị kẻ tấn công khai thác để đánh cắp các thông tin bí mật nhạy cảm và thậm chí ảnh hưởng đến phản hồi của mô hình ngôn ngữ lớn (LLM) thông qua việc chèn xung nhịp.

LangChain Core (tức là langchain-core) là một gói Python cốt lõi thuộc hệ sinh thái LangChain, cung cấp các giao diện cốt lõi và các trừu tượng độc lập với mô hình để xây dựng các ứng dụng được hỗ trợ bởi LLM.


Lỗ hổng này, được theo dõi với mã CVE-2025-68664, có điểm CVSS là 9,3 trên 10,0. Nhà nghiên cứu bảo mật Yarden Porat được ghi nhận là người đã báo cáo lỗ hổng này vào ngày 4 tháng 12 năm 2025. Nó được đặt tên mã là LangGrinch.

"Lỗi tấn công chèn mã tuần tự hóa tồn tại trong các hàm dumps() và dumpd() của LangChain," những người duy trì dự án cho biết trong một thông báo. "Các hàm này không xử lý đúng cách các từ điển có khóa 'lc' khi tuần tự hóa các từ điển dạng tự do."

"Khóa 'lc' được LangChain sử dụng nội bộ để đánh dấu các đối tượng được tuần tự hóa. Khi dữ liệu do người dùng kiểm soát chứa cấu trúc khóa này, nó được coi là một đối tượng LangChain hợp lệ trong quá trình giải tuần tự hóa chứ không phải là dữ liệu người dùng thông thường."

Theo nhà nghiên cứu Porat của Cyata, mấu chốt của vấn đề nằm ở chỗ hai hàm này không thể thoát khỏi các từ điển do người dùng kiểm soát có chứa khóa "lc". Dấu hiệu "lc" đại diện cho các đối tượng LangChain trong định dạng tuần tự hóa nội bộ của khung phần mềm.

"Vì vậy, một khi kẻ tấn công có thể khiến vòng lặp điều phối LangChain tuần tự hóa và sau đó giải tuần tự hóa nội dung bao gồm khóa 'lc', chúng sẽ tạo ra một đối tượng tùy ý không an toàn, có khả năng kích hoạt nhiều đường dẫn thân thiện với kẻ tấn công," Porat nói.

Điều này có thể dẫn đến nhiều hậu quả khác nhau, bao gồm việc trích xuất thông tin bí mật từ các biến môi trường khi quá trình giải mã được thực hiện với "secrets_from_env=True" (đã được thiết lập mặc định trước đó), khởi tạo các lớp trong các không gian tên đáng tin cậy đã được phê duyệt trước, chẳng hạn như langchain_core, langchain và langchain_community, và thậm chí có khả năng dẫn đến thực thi mã tùy ý thông qua các mẫu Jinja2.

Hơn nữa, lỗi thoát này cho phép chèn các cấu trúc đối tượng LangChain thông qua các trường do người dùng kiểm soát như metadata, additional_kwargs hoặc response_metadata thông qua phương thức chèn nhắc lệnh.

Bản vá do LangChain phát hành giới thiệu các thiết lập mặc định hạn chế mới trong hàm load() và loads() thông qua tham số danh sách cho phép "allowed_objects", cho phép người dùng chỉ định các lớp nào có thể được tuần tự hóa/giải tuần tự hóa. Ngoài ra, các mẫu Jinja2 bị chặn theo mặc định và tùy chọn "secrets_from_env" hiện được đặt thành "False" để vô hiệu hóa việc tự động tải bí mật từ môi trường.

Các phiên bản sau của langchain-core bị ảnh hưởng bởi lỗ hổng bảo mật CVE-2025-68664:

    >= 1.0.0, < 1.2.5 (Đã sửa lỗi trong phiên bản 1.2.5)
    < 0.3.81 (Đã sửa lỗi trong phiên bản 0.3.81)

Cần lưu ý rằng tồn tại một lỗ hổng chèn mã tuần tự hóa tương tự trong LangChain.js, cũng bắt nguồn từ việc không mã hóa đúng cách các đối tượng có khóa "lc", do đó cho phép trích xuất bí mật và chèn lời nhắc. Lỗ hổng này đã được gán mã định danh CVE là CVE-2025-68665 (điểm CVSS: 8.6).

Điều này ảnh hưởng đến các gói npm sau:

    @langchain/core >= 1.0.0, < 1.1.8 (Đã sửa lỗi trong phiên bản 1.1.8)
    @langchain/core < 0.3.80 (Đã sửa lỗi trong phiên bản 0.3.80)
    langchain >= 1.0.0, < 1.2.3 (Đã sửa lỗi trong phiên bản 1.2.3)
    langchain < 0.3.37 (Đã sửa lỗi trong phiên bản 0.3.37)

Do tính chất nghiêm trọng của lỗ hổng bảo mật, người dùng nên cập nhật lên phiên bản đã được vá lỗi càng sớm càng tốt để có được sự bảo vệ tối ưu.

"Phương thức tấn công phổ biến nhất là thông qua các trường phản hồi LLM như additional_kwargs hoặc response_metadata, có thể bị điều khiển bằng cách chèn lệnh nhắc và sau đó được tuần tự hóa/giải tuần tự hóa trong các hoạt động xử lý dữ liệu trực tuyến," Porat nói. "Đây chính là điểm giao thoa giữa 'Trí tuệ nhân tạo và bảo mật truyền thống' mà các tổ chức thường bị bất ngờ. Đầu ra của LLM là một đầu vào không đáng tin cậy."