Các nhà nghiên cứu bảo mật vừa công bố một lỗ hổng CVE-2025-68664 thực thi mã và đánh cắp thông tin cực kỳ nguy hiểm trong thư viện LangChain Core, ảnh hưởng trực tiếp đến hàng loạt ứng dụng chạy bằng AI. Được đặt tên là LangGrinch, lỗ hổng này mở ra cánh cửa cho tin tặc xâm nhập sâu vào hạ tầng hệ thống và thao túng kết quả của các mô hình ngôn ngữ lớn thông qua những kỹ thuật tấn công tinh vi.

Cơ chế hoạt động của LangGrinch
Về bối cảnh, LangChain Core trong Python là phần lõi cung cấp interface và các abstraction trung lập mô hình để xây dựng ứng dụng LLM. Lỗ hổng LangGrinch nằm ở cơ chế serialization: các hàm dumps() và dumpd() không escape đúng cách các dictionary tự do có khóa lc, trong khi lc lại là marker nội bộ để LangChain nhận diện object đã serialize.
Điểm nguy hiểm nằm ở chỗ dữ liệu do người dùng hoặc do LLM tạo ra kiểm soát mà chứa cấu trúc lc sẽ không còn được xem như dữ liệu thuần. Khi hệ thống gọi load()/loads() để deserialize, nó có thể bị xử lý như LangChain object hợp lệ thay vì plain data. Theo phân tích của Porat trong bài viết về LangGrinch, chỉ cần kẻ tấn công khiến luồng orchestration serialize rồi deserialize một payload có lc, hệ thống có thể đi vào các nhánh xử lý cho kẻ tấn công, mở đường cho nhiều tác động dây chuyền.
Hậu quả và rủi ro khai thác
Tùy cấu hình và đường đi dữ liệu, hậu quả có thể bao gồm trích xuất secrets từ environment variables đặc biệt nếu deserialize diễn ra với secrets_from_env=True, vốn từng được đặt mặc định trước đây, khởi tạo class trong các namespace tin cậy đã được cho phép, và trong một số tình huống có thể tiến tới các kịch bản nguy hiểm hơn liên quan template. Đáng chú ý, lỗi escape này còn tạo điều kiện để kẻ tấn công vào cấu trúc object vào các trường như metadata, additional_kwargs hoặc response_metadata những nơi hoàn toàn có thể bị kiểm soát gián tiếp bởi prompt injection nếu hệ thống coi đầu ra LLM là đầu vào đáng tin.
Biện pháp khắc phục và Phiên bản ảnh hưởng
Trong advisory chính thức, nhóm duy trì dự án xác nhận đây là lỗi serialization injection và đã phát hành bản vá nhằm giảm bề mặt tấn công. Bản vá không chỉ sửa hành vi escape của dumps()/dumpd(), mà còn thay đổi mặc định của load()/loads() theo hướng hạn chế, bổ sung allowlist thông qua tham số allowed_objects, chặn Jinja2 templates theo mặc định, và đặt secrets_from_env về False để tránh cơ chế tự động nạp secrets từ môi trường.
Người dùng LangChain Core cần lưu ý các nhánh phiên bản bị ảnh hưởng, đặc biệt các triển khai đang chạy langchain-core trong khoảng >=1.0.0 đến trước 1.2.5, hoặc các bản cũ hơn trước 0.3.81.
Biến thể trên hệ sinh thái JavaScript
Không dừng ở hệ sinh thái Python, LangChain.js cũng ghi nhận lỗi cùng họ do không escape object có khóa lc, được theo dõi theo advisory tương ứng tại GHSA-r399-636x-v7f6 và gán mã CVE-2025-68665. Lỗi này có thể dẫn tới secret extraction và prompt injection trong các luồng serialize/deserialise ở phía JavaScript, vì vậy các hệ thống dùng @langchain/core hoặc langchain trên Node.js cũng cần rà soát và nâng cấp theo phiên bản đã vá.








