Một tệp SVG được tạo đặc biệt khi gửi tới công cụ tìm kiếm hình ảnh của Bing có thể thực thi các lệnh dưới quyền NT AUTHORITY\SYSTEM trên các máy chủ xử lý hình ảnh của Microsoft, và quyền root trên các máy chạy Linux trong cùng hệ thống.
Các thử nghiệm của XBOW đã cho kết quả tương tự trên nhiều máy chủ thuộc các dải mạng khác nhau, chứng minh vấn đề nằm ở tầng xử lý hình ảnh của Bing chứ không phải ở một máy đơn lẻ. Microsoft đã phát hành hai mã CVE nghiêm trọng là CVE-2026-32194 và CVE-2026-32191, cả hai đều được đánh giá 9.8 điểm trên thang điểm CVSS.
XBOW, một startup về bảo mật tấn công tự động, đã phát hiện và báo cáo riêng tư các lỗi này. Người dùng Bing không cần áp dụng bản vá hay biện pháp giảm thiểu nào: Microsoft đã khắc phục cả hai lỗi ở phía máy chủ trước khi công bố vào tháng 3, và hồ sơ ghi rõ "không cần hành động từ phía khách hàng để giải quyết".
Khi các thông tin tư vấn được đưa lên vào ngày 19 tháng 3, chưa có ghi nhận nào về việc khai thác hoặc tiết lộ công khai. XBOW đã công bố cơ chế khai thác vào ngày 23 tháng 7, sau khi tạm giữ thông tin theo yêu cầu của Microsoft cho đến khi việc khắc phục hoàn tất.
Điều còn đọng lại sau bản vá là bản chất của lỗ hổng. Ứng dụng tin rằng nó đang xử lý một hình ảnh; nhưng công cụ hỗ trợ bên dưới lại đọc một phần của hình ảnh đó như một câu lệnh.
Nếu hệ thống của bạn chuyển các tệp tải lên hoặc URL được máy chủ lấy về qua ImageMagick hoặc bất kỳ công cụ nào tương thích với ImageMagick, nguy cơ của bạn phụ thuộc vào việc nội dung do kẻ tấn công kiểm soát có thể tiếp cận được đường dẫn đã bật "delegate" (ủy quyền) hay không. Hãy từ chối các delegate, cắt giảm các định dạng được chấp nhận và giữ máy chủ xử lý cách ly khỏi mạng, khi đó tệp SVG tương tự sẽ không thể làm gì được.
Tính năng tìm kiếm hình ảnh đảo ngược của Bing truy xuất một URL hình ảnh từ backend. Bản thân việc này là một lỗi blind SSRF: không có thông tin nào trả về cho máy khách. Điểm mấu chốt nằm ở thông báo lỗi. Một số máy chủ xử lý trả về lỗi 500 cho trình duyệt nhưng vẫn tiếp tục truy xuất và phân tích nội dung lấy được, cho thấy có một thành phần ở hạ nguồn đang thực hiện việc phân tích cú pháp.
SVG chính là câu trả lời. Nó là XML, không phải là các pixel: nó có thể tham chiếu đến các hình ảnh khác, và một trình kết xuất tuân theo các tham chiếu đó sẽ đi tìm và lấy chúng. Bên dưới, các bộ công cụ chuyển đổi sẽ chuyển các định dạng mà chúng không tự xử lý cho một "delegate" – một chương trình bên ngoài được gọi thông qua shell.
Trên đường dẫn mà XBOW đã tiếp cận được, lớp này vẫn được bật, vì vậy một tham chiếu hình ảnh bắt đầu bằng ký tự đường ống (pipe |) sẽ được chuyển đến shell thay vì được đọc dưới dạng tên tệp. Payload là một tệp SVG kích thước 1 pixel, tham chiếu của nó đã thực thi một lệnh trên máy chủ xử lý và gửi kết quả (curl) về một công cụ thu thập do XBOW kiểm soát.
Điều này tạo ra hai con đường dẫn vào cùng một tầng chuyển đổi và hai mã CVE tương ứng:
- CVE-2026-32194: được phân loại là Command Injection theo CWE-77, thông qua tính năng tải ảnh lên công khai "Search by Image", với tệp SVG được gửi dưới dạng base64 trong trường
imageBintới/images/kblob. - CVE-2026-32191: được phân loại là OS Command Injection theo CWE-78, thông qua lộ trình crawler: lưu trữ tệp SVG ở bất kỳ đâu, đưa URL của nó vào tính năng tìm kiếm qua tham số
imgurl, vàbingbot/2.0sẽ lấy nó vào cùng một quy trình xử lý.
Cả hai đều không yêu cầu xác thực, cookie, trạng thái phiên làm việc hay bất kỳ tương tác nào từ người dùng.
Bằng chứng thực nghiệm cho thấy mặc dù frontend trả về lỗi, máy chủ xử lý vẫn thực thi lệnh. Các máy chủ Linux trả về uid=0 và gid=0 (quyền root). Trên Windows, lệnh systeminfo xác định hệ điều hành là Windows Server 2022 Datacenter, whoami /all cho thấy SeImpersonatePrivilege và SeDebugPrivilege đã được bật. Microsoft khẳng định họ chỉ thực hiện các lệnh đọc lành tính và không chạm vào dữ liệu khách hàng.
Vô hiệu hóa các Delegate
Một máy chủ xử lý hình ảnh xử lý các tệp không đáng tin cậy không được phép tiếp cận shell, chạy dưới quyền SYSTEM hoặc có đường truy cập ra internet. Hệ thống của Bing đã vi phạm cả ba điều này.
Hướng dẫn của chính ImageMagick đã nêu rõ rằng chính sách mặc định là mở và chỉ dành cho việc sử dụng trong môi trường sandbox hoặc có tường lửa, không dành cho một trang web công khai. Đối với bất kỳ thứ gì tiếp xúc với hình ảnh không đáng tin cậy, hãy từ chối hoàn toàn các delegate trong policy.xml:
<policy domain="delegate" rights="none" pattern="*" />
Sau đó, thực hiện các bước sau theo thứ tự ưu tiên:
- Cắt giảm các định dạng bạn chấp nhận. SVG, MVG và EPS là những định dạng thường mang theo các tham chiếu và trình thông dịch.
- Kiểm tra
delegates.xmlvà vô hiệu hóa bất kỳ thứ gì không cần thiết. - Chạy quy trình chuyển đổi trong môi trường sandbox và với đặc quyền tối thiểu.
- Chặn kết nối mạng ra ngoài từ máy chủ xử lý.
- Sử dụng allowlist cho các đích đến mà máy chủ có thể truy cập, và ngăn máy chủ tiếp cận các địa chỉ nội bộ.
ImageTragick, lỗ hổng delegate command injection năm 2016 (CVE-2016-3714), là cùng một loại lỗi này. Nó vẫn tiếp tục xuất hiện vì không ai coi bộ chuyển đổi là một phần của bề mặt tấn công. Nico Waisman, CISO của XBOW, nhận định:
"Các ứng dụng coi các công cụ hỗ trợ hình ảnh là đường ống dẫn nước. Kẻ tấn công lại coi chúng là trình phân tích cú pháp."
Việc truy xuất dữ liệu có thể thực hiện được nhưng không trả lại gì, trông giống như một ngõ cụt. Tuy nhiên, thứ biến nó thành một shell với quyền SYSTEM chính là trình phân tích cú pháp đằng sau nó, và sẽ không có gì trong phản hồi cho bạn biết điều đó.