Il team Offensive Security di Swascan ha identificato una vulnerabilità nel framework Instant Developer RD3 < 22.5 r23.
La vulnerabilità interessa tutti gli applicativi sviluppati con il framework RD3 nelle versioni inferiori a quella indicata.
Instant Developer
Instant Developer è una famiglia di piattaforme ad alta produttività per lo sviluppo di applicazioni multicanale e multipiattaforma progettata per risolvere i problemi che affliggono maggiormente i professionisti dello sviluppo software.
Technical summary
L’Offensive Security Team di Swascan ha trovato un importante vulnerabilità su:
Assets | Vulnerability | CVSS | Severity |
Instant Developer RD3 Framework < 22.5 r23 | Arbitrary File Upload | 9.8 | Critical |
Nella seguente sezione vengono riportati i dettagli tecnici su questa vulnerabilità, comprese le evidenze e un proof-of-concept. Questa vulnerabilità può interessare tutti i clienti che utilizzano il software per sviluppare le proprie Webapp.
Dettaglio Vulnerabilità
Framework RD3 – Arbitrary file upload
CWE-434: Unrestricted File Upload
CVSSv3.1 Base Score: 9.8
CVSSv3.1 Base Vector: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
OWASP Top10 2021: A04 – Insecure Design
Descrizione
La vulnerabilità è stata individuata nella libreria “full.js” del framework RD3 di InstantDeveloper.
Ciò può consentire ad un attaccante di effettuare l’upload di file malevoli per l’esecuzione di codice arbitrario o di una shell attraverso la quale potrebbe eseguire comandi arbitrari sul server remoto. A seguito di ciò, l’attaccante potrebbe altresì effettuare ricerca di credenziali, movimenti laterali all’interno dell’infrastruttura, oppure semplicemente creare disservizi (DoS) caricando file di grandi dimensioni.
La vulnerabilità interessa tutti gli applicativi sviluppati con il framework RD3 nelle versioni inferiori alla 22.5 r23.
Assets
- https://<TARGET>/<cartella applicazione>/<file applicazione>.aspx/?WCI=IWFiles&WCE=&SESSIONID=[cookie Sessione]
Proof of Concept
La vulnerabilità è stata individuata analizzando il file full.js dove è presente una porzione di codice relativa che riguarda l’upload di file. Ciò ha permesso di trovare l’entrypoint per creare il comando di upload.
Di seguito viene riportata la porzione di codice sopra citata:
Evidenza 1 Codice sorgente full.js
Si mostra di seguito come sia stato possibile, sfruttando quanto descritto in precedenza, caricare sul server una reverse shell.
Per ottenere tale risultato è stato edeguito il seguente comando
curl -kis -F “Filedata=@<FILE MALEVOLO>.aspx” -H “Cookie: ASP.NET_SessionId=<CODICE SESSIONE>” -A Chrome https://<TARGET>/<cartella applicazione>/<file applicazione>.aspx /?WCI=IWFiles&WCE=&SESSIONID=<CODICE SESSIONE>
Tale processo è descritto dalle seguenti evidenze:
Evidenza 2 Upload reverse shell
Di seguito viene mostrata la shell interattiva sul server:
Evidenza 3 Reverse shell interattiva sul server target
Remediation
Ricompilare l’applicazione con l’ultima versione del framework 22.5 r23.
Riferimenti
- https://cwe.mitre.org/data/definitions/434.html
- https://owasp.org/Top10/it/A04_2021-Insecure_Design/
- https://docs.microsoft.com/it-it/dotnet/standard/security/secure-coding-guidelines
- https://cheatsheetseries.owasp.org/cheatsheets/DotNet_Security_Cheat_Sheet.html
- https://doc.instantdeveloper.com/
Considerazioni del Vendor
Durante il processo di Responsible Disclosure il vendo ha fornito le seguenti considerazioni per meglio specificare alcuni aspetti della vulnerabilità e della conseguente remediation:
1) Per sfruttare la vulnerabilità era necessario conoscere il SessionID di una sessione utente che avesse effettuato il login (utente autenticato). Solo avendo accesso al browser dove era in esecuzione una sessione autenticata era possibile ottenere un SessionID valido.
2) Se il programmatore non ha rimosso l’autenticazione dalla propria applicazione il sistema non permette l’upload di file in sessioni non autenticate (dalla versione 20.5). E’ compito del programmatore verificare le credenziali utente e autorizzare l’accesso all’applicazione solo quando è stato correttamente identificato (tramite username/password).
3) A partire dalla versione 22.0 nella cartella TEMP dell’applicazione è stato inserito un apposito file che non permette l’esecuzione di file arbitrari. Il programmatore, che usa l’ambiente di sviluppo, non deve rimuovere tale file e deve correttamente installarlo nell’applicazione quando questa viene installata in produzione.
4) Quando viene eseguito l’upload di un file da una sessione autenticata è compito del programmatore decidere se tale file è corretto o meno. Lo può fare implementando l’evento OnFileUpload nel quale può decidere se accettare o meno l’upload. Qualora l’upload sia rifiutato dal programmatore il file viene immediatamente rimosso dal disco.
5) Pro Gamma fornisce un ambiente di sviluppo general purpose ed è compito del programmatore sviluppare l’applicazione e configurare il web server quando la stessa è resa disponibile su internet.
- Disclosure Timeline
- 25-07-2022: Vulnerabilità scoperta
- 24-08-2022: Swascan contatta il vendor (1° tentativo, senza risposta)
- 29-08-2022: Swascan richiede il CVE-ID al mitre
- 07-09-2022: Swascan contatta il vendor (2° tentativo, con risposta)
- 15-09-2022: Swascan condivide il report con il vendor
- 23-01-2023: Il vendor rilascia la versione 22.5 r23
- 15-02-2023: Il mitre rilascia il CVE-ID CVE-2022-39983