La maggior parte degli attacchi riusciti ai danni dei sistemi operativi
deriva da un numero estremamente limitato di vulnerabilità software. Ciò
si deve al fatto che coloro che effettuano gli attacchi agiscono in modo
opportunistico, ovvero scelgono la strada più semplice e comoda,
sfruttando le vulnerabilità più conosciute e impiegando gli strumenti di
aggressione più efficaci e diffusi. Contano sul fatto che le aziende
spesso non pongono rimedio ai problemi e quindi spesso conducono attacchi
indiscriminati, scegliendo gli obiettivi dai risultati di una serie di
scansioni in Internet per rilevare i sistemi vulnerabili. Due anni fa, Il SANS Institute e il National Infrastructure Protection Center (NIPC) pubblicarono un documento che elencava le dieci vulnerabilità più critiche per la sicurezza in Internet. Da allora migliaia di organizzazioni hanno utilizzato quella lista, e la sua evoluzione a venti vulnerabilità diffusa un anno dopo, come guida per risolvere rapidamente i buchi di sicurezza più pericolosi. Le vulnerabilità che hanno favorito i tre esempi riportati sopra - l’episodio Solar Sunrise del Pentagon e i worm Code Red e NIMDA - sono riportate su quella lista. Questa nuova versione delle “Venti Vulnerabilità più critiche” è in
effetti costituita da due liste di dieci: i dieci servizi di Windows le
cui vulnerabilità sono più frequentemente sfruttate e i dieci servizi di
Unix le cui vulnerabilità sono utilizzate più spesso per condurre un
attacco. Per quanto anche gli amministratori di sicurezza più esperti troveranno nelle Venti Vulnerabilità più critiche un valido strumento di lavoro, la lista è diretta in particolare a quelle organizzazioni nelle quali scarseggiano le risorse la formare o dove mancano amministratori della sicurezza con una preparazione tecnica particolarmente avanzata. Coloro che hanno la responsabilità della gestione della rete in queste organizzazioni spesso raccontano di non aver corretto molte di queste vulnerabilità semplicemente perché non sapevano quali fossero le vulnerabilità più pericolose, ed erano troppo occupati per poterle eliminare tutte o non sapevano come correggere in modo sicuro. Tradizionalmente gli auditor e i security manager hanno sempre usato strumenti per la rilevazione delle vulnerabilità per cercare cinquecento, mille o anche duemila vulnerabilità molto specifiche, distogliendo gli amministratori dall’obiettivo di proteggere efficacemente tutti i loro sistemi dagli attacchi più comuni. Quando un amministratore di sistema riceve un report che elenca migliaia di vulnerabilità su centinaia di macchine, spesso rimane paralizzato. Le Venti vulnerabilità più critiche è una lista delle vulnerabilità che richiedono un intervento immediato. L’elenco è ordinato per servizi perché in molti casi un singolo rimedio - disabilitare il servizio, aggiornare alla versione più recente, applicare una patch cumulativa - può risolvere dozzine di vulnerabilità specifiche del software che possono essere evidenziate da una scansione. Questa lista è stata progettata per mitigare questi problemi raggruppando le conoscenze di decine tra i più importanti esperti di sicurezza. Essi provengono dalle agenzie federali statunitensi più sensibili a problemi della sicurezza, dai più importanti produttori di software, dalle più importanti società di consulenza, dai migliori progetti universitari per la sicurezza, dal CERT/CC e dal SANS Institute. L’elenco dei partecipanti è disponibile alla fine del presente documento. L’elenco SANS/FBI delle venti vulnerabilità più critiche è un documento in continuo aggiornamento. Contiene istruzioni dettagliate e riferimenti a informazioni supplementari utili per correggere i problemi di sicurezza. Nel momento in cui si scoprono minacce più critiche di quelle elencate o metodi di intrusione più diffusi o più comodi, vengono aggiornati l’elenco delle vulnerabilità e le istruzioni per rimediare; in questo processo il vostro contributo è sempre gradito. Questo documento si basa sul consenso di un’intera comunità: la vostra esperienza nel combattere le intrusioni e nell’eliminare le vulnerabilità può aiutare quelli che verranno dopo di voi. Inviate i vostri suggerimenti a info@sans.org, specificando "Top Twenty Comments" nell’oggetto dell’e-mail. Note per i lettori:Codici CVEOgni vulnerabilità menzionata è accompagnata dai codici della catalogazione CVE (Common Vulnerabilities and Exposures). Spesso sono riportati anche i numeri CAN, ovvero i codici delle vulnerabilità che sono candidate ad essere incluse nella lista CVE, ma non sono state ancora completamente verificate. Per ulteriori informazioni relative al progetto CVE, oggetto di numerosi riconoscimenti ufficiali, consultate l’indirizzo http://cve.mitre.org/. I codici CVE e CAN corrispondono alle vulnerabilità più importanti che devono essere verificate per ciascuna voce. Ogni vulnerabilità CVE è collegata all’elemento corrispondente del servizio ICAT di indicizzazione delle vulnerabilità del National Institute of Standards (http://icat.nist.gov/). Per ciascuna vulnerabilità ICAT fornisce una breve descrizione, un elenco delle caratteristiche (ad esempio ambito dell’attacco e danno potenziale), un elenco dei nomi e delle versioni dei software vulnerabili e i collegamenti ai bollettini sulle vulnerabilità e alle informazioni sulle patch. Porte da bloccare a livello di firewallAlla fine del documento troverete una sezione aggiuntiva che presenta l’elenco delle porte utilizzate dai servizi che vengono comunemente esplorati e attaccati. Bloccando il traffico che passa attraverso le porte di firewall o di altri dispositivi di protezione del perimetro della rete, potete ottenere un livello di difesa aggiuntivo che aiuta a tutelarvi da eventuali errori di configurazione. Tenete comunque presente che, anche se utilizzate un firewall per bloccare il traffico di rete diretto a una porta, essa non è protetta da possibili azioni causate da soggetti che si trovano già all’interno del perimetro, né dall’azione di hacker penetrati utilizzando altri metodi. Le principali vulnerabilità per i sistemi Windows
Le principali vulnerabilità per i sistemi Unix
W1 Internet Information Services (IIS)W1.1 Descrizione:IIS è passibile di vulnerabilità in tre grandi categorie: problemi di gestione di richieste inattese, problemi di "buffer overflow" e vulnerabilità legate alle applicazioni di esempio. Ognuna di queste categorie verrà qui brevemente trattata.
W1.2 Sistemi operativi interessati
W1.3 Riferimenti CVECVE-2001-0241, CVE-2001-0333, CVE-2001-0500, CAN-2002-0079, CVE-2000-0884, CVE-2000-0886, CAN-2002-0071, CAN-2002-0147, CAN-2002-0150, CAN-2002-0364, CAN-2002-0149, CVE-1999-0191, CAN-1999-0509, CVE-1999-0237, CVE-1999-0264, CVE-2001-0151, CAN-1999-0736, CVE-1999-0278, CAN-2002-0073, CVE-2000-0778, CVE-1999-0874, CVE-2000-0226, CAN-1999-1376, CVE-2000-0770, CVE-2001-0507 W1.4 Come determinare se siete vulnerabiliDato l’alto numero di vulnerabilità, e poiché alcune di queste sono corrette solo da pacchetti cumulativi diffusi da Microsoft, è facile prevedere che chiunque non abbia applicato la patch cumulativa sia vulnerabile. Per determinare se sul vostro server sono è stata applicato un certo pacchetto cumulativo, verificate nel registro la voci che corrisponde alla vostra piattaforma nell’elenco seguente. Windows NT 4:
Windows NT 4 Terminal Server Edition:
Windows 2000:
Windows XP:
In alternativa potete utilizzare HFNetChk (consultate la voce "Rimanete aggiornati " al paragrafo W1.5) per verificare la presenza della patch corrispondente:
Siete probabilmente vulnerabili agli exploit che colpiscono le applicazioni di esempio se qualcuno dei file seguenti è presente nella vostra directory %wwwroot%/scripts (es: C:\inetpub\wwwroot\scripts or D:\web\scripts) o in una sua qualsiasi subdirectory:
W1.5 Come proteggersi
W2 Microsoft Data Access Components (MDAC) -- Remote Data ServicesW2.1 DescrizioneIl componente Remote Data Services (RDS) nelle versioni meno recenti dei Microsoft Data Access Components (MDAC) presenta un baco che permette agli utenti remoti di eseguire comandi locali con privilegi da amministratore. Sfruttando il baco assieme a una vulnerabilità nel Microsoft Jet database engine 3.5 (componente di MS Access), un exploit può anche stabilire un accesso anonimo dall’esterno ai database interni. Queste vulnerabilità sono ben documentate e i rimedi sono disponibili da più di due anni, ma i sistemi non aggiornati o mal configurati ne sono ancora esposti e sono ancora soggetti ad attacchi di questo tipo. W2.2 Sistemi operativi interessatiLa maggior parte dei sistemi Microsoft Windows NT 4.0 con IIS 3.0 o 4.0, Remote Data Services 1.5, o Visual Studio 6.0. W2.3 Riferimenti CVEW2.4 Come determinare se siete vulnerabiliSe utilizzate Microsoft Windows NT 4.0 con IIS 3.0 o 4.0, verificate l’esistenza di "msadcs.dll" (di solito questa dll è istallata in "C:\Program Files\Common Files\System\Msadc\msadcs.dll", ma il percorso può cambiare a seconda dei sistemi). W2.5 Come proteggersiUna eccellente guida alle caratteristiche delle vulnerabilità RDS e Jet che illustra come correggerle è disponibile all’indirizzo http://www.wiretrip.net/rfp/p/doc.asp?id=29&iface=2. Anche Microsoft ha emesso diversi avvisi di sicurezza che descrivono l’exploit e i metodi per proteggersi attraverso alcune modifiche nella configurazione:
In alternativa si può prevenire il problema aggiornando i MDAC alle versioni 2.1 o successive (per quanto talvolta questo aggiornamento possa comportare alcuni problemi di compatibilità). L’ultima versione dei MDAC è disponibile all’indirizzo http://www.microsoft.com/data/download.htm W3 Microsoft SQL ServerW3.1 DescrizioneMicrosoft SQL Server (MSSQL) contiene numerose vulnerabilità gravi che
permettono ad aggressori remoti di ottenere informazioni riservate, di
alterare il contenuto del database, di compromettere i server SQL e, in
alcune configurazioni, anche gli host.
La porta 1433 (la porta di default di MSSQL) è risultata regolarmente una delle porte più sondate secondo le analisi dell’Internet Storm Center. Maggiori informazioni sulle vulnerabilità di MSSQL scoperte più di recente possono essere reperite nel CERT Advisory 2002-22 W3.2 Sistemi operativi interessatiQualsiasi sistema Microsoft Windows con installato Microsoft SQL Server 7.0, Microsoft SQL Server 2000 o Microsoft SQL Server Desktop Engine 2000. W3.3 Riferimenti CVECAN-2002-1138, CAN-2002-1137, CAN-2002-0056, CAN-2002-0649, CAN-2001-0542, CAN-2000-1081, CVE-1999-0999, CAN-2002-0624, CAN-2002-0154, CAN-2000-1209, CAN-2002-1123, CAN-2002-0186, CVE-2000-0202, CVE-2000-0402, CVE-2000-0485, CVE-2000-0603, CVE-2001-0344, CVE-2001-0879, CAN-2000-0199, CAN-2000-1082, CAN-2000-1083, CAN-2000-1084, CAN-2000-1085, CAN-2000-1086, CAN-2000-1087, CAN-2000-1088, CAN-2001-0509, CAN-2002-0187, CAN-2002-0224, CAN-2002-0641, CAN-2002-0642, CAN-2002-0643, CAN-2002-0644, CAN-2002-0645, CAN-2002-0650, CAN-2002-0695, CAN-2002-0721, CAN-2002-0729, CAN-2002-0859, CAN-2002-0982 W3.4 Come determinare se siete vulnerabiliSe la chiave del registro
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer è definita,
significa che sul sistema è installato SQL Server o SQL Server Desktop
Engine. Se il vostro sistema non è mai stato corretto o se non lo avete
aggiornato con le patch più recenti, molto probabilmente è
vulnerabile. Microsoft fornisce anche una guida per aiutare a verificare la versione di SQL: HOW TO: Identify Your SQL Server Service Pack Version and Edition. Per accertarvi che le correzioni siano installate correttamente, verificate i singoli file analizzando la data e l’ora dei file riportate nel bollettino corrispondente della Microsoft Knowledge Base, agli indirizzi: W3.5 Come proteggersiSommario:
In dettaglio:
W4 NETBIOS - Condivisioni di rete non protette in WindowsW4.1 Descrizione:Microsoft Windows fornisce alle macchine host la possibilità di condividere con file o cartelle gli altri host tramite le condivisioni di rete. I meccanismi che permettono questa funzione sono il protocollo Server Message Block (SMB) o il Common Internet File System (CIFS). Questi protocolli permettono agli host di operare su file remoti come se risiedessero in locale. Per quanto questa funzione di Windows sia utile e valida, la configurazione impropria delle condivisioni di rete può mettere in pericolo i file di sistema o può favorire processi che portino utenti o programmi ostili ad ottenere il pieno controllo dell’host. Uno dei metodi tramite i quali il virus Sircam (vedi il CERT Advisory 2001-22) e il worm Nimda (vedi il CERT Advisory 2001-26) si sono diffusi così rapidamente nell’estate del 2001 era proprio quello di scoprire le condivisioni di rete non protette e di replicarsi in queste. Molti possessori di computer aprono inconsciamente i loro sistemi agli hacker quando vogliono favorire i colleghi o i collaboratori esterni condividendo i loro dischi in lettura e in scrittura per gli utenti della rete. Facendo attenzione quando si configura le condivisione di rete, i rischi possono essere adeguatamente mitigati. W4.2 Sistemi operativi interessatiWindows 95, Windows 98, Windows NT, Windows Me, Windows 2000 e Windows XP sono tutti vulnerabili. W4.3 Riferimenti CVECAN-1999-0519, CVE-2000-0979, CAN-2000-1079, CVE-2000-0044, CAN-1999-0621, W4.4 Come determinare se siete vulnerabiliPer Windows NT (SP4), Windows 2000 o Windows XP, il Microsoft Baseline Security Advisor aiuta a verificare se l’host è vulnerabile e indica come risolvere il problema. Il test di verifica può essere seguito in locale o su un host remoto. La maggior parte degli scanner di rete disponibili in commercio rilevano le condivisioni aperte. Un rapido e sicuro test gratuito per rilevare la presenza di condivisioni di file SMB e le relative vulnerabilità, valido per macchine che montano qualsiasi versione di Windows, è disponibile al sito Web della Gibson Research Corporation all’indirizzo http://grc.com/. Cliccate su "ShieldsUP" per ricevere una valutazione in tempo reale sulla vulnerabilità SMB per qualsiasi sistema e istruzioni dettagliate per aiutare gli utenti Microsoft Windows ad affrontare le vulnerabilità SMB. Fate attenzione che se siete connessi a una rete nella quale alcuni dispositivi intermedi bloccano, il risultato prodotto da ShieldsUP sarà che non siete vulnerabili mentre, in realtà, lo potete essere. È il caso, ad esempio, di utenti collegati tramite un provider che blocca SMB all’interno della propria rete: in questo caso ShieldsUP riporterà che non siete vulnerabili, mentre in realtà siete esposti ad eventuali attacchi da parte di tutti gli utenti che utilizzano lo stesso provider. W4.5 Come proteggersiPer limitare il rischio determinato dalle vulnerabilità sfruttabili attraverso le Condivisioni di rete di Windows si possono intraprendere diverse azioni:
W5 Accesso anonimo - Null sessionW5.1 Descrizione:Una connessione tramite Null session, nota anche come Accesso anonimo, è un meccanismo che consente ad un utente anonimo di ottenere informazioni attraverso la rete (come ad esempio nomi utente e condivisioni) o di connettersi senza autenticazione. Viene utilizzato da applicazioni come explorer.exe per enumerare le condivisioni sui server remoti. Nei sistemi Windows NT, 2000 e XP, molti servizi locali sono eseguiti con l'account SYSTEM, noto su Windows 2000 e XP come LocalSystem. L'account SYSTEM viene utilizzato per varie operazioni critiche di sistema. Quando una macchina ha bisogno di recuperare dati di sistema da un'altra, l'account SYSTEM apre una sessione nulla su questa seconda macchina. L' account SYSTEM possiede privilegi virtualmente illimitati e non richiede alcuna password, in modo che non ci si possa connettere normalmente come SYSTEM. A volte l’account SYSTEM ha bisogno di accedere ad informazioni presenti su altre macchine come ad esempio condivisioni disponibili, nomi utente e altre funzionalità tipiche delle Risorse di Rete. Poiché non può connettersi agli altri sistemi con UserID e password, utilizza per accedere una Sessione Nulla. Sfortunatamente anche gli aggressori possono connettersi utilizzando una Sessione Nulla. W5.2 Sistemi operativi interessatiTutte le versioni di Windows NT, 2000 e XP. W5.3 Riferimenti CVEW5.4 Come determinare se siete vulnerabiliProvate a connettervi al vostro sistema con una Sessione Nulla utilizzando il seguente comando: net use \\a.b.c.d\ipc$ "" /user:"" Se ricevete una risposta di "connessione non riuscita", il vostro sistema non è vulnerabile. Se non ricevete alcuna risposta significa che il comando è stato eseguito con successo e il vostro sistema è vulnerabile. Potete anche utilizzare lo strumento "Hunt for NT". Si tratta di un componente dell’NT Forensic Toolkit reperibile presso http://www.foundstone.com/. W5.5 Come proteggersiI controller di dominio richiedono sessioni nulle per comunicare. Perciò, se state lavorando in un dominio di rete, potete limitare la quantità di informazioni che può cadere in mano agli aggressori, ma non potete fermarne del tutto la disponibilità. Per limitare la quantità di informazioni disponibili agli aggressori, modificate la seguente chiave di registro: HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous=1 Ricordate che qualsiasi modifica al registro potrebbe provocare un malfunzionamento del vostro sistema. Effettuate quindi le opportune verifiche prima di renderle la modifica definitiva. Per semplificare il ripristino del registro, vi raccomandiamo di effettuarne sempre il backup. L’impostazione di RestrictAnonymous su 1 permette ugualmente la disponibilità di alcune informazioni per gli utenti anonimi, ma la riduce al minimo. Questa è l’impostazione più restrittiva possibile in Windows NT. In Windows 2000 e XP potete invece impostare il valore a 2. Questa azione bloccherà l’accesso degli utenti anonimi a tutte le informazioni con permessi di accesso non esplicitamente assegnati all’utente anonimo o al gruppo Tutti, il quale include anche gli utenti della sessione nulla. Se non avete bisogno della condivisione di file e stampa, svincolate il NetBIOS dal TCP/IP. Fate attenzione al fatto che la configurazione di RestricAnonymous sui controller di dominio e su altri server specifici può compromettere molte operazioni normali di rete. Per questa ragione si raccomanda di configurare questo valore solo per le macchine visibili da Internet. Tutte le altre macchine dovrebbero essere protette da un firewall configurato per bloccare NetBIOS e CIFS. L'accesso ai controller di dominio o ad altri computer non specificamente configurati per l'accesso esterno non dovrebbe essere mai consentito agli utenti Internet. Per fermare tale accesso, bloccate sul router esterno o sul firewall le porte TCP e UDP dalla 135 alla 139 e le porte 445 TCP e UDP. W6 Autenticazione LAN Manager -- Hashing LM deboleW6.1 Descrizione:Per quanto la maggior parte degli ambienti Windows attuali non necessitino del supporto LAN Manager (LM), Microsoft memorizza per default in locale gli hash delle password legati al LM (noti anche come hash LANMAN) nei sistemi Windows NT, 2000 e XP. Siccome LAN Manager usa uno schema di codifica molto più debole di quelli, più aggiornati, attualmente utilizzati da Microsoft (NTLM and NTLMv2), le password del LAN Manager possono essere violate in brevissimo tempo. Anche le password che in un altro ambiente sarebbero considerate "forti" possono essere violate con sistemi "brute-force" in meno di una settimana. La debolezza degli hash del Lan Manager deriva dal fatto che:
Questo processo di hashing comporta che, per ottenere un accesso autenticato al vostro sistema, un eventuale aggressore ha bisogno solo di determinare due semplici password da sette caratteri, che per di più contengono solo caratteri maiuscoli. Siccome la difficoltà nel violare gli hash aumenta con progressione geometrica in proporzione alla lunghezza dell’hash, ciascuna stringa di sette caratteri è almeno di un ordine di grandezza più semplice da attaccare con sistemi "brute-force" rispetto a una stringa di quattordici caratteri. Dal momento che le stringhe sono tutte esattamente di sette caratteri (spazi inclusi) e tutte in caratteri maiuscoli, anche un attacco da dizionario risulta molto semplificato. IL metodo di hashing del Lan Manager rende quindi inefficace qualsiasi buona policy sull’uso delle password. In aggiunta al rischio dettato dal fatto di avere gli hash collegati a LM memorizzati nel SAM, il processo di autenticazione del LAN Manager è spesso abilitato per default sui client e accettato dai server. La conseguenza è che macchine Windows, in grado di utilizzare hash più robusti, inviano hash LM deboli attraverso la rete, rendendo l’autenticazione di Windows vulnerabile all’intercettazione attraverso packet sniffing e facilitando il compito degli aggressori di recuperare e violare le password degli utenti. W6.2 Sistemi operativi interessatiTutti i sistemi operativi Microsoft Windows. W6.3 Riferimenti CVENon disponibili. W6.4 Come determinare se siete vulnerabiliSe utilizzate un'installazione predefinita di NT, 2000 o XP, siete vulnerabili, perché l’impostazione predefinita prevede il salvataggio in locale degli hash del LAN Manager. Se nel vostro ambiente avete sistemi operativi che richiedono l’autenticazione LM per comunicare con in server, allora siete vulnerabili perché tali macchine inviano gli hash del Lan Manager attraverso la rete, e questi corrono il rischio di essere intercettati. I più sofisticati strumenti per la determinazione delle password in ambiente Windows come LC4 (l0phtcrack versione 4, disponibile all’indirizzo http://www.atstake.com/research/lc/download.html) vi mostreranno tutti gli hash trovati nel database SAM (LM, NTLM o NTLMv2), e metteranno in evidenza la possibilità di violare ciascun hash. ATTENZIONE: Non utilizzate mai un password scanner, neanche sui sistemi per i quali avete un accesso da amministratore, senza autorizzazione esplicita e preferibilmente scritta da parte del vostro datore di lavoro. È già accaduto che amministratori di sistema con le migliori intenzioni siano stati licenziati per aver utilizzato strumenti per la determinazione delle password senza autorizzazione. W6.5 Come proteggersi
I seguenti articoli di Microsoft forniscono alcune utili indicazioni:
W7 Autenticazione generica di Windows
| |||||||||||||||||||||||||||||||||
| Le principali vulnerabilità per i sistemi Unix (U) |
Le Remote Procedure Call (RPC) consentono ai programmi di un computer di eseguire programmi presenti su un altro computer passando loro i dati e recuperando i risultati. Le RPC vengono quindi largamente utilizzate in diversi servizi di rete come l’amministrazione da remoto, la condivisione dei file NFS e NIS. Nelle RPC vi sono però diverse imperfezioni che possono essere sfruttate. In molti casi i servizi RPC vengono eseguiti con privilegi di root, facendo di conseguenza correre gravi rischi ai sistemi che presentano vulnerabilità nei servizi RPC che possono portare un aggressore ad ottenere un accesso root non autorizzato da remoto. Ci sono prove convincenti che la maggior parte degli attacchi del tipo "distributed denial of service" verificatisi durante il 1999 ed i primi mesi del 2000 siano stati eseguiti da sistemi vittime delle vulnerabilità RPC. Anche il massiccio attacco riuscito ai danni dei sistemi delle forze armate americane durante l'incidente Solar Sunrise ha sfruttato vulnerabilità dell' RPC riscontrate su centinaia di sistemi del Dipartimento della Difesa.
Quasi tutte le versioni di Unix e Linux istallano automaticamente, e spesso attivano, servizi RPC.
CVE-1999-0166, CVE-1999-0167, CVE-1999-0168, CVE-1999-0170, CVE-1999-0211, CVE-1999-0977, CVE-1999-0018, CVE-2000-0666, CVE-1999-0002, CVE-2001-0803, CVE-1999-0493, CAN-2002-0573, CVE-2001-0717, CVE-1999-0003, CVE-1999-0019, CVE-1999-0208, CVE-1999-0696, CVE-1999-0693, CVE-1999-0008, CVE-2001-0779, CAN-2002-0033, CAN-2002-0391, CAN-2002-0677, CAN-2002-0679,
Utilizzate un vulnerability scanner o il comando 'rpcinfo' per verificare se state utilizzando uno dei servizi RPC più comunemente sfruttati:
| Servizio RPC | Numero programma RPC |
| rpc.ttdbserverd | 100083 |
| rpc.cmsd | 100068 |
| rpc.statd | 100024 |
| rpc.mountd | 100005 |
| sadmind | 100232 |
| cachefsd | 100235 |
| snmpXdmid | 100249 |
I servizi RPC vengono generalmente sfruttati per attacchi del tipo "buffer overflow", che hanno successo perché i programmi RPC non eseguono un controllo appropriato degli errori o una adeguata convalida degli input. Le vulnerabilità del tipo "buffer overflow" consentono agli aggressori di inviare dati che il programma non si aspetta (spesso in forma di codice dannoso) nello spazio di memoria del programma. A causa dello scarso controllo errori e dell’insufficiente convalida degli input, i dati sovrascrivono le parti di memoria che sono pronte ad essere eseguite dal processore. In un attacco overflow riuscito, questo codice dannoso viene quindi eseguito dal sistemo operativo. Dal momento che molti servizi RPC vengono eseguiti con privilegi di root, sfruttando un di questi servizi è possibile ottenere da remoto un accesso root al sistema non autorizzato.
Patch per Software IBM AIX:
http://www.ibm.com/support/us
http://techsupport.services.ibm.com/server/fixes
Patch per Software SGI:
http://support.sgi.com/
Patch per Software Compaq (Digital Unix):
http://www.compaq.com/support
Patch per Software Linux:
http://www.redhat.com/apps/support/errata
http://www.debian.org./security
Potete trovare un documento di sintesi che riporta indicazioni specifiche sulle tre principali vulnerabilità RPC - Tooltalk, Calendar Manager e Statd - all’indirizzo: http://www.cert.org/incident_notes/IN-99-04.html
Si possono reperire documenti che riguardano le specifiche vulnerabilità RPC agli indirizzi:
Gli amministratori di server Web troppo spesso concludono che poichè l’Internet Information Server (IIS) di Microsoft è particolarmente soggetto ad essere violato (vedi W1. Internet Information Server), il web server open-source Apache è completamente sicuro. Per quanto possa essere condivisibile il confronto con IIS, e nonostante Apache goda di una meritata reputazione di sicurezza, ad una attenta analisi anche questo web server non è invulnerabile.
I metodi per violare Apache o i suoi moduli nel recente passato sono state pochi, ma molto ben documentati e velocemente utilizzati in attacchi concreti. Tra i più recenti vi sono:
In definitiva, nessun web server può essere considerato sicuro finché non viene analizzato nel contesto della sua interazione con le diverse applicazioni web, in particolare con i programmi CGI e con i database. Anche una configurazione particolarmente sicura di Apache può permettere l’accesso non autorizzato ai dati se gli script non sono attentamente verificati o i controlli d’accesso ai database non sono correttamente configurati. Gli script CGI vengono eseguiti con gli stessi permessi del web server, e così uno script CGI fatto ad arte o semplicemente scritto non correttamente può essere altrettanto pericoloso di una vulnerabilità nel software di Apache. Sfortunatamente queste debolezze nel back end del web server rimangono problemi di stretta attualità.
È anche necessario rafforzare la sicurezza del sistema operativo per impedire che i contenuti web vengano sottratti o modificati. Per quanto ciò valga per tutti i servizi attivi, il fatto che i servizi web tendano ad avere una esposizione verso l’esterno si presta alla falsa idea che essi ed i dati che proteggono siano in qualche modo indipendenti dal resto del sistema. Quanto l’omissione di questa attività possa rendere vulnerabile un sistema è spiegato su http://www.wired.com/news/technology/0,1282,43234,00.html.
Quasi tutti i sistemi Linux e molti altri sistemi Unix si presentano con Apache pre-installato e abilitato. Tutti i sistemi Unix sono in grado di far girare Apache. (Gli amministratori di Windows devono fare altrettanta attenzione perché la versione di Apache per Windows è ugualmente soggetta alle stesse vulnerabilità o comunque a vulnerabilità simili.)
CAN-2002-0392, CAN-2002-0061, CVE-1999-0021, CVE-1999-0172, CVE-1999-0266, CVE-1999-0067, CVE-1999-0260, CVE-1999-0262, CVE-2000-0010, CVE-1999-0174, CVE-1999-0066, CVE-1999-0146, CAN-2002-0513, CAN-2002-0682, CAN-2002-0257, CVE-2000-0208, CVE-2000-0287, CVE-2000-0941, CAN-2000-0832, CVE-1999-0070, CVE-2002-0082, CAN-2002-0656, CAN-2002-0655, CVE-2001-1141, CAN-2002-0657, CAN-1999-0509, CVE-1999-0237, CVE-1999-0264
Controllate quale sia la versione più recente e il più recente livello di patch sul sito di Apache: http://httpd.apache.org/. Se la vostra versione non è la più recente, il vostro server è probabilmente vulnerabile. Su questo sito troverete anche una lista aggiornata delle vulnerabilità più recenti e la documentazione su come determinare se siete affetti da tali vulnerabilità.
Le seguenti istruzioni possono aiutarvi a proteggere un web server Apache:
Per ulteriori informazioni di sicurezza su Apache, consultate http://www.sans.org/Gold/apache.php e http://www.infosecuritymag.com/articles/april01/features1_web_server_sec.shtml.
Secure shell (ssh) è un popolare servizio per rendere sicuri i login, l’esecuzione di comandi e il trasferimento di file attraverso una rete. La maggior parte dei sistemi utilizza il pacchetto open-source OpenSSH o la versione commerciale di SSH Communication Security. Per quanto ssh sia largamente più sicuro dei programmi di telnet, ftp, e R-command per sostituire i quali è stato progettato, sono state riscontrate diverse falle in entrambi i pacchetti citati. Si tratta per la maggior parte di bachi di minore importanza, ma alcuni costituiscono dei problemi di sicurezza che devono essere riparati immediatamente. Il più pericoloso di questi buchi di sicurezza attivamente sfruttati permette agli aggressori di ottenere da remoto un accesso root alla macchina.
È stato dimostrato che lo stesso protocollo SSH1 è potenzialmente vulnerabile e in certe configurazioni può permettere la decifratura di una sessione in transito. Per questo invitiamo gli amministratori ad utilizzare, quando possibile, il più solido protocollo SSH2.
Oltre a ciò, gli utenti di OpenSSH devono stare attenti al fatto che le librerie OpenSSL sulle quali di solito OpenSSH è installato presentano a loro volta delle vulnerabilità. Leggete i CERT Advisory 2002-23 per maggiori dettagli. Devono stare anche attenti al fatto che, anche se per un breve periodo di tempo, nell’estate 2002 è stata distribuita una versione di OpenSSH che conteneva un trojano. Leggete http://www.openssh.org/txt/trojan.adv per i dettagli e per controllare che non si tratti della versione che state utilizzando.
Qualsiasi sistema Unix o Linux che esegua OpenSSH 3.3 o precedenti, oppure SSH 3.0.0 o precedenti di SSH Communication Security.
Per ssh di SSH Communication Security:
CVE-2000-0575, CVE-2000-0992, CVE-2001-0144, CVE-2001-0361, CAN-2001-0471, CVE-2001-0553, CVE-2001-0259
Per OpenSSH:
CVE-2000-1169, CVE-2001-0144, CVE-2001-0361, CVE-2001-0872, CVE-2000-0525, CAN-2001-0060, CAN-2002-0002, CAN-2002-0575, CAN-2002-0639, CAN-2002-0083, CAN-2002-0640, CAN-2002-0656, CAN-2002-0655, CVE-2001-1141, CAN-2002-0657
Utilizzate un vulnerability scanner per controllare se state utilizzando una versione vulnerabile o verificate la versione del software riportata eseguendo il comando 'ssh -V'.
Il Simple Network Management Protocol (SNMP) è largamente utilizzato per controllare e configurare da remoto quasi tutti i tipi di dispositivi TCP/IP moderni. Anche se SNMP è supportato nelle sue varie distribuzioni da quasi tutte le piattaforme di rete, è usato più di frequente come metodo per configurare e gestire dispositivi quali stampanti, router e switch e per inviare input a servizi di monitoraggio della rete.
La comunicazione Simple Network Management consiste in diversi tipi di messaggi scambiati tra le stazioni di gestione SNMP e i dispositivi di rete che eseguono quello che comunemente è definito come agent software. Sia metodologia con la quale questi messaggi sono trattati, sia il meccanismo di autenticazione che sottende a tale trattamento, presentano significative vulnerabilità.
Le vulnerabilità che stanno dietro il metodo attraverso il quale la versione 1 di SNMP tratta e cattura i messaggi è descritta in dettaglio nel CERT Advisory CA-2002-03. Esistono una serie di vulnerabilità nel modo in cui i messaggi di richiesta e cattura sono gestiti e decodificati dalle stazioni di gestione e dagli agenti. Queste vulnerabilità non sono limitate a una specifica implementazione di SNMP, ma affliggono una varietà di distribuzioni di SNMP di diversi produttori. Sfruttando queste vulnerabilità gli aggressori possono arrivare a risultati che variano dal denial of service alla modifica della configurazione e del sistema di gestione delle macchine abilitate all’SNMP.
Il meccanismo interno di autenticazione dei protocolli SNMP meno recenti presenta anche un’altra importante vulnerabilità. Le versioni 1 e 2 di SNMP utilizzano un meccanismo di autenticazione "community string" non crittata. La mancanza di crittografia è già abbastanza grave, ma in più la community string usata per default nella grande maggioranza dei dispositivi SNMP è "public," e solo pochi produttori più accorti di apparati di rete la modificano in “privata" per il trattamento delle informazioni più sensibili. Gli aggressori possono sfruttare la vulnerabilità di SNMP per riconfigurare o per spegnere i dispositivi da remoto. Lo sniffing del traffico SNMP può rivelare molti dettagli relativi alla struttura della vostra rete e ai dispositivi ad essa collegati Gli intrusi utilizzano queste informazioni per scegliere gli obiettivi e per pianificare gli attacchi.
A dispetto del fatto che queste vulnerabilità sono presenti solo nelle prime versioni dei protocolli SNMP, molti produttori abilitano per default la versione 1 di SNMP. Molti non offrono prodotti in grado di utilizzare SNMP versione 3, che non presenta nessuna di queste vulnerabilità congenite. In ogni caso esistono dei sostituti gratuiti che provvedono a fornire il supporto SNMPv3 con licenza GPL o BSD.
SNMP non è un’esclusiva di Unix e viene usato diffusamente anche in Windows per apparati di rete, stampanti e altri dispositivi. La maggior parte degli attacchi che si appoggiano a SNMP finora riscontrati si è presentata però su sistemi UNIX con configurazioni non corrette.
Quasi tutti i sistemi Unix e Linux sono distribuiti con l’SNMP installato e spesso abilitato per default. Anche la maggior parte degli altri sistemi operativi e dispositivi compatibili con SNMP sono vulnerabili.
CAN-2002-0013, CAN-2002-0797, CAN-2002-0012, CAN-2002-0796, CAN-1999-0516, CAN-1999-0517, CAN-1999-0254, CAN-1999-0186, CAN-1999-0615, CVE-2001-0236,
Potete verificare se SNMP è attivo sui dispositivi connessi alla vostra rete adoperando uno scanner o effettuando un controllo manuale.
SNMPing - Potete richiedere lo strumento di scanning gratuito SNMPing al SANS Institute inviando un messaggio vuoto a snmptool@sans.org. Riceverete un messaggio di risposta con l’URL dal quale potrete scaricare lo strumento.
SNScan - Foundstone ha creato un altro strumento per lo scanning SNMP di semplice uso chiamato SNScan, che può essere scaricato da http://www.foundstone.com/knowledge/free_tools.html.
Se non potete utilizzare uno degli strumenti sopra citati, avete la possibilità di verificare manualmente se SNMP è attivo sui vostro sistemi. Consultate la documentazione del vostro sistema operativo per le indicazioni su come identificare l’implementazione specifica di SNMP, il daemon di base può di solito essere identificato trovando "snmp" nella process list o cercando tra i servizi che girano sulle porte 161 o 162. Consultate il CERT Advisory CA-2002-03 per ulteriori informazioni.
Se SNMP è attivo e riscontrate una delle seguenti variabili, potreste soffrire di una vulnerabilità legata a una stringa di default o comunque troppo facile da indovinare:
Leggete http://www.sans.org/newlook/resources/IDFAQ/SNMP.htm per informazioni su come identificare la presenza di queste condizioni..
snmpwalk. Potete trovare maggiori informazioni su http://www.zend.com/manual/function.snmpwalk.php.
Una buona guida per questo strumento è reperibile all’indirizzo http://www.sans.org/newlook/resources/IDFAQ/SNMP.htm.
Il daemon FTP viene utilizzato per distribuire file ad utenti anonimi o autenticati con username e password. I servizi FTP anonimi non richiedono una password univoca (vale per tutti) e tutti gli utenti usano lo stesso nome di login ("anonymous" o "ftp"), così da permettere a chiunque l’accesso al servizio.
Il servizio FTP autenticato richiede invece un username e una password, ma entrambi vengono trasmessi in chiaro attraverso la rete, consentendo a un terzo di intercettarli durante lo scambio di credenziali. Per sottrarre le informazioni di login FTP, un aggressore ha bisogno di piazzare un network sniffer da qualche parte lungo il percorso di connessione come, ad esempio, sul server FTP della LAN o sul client LAN. Questi sniffer sono stati utilizzati in molti episodi recenti che hanno riguardato la sicurezza.
Oltre a questa insita insicurezza nella trasmissione, sono state rilevate diverse vulnerabilità gravi in molte versioni dei software FTP server, sia in quelle fornite da produttori di sistemi operativi (Sun, HP-UX, ecc), sia in quelle sviluppate dalla comunità open source (WU-FTPD, ProFTPD, ecc). Molti degli attacchi che sfruttano queste vulnerabilità permettono all’aggressore di ottenere un accesso root alla macchina che ospita il server FTP, mentre altri permettono semplicemente l’esecuzione di comandi a livello di utente. La recente vulnerabilità di WU-FTPD, ad esempio, permette agli aggressori di ottenere un accesso root e di caricare sul sistema strumenti come i “rootkits”, ed utilizzare quindi il sistema per i loro intenti. La maggior parte dei sistemi di attacco a queste vulnerabilità richiede che sia abilitato l’accesso anonimo, ma qualcuno funziona anche quando l’accesso anonimo viene negato a condizione che il server FTP ascolti la porta della rete. È da notare che anche se il server FTP usa una chiamata chroot() al sistema per confinare l’utente anonimo in una specifica directory, può essere ugualmente attaccato se presenta dei bachi importanti nell’implementazione.
Quasi tutti i sistemi Unix e Linux sono distribuiti con almeno un FTP server installato e spesso abilitato per default.
CVE-1999-0368, CVE-2001-0550, CVE-1999-0080, CVE-1999-0878, CVE-1999-0879, CVE-1999-0950, CAN-2001-0249, CAN-1999-0527, CAN-1999-0911, CVE-1999-0955, CVE-2000-0573, CVE-2001-0187, CAN-2001-0935, CVE-1999-0880, CAN-2000-0574, CAN-2001-0247, CVE-2001-0053, CVE-2001-0318, CAN-2001-0248, CVE-1999-0082, CVE-1999-0083, CVE-2000-0856, CAN-2001-0065, CAN-2001-0283, CVE-2001-0456
Diverse versioni di daemon FTP UNIX presentano un grande numero di vulnerabilità e devono essere regolarmente aggiornate e corrette. Controllate quale sia la versione più recente e l’ultimo livello di patch del vostro specifico FTP server software consultando il sito del produttore del vostro sistema operativo o del software FTP. Le la vostra versione non è la più recente, vi sono delle possibilità che sia vulnerabile e che i metodi per sfruttare le sue vulnerabilità siano pubblicamente disponibili nella comunità underground.
Si può anche utilizzare lo scanner gratuito Nessus (http://www.nessus.org/) per evidenziare le vulnerabilità FTP.
Per proteggere il servizio FTP si dovrebbero adottare i seguenti accorgimenti:
/etc/ftpusers e aggiungete gli username "anonymous" e "ftp"
(su righe diverse). Questo file definisce quali utenti
non sono abilitati a connettersi al server FTP. Per
aggiungere un ulteriore livello di sicurezza, togliete anche l’utente
"ftp" dal file delle password. /etc/hosts.allow,
permetterete l’accesso solo da uno specifico dominio o indirizzo IP.
Potreste quindi inserire "in.ftpd: ALL" in /etc/hosts.deny
per bloccare l’accesso a tutti gli altri e confermare l’avvio del daemon
FTP via "tcpd" in /etc/inetd.conf. Alcune distribuzioni di
Linux (come ad esempio RedHat) utilizzano una versione migliorata di
inetd chiamata xinetd, che contiene il codice TCP wrapper e controlla di
default i file sopra descritti. Consultate il manuale per suggerimenti
sulla configurazione di xinetd. /etc/ftpusers in modo che tali account
non possano essere accessibili in FTP. Remote shell (rsh), remote copy (rcp), remote login (rlogin), e remote
execution (rexec) – conosciuti tutti assieme come "R-commands" – sono
molto usati nel mondo Unix. Le organizzazioni con molti server Unix spesso
configurano i corrispondenti "R-services" (in.rshd, in.rlogind, in.rexecd)
in modo che gli utenti possano spostarsi da una macchina all’altra senza
inserire ogni volta uno user ID e una password. Anche nelle reti dove le
risorse di un dato utente sono contenute da un singolo sistema, gli
amministratori sono spesso responsabili di dozzine o anche centinaia di
sistemi, e quindi configurano i servizi R in modo da facilitare i propri
movimenti da una macchina all’altra. Un singolo utente può effettuare
comandi rsh, rcp, rlogin o rexec dalla macchina A alla macchina B senza
dover ri-autenticarsi inserendo il nome o l’indirizzo della macchina A nel
suo file ~/.rhosts file sulla macchina B. Tutti gli utenti
possono eseguire comandi rsh, rcp, rlogin o rexec dalla macchina A alla
macchina B senza dover ri-autenticarsi se il nome o l’indirizzo della
macchina A è presente nel file /etc/hosts.equiv della
macchina B.
I servizi R soffrono di due grandi fondamentali debolezze nelle connessioni di rete: mancanza di crittografia e autenticazione dell’host piuttosto scarsa. La trasmissione dell’informazione tra i client R-command e i servizi R in testo piano fa in modo che i dati o ciò che viene digitato sulla tastiera possano essere intercettati. Il fatto che i servizi R accettino semplicemente il nome o l’indirizzo presentato da un client che si connette consente che queste informazioni siano catturate. Se non sono state stabilite relazioni di trust, gli utenti sono obbligati a inviare in rete le password in chiaro. Con le relazioni di trust, un aggressore può assumere l’identità di un utente valido su un host valido e utilizzarla per ottenere l’accesso a tutte le altre macchine che hanno impostato la relazione con la macchina violata.
Quasi tutti i sistemi Unix e Linux sono distribuiti con i servizi R installati e spesso abilitati per default.
CVE-1999-0113, CVE-1999-0627, CVE-1999-0180, CAN-1999-0651, CAN-1999-0515
I servizi R girano su un meta-server chiamato "inetd" o , su alcuni
sistemi, "xinetd." Inetd permette le connessioni rsh o rcp se vi è una
voce per "in.rshd" (il nome specifico può variare lievemente a seconda
della vostra distribuzione) in /etc/inetd.conf o in
/etc/inet/inetd.conf. Allo stesso modo, rexec richiede una
voce per "in.rexecd," e rlogin una voce per "in.rlogind." Xinetd funziona
in modo simile, aspettando che nella directory /etc/xinetd.d
appaia un file nominato dopo che ciascun servizio è partito.
Le relazioni di Trust sono stabilite su una macchina se vi sono delle
voci nel file /etc/hosts.equiv o nel file
~/.rhosts di ciascun utente valido.
Disabilitate i servizi R su qualsiasi sistema nel quale non siano assolutamente necessari. Le funzionalità dei servizi R possono essere svolte in modo molto più sicuro da Secure shell (ssh, disponibile presso OpenSSH o presso SSH Communications Security) e i sui complementi di scp e sftp. Se i servizi R sono assolutamente necessari, disabilitate le relazioni di trust e utilizzata TCP Wrappers per registrare tutti i tentativi di connessione, limitate l’accesso a specifici host ed effettuale la verifica degli host. La funzionalità di TCP Wrappers è già contenuta in xinetd.
Per disabilitare le relazioni di trust, eliminate il file
/etc/hosts.equiv e il file ~/.rhosts di ciascun
utente. Se dovete proprio utilizzare le relazioni di trust, non usate mai
il carattere "+" (carattere jolly), perché può essere utilizzato da
qualsiasi utente o da qualsiasi macchina (o, peggio, da qualsiasi utente
da qualsiasi macchina) per connettersi con credenziali corrette, e
assicuratevi di usare TCP Wrappers. Non utilizzate mai ~/.rhosts
per permettere l’autenticazione senza password.
Il Berkeley line printer daemon (LPD) è storicamente il servizio che permette agli utenti di connettersi a una stampante locale da una macchina locale o da una macchina remota attraverso la porta TCP 515. Anche se sono disponibili server alternativi, LPD rimane il più utilizzato server di stampa tra le diverse distribuzioni di Unix e Linux. Molte implementazioni di LPD, però, contengono delle falle di programmazione che hanno portato a buffer overflow, permettendo agli aggressori di eseguire codice arbitrario con privilegi di root. Così tanti sistemi operativi Unix contengono daemon LPD vulnerabili che il CERT ha emesso un avviso generale (http://www.cert.org/advisories/CA-2001-30.html) alla fine del 2001 per fornire informazioni specifiche sui problemi e sui rimedi per dozzine di diversi sistemi Unix.
Quasi tutti i sistemi Unix e Linux sono distribuiti con una versione di LPD installata e spesso abilitata per default.
CVE-2001-0353, CVE-1999-0299, CVE-2000-0534, CVE-2001-0670, CAN-1999-0061, CAN-2000-1208, CAN-2001-0671
Siccome tutti i sistemi Unix e Linux sono distribuiti con un qualche server di stampa installato, e dal momento che anche quelli che utilizzano un qualche sostituto di LPD (come LPRng) chiamano il loro servizio "lpd" o "in.lpd," dovreste controllare presso il vostro distributore per verificare se quella che utilizzate è la versione più recente o comunque se la versione è corretta con la patch più recente, e se non è così considerate vulnerabile il vostro sistema.
Consultate il CERT Advisory 2001-30 per le informazioni su come risolvere il problema sul vostro specifico sistema operativo. Gli utenti Solaris possono consultare anche CERT Advisory 2001-15 e Sun Security Bulletin #00206.
Se la vostra macchina non ha bisogno di fungere da server di stampa per
richieste da remoto, avete la possibilità di ridurre al minimo il rischio
di future vulnerabilità in LPD disabilitando il servizio "in.lpd" in inetd
o in xinetd. Per inetd, commentate la voce "in.lpd" in
/etc/inetd.conf o in /etc/inet/inetd.conf e
riavviate inetd. Per xinetd, aggiungete la riga "disable = yes" al file
"in.lpd" e riavviate xinetd. Se proprio avete bisogno si soddisfare
richieste di stampa da remoto, restringere gli host abilitati a
connettersi a in.lpd con TCP Wrappers.
Potete garantirvi una certa protezione dai buffer overflow abilitando uno stack non eseguibile sui sistemi operativi che supportano questa funzione. Anche se uno stack non eseguibile non protegge da tutti i buffer overflow, può ostacolare lo sfruttamento di alcuni buffer overflow standard pubblicamente disponibili su Internet.
Sendmail è il programma che invia, riceve e inoltra la maggior parte della posta elettronica elaborata su computer UNIX e Linux. La grande diffusione dell’uso di Sendmail in Internet lo rende uno degli obiettivi di attacco principali, concretizzatisi in numerosi exploit nel corso degli anni.
La maggior parte di questi exploit hanno successo solo con le versioni meno recenti del software. Sendmail, infatti, non ha presentato vulnerabilità gravi negli ultimi due anni. Nonostante questi problemi ormai vecchi siano stati ben documentati e siano stati risolti nelle versioni più recenti, sono ancora oggi in circolazione un tale numero di versioni non aggiornate o mal configurate che Sendmail rimane uno dei servizi più spesso presi di mira.
I rischi che si presentano nell’utilizzo di Sendmail possono essere raggruppati in due categorie principali: l’acquisizione di privilegi causata da buffer overflow e la non corretta configurazione che fa diventare la vostra macchina un tramite per la posta elettronica inviata da un’altra macchina. Il primo è un problema che riguarda qualsiasi sistema che utilizzi ancora le vecchie versioni del codice. Il secondo è il risultato dell’uso dei file di configurazione non corretti o di quelli di default e rappresenta uno degli ostacoli maggiori nella lotta alla diffusione dello spam.
Quasi tutti i sistemi Unix e Linux sono distribuiti con una versione di Sendmail installata e spesso abilitata per default.
CVE-1999-0206, CVE-1999-0203, CVE-1999-0204, CVE-1999-0047, CAN-1999-0512, CVE-1999-0130, CVE-1999-0131, CVE-1999-0393, CVE-1999-1309, CVE-2001-0653, CVE-2000-0319, CVE-1999-1109, CVE-1999-0129, CVE-1999-0095
Sendmail ha presentato in passato un grande numero di vulnerabilità. Non fidatevi sempre della stringa di versione restituita dal daemon, perché questi non fa altro che leggerla da un file di testo presente sul sistema che può non essere correttamente aggiornato.
Verificate quale sia la versione più recente di Sendmail (se dovete istallarlo da zero) o quale sia il livello di patch raggiunto (se Sendmail è già inserito nel vostro sistema operativo); se non state utilizzando l’ultima versione o l’ultimo livello di patch, probabilmente siete vulnerabili.
Per proteggere Sendmail dovrebbero essere adottate le seguenti precauzioni:
Il pacchetto software Berkeley Internet Name Domain (BIND) è l'implementazione di gran lunga più utilizzata del Domain Name Service (DNS), il sistema che permette di localizzare un server su Internet (o in una rete locale) utilizzando un nome (ad esempio www.sans.org) senza dover conoscere il suo specifico indirizzo IP. La diffusione di BIND lo ha reso bersaglio di frequenti attacchi. Anche se gli sviluppatori di BIND sono storicamente molto rapidi nel correggerne le vulnerabilità, un numero eccessivo di server non aggiornati o mal configurati rimane esposto agli attacchi.
A questa categoria contribuiscono un certo numero di fattori. I più importanti di questi sono costituiti da amministratori che non sono informati degli aggiornamenti di sicurezza, da sistemi che utilizzano il daemon BIND (chiamato "named") senza averne bisogno e da file di configurazione non appropriati. Ciascuno di questi sistemi può subire un denial of service, un buffer overflow o un DNS cache poisoning. Tra le più recenti debolezze scoperte in BIND, vi è quella discussa nel CERT Advisory CA-2002-15 che può portare a un denial of service. In questo caso un aggressore invia particolari pacchetti DNS per forzare il controllo interno che è in sé vulnerabile e fare in modo che il daemon BIND si disattivi. Un’altra vulnerabilità scoperta permette un attacco buffer overflow, trattato nel CERT Advisory CA-2002-19, nel quale gli aggressori utilizzano le versioni vulnerabili delle librerie del DNS resolver. Inviando risposte DNS confezionate ad arte, l’aggressore può sfruttare questa vulnerabilità ed eseguire codice arbitrario o anche causare un’interruzione del servizio.
Oltre ai rischi che un BIND vulnerabile pone al server che lo ospita, è da aggiungere una singola macchina compromessa può costituire una piattaforma per attività dannose che hanno come obiettivo altre macchine su Internet, o può essere utilizzata come deposito di materiale illecito senza che l’amministratore lo sappia.
Quasi tutti i sistemi Unix e Linux sono distribuiti con una versione di BIND installata e spesso abilitata per default. Esistono versioni binarie di BIND anche per Windows
CVE-1999-0009, CVE-1999-0833, CVE-2001-0010, CVE-2001-0011, CVE-2001-0013, CVE-1999-0024, CVE-2001-0012, CVE-1999-0837, CVE-1999-0848, CVE-1999-0849, CAN-2002-0400
Se utilizzate una versione di BIND arrivata con il vostro sistema operativo, verificate di essere aggiornati con le patch più recenti rilasciate dal vostro produttore. Se utilizzate BIND installato dal sorgente dell’Internet Software Consortium (ISC), controllate che quella che state usando sia la versione più recente di BIND. Qualsiasi versione non aggiornata o non corretta del software è passibile di vulnerabilità.
Nella maggior parte dei sistemi, il comando "named -v" mostrerà la versione di BIND installata, numerata come X.Y.Z, dove X è la versione principale, Y è la versione secondaria e Z è il livello di patch. Vi sono attualmente tre versioni principali di BIND: 4, 8 e 9. Se utilizzate BIND installato dal codice sorgente, dovreste sostituire la versione 4 con le versioni più recenti 8 o, meglio ancora, 9. Potete recuperare il codice aggiornato dal sito ISC.
Un approccio ancora più corretto sarebbe quello di utilizzare un vulnerability scanner aggiornato per verificare periodicamente il vostro sistema DNS per controllare che non presenti nuove vulnerabilità.
Per delle eccellenti guide su come rafforzare BIND sui sistemi Solaris e per maggiori indicazioni sulla documentazione per BIND, consultate Hardening the BIND v8 DNS Server e Running the BIND9 DNS Server Securely.
In quasi tutte le interazioni tra gli utenti e i sistemi informativi vengono utilizzate password, frasi identificative o codici di sicurezza. La maggior parte delle forme di autenticazione, come la maggior parte delle protezioni per file e dati, si basa su password fornite dall’utente. Dal momento che gli accessi correttamente autenticati spesso non vengono registrati, o anche se vengono registrati non lo sono in modo da fornire alcun segnale di allarme, una password compromessa rappresenta un’opportunità di esplorare un sistema dall’interno senza essere identificati. Un aggressore avrebbe accesso completo a qualsiasi risorsa disponibile per quell’utente e sarebbe molto vicino ad essere in grado di accedere ad altri account, a macchine vicine e forse anche ad ottenere privilegi di amministrazione. Nonostante questi pericoli, gli account con password deboli o addirittura senza password rimangono estremamente diffusi e le società con una buona policy sull’utilizzo delle password ancora troppo rare.
Le più comuni vulnerabilità delle password sono dovute (a) ad account senza password o con password deboli, (b) al fatto che, a prescindere dalla robustezza delle password, spesso gli utenti non le proteggono, (c) al fatto che il sistema operativo o il software applicativo creano account di amministrazione con password deboli o privi di password (d) al fatto che gli algoritmi di hashing delle password sono noti e spesso gli hash vengono memorizzati in modo da essere accessibili a chiunque. La difesa migliore e la più corretta contro queste vulnerabilità è una solida policy che includa le istruzioni per creare delle buone password e che riassuma i comportamenti corretti per conservarne la riservatezza, unita a una verifica proattiva dell’integrità delle password.
Qualsiasi sistema operativo e applicazione per accedere alla quale gli utenti si autentichino tramite user ID e password.
Sul sistema locale, le password vengono salvate in either
/etc/passwd o in
/etc/shadow./etc/passwd ha bisogno di essere
leggibile da tutti gli utenti della rete per poter permettere il processo
di autenticazione. Se tale file include anche gli hash delle password,
allora ogni utente con accesso al sistema può leggere gli hash e provare a
violarli con un password cracker.
Per custodire gli hash si può
utilizzare in alternativa /etc/shadow, che deve essere
leggibile solo da root. Se i vostri account locali non sono protetti da
/etc/shadow, allora il rischio per le vostre password diventa
molto alto.
Se utilizzate NIS, gli hash delle password sono leggibili da tutti gli utenti e si viene a costituire come nel caso precedente un rischio molto elevato. Ciò può essere il caso di alcune implementazioni di LDAP come servizio di autenticazione di rete.
Ma anche se gli hash delle password sono protetti, le password possono essere indovinate in altri modi. Per quanto vi siano alcuni sintomi osservabili di una generale debolezza delle password, come la presenza di account attivi appartenenti a utenti che non operano più all’interno dell’organizzazione o a servizi non più attivi, l’unico modo per accertarsi che ogni singola password sia sufficientemente robusta è quello di verificare tutte le password con gli stessi strumenti per la determinazione delle password utilizzati dagli aggressori. ATTENZIONE: Non utilizzate mai un password scanner, neanche sui sistemi per i quali avete un accesso da amministratore, senza autorizzazione esplicita e preferibilmente scritta da parte del vostro datore di lavoro. È già accaduto che amministratori di sistema con le migliori intenzioni siano stati licenziati per aver utilizzato strumenti per la determinazione delle password senza autorizzazione.
I migliori strumenti per la determinazione delle password sono:
La difesa migliore e la più corretta contro la debolezza delle password è una solida policy che includa le istruzioni su come generare buone password e descriva i comportamenti corretti per mantenerne la sicurezza, assieme ad una verifica proattiva dell’integrità delle password.
Una buona password, quindi, non deve avere come radice una parola o un nome proprio. Una solida policy sulle password dovrebbe indirizzare gli utenti verso la creazione di password derivate da qualcosa di più casuale, come una frase o il titolo di un libro o di una canzone. Concatenando una stringa più lunga (prendendo la prima lettera di ogni parola o associando alle parole un carattere speciale o togliendo le vocali, ecc.), gli utenti possono generare stringhe sufficientemente lunghe che combinano caratteri alfanumerici e caratteri speciali in modo tale da creare una grande difficoltà ai tentativi di attacco con metodi da dizionario. E in più se la frase è facile da ricordare, lo sarà anche la password.
Una volta fornite agli utenti le corrette indicazioni su come generare buone password, possono essere messe in opera le procedure per controllare che queste indicazioni vengano seguite. Il modo migliore per farlo è quello di convalidare le password ogni volta che l’utente le cambia. La maggior parte dei tipi di Unix può usare Npasswd come front-end per verificare le password inserite alla luce della vostra policy. I sistemi abilitati PAM possono anche includere cracklib (le librerie del tool “Crack”).
Gli strumenti per la determinazione delle password devono essere utilizzati in modalità stand-alone come parte di un esame sistematico. FATE ANCORA ATTENZIONE: Non utilizzate mai un password scanner, neanche sui sistemi per i quali avete un accesso da amministratore, senza autorizzazione esplicita e preferibilmente scritta da parte del vostro datore di lavoro. È già accaduto che amministratori di sistema con le migliori intenzioni siano stati licenziati per aver utilizzato strumenti per la determinazione delle password senza autorizzazione. Una volta ricevuta l’autorizzazione ad utilizzare strumenti per la determinazione delle password sul vostro sistema, attivateli regolarmente su una macchina protetta. Gli utenti le cui password vengono violate devono essere avvisati in modo confidenziale e devono essere fornite loro le istruzioni su come scegliere una buona password. Gli amministratori di sistema e il management dovrebbero sviluppare assieme questo tipo di procedure, in modo tale che il management possa provvedere quando gli utenti non rispondono alle notifiche.
Un altro modo per proteggersi da password deboli o assenti è quello di utilizzare forme alternative di autenticazione come token generatori di password o sistemi di autenticazione biometrica. Se avete problemi derivati da password deboli, usate quindi metodi diversi per l’autenticazione degli utenti.
/etc/passwd, aggiornate i vostri sistemi per
usare /etc/shadow. Se sul vostro sistema utilizzate NIS or
LDAP in un modo per cui gli hash non sono protetti, chiunque (anche un
utente non autenticati) può leggere gli hash delle vostre password e
tentare di violarli. Dovreste quindi rendere sicuri i permessi e
compiere regolarmente delle verifiche di violabilità.
Anche se le password sono robuste, gli account possono essere
ugualmente compromessi se gli utenti non proteggono adeguatamente la
propria password. Una buona policy include sempre istruzioni che
specificano come gli utenti non devono mai riferire la propria password
a nessun’altro, non devono mai trascrivere la password in supporti che
possano essere letti da altri e devono rendere adeguatamente sicuro
qualsiasi file nel quale sia conservata una password per
l’autenticazione automatica (le password sono più facili da proteggere
quando questa pratica è utilizzata solo quando assolutamente
necessario).
La modifica periodica della password deve essere fatta
rispettare in modo che quelle password che non rispettano queste regole
siano vulnerabili solo in una finestra temporale limitata, e deve essere
tassativamente vietato che le vecchie password possano essere
riutilizzate. Controllate che agli utenti giungano gli avvisi e sia data
loro le possibilità di modificare la propria password prima della
scadenza. Quando si trovano di fronte a frasi come: "la vostra password
è scaduta e deve essere cambiata," gli utenti tendono a scegliere una
cattiva password.
| Appendice A - Porte generalmente vulnerabili |
In questa sezione, abbiamo elencato le porte che sono generalmente esaminate e attaccate. Il blocco di queste porte rappresenta il requisito minimo per la sicurezza perimetrale, non una lista esaustiva delle specifiche per il firewall. Una regola di gran lunga migliore sarebbe quella di bloccare tutte le porte inutilizzate. Comunque, anche se ritenete che queste porte siano bloccate, dovete sempre controllarle attivamente per scoprire eventuali tentativi d'intrusione. Un ultimo avvertimento è doveroso: il blocco di alcune delle porte elencate può disabilitare servizi necessari. Prima di implementare queste raccomandazioni, consideratene i potenziali effetti.
Tenete presente che il blocco di queste porte non rappresenta un sostituto alle soluzioni di sicurezza globali. Se le porte non sono state rese sicure in maniera adeguata su ogni sistema host della vostra organizzazione, un aggressore che ha ottenuto l'accesso alla vostra rete con altri mezzi (un modem telefonico, un trojan allegato ad un’e-mail o un complice interno all'organizzazione, per esempio) può sfruttare dette porte anche se sono bloccate.
In aggiunta a queste porte, bloccate gli indirizzi "spoofed" -- pacchetti in arrivo dall'esterno della vostra azienda che hanno come sorgente indirizzi interni, indirizzi privati (RFC1918 e rete 127) e riservati IANA. Bloccate anche i pacchetti instradati alla sorgente o i pacchetti con il campo delle opzioni IP impostato.
| Appendice B – Gli esperti che hanno collaborato a creare la lista dei venti servizi più vulnerabili |
Jeff Campione, Federal Reserve Board -- Editor
Eric Cole, Editor,
2001 Edition
Ryan C. Barnett, Department of the Treasury/ATF
Chris
Benjes, National Security Agency
Matt Bishop, University of California,
Davis
Chris Brenton, SANS Institute
Pedro Paulo Ferreira Bueno, Open
Communications Security, Brazil
Anton Chuvakin, Ph.D.,
netForensics
Rob Clyde, Symantec
Dr. Fred Cohen, Sandia National
Laboratories
Gerhard Eschelbeck, Qualys
Dan Ingevaldson, Internet
Security Systems
Erik Kamerling, Pragmeta Networks
Gary Kessler,
Gary Kessler Associates
Valdis Kletnieks, Virginia Tech CIRT
Jamie
Lau, Internet Security Systems
Scott Lawler, Veridias Information
Solutions
Jeni Li, Arizona State University
Nick Main, Cerberus IT,
Australia
Jose Marquez, Alutiiq Security and Technology
Christopher
Misra, University of Massachusetts
Stephen Northcutt, SANS
Institute
Craig Ozancin, Symantec
Alan Paller, SANS
Institute
Ross Patel, Afentis, UK
Marcus Ranum, ranum.com
Chris
Rouland, Internet Security Systems
Bruce Schneier, Counterpane Internet
Security Inc.
Greg Shipley, Neohapsis
Gene Spafford, Purdue
University CERIAS
Koon Yaw Tan, Infocomm Development Authority of
Singapore
Mike Torregrossa, University of Arizona
Viriya Upatising,
Loxley Information Services, Thailand
Rick Wanner, CGI Information
Systems and Management Consultants
Le persone che hanno contribuito ad assegnare le priorità alle singole voci CVE per definire i test da utilizzare negli scanner Top 20. Per i dettagli sul sistema utilizzato, consultate www.sans.org/top20/testing.pdf
Charles Ajani, Standard Chartered Bank, London, UK
Steven Anderson,
Computer Sciences Corporation, North Kingstown RI
John Benninghoff, RBC
Dain Rauscher, Minneapolis MN
Layne Bro, BEA Systems, Denver
CO
Thomas Buehlmann, Phoenix AZ
Ed Chan, NASA Ames Research Center,
San Jose CA
Andrew Clarke, Computer Solutions, White Plains NY
Brian
Coogan, ManageSoft, Melbourne Australia
Paul Docherty, Portcullis
Computer Security Limited,UK
Arian Evans, U.S. Central Credit Union,
Overland Park KS
Rich Fuchs, Research Libraries Group, Mountain View
CA
Mark Gibbons, International Network Services, Minneapolis MN
Dan
Goldberg, Rochester NY
Shan Hemphill, Sacramento CA
Michael Hensing,
Charlotte, NC, Microsoft
Simon Horn, Brisbane Australia
Bruce
Howard, Kanwal Computing Solutions, Jilliby NSW Australia
Tyler Hudak,
Akron OH
Delbert Hundley, MPRI Division of L-3COM, Norfolk
VA
Chyuan-Horng Jang, Oak Brook IL
Kim Kelly, The George Washington
University, Washington DC
Martin Khoo, Singapore Computer Emergency
Response Team (SingCERT), Singapore
Susan Koski, Pittsburgh PA
Kevin
Liston, AT&T, Columbus OH
André Mariën, Ubizen, Belgium
Fran
McGowran, Deloitte & Touche, Dublin, Ireland, UK
Derek Milroy,
Zurich North America, Chicago IL
Bruce Moore, Canadian Forces Network
Operations Center, DND, Ottawa Canada
Castor Morales, Ft. Lauderdale
FL
Luis Perez, Boston MA
Reg Quinton, University of Waterloo,
Ontario Canada
Bartek Raszczyk, UWM Olsztyn, Olsztyn Poland
Teppo
Rissanen, Plasec Oy, Helsinki Finland
Alan Rouse, N2 Broadband, Duluth
GA
Denis Sanche, PWGSC ITSD/IPC, Hull, QC Canada
Felix Schallock,
Ernst & Young, Vienna, Austria
Gaston Sloover, Fidelitas, Buenos
Aires Argentina
Arthur Spencer, UMASS Medical School, Worcester
MA
Rick Squires
Jeff Stehlin, HP
Koon Yaw TAN, Infocomm
Development Authority of Singapore, Singapore
Steven Weil, Seitel Leeds
& Associates, Seattle WA
Lance Wilson, Time Warner Cable/Broadband
IS, Orlando FL
Andrew Wortman, Naval Research Laboratory, Washington
DC
Carlos Zottman, Superior Tribunal de Justiça, Brasilia Brazil
Altri esperti di sicurezza che hanno collaborato alla redazione della Top 20 del 2001 e della Top 10 del 2000, fornendo le basi sulle quali è stata costruita la Top 20 del 2002.
Billy Austin, Intrusion.com| Appendice C - Versione italiana |
La versione italiana de "Le venti vulnerabilità più critiche per la sicurezza in Internet" è stata curata dal Centro Ricerche Data Security. | |||
| |||