L’esecuzione remota del codice costituisce un vasto spettro di attacchi informatici.

L’uso frequente di vulnerabilità software zero-day concede agli aggressori un accesso privilegiato a dispositivi, reti e applicazioni.
Gli attacchi RCE si distinguono per la loro complessità intricata e la sfida nella individuazione.
Queste vulnerabilità RCE sono comunemente classificate come critiche e richiedono una correzione tempestiva per salvaguardare l’integrità dei sistemi.

Nel corso di questo articolo, ne parliamo approfonditamente.

RCE attacco
  1. Che cosa implica l’RCE?
  2. Le 7 fasi di un attacco RCE
  3. Varianti di vulnerabilità RCE
  4. Considerazioni conclusive sulle vulnerabilità RCE

Che cosa implica l’RCE?

L’RCE, acronimo di esecuzione del codice remoto, delinea un’area critica della sicurezza informatica dove emergono vulnerabilità e il rischio di un potenziale attacco. In questo contesto, un aggressore detiene la capacità di eseguire codice o comandi arbitrari su un sistema o un’applicazione remota, senza  accesso fisico o locale al dispositivo preso di mira.

Le vulnerabilità legate all’RCE di solito sorgono da debolezze o lacune nelle applicazioni software, tra cui server Web, sistemi di gestione dei contenuti o altri servizi connessi alla rete. Gli aggressori sfruttano queste vulnerabilità manipolando i dati di input elaborati dall’applicazione presa di mira. Attraverso modifiche precise all’input, gli aggressori possono indurre l’applicazione a eseguire codici o comandi indesiderati, forniti dall’aggressore.

Dopo aver ottenuto accesso con successo, l’aggressore acquisisce la capacità di eseguire comandi arbitrari sul sistema di destinazione.
Ciò potrebbe comportare esecuzione di software dannoso, modifica o cancellazione di file, accesso a dati sensibili o addirittura la completa acquisizione del controllo sul sistema interessato.

Le 7 fasi di un attacco RCE

Il funzionamento dell’RCE è comunemente basato sull’individuazione e sfruttamento delle vulnerabilità presenti nelle applicazioni software.

  1. Identificazione della vulnerabilità
    Un individuo malintenzionato inizia il processo identificando una debolezza nel sistema o nell’applicazione di destinazione.
    Questo coinvolge spesso l’analisi del codice sorgente, il reverse engineering dell’applicazione o la ricerca di informazioni pubbliche su vulnerabilità note.
  2. Creazione di un payload dannoso
    Una volta individuata la vulnerabilità, l’attaccante crea un payload dannoso progettato per sfruttare la specifica debolezza.
    Questo payload è attentamente sviluppato per attivare l’esecuzione di codice arbitrario.
  3. Consegna del payload
    L’attaccante cerca di consegnare il payload dannoso al sistema di destinazione, utilizzando varie metodologie come richieste di rete elaborate, caricamento di file dannosi o l’inserimento di codice in campi di input vulnerabili, come i moduli web.
  4. Sfruttamento della vulnerabilità
    Se il sistema di destinazione è vulnerabile e elabora correttamente il payload dannoso, la vulnerabilità viene sfruttata.
    Il payload induce l’applicazione a eseguire il codice dell’attaccante anziché il comportamento previsto.
  5. Esecuzione del codice
    In caso di successo nell’esecuzione, il codice dell’attaccante viene attivato sul sistema di destinazione, permettendo operazioni come comandi di sistema, esecuzione di script o l’avvio di una shell remota per ottenere il controllo interattivo.
  6. Ottenimento di accesso non autorizzato
    Dopo l’esecuzione del codice, l’attaccante può procedere a ottenere accesso non autorizzato al sistema.
    Ciò potrebbe comportare l’aumento dei privilegi, il bypass dei meccanismi di sicurezza o l’utilizzo di ulteriori vulnerabilità per mantenere un controllo persistente.
  7. Attività post-sfruttamento
    Una volta ottenuto l’accesso, l’attaccante può svolgere diverse attività dannose in base agli obiettivi stabiliti, come il furto di dati sensibili, la manipolazione di file, l’installazione di backdoor o la compromissione di altri sistemi.

Varianti di vulnerabilità RCE

Vulnerabilità delle applicazioni web

  • Iniezione di comandi
    Questo tipo di vulnerabilità si verifica quando un’applicazione consente l’inclusione diretta di input non attendibile nei comandi di sistema.
    Se la validazione dell’input è carente, un utente malintenzionato può inserire comandi dannosi, portando all’esecuzione di codice arbitrario e compromettendo il sistema.
  • SQL Injection
    Si manifesta quando un’applicazione non convalida correttamente l’input utente nelle query del database. Ciò consente agli aggressori di inserire istruzioni SQL dannose, con il potenziale di modificare o estrarre dati e, in alcuni casi, di eseguire codice arbitrario sul server.
  • Script tra siti (XSS)
    Sebbene originariamente nota come vulnerabilità lato client, in determinate circostanze XSS può evolvere in RCE. L’assenza di una corretta disinfezione dei dati utente riflessi su altri utenti consente agli attaccanti di iniettare script dannosi, con il rischio di esecuzione su altri browser, potenzialmente portando a RCE.
  • Inclusione file
    Questa vulnerabilità si presenta quando un’applicazione consente l’inclusione di file esterni senza una valida convalida.
    Gli attaccanti possono iniettare codice dannoso o includere file arbitrari da posizioni remote, causando l’esecuzione di codice non autorizzato o la divulgazione di informazioni sensibili.

Vulnerabilità basate sulla rete

Oltre alle vulnerabilità delle applicazioni web, esistono minacce basate sulla rete che possono interessare vari sistemi connessi:

  • Buffer Overflow
    Questa vulnerabilità si manifesta quando un’applicazione o un servizio non valida correttamente la dimensione dell’input, permettendo agli aggressori di sovrascrivere posizioni di memoria ed eseguire codice dannoso.
  • Vulnerabilità del Server Message Block (SMB)
    Utilizzate per la condivisione di file in reti Windows, queste vulnerabilità possono portare a RCE.
    Un esempio noto è EternalBlue, che sfrutta un difetto in SMBv1 per l’esecuzione remota di codice.
  • Vulnerabilità del protocollo RDP (Remote Desktop Protocol)
    Consentono agli aggressori di ottenere accesso non autorizzato a sistemi remoti ed eseguire codice arbitrario, come nel caso della vulnerabilità BlueKeep.
  • Vulnerabilità del protocollo di rete
    Anche protocolli come DNS, DHCP o SNMP possono contenere vulnerabilità RCE, sfruttabili attraverso pacchetti o richieste predisposti.
  • Vulnerabilità della rete Wireless
    Alcune implementazioni di reti wireless possono presentare vulnerabilità RCE, come nel caso del Key Reinstallation Attack (KRACK) nel protocollo WPA2.

Vulnerabilità del sistema operativo

I sistemi operativi possono presentare diverse vulnerabilità RCE, tra cui:

  • Vulnerabilità del kernel
    Derivate da errori di memoria, convalida dell’input inadeguata o gestione impropria delle chiamate di sistema, queste vulnerabilità consentono agli aggressori di eseguire codice con privilegi elevati.
  • Vulnerabilità del servizio
    Servizi in background, come quelli di rete o di amministrazione remota, possono essere sfruttati per eseguire codice arbitrario.
  • Vulnerabilità dell’escalation dei privilegi
    Consentono a un utente malintenzionato di elevare i propri privilegi, assumendo il controllo del sistema operativo o compromettendo altre applicazioni o utenti.
  • Vulnerabilità del driver
    I driver di dispositivo possono presentare vulnerabilità che consentono l’esecuzione di codice arbitrario nello spazio del kernel.
  • Vulnerabilità della virtualizzazione
    In ambienti virtualizzati, come negli hypervisor, le vulnerabilità possono permettere agli aggressori di eseguire codice sul sistema host sottostante.

Considerazioni conclusive sulle vulnerabilità RCE

Il panorama degli attacchi che sfruttano le vulnerabilità RCE è stato caratterizzato da una serie di episodi che hanno sottolineato l’importanza di un approccio multilivello per individuare e prevenire tali minacce.
Ogni caso ha contribuito a definire strategie e best practice fondamentali nella gestione della sicurezza informatica.
Tra gli esempi salienti:

  • Shellshock (CVE-2014-6271)
    Questa vulnerabilità critica, sfruttando una falla nella shell Bash su sistemi Unix, ha aperto la strada all’esecuzione remota di codice attraverso l’inserimento di comandi dannosi. La sua diffusione ha evidenziato la necessità di affrontare le vulnerabilità a livello di sistema operativo e software di base.
  • Apache Struts (violazione Equifax – CVE-2017-5638)
    La violazione dei dati presso Equifax è stata orchestrata attraverso una vulnerabilità RCE in Apache Struts.
    Questo incidente ha messo in risalto l’essenzialità della sicurezza delle applicazioni web e l’impatto significativo che lo sfruttamento di vulnerabilità può avere sulla privacy e sulla sicurezza dei dati.
  • Drupalgeddon (CVE-2018-7600)
    Una vulnerabilità RCE nel core di Drupal, nota come Drupalgeddon, ha permesso agli aggressori di eseguire codice arbitrario. Tale episodio ha enfatizzato l’importanza di una gestione solida delle vulnerabilità nelle piattaforme CMS ampiamente utilizzate.
  • Microsoft Exchange Server
    (ProxyLogon – CVE-2021-26855, CVE-2021-26857, CVE-2021-26858, CVE-2021-27065)
    Le vulnerabilità ProxyLogon hanno evidenziato i rischi associati ai sistemi di posta elettronica critici. Gli attacchi a Microsoft Exchange Server hanno causato violazioni dei dati su vasta scala, sottolineando la necessità di patch regolari e della protezione delle infrastrutture critiche.

Prevenzione e mitigazione RCE

Per difendersi dalle minacce di esecuzione di codice remoto (RCE), è essenziale adottare un approccio di sicurezza multistrato che combini la scansione delle vulnerabilità, l’aggiornamento e la patch dei software, la validazione e sanificazione degli input, il monitoraggio della rete e la gestione degli accessi.
La scansione delle vulnerabilità, sia statica che dinamica, consente di identificare e correggere le vulnerabilità RCE prima che possano essere sfruttate. Aggiornamenti e patch tempestivi riducono il rischio di exploit delle vulnerabilità note in applicazioni e librerie di terze parti.

La validazione rigorosa degli input, insieme alla sanificazione, impedisce l’exploit di vulnerabilità RCE derivanti da input malevoli, proteggendo contro attacchi di iniezione e deserializzazione.

Il monitoraggio del traffico di rete e l’ispezione del traffico in entrata tramite soluzioni di sicurezza di rete, come firewall per applicazioni web e sistemi di rilevamento delle intrusioni, aiutano a rilevare e bloccare i tentativi di exploit RCE. Inoltre, l’implementazione di politiche di accesso controllato, segmentazione della rete e strategie di sicurezza basate sul principio del minor privilegio e della fiducia zero limita la capacità degli attaccanti di muoversi all’interno della rete e di sfruttare l’accesso iniziale ai sistemi aziendali.

Infine, pentest e altre forme di testing della vulnerabilità sono strumenti essenziali per identificare e mitigare le vulnerabilità prima che possano essere sfruttate, rappresentando un investimento minore rispetto al costo potenziale di una grave violazione dei dati. Adottando queste pratiche, le organizzazioni possono migliorare significativamente la loro resilienza contro gli attacchi RCE, proteggendo i loro sistemi e dati critici.