Lỗ hổng CVE nghiêm trọng LangChain: Nguy cơ RCE & SSRF

Một lỗ hổng CVE nghiêm trọng (CVE-2025-68664) đã được phát hiện trong thư viện lõi LangChain, cho phép kẻ tấn công trích xuất các biến môi trường nhạy cảm và có khả năng thực thi mã thông qua các lỗi deserialization. Lỗ hổng này ảnh hưởng đến một trong những framework AI phổ biến nhất, với hàng trăm triệu lượt tải xuống, gây ra rủi ro đáng kể cho các ứng dụng dựa trên LLM.
Phân Tích CVE Nghiêm Trọng LangChain-core (CVE-2025-68664)
CVE-2025-68664 là một lỗ hổng deserialization của dữ liệu không tin cậy (CWE-502) trong thư viện langchain-core. Cụ thể, các hàm dumps() và dumpd() của LangChain-core đã không thoát (escape) chính xác các dictionary do người dùng kiểm soát có chứa khóa 'lc' được bảo lưu. Khóa 'lc' này dùng để đánh dấu các đối tượng tuần tự hóa nội bộ của LangChain.
Khi các output của LLM hoặc các injection vào prompt có thể ảnh hưởng đến các trường như additional_kwargs hoặc response_metadata, chúng có thể kích hoạt các chu trình tuần tự hóa-giải tuần tự hóa (serialization-deserialization) trong các luồng hoạt động phổ biến. Điều này bao gồm các tác vụ như event streaming, logging và caching, dẫn đến việc giải tuần tự hóa dữ liệu không đáng tin cậy.
Cơ Chế Khai Thác Deserialization
Nguyên nhân gốc rễ của lỗ hổng nằm ở việc xử lý không đúng cách các dictionary có chứa khóa 'lc' trong quá trình tuần tự hóa. Khi một dictionary do người dùng kiểm soát được truyền vào các hàm dumps() hoặc dumpd() và chứa khóa 'lc', nó sẽ được xử lý như một đối tượng nội bộ của LangChain thay vì là dữ liệu thông thường.
Điều này cho phép kẻ tấn công chèn các đối tượng độc hại vào dữ liệu được tuần tự hóa. Khi dữ liệu này được giải tuần tự hóa trở lại, nó có thể tạo ra các đối tượng có hành vi không mong muốn hoặc độc hại, dẫn đến việc thực thi mã từ xa (RCE) hoặc các hình thức tấn công khác như trích xuất dữ liệu.
Đánh Giá Mức Độ Nghiêm Trọng (CVSS)
Lỗ hổng này được xếp hạng là Critical với điểm CVSS 9.3. Tổ chức CNA đã chỉ định mức độ nghiêm trọng này do khả năng khai thác cao và tác động tiềm tàng lớn. Các nhà nghiên cứu đã xác định được 12 mẫu lỗ hổng khác nhau, bao gồm các phương thức trong astream_events(v1) và Runnable.astream_log(), cho thấy phạm vi ảnh hưởng rộng rãi trong thư viện.
Sự tồn tại của nhiều mẫu lỗ hổng cho thấy đây không phải là một lỗi biệt lập mà là một vấn đề kiến trúc trong cách LangChain xử lý quá trình tuần tự hóa các đối tượng và dữ liệu đầu vào không đáng tin cậy.
Chi Tiết Kỹ Thuật và Phương Thức Tấn Công Mạng Tiềm Năng
Kẻ tấn công có thể tạo ra các prompt được thiết kế đặc biệt để khởi tạo các lớp (allowlisted classes) hợp lệ nhưng có khả năng gây hại, ví dụ như ChatBedrockConverse từ thư viện langchain_aws. Việc này có thể kích hoạt các cuộc tấn công Server-Side Request Forgery (SSRF).
Trong kịch bản SSRF này, các biến môi trường (environment variables) nhạy cảm có thể bị trích xuất thông qua các header HTTP. Điều này cho phép kẻ tấn công thu thập thông tin cấu hình quan trọng hoặc các khóa API mà không cần truy cập trực tiếp vào hệ thống.
Khai Thác Dữ Liệu Nhạy Cảm qua SSRF
Một ví dụ về khai thác dữ liệu nhạy cảm là thông qua việc lợi dụng các tham số có thể bị tiêm nhiễm trong quá trình tạo yêu cầu HTTP. Bằng cách thao túng các giá trị trong additional_kwargs hoặc response_metadata, kẻ tấn công có thể điều khiển các yêu cầu HTTP mà LangChain thực hiện đến các dịch vụ bên ngoài.
Khi các yêu cầu này được gửi đi, các biến môi trường quan trọng như khóa API, thông tin đăng nhập cơ sở dữ liệu hoặc thông tin nhạy cảm khác có thể được chèn vào các header của yêu cầu. Sau đó, kẻ tấn công chỉ cần lắng nghe các yêu cầu đến máy chủ của họ để thu thập dữ liệu đã bị rò rỉ.
Tiềm Năng Thực Thi Mã Từ Xa (RCE)
Ngoài SSRF, lỗ hổng này còn mở ra cánh cửa cho việc thực thi mã từ xa (RCE). Nếu PromptTemplate được sử dụng sau quá trình giải tuần tự hóa, nó có thể cho phép render Jinja2. Jinja2 là một công cụ template mạnh mẽ có thể bị lạm dụng để thực thi mã nếu kẻ tấn công có khả năng kiểm soát template input.
Nếu kẻ tấn công có thể chèn các template độc hại vào dữ liệu được tuần tự hóa, khi dữ liệu này được giải tuần tự hóa và sau đó được sử dụng bởi PromptTemplate, mã độc có thể được thực thi trên hệ thống. Đây là một rủi ro cực kỳ nghiêm trọng, có thể dẫn đến việc chiếm quyền điều khiển hoàn toàn hệ thống.
Quá Trình Phát Hiện và Vá Lỗi
Lỗ hổng này được phát hiện bởi một nhà nghiên cứu bảo mật của Cyata trong quá trình kiểm tra các ranh giới tin cậy của AI. Phát hiện này dựa trên việc truy vết các sink deserialization và nhận ra sự thiếu sót trong mã tuần tự hóa của LangChain.
Thông tin về lỗ hổng đã được báo cáo qua Huntr vào ngày 4 tháng 12 năm 2025. LangChain đã nhanh chóng xác nhận vào ngày hôm sau và công bố thông báo bảo mật chính thức vào ngày 24 tháng 12. Các bản vá đã được phát hành kịp thời trong các phiên bản langchain-core sau:
langchain-corephiên bản 0.3.81langchain-corephiên bản 1.2.5
Các bản vá này đã giải quyết vấn đề bằng cách gói các dictionary chứa khóa 'lc' một cách an toàn và tắt mặc định tùy chọn secrets_from_env. Trước đó, secrets_from_env được bật theo mặc định, cho phép rò rỉ trực tiếp các biến môi trường. Đội ngũ LangChain đã trao thưởng một khoản tiền kỷ lục 4.000 đô la cho nhà nghiên cứu đã phát hiện ra lỗ hổng này.
Để biết thêm chi tiết về thông báo bảo mật, có thể tham khảo tại GitHub Security Advisory và bài viết của Cyata tại Cyata.ai blog.
Ảnh Hưởng Rộng Lớn và Rủi Ro Hệ Thống
Quy mô sử dụng của LangChain làm tăng cường mức độ rủi ro của lỗ hổng này. Theo pepy.tech, thư viện này có khoảng 847 triệu lượt tải xuống tổng cộng, và pypistats ghi nhận khoảng 98 triệu lượt tải xuống chỉ trong tháng trước. Điều này cho thấy một số lượng lớn các ứng dụng và hệ thống có thể bị ảnh hưởng nếu không được vá kịp thời.
Sự phổ biến rộng rãi của LangChain trong việc phát triển ứng dụng LLM có nghĩa là bất kỳ lỗ hổng nào trong thư viện cốt lõi đều có thể có tác động dây chuyền nghiêm trọng đến hàng ngàn dự án. Các tổ chức đang ngày càng áp dụng các ứng dụng LLM, và việc một lỗ hổng nghiêm trọng như thế này bị khai thác có thể dẫn đến những hậu quả thảm khốc.
Đáng chú ý, một lỗ hổng tương tự cũng đã ảnh hưởng đến LangChainJS (CVE-2025-68665), nhấn mạnh những rủi ro cố hữu trong việc xây dựng các kiến trúc AI agentic và tầm quan trọng của việc kiểm tra bảo mật kỹ lưỡng across frameworks.
Khuyến Nghị Bảo Mật và Biện Pháp Giảm Thiểu
Các tổ chức sử dụng LangChain cần hành động ngay lập tức để bảo vệ hệ thống của mình khỏi các cuộc tấn công tiềm tàng. Việc cập nhật các thư viện là bước quan trọng nhất.
- Nâng cấp
langchain-corengay lập tức: Đảm bảo rằng bạn đang sử dụng phiên bản 0.3.81 hoặc 1.2.5 trở lên để nhận các bản vá bảo mật. - Xác minh các dependencies: Kiểm tra và đảm bảo tất cả các thư viện phụ thuộc như
langchain-communitycũng được cập nhật lên các phiên bản tương thích và an toàn. - Coi đầu ra LLM là không đáng tin cậy: Luôn xử lý đầu ra từ các mô hình ngôn ngữ lớn như dữ liệu từ nguồn không đáng tin cậy và thực hiện các biện pháp xác thực và làm sạch cần thiết.
- Kiểm tra audit deserialization: Rà soát các quy trình tuần tự hóa và giải tuần tự hóa trong hệ thống của bạn, đặc biệt là trong các luồng xử lý streaming và logging. Đảm bảo rằng không có dữ liệu không đáng tin cậy nào được giải tuần tự hóa mà không có kiểm tra nghiêm ngặt.
- Vô hiệu hóa giải quyết bí mật (secret resolution) mặc định: Đảm bảo rằng tùy chọn
secrets_from_envđược tắt theo mặc định và chỉ được kích hoạt khi các đầu vào đã được xác minh đầy đủ. - Kiểm kê triển khai agent: Các tổ chức phải lập danh sách tất cả các triển khai agent dựa trên LLM để có thể nhanh chóng đánh giá và xử lý các rủi ro bảo mật tiềm ẩn trong bối cảnh việc áp dụng ứng dụng LLM đang bùng nổ.







