Retour sur la Nullcon Berlin 2023

XMCO était présent à la seconde édition de la Nullcon Berlin, une conférence dédiée aux sujets de sécurité offensive comme défensive. L’événement existe depuis plusieurs années en Inde, et cette seconde édition internationale s’est tenue du 6 au 10 mars au Novotel Berlin Am Tiergarten, à Berlin. Celle-ci comportait 2 jours de formation suivis de 2 jours de conférences, de CTF et d’un live Bug Bounty en partenariat avec YesWeHack.

Nos consultants ont assisté aux différentes conférences et présentent un résumé de celles qui ont retenu leur attention. La liste complète des présentations est détaillée sur https://nullcon.net/berlin-2023/conference-speakers/.

Server-Side Prototype Pollution: Blackbox detection without the DoS – Gareth Heyes (@garethheyes)

L’ouverture de la Nullcon a été confiée à l’expert en sécurité JavaScript Gareth Heyes, chercheur chez PortSwigger, qui a présenté des méthodes de détection de « server-side prototype pollution ».

Gareth a commencé sa présentation par une explication technique des prototype pollutions. Celles-ci exploitent le mécanisme d’héritage du JavaScript, qui définit un objet prototype contenant les propriétés communes à tous les objets d’un même type. Par exemple, un appel à "XMCO".toLowerCase() exécute la fonction String.prototype.toLowerCase().

Le prototype d’un objet étant accessible via sa propriété .__proto__, il est possible de modifier le prototype de tous les objets du même type au sein d’une application vulnérable. Si le code JavaScript constitue la partie serveur, cette injection devient une server-side prototype pollution et peut impacter la configuration de l’application jusqu’à permettre une exécution de code à distance (RCE).

La principale limitation lors d’une telle exploitation est que la modification hasardeuse d’un prototype global à l’application génère rapidement une exception JavaScript. Appliquée côté serveur, une pollution de prototype peut rendre l’application inutilisable et requérir un redémarrage.

Gareth a ensuite présenté différentes méthodes de détection de pollution de prototype qu’il a initialement découvertes en analysant sa propre version modifiée de Node. Les propriétés ciblées par ces premières méthodes étaient l’encodage global, le constructeur Object, l’en-tête expect, et le corps de la requête pour forcer l’interprétation HTML d’un contenu JSON réfléchi – Gareth met un point d’honneur à parler de XSS à chacune de ses interventions. En revanche, toutes ces méthodes provoquaient au mieux la corruption des réponses du serveur, au pire un plantage permanent de celui-ci.

Après ces premiers essais infructueux, le chercheur est arrivé au cœur de sa présentation et a expliqué les méthodes de détection non destructives qu’il a identifiées :

  • {"__proto__":{"parameterLimit":1}} permet de limiter le nombre de paramètres traités ;
  • {"__proto__":{"ignoreQueryPrefix":true}} permet d’ignorer un ? dans les paramètres ;
  • {"__proto__":{"allowDots":true}} permet de créer des objets dans les paramètres de la requête ;
  • {"__proto__":{"contentType":"application/json; charset=utf-7"}} permet de décoder des valeurs envoyées en UTF-7 ;

Dans une deuxième partie, Gareth a partagé des méthodes de détection qui, elles, pouvaient être utilisées de façon automatisée :

  • {"__proto__":{"json space":" "}} permet d’ajouter un espace entre les valeurs du JSON ;
  • {"__proto__":{"exposedHeaders":["foo"]}} permet de renvoyer un en-tête « Access-Control-Expose-Headers » dans la réponse HTTP ;
  • {"__proto__":{"status":510}} permet de renvoyer un code d’erreur HTTP arbitraire ;
  • {"__proto__":{"head":true}} permet d’exclure la méthode HEAD de la réponse à une requête OPTIONS ;

Davantage de méthodes non destructives, mais dont les résultats sont moins certains, ont également été présentées.

Enfin, des études sur des applications réelles et l’analyse des comportements d’erreur ont permis à Gareth d’identifier des sites vulnérables aux pollutions de prototype et d’identifier les moteurs JavaScript utilisés sur ces sites.

Gareth a terminé sa conférence en présentant quelques moyens de défense contre les attaques de « server-side prototype pollution », telle que l’utilisation de Map ou Set pour éviter d’hériter du prototype Object, de supprimer totalement les propriétés __proto__, ou de les assigner explicitement à null.

L’aboutissement de sa recherche est une extension Burp permettant de détecter si l’application cible est vulnérable à une « server-side prototype pollution ».

Lien vers la publication et les slides présentées à la Nullcon : https://portswigger.net/research/server-side-prototype-pollution

The Silent Spy Among Us – Modern Attacks Against Smart Intercoms – Vera Mens (@V3rochka)

Après s’être installés dans leurs nouveaux locaux, les chercheurs en sécurité de Claroty se sont intéressés au nouvel interphone connecté qui les attendait devant leur porte.

Vera Mens relate comment l’équipe de recherche Team82 a identifié 13 vulnérabilités sur leur Akuvox E11, qui permettaient à un attaquant d’exécuter du code arbitraire sur l’interphone, de capturer le son et l’image en temps réel, et d’accéder à un serveur FTP centralisant des images de tous les interphones actifs.

La démarche initiale était d’automatiser un maximum l’utilisation de l’interphone. Vera étant assise à la place la plus proche de l’entrée, elle a très vite cherché si une API pourrait lui éviter de se lever à chaque fois qu’un collègue avait oublié son badge. La fonctionnalité d’ouverture était documentée publiquement et un Slackbot a rapidement été implémenté pour ouvrir les portes.

La route d’API d’ouverture nécessite une authentification par nom d’utilisateur / mot de passe, mais les chercheurs se sont demandé si toutes les fonctionnalités exposées étaient sécurisées de cette façon. Le modèle de l’interphone étant disponible pour un coût accessible, l’équipe a acheté son propre exemplaire de test.

En attendant la livraison, les chercheurs ont réussi à obtenir le firmware de l’appareil, qui n’était pas chiffré et qui contenait un SquashFS. Sur ce système de fichiers, le serveur web de l’appareil connecté a pu être identifié et répliqué sur une Raspberry Pi qui partage la même architecture ARM.

En explorant l’application web, les chercheurs ont découvert que la configuration de l’appareil pouvait être exportée sans authentification. Les mots de passe des différents services ainsi obtenus sont chiffrés, mais comme le mécanisme de (dé)chiffrement est implémenté dans le code source, il est possible de retrouver les mots de passe en clair. Une recherche de ce modèle d’interphone exposé sur internet a remonté près de 5000 appareils, qui sont donc vulnérables à un contournement d’authentification.

L’objectif ultime d’une recherche de sécurité est d’identifier un moyen d’exécuter des commandes arbitraires à distance (RCE). L’équipe de Vera en a trouvé deux.

Le premier est une injection de commande dans le code C++ system(&command). Cette commande déplace un fichier dont l’attaquant contrôle le nom. Une route d’upload de fichier décorrélée permet la création de fichiers avec un nom arbitraire. En exploitant cette création de fichiers, il est possible d’injecter une commande dans le nom du fichier, qui sera exécutée lors de l’appel à system.

La seconde exécution de code n’a pas été présentée pendant la conférence, faute de temps. Les consultants XMCO restituent ici la publication de la Team82 : après réception de leur propre appareil, l’équipe a analysé une application de l’éditeur permettant de chercher des appareils Akuvox sur le réseau local. Le protocole est propriétaire et les données chiffrées, mais l’analyse de l’application et de l’exécutable associé sur l’interphone a permis de déchiffrer les échanges et d’identifier un format de message permettant l’exécution d’une commande arbitraire.

Pendant ses recherches, la Team82 a également identifié des fonctionnalités de capture réseau depuis l’interphone, des captures de flux vidéo et de photos, accessibles sans authentification sur le réseau local.

Vera a poursuivi sa présentation en montrant des photos de ses peluches prises par leur interphone de test. Ces photos ont été prises automatiquement par l’interphone lorsque celui-ci détecte un mouvement, pour fournir à l’utilisateur l’historique des activités devant sa porte. L’intervenante s’est demandé où ces images étaient enregistrées, et a exploité la fonctionnalité de capture réseau pour découvrir que chaque photo prise par chaque interphone Akuvox E11 est envoyée à un serveur FTP unique. Comme un seul compte centralise toutes les photos, et permet de lister les documents du serveur FTP, un attaquant est en mesure de télécharger toutes les images enregistrées.

La dernière partie de la recherche a porté sur la possibilité d’activer manuellement la caméra des appareils qui n’étaient pas directement exposés sur internet. L’équipe s’est intéressée au protocole SIP utilisé par l’application mobile pour appeler l’interphone associé. Aucun contrôle d’autorisation n’est implémenté, et un attaquant est en mesure d’appeler n’importe quel appareil.

La présentation s’est terminée sur le retour d’expérience de Claroty pour divulguer les CVE. Initialement contacté en janvier 2022, Akuvox a ignoré les demandes de Claroty et du CERT/CC, jusqu’à la publication des vulnérabilités le 9 mars 2023 – la veille de la conférence.

Après plus d’un an de relances infructueuses, il n’aura fallu que 4 jours après la publication des vulnérabilités pour que l’éditeur reconnaisse les failles de sécurité et contacte ses clients.

Liens vers la publication de la Team82 : https://claroty.com/team82/research/the-silent-spy-among-us-modern-attacks-against-smart-intercoms

The Achilles Heel Of The macOS Gatekeeper – Jonathan Bar Or (@yo_yo_yo_jbo)

Dans cette présentation, Jonathan Bar Or, chercheur en sécurité chez Microsoft, revient sur sa découverte en juin 2022 d’une vulnérabilité (CVE-2022-42821) dans macOS. Baptisée « Achilles », cette faille permet de contourner Gatekeeper, un mécanisme de sécurité conçu pour garantir que seuls les logiciels de confiance sont exécutés sur le Mac d’un utilisateur. L’exploitation de ce genre de vulnérabilité représente un vecteur d’accès initial puissant pour la distribution de malwares.

Jonathan commence sa présentation par rappeler les principes de fonctionnement de Gatekeeper. Quand une application est téléchargée depuis un navigateur, un attribut spécifique dit « étendu » (extended attribute) est assigné au fichier téléchargé : com.apple.quarantine. Quand l’utilisateur lance ensuite pour la première fois l’application, la présence de cet attribut déclenche Gatekeeper, qui va agir selon les 2 cas suivants :

  • Si l’application est signée avec un certificat d’identification du développeur valide et qu’il est notarisé par Apple comme étant exempt de contenu malveillant et d’altérations, alors l’utilisateur peut donner son autorisation ou non pour lancer l’application ;
  • Dans le cas contraire, l’application ne peut pas être lancée.

Les attributs étendus sont supportés sur la plupart des systèmes de fichiers de macOS et ont pour but d’enregistrer les métadonnées d’un fichier. L’attribut com.apple.quarantine enregistre des informations sur l’origine du fichier, mais aussi des instructions sur la manière dont Gatekeeper doit traiter le fichier. Cet attribut a généralement la forme suivante : flag;date;agent_name;UUID

En s’inspirant de techniques de contournement de Gatekeeper déjà mises à jour par le passé, Jonathan s’est intéressé de plus près aux mécanismes liés aux métadonnées dans les archives.
Son travail commence par la découverte d’AppleDouble, un format introduit par Apple en 1994 qui permet de conserver les métadonnées d’un fichier dans un fichier à part, et dont le nom commence par le préfixe « ._ ». Quand une archive est extraite dans macOS, les fichiers AppleDouble qu’elle contient sont traités afin d’assigner au fichier lié ses métadonnées.

Jonathan a d’abord essayé de générer des attributs étendus extrêmement larges au format AppleDouble, afin qu’il n’y ait ensuite plus assez d’espace pour assigner l’attribut com.apple.quarantine et ainsi, ne pas déclencher Gatekeeper lors de l’exécution du fichier. Cette technique s’est révélée inefficace car AppleDouble est ignoré au-dessus de 2GB et il n’a y pas de limite sur le nombre d’attributs étendus qu’un fichier peut avoir.

En analysant de plus près le mécanisme d’extraction des archives, il fait une découverte significative : l’attribut étendu com.apple.acl.text, utilisé pour assigner les Listes de Contrôle d’Accès (Access Control Lists ou ACL en anglais). Les ACL permettent un contrôle d’accès précis aux différents fichiers et dossiers, comme le droit d’ajouter des attributs étendus.

Fort de cette découverte, il décide d’ajouter des ACL très strictes aux fichiers téléchargés et confirme ainsi que ces  ACL empêchent le navigateur de leur ajouter l’attribut étendu com.apple.quarantine, évitant ainsi l’activation de Gatekeeper lors de l’exécution du fichier.

Il met alors au point la preuve de concept suivante :

  1. Créer un fichier malveillant avec une icône arbitraire ;
  2. Créer un fichier AppleDouble avec l’attribut étendu com.apple.acl.text, en lui assignant une valeur représentant des ACL très contraignantes ;
  3. Créer une archive avec l’application et son fichier AppleDouble et l’héberger sur un serveur Web.

Un utilisateur qui télécharge, extrait et enfin exécute cette application ne recevra aucun message d’alerte de la part de Gatekeeper.

Lien du support de présentation : https://nullcon.net/media/media/achilles-heel-of-macOS-gatekeeper-Berlin23.pptx

Lien vers l’article publié par Jonathan Bar Or : https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/

Conclusion

La seconde édition de la Nullcon Berlin s’est clôturée vendredi 10 mars, en fin de journée. Cette conférence est encore assez petite comparée à d’autres évènements majeurs en Europe, avec seulement 180 participants, mais elle profite de l’expérience acquise par l’équipe organisatrice qui gère depuis 2010 l’édition indienne de la conférence : les 16 présentations se sont enchaînées de manière fluide et les prestations du Novotel ont permis de profiter pleinement de l’événement (repas, rafraîchissements, service de bagagerie, etc.).

Les retransmissions vidéo et supports de présentation des différentes interventions sont disponibles librement à l’adresse suivante : https://nullcon.net/archive-download/berlin-2023.

Paul & Mathieu

Mathieu Claverie

Découvrir d'autres articles

  • Conférences

    Retour sur la THCon 2024

    Lire l'article
  • Conférences

    Retour sur WestDataFestival 2024

    Lire l'article
  • Conférences

    DORA et la résilience opérationnelle des fournisseurs

    Lire l'article