CVE-2026-61599 in djustthông tin

Tóm tắt

Bởi VulDB • 17/09/2026

djust cung cấp khả năng render phía máy chủ theo kiểu phản hồi tương tự như Phoenix LiveView cho Django với hiệu suất được tăng cường bởi Rust. Trước phiên bản 1.0.7, cơ chế truyền tải live transport của djust giải quyết (resolve) LiveView cần mount bằng cách gọi `__import__(module_path, ...)` dựa trên một đường dẫn dạng dấu chấm do client cung cấp. Module sẽ được import — thực thi mã ở mức cao nhất (các side effect khi import) — trước khi framework kiểm tra xem đối tượng đã giải có phải là lớp con của `LiveView` hay không và trước bất kỳ xác thực nào theo từng view. Danh sách cho phép (`allowlist`) `LIVEVIEW_ALLOWED_MODULES`, vốn lẽ ra nên chứa các module được ủy quyền, hoạt động theo cơ chế "fail-open" (nếu allowed_modules: — sẽ bị bỏ qua khi cài đặt này chưa được thiết lập, đây là mặc định của framework) và sử dụng phương thức khớp chuỗi bắt đầu (`startswith`) lỏng lẻo. Do đó, một client WebSocket không xác thực (vì quy trình handshake WS không yêu cầu xác thực; việc xác thực theo view chỉ diễn ra sau bước import + instantiate) có thể gửi khung `mount` / `live_redirect_mount` / `url_change` (hoặc mount SSE) với giá trị `view = "<bất kỳ module nào có thể import>.TênBấtKỳ"` và khiến máy chủ tiến hành import — cũng như thực thi mã ở mức cao nhất của — bất kỳ module Python nào có thể import được chỉ bằng tên. Phiên bản 1.0.7 khắc phục sự cố này bằng cách sử dụng cổng giải quyết theo cơ chế "fail-closed" (`djust._view_resolution.is_view_import_allowed`): đường dẫn view từ client sẽ chỉ được giải nếu (a) module của nó đã được tải sẵn (`sys.modules` — do đó việc giải không thực thi mã mới; các view định tuyến qua URL, được tải bởi URLconf khi khởi động, vẫn hoạt động mà không cần cấu hình thêm) hoặc (b) nó khớp với `LIVEVIEW_ALLOWED_MODULES` tại ranh giới phân đoạn module (chủ động chọn tham gia cho các view import lười). Cổng kiểm tra này chạy trước lệnh `__import__` tại cả ba điểm sink (+ phòng thủ theo chiều sâu bên trong `_instantiate_view`). Để xử lý tạm thời, hãy đặt `LIVEVIEW_ALLOWED_MODULES` thành danh sách hẹp gồm các module chứa lớp LiveView có thể mount của bạn. (Lưu ý: đối với allowlist trước khi vá, việc khớp chuỗi sử dụng `startswith` và lệnh import vẫn diễn ra trước kiểm tra lớp con, do đó đây chỉ là biện pháp giảm thiểu chứ không phải bản sửa lỗi hoàn chỉnh.)

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

chịu trách nhiệm

GitHub M

Đặt trước

10/07/2026

Tiết lộ

17/09/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

thấp

Nguồn

Do you need the next level of professionalism?

Upgrade your account now!