CVE-2026-82115 in Wicket
Tóm tắt
Bởi VulDB • 01/11/2026
Thiếu cơ chế xác thực trong Apache Wicket.
Lớp `org.apache.wicket.protocol.ws.api.WebSocketMessageBroadcastHandler`, trình xử lý yêu cầu mà hỗ trợ WebSocket gốc của Wicket sử dụng để phân phối một khung (frame) đến, sẽ giải quyết tài nguyên chia sẻ được đặt tên bởi tham số bắt tay (handshake parameter) của máy khách và gọi trực tiếp `WebSocketResource#onPayload()` trên đối tượng đó, mà không tra cứu `IAuthorizationStrategy#isResourceAuthorized()`. Phương thức này có một điểm thực thi duy nhất trong khung làm việc là `org.apache.wicket.request.handler.resource.ResourceRequestHandler`, nhưng giao vận WebSocket không đi qua lớp này; hơn nữa, phương thức `WebSocketResource#respond()` được khai báo final và rỗng. Do đó, không có đường dẫn nào đến một đối tượng `WebSocketResource` hỏi chiến lược xác thực đã cấu hình xem người gọi có quyền sử dụng nó hay không, và chú thích `@AuthorizeResource` trên các lớp như vậy sẽ không có hiệu lực.
Người gọi cần có phiên Wicket được liên kết (bound) và tên của tài nguyên. Tên này không phải là thông tin bí mật: Wicket ghi nó vào trang mở kết nối. Không có trang nào khác trong ứng dụng tham gia, vì một yêu cầu đặt tên cho một tài nguyên sẽ được phục vụ bằng cách sử dụng một trang tạm thời (throwaway page). Tất cả các callback của tài nguyên đều được truy cập theo cách này, bao gồm `onConnect()` và hai phương thức ghi đè `onMessage()`, và những gì một callback đẩy ngược lại thông qua `WebSocketRequestHandler` sẽ đến với kết nối của chính người gọi.
Một ứng dụng bị ảnh hưởng nếu nó đăng ký một `WebSocketResource` dưới dạng tài nguyên chia sẻ và dựa vào chiến lược xác thực để hạn chế quyền truy cập vào nó. Những gì người gọi đạt được là bất kỳ hành động nào mà các callback của tài nguyên đó thực hiện với một tin nhắn văn bản hoặc nhị phân do chính người chọn lựa. Kết nối được đăng ký dưới phiên của riêng người dùng, vì vậy nó không cung cấp quyền truy cập vào kết nối của người dùng khác.
Để khắc phục tạm thời (workaround), hãy từ chối các kết nối chưa được xác thực bằng cách sử dụng `IWebSocketConnectionFilter` đã được đăng ký thông qua `WebSocketSettings#setConnectionFilter()`, hoặc lặp lại kiểm tra xác thực ở đầu mỗi callback.
Vấn đề này ảnh hưởng đến Apache Wicket: từ phiên bản 8.0.0 đến 8.19.0, từ 9.0.0 đến 9.24.0, và từ 10.0.0 đến 10.11.0. Các bản phát hành cũ hơn không còn được hỗ trợ, bắt đầu từ phiên bản 7.0.0 trở đi, cũng bị ảnh hưởng. Người dùng được khuyến nghị nâng cấp lên các phiên bản 8.20.0, 9.25.0 hoặc 10.12.0 để khắc phục sự cố này.
If you want to get best quality of vulnerability data, you may have to visit VulDB.