La vulnerabilità della decapsulazione del GRE di Cisco IOS può essere sfruttata in remoto senza autenticazione e senza necessità di interazione da parte dell'utente. Se utilizzato, l'utente malintenzionato potrebbe causare l'inoltro da parte del software Cisco IOS? di pacchetti IPv4 creati appositamente che potrebbero essere utilizzati per ignorare gli elenchi di controllo di accesso. Il vettore di attacco utilizza il protocollo IP 47, Generic Routing Encapsulation (GRE). Questa vulnerabilità non è coperta da un ID CVE.
Questo documento contiene informazioni per aiutare i clienti Cisco a mitigare i tentativi di sfruttare la vulnerabilità della decapsulazione del GRE di Cisco IOS. Questa vulnerabilità influisce sui dispositivi che eseguono il software Cisco IOS configurato con i tunnel GRE. Come definito in origine nella RFC1701, il campo Intestazione GRE contiene un numero di bit di flag deprecati da RFC2784. Questa vulnerabilità non interessa le versioni del software Cisco IOS che supportano RFC2784.
Le informazioni sul software vulnerabile, non interessato e fisso sono disponibili nella risposta di sicurezza PSIRT:
Cisco Security Risposta a: Vulnerabilità del decapsulamento GRE di Cisco IOS
I dispositivi Cisco forniscono diverse contromisure per la vulnerabilità della decapsulazione del GRE di Cisco IOS. La protezione del tunnel sotto forma di incapsulamento IPSec è il mezzo più efficace per ridurre gli attacchi. Per ridurre questo attacco, è possibile anche applicare un elenco degli accessi nella direzione in entrata del traffico GRE e filtrare il protocollo GRE da tutti gli indirizzi di origine ad eccezione di quelli attendibili. Si noti che un attacco può comunque avere esito positivo se il pacchetto GRE viene falsificato utilizzando un indirizzo IP di origine attendibile autorizzato dall'elenco degli accessi applicato.
Per questi dispositivi sono disponibili informazioni specifiche su mitigazione e identificazione
Attenzione: l'efficacia di qualsiasi tecnica di mitigazione dipende dalle situazioni specifiche del cliente, come il mix di prodotti, la topologia di rete, il comportamento del traffico e la missione organizzativa. Come per qualsiasi modifica apportata alla configurazione, valutare l'impatto della configurazione prima di applicare la modifica.
Il seguente elenco degli accessi consente l'uso del protocollo IP numero 47 (GRE) su pacchetti provenienti da un singolo host noto (ad esempio, 192.0.2.1) e destinati al router IOS (ad esempio, 192.0.2.2). Tutti gli altri pacchetti GRE sono filtrati.
Le voci aggiunte agli elenchi degli accessi devono essere implementate come parte di un elenco di controllo degli accessi di transito che filtra il traffico di transito e di confine ai punti di ingresso della rete.
Per ulteriori informazioni sugli ACL, consultare il documento Access Control List transit: Filtering at Your Edge.
!-- Allow the GRE protocol from trusted source addresses only. !-- Block GRE from all other source addresses. access-list 100 permit gre host 192.0.2.1 host 192.0.2.2 access-list 100 deny gre any any !-- Permit all other traffic not specifically blocked. access-list 100 permit ip any any !-- Apply access list to interface in the inbound direction. interface Ethernet 0/0 ip access-group 100 in
Questa vulnerabilità può essere sfruttata da un pacchetto oggetto di spoofing. La protezione anti-spoof sotto forma di inoltro di percorso inverso unicast può fornire una riduzione limitata se configurata correttamente. Questa funzione non deve essere utilizzata per fornire una riduzione del 100% in quanto i pacchetti oggetto di spoofing possono ancora entrare nella rete dall'interfaccia prevista da uRPF o consentita dagli elenchi degli accessi anti-spoofing. Inoltre, occorre fare in modo che la modalità uRPF appropriata (libera o rigida) sia configurata in modo da garantire che i pacchetti legittimi non vengano scartati.
Ulteriori informazioni sull'inoltro inverso dei percorsi unicast sono disponibili all'indirizzo http://www.cisco.com/en/US/docs/ios/12_2t/12_2t13/feature/guide/ft_urpf.html.
L'applicazione di una chiave ID del tunnel può contribuire a risolvere questo problema, ma il comando non è inteso come funzionalità di sicurezza e la chiave può essere trovata sniffando pacchetti GRE legittimi. Per ulteriori informazioni su questa funzione, consultare il documento sulla configurazione delle interfacce logiche - configurazione della chiave di identificazione del tunnel.
Sul Supervisor 720, i tunnel GRE che usano una chiave ID vengono elaborati in un software che può influire sulle prestazioni.
Dopo aver applicato l'elenco degli accessi all'interfaccia in entrata del GRE, il comando show access-list <numero acl>può essere usato per identificare il numero di pacchetti da filtrare. I pacchetti filtrati devono essere esaminati per determinare se sono tentativi di sfruttare questo problema. Di seguito è riportato l'output di esempio per show access-list 100:
Edge-Router#show access-list 100 Extended IP access list 100 10 permit gre host 192.0.2.1 host 192.0.2.2 (141 matches) 20 deny gre any any (100 matches) 30 permit ip any any
Nell'esempio precedente, 100 pacchetti GRE sono stati scartati dall'elenco degli accessi configurato in entrata sull'interfaccia Ethernet 0/0.
Attenzione: l'efficacia di qualsiasi tecnica di mitigazione dipende dalle situazioni specifiche del cliente, come il mix di prodotti, la topologia di rete, il comportamento del traffico e la missione organizzativa. Come per qualsiasi modifica apportata alla configurazione, valutare l'impatto della configurazione prima di applicare la modifica.
La crittografia dei tunnel GRE con IPSec è il mezzo più efficace per prevenire gli attacchi. Per ulteriori informazioni sulla crittografia del GRE con IPSec, fare riferimento alle seguenti risorse:
Il seguente elenco degli accessi filtra il protocollo IP numero 47 (GRE) da tutti gli host. I router VPN che terminano il GRE incapsulato in IPSec non devono ricevere pacchetti GRE non crittografati sull'interfaccia in entrata fisica.
Le voci aggiunte agli elenchi degli accessi devono essere implementate come parte di un elenco di controllo degli accessi di transito che filtra il traffico di transito e di confine ai punti di ingresso della rete.
Per ulteriori informazioni sugli ACL, consultare il documento Access Control List transit: Filtering at Your Edge.
Il seguente elenco degli accessi consente il traffico IPSec proveniente da un singolo host trusted (ad esempio, 192.0.2.1) e destinato al router di terminazione IPSec (ad esempio, 192.0.2.2).
!-- Block all GRE to the IPSec terminating physical interface. access-list 100 deny gre any any !-- Permit ESP (IP protocol 50) and !-- ISAKMP UDP ports 500 and 4500. access-list 100 permit esp host 192.0.2.1 host 192.0.2.2 access-list 100 permit udp host 192.0.2.1 host 192.0.2.2 eq 500 access-list 100 permit udp host 192.0.2.1 host 192.0.2.2 eq 4500 !-- Permit all other traffic. access-list 100 permit ip any any !-- Apply access list to interface in the inbound direction. interface Ethernet 0/0 ip access-group 100 in
Per l'elenco degli accessi all'interfaccia potrebbe essere necessaria una voce specifica nell'elenco degli accessi per i pacchetti GRE dall'indirizzo IP di origine del tunnel GRE all'indirizzo IP di destinazione del tunnel GRE, se la versione IOS in esecuzione sul dispositivo non dispone della correzione per l'ID bug Cisco CSCdu58486 (solo utenti registrati).
L'applicazione di una chiave ID del tunnel può contribuire a risolvere questo problema, ma il comando non è inteso come funzionalità di sicurezza e la chiave può essere trovata sniffando pacchetti GRE legittimi. Per ulteriori informazioni su questa funzione, consultare il documento sulla configurazione delle interfacce logiche - configurazione della chiave di identificazione del tunnel.
Dopo aver applicato l'elenco degli accessi in transito all'interfaccia fisica in entrata, il comando show access-list <numero acl> può essere usato per identificare il numero di pacchetti da filtrare. I pacchetti filtrati devono essere esaminati per determinare se sono tentativi di sfruttare questa vulnerabilità. Di seguito è riportato l'output di esempio per show access-list 100:
Edge-Router#show access-list 100 Extended IP access list 100 10 deny gre any any (100 matches) 20 permit esp host 192.0.2.1 host 192.0.2.2 30 permit udp host 192.0.2.1 host 192.0.2.2 eq 500 40 permit udp host 192.0.2.1 host 192.0.2.2 eq 4500 50 permit ip any any
Nell'esempio precedente, 100 pacchetti GRE sono stati scartati dall'elenco degli accessi configurato in entrata sull'interfaccia Ethernet 0/0.
Attenzione: l'efficacia di qualsiasi tecnica di mitigazione dipende dalle situazioni specifiche del cliente, come il mix di prodotti, la topologia di rete, il comportamento del traffico e la missione organizzativa. Come per qualsiasi modifica apportata alla configurazione, valutare l'impatto della configurazione prima di applicare la modifica.
I seguenti elenchi degli accessi permettono di usare il protocollo IP numero 47 (GRE) per i pacchetti da un singolo host trusted (ad esempio, 192.0.2.1) e destinati al router IOS con terminazione GRE (ad esempio, 192.0.2.1) 192.0.2.2). Tutti gli altri pacchetti GRE sono filtrati.
PIX 6.x
!-- Allow the GRE protocol from trusted source addresses only. !-- Block GRE from all other source addresses. access-list block-gre permit gre host 192.0.2.1 host 192.0.2.2 access-list block-gre deny gre any any !-- Permit/deny all other traffic in accordance with existing security !-- policies and configurations. !-- Apply access list to interface inbound. access-group block-gre in interface outside
PIX/ASA 7.x
Come dispositivo di transito, consenti solo agli indirizzi IP di origine attendibili di inviare i pacchetti GRE ai dispositivi all'interno del firewall.
!-- Allow the GRE protocol from trusted source addresses only. !-- Block GRE from all other source addresses. access-list block-gre extended permit gre host 192.0.2.1 host 192.0.2.2 access-list block-gre extended deny gre any any !-- Permit/deny all other traffic in accordance with existing security !-- policies and configurations. !-- Apply access list to interface in the inbound direction. access-list block-gre extended permit ip any any access-group block-gre in interface outside
PIX 6.x
Nell'esempio, sono stati ricevuti e bloccati 100 pacchetti GRE.
pix#show access-list block-gre access-list block-gre; 2 elements access-list block-gre line 1 permit gre host 192.0.2.1 host 192.0.2.2 (hitcnt=0) access-list block-gre line 2 deny gre any (hitcnt=100)
PIX/ASA 7.x
Nell'esempio, sono stati ricevuti e bloccati 100 pacchetti GRE.
asa#show access-list block-gre access-list block-gre; 2 elements access-list block-gre line 1 extended permit gre host 192.0.2.1 host 192.0.2.2 (hitcnt=50) access-list block-gre line 2 extended deny gre any (hitcnt=100)
In PIX/ASA 7.x, se il GRE è autorizzato attraverso il firewall, usare il comando show conn | include GRE può essere utilizzato per verificare le connessioni GRE specifiche in transito attraverso il firewall. È necessario esaminare le connessioni GRE stabilite in modo imprevisto per determinare se si tratta di tentativi di sfruttare il problema. Di seguito è riportato un esempio di output per show conn | includere GRE:
asa#show conn | include GRE GRE out 192.0.2.1:0 in 192.0.2.2:0 idle 0:00:15 bytes 3120 flags GRE out 192.0.2.1:0 in 192.0.2.2:0 idle 0:00:15 bytes 2600 flags
È possibile configurare NetFlow sui router di perimetro Internet e di terminazione GRE per determinare se sono in corso tentativi di sfruttare questa vulnerabilità.
router#show ip cache flow IP packet size distribution (15014 total packets): 1-32 64 96 128 160 192 224 256 288 320 352 384 416 448 480 .000 .000 .000 1.00 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 512 544 576 1024 1536 2048 2560 3072 3584 4096 4608 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 IP Flow Switching Cache, 4456704 bytes 1 active, 65535 inactive, 2 added 30 lager polls, 0 flow al loc failures Active flows timeout in 30 minutes Inactive flows timeout in 15 seconds IP Sub Flow Cache, 402120 bytes 0 active, 16384 inactive, 0 added, 0 added to flow 0 al loc failures, 0 force free 1 chunk, 1 chunk added last clearing of statistics never Protocol Total Flows Packets Bytes Packets Active(Sec) Idle(Sec) -------- Flows /Sec /Flow /Pt /Sec /Flow /Flow TCP-WWW 2 0.0 1 60 0.0 0.0 15.5 TCP-other 4 0.0 1 60 0.0 0.0 15.7 UDP-other 4 0.0 2 162 0.0 2.7 15.6 ICMP 11 0.0 4 85 0.0 3.0 15.7 GRE 2015 50.0 100 124 0.3 8.7 15.6 IP-other 1 0.0 34 136 0.0 33.3 15.6 Total: 2037 50.0 4 124 0.3 1.3 15.6 SrcIf SrcIPaddress DstIf DstIPaddress Pr SrcP DstP Pkts Fa0/0 192.168.0.1 Fa2/0 192.168.0.2 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.3 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.4 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.5 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.6 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.7 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.8 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.9 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.10 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.11 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.12 2F 0000 0000 100 ---------- Output Truncated ----------
Nell'esempio precedente, è presente un numero molto elevato di flussi GRE (Protocol Hex 2F) da un singolo indirizzo IP a più indirizzi IP di destinazione. Sui router perimetrali Internet e potenzialmente sui router di terminazione GRE, ciò può indicare un tentativo di sfruttare questa vulnerabilità e deve essere confrontato con l'utilizzo di base di queste porte sui dispositivi di monitoraggio.
Per visualizzare solo i flussi GRE (Protocol Hex 2F), usare il comando show ip cache flow | inc SrcIf|2F può essere utilizzato come indicato di seguito:
Router#show ip cache flow | inc SrcIf|2F SrcIf SrcIPaddress DstIf DstIPaddress Pr SrcP DstP Pkts Fa0/0 192.168.0.1 Fa2/0 192.168.0.2 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.3 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.4 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.5 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.6 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.7 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.8 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.9 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.10 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.11 2F 0000 0000 100 Fa0/0 192.168.0.1 Fa2/0 192.168.0.12 2F 0000 0000 100 ---------- Output Truncated ----------
IL PRESENTE DOCUMENTO VIENE FORNITO "COSÌ COM'È" E NON IMPLICA ALCUNA GARANZIA O CONCESSIONE, INCLUSE LE GARANZIA DI COMMERCIABILITÀ O IDONEITÀ PER UNO SCOPO SPECIFICO. L'UTILIZZO DA PARTE DELL'UTENTE DELLE INFORMAZIONI CONTENUTE NEL DOCUMENTO O NEI MATERIALI ACCESSIBILI DAL DOCUMENTO AVVIENE A PROPRIO RISCHIO. CISCO SI RISERVA IL DIRITTO DI MODIFICARE O AGGIORNARE IL PRESENTE DOCUMENTO IN QUALSIASI MOMENTO.
Revisione 1.0 |
12 settembre 2006 |
Pubblicazione iniziale. |
Le informazioni complete sulla segnalazione delle vulnerabilità della sicurezza nei prodotti Cisco, su come ottenere assistenza in caso di incidenti relativi alla sicurezza e su come registrarsi per ricevere informazioni sulla sicurezza da Cisco, sono disponibili sul sito Web di Cisco all'indirizzo https://sec.cloudapps.cisco.com/security/center/resources/security_vulnerability_policy.html. Ciò include istruzioni per le richieste della stampa relative agli avvisi di sicurezza Cisco. Tutti gli avvisi sulla sicurezza Cisco sono disponibili all'indirizzo http://www.cisco.com/go/psirt.