Condividi tramite


Bollettino sulla sicurezza

Microsoft Security Bulletin MS02-039 - Critico

I sovraccarichi del buffer nel servizio di risoluzione di SQL Server 2000 potrebbero abilitare l'esecuzione del codice (Q323875)

Pubblicato: 24 luglio 2002 | Aggiornato: 31 gennaio 2003

Versione: 1.2

Pubblicato originariamente: 24 luglio 2002

Aggiornato: 31 gennaio 2003

Riepilogo

Chi deve leggere questo bollettino: Amministratori di sistema che usano Microsoft® SQL Server™ 2000 e Microsoft Desktop Engine 2000.

Impatto della vulnerabilità: tre vulnerabilità, il più grave dei quali potrebbe consentire a un utente malintenzionato di ottenere il controllo su un server interessato.

Valutazione massima gravità: critico

Raccomandazione: gli amministratori di sistema devono installare immediatamente la patch.

Nota: la patch rilasciata con questo bollettino è efficace per proteggere SQL Server 2000 e MSDE 2000 contro il virus worm "SQL Slammer". Tuttavia, questa patch è stata sostituita dalla patch rilasciata con MS02-061 che contiene correzioni per ulteriori vulnerabilità di sicurezza in questi prodotti. Microsoft consiglia ai clienti di SQL 2000 e MSDE 2000 di applicare la patch da MS02-061.

Software interessato:

  • Microsoft SQL Server 2000
  • Microsoft Desktop Engine (MSDE) 2000

Informazioni generali

Dettagli tecnici

Descrizione tecnica:

Questa patch di sicurezza non contiene una patch dall'articolo della Microsoft Knowledge Base 317748 necessaria per garantire il normale funzionamento di SQL Server 2000 e MSDE 2000. Se questa patch di sicurezza è stata applicata a un'installazione di SQL Server 2000 o MSDE 2000 prima di applicare l'hotfix dall'articolo patch della Microsoft Knowledge Patch 317748, è necessario rispondere a "no" se e quando viene richiesto di sovrascrivere i file per assicurarsi di non sovrascrivere i file dalla patch di sicurezza.

SQL Server 2000 e MSDE 2000 introducono la possibilità di ospitare più istanze di SQL Server in un singolo computer fisico. Ogni istanza opera per tutte le finalità e gli scopi come se fosse un server separato. Tuttavia, le istanze multiple non possono usare tutte la porta di sessione standard di SQL Server (TCP 1433). Mentre l'istanza predefinita è in ascolto sulla porta TCP 1433, le istanze denominate sono in ascolto su qualsiasi porta assegnata. Il servizio di risoluzione di SQL Server, che opera sulla porta UDP 1434, consente ai client di eseguire query sugli endpoint di rete appropriati da usare per una determinata istanza di SQL Server.

Qui sono presenti tre vulnerabilità di sicurezza. I primi due sono sovraccarichi del buffer. Inviando un pacchetto creato con attenzione al servizio di risoluzione, un utente malintenzionato potrebbe causare la sovrascrittura di parti della memoria di sistema (l'heap in un caso, lo stack nell'altro). La sovrascrittura con dati casuali genererebbe probabilmente l'errore del servizio SQL Server; sovrascriverlo con dati selezionati con attenzione potrebbe consentire all'utente malintenzionato di eseguire codice nel contesto di sicurezza del servizio SQL Server.

La terza vulnerabilità è una vulnerabilità Denial of Service. SQL usa un meccanismo keep-alive per distinguere tra istanze attive e passive. È possibile creare un pacchetto keep-alive che, quando inviato al servizio di risoluzione, provocherà la risposta di SQL Server 2000 con le stesse informazioni. Un utente malintenzionato che ha creato un pacchetto di questo tipo, ha spoofato l'indirizzo di origine in modo che sembri provenire da un sistema SQL Server 2000 e lo ha inviato a un sistema SQL Server 2000 adiacente potrebbe causare l'ingresso dei due sistemi in un ciclo di scambi di pacchetti keep-alive senza fine. Ciò utilizzerebbe le risorse in entrambi i sistemi, rallentando notevolmente le prestazioni.

Fattori di mitigazione:

Sovraccarichi del buffer nel servizio di risoluzione di SQL Server:

  • SQL Server 2000 viene eseguito in un contesto di sicurezza scelto dall'amministratore in fase di installazione. Per impostazione predefinita, viene eseguito come utente di dominio. Pertanto, anche se il codice dell'utente malintenzionato potrebbe eseguire qualsiasi azione desiderata nel database, non avrà necessariamente privilegi significativi a livello di sistema operativo se sono state seguite le procedure consigliate.
  • Il rischio rappresentato dalla vulnerabilità potrebbe essere mitigato, se possibile, bloccando la porta 1434 nel firewall.

Denial of Service tramite il servizio di risoluzione di SQL Server:

  • Un attacco potrebbe essere interrotto riavviando il servizio SQL Server 2000 in uno dei sistemi interessati. L'elaborazione normale su entrambi i sistemi riprende una volta cessato l'attacco.
  • La vulnerabilità non consente di ottenere alcun privilegio nel sistema. Si tratta solo di una vulnerabilità Denial of Service.

Valutazione gravità:

Sovraccarichi del buffer nel servizio di risoluzione di SQL Server: Server Internet Server Intranet Sistemi client
SQL Server 2000 Critico Critico None
Denial of Service tramite il servizio di risoluzione di SQL Server: Server Internet Server Intranet Sistemi client
SQL Server 2000 Critico Critico None

La valutazione precedente si basa sui tipi di sistemi interessati dalla vulnerabilità, sui modelli di distribuzione tipici e sull'effetto che l'exploit della vulnerabilità avrebbe su di essi.

Identificatore di vulnerabilità:

  • Sovraccarichi del buffer nel servizio di risoluzione di SQL Server: CVE-CAN-2002-0649
  • Denial of Service tramite il servizio di risoluzione di SQL Server: CVE-CAN-2002-0650

Versioni testate:

Microsoft ha testato SQL Server 2000 e 7.0 (e le versioni associate di MSDE) per valutare se sono interessati da queste vulnerabilità. Le versioni precedenti non sono più supportate e potrebbero non essere interessate da queste vulnerabilità.

Domande frequenti

Qual è l'ordine corretto per l'installazione di questa patch insieme all'hotfix descritto in317748?
Questa patch di sicurezza non contiene una patch dall'articolo della Knowledge Base 317748 necessaria per garantire il normale funzionamento di SQL Server 2000 e MSDE 2000. L'ordine di installazione corretto consiste nell'installare la patch di 317748 e quindi questa patch di sicurezza. Se questa patch di sicurezza è stata applicata a un'installazione di SQL Server 2000 o MSDE 2000 prima di applicare l'hotfix dall'articolo patch della Knowledge Base 317748, è necessario rispondere a "no" se e quando viene richiesto di sovrascrivere i file per assicurarsi di non sovrascrivere i file dalla patch di sicurezza.

Ricerca per categorie controllare che sia installata questa patch di sicurezza?
È necessario verificare che la versione di ssnetlib.dll nella cartella \MSSQL\BINN per l'istanza per cui è stata applicata la patch è: 2000.80.636.0 Se la versione del ssnetlib.dll nella cartella \MSSSQL\BINN è inferiore a 2000.80.636.0, sarà necessario riapplicare la patch di sicurezza. Tuttavia, Microsoft consiglia di applicare la patch di sicurezza più recente come descritto in MS02-061 poiché contiene correzioni per ulteriori vulnerabilità di sicurezza in questi prodotti.

Quali vulnerabilità eliminano questa patch?
Questa patch elimina tre vulnerabilità, entrambe coinvolte nel servizio di risoluzione di SQL Server 2000:

  • Le prime due vulnerabilità potrebbero consentire a un utente malintenzionato di ottenere un controllo significativo, e forse completo, su un'istanza di SQL Server interessata.
  • La terza vulnerabilità potrebbe consentire a un utente malintenzionato di causare l'attivazione di due server SQL Server interessati a uno scambio di informazioni senza fine, allo scopo di rallentare le prestazioni dei server.

Che cos'è il servizio di risoluzione di SQL Server 2000?
SQL Server 2000 introduce la possibilità di installare più copie di SQL Server in un singolo computer e di verificare che le copie siano server di database completamente separati. Queste copie, note come istanze, vengono eseguite indipendentemente l'una dall'altra. L'istanza predefinita è in ascolto sulla porta TCP 1433. Altre istanze non possono condividere la stessa porta e richiedere una porta personalizzata. La sfida consiste nell'abilitare i client DI SQL Server a trovare la porta su cui opera una particolare istanza; la soluzione è il servizio di risoluzione di SQL Server. La prima istanza di SQL Server funziona sempre sulla porta 1433. Le istanze aggiuntive vengono allocate in modo dinamico ai propri numeri di porta. Quando un client SQL deve connettersi a un'istanza aggiuntiva in SQL Server, esegue una query sul servizio di risoluzione di SQL Server (che opera sulla porta UDP 1434), che indica la porta usata dall'istanza richiesta.

La porta UDP 1434 è in genere bloccata nel firewall?
Dipende dallo scenario di distribuzione specifico.

  • Se una rete non ospita sql server connessi a Internet, la porta associata al servizio di risoluzione di SQL Server (e tutte le altre porte associate a SQL Server) devono essere bloccate.
  • Se una rete offre servizi SQL Server a Internet, ma nel server è presente una sola istanza, il servizio di risoluzione SQL può e deve essere bloccato.
  • Se una rete offre servizi SQL Server a Internet e dispone di più di un'istanza, il servizio di risoluzione SQL deve essere accessibile tramite il firewall.

Il servizio di risoluzione di SQL Server esiste nelle versioni precedenti di SQL Server?
No. Le versioni precedenti di SQL Server non supportano più istanze e il servizio di risoluzione di SQL Server non esisteva. Di conseguenza, nessun'altra versione di SQL Server è interessata dalle vulnerabilità.

La sezione Versioni interessate indica che Anche Microsoft Desktop Engine (MSDE) è interessato da queste vulnerabilità. Che cos'è MSDE?
MSDE è un motore di database creato e basato sulla tecnologia SQL Server 2000 e fornito come parte di diversi prodotti Microsoft, tra cui Microsoft Visual Studio e Microsoft Office Developer Edition. Esiste una connessione diretta tra le versioni di MSDE e le versioni di SQL Server. MSDE 2000 si basa su SQL Server 2000.

Sovraccarichi del buffer nel servizio di risoluzione di SQL Server (CVE-CAN-2002-0649):

Qual è l'ambito di questa vulnerabilità?
Ci sono in realtà due vulnerabilità, entrambe le quali sono vulnerabilità di sovraccarico del buffer. Un utente malintenzionato che ha sfruttato correttamente una delle vulnerabilità potrebbe ottenere la possibilità di causare l'errore del server o di eseguire il codice usando i privilegi di SQL Server. Anche se l'exploit delle vulnerabilità concederebbe all'utente malintenzionato il controllo completo sul database, non trasmetterebbe necessariamente il controllo completo sul sistema stesso. SQL Server 2000 può essere configurato per l'esecuzione con diversi livelli di privilegio; per impostazione predefinita, viene eseguito con i privilegi di un utente di dominio, anziché con un amministratore.

Quali sono le cause delle vulnerabilità?
Le vulnerabilità risultano perché una coppia di funzioni offerte dal servizio di risoluzione di SQL Server contiene buffer non controllati. Inviando una richiesta in formato speciale alla porta UDP 1434, è possibile eseguire il sovraccarico dei buffer associati a una delle funzioni.

Che cosa potrebbe consentire a un utente malintenzionato di eseguire questa vulnerabilità?
La vulnerabilità potrebbe consentire a un utente malintenzionato di eseguire una delle due azioni seguenti:

  • Causa l'esito negativo di SQL Server. Si tratta del tipo di attacco più semplice da montare e richiederebbe solo che l'utente malintenzionato eseguisse il buffer con dati casuali.
  • Modificare il funzionamento di SQL Server per eseguire le funzioni di scelta dell'utente malintenzionato. Ciò richiederebbe che l'utente malintenzionato eseguisse il buffer con dati scelti con precisione.

Chi potrebbe sfruttare la vulnerabilità?
Qualsiasi utente che potrebbe recapitare una richiesta a SQL Server (tramite la porta UDP 1434) in un server interessato potrebbe sfruttare la vulnerabilità.

Se l'utente malintenzionato ha sfruttato la vulnerabilità per causare un errore di SQL Server, cosa deve fare l'amministratore per ripristinare il normale funzionamento?
L'amministratore potrebbe riprendere il normale funzionamento riavviando il servizio SQL Server.

Se l'utente malintenzionato ha sfruttato la vulnerabilità per fare in modo che SQL Server esegua funzioni di propria scelta, quali privilegi eseguirebbero il codice dell'utente malintenzionato?
Chiaramente, il codice dell'utente malintenzionato avrebbe il controllo completo sulle funzioni del database, perché verrebbe eseguito nel contesto di sicurezza di SQL Server stesso. Ma potrebbe avere pochi privilegi all'esterno di SQL Server. Durante l'installazione di SQL Server 2000, l'amministratore deve scegliere l'account di Windows in cui deve essere eseguito SQL Server. Per impostazione predefinita, il servizio SQL Server viene eseguito come utente di dominio. Se sono state seguite le procedure consigliate e è stato scelto un contesto utente normale, l'utente malintenzionato non otterrebbe il controllo amministrativo sul sistema operativo, né privilegi amministrativi sul dominio.

In che modo la patch elimina le vulnerabilità?
La patch garantisce che il servizio di risoluzione di SQL Server limiti correttamente le dimensioni dei dati di input e impedisca l'overrunning di uno dei relativi buffer.

Denial of Service tramite SQL Server Resolution Service (CVE-CAN-2002-0650):

Qual è l'ambito di questa vulnerabilità?
Si tratta di una vulnerabilità Denial of Service . Un utente malintenzionato potrebbe usare la vulnerabilità per rallentare le prestazioni di un'istanza di SQL Server interessata. La quantità precisa di rallentamento delle prestazioni del sistema dipende da diversi fattori, ad esempio la velocità del processore e la memoria in SQL Server, il numero di sistemi che attaccano il server e così via. Non è stato possibile usare la vulnerabilità per causare l'esito negativo del server, né fornire all'utente malintenzionato alcun privilegio nel sistema. Il server riprende il normale funzionamento non appena l'attacco è stato interrotto.

Che cosa causa la vulnerabilità?
La vulnerabilità risulta a causa di un difetto nel meccanismo keep-alive di SQL Server 2000, che opera tramite il servizio di risoluzione. Se un pacchetto di dati specifico viene inviato alla funzione keep-alive di SQL Server 2000, risponderà al mittente con un pacchetto identico. Tramite lo spoofing dell'indirizzo di origine di un pacchetto di questo tipo, sarebbe possibile che due sistemi SQL Server 2000 avviino un ciclo infinito di scambi di pacchetti.

Qual è la funzione keep-alive in SQL Server 2000?
SQL Server 2000 include un meccanismo che consente di determinare se un server è attivo o meno. A tale scopo, inviare un cosiddetto pacchetto keep-alive al servizio di risoluzione di SQL Server sulla porta UDP 1434 e ascoltare una risposta.

Qual è il problema dell'implementazione della funzione keep-alive in SQL Server 2000?
È possibile creare un pacchetto keep-alive la cui risposta sarà identica alla richiesta. Se un'istanza di SQL Server inviasse un pacchetto di questo tipo a un altro SQL Server, verrà immesso un ciclo inesauribile di invio dello stesso pacchetto l'uno all'altro. Questa attività potrebbe utilizzare la maggior parte o tutta la larghezza di banda disponibile nei due computer.

Questa situazione potrebbe verificarsi naturalmente?
No. La situazione coinvolta nella vulnerabilità non poteva verificarsi in condizioni normali. SQL Server in genere non genera un pacchetto keep-alive con le caratteristiche necessarie. Tuttavia, potrebbe essere possibile che un utente malintenzionato introduca tale pacchetto per avviare uno scambio, che successivamente sarebbe auto-sostenuto.

Come può un utente malintenzionato eseguire questa operazione?
Si supponga che siano presenti due server SQL con la vulnerabilità Server 1 e Server 2. Si supponga ora che l'utente malintenzionato abbia creato il pacchetto keep-alive necessario e modificato l'indirizzo di origine in modo che contenga l'indirizzo del server 1, quindi inviato il pacchetto a Server 2. Verrà avviato lo scambio, perché Server 2 risponde al server 1, che risponderà a Server 2, ad infinitum.

Cosa potrebbe fare questa vulnerabilità per consentire a un utente malintenzionato di eseguire?
Un utente malintenzionato potrebbe usare questa vulnerabilità per usare le risorse in due sistemi SQL Server 2000 contemporaneamente.

Chi potrebbe sfruttare la vulnerabilità?
Qualsiasi utente che potrebbe inviare dati a una porta del servizio di risoluzione di SQL Server interessata potrebbe sfruttare la vulnerabilità.

Quanto dura un attacco?
Una volta avviato, un attacco continua fino a quando uno dei computer non ha interrotto l'invio di pacchetti. Questo problema può verificarsi perché il sistema è stato riavviato, il servizio SQL Server è stato riavviato o la connettività tra i due server è stata persa.

Una volta superato l'attacco, il server riprenderebbe il normale funzionamento da solo?
Sì.

Quante risorse di un sistema potrebbero essere monopolizzate attraverso un tale attacco?
Dipenderebbe dalle specifiche dell'attacco. Ad esempio, sarebbe possibile coinvolgere più server in un attacco contro un singolo server. Allo stesso modo, dipenderebbe dalla larghezza di banda di rete tra i sistemi, dalla velocità del processore nei rispettivi computer e così via.

In che modo la patch elimina la vulnerabilità?
La patch elimina il meccanismo keep-alive corrente e determina quali server sono attivi e quali sono passivi tramite un meccanismo diverso. Dopo aver applicato la patch, un sistema DI SQL Server 2000 non risponderà più ai pacchetti keep-alive.

Disponibilità delle patch

Percorsi di download per questa patch

Informazioni aggiuntive su questa patch

Piattaforme di installazione:

Questa patch può essere installata nei sistemi che eseguono SQL Server 2000 Service Pack 2.

Inclusione nei Service Pack futuri:

La correzione per questo problema verrà inclusa in SQL Server 2000 Service Pack 3.

Riavvio necessario: No. Il servizio SQL Server deve essere riavviato solo dopo l'applicazione della patch.

È possibile disinstallare patch: Sì.

Patch sostituite: Nessuno.

Verifica dell'installazione delle patch:

  • Per assicurarsi che la correzione sia installata correttamente, verificare i singoli file consultando l'indicatore di data/ora dei file elencati nel manifesto del file nell'articolo della Microsoft Knowledge Base Q323875.

Avvertenze:

None

Localizzazione:

Le versioni localizzate di questa patch sono disponibili nelle posizioni descritte in "Disponibilità patch".

Recupero di altre patch di sicurezza:

Le patch per altri problemi di sicurezza sono disponibili nelle posizioni seguenti:

  • Le patch di sicurezza sono disponibili nell'Area download Microsoft e possono essere trovate più facilmente eseguendo una ricerca di parole chiave "security_patch".
  • Le patch per le piattaforme consumer sono disponibili nel sito Web WindowsUpdate

Altre informazioni:

Riconoscimenti

Microsoft ringrazia David Litchfield di Next Generation Security Software Ltd. per segnalare questi problemi e collaborare con microsoft per proteggere i clienti.

Supporto:

  • L'articolo della Microsoft Knowledge Base Q323875 illustra questo problema e sarà disponibile circa 24 ore dopo il rilascio di questo bollettino. Gli articoli della Knowledge Base sono disponibili nel sito Web del supporto online Microsoft.
  • Il supporto tecnico è disponibile in Servizi supporto tecnico Microsoft. Non sono previsti addebiti per le chiamate di supporto associate alle patch di sicurezza.

Risorse di sicurezza: il sito Web Microsoft TechNet Security fornisce informazioni aggiuntive sulla sicurezza nei prodotti Microsoft.

Declinazione di responsabilità:

Le informazioni fornite nella Microsoft Knowledge Base vengono fornite "così com'è" senza garanzia di alcun tipo. Microsoft dichiara tutte le garanzie, espresse o implicite, incluse le garanzie di commerciabilità e idoneità per uno scopo specifico. In nessun caso, Microsoft Corporation o i suoi fornitori saranno responsabili di qualsiasi danno, incluso diretto, indiretto, accidentale, consequenziale, perdita di profitti aziendali o danni speciali, anche se Microsoft Corporation o i suoi fornitori sono stati informati della possibilità di tali danni. Alcuni stati non consentono l'esclusione o la limitazione della responsabilità per danni consequenziali o accidentali, pertanto la limitazione precedente potrebbe non essere applicata.

Revisioni:

  • V1.0 (24 luglio 2002): Bollettino creato.
  • V1.1 (25 luglio 2002): aggiornato per notare che MSDE 2000 è interessato dalle vulnerabilità.
  • V1.2 (31 gennaio 2003): aggiornato per consigliare la sostituzione da MS02-061 e chiarire l'ordine di installazione quando viene applicato hotfix 317748 insieme a questa patch di sicurezza.

Costruito al 2014-04-18T13:49:36Z-07:00