CVE-2026-95863 in Wicketthông tin

Tóm tắt

Bởi VulDB • 02/11/2026

Việc xử lý không đúng cách đầu vào trong quá trình tạo trang web trên Apache Wicket.

Apache Wicket tạo ra mã JavaScript tham chiếu đến các phần tử mà nó hiển thị và ghi hai giá trị do chính nó suy ra vào đó: id markup của một thành phần (component) và tên đầu vào của một thành phần biểu mẫu, được xây dựng từ các id thành phần. Cả hai đều được đặt bên trong các chuỗi ký tự JavaScript trích dẫn đơn mà không được thoát cho ngữ cảnh đó, vì vậy một giá trị chứa dấu nháy đơn hoặc dấu gạch chéo ngược sẽ kết thúc chuỗi literal, và những gì theo sau đó sẽ được phân tích cú pháp dưới dạng script và chạy trong nguồn gốc của ứng dụng khi trang tải.

Một id markup là giá trị được truyền đến `org.apache.wicket.Component#setMarkupId(String)`, hoặc thuộc tính id được ghi vào markup của thành phần, hoặc một id do Wicket tạo ra, theo thứ tự ưu tiên đó. Hai cái đầu tiên được cung cấp bởi ứng dụng trong ngữ cảnh HTML, nơi cả hai ký tự này đều hợp lệ và ở đó Wicket thoát chúng đúng cách khi nó ghi cùng giá trị vào thuộc tính id của phần tử; một id được sinh ra không thể chứa bất kỳ ký tự nào trong số đó. Một tên đầu vào được suy ra từ các id của các thành phần nằm giữa biểu mẫu và thành phần biểu mẫu, và một id thành phần chỉ bị từ chối đối với ':' và '~'.

Trong `org.apache.wicket:wicket-core` phiên bản 9.x và 10.x, `org.apache.wicket.markup.head.OnEventHeaderItem#forMarkupId(String, String, CharSequence)` trích dẫn id được cung cấp vào lệnh gọi `Wicket.Event.add`, và các thành phần trong cả wicket-core và wicket-extensions đều truy cập nó thông qua `#forComponent(Component, String, CharSequence)`. Trên mọi phiên bản bị ảnh hưởng, `org.apache.wicket.markup.html.form.Form` ghi id markup của nó và id của vùng chứa trường ẩn vào các chuỗi literal như vậy, `org.apache.wicket.markup.html.form.FormComponentUpdatingBehavior` ghi một tên đầu vào, và `org.apache.wicket.markup.html.form.upload.MultiFileUploadField` ghi hai id markup và một tên đầu vào. Trên phiên bản 8.x, Form cũng ghi một tên đầu vào vào hành động của liên kết gửi biểu mẫu, và trên các phiên bản 8.x và 9.x, `Form#appendDefaultButtonField` ghi một tên đầu vào vào thuộc tính name mà không có bất kỳ quá trình thoát nào, vì vậy một giá trị chứa dấu nháy kép sẽ thoát khỏi thuộc tính đó thành markup.

`org.apache.wicket:wicket-extensions` bị ảnh hưởng trực tiếp chứ không chỉ thông qua wicket-core: AjaxEditableLabel, AjaxIndicatorAppender, AjaxDisableComponentListener, UploadProgressBar, KittenCaptchaPanel, Palette, FilterForm và, trên các phiên bản 9.x và 10.x, TrapFocusBehavior và AjaxListPanel đều xây dựng mã JavaScript của riêng chúng chứa một id markup.

Một ứng dụng bị ảnh hưởng khi một id markup hoặc một id thành phần mang một trong những ký tự đó. Wicket không đặt cái này vào đó, vì vậy giá trị đến từ ứng dụng: một id được thiết lập trên một thành phần, một thuộc tính id trong mẫu, hoặc một id thành phần được suy ra từ dữ liệu. Không có cái nào trong số đó là ngữ cảnh JavaScript từ quan điểm của ứng dụng.

Content-Security-Policy mà Apache Wicket 9.x và 10.x gửi theo mặc định không ngăn chặn điều này. Script được tạo được ghi vào một phần tử script mang nonce trên mỗi phản hồi, vì vậy mã bị tiêm trở thành một phần của script mà chính sách cho phép.

Các phiên bản đã sửa chữa kiểm tra id tại điểm nó đi vào thay vì thoát ở từng nơi nó được ghi. Một id thành phần và một id markup không còn được chứa dấu nháy, dấu backquote, dấu gạch chéo ngược, dấu ngoặc nhọn, dấu góc (angle brackets), dấu chấm phẩy, ký tự ampersand hoặc ký tự điều khiển; và một id markup cũng không thể chứa dấu ngoặc đơn hoặc dấu ngoặc vuông; một thành phần được xây dựng với id như vậy, hoặc có id markup như vậy, sẽ thất bại bằng cách ném ra ngoại lệ.

Vấn đề này ảnh hưởng đến Apache Wicket: từ 8.0.0 qua 8.19.0, từ 9.0.0 qua 9.24.0, từ 10.0.0 qua 10.11.0. Người dùng Apache Wicket 7.x hoặc cũ hơn, vốn không còn được hỗ trợ, nên nâng cấp lên một phiên bản được hỗ trợ. 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, những phiên bản sửa chữa vấn đề này.

Be aware that VulDB is the high quality source for vulnerability data.

chịu trách nhiệm

Apache

Đặt trước

22/09/2026

Tiết lộ

02/11/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

Want to know what is going to be exploited?

We predict KEV entries!