UPGRD

Tutte le ultime notizie tech e non

sicurezza

Le Insidie delle Linee di Comando: Perché Sono un Rischio per la Sicurezza

By ,

Le Insidie delle Linee di Comando

Le linee di comando possono sembrare strane, specialmente su Windows, ma la verità è che la maggior parte dei sistemi operativi ha implementato questo metodo in modi che possono generare problemi di sicurezza. Questo articolo esplorerà, sezione per sezione, le problematiche legate a questa convenzione ampiamente adottata, in cui il primo argomento di una linea di comando di un processo è riservato per rappresentare il nome del processo.

Un Retaggio del Passato

Quando un programma viene avviato, riceve argomenti da linea di comando che sono accessibili dall'interno del programma stesso. Questo è uno dei primi pezzi di informazione disponibili all'avvio di un programma e rappresenta un meccanismo chiave per modificare il flusso di esecuzione del software.

Consideriamo la famiglia di chiamate di sistema definite in POSIX, adottate sia dai sistemi Unix-based che da DOS/Win32. Ad esempio, la funzione definita richiede il percorso completo dell'applicazione da eseguire e un vettore con gli argomenti da passare al programma. Questa specifica stabilisce che se un programma viene eseguito con successo, verrà invocato tramite una certa chiamata.

Condizioni da Rispettare

Secondo gli standard C, quando un programma viene chiamato, devono essere rispettate tre condizioni: il valore di ritorno deve essere non negativo, il puntatore deve essere nullo e, se il numero di argomenti è maggiore di zero, la stringa puntata deve rappresentare il nome del programma chiamato. Questa ultima condizione può sorprendere, poiché il nuovo processo conosce già il proprio nome. Tuttavia, è una decisione progettuale che consente al processo creato di comportarsi in modo diverso a seconda di come viene chiamato.

Un Design Controverso

Da una prospettiva moderna, questa pratica sembra indesiderabile, poiché rende il software meno prevedibile. Negli anni '70 e '80, quando le risorse informatiche erano limitate, minimizzare la duplicazione era più ragionevole. Oggi, tuttavia, lo spazio su disco non è più un problema, come dimostra macOS Sonoma, dove due comandi simili sono eseguiti da file separati. Inoltre, se due programmi sono così simili da giustificare la loro fusione in un unico file, è davvero necessario avere due nomi distinti?

Problemi di Implementazione

Anche se si accetta il principio, l'implementazione stessa è discutibile. Perché fornire informazioni sul nome del programma invocato come parte degli argomenti del processo, che dovrebbero essere impostati dal processo chiamante? Se il codice del nuovo processo fa affidamento su questa informazione, è a rischio se non viene popolata correttamente. Ciò potrebbe portare a problemi di sicurezza.

Windows e la Sua Implementazione

Sorprendentemente, Windows è il sistema operativo che si avvicina di più a una soluzione migliore. Le sue chiamate API per creare nuovi processi non consentono di impostare il nome del programma; lo impostano automaticamente in base al percorso fornito. Tuttavia, ci sono ancora modi per impostare manualmente il nome del programma.

Ignorare il Nome del Programma

Indipendentemente dalla posizione sull'argomento, il nome del programma è una realtà con cui dobbiamo convivere. Quando si effettuano chiamate, le prime due condizioni sono gestite dal sistema operativo, ma l'ultima riguardante il nome del programma non lo è. Poiché il chiamante ha il controllo completo, è possibile ignorare questa richiesta, portando a potenziali problemi di sicurezza.

Esempi di Manipolazione

Manipolare il nome del programma è semplice e non influisce sulla maggior parte delle esecuzioni. Tuttavia, ha implicazioni di sicurezza. Ad esempio, un attaccante può sfruttare questa vulnerabilità per ingannare il software di sicurezza, utilizzando comandi comuni per scaricare payload esterni. La logica di rilevamento di software come Microsoft Defender Antivirus può essere ingannata se il nome del programma viene manipolato.

Inganno degli Analisti

In contesti aziendali, gli analisti di sicurezza esaminano gli avvisi generati dagli strumenti di sicurezza. Il comando associato all'attività è una chiave per determinare se un avviso debba essere indagato. Se un attaccante riesce a far sembrare che un comando dannoso sia innocuo, può sfuggire all'attenzione degli analisti.

FAQ

Qual è il problema principale legato alle linee di comando nei sistemi operativi?

Il problema principale è che la convenzione di utilizzare il nome del processo come primo argomento può generare vulnerabilità di sicurezza, poiché i programmi possono essere ingannati riguardo alla loro identità.

Cosa rappresenta il primo argomento di una linea di comando in un processo?

Il primo argomento di una linea di comando rappresenta il nome del processo che viene eseguito.

Quali sono le tre condizioni che devono essere rispettate quando un programma viene chiamato secondo gli standard C?

Le tre condizioni sono: il valore di ritorno deve essere non negativo, il puntatore deve essere nullo e, se ci sono argomenti, la stringa puntata deve rappresentare il nome del programma chiamato.

Perché la decisione di includere il nome del programma tra gli argomenti può sembrare sorprendente?

È sorprendente perché il nuovo processo conosce già il proprio nome, ma questa scelta progettuale consente al processo di comportarsi in modo diverso a seconda di come viene chiamato.

Qual è la posizione di Windows riguardo alla gestione del nome del programma nelle chiamate API?

Windows gestisce automaticamente il nome del programma in base al percorso fornito, senza consentire di impostarlo manualmente, il che rappresenta un approccio migliore rispetto ad altri sistemi operativi.

Quali sono i rischi associati alla manipolazione del nome del programma?

La manipolazione del nome del programma può portare a problemi di sicurezza, come l'inganno dei software di sicurezza, che possono non rilevare attività dannose se il nome del programma appare innocuo.

Come possono gli attaccanti sfruttare la vulnerabilità legata al nome del programma?

Gli attaccanti possono utilizzare comandi comuni per scaricare payload esterni, ingannando il software di sicurezza come Microsoft Defender Antivirus.

Qual è l'importanza del comando associato all'attività per gli analisti di sicurezza?

Il comando è cruciale per determinare se un avviso generato dagli strumenti di sicurezza debba essere indagato, poiché un comando dannoso mascherato da innocuo può sfuggire all'attenzione.

Cosa si intende per 'design controverso' riguardo alle linee di comando?

Il design controverso si riferisce alla pratica di includere il nome del programma tra gli argomenti, che può rendere il software meno prevedibile e più vulnerabile a exploit.

Quali sono le implicazioni di sicurezza legate alla gestione del nome del programma?

Le implicazioni di sicurezza includono la possibilità di attacchi che sfruttano la manipolazione del nome del programma per eludere i controlli di sicurezza e compromettere i sistemi.