Tin tức

Spring AI 2.0.1: Bảy CVE Được Sửa, Giới Hạn Gọi Công Cụ và Độ Tin Cậy Streaming

Spring AI 2.0.1 là bản bảo trì đầu tiên đáng kể cho dòng 2.0: bảy bản vá bảo mật, giới hạn gọi công cụ mới để ngăn vòng lặp agent chạy không kiểm soát, streaming âm thanh OpenAI, và một loạt các bản vá độ tin cậy streaming/gọi công cụ.

August 21, 2026· 5 min read· Nguồn: Spring AI 2.0.1 Available Now
Spring AI 2.0.1: Bảy CVE Được Sửa, Giới Hạn Gọi Công Cụ và Độ Tin Cậy Streaming

Spring AI 2.0.1 đã ra mắt, và đây là một bản phát hành lớn cho một bản bảo trì: hơn 80 vấn đề và PR, chủ yếu do các nhóm đã chuyển sang 2.0.0 GA trong những tuần qua. Điểm nhấn là bảo mật — bảy CVE được sửa — nhưng bản phát hành cũng bổ sung một vài khả năng thường được yêu cầu kể từ GA.

Các bản vá bảo mật bạn nên quan tâm

Bảy CVE được vá trong bản phát hành này. Những cái nghiêm trọng nhất:

  • CVE-2026-47851 — đệ quy không giới hạn trên cây phác thảo PDF do kẻ tấn công kiểm soát trong PDF Document Reader. Một PDF được chế tác có thể làm sập trình đọc hoặc tệ hơn.
  • CVE-2026-47852 — vị trí thư mục cache có thể đoán trước cho phép thay thế mô hình ONNX cục bộ. Kẻ tấn công có quyền truy cập cục bộ có thể hoán đổi tệp mô hình.
  • CVE-2026-59279 — cấp phát phiên liên tục không giới hạn qua các yêu cầu khởi tạo lặp lại. Một vector DoS.
  • CVE-2026-59294 — ghi tệp tùy ý qua path traversal trong ResourceCacheService.
  • CVE-2026-59308 — bỏ qua cách ly giữa các tenant của semantic cache qua việc cắt ngắn SHA-256.
  • CVE-2026-59319 — chèn thẻ RediSearch trong RedisChatMemoryRepository cho phép lộ dữ liệu giữa các cuộc hội thoại.
  • CVE-2026-59318 — dự phòng resolver toàn cục của DefaultToolCallingManager cho phép gọi công cụ không được quảng bá qua prompt injection.

Nếu bạn đang dùng 2.0.0, hãy nâng lên 2.0.1 ngay. Hầu hết ứng dụng chỉ cần đổi phiên bản, nhưng một vài thay đổi cần chú ý.

Thay đổi phá vỡ trước khi bạn nâng cấp

  • Các mô hình chat Mistral AI không còn được dùng trong 2.0.0 giờ đã bị loại bỏ. Nếu bạn tham chiếu chúng bằng hằng số, hãy chuyển sang tên mô hình được hỗ trợ.
  • Mô-đun tự cấu hình bộ nhớ chat Redis đã được đổi tên để khớp với quy ước đặt tên spring-ai-autoconfigure-*. Cập nhật artifact ID.
  • Chế độ nghiêm ngặt gọi công cụ OpenAI giờ mặc định là false. Trước đây, bất kỳ công cụ nào có tham số tùy chọn đều thất bại với lỗi 400 vì schema được tạo bỏ qua nó khỏi required. Chế độ nghiêm ngặt giờ là tùy chọn, khớp với mặc định của OpenAI API.
  • Builder Media dùng overload data có kiểu thay vì chấp nhận Object.
  • DeepSeekApi đã được sửa lại để khớp với quy ước của các client API khác.
  • Vector store Couchbase giờ dùng client Couchbase do Spring Boot quản lý thay vì tự tạo.

Khả năng mới

Giới hạn gọi công cụ. Vòng lặp agent không bao giờ kết thúc là một chế độ lỗi tốn kém. ToolCallingAdvisor giờ chấp nhận giới hạn có thể cấu hình về số lần gọi công cụ mỗi yêu cầu và ném ToolCallLimitExceededException khi đạt giới hạn. Đường dẫn ngoại lệ trả về một Generation duy nhất để xử lý lỗi nhất quán. Dự phòng phân giải công cụ cũng có thể cấu hình: thất bại nhanh hoặc dự phòng.

Âm thanh OpenAI. OpenAiAudioSpeechModel hỗ trợ streaming âm thanh và phơi bày tùy chọn instructions để điều chỉnh giọng nói và cách truyền tải. Các tùy chọn và phản hồi phiên âm đã được làm phong phú để bao phủ nhiều bề mặt OpenAI API hơn.

Google GenAI. Có hỗ trợ ToolChoice (ép buộc, vô hiệu hóa, hoặc để mô hình quyết định) và tạo hình ảnh qua trừu tượng ImageModel tiêu chuẩn.

Đọc tài liệu. PagePdfDocumentReader chấp nhận phạm vi trang, để bạn có thể nạp một phần của tài liệu lớn. TokenTextSplitter giờ xác thực đối số builder sớm thay vì thất bại sau với lỗi khó hiểu.

Phân giải vùng AWS. Spring AI giờ tuân theo quy tắc phân giải vùng mặc định của AWS SDK và không còn ghi log WARN khó hiểu khi phân giải vùng. Nếu bạn dựa vào cấu hình vùng dựa trên môi trường hoặc hồ sơ cho Bedrock, giờ nó hoạt động như phần còn lại của stack AWS của bạn.

Độ tin cậy: streaming và gọi công cụ nhận phần lớn sự chú ý

Các bản vá streaming bao gồm: OpenAiChatModel gộp các delta gọi công cụ streaming theo chỉ mục, xử lý các chunk tool_calls rỗng, và phân giải mức sử dụng token bằng không trong chế độ streaming. Hủy một luồng không còn làm rò rỉ phản hồi HTTP bên dưới, cho cả chat và phiên âm âm thanh. Vòng lặp streaming của ToolCallingAdvisor không còn làm rơi các thay đổi doBeforeStream, mức sử dụng token được tích lũy qua các lần lặp gọi công cụ, và các quan sát gọi công cụ nhận parent span đúng trong chế độ chặn.

Cũng được sửa: trạng thái có thể thay đổi dùng chung trong builder tùy chọn chat clone() (và của Anthropic), phát hiện tham số ToolContext, vị trí payload chế độ nghiêm ngặt, ánh xạ phương tiện PDF trong OpenAiChatModel, gỡ bỏ Optional trong buildGeneration, metadata reasoningContent khi gọi DeepSeek qua OpenAI API, AnthropicChatOptions.timeout(Duration) bị bỏ qua ngoài việc xây dựng mô hình, tùy chọn prompt OllamaChatModel không kế thừa mô hình đã cấu hình, xác thực mức suy nghĩ Google GenAI, các trường null trong kết quả kiểm duyệt Mistral AI, xử lý đường dẫn URL Microsoft Foundry cho proxy host, và xác thực Azure OpenAI sau proxy kiểm tra TLS.

Advisor tìm kiếm công cụ được giới thiệu trong 2.0.0 giờ được đưa vào BOM — trước đó nó bị thiếu, khiến việc phụ thuộc trở nên bất tiện — với các bản vá cho thứ tự tự cấu hình và trích xuất tham chiếu cho các lệnh gọi công cụ song song.

Vòng lặp agent không bao giờ kết thúc là một chế độ lỗi tốn kém. ToolCallingAdvisor giờ chấp nhận giới hạn có thể cấu hình về số lần gọi công cụ mỗi yêu cầu.
Ban biên tập Manul X