
1. Contexte
Le BGP Hijacking est une attaque qui consiste à annoncer frauduleusement des préfixes IP appartenant à un autre réseau, afin de détourner, intercepter ou perturber le trafic Internet.
Des incidents notables comme l’affaire MyEtherWallet (2018) ou le détournement de trafic vers Google (2017) ont montré qu’un seul ASN compromis ou mal configuré peut avoir des conséquences globales.
Pour contrer ces menaces, deux technologies complémentaires peuvent être utilisées :
- RPKI (Resource Public Key Infrastructure) pour vérifier la légitimité de l’annonce BGP.
- BGP FlowSpec pour propager instantanément des règles de filtrage aux routeurs et bloquer le trafic lié à une annonce malveillante.
2. RPKI : Validation cryptographique des annonces BGP
RPKI permet de vérifier qu’un ASN est autorisé à annoncer un préfixe IP.
Les informations d’autorisation (ROA – Route Origin Authorizations) sont publiées par les RIR (ARIN, RIPE, APNIC…) et peuvent être validées automatiquement par les routeurs.
Exemple configuration RPKI sur Cisco IOS-XR
router bgp 65000
rpki server tcp 192.0.2.10 port 323
bgp rpki refresh 600
neighbor 203.0.113.1 remote-as 65100
neighbor 203.0.113.1 route-policy RPKI-VALIDATE in
route-policy RPKI-VALIDATE
if validation-state is invalid then
drop
elseif validation-state is notfound then
pass
else
pass
endif
end-policy
3. BGP FlowSpec : Réaction dynamique
BGP FlowSpec (RFC 5575 et 8955) permet de distribuer des règles de filtrage dynamiques via BGP, notamment pour bloquer du trafic ciblé.
Exemple Cisco IOS-XR : blocage d’un préfixe détourné
router bgp 65000
address-family ipv4 flowspec
neighbor 203.0.113.2 remote-as 65200
neighbor 203.0.113.2 activate
exit-address-family
flow route ipv4
match destination 198.51.100.0/24
then discard
Exemple FRRouting (FRR) : règle FlowSpec
router bgp 65000
address-family ipv4 flowspec
neighbor 203.0.113.3 remote-as 65200
neighbor 203.0.113.3 activate
exit-address-family
flowspec ipv4
match destination 198.51.100.0/24
then rate-limit 0
4. Scénario concret : détection + mitigation
- Détection : un système de surveillance (ex : BGPalerter) détecte une annonce BGP pour 198.51.100.0/24 provenant d’un ASN non autorisé.
- Validation RPKI : le routeur marque l’annonce comme « invalid » et la rejette.
- Propagation FlowSpec : simultanément, le NOC envoie via BGP FlowSpec une règle discard pour ce préfixe sur tous les routeurs en périphérie.
- Notification SIEM : l’événement est enregistré et envoyé vers le SOC.
5. Automatisation complète
On peut automatiser cette défense en connectant la détection (BGPalerter, ExaBGP) à une API qui injecte directement des règles FlowSpec.
Exemple avec ExaBGP
neighbor 203.0.113.4 {
router-id 192.0.2.20;
local-address 192.0.2.20;
local-as 65000;
peer-as 65200;
family {
ipv4 flowspec;
}
api {
processes [ flowspec-inject ];
}
}
Script Python d’injection FlowSpec
import sys
for line in sys.stdin:
if "ALERT" in line:
print("flow route add match destination 198.51.100.0/24 then discard")
sys.stdout.flush()
6. Intégration avec un SIEM
Chaque action FlowSpec ou rejet RPKI peut être journalisé et transmis au SIEM (Splunk, ELK, Graylog) pour :
- Corréler avec d’autres incidents (DoS, anomalies de routage)
- Déclencher des alertes en temps réel
- Produire des rapports de conformité
7. Bonnes pratiques
- Activer RPKI sur tous les points d’échange BGP
- Limiter la durée de vie des règles FlowSpec pour éviter les blocages prolongés
- Superviser les annonces BGP avec un outil indépendant (RIPE RIS, BGPMon)
- Automatiser la réponse mais garder un contrôle humain pour validation
Conclusion
La combinaison RPKI + BGP FlowSpec permet de détecter et bloquer quasi instantanément un BGP Hijacking.
Cette approche réduit drastiquement le temps d’exposition, mais nécessite une infrastructure BGP bien configurée et un processus d’automatisation fiable.