Windows se voit affublé d’une nouvelle vulnérabilité, l’AtomBombing.
Découverte par les chercheurs en sécurité de la société enSilo, cette vulnérabilité permet, à partir d’un poste compromis, d’injecter du code malveillant en exploitant le système des tables Atom de Windows.
Accessible via des appels APC (Asynchronous Procedure Calls), les tables Atom se comportent comme une base de données pour les processus appelant, permettant également le partage de données inter-processus.
An atom table is a system-defined table that stores strings and corresponding identifiers. An application places a string in an atom table and receives a 16-bit integer, called an atom, that can be used to access the string. A string that has been placed in an atom table is called an atom name.
Porté de la vulnérabilité
Cette vulnérabilité n’est pas exploitable à distance, mais bel et bien depuis un poste déjà compromis par un malware.
Cependant, dans des attaques du type APT (Advanced persistant Threat), cette vulnérabilité peut être un atout considérable.
Elle permet pour le moment de passer les logiciels de sécurité, de tromper de possibles restrictions logicielles ou encore de profiter de l’accès à certaines ressources accessibles uniquement à certains processus comme les navigateurs, permettant ainsi de récupérer les mots de passe ou de tromper l’utilisateur.
Exploitation
L’AtomBombing est une vulnérabilité du type Write-What-Where, elle permet donc d’écrire où l’on veut dans le processus ciblé par l’attaque.
Son exploitation se déroule en trois étapes et l’étape d’injection est similaire aux techniques modernes d’exploitation de buffer overflow car la charge utile décrite dans le papier technique expose la technique du ROP (Return Oriented Programming) utilisé lors de la présence de la DEP (Data Execution Prevention), cette technique utilise des portions de codes appartenant au processus ciblé.
La capture suivante illustre l’exploitation de l’AtomBombing pour déclencher un shellcode / processus tiers (la calculatrice) dans le contexte du lecteur VLC :
Autre exemple avec mspaint.exe en vidéo ici.
Mitigation
La notion de “patch” n’est pas envisageable. En effet le système de table Atom est natif à Windows, aucun correctif ne peut y être apporté car cela imposerait une modification interne au système d’exploitation.
Une solution probable serait de “introduire une couche d’abstraction qui permettrait d’isoler les threads les uns des autres” comme l’indique Bobby Kuzma, ingénieur chez Core Security.
La solution proposée par l’équipe d’enSilo est de faire un monitoring sur de possible activités suspectes au niveau des appels API.
Sources & ressources
- AtomBombing: A Code Injection that Bypasses Current Security Solutions – enSilo
- Return-oriented programming
- CWE-123: Write-what-where Condition
- Advanced Persistent Threat
Fabien
Consultant Sécurité