FrostyGoop. Un regard plus posé sur l'incident de Lviv.
Une analyse technique comparée de la coupure de chauffage de Lviv en janvier 2024 : ce qu'affirme le rapport Dragos, ce que lui oppose la réponse de SCADASEC, et pourquoi les preuves méritent une lecture plus attentive.
Dernière mise à jour:
FrostyGoop est un malware ICS qui parle Modbus TCP. Il a été associé à la coupure de chauffage de Lviv, en Ukraine, en janvier 2024.
Les sources divergent sur sa gravité. Dragos y voit une attaque sophistiquée liée à un État, tandis que SCADASEC, qui s'appuie sur des sources ukrainiennes, lit les mêmes éléments comme un événement plus limité et contesté. Les chiffres ci-dessous sont attribués à chaque source, et Trout ne les reprend pas à son compte.
Quel que soit son degré réel de sophistication, la leçon à retenir tient à l'exposition qu'il a exploitée :
- des équipements joignables depuis l'extérieur
- un réseau plat
- un protocole de contrôle sans authentification
La réponse est architecturale.
Un incident, deux récits différents.
Ce rapport compare l'analyse du malware FrostyGoop publiée par Dragos avec la réponse de SCADASEC. Dragos décrit FrostyGoop comme une attaque ICS sophistiquée, liée à la Russie, à l'origine de la coupure de chauffage de Lviv. SCADASEC propose une autre lecture de l'attribution et de la sophistication du malware, et estime qu'il faut davantage de preuves pour étayer ces affirmations.
Notre lecture indépendante est que FrostyGoop ne présente pas les caractéristiques avancées que l'on observe d'ordinaire dans les malwares ICS d'origine étatique, et qu'il n'a peut-être pas été impliqué dans l'attaque présumée telle qu'elle a été décrite. Il peut avoir une certaine capacité de perturbation, mais il n'atteint pas le niveau de sophistication de familles comme Triton ou Industroyer : son niveau de menace doit donc être réévalué plutôt que pris pour argent comptant.
Rare, et présenté comme le neuvième du genre.
Les malwares spécifiques aux ICS sont rares. Selon Dragos, FrostyGoop rejoint la courte liste des familles conçues pour atteindre des systèmes de contrôle industriel. Il communique en Modbus TCP, est écrit en Golang et compilé pour Windows, ce qui correspond aux environnements où ces protocoles et ces plateformes sont courants.
- 01Stuxnet
- 02Havex
- 03BlackEnergy2
- 04CrashOverride (Industroyer)
- 05Trisis (Triton)
- 06Industroyer2
- 07PipeDream
- 08Fuxnet
- 09FrostyGoop
Là où les versions divergent.
- Un malware lié à la Russie a coupé le chauffage de plus de 600 immeubles d'habitation pendant deux jours, par des températures négatives.
- Accès initial par des routeurs exposés à l'extérieur ; les attaquants ont rétrogradé le firmware des contrôleurs ENCO vers une version sans supervision.
- FrostyGoop est une menace ICS sophistiquée, liée à un État, qui utilise Modbus TCP.
- Seules 324 unités de chauffage individuelles ont été touchées ; l'alimentation a été rétablie à 50 % en six heures et à 100 % en treize.
- Les équipements ENCO servent surtout à relever les compteurs de chaleur ; aucune preuve claire qu'ils pilotaient des procédés physiques.
- Le seul lien avec ENCO est une adresse IP codée en dur qui pointe vers la Roumanie, pas vers Lviv, et Shodan n'y montrait aucun équipement ENCO exposé.
Le maire de Lviv a décrit l'événement comme un dysfonctionnement, avec un soupçon d'intervention extérieure faisant l'objet d'une enquête, ce qui résume bien le caractère contesté de l'incident.
La chaîne de Lviv, cartographiée.
Cette cartographie reprend la chaîne telle que Dragos l'a rapportée et la projette sur les techniques MITRE ATT&CK for ICS. C'est une lecture de rapports publics, pas une affirmation de Trout que chaque étape est un fait établi. Lorsque SCADASEC conteste une étape, la ligne le précise.
| Technique | Étape ATT&CK | Ce que cela signifie ici |
|---|---|---|
| T0822 / T0883External Remote Services / Internet Accessible Device | Initial access | Selon Dragos, l'accès s'est fait par un routeur exposé, joignable depuis Internet, et non directement par les équipements ENCO. SCADASEC conteste la part réelle des équipements ENCO dans l'affaire. |
| T0855Unauthorized Command Message | Impair process control | FrostyGoop émet des commandes Modbus TCP valides sur le port 502 (lecture et écriture des registres de maintien). Pour un contrôleur, elles sont indiscernables de celles d'un poste d'ingénierie légitime, et c'est tout l'enjeu : pas d'exploit, juste un accès. |
| T0836Modify Parameter | Impair process control | Des écritures de registres qui modifient la position d'une vanne ou une consigne de température font bouger le procédé physique sans toucher à la moindre vulnérabilité logicielle. |
| T0857System Firmware | Inhibit response function | Dragos rapporte que le firmware des contrôleurs ENCO a été rétrogradé vers une version dépourvue de supervision. SCADASEC met en doute le rôle de contrôle des équipements ENCO. Repris tel que rapporté par Dragos. |
| T0815 / T0829Denial of View / Loss of View | Impair process control / Impact | Une fois la supervision retirée, les opérateurs perdent la visibilité sur les unités concernées. Le bâtiment est manipulé pendant que le HMI n'affiche rien d'anormal. |
Ce que l'opérateur aurait vu
Sur le réseau, l'indice est un trafic Modbus TCP d'apparence ordinaire sur le port 502 : des commandes d'écriture (code fonction 6, écriture d'un registre, et 16, écriture de plusieurs registres) qui atterrissent sur les registres de maintien contenant la position des vannes et les consignes de température, depuis une source qui ne devrait jamais faire autre chose que lire. Sur la console, l'indice est pire, parce qu'il n'y en a aucun : selon Dragos, le firmware du contrôleur a été ramené à une version sans supervision, si bien que les HMI des unités ENCO concernées n'affichent plus rien pendant que le procédé continue de tourner. On prive les immeubles de chauffage et l'écran a toujours l'air normal.
Le réseau est la réponse, quelle que soit l'attribution.
Débattez autant que vous voulez de la sophistication de FrostyGoop. L'incident de Lviv désigne les mêmes points faibles familiers : des équipements joignables depuis l'extérieur, des réseaux plats et des protocoles de contrôle comme Modbus, sans authentification. Ce sont des problèmes d'architecture, et ils ont une réponse architecturale.
Segmentez le réseau, imposez une identité sur chaque chemin vers un contrôleur et journalisez chaque accès, de sorte qu'aucune commande ne puisse être émise ni aucun équipement atteint sans qu'une politique l'autorise explicitement. Concrètement, sur un réseau de chauffage urbain : placez chaque contrôleur ENCO ou RTU de compteur de chaleur dans sa propre enclave, pour que la seule façon de l'atteindre soit une session liée à une identité, via Access Gate. Le fournisseur des automatismes dispose d'un accès en lecture seule aux registres du compteur de chaleur, et de rien d'autre ; une écriture de consigne ou de firmware exige un ingénieur nommément identifié, et elle est journalisée. En cas de véritable urgence par grand froid, l'opérateur conserve un chemin d'accès d'urgence (break-glass) vers le contrôleur, authentifié et journalisé : la sécurité n'attend jamais la politique d'accès.
Si le chemin n'existe pas, l'attaque n'existe pas non plus. Pour approfondir le modèle d'application des règles, lisez qu'est-ce qu'un proxy industriel et sécurité des PLC, et pour les spécificités du protocole, sécuriser Modbus.
Téléchargez l'analyse comparée.
Le rapport FrostyGoop complet : les récits de Dragos et de SCADASEC côte à côte, le détail technique de l'incident de Lviv, et ce que cela implique pour la façon dont vous sécurisez vos réseaux industriels.
Une nouvelle approche de la sécurité des réseaux industriels
Access Gate est l'overlay Zero Trust sans agent de Trout, pensé pour l'OT. Il segmente les systèmes de contrôle, impose une identité sur chaque chemin et journalise le tout. Il se branche à côté du réseau existant : pas d'agent, pas de réadressage IP, rien à insérer sur le trajet des flux.
À propos de ce rapport
Une analyse comparée indépendante réalisée par Trout et publiée en 2024. Elle met en balance les rapports publics de Dragos et de SCADASEC sur le malware FrostyGoop et l'incident de chauffage de Lviv. Les conclusions reflètent la lecture que Trout fait des éléments disponibles.
FAQ FrostyGoop
Famille de malware ICS connue, selon Dragos
En cartographiant la chaîne telle que Dragos l'a rapportée : accès initial via un équipement joignable depuis Internet (T0822 External Remote Services, T0883 Internet Accessible Device) ; commandes Modbus non autorisées sur le port 502 pour modifier le procédé (T0855 Unauthorized Command Message, T0836 Modify Parameter) ; une rétrogradation de firmware qui a supprimé la supervision (T0857 System Firmware) ; et la perte de visibilité qui en découle pour les opérateurs (T0815 Denial of View, T0829 Loss of View). SCADASEC conteste le rôle de contrôle des équipements ENCO : considérez donc cette chaîne comme une lecture de rapports publics, pas comme un fait établi.
FrostyGoop est un malware rare qui, d'après les rapports publics, vise les systèmes de contrôle industriel. Selon Dragos, c'est la neuvième famille de malware connue spécifique aux ICS, aux côtés de Stuxnet, Havex, Industroyer, Triton et d'autres. Il communique en Modbus TCP, est écrit en Golang et compilé pour Windows, ce qui correspond aux environnements où ces protocoles et ces plateformes sont courants.
En janvier 2024, Dragos a rapporté qu'un malware lié à la Russie avait servi à couper le chauffage de plus de 600 immeubles d'habitation à Lviv, en Ukraine, pendant environ deux jours, par des températures négatives. SCADASEC, citant des sources officielles ukrainiennes, a donné une estimation bien plus basse de l'impact : 324 unités de chauffage individuelles touchées, avec une alimentation rétablie à 50 % en six heures et à 100 % en treize, et non les 48 heures annoncées. Le maire de Lviv a parlé d'un dysfonctionnement, avec un soupçon d'intervention extérieure faisant l'objet d'une enquête.
Ils divergent sur l'attribution, la sophistication et l'impact. Dragos présente FrostyGoop comme une attaque ICS sophistiquée, liée à un État. SCADASEC met en doute le rôle des équipements ENCO (le seul lien est une adresse IP codée en dur pointant vers un équipement en Roumanie, pas à Lviv, et Shodan n'y montrait aucun équipement ENCO exposé), l'affirmation d'un contrôle par Modbus, ainsi que l'ampleur et la durée de la perturbation. Les deux récits reposent sur des éléments différents et lisent le même incident de manière très différente.
Notre analyse indépendante est que FrostyGoop ne présente pas les caractéristiques avancées que l'on observe d'ordinaire dans les malwares ICS d'origine étatique, et qu'il n'a peut-être pas été impliqué dans l'attaque présumée telle qu'elle a été décrite. Il peut avoir une certaine capacité de perturbation, mais il n'atteint pas la sophistication de malwares comme Triton ou Industroyer : son niveau de menace global doit donc être réévalué plutôt que pris pour argent comptant. C'est un appel à la rigueur sur les preuves, pas une minimisation du risque.
Quelle que soit la vraie sophistication de FrostyGoop, l'incident de Lviv met en évidence les mêmes points faibles : des équipements joignables depuis l'extérieur, des réseaux plats et des protocoles de contrôle comme Modbus, sans authentification. La réponse durable est architecturale. Segmentez le réseau, imposez une identité sur chaque chemin vers un contrôleur et journalisez chaque accès, pour qu'aucune commande ne puisse être émise ni aucun équipement atteint sans qu'une politique l'autorise explicitement.