XSS cùng nguồn trong bản xem trước cổng terminal của Open WebUI cho phép chiếm quyền tài khoản

Lưu ý: Dữ liệu này chỉ có tính chất tham khảo, phục vụ nghiên cứu an ninh mạng.CyStack khuyến nghị người dùng không sử dụng các thông tin này nhằm các mục đích bất hợp pháp

Lỗ hổng CVE-2026-87995 là gì?

Lỗ hổng CVE-2026-87995 là lỗ hổng thuộc các loại Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') và Improper Restriction of Rendered UI Layers or Frames, ảnh hưởng tới open-webui (phiên bản bị ảnh hưởng: >= 0.8.11, < 0.11.1). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 8.7. Hiện chưa đủ dữ liệu để xác định lỗ hổng này đã bị khai thác hay chưa.

Giới thiệu chung

Dữ liệu gốc

Open WebUI là một nền tảng AI tự lưu trữ có khả năng mở rộng, nhiều tính năng và thân thiện với người dùng. Trong khoảng từ 0.8.11 đến trước 0.11.1, src/lib/components/chat/FileNav/PortPreview.svelte đã hiển thị nội dung cổng terminal trong một iframe sandbox chứa cả allow-scripts và allow-same-origin. Vì terminal proxy phục vụ nội dung đó từ origin của Open WebUI, một người dùng đã xác thực có quyền truy cập vào terminal server dùng chung có thể lưu trữ script trên một cổng được xem trước và chiếm quyền tài khoản của nạn nhân khi nạn nhân mở bản xem trước. Lỗi này đã được sửa trong phiên bản 0.11.1.

Sản phẩm và phạm vi ảnh hưởng

  • open-webui của Open WebUI bị ảnh hưởng trong khoảng >= 0.8.11, < 0.11.1, tương đương cách advisory của nhà cung cấp ghi là >= 0.8.11, <= 0.11.0.
  • Bản sửa được xác nhận là 0.11.1. Không nên suy ra trạng thái của các nhánh song song hoặc bản phát hành khác nếu không có bằng chứng riêng.
  • Các triển khai không cấu hình terminal server không bị ảnh hưởng theo advisory.
  • Terminal cá nhân trỏ tới URL bên ngoài không bị ảnh hưởng vì tài liệu được xem trước nằm ngoài origin của ứng dụng.
  • Một triển khai đã cấu hình Content-Security-Policy hạn chế thông qua TERMINAL_PROXY_HEADERS hoặc CONTENT_SECURITY_POLICY được advisory xác định là không bị phơi nhiễm.

Chi tiết kỹ thuật

Lỗi nằm trong thành phần src/lib/components/chat/FileNav/PortPreview.svelte, nơi nội dung từ cổng terminal được hiển thị trong iframe có sandbox chứa đồng thời allow-scriptsallow-same-origin. Terminal proxy phục vụ nội dung này từ cùng origin với Open WebUI, nên các quyền sandbox nói trên làm mất ranh giới cách ly giữa trang xem trước và ứng dụng. Người dùng đã xác thực, có quyền truy cập một terminal server dùng chung và có thể chạy tiến trình lắng nghe trên một cổng có thể cung cấp nội dung script do họ kiểm soát. Khi nạn nhân mở danh sách cổng và chọn cổng đó, script trong trang xem trước có thể chạy trong origin của ứng dụng và đọc session token của nạn nhân từ bộ nhớ cục bộ của trình duyệt. Điều kiện tiếp cận cụ thể gồm terminal server dùng chung mà cả kẻ tấn công và nạn nhân đều truy cập được; các terminal cá nhân trỏ tới URL bên ngoài không bị ảnh hưởng. Bản ghi công khai không mô tả thêm các giới hạn của token hoặc cơ chế xác thực ngoài những điều kiện trên.

Khả năng khai thác

Lỗ hổng có thể bị khai thác qua mạng trong Open WebUI. Kẻ tấn công cần một tài khoản đã xác thực với quyền thông thường, quyền truy cập vào terminal connection dùng chung và khả năng cung cấp nội dung trên một cổng được xem trước; không cần quyền quản trị. Nạn nhân phải tương tác bằng cách mở danh sách cổng và chọn cổng do kẻ tấn công cung cấp. Độ phức tạp được đánh giá là thấp, nhưng khai thác yêu cầu tương tác của người dùng. Bản ghi được cung cấp và advisory của nhà cung cấp không xác nhận trạng thái khai thác trong thực tế hoặc sự tồn tại của exploit công khai.

Tác động kỹ thuật

Trang được xem trước có thể chạy trong origin của Open WebUI thay vì một origin không trong suốt bị cô lập. Theo advisory, script trong trang đó có thể đọc session token của nạn nhân, dẫn tới chiếm toàn bộ tài khoản nạn nhân. Phạm vi ảnh hưởng thay đổi từ thành phần preview sang tài khoản và các quyền mà tài khoản đó sở hữu; tài khoản quản trị viên hoặc tài khoản có workspace.functions có thể chịu hậu quả lớn hơn, gồm khả năng thực thi mã phía máy chủ thông qua Functions. Khai thác vẫn bị giới hạn bởi yêu cầu tài khoản tấn công đã xác thực, quyền truy cập terminal dùng chung và việc nạn nhân mở đúng port preview. Các triển khai không có terminal server được cấu hình và các terminal cá nhân dùng URL bên ngoài nằm ngoài điều kiện ảnh hưởng được mô tả.

Tác động đến tổ chức

Khai thác thành công có thể làm lộ session token và cho phép chiếm quyền tài khoản Open WebUI của nạn nhân. Kẻ tấn công sau đó có thể thực hiện các thao tác với quyền của tài khoản bị chiếm, gây mất tính bảo mật và toàn vẹn dữ liệu trong phạm vi tài khoản đó. Nếu tài khoản bị chiếm là quản trị viên hoặc có quyền workspace.functions, advisory cho biết tác động có thể mở rộng tới thực thi mã phía máy chủ thông qua Functions. Tác động được mô tả là chiếm quyền và truy cập dữ liệu, không phải làm gián đoạn tính sẵn sàng của dịch vụ.

Cách khắc phục

  1. Nâng cấp Open WebUI lên 0.11.1, là bản phát hành được advisory xác nhận đã sửa lỗi. Advisory cho biết chỉ cần nâng cấp và không yêu cầu thay đổi cấu hình để áp dụng bản sửa.
  2. Nếu chưa thể nâng cấp, ưu tiên hạn chế hoặc tạm dừng các terminal server dùng chung mà cả người dùng không tin cậy và nạn nhân có thể truy cập. Đây là biện pháp giảm phơi nhiễm theo điều kiện khai thác, không phải bản sửa được nhà cung cấp xác nhận.
  3. Xem xét áp dụng Content-Security-Policy hạn chế cho phản hồi terminal proxy thông qua cơ chế cấu hình được triển khai, gồm TERMINAL_PROXY_HEADERS hoặc CONTENT_SECURITY_POLICY. Advisory xác định CSP phù hợp có thể ngăn điều kiện phơi nhiễm, nhưng không cung cấp một cấu hình mitigation hoàn chỉnh, vì vậy không nên coi đây là thay thế cho việc nâng cấp.
  4. Sau khi nâng cấp, xác minh lại phiên bản đang chạy, cấu hình terminal dùng chung và hành vi của port preview trong môi trường kiểm thử trước khi mở lại cho người dùng.

Cách phát hiện

  1. Kiểm kê các triển khai Open WebUI và xác định những triển khai nằm trong nhánh bị ảnh hưởng theo affected_summary.
  2. Kiểm tra xem quản trị viên có cấu hình terminal server dùng chung hay không, đặc biệt là các terminal connection mà nhiều người dùng có thể truy cập.
  3. Xác định terminal proxy có phục vụ nội dung dưới origin của Open WebUI và kiểm tra các thiết lập TERMINAL_PROXY_HEADERS hoặc CONTENT_SECURITY_POLICY có áp dụng Content-Security-Policy hạn chế cho phản hồi được proxy hay không.
  4. Kiểm tra quyền truy cập của người dùng vào terminal connection và khả năng khởi chạy tiến trình lắng nghe trên cổng được hiển thị trong port preview.
  5. Rà soát hoạt động đăng nhập, thay đổi tài khoản và sử dụng quyền quản trị sau các lần người dùng mở port preview. Đây là biện pháp giám sát phòng ngừa, không phải IOC cụ thể; advisory không cung cấp log signature hoặc IOC chuyên biệt, và không có log liên quan không chứng minh triển khai an toàn.
Nguồn (9)
Tìm hiểu thêm

Kiểm tra chuyên sâu cùng giải pháp quản lý rủi ro Web toàn diện

Giải pháp CyStack VulnScan liên tục phát hiện tài sản, xác minh lỗ hổng và giúp đội ngũ bảo mật ưu tiên khắc phục cho toàn bộ doanh nghiệp.

Khám phá CyStack VulnScan