Résumé exécutif
Les chercheurs de Unit 42 ont découvert une famille de logiciels espions Android jusqu'alors inconnue, que nous avons baptisée LANDFALL. Pour diffuser ce spyware, les attaquants ont exploité une vulnérabilité zero-day (CVE-2025-21042) dans la bibliothèque de traitement d'images Android de Samsung. La faille spécifique exploitée par LANDFALL, CVE-2025-21042, n'est pas un cas isolé mais s'inscrit plutôt dans un schéma plus large de problèmes similaires constatés sur de multiples plateformes mobiles.
Cette vulnérabilité a été activement exploitée "in the wild" (dans la nature) avant que Samsung ne la corrige en avril 2025, suite à des signalements d'attaques en cours. Cependant, l'exploit lui-même — ainsi que le logiciel espion de qualité commerciale utilisé avec — n'ont pas encore été publiquement rapportés et analysés.
LANDFALL était intégré dans des fichiers image malveillants (format de fichier DNG) qui semblent avoir été envoyés via WhatsApp, ouvrant potentiellement la voie à une chaîne d'infection "zero-click" (ne nécessitant aucune interaction de l'utilisateur). Cette méthode ressemble étroitement à une chaîne d'exploitation impliquant Apple et WhatsApp qui a attiré l'attention en août 2025. Elle ressemble également à une chaîne d'exploitation qui s'est probablement produite en utilisant une vulnérabilité zero-day similaire (CVE-2025-21043) divulguée en septembre. Nos recherches n'ont identifié aucune vulnérabilité inconnue dans WhatsApp.
Fait important, notre découverte est antérieure à ces divulgations : la campagne LANDFALL opérait déjà à la mi-2024, utilisant la vulnérabilité zero-day Android/Samsung (CVE-2025-21042) des mois avant qu'elle ne soit corrigée.
La vulnérabilité est corrigée depuis avril 2025, il n'y a donc aucun risque actuel pour les utilisateurs de Samsung. En septembre, Samsung a également corrigé une autre vulnérabilité zero-day (CVE-2025-21043) dans la même bibliothèque de traitement d'images, renforçant ainsi la protection contre ce type d'attaque. Nos recherches n'ont identifié aucune vulnérabilité dans WhatsApp et tout indique que l'application n'a été utilisée que comme vecteur de livraison, probablement en raison de son utilisation prévalente par les cibles de cette activité.
Notre recherche se penche sur l'exploitation historique qui a eu lieu avant le correctif, offrant une visibilité rare sur une opération de logiciel espion avancée qui n'avait pas été publiquement signalée.
Principales conclusions :
- LANDFALL est un logiciel espion Android spécifiquement conçu contre les appareils Samsung Galaxy, utilisé dans des activités d'intrusion ciblées au Moyen-Orient.
- LANDFALL permettait une surveillance complète, incluant l'enregistrement du microphone, le suivi de la localisation et la collecte de photos, de contacts et de journaux d'appels.
- Le logiciel espion est livré via des fichiers image DNG malformés exploitant la CVE-2025-21042 — une vulnérabilité zero-day critique dans la bibliothèque de traitement d'images de Samsung, qui a été exploitée "in the wild".
- La chaîne d'exploitation impliquait possiblement une livraison "zero-click" via WhatsApp, utilisant des images spécifiquement conçues, à l'instar de chaînes d'exploitation récentes observées sur iOS et Samsung Galaxy.
- La campagne partage des infrastructures et des modes opératoires (tradecraft) avec des opérations de logiciels espions commerciaux au Moyen-Orient, indiquant des liens possibles avec des acteurs offensifs du secteur privé (PSOA - private-sector offensive actors).
- LANDFALL est resté actif et non détecté pendant des mois.
Les clients de Palo Alto Networks sont mieux protégés grâce aux produits et services suivants :
Si vous pensez avoir été compromis ou si vous avez une urgence, contactez l'équipe d'Intervention sur Incident de Unit 42.
| Sujets Unit 42 connexes | Samsung, Vulnérabilités |
Découverte du logiciel espion LANDFALL
Mi-2025, après la divulgation publique d'une chaîne d'exploitation ciblant les appareils iOS, nous avons recherché des échantillons de l'exploit iOS. C'est ce qui nous a conduits à la découverte du logiciel espion Android que nous avons appelé LANDFALL.
Plus précisément, Unit 42 a découvert plusieurs échantillons de fichiers image DNG contenant un logiciel espion Android utilisé dans une chaîne d'exploitation ciblant les appareils Samsung Galaxy. Notre analyse a confirmé que ces échantillons exploitent la CVE-2025-21042 pour livrer LANDFALL, possiblement via des exploits "zero-click" sur des applications de messagerie.
Début de la traque : La chaîne d'exploitation iOS et comment elle nous a interpellés
En août 2025, Apple a publié des mises à jour de sécurité pour ses différents produits afin de corriger la CVE-2025-43300, une vulnérabilité zero-day affectant l'analyse (parsing) des images DNG, que les attaquants auraient exploitée "in the wild".
Le même mois, WhatsApp a signalé une vulnérabilité zero-day pour la CVE-2025-55177 qui était enchaînée avec la vulnérabilité de traitement d'images pour les plateformes Apple dans des attaques sophistiquées ciblant les appareils iOS. La vulnérabilité WhatsApp permettait aux attaquants de forcer les appareils à traiter du contenu provenant d'URL arbitraires.
Lorsque les deux vulnérabilités étaient combinées dans une chaîne d'exploitation, cela permettait une exécution de code à distance "zero-click" par le biais d'images malveillantes envoyées via des messages WhatsApp.
Compte tenu de la divulgation de cette chaîne d'exploitation "in the wild" et de l'absence d'échantillons d'exploit publiquement disponibles, nous avons lancé une traque (hunt) de cette activité. Nos recherches ont conduit à la découverte de plusieurs fichiers image DNG non détectés jusqu'alors, contenant un logiciel espion Android intégré, qui ont été téléversés sur VirusTotal tout au long de 2024 et début 2025.
À en juger par leurs noms de fichiers (par ex., WhatsApp Image 2025-02-10 at 4.54.17 PM.jpeg et IMG-20240723-WA0000.jpg), les attaquants ont probablement livré ces échantillons via WhatsApp. Notre analyse du logiciel espion intégré indique qu'il est conçu pour les appareils Samsung Galaxy.
Fichiers image DNG malformés : Une nouvelle tendance de vecteur d'attaque
Notre analyse du logiciel espion LANDFALL a commencé par la découverte de fichiers image DNG malformés. DNG signifie Digital Negative (Négatif Numérique), et c'est un format de fichier d'image brute (raw) basé sur le format d'image TIFF. Les fichiers image DNG malformés que nous avons découverts ont une archive ZIP intégrée ajoutée à la fin du fichier. La Figure 1 montre un de ces échantillons dans un éditeur hexadécimal, indiquant où le contenu de l'archive ZIP commence près de la fin du fichier.

Notre analyse indique que ces fichiers DNG exploitent la CVE-2025-21042, une vulnérabilité dans la bibliothèque de traitement d'images de Samsung libimagecodec.quram.so que Samsung a corrigée en avril 2025. L'exploit extrait des fichiers de bibliothèque d'objets partagés (.so) de l'archive ZIP intégrée pour exécuter le logiciel espion LANDFALL. La Figure 2 ci-dessous montre un organigramme pour ce logiciel espion.

Le Tableau 1 montre les échantillons d'images DNG que nous avons découverts.
| Hash SHA256 | Nom de fichier | Première apparition |
| 9297888746158e38d320b05b27b0032b2cc29231be8990d87bc46f1e06456f93 | WhatsApp Image 2025-02-10 at 4.54.17 PM.jpeg | Feb. 10, 2025 |
| b06dec10e8ad0005ebb9da24204c96cb2e297bd8d418bc1c8983d066c0997756 | IMG-20250120-WA0005.jpg | Jan. 20, 2025 |
| c0f30c2a2d6f95b57128e78dc0b7180e69315057e62809de1926b75f86516b2e | WhatsApp Image 2024-08-27 at 11.48.40 AM.jpeg | Aug. 27, 2024 |
| b975b499baa3119ac5c2b3379306d4e50b9610e9bba3e56de7dfd3927a96032d | PHOTO-2024-08-27-11-48-41.jpg | Aug. 27, 2024 |
| 29882a3c426273a7302e852aa77662e168b6d44dcebfca53757e29a9cdf02483 | IMG-20240723-WA0001.jpg | July 23, 2024 |
| b45817ffb0355badcc89f2d7d48eecf00ebdf2b966ac986514f9d971f6c57d18 | IMG-20240723-WA0000.jpg | July 23, 2024 |
Tableau 1. Fichiers DNG avec logiciel malveillant intégré.
Des noms de fichiers contenant des chaînes comme WhatsApp Image et WA000 impliquent que les attaquants pourraient avoir tenté de livrer le logiciel espion Android intégré via WhatsApp. Cela correspond aux rapports publics antérieurs d'exploitation similaire basée sur des images DNG via WhatsApp ciblant les appareils Apple. De plus, les chercheurs de WhatsApp ont identifié et signalé une vulnérabilité DNG similaire, CVE-2025-21043, à Samsung.
Distribution du spyware LANDFALL : Chaînes d'exploitation des malwares sur appareils mobiles
Typiquement, les malwares sur appareils mobiles distribués via des exploits nécessitent une chaîne d'exploits exploitant différentes vulnérabilités pour réussir l'infection. Diverses études ont documenté des cas impliquant au moins deux vulnérabilités lors de la distribution de logiciels espions, mais les chaînes d'exploitation modernes dédiées aux spywares sont bien plus complexes, enchaînant de multiples vulnérabilités pour compromettre les appareils mobiles et obtenir des privilèges.
Nous n'avons pas encore découvert d'autres exploits associés à cette activité.
Veuillez consulter la section ultérieure, « Comment LANDFALL s'intègre dans un contexte plus large », pour une description plus complète des vulnérabilités connues impliquées dans cette chaîne d'exploitation et dans des chaînes similaires.
Analyse du logiciel espion LANDFALL
LANDFALL est un logiciel espion Android spécifiquement conçu pour les appareils Samsung Galaxy, probablement utilisé dans des activités d'intrusion ciblées au Moyen-Orient. Ce logiciel espion modulaire est conçu pour l'espionnage et l'exfiltration de données.
La chaîne d'infection de LANDFALL implique un exploit pour la CVE-2025-21042, une vulnérabilité dans la bibliothèque de traitement d'images de Samsung suivie par le vendeur sous le désignateur SVE (Samsung Vulnerabilities and Exposures) SVE-2024-1969. Nous pensons qu'une chaîne d'attaque complète suivrait un schéma potentiel d'exécution de code à distance "zero-click", commençant par la livraison des images DNG malformées.
Deux composants du logiciel espion LANDFALL sont intégrés dans les images DNG malformées et seraient extraits et exécutés, après un exploit réussi :
- Chargeur (Loader - b.so) : Un objet partagé ELF ARM64 (106 Ko, "stripped" et lié dynamiquement) qui sert de backdoor principale.
- Manipulateur de politique SELinux (l.so) : Extrait d'un binaire ELF compressé XZ, ce composant est conçu pour manipuler la politique SELinux de l'appareil afin d'accorder à LANDFALL des permissions élevées et de faciliter la persistance. (Annexe A - Manipulation de la politique SELinux)
Le Tableau 2 montre les fichiers des composants LANDFALL intégrés dans les échantillons DNG malveillants.
| Hash SHA256 | Composant LANDFALL | Première apparition |
| ffeeb0356abb56c5084756a5ab0a39002832403bca5290bb6d794d14b642ffe2 | b.so component | July 23, 2024 |
| d2fafc7100f33a11089e98b660a85bd479eab761b137cca83b1f6d19629dd3b0 | b.so component | Aug. 27, 2024 |
| a62a2400bf93ed84ebadf22b441924f904d3fcda7d1507ba309a4b1801d44495 | b.so component | Jan. 23, 2025 |
| 384f073d3d51e0f2e1586b6050af62de886ff448735d963dfc026580096d81bd | b.so component | Feb. 10, 2025 |
| 211311468f3673f005031d5f77d4d716e80cbf3c1f0bb1f148f2200920513261 | XZ compressed file (l) for the SELinux policy manipulator | July 23, 2024 |
| 69cf56ac6f3888efa7a1306977f431fd1edb369a5fd4591ce37b72b7e01955ee | SELinux policy manipulator (l.so) extracted from XZ compressed file | July 23, 2024 |
Tableau 2. Composants LANDFALL intégrés dans les fichiers image DNG.
Notre analyse indique que LANDFALL est un logiciel espion Android multi-composants conçu pour la surveillance et l'exfiltration de données.
Notre analyse se concentre sur le composant b.so, qui sert de chargeur initial pour un framework LANDFALL plus large. Dans ses propres artefacts de débogage, le composant se désigne lui-même sous le nom de "Bridge Head". Cela sera intéressant plus tard lorsque nous discuterons des relations possibles entre LANDFALL et des groupes de logiciels espions connus.
Capacités potentielles de LANDFALL
Le composant b.so de LANDFALL contient de nombreuses chaînes de débogage et de statut, mais il ne contient pas la logique qui référence réellement la plupart de ces chaînes. Cela suggère que b.so téléchargerait des composants supplémentaires pour ces capacités. Notre analyse des chaînes de commande intégrées et des chemins d'exécution dans le fichier b.so donne un aperçu des capacités potentielles plus larges de LANDFALL.
Prise d'empreinte de l'appareil (Fingerprinting)
- Version de l'OS
- ID matériel (IMEI)
- ID SIM/Abonné (IMSI)
- Numéro de série de la carte SIM
- Compte utilisateur
- Numéro de messagerie vocale
- Configuration réseau
- Inventaire des applications installées
- Accès aux services de localisation
- Statut du VPN
- Statut du débogage USB
- Bluetooth
Exfiltration de données
- Enregistrement du microphone
- Enregistrement des appels
- Historique des appels
- Base de données des contacts
- Données SMS/messagerie
- Photos de l'appareil photo
- Fichiers arbitraires
- Bases de données sur l'appareil (historique de navigation, etc.)
Exécution, chargement et persistance
- Chargement de modules d'objets partagés natifs (.so)
- Chargement et exécution de fichiers DEX depuis la mémoire et le disque
- Injection de processus
- Exécution via LD_PRELOAD
- Exécution de commandes arbitraires
- Manipulation de SELinux
- Persistance
- Modification de la politique SELinux via un binaire compressé
- Surveillance du répertoire WhatsApp Media pour des charges utiles supplémentaires
- Enregistrement du client web WhatsApp
- Manipulation du système de fichiers dans les répertoires d'applications Android
- Manipulation du système de fichiers
Évasion et contournement des défenses
- Détection du débogueur TracerPid
- Détection du framework d'instrumentation Frida
- Détection du framework Xposed
- Chargement dynamique de bibliothèque avec manipulation de l'espace de noms (namespace)
- Épinglage de certificat (Certificate pinning) pour les communications C2
- Nettoyage de la charge utile des images WhatsApp
Modèles d'appareils ciblés
- Galaxy S23 Series (S91[168]BXX.*)
- Galaxy S24 Series (S921BXXU1AWM9, S92[168]BXX.*)
- Galaxy Z Fold4 (F936BXXS4DWJ1)
- Galaxy S22 (S901EXXS4CWD1)
- Galaxy Z Flip4 (F721BXXU1CWAC)
La Figure 3 montre un exemple des chaînes de modèles d'appareils ciblés dans un échantillon b.so de LANDFALL.

Communication C2
Le composant b.so de LANDFALL communique avec son serveur C2 (Commande et Contrôle) en HTTPS en utilisant un port TCP éphémère non standard. Avant le trafic HTTPS, il peut initier un trafic de "ping" comme détaillé dans la section Communication avec le serveur C2 de l'Annexe B. Pour le trafic HTTPS, b.so initie le contact avec une requête POST contenant des informations détaillées sur l'appareil et le logiciel espion, telles que :
- ID de l'agent
- Chemin de l'appareil
- ID utilisateur
La Figure 4 montre une interprétation de cette requête POST initiale, où nous utilisons curl pour montrer comment cette requête serait structurée. Il est à noter que LANDFALL n'utilise pas curl pour générer ce trafic.

Le trafic de balise (beacon) initial est une requête HTTP POST vers le serveur C2 avec les paramètres suivants :
- protocol : La version du protocole (par ex., A1.5.0)
- protocol_ver : La version du protocole (par ex., "")
- type : Le type de message (par ex., MSG_TYPE_GET_AGENT)
- agent_id : L'identifiant unique de l'agent
- upload_id : Un identifiant de téléversement
- command_id : Un identifiant de commande
- source : La source de la requête (par ex., bridge_head)
- incremental_build : La version de build incrémentale (par ex., v1.5.0)
- euid : L'ID utilisateur effectif (effective user ID) du processus
- bh_path : Le chemin vers le binaire b.so sur l'appareil
- runner : Le mode d'exécution (runner) (par ex., I)
Configuration du fichier b.so
La configuration du fichier b.so est gérée par une combinaison de valeurs par défaut codées en dur et d'un objet JSON chiffré intégré en lui-même. Cette configuration inclut les détails C2, les clés cryptographiques et les identifiants uniques pour l'agent et les commandes.
La Figure 5 montre un exemple de cette configuration.

Ce composant b.so de LANDFALL contient également un certain nombre de valeurs de configuration codées en dur. Celles-ci sont utilisées comme valeurs par défaut si elles ne sont pas fournies dans l'objet JSON chiffré. Nous ne comprenons pas encore pleinement le but de certaines de ces valeurs. Le Tableau 3 montre ces valeurs de configuration par défaut codées en dur.
| Nom du champ | Valeur par défaut |
|---|---|
| allow_wifi | true |
| allow_mobile | true |
| allow_roaming | false |
| socket_timeout | 5 |
| sleep_time | 60 (0x3c) |
| sleep_time_between_retries | 35 (0x23) |
| suicide_time | 7200 (0x1c20) |
| live_mode_expiration | 0 |
| allow_min_battery | 0 |
| is_persistent | false |
Tableau 3. Valeurs de configuration par défaut codées en dur pour le logiciel malveillant LANDFALL.
Infrastructure C2 du logiciel espion LANDFALL
Sur la base de notre analyse de ces échantillons, nous avons identifié six serveurs C2 pour LANDFALL, présentés ci-dessous dans le Tableau 4.
| Adresse IP | Domaine | Première apparition | Dernière apparition |
| 194.76.224[.]127 | brightvideodesigns[.]com | Feb. 7, 2025 | Sept. 19, 2025 |
| 91.132.92[.]35 | hotelsitereview[.]com | Feb. 3, 2025 | Sept. 16, 2025 |
| 92.243.65[.]240 | healthyeatingontherun[.]com | Oct. 11, 2024 | Sept. 2, 2025 |
| 192.36.57[.]56 | projectmanagerskills[.]com | Feb. 3, 2025 | Aug. 26, 2025 |
| 46.246.28[.]75 | Inconnu | Inconnu | Inconnu |
| 45.155.250[.]158 | Inconnu | Inconnu | Inconnu |
Tableau 4. Serveurs C2 de LANDFALL.
Comment LANDFALL s'inscrit dans le tableau d'ensemble des menaces
LANDFALL est un exemple d'un schéma plus large de chaînes d'exploitation affectant les appareils mobiles, lié aux vulnérabilités de traitement d'images DNG.
L'utilisation par la campagne LANDFALL d'un fichier DNG malformé met en évidence un vecteur d'attaque significatif et récurrent : le ciblage des vulnérabilités au sein des bibliothèques de traitement d'images DNG. La faille spécifique exploitée par LANDFALL, CVE-2025-21042, n'est pas un cas isolé mais s'inscrit plutôt dans un schéma plus large de problèmes similaires constatés sur de multiples plateformes mobiles. En fait, plus tôt en 2025, Samsung a identifié une autre faille DNG dans la même bibliothèque Samsung, CVE-2025-21043, et la chaîne d'exploitation parallèle sur iOS a été identifiée, exploitant la CVE-2025-43300 dans Apple iOS et la CVE-2025-55177 dans WhatsApp.
Relation avec la CVE-2025-21043 (SVE-2025-1702)
Notre analyse a révélé un lien possible avec une vulnérabilité distincte dans la même bibliothèque, la CVE-2025-21043 (SVE-2025-1702), que Samsung a corrigée dans sa mise à jour de sécurité de septembre 2025. Bien qu'elle n'ait pas été exploitée dans les échantillons LANDFALL que nous avons découverts, les similitudes entre l'exploit pour LANDFALL (CVE-2025-21042) et cette vulnérabilité (CVE-2025-21043) sont frappantes. Les deux vulnérabilités ont été divulguées publiquement à peu près au même moment et sont toutes deux liées au traitement de fichiers image DNG livrés via des applications de communication mobile.
CVE-2025-43300 d'Apple
En août 2025, Apple a corrigé la CVE-2025-43300, une vulnérabilité zero-day impactant l'analyse des images DNG, qui était activement exploitée "in the wild", pour permettre une exécution de code à distance "zero-click" par le biais d'images malveillantes envoyées via des applications de communication mobile.
Nous ne pouvons pas confirmer si cette chaîne a été utilisée pour livrer un équivalent de LANDFALL sur iOS, ou s'il s'agit du même agent de menace derrière les deux. Cependant, ce développement parallèle dans l'écosystème iOS, combiné à la divulgation des vulnérabilités Samsung et Apple à quelques semaines d'intervalle seulement, met en évidence un schéma plus large de vulnérabilités de traitement d'images DNG exploitées dans des attaques de logiciels espions mobiles sophistiquées.

- Juillet 2024 – Février 2025 : Les premiers échantillons de fichiers image DNG malveillants porteurs de LANDFALL sont soumis pour la première fois sur VirusTotal en juillet 2024, avec des échantillons supplémentaires apparaissant périodiquement au cours des mois suivants.
- Les fichiers DNG exploitent une vulnérabilité dans la bibliothèque de traitement d'images Android de Samsung (SVE-2024-1969, CVE-2025-21042)
- 25 sept. 2024 : La vulnérabilité qui deviendra la CVE-2025-21042 est signalée en privé à Samsung.
- Avril 2025 : Samsung publie une mise à jour du firmware pour corriger la vulnérabilité, SVE-2024-1969, connue plus tard sous le nom de CVE-2025-21042 lors de sa divulgation publique.
- Août 2025 : Des développements parallèles surviennent.
- Apple corrige une vulnérabilité zero-day impactant l'analyse des images DNG, qui était activement exploitée dans un exploit "in the wild" (CVE-2025-43300) et enchaînée avec la vulnérabilité WhatsApp (CVE-2025-5177)
- WhatsApp divulgue une vulnérabilité (CVE-2025-55177) qui a été enchaînée avec la vulnérabilité zero-day d'analyse d'images DNG d'Apple (CVE-2025-43300).
- Nous avons découvert des fichiers image DNG exploitant la CVE-2025-21042 pour livrer un logiciel espion Android que nous avons identifié comme étant LANDFALL.
- Samsung publie la CVE-2025-21043 — une autre vulnérabilité zero-day liée au DNG.
- Septembre 2025 : Samsung publie des mises à jour du firmware des appareils mobiles pour la CVE-2025-21043 (SVE-2025-1702). Simultanément, il attribue la CVE-2025-21042 (SVE-20254-1969) à la vulnérabilité antérieure qui n'avait pas de désignateur CVE.
Victimes potentielles
L'analyse des données de soumission VirusTotal pour les fichiers DNG malveillants indique des cibles potentielles en Irak, Iran, Turquie et Maroc.
Le CERT national de Turquie (en turc, USOM) a signalé les adresses IP utilisées par les serveurs C2 de LANDFALL comme étant malveillantes, liées aux mobiles et aux APT, ce qui soutient également le ciblage possible de victimes en Turquie.
Relation avec des groupes de logiciels espions connus
Bien que nous n'ayons pas pu récupérer chaque composant du framework LANDFALL, il est clair que l'outil est de qualité commerciale. Il pourrait avoir utilisé plusieurs exploits zero-day dans sa chaîne d'infection.
De tels outils sont souvent développés et vendus comme des logiciels espions commerciaux et attribués à des groupes connus sous le nom d'acteurs offensifs du secteur privé (PSOA - private sector offensive actors), qui sont souvent des entités juridiques légitimes. Selon les rapports, ces groupes fournissent des services à des entités gouvernementales.
Nous n'avons pas été en mesure à ce stade d'attribuer officiellement l'activité LANDFALL à un PSOA ou à un agent de menace connu. Unit 42 suit l'activité liée à la CVE-2025-21042 et à LANDFALL sous le nom de CL-UNK-1054.
Deux aspects sont notables et méritent d'être soulignés.
Premièrement, l'infrastructure C2 de LANDFALL et les schémas d'enregistrement de domaine partagent des similitudes avec l'infrastructure associée à Stealth Falcon, tel qu'observé par Unit 42. Ces similitudes sont basées sur divers rapports publics, ainsi que sur l'activité de Stealth Falcon que nous avons analysée pour des cibles au Moyen-Orient.
Deuxièmement, dans ses propres artefacts de débogage, le composant logiciel espion que nous avons analysé se désigne lui-même sous le nom de "Bridge Head". Il est à noter que le terme "Bridge Head" (tête de pont) est un surnom courant utilisé par certaines entreprises de cyber-offensive du secteur privé (dont NSO, Variston, Cytrox et Quadream) pour les chargeurs de première étape (first-stage loaders). Cependant, cette convention de nommage ne constitue pas à elle seule un lien d'attribution direct.
Bien qu'il s'agisse d'un nom couramment utilisé dans les logiciels espions mobiles commerciaux pour décrire les chargeurs, il présente des similitudes avec le framework Heliconica. Ce framework contient également des références à "BridgeHead", comme l'a signalé Google TAG à propos du vendeur de logiciels espions Variston. Google a identifié Variston comme un PSOA basé à Barcelone (fournisseur d'exploits). D'autres analyses de Google et d'autres rapports ont indiqué que les outils de Variston étaient fournis à des clients aux EAU (Émirats Arabes Unis) par l'intermédiaire d'un revendeur nommé Protect Electronic Systems (ou Protected AE).
Ce lien potentiel fournisseur-client avec les EAU est à noter, car Microsoft et d'autres ont signalé que Stealth Falcon opérait également massivement depuis ce pays. Variston aurait cessé ses activités début 2025 suite à son exposition publique.
En octobre 2025, à l'exception de l'infrastructure, nous n'avons pas observé de chevauchements directs entre les campagnes mobiles de LANDFALL et l'activité basée sur les terminaux (endpoint) de Stealth Falcon, ni de liens forts directs avec Stealth Falcon. Cependant, les similitudes méritent d'être discutées.
Conclusion
La découverte du logiciel espion LANDFALL révèle une campagne ciblant les appareils Android Samsung. La chaîne d'exploitation implique la CVE-2025-21042, une vulnérabilité qui a été corrigée par Samsung en avril 2025. La présence de ce logiciel espion dans des fichiers image DNG avec des conventions de nommage liées à WhatsApp indique probablement que les attaquants ont tenté de livrer l'exploit via une application de messagerie.
Depuis l'apparition initiale des échantillons en juillet 2024, cette activité met en évidence comment des exploits sophistiqués peuvent rester dans des dépôts publics pendant une période prolongée avant d'être pleinement compris.
L'analyse du chargeur révèle des preuves d'une activité de qualité commerciale. Les composants du logiciel espion LANDFALL suggèrent des capacités avancées de furtivité, de persistance et de collecte de données complète à partir des appareils Samsung modernes.
Cependant, nous n'avons pas directement analysé les composants de l'étape suivante (next-stage) du logiciel espion. Des détails supplémentaires à ce sujet ou sur la méthode de livraison exacte fourniraient encore plus d'informations sur l'activité malveillante.
Les clients de Palo Alto Networks sont mieux protégés contre le logiciel espion Android LANDFALL grâce aux produits suivants :
- Les modèles d'apprentissage automatique (machine-learning) et les techniques d'analyse d'Advanced WildFire ont été examinés et mis à jour à la lumière des indicateurs partagés dans cette recherche.
- Advanced URL Filtering et Advanced DNS Security identifient les domaines et URL connus associés à cette activité comme malveillants.
- Advanced Threat Prevention dispose d'une détection intégrée basée sur l'apprentissage automatique qui peut détecter les exploits en temps réel.
Si vous pensez avoir été compromis ou si vous avez une urgence, contactez l'équipe d'Intervention sur Incident de Unit 42 ou appelez :
- Amérique du Nord : Numéro gratuit : +1 (866) 486-4842 (866.4.UNIT42)
- Royaume-Uni : +44.20.3743.3660
- Europe et Moyen-Orient : +31.20.299.3130
- Asie : +65.6983.8730
- Japon : +81.50.1790.0200
- Australie : +61.2.4062.7950
- Inde : 000 800 050 45107
Palo Alto Networks a partagé ces découvertes avec les autres membres de la Cyber Threat Alliance (CTA). Les membres de la CTA utilisent ces renseignements pour déployer rapidement des protections à leurs clients et pour perturber systématiquement les cyberacteurs malveillants. En savoir plus sur la Cyber Threat Alliance.
Indicateurs de Compromission (IoC)
Échantillons de logiciels malveillants
Une liste d'échantillons de logiciels malveillants pour l'activité LANDFALL est répertoriée ci-dessous dans le Tableau 7.
| Hash SHA256 | Nom de fichier | Taille |
|---|---|---|
| b06dec10e8ad0005ebb9da24204c96cb2e297bd8d418bc1c8983d066c0997756 | img-20250120-wa0005.jpg | 6.66 MB |
| c0f30c2a2d6f95b57128e78dc0b7180e69315057e62809de1926b75f86516b2e | 2.tiff | 6.58 MB |
| 9297888746158e38d320b05b27b0032b2cc29231be8990d87bc46f1e06456f93 | whatsapp image 2025-02-10 at 4.54.17 pm.jpeg | 6.66 MB |
| d2fafc7100f33a11089e98b660a85bd479eab761b137cca83b1f6d19629dd3b0 | b.so | 103.31 KB |
| 384f073d3d51e0f2e1586b6050af62de886ff448735d963dfc026580096d81bd | 103.31 KB | |
| b975b499baa3119ac5c2b3379306d4e50b9610e9bba3e56de7dfd3927a96032d | 1.jpeg | 5.66 MB |
| a62a2400bf93ed84ebadf22b441924f904d3fcda7d1507ba309a4b1801d44495 | 103.31 KB | |
| 29882a3c426273a7302e852aa77662e168b6d44dcebfca53757e29a9cdf02483 | img-20240723-wa0001.jpg | 6.58 MB |
| 2425f15eb542fca82892fd107ac19d63d4d112ddbfe698650f0c25acf6f8d78a | 6357fc.zip | 380.71 KB |
| b45817ffb0355badcc89f2d7d48eecf00ebdf2b966ac986514f9d971f6c57d18 | img-20240723-wa0000.jpg | 5.65 MB |
| 69cf56ac6f3888efa7a1306977f431fd1edb369a5fd4591ce37b72b7e01955ee | localfile~ | 1.42 MB |
| 211311468f3673f005031d5f77d4d716e80cbf3c1f0bb1f148f2200920513261 | l | 332.88 KB |
| ffeeb0356abb56c5084756a5ab0a39002832403bca5290bb6d794d14b642ffe2 | 103.31 KB |
Tableau 7. Échantillons de logiciels malveillants pour l'activité LANDFALL.
Adresses IP
- 45.155.250[.]158
- 46.246.28[.]75
- 91.132.92[.]35
- 92.243.65[.]240
- 192.36.57[.]56
- 194.76.224[.]127
Noms de domaine
- brightvideodesigns[.]com
- healthyeatingontherun[.]com
- hotelsitereview[.]com
- projectmanagerskills[.]com
Ressources supplémentaires
- NVD - CVE-2025-21042 – NIST
- NVD - CVE-2025-43300 – NIST
- NVD - CVE-2025-55177 – NIST
- Samsung Mobile Security Updates – Samsung
- WhatsApp Security Advisories 2025 – WhatsApp
- Stealth Falcon's Exploit of Microsoft Zero Day Vulnerability – Check Point Research
- Stealth Falcon preying over Middle Eastern skies with Deadglyph – ESET
- Buying Spying [PDF] – Google TAG
- New details on commercial spyware vendor Variston – Google TAG
- IP address entry for 91.132.92[.]35 – Turkish National CERT (USOM)
- CVE-2025-21043 Analysis: When DNG Opcodes Become Attack Vectors – Blog, Matt Suiche
- ELEGANT BOUNCER Detection Framework – Matt Suiche, GitHub
Annexes
Annexe A : Manipulation de la politique SELinux
Le composant de LANDFALL pour la manipulation de la politique SELinux est l.so. Ce fichier fournit une capacité pour contourner les contrôles de sécurité du système. Il est décompressé de /data/data/com.samsung.ipservice/files/l vers /data/data/com.samsung.ipservice/files/l.so et exécuté.
Plutôt que de contenir des règles codées en dur, l.so implémente un moteur générique qui peut dynamiquement analyser (parser) et charger de nouvelles déclarations de politique SELinux depuis une source externe, modifiant la politique en cours d'exécution en mémoire.
Fonctions exportées pertinentes et uniques :
- sepolicy_from_data : Charger la politique depuis des données binaires
- sepolicy_add_statement : Ajouter des déclarations de politique individuelles
- sepolicy_to_buffer : Sérialiser la politique modifiée
- sepolicy_delete : Nettoyer les objets de politique
Annexe B : Détails supplémentaires sur l'analyse du logiciel espion LANDFALL
Cette annexe détaille les capacités observées du composant chargeur (loader) de LANDFALL, ainsi que celles que nous déduisons exister dans d'autres modules du framework LANDFALL complet auxquels nous n'avons pas encore accédé.
Le "Bridge Head" de LANDFALL, nommé sur le disque b.so, est chargé par un exploit sur l'appareil. Immédiatement après avoir été chargé post-exploit, LANDFALL analyse LD_PRELOAD depuis l'environnement pour éviter d'hériter des "preloads" en amont. Il lit l'ID utilisateur effectif via geteuid() et le stocke globalement pour que les branches ultérieures puissent ajuster le comportement pour le mode "root" versus "non-root". Ensuite, il appelle la routine principale.
Il rassemble les informations de base du processus (pid parent, euid, chaîne de build Android), lit un drapeau d'exécution (runner flag) depuis la variable d'environnement R et en prend une copie pour des actions ultérieures. Cette valeur (typiquement I pour interactif ou P pour passif) sera signalée au C2 et déterminera comment il lance une charge utile ultérieure. Il résout son propre chemin mappé, sélectionne la base privée de l'application à /data/data/com.samsung.ipservice/files/ comme son répertoire de travail, puis y construit deux chemins enfants. Un chemin est pour le téléchargement intermédiaire (staged) et un est pour le l.so final utilisé pour l'exécution.
Configuration
LANDFALL lit et déchiffre (XOR) une configuration JSON directement depuis son propre fichier. Le logiciel espion normalise la configuration en réécrivant les valeurs par défaut internes dans l'objet analysé : les champs numériques sont initialisés par défaut s'ils sont manquants ou nuls, et certains booléens sont forcés à des valeurs fixes quelle que soit la configuration fournie. Enfin, il vérifie qu'une clé publique (X.509 DER) est présente dans la configuration et quitte sinon.
Le Tableau 9 résume la normalisation de la configuration effectuée à ce stade.
| Nom de la clé | Type de valeur | Défau | Requis |
| allow_wifi | booléen | Forcé à true (remplace false/manquant par true) | Non |
| allow_mobile | booléen | Forcé à true (remplace false/manquant par true) | Non |
| allow_roaming | booléen | Défaut false si manquant/false ; true reste true | Non |
| allow_min_battery | entier | 0 si valeur est 0 ou manquante | Non |
| sleep_time | entier (secondes) | 60 si valeur est 0 ou manquante | Non |
| sleep_time_between_retries | entier (secondes) | 35 si valeur est 0 ou manquante | Non |
| suicide_time | entier (secondes) | 7200 si valeur est 0 ou manquante | Non |
| live_mode_expiration | entier (secondes) | 0 si valeur est 0 ou manquante | Non |
| socket_timeout | entier (secondes) | 5 si valeur est 0 ou manquante | Non |
| is_persistent | booléen | Défaut false si manquant/false ; true reste true | Non |
| bridge_head_version_major | entier | Fixé à 2 (toujours) | Non |
| bridge_head_version_minor | entier | Fixé à 1 (toujours) | Non |
| cnc_hostname | chaîne | Aucun ; doit être présent | Oui |
| cnc_port | entier | Aucun ; doit être non nul | Oui |
| cnc_base_url | chaîne | Aucun ; doit être présent | Oui |
| agent_id | chaîne (UUID) | Aucun ; doit être présent | Oui |
| command_id | chaîne (UUID) | Aucun ; doit être présent | Oui |
| commands | tableau | Doit exister ; lu et libéré (structure non retenue ici) | Oui |
| public_key | X.509 DER (octets) | Aucun ; doit être présent et valide | Oui |
Tableau 9. Clés et valeurs pour le logiciel malveillant LANDFALL.
Communication avec le serveur C2
Une fois la configuration terminée, b.so charge les fonctions réseau et de chiffrement nécessaires, configure son environnement SSL et prépare un contexte client sécurisé pour la communication HTTPS future. Si une partie de cette configuration échoue, il quitte proprement plutôt que de risquer une configuration partielle.
Avant d'entrer dans la boucle de balise (beaconing) C2, il émet optionnellement de la télémétrie. S'il s'exécute en tant que "root", il formate une ligne concise "started" (démarré) qui inclut :
- Un marqueur de version fixe (par ex., v1.5.0)
- pid
- euid
- Mode d'exécution (runner)
Il envoie ensuite cela via une requête POST au serveur C2, comme montré ci-dessous.

Si le mode d'exécution est I, il prépare d'abord l'assistant SELinux : il localise l'assistant de politique compressé (/data/data/com.samsung.ipservice/files/l), le décompresse via un décodeur XZ interne dans un nouveau tampon, et écrit le résultat dans data/data/com.samsung.ipservice/files/l.so. Ensuite, il envoie une balise au serveur C2 en envoyant un "ping" utilisant l'agent_id sans tirets comme charge utile. Le résultat ne bloque pas le reste du flux, et il sert de télémétrie pour l'opérateur.
Un exemple de code pour un ping en mode I suit.

Ce n'est qu'alors que la boucle de balise C2 principale commence. Il enregistre le temps zéro et applique un budget temporel ("wall-clock") strict d'environ 7 200 secondes (suicide_time) pour toute la session.
Il remet à zéro deux grands tampons de chemin réutilisables : un pour le "blob" brut qui peut arriver du serveur, et un jumeau pour l'objet partagé décompressé. Les deux chemins vivent sous le répertoire de travail privé de l'application (par ex., /data/data/com.samsung.ipservice/files/). Avec les chemins prêts, il contacte le serveur de commande et de contrôle en construisant un corps compact de style "URL-encoded" de paires key=value :
- Un tag de protocole/variante ; le type de message de la balise
- L'agent_id, le command_id et un nouvel upload_id (UUIDv4) pour la corrélation
- source=bridge_head
- Euid
- Le drapeau d'exécution (runner) et son chemin d'installation sur le disque
Le cas échéant, il calcule un SHA-1 sur une partie du message et l'ajoute. Il utilise la chaîne User-Agent de Chrome suivante :
- Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36.
Les requêtes sont dirigées vers le chemin de base configuré (par ex., POST /is/ HTTP/1.0). Avant que toute donnée applicative ne soit envoyée, il épingle la connexion TLS.
En lisant la réponse du serveur C2, LANDFALL vérifie le code de statut de la réponse et parcourt les en-têtes pour déterminer la longueur et le type du message. Certains codes de statut — en particulier les timeouts et un ensemble masqué de 4xx/5xx (par ex., 408, 504) — sont traités comme transitoires et déclenchent une pause sleep (sleep_time_between_retries), défaut 35 secondes) avant de réessayer avec une nouvelle connexion. Une réponse "non trouvé" (par ex. 404) est considérée comme terminale pour cette exécution et sort de la boucle. Si le statut indique le succès et qu'un corps est présent, LANDFALL procède à la mise en place (staging).
Charges utiles de l'étape suivante
La mise en place commence par nettoyer l'état du système de fichiers. Si un ancien "blob" brut existe au chemin temporaire, il le supprime. Il écrit les octets bruts dans un fichier de mise en place nommé aa.so sous le répertoire de travail, puis tente de les décompresser en utilisant un décodeur XZ/LZMA intégré qui se décompresse dans un tampon pré-alloué d'environ 5 Mo.
En cas de succès, il écrit les octets décompressés dans dec_a.so (le chemin .so final) sous le répertoire de travail, efface le aa.so temporaire et définit le mode du fichier dec_a.so à 777 pour s'assurer qu'il est chargeable dans divers contextes.
Exemple de décompresseur XZ (tronqué) :

Avec l'objet partagé en place (dec_a.so), il choisit une stratégie d'exécution basée sur le drapeau d'exécution (runner). Pour les configurations interactives (I), il exporte deux variables d'environnement et lance un outil système bénin de manière synchrone :
- LD_PRELOAD=<final.so> PRELOAD_PATH=/data/data/com.samsung.ipservice/files/l.so /system/bin/id (où <final.so> est dec_a.so).
Le PRELOAD_PATH pointe vers le chemin de l'appareil où le contenu de la politique SELinux est attendu, permettant au code préchargé de trouver et d'appliquer la politique au démarrage. Notez que ce PRELOAD_PATH n'est utilisé qu'en mode interactif, le chemin d'exécution passif l'omet.
Pour les exécutions passives (P), il lance le même outil en arrière-plan :
- LD_PRELOAD=<final.so> /system/bin/id (avec <final.so> étant dec_a.so)
Ceci est fait pour que le contrôle revienne rapidement pendant que l'assistant s'initialise dans un autre processus. En interne, les deux sont distribués via un wrapper shell (/system/bin/sh -c <cmd>). Dans les deux cas, il n'accepte que des résultats de succès étroits :
- code de sortie 0 ou un 0x15 spécifique ; tout le reste est traité comme un échec et sort de la boucle
En cas de chargement réussi, il formate et envoie une ligne "ended" (terminé) reflétant le message d'ouverture incluant :
- Marqueur de version
- pid
- incremental_build
- runner

Il libère ensuite les chaînes et tampons transitoires. Si aucune charge utile n'était disponible, ou si une erreur transitoire s'est produite, il vérifie le temps écoulé par rapport à son budget d'environ 7 200 secondes. S'il reste du temps, il se met en pause pour l'intervalle configuré et réessaie.
Finalement, lorsque la boucle se termine, soit après un chargement réussi de l'étape suivante, soit en raison du budget temps ou d'erreurs non récupérables, il se termine proprement. S'il s'exécute en tant que "root", il préfère un chemin direct _exit(status) au lieu d'un retour normal pour minimiser les effets de bord dans le runtime. Dans tous les cas, il vise à ne laisser derrière lui que les artefacts minimaux nécessaires pour que le code de l'étape suivante puisse continuer.
Capacités non référencées
Pendant la rétro-ingénierie, nous avons identifié plusieurs routines compilées dans le composant b.so qui ne sont pas invoquées par son flux de contrôle observé. Ces fonctionnalités latentes semblent conçues pour être utilisées par les modules suivants chargés.
Il est également très probable que certaines de ces fonctions soient des restes d'anciennes versions de LANDFALL. Elles révèlent des comportements concrets orientés autour des chemins médias de WhatsApp, de la découverte DCIM, de la mise en place (staging) sur le système de fichiers et de l'hygiène des processus sur Android :
- Une routine prépare une ligne de télémétrie "started" puis interagit avec le sous-système multimédia de l'appareil. Elle formate la ligne :
- BH v1.5.0 started - pid: , euid=, incremental_build: v1.5.0, runner:
- Si ses vérifications internes passent, elle exécute une diffusion (broadcast) pour forcer une nouvelle analyse de la galerie en utilisant le shell exact :
- am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/DCIM/hacked.jpg
- Dans le même flux, elle construit également une sonde "photo la plus récente" sur DCIM en utilisant :
- find /sdcard/DCIM -type f -exec ls -t1 {} + | grep -v hacked| head -1
- Ce schéma est cohérent avec la récolte du dernier élément de l'appareil photo tout en excluant un artefact qu'il peut planter. Cette routine est compilée mais n'est appelée par aucun autre code dans l'échantillon.
- Planteur (planter) de chemin média WhatsApp. Une autre routine décode un PNG 1x1 codé en dur en Base64 (iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJ…JRU5ErkJggg==) et recherche dans les répertoires multimédias de WhatsApp sur le stockage externe un chemin de fichier récent qui correspond à l'identifiant de l'agent (l'UUID est d'abord dépouillé de ses tirets). Elle construit et exécute un pipeline de recherche à travers les chemins par défaut (ID 0) et multi-utilisateurs (ID 95) :
- find /storage/emulated/0/Android/media/com.whatsapp/WhatsApp/Media/WhatsApp\ Images/ /storage/emulated/95/Android/media/com.whatsapp/WhatsApp/Media/WhatsApp\ Images/ -type f -atime -720m -maxdepth 1 -exec grep -lo '.*<agentIdNoHyphens>.*' {} \; -quit 2>/dev/null.
- Si un tel chemin est retourné, elle y écrit le PNG décodé tel quel. Cela ressemble à un artefact de couverture ou à un marqueur secret visant spécifiquement les images WhatsApp.
- Un autre assistant prend un répertoire de base et une chaîne et retourne un chemin JPEG correspondant en exécutant :
- find <base> -name '*.jpg' -exec grep -le '.*<pattern>.*' {} \;
- Il supprime les nouvelles lignes de fin et vérifie que le chemin existe avant de retourner.
- Vérification d'évitement de Zygote : Un assistant d'hygiène de processus alloue un tampon pour sa propre ligne de commande (cmdline) et ne retourne le succès que lorsque le nom ne correspond pas à zygote ou zygote64. Il est conçu pour éviter les processus hôtes spéciaux d'Android.
- Résolveur de symboles SELinux et nettoyage : Deux petites routines gèrent la plomberie SELinux dynamique.
- L'une effectue un dlopen sur /system/lib64/libselinux.so et résout getfilecon et setfilecon dans des pointeurs de fonction globaux.
- L'autre démonte cela et efface les pointeurs.
- Les deux existent pour soutenir le travail sur la politique/le contexte de fichier mais ne sont pas référencées par le chemin de code observé.
- Une routine plus substantielle accepte une liste de chemins de système de fichiers. Pour chacun, elle sauvegarde l'étiquette actuelle via getfilecon, invoque un "étiqueteur" (labeler) interne sur le chemin, applique la propriété via chown puis restaure l'étiquette sauvegardée avec setfilecon. Elle retourne des codes négatifs distincts lorsque chown ou setfilecon échouent.
- Il y a une sonde de fichier qui tente d'ouvrir un chemin et mappe le résultat à des codes de statut internes (succès, permission refusée, non trouvé, erreur générique). Elle réinitialise également l'état interne de la bibliothèque (y compris tous les descripteurs SELinux précédemment ouverts).
- Mapper le résultat de l'exécution du processus au statut du message : Un petit mappeur convertit le résultat d'un assistant d'exécution de commande interne en codes de catalogue de messages (par ex., mappant un retour spécifique (1) au code CMD_STAT_* 0x0C et 2–3 à 0x51). Il standardise le rapport pour les assistants mais n'est pas atteint par la logique actuelle.
- Construire un tableau JSON de rapport d'appareil : Une autre routine dormante construit un tableau cJSON où chaque entrée transporte device_path, un champ binaire codé en Base64, un booléen last_updated et un état textuel dérivé de la table interne CMD_STAT_*. Elle parcourt un vecteur d'entrée, lit le fichier référencé en mémoire, le code en Base64 et l'ajoute au tableau.
- Un petit assistant de "templating" de chaînes trouve les occurrences du jeton --working_dir-- à l'intérieur d'une valeur JSON et les remplace par le chemin d'exécution suivi par le b.so.
- Ajout de TracerPid à la télémétrie : Un assistant de diagnostic analyse /proc/self/status, extrait la ligne TracerPid, la convertit en un entier et, si supérieur à zéro, ajoute une paire clé/valeur formatée dans le corps de la requête via le constructeur de chaînes du b.so.
- Un assistant de mise en place (staging) concatène un tampon existant avec un bloc pseudo-aléatoire dérivé d'une chaîne d'entrée :
- Il initialise un octet avec rand()
- Il effectue un XOR sur chaque octet suivant de l'entrée dans un accumulateur roulant
- Il écrit les octets de l'accumulateur en suffixe
- Il écrit ensuite le tampon combiné dans un chemin de fichier donné via l'écrivain du b.so
- Une paire installateur/désinstallateur en two-steps utilise trois clés de configuration : persistency_origin, persistency_payload et persistency_backup. La routine principale vérifie que les trois sont définies, recopie la sauvegarde vers l'origine si nécessaire, puis supprime le fichier de la charge utile. Elle retourne des codes de statut distincts (0x4B/0x4C/0x4D) qui correspondent aux entrées du catalogue de messages pour "pas de config", "échec déplacement" et "échec suppression". Une routine sœur crée ou tronque conditionnellement le fichier de sauvegarde (fopen avec le mode “w”) lorsqu'un drapeau de persistance global est défini.
- Pourcentage de batterie via sysfs : Un utilitaire lit la capacité de la batterie depuis le sysfs de l'alimentation du système, vérifiant deux emplacements courants : /sys/class/power_supply/battery/capacity et /sys/class/power_supply/Battery/capacity.
- Deux routines configurent et finalisent le répertoire de travail sous le stockage privé de l'application.
- La première crée l'arborescence du répertoire, applique le mode 0771 (0x1F9), ajoute temporairement l'exécution au parent et copie le chemin résolu dans la configuration. Et, lors de l'exécution en tant que "root", elle tente de monter un tmpfs à cet emplacement pour conserver les artefacts en mémoire
- La seconde (nettoyage/finalisation) peut, lorsque "root" et que le répertoire existe, exécuter lsof | grep <working_dir> et envoyer le résultat "à la maison". Elle restaure ensuite le mode d'origine du répertoire parent et libère le tampon du chemin.
- Découverte de processus par contexte SELinux et par cmdline : Deux assistants de recherche itèrent /proc, construisant et lisant des fichiers par PID.
- L'un compare /proc/%d/attr/current à un contexte SELinux cible puis confirme que le processus a un PPID 1.
- L'autre compare /proc/%d/cmdline à une cmdline cible.
- En cas de correspondance, ils écrivent le PID dans un paramètre de sortie et retournent le succès.
- Impression de débogage d'un tableau de variantes : Une routine destinée aux développeurs imprime une petite structure de tableau typé. Elle formate les noms de types à partir d'une table, vide les tableaux d'octets courts entre crochets et émet un seul caractère pour un type spécifique, un élément par ligne. Cela ressemble à des restes de débogage et n'est pas invoqué par le code actif.
Aucun de ces assistants n'est exercé par la boucle d'exécution principale de ce composant. Leur présence est cohérente avec une architecture à étapes (staged) dans laquelle les objets partagés chargés ultérieurement, formant le framework LANDFALL complet, étendent la collecte et la persistance en utilisant des capacités déjà compilées dans ce chargeur.