Dự án InvenTree: lỗ hổng cross-site scripting lưu trữ trong ghi chú Markdown của InvenTree

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-2024-47610 là gì?

Lỗ hổng CVE-2024-47610 là lỗ hổng Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') ảnh hưởng tới InvenTree (phiên bản bị ảnh hưởng: < 0.16.5). Lỗ hổng này được xếp hạng ở mức Cao, với điểm CVSS 7.3. Các nguồn hiện có chưa ghi nhận lỗ hổng này bị khai thác.

Giới thiệu chung

Dữ liệu gốc

InvenTree là một hệ thống quản lý hàng tồn kho mã nguồn mở. Trong các phiên bản InvenTree bị ảnh hưởng, người dùng đã đăng ký có thể lưu javascript trong các trường ghi chú markdown; các ghi chú này sau đó được hiển thị cho những người dùng đã đăng nhập khác truy cập cùng một trang và được thực thi. Lỗ hổng đã được xử lý như sau: 1. HTML sanitization đã được bật trong thư viện render markdown ở frontend - easymde. 2. Markdown được lưu cũng được validation ở backend để bảo đảm markdown độc hại không được lưu trong cơ sở dữ liệu. Các thay đổi này có trong các bản phát hành 0.16.5 và các bản sau đó. Tất cả người dùng được khuyến nghị nâng cấp. Không có workaround; cần cập nhật để nhận các hàm validation mới.

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

Dự án InvenTree đánh dấu InvenTree ở các phiên bản < 0.16.5 là bị ảnh hưởng. Nguồn advisory của nhà cung cấp liệt kê 0.16.5 và 0.17.0 là các phiên bản đã được vá. Trạng thái của các nhánh phát hành khác hoặc các phiên bản song song không được các nguồn này xác nhận, vì vậy không nên tự động suy luận rằng mọi phiên bản lớn hơn đều an toàn.

Chi tiết kỹ thuật

Dự án InvenTree cho phép người dùng đã đăng ký lưu JavaScript trong các trường ghi chú Markdown. Khi ghi chú đó được hiển thị trên cùng một trang, script được lưu có thể thực thi trong trình duyệt của những người dùng khác đã đăng nhập. Lỗi nằm ở việc nội dung Markdown không được trung hòa đầy đủ trong thư viện render phía frontend và không được kiểm tra đầy đủ ở backend trước khi lưu vào cơ sở dữ liệu. Bản vá bật HTML sanitization trong easymde và bổ sung kiểm tra Markdown ở backend để ngăn nội dung nguy hiểm được lưu. Theo các thuộc tính tấn công trong bản ghi, đường tấn công qua mạng, yêu cầu tài khoản người dùng đã đăng ký, độ phức tạp thấp và cần người dùng đã đăng nhập truy cập trang bị ảnh hưởng. Các chi tiết công khai không xác định cụ thể mọi endpoint hoặc dạng payload Markdown được sử dụng.

Khả năng khai thác

Lỗ hổng có thể bị khai thác từ xa qua giao diện hoặc endpoint có thể truy cập qua mạng. Kẻ tấn công cần có quyền của một người dùng đã đăng ký để lưu nội dung Markdown độc hại, sau đó cần một người dùng đã đăng nhập khác truy cập trang chứa ghi chú. Bản ghi mô tả độ phức tạp khai thác là thấp và yêu cầu tương tác của người dùng. Bản ghi không ghi nhận public exploit; trạng thái này không chứng minh rằng chưa từng có khai thác thực tế.

Tác động kỹ thuật

Stored XSS chạy trong trình duyệt của người dùng đã đăng nhập khi họ truy cập trang chứa ghi chú bị ảnh hưởng. Hậu quả thực tế phụ thuộc vào quyền của nạn nhân, nhưng có thể bao gồm đọc dữ liệu mà nạn nhân được phép xem, thay đổi dữ liệu hoặc thực hiện các thao tác trong phạm vi quyền của nạn nhân. Các thuộc tính trong bản ghi cho thấy tác động tiềm tàng đến tính bảo mật và toàn vẹn là cao, trong khi tính sẵn sàng của dịch vụ không bị đánh giá là tác động trực tiếp. Lỗi yêu cầu người dùng tương tác bằng cách mở trang, nên không phải mọi tài khoản đều bị tác động chỉ vì máy chủ đang chạy phiên bản lỗi.

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

Lỗ hổng tạo rủi ro cho các phiên làm việc của người dùng InvenTree khác với người đã lưu ghi chú độc hại. Script chạy trong trình duyệt của nạn nhân có thể đọc hoặc thay đổi dữ liệu mà tài khoản đó được phép truy cập và có thể thực hiện thao tác thông qua quyền của người dùng, tùy thuộc vào cơ chế bảo vệ của ứng dụng. Điều này có thể ảnh hưởng đến tính bảo mật và toàn vẹn của dữ liệu quản lý hàng tồn kho và các thao tác nghiệp vụ liên quan. Bản ghi không xác nhận một vụ xâm nhập, nạn nhân cụ thể hoặc dữ liệu cụ thể đã bị truy cập.

Cách khắc phục

  1. Nâng cấp InvenTree lên phiên bản đã được nhà cung cấp liệt kê là đã vá: 0.16.5 hoặc 0.17.0, tùy nhánh triển khai.
  2. Nếu đang chạy một nhánh khác ngoài các phiên bản được nêu trên, xác minh trạng thái của đúng nhánh đó với nhà cung cấp trước khi kết luận rằng hệ thống không bị ảnh hưởng.
  3. Không có workaround được nhà cung cấp công bố; bản cập nhật là cần thiết để nhận các hàm validation mới ở frontend và backend.
  4. Sau khi nâng cấp, rà soát các ghi chú Markdown đã tồn tại và đánh giá nhu cầu làm sạch hoặc thay thế nội dung đáng ngờ. Advisory không xác nhận rằng quá trình nâng cấp tự động xóa nội dung độc hại đã được lưu trước đó.
  5. Kiểm tra lại rằng HTML sanitization của easymde và validation Markdown ở backend đã được triển khai trong môi trường thực tế.

Cách phát hiện

  1. Kiểm kê các máy chủ InvenTree đang chạy và xác định phiên bản triển khai thực tế.
  2. Xác định các triển khai thuộc phạm vi phiên bản < 0.16.5 và ưu tiên xử lý ngay. Khi thực hiện kiểm tra tự động, không đưa khoảng trắng giữa dấu backtick và toán tử phiên bản vào giá trị so sánh.
  3. Rà soát các trường ghi chú Markdown và nội dung được lưu từ trước để tìm dữ liệu bất thường có dấu hiệu chứa script hoặc HTML không mong muốn. Đây là biện pháp rà soát phòng ngừa, không phải IOC được nhà cung cấp xác nhận.
  4. Kiểm tra log ứng dụng và nhật ký truy cập để xác định hoạt động chỉnh sửa ghi chú bất thường hoặc các phiên người dùng truy cập các trang chứa ghi chú đáng ngờ. Nguồn công khai không nêu tên sự kiện log hoặc IOC cụ thể.
  5. Không xem việc không tìm thấy nội dung đáng ngờ hoặc log bất thường là bằng chứng hệ thống an toàn.
Nguồn (17)
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