import React, { useState } from "react"; import { Shield, AlertTriangle, Radio, Car, Tv, Bug, Lock, Wrench, Target, Zap, ChevronRight, Calendar, MapPin, Users, TrendingUp, Activity, Skull, Network, HardDrive, } from "lucide-react"; // ───────────────────────────────────────────────────────────── // DATA — Deux cas d'étude IoT // ───────────────────────────────────────────────────────────── const CASES = { jeep: { id: "jeep", codename: "CHRYSLER-2015-001", title: "Jeep Cherokee Hack", year: "2015", subtitle: "Prise de contrôle à distance via réseau cellulaire", icon: Car, accent: "#ff3b30", stats: [ { label: "Véhicules rappelés", value: "1.4M", icon: Car }, { label: "Chercheurs", value: "2", icon: Users }, { label: "Réseau exploité", value: "Sprint", icon: Radio }, { label: "Distance d'attaque", value: "∞ km", icon: Target }, ], timeline: [ { phase: "01", title: "Reconnaissance", text: "Miller & Valasek identifient le système Uconnect (Harman-Kardon) comme cible. Tout véhicule Sprint connecté est scannable depuis n'importe quel téléphone du même opérateur — la flotte forme un sous-réseau adressable.", }, { phase: "02", title: "Pivot Wi-Fi → Cellulaire", text: "Première intrusion via le hotspot Wi-Fi du véhicule, puis exploitation d'un port D-Bus ouvert (port 6667) accessible directement depuis le réseau cellulaire Sprint — aucun firewall en sortie.", }, { phase: "03", title: "Compromission de la head unit", text: "Code arbitraire exécuté sur le système Linux du Uconnect via des services D-Bus non authentifiés. À ce stade : contrôle de la radio, GPS, climatisation.", }, { phase: "04", title: "Pivot vers le CAN bus", text: "Reflashing du microcontrôleur Renesas V850 via une liaison SPI depuis le processeur OMAP. Un firmware modifié permet d'envoyer des trames CAN arbitraires.", }, { phase: "05", title: "Contrôle physique", text: "Direction, freins, accélérateur, transmission, frein de parking : tout est pilotable à distance. Démonstration publique sur autoroute avec un journaliste de Wired comme cobaye.", }, ], why: [ { title: "Architecture plate sans segmentation", text: "Aucune séparation logique entre le réseau infotainment (non critique) et le CAN bus (sécurité fonctionnelle). Le V850 acceptait du firmware non signé via SPI.", }, { title: "Modèle de menace obsolète", text: "Les constructeurs raisonnaient en termes d'accès physique au véhicule. Le scénario « attaquant distant via opérateur télécom » n'était pas dans le threat model.", }, { title: "Services exposés sans authentification", text: "D-Bus écoutait sur 0.0.0.0 sur un port joignable depuis Internet via Sprint. Aucune ACL, aucun TLS, aucun secret partagé.", }, { title: "Pas d'isolation opérateur", text: "Sprint n'isolait pas les véhicules entre eux sur son réseau privé : un appareil quelconque pouvait scanner tous les Uconnect du pays.", }, ], problems: [ "Surface d'attaque massive (1.4M véhicules joignables depuis n'importe quel téléphone Sprint)", "Danger physique direct : freins, direction et accélérateur contrôlables à 110 km/h", "Détection impossible côté conducteur — aucune télémétrie de sécurité", "Patch impossible OTA en 2015 : rappel physique nécessaire pour 1.4M véhicules", "Le V850 acceptait n'importe quel firmware via SPI — pas de signature cryptographique", ], solutions: [ { title: "Segmentation réseau interne (gateway CAN)", text: "Insertion d'une passerelle filtrante entre l'infotainment et le CAN bus, avec liste blanche stricte des trames autorisées.", }, { title: "Firmware signé partout", text: "Secure boot et signature cryptographique obligatoire sur tous les ECU, y compris les microcontrôleurs périphériques (V850 et équivalents).", }, { title: "OTA sécurisées (Uptane)", text: "Adoption d'Uptane comme standard de mise à jour OTA résistant aux compromissions de serveur, déployé depuis chez les principaux constructeurs.", }, { title: "Isolation au niveau opérateur", text: "Sprint a fermé l'accès au port 6667 côté APN et isolé les véhicules sur des sous-réseaux dédiés sans communication transverse.", }, { title: "ISO/SAE 21434 & UNECE R155", text: "Standards apparus après l'incident : threat modeling cybersécurité obligatoire pour l'homologation des véhicules à partir de 2022.", }, ], probability: 3, impact: 4, probReason: "À la divulgation : 1.4M véhicules vulnérables, scan automatisable depuis n'importe quel terminal Sprint. Un PoC fonctionnel existait, l'exploit était reproductible — probable.", impactReason: "Contrôle distant des freins et de la direction à haute vitesse = danger physique direct, mort possible. Sanction juridique potentielle pour le constructeur. Atteinte irréversible (un mort) — critique.", risks: [ { id: "R1", title: "Énumération à distance de la flotte Uconnect sur le réseau Sprint", description: "Scan d'IP automatisé depuis n'importe quel terminal Sprint pour cartographier les 1.4M véhicules joignables. Peut être incorporé dans un worm.", probability: 4, impact: 1, probHypothesis: "Aucun isolement L2/L3 entre clients Sprint. Le port D-Bus 6667 répond ou ferme selon la présence du Uconnect, c'est un signal trivialement détectable. Outillage de scan standard (nmap) suffit.", impactHypothesis: "Aucune compromission, aucune action sur le véhicule — seulement de la reconnaissance. Mais c'est le prérequis indispensable de toutes les attaques de masse, donc à ne pas sous-estimer dans l'analyse globale.", solution: "Isolation L2/L3 sur l'APN opérateur (Sprint a depuis cloisonné ses véhicules sur un sous-réseau dédié sans communication transverse). Côté véhicule : fermeture du port D-Bus en sortie, ACL stricte limitant les connexions entrantes aux serveurs constructeur authentifiés via TLS mutuel.", }, { id: "R2", title: "Exécution de code à distance sur la head unit Linux via D-Bus port 6667", description: "Service D-Bus exposé sur 0.0.0.0 sans authentification depuis le réseau cellulaire. Permet d'obtenir un shell sur le système Linux du Uconnect.", probability: 3, impact: 2, probHypothesis: "Exploit fonctionnel documenté par Miller & Valasek. Reproductible pour qui dispose du PoC. Nécessite expertise mais pas génie — donc plus d'un acteur à l'horizon de la divulgation.", impactHypothesis: "À ce stade, seul l'infotainment est compromis : radio, GPS, climatisation, écran. Gêne notable pour le conducteur mais pas de danger physique direct. Dégradation partielle du service.", solution: "Service D-Bus en écoute locale uniquement (127.0.0.1), authentification mutuelle TLS sur tous les services exposés, désactivation des services non essentiels (principle of least privilege), firewall iptables/netfilter restrictif sur la head unit avec règles par défaut DROP.", }, { id: "R3", title: "Reflashing du microcontrôleur Renesas V850 avec firmware non signé via SPI", description: "Depuis l'OMAP compromis, écriture d'un firmware modifié sur le V850 qui interface avec le CAN bus. Aucune vérification de signature côté V850.", probability: 2, impact: 3, probHypothesis: "Suppose la compromission préalable de la head unit (R2) ET la maîtrise du reverse engineering du V850. Compétences embarqué pointues — barrière à l'entrée réelle.", impactHypothesis: "Permet d'envoyer des trames CAN arbitraires : un attaquant peut désormais agir sur n'importe quel sous-système. Interruption de service possible, perte de fiabilité — majeur.", solution: "Secure boot avec vérification de signature cryptographique du firmware (RSA-2048 ou ECDSA P-256), HSM (Hardware Security Module) intégré au V850 pour stocker les clés publiques en lecture seule, rollback protection anti-downgrade pour empêcher la réinstallation d'une version antérieure vulnérable.", }, { id: "R4", title: "Contrôle distant des freins, direction et accélérateur en conduite à haute vitesse", description: "Envoi de trames CAN ciblant les ECU de sécurité fonctionnelle pendant que le véhicule roule. Démontré sur autoroute à 110 km/h.", probability: 2, impact: 4, probHypothesis: "Nécessite toute la chaîne d'attaque (R1 → R2 → R3) ET la connaissance des trames CAN spécifiques au modèle ET un timing offensif. Pas trivial mais pas impossible pour un acteur étatique.", impactHypothesis: "Perte de contrôle direction/freins à vitesse autoroutière = accident potentiellement mortel. Sanction juridique massive pour le constructeur (FCA), atteinte irréversible en cas de décès — critique.", solution: "Défense en profondeur : (1) Gateway CAN filtrante entre l'infotainment et le CAN bus critique, avec liste blanche stricte des trames autorisées. (2) SecOC (AUTOSAR Secure Onboard Communication) pour authentifier chaque trame CAN via MAC. (3) IDS embarqué détectant les patterns de trames anormaux avec coupure automatique. (4) Conformité ISO/SAE 21434 et UNECE R155 (obligatoires depuis 2022 pour l'homologation des véhicules).", }, { id: "R5", title: "Désactivation persistante du frein de parking pour immobilisation/sabotage", description: "Modification ciblée d'une fonction unique (parking brake) maintenue après reboot via firmware V850 modifié. Le véhicule devient inutilisable.", probability: 2, impact: 2, probHypothesis: "Mêmes prérequis que R4 (chaîne complète), mais cible un sous-système plus simple. Pas observé en pratique car la motivation criminelle est faible — l'ampleur du crime n'est pas proportionnelle au gain.", impactHypothesis: "Véhicule immobilisé, intervention dealer obligatoire — gêne réelle mais pas de danger vital. Préjudice économique modéré pour le propriétaire. Mineur.", solution: "Watchdog matériel sur les ECU critiques qui rétablit l'état nominal en cas d'incohérence détectée. Vérification d'intégrité du firmware au démarrage de chaque ECU via Trusted Platform Module (TPM). Journalisation tamper-evident des modifications de firmware avec audit obligatoire lors de chaque entretien dealer.", }, ], amdec: [ { id: "AMD-01", component: "Réseau cellulaire Sprint / APN constructeur", function: "Fournir la connectivité du Uconnect aux serveurs FCA", failureMode: "Absence d'isolation L2/L3 entre clients Sprint — les véhicules sont mutuellement adressables", cause: "Configuration laxiste de l'APN, pas de cloisonnement par VLAN, port D-Bus 6667 ouvert en entrée depuis tout le réseau cellulaire", effect: "Énumération automatisée de la flotte (1.4M véhicules) depuis n'importe quel terminal Sprint, scan IP trivialisé", severity: 6, occurrence: 10, detection: 4, action: "Cloisonnement des véhicules sur un sous-réseau dédié sans communication transverse (mesure réellement appliquée par Sprint post-incident). Filtrage du port 6667 côté opérateur.", }, { id: "AMD-02", component: "Service D-Bus de la head unit Uconnect", function: "Communication inter-processus locale entre services de l'infotainment", failureMode: "Service D-Bus en écoute sur 0.0.0.0:6667 sans authentification, exposé à Internet via le modem cellulaire", cause: "Configuration par défaut conservée en production, pas de durcissement systémique, principe de moindre exposition non appliqué", effect: "Exécution de code à distance sur le système Linux du Uconnect, compromission de l'infotainment (radio, GPS, climatisation)", severity: 8, occurrence: 7, detection: 2, action: "Bind D-Bus sur 127.0.0.1 uniquement. Authentification mutuelle TLS sur tous services exposés. Firewall iptables avec politique DROP par défaut. Audit systémique des ports ouverts avant homologation.", }, { id: "AMD-03", component: "Microcontrôleur Renesas V850 (passerelle CAN)", function: "Faire le pont entre la head unit (OMAP) et le CAN bus du véhicule (ECU de sécurité)", failureMode: "Accepte du firmware non signé via la liaison SPI depuis l'OMAP — pas de vérification cryptographique", cause: "Pas de secure boot implémenté, pas de stockage de clés (HSM/TPM), conception centrée fonctionnalité sans modèle de menace cyber", effect: "Pivot depuis l'infotainment compromis vers le CAN bus critique : injection de trames CAN arbitraires possible", severity: 9, occurrence: 4, detection: 8, action: "Secure boot avec signature cryptographique (RSA-2048 / ECDSA P-256). HSM intégré stockant les clés publiques en lecture seule. Rollback protection anti-downgrade. Attestation au boot vers une autorité constructeur.", }, { id: "AMD-04", component: "Architecture réseau interne du véhicule", function: "Interconnecter les ECU (infotainment, motorisation, freinage, direction, transmission)", failureMode: "Architecture plate, pas de segmentation entre le domaine infotainment et le domaine sécurité fonctionnelle", cause: "Décisions de conception antérieures à la connectivité cellulaire généralisée, threat model centré sur l'accès physique uniquement", effect: "Une fois le V850 compromis (AMD-03), toutes les trames CAN sont à portée — contrôle potentiel des actuateurs critiques", severity: 10, occurrence: 3, detection: 7, action: "Insertion d'une gateway CAN filtrante entre les domaines avec liste blanche stricte des trames autorisées. Architecture en zones et conduits (IEC 62443 / ISO 21434). IDS embarqué sur le bus CAN.", }, { id: "AMD-05", component: "Protocole CAN bus (ISO 11898)", function: "Communication temps réel entre ECU pour les fonctions véhicule", failureMode: "Aucune authentification des trames CAN — n'importe quel ECU sur le bus peut émettre n'importe quelle commande", cause: "Protocole CAN conçu en 1986 pour un environnement physiquement fermé, pas pour résister à un ECU compromis", effect: "Direction, freins, accélérateur, transmission pilotables depuis n'importe quel ECU compromis, y compris l'infotainment", severity: 10, occurrence: 4, detection: 8, action: "Déploiement de SecOC (AUTOSAR Secure Onboard Communication) — MAC sur chaque trame CAN avec compteur anti-rejeu. Migration progressive vers CAN-FD authentifié. IDS comportemental sur le bus.", }, ], cves: [ { id: "CVE-2015-5611", title: "Missing Authorization in FCA Uconnect RA3/RA4 (Harman-Kardon Infotainment)", publishedDate: "2015-09-17", advisories: [ { id: "ICSA-15-260-01", source: "CISA / ICS-CERT" }, { id: "VU#819439", source: "CERT/CC (Carnegie Mellon)" }, ], affected: "Uconnect 8.4AN / RA3 / RA4 dans Chrysler 200, 300, Charger, Challenger, Durango, Ram 1500/2500/3500, Jeep Cherokee/Grand Cherokee, Dodge Viper (modèles 2013-2015) — environ 1.4M véhicules rappelés.", description: "Vulnérabilité d'autorisation manquante dans le système Uconnect manufacturé par Harman-Kardon. Le service D-Bus écoutant sur le port 6667 (réseau cellulaire Sprint) accepte des connexions non authentifiées et permet l'exécution de commandes arbitraires sur la head unit. Le défaut permet à un attaquant distant de prendre le contrôle de l'infotainment, puis (via un firmware modifié injecté sur le microcontrôleur Renesas V850) d'envoyer des trames CAN au véhicule.", attackChain: [ "Reconnaissance : scan IP sur le réseau cellulaire Sprint pour identifier les véhicules Uconnect (port 6667 ouvert)", "Exploitation : connexion D-Bus non authentifiée + exécution de commandes sur la head unit Linux", "Élévation : reflashing du microcontrôleur V850 avec un firmware modifié via SPI", "Impact : injection de trames CAN arbitraires — contrôle des freins, direction, accélérateur, transmission", ], cvssV2: { score: 8.3, severity: "HIGH", vector: "AV:A/AC:L/Au:N/C:C/I:C/A:C", metrics: [ { key: "AV", label: "Access Vector", value: "A", valueLabel: "Adjacent Network", detail: "Le réseau cellulaire Sprint est traité comme adjacent (pas un Internet ouvert) — l'attaquant doit posséder un terminal Sprint pour atteindre les véhicules.", }, { key: "AC", label: "Access Complexity", value: "L", valueLabel: "Low", detail: "Aucune condition particulière requise au-delà de la présence sur Sprint. Scan trivialement automatisable.", }, { key: "Au", label: "Authentication", value: "N", valueLabel: "None", detail: "Aucune authentification requise pour interagir avec le service D-Bus exposé.", }, { key: "C", label: "Confidentiality Impact", value: "C", valueLabel: "Complete", detail: "Lecture totale du système Linux du Uconnect (logs, GPS historique, contenu USB, configuration).", }, { key: "I", label: "Integrity Impact", value: "C", valueLabel: "Complete", detail: "Modification arbitraire du système + chaîne d'attaque permettant de modifier le firmware du V850 et d'injecter dans le CAN bus.", }, { key: "A", label: "Availability Impact", value: "C", valueLabel: "Complete", detail: "Perte totale de disponibilité possible : extinction du moteur, désactivation transmission, blocage du véhicule.", }, ], }, cvssV3: { score: 9.6, severity: "CRITICAL", vector: "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H", note: "Réinterprétation pédagogique en CVSS v3.1 — le CVE original n'a été scoré qu'en CVSS v2 par NVD à l'époque (v3 publié fin 2015).", metrics: [ { key: "AV", label: "Attack Vector", value: "A", valueLabel: "Adjacent", detail: "Conservé en Adjacent : le réseau Sprint constitue un domaine logique partagé (pas Internet ouvert au sens strict).", }, { key: "AC", label: "Attack Complexity", value: "L", valueLabel: "Low", detail: "Pas de condition spéciale, attaque répétable.", }, { key: "PR", label: "Privileges Required", value: "N", valueLabel: "None", detail: "Aucun privilège requis sur le système cible.", }, { key: "UI", label: "User Interaction", value: "N", valueLabel: "None", detail: "Aucune action utilisateur nécessaire — le conducteur n'a rien à cliquer ou installer.", }, { key: "S", label: "Scope", value: "C", valueLabel: "Changed", detail: "La compromission de l'infotainment franchit une frontière de sécurité majeure (vers le CAN bus / les actuateurs physiques). Scope Changed est ici essentiel.", }, { key: "C", label: "Confidentiality", value: "H", valueLabel: "High", detail: "Exposition totale des données système et utilisateur.", }, { key: "I", label: "Integrity", value: "H", valueLabel: "High", detail: "Modification arbitraire du firmware + injection CAN, compromettant l'intégrité fonctionnelle du véhicule.", }, { key: "A", label: "Availability", value: "H", valueLabel: "High", detail: "Mise hors service du véhicule possible (coupure moteur, transmission).", }, ], }, remediation: [ "Patch firmware Uconnect distribué par FCA le 16 juillet 2015 (mise à jour USB + OTA progressive).", "Rappel formel de 1.4M véhicules le 23 juillet 2015 — premier rappel automobile motivé par une vulnérabilité cyber.", "Sprint a fermé le port 6667 côté infrastructure et cloisonné les véhicules sur un sous-réseau dédié.", "À long terme : adoption de SecOC (AUTOSAR), conformité ISO/SAE 21434 et UNECE R155 (obligatoires en homologation depuis juillet 2022).", ], references: [ { label: "NVD — CVE-2015-5611", url: "https://nvd.nist.gov/vuln/detail/CVE-2015-5611" }, { label: "CISA ICSA-15-260-01", url: "https://www.cisa.gov/news-events/ics-advisories/icsa-15-260-01" }, { label: "CERT VU#819439", url: "https://www.kb.cert.org/vuls/id/819439" }, { label: "Miller & Valasek — Remote Exploitation of an Unaltered Passenger Vehicle (91p.)", url: "http://illmatics.com/Remote%20Car%20Hacking.pdf" }, ], }, ], }, }; // ───────────────────────────────────────────────────────────── // MATRICE DE CRITICITÉ // ───────────────────────────────────────────────────────────── const PROBABILITY_LEVELS = [ { score: 1, label: "Très improbable", freq: "Une fois en 10 ans ou plus" }, { score: 2, label: "Improbable", freq: "Une fois tous les 2 à 3 ans" }, { score: 3, label: "Probable", freq: "Une fois par an" }, { score: 4, label: "Très probable", freq: "Plusieurs fois par an" }, ]; const IMPACT_LEVELS = [ { score: 1, label: "Négligeable", conseq: "Aucune interruption, aucune donnée compromise" }, { score: 2, label: "Mineur", conseq: "Gêne passagère, dégradation partielle du service" }, { score: 3, label: "Majeur", conseq: "Interruption de service, perte de données partielle" }, { score: 4, label: "Critique", conseq: "Danger physique, perte massive, sanction juridique, atteinte irréversible" }, ]; function getCriticality(prob, impact) { const score = prob * impact; if (score <= 3) return { score, level: "FAIBLE", color: "#22c55e", bg: "rgba(34,197,94,0.15)" }; if (score <= 6) return { score, level: "MODÉRÉ", color: "#eab308", bg: "rgba(234,179,8,0.15)" }; if (score <= 9) return { score, level: "ÉLEVÉ", color: "#f97316", bg: "rgba(249,115,22,0.15)" }; return { score, level: "CRITIQUE", color: "#ef4444", bg: "rgba(239,68,68,0.15)" }; } // ───────────────────────────────────────────────────────────── // COMPONENTS // ───────────────────────────────────────────────────────────── function TabButton({ active, onClick, children, code }) { return ( ); } function StatCard({ label, value, icon: Icon }) { return (
{text}
{text}
{text}
{text}
{risk.probHypothesis}
{risk.impactHypothesis}
{risk.solution}
À partir du cas fil rouge assigné ({data.title}, {data.year}), réalisez les étapes suivantes :
{data.subtitle}
Dossier technique de l'incident{" "} {data.title} ({data.year}). Chronologie de l'attaque, causes racines, problèmes structurels et remédiations adoptées. Pour l'analyse de risques quantitative (P × I sur 5 risques), basculez sur l'onglet suivant.
{row.function}
{row.failureMode}
{row.cause}
{row.effect}
{row.action}
Analyse des{" "} Modes de{" "} Défaillance, de leurs{" "} Effets et de leur{" "} Criticité. Méthode systématique d'analyse de défaillances (équivalent français de la FMEA — Failure Mode and Effects Analysis). Pour chaque composant du système, on identifie : la fonction, le mode de défaillance possible, sa cause, son effet, puis on score sur trois axes :
{sortedRows[0].failureMode}
→ {sortedRows[0].action}
{metric.detail}
{cvss.note}
)}CVE (Common Vulnerabilities and Exposures) attribue un identifiant unique à chaque vulnérabilité publiée, géré par MITRE.{" "} CVSS (Common Vulnerability Scoring System) la score sur une échelle de 0 à 10 selon des métriques standardisées. La version officielle au moment de la divulgation Jeep (2015) était CVSS v2 ; CVSS v3.1 est la version en vigueur depuis 2019.
{cve.title}
{cve.affected}
{cve.description}
Le NVD a scoré ce CVE en CVSS v2 (version en vigueur en 2015). Le score CVSS v3.1 ci-dessous est une réinterprétation pédagogique appliquant les métriques modernes au même défaut technique — utile pour comparer les deux générations de standards.
Étude du Jeep Cherokee Hack (2015) — dossier d'incident, analyse de risques par{" "} matrice P × I, AMDEC formelle et référencement CVE / CVSS. Trois méthodologies complémentaires de priorisation appliquées au même cas pour rendre l'analyse reproductible et justifiable.