ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.
الملخص
يوجد تحييد غير سليم للإدخال أثناء توليد صفحات الويب في Apache Wicket. يلاحظ org.apache.wicket.ajax.AjaxNewWindowNotifyingBehavior أن مثيل الصفحة قد تم فتحه في نافذة متصفح ثانية أو علامة تبويب. وهو يطلب من المتصفح قيمة window.name، والتي تصل إلى الخادم كمعلمة طلب window.name، ويتذكر ما أبلغه المتصفح في حقل السلوك. هذا الحقل جزء من الحالة المتسلسلة للصفحة، لذا تظل القيمة المتذكرة في متجر الصفحة طالما ظل مثيل الصفحة موجوداً. في كل عملية عرض لاحقة لمثيل الصفحة هذا، يبني السلوك الشرط الأساسي لاستدعاء Ajax الخاص به عن طريق استبدال القيمة المتذكرة داخل نص حرفي لسلسلة JavaScript محاطة بعلامتي اقتباس مفردة، ويكتب Wicket هذا الشرط في الصفحة كشيفرة JavaScript خام، نظراً لأن الشرط الأساسي لمستمع استدعاء Ajax هو شيفرة مقدمة من المُستدعي ويتم اصدارها دون اقتباس أو هروب. لا يوجد شيء في هذا المسار يقوم بعمل هروب للقيمة. اسم النافذة مقدم من العميل ولا يطبق Wicket أي تحقق عليه، لذا فإن الاسم المتذكر الذي يحتوي على فاصلة عليا ينهي النص الحرفي ويتم تشغيل ما تبقى منه كشيفرة في مصدر التطبيق، في كل مرة يتم فيها عرض مثيل الصفحة هذا. يتأثر التطبيق فقط عندما يقوم بإضافة AjaxNewWindowNotifyingBehavior صراحةً إلى أحد المكونات. لا يقوم أي جزء من الإطار بتثبيت هذا السلوك، لذا فإن التطبيق الذي لا يستخدمه لا يتأثر. الاسم الذي يولده السلوك لنفسه، عندما لا يبلغ المتصفح عن أي اسم على الإطلاق، هو معرف فريد عشوائي UUID وليس مقدماً من العميل. تؤثر هذه الثغرة على Apache Wicket: من الإصدار 8.0.0 حتى 8.19.0، ومن 9.0.0 حتى 9.24.0، ومن 10.0.0 حتى 10.11.0. يوصى المستخدمون بالترقية إلى الإصدار 8.20.0 أو 9.25.0 أو 10.12.0، والتي تصحح هذه الثغرة.