Progressi nella creazione di un exploit per OpenSSH 9.1

Qualys ha trovato un modo per aggirare la protezione malloc e double-free per avviare un trasferimento del controllo al codice utilizzando una vulnerabilità in OpenSSH 9.1 che si è ritenuto presentasse un basso rischio di creazione di un exploit funzionante. Allo stesso tempo, la possibilità di creare un exploit funzionante rimane una grande questione.

La vulnerabilità è causata da una pre-autenticazione doppiamente gratuita. Per creare le condizioni affinché la vulnerabilità si manifesti, è sufficiente modificare il banner del client SSH in “SSH-2.0-FuTTYSH_9.1p1” (o un altro vecchio client SSH) in modo da impostare i flag “SSH_BUG_CURVE25519PAD” e “SSH_OLD_DHGEX”. Dopo aver impostato questi flag, la memoria per il buffer “options.kex_algorithms” viene liberata due volte.

I ricercatori di Qualys, manipolando la vulnerabilità, sono riusciti ad ottenere il controllo del registro del processore “%rip”, che contiene un puntatore alla successiva istruzione da eseguire. La tecnica di sfruttamento sviluppata consente di trasferire il controllo in qualsiasi punto nello spazio degli indirizzi del processo sshd in un ambiente OpenBSD 7.2 non aggiornato, fornito per impostazione predefinita con OpenSSH 9.1.

Va notato che il prototipo proposto è un'implementazione solo della prima fase dell'attacco: per creare un exploit funzionante, è necessario aggirare i meccanismi di protezione ASLR, NX e ROP e sfuggire all'isolamento sandbox, il che è improbabile. Per risolvere il problema di bypassare ASLR, NX e ROP, è necessario ottenere informazioni sugli indirizzi, cosa che può essere ottenuta identificando un'altra vulnerabilità che porta alla fuga di informazioni. Un bug nel processo principale o nel kernel privilegiato può aiutare a uscire dalla sandbox.

Fonte: opennet.ru

Aggiungi un commento