Vulnerability Report – Instant Developer RD3 (CVE-2022-39983)

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 r23Arbitrary 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: 

Instant Developer 

Evidenza 2 Upload reverse shell 

Di seguito viene mostrata la shell interattiva sul server: 

Instant Developer 

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. 

  1. 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 
SwiftSlicer: Analisi Malware
Report: Q4 e Round-up Ransomware 2022

Pronto intervento Cyber Swascan

Contattaci per un supporto immediato

Il sottoscritto, in qualità di interessato DICHIARA di aver letto e compreso il contenuto della privacy policy ai sensi dell’articolo 13, GDPR. ACCONSENTE al trattamento dei Dati in relazione all’invio da parte del Titolare di comunicazioni afferenti alla gestione di eventuali misure precontrattuali, preordinate alla stipulazione e/o esecuzione del contratto con il Cliente nonché all'adempimento dei relativi obblighi.
Il consenso prestato potrà essere revocato in qualsiasi momento contattando il Titolare ai recapiti presenti nella citata privacy policy.