Contenu

Comment hacker (légalement) une multinationale de 20 milliards d'euros ?

📸 CVE-2023-2520{2|3} : Comment hacker une MULTINATIONALE avec un dépôt de fichiers et une SSRF ?

Introduction

La sécurité informatique est maintenant au coeur de notre quotidien. Aux infos, sur internet, sur les réseaux, tout le monde, avec ou sans connaissance, semble déjà avoir été victime d’une attaque informatique plus ou moins grave.

Et cela peut toucher des petites entreprises comme les plus grosses du CAC40. Si vous pensiez que la sécurité des plus grosses sociétés de ce monde est inviolable, détrompez vous.

Quelques exemples sur les pires fuites de données :

  • Yahoo aout 2013 : informations personnelles estimées jusqu’à 3 milliards d’utilisateurs.
  • Linkedin mai 2016 : mail/mdp de plus de 150 millions d’utilisateurs.
  • Facebook avril 2021 : nom, prénom, mail, tel, employeurs de plus de 500 millions d’utilisateurs.

Aujourd’hui, à travers cette article, retour sur un hack de 20 milliards d’euros (au moins ! 😅).

Contexte

Processus de divulgation responsable

Cette article a été réalisée en accord avec l’ANSSI, l’Agence Nationale des Systèmes d’Informations à la suite d’un processus de divulgation responsable.

Soyez responsable
Lors de la découverte d’une vulnérabilité, il est préférable de prendre directement contact avec le développeur/responsable de la solution. Ne divulguez pas de vulnérabilités sans autorisation.

La cible

Canon Inc est une entreprise japonaise basée à Tokyo et spécialisée dans les produits optiques, incluant appareils photo, photocopieurs et imprimantes.

Elle produit tous les ans un CA aux alentours de 25 milliards de dollars.

/images/hacker-multinationale-via-file-upload-et-ssrf/canon.png

Un test d’intrusion “banal”

Retour en 2022

En décembre 2022, Trackflaw est mandaté pour effectuer un audit technique de type test d’intrusion web/applicatif pour un client grand compte (le nom est censuré pour raison de confidentialité).

L’audit applicatif, d’une durée de 5 jours, était a effectuer en boite grise et concernait une application de gestion de document. Ce type d’audit est tout à fait classique et est effectué très régulièrement par Trackflaw.

Le logiciel a audité est un logiciels de Therefore, une filiale de Canon. L’étude de ce logiciel a permis de découvrir 2 vulnérabilités critiques.

Client ou pas client ?

Therefore est une société proposant des solutions de gestion de l’information. L’un des principaux logiciels de Therefore est spécialisé dans le traitement des documents. Toutes les solutions sont disponibles directement sur leur site web.

Comment communiquer ?
🤔 Du coup, les vulnérabilités découvertes concernent Therefore et non pas le client initial. Comment communiquer les faiblesses ?

💡 En effet, la question est importante !

Lors du test d’intrusion, plusieurs vulnérabilités importantes sur la solution de traitement de documents de Therefore ont été décelées.

Le test d’intrusion a été réalisé sur l’application de gestion documentaire Capture. Les vulnérabilités concernent aussi bien la version web que la version client lourd.

En temps normal c’est au client de traiter le processus :

  1. L’auditeur (Trackflaw) envoi le rapport au client initial.
  2. Le client initial analyse et envoi le rapport au développeur (Therefore).
  3. Le développeur (Therefore) corrige les vulnérabilités.

Or, ici, la communication n’était pas… optimale. Il a fallu faire évoluer le processus.

  1. Un premier rapport concernant toute les vulnérabilités de l’audit a été communiqué au client initial.
  2. Un deuxième rapport anonymisé a été rédigé contenant uniquement les vulnérabilités impactant Therefore (et non le client initial !).
  3. Ce rapport anonymisé devait être ensuite transmis à Therefore.

😅 Sauf que tous ne s’est encore pas passé comme prévu !

CVE - Common Vulnerabilities and Exposures

Une solution informatique peut être utilisées par plusieurs acteurs, ou plutôt, utilisateurs.

Lors de la découverte d’une faiblesse, le chercheur doit communiquer avec le développeur de la solution quand il n’y a pas de client intermédiaire (au contraire de nous ici) afin de corriger les problèmes sur l’ensemble de ses applications déployées.

Pour ce faire, le chercheur va rédiger un petit rapport afin d’expliquer les problèmes découverts. C’est ce qu’on appelle un advisory.

Afin de faciliter la traçabilité des vulnérabilités découvertes dans des produits “publiques”, l’organisation MITRE, soutenu par le département de la Sécurité intérieure des États-Unis, a créée la base d’informations CVE.

Common Vulnerabilities and Exposures
Common Vulnerabilities and Exposures ou CVE est un dictionnaire d’informations publiques relatives aux vulnérabilités de sécurité. La base est maintenue par l’organisme MITRE, soutenu par le département de la Sécurité intérieure des États-Unis.

En parallèle de la rédaction de l’advisory, 2 déclarations ont été effectuées concernant les deux faiblesses découvertes. Aucune informatique technique n’est encore disponible à ce stade. Uniquement les identifiants des vulnérabilités sont disponibles.

Dans notre cas, 2 numéros :

Les CVE-2023-25202 et CVE-2023-25203 affectent Therefore Case Manager 2018/2021 et Therefore Solution Designer 2018/2021 (https://www.therefore.net/help/2021/en-us/rn_releasenotes.html).

Toutes les versions égales ou inférieures à 18.4.0 et égales ou inférieures à 26.1.1 sont vulnérables aux deux vulnérabilités. A ce jour, je n’ai toujours pas de nouvelles de Therefore et si la nouvelle version est correctement patchée.

Communication avec l’ANSSI

/images/hacker-multinationale-via-file-upload-et-ssrf/anssi.png

L’ANSSI ou l’Agence nationale de la sécurité des systèmes d’information est un service français créé par décret en juillet 2009. Ce service à compétence nationale est rattaché au secrétariat général de la Défense et de la Sécurité nationale (SGDSN), autorité chargée d’assister le Premier ministre dans l’exercice de ses responsabilités en matière de défense et de sécurité nationale.

Cette organisation française a joué un rôle majeur dans l’ouverture du dialogue avec Therefore.

Divulgation responsable

Après la prise de contact, l’ANSSI réussit à établir une liaison avec Therefore via le CERT autrichien. Ce processus d’échange s’étala sur presque un an et débloqua la situation.

Au bout de nombreux messages sans retour, l’ANSSI en accord avec le CERT autrichien, donna l’autorisation de divulguer les vulnérabilités le 12 décembre 2023. 🥳

Timeline final

DateAction
28 novembre 2022Découverte des vulnérabilités lors du test d’intrusion
4 décembre 2022Communication des vulnérabilités au client initial
19 décembre 2022Rédaction d’un advisory à destination de Therefore
16 janvier 2023Divers contacts infructueux avec Therefore
28 février 2023Troisième et dernière tentative de contact avec Therefore
2 mai 2023Prise de contact avec l’ANSSI
9 mai 2023Prise de contact avec Therefore via le CERT autrichien
7 septembre 2023Relance de l’ANSSI vers le CERT autrichien
12 décembre 2023Divulgation responsable coordonée avec l’ANSSI et le CERT autrichien (sans accord de Therefore)

Les vulnérabilités

CVE-2023-25202 : Mécanisme de dépôt de fichier non sécurisé

/images/hacker-multinationale-via-file-upload-et-ssrf/CVE-2023-25202.png

Contexte

Le test d’intrusion a été réalisé dans un contexte client particulier sans le support de Therefore.

Les vulnérabilités de cet article peuvent n’être applicables que dans un contexte spécifique.

Description

L’application Therefore est trop permissive quant au type de fichier pouvant être téléchargé par un utilisateur.

En effet, elle n’empêche que le téléchargement de fichiers HTML, EXE et BAK. Un attaquant peut télécharger des fichiers techniques tels que des fichiers PHP, ASP, ASPX et JSP.

Ces fichiers peuvent permettre, sous certaines conditions, d’exécuter des commandes système (non exploitables ici).

L’image ci-dessous résume les différentes extensions pouvant être utilisées sur l’application (générée avec la fonction intruder de Burp Suite Pro).

/images/hacker-multinationale-via-file-upload-et-ssrf/screens/file-upload-1.png

Exploitation

L’application empêche les fichiers HTML d’être déposés. Cette protection peut être facilement contournée en déposant des fichiers markdown (MD) prenant en charge le HTML.

Il est important de noter qu’il n’est pas possible de télécharger des fichiers exécutables tels que les logiciels malveillants.

/images/hacker-multinationale-via-file-upload-et-ssrf/screens/file-upload-2.png

Ce manque de contrôle sur le contenu déposé facilite l’exploitation de la vulnérabilité suivante.

Risques

Un attaquant est en mesure de déposer des fichiers non contrôlées par l’application. Cela permet à un attaquant d’exploiter plus facilement des vulnérabilités de type SSRF, de déposer des fichiers malveillants (autres que de type exe) ou de déclencher des attaques par déni de service.

Un attaquant pourrait également, sous certaines conditions, exécuter du code à travers les fichiers déposés (ASP, PHP, JSP fichiers, etc).

Correction

Il est conseillé de limiter le type de fichiers à télécharger au strict nécessaire.

Un utilisateur standard n’a besoin, la plupart du temps, que de fichiers de traitement de texte (ex : office et fichiers PDF) et d’images. Il est conseillé de limiter le nombre d’extensions utilisables (se référer aux extensions gérées par le développeur du plugin Aspose).

CVE-2023-25203 : Application vulnérable aux attaques de type SSRF (Server Side Request Forgery)

/images/hacker-multinationale-via-file-upload-et-ssrf/CVE-2023-25203.png

Description

La solution Therefore utilise le logiciel Aspose pour gérer la conversion des fichiers déposées au format PDF (cf. capture ci-dessous).

/images/hacker-multinationale-via-file-upload-et-ssrf/screens/ssrf-1.png

L’utilisation de ce type de solution permet de convertir une grande quantité de fichiers différents (plus d’infos dans la documentation d’Aspose).

Ceci présente un risque si l’application ne gère pas correctement le filtrage des extensions inutilisées.

Selon le développeur du logiciel Aspose, des mesures de sécurité doivent être mises en place pour éviter qu’un attaquant puisse faire exécuter au serveur des requêtes internes. Cette attaque est appelée SSRF (Server Side Request Forgery).

La solution proposée par Therefore est vulnérable aux attaques SSRF de plusieurs manières.

Exploitation

Acces à une ressource distante

L’utilisation d’un fichier SVG illustre la possibilité de faire une requête HTTP GET par l’application vers un serveur contrôlé par l’attaquant.

/images/hacker-multinationale-via-file-upload-et-ssrf/screens/ssrf-2.png

La capture d’écran ci-dessus illustre cette vulnérabilité SSRF à l’aide d’un fichier SVG (disponible ci-dessous).

1
2
3
4
<svg width="500" height="500"
    xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <image xlink:href="http://IP-ATTAQUANT">
</svg>
Récupération d’empreinte de mot de passe

Dans un environnement Windows, il est possible de demander une ressource par un chemin particulier. Il est possible de coupler cette fonctionnalité par le biais de cette faiblesse SSRF afin de rediriger le compte local de la machine hébergeant l’application vers le serveur SMB de l’attaquant.

Ce dernier recevra l’empreinte NetNTLMv2 de ce compte de service.

Dans la capture d’écran ci-dessous, un serveur SMB a été déployé sur la machine attaquante. En interprétant le fichier SVG, le serveur attaquant collecte le condensat du compte machine FR********4$.

/images/hacker-multinationale-via-file-upload-et-ssrf/screens/ssrf-3.png

Ce condensat pourrait ensuite être relayé et/ou cassé afin d’attaquer l’environnement Active Directory du client initial.

Cartographie réseau interne

Cette vulnérabilité SSRF permet également à un attaquant de cartographier l’architecture interne du client (si celle ci communique avec Internet).

Sur la capture d’écran ci-dessous, il est possible d’atteindre le serveur google.fr. L’attaquant pourrait également utiliser la machine victime comme proxy pour usurper son adresse IP publique.

/images/hacker-multinationale-via-file-upload-et-ssrf/screens/ssrf-4.png

Enfin, un attaquant est également en mesure d’effectuer les actions suivantes (non concluantes par manque de temps) :

  • Scan de ports : il est possible de scanner les ports des machines sur le réseau.
  • Lecture de fichiers : le plugin Aspose semble être protégé contre la lecture de fichiers (ex : capture ci-dessous. Le service redirige vers le chargement du fichier C:\Windows\win.ini mais rien n’est affiché).
  • Déni de service : un attaquant est en mesure de télécharger un document faisant référence à des images très volumineuses. Lors du traitement de cette image, la bibliothèque consomme de la mémoire et du temps pour traiter ces images.

/images/hacker-multinationale-via-file-upload-et-ssrf/screens/ssrf-5.png

Risques

Les principaux risques de cette vulnérabilité pour les clients utilisant cette solution sont les suivants :

  • Vol d’informations d’identification : un attaquant est en mesure de collecter le condensat NetNTLMv2 d’une personne chargeant un contenu distant. Ce type de challenge peut être cassé par l’attaquant afin de récupérer le mot de passe de l’utilisateur cible.
  • Divulgation d’images sensibles : le traitement d’un document contenant une référence à un fichier d’image local entraînera la divulgation de ce fichier dans le document final. Cela peut entraîner une divulgation d’informations sensibles.
  • Cartographier le système d’information de la victime : un attaquant peut cartographier l’infrastructure de la victime et effectuer une découverte de services.
  • Déni de service : un attaquant peut empêcher la machine de fonctionner correctement en la rendant inutilisable.

Correction

Pour corriger cette vulnérabilité SSRF, il est possible de modifier la configuration du plugin Aspose utilisé dans la fonction d’analyse de fichier. Le plugin est en mesure d’empêcher les attaques SSRF.

Aspose a déjà publié un article mettant en garde contre les différents risques liés au chargement d’éléments distants.

L’exemple de code suivant montre comment désactiver le chargement des images externes :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public class DisableExternalImagesHandler : IResourceLoadingCallback
{
    public ResourceLoadingAction ResourceLoading(ResourceLoadingArgs args)
    {
        // Skip external images loading.
        return (args.ResourceType == ResourceType.Image)
        ? ResourceLoadingAction.Skip
        : ResourceLoadingAction.Default;
    }
}
...
const string documentFilename = "input.docx";
var disableExternalImagesOptions = new LoadOptions
{
    ResourceLoadingCallback = new DisableExternalImagesHandler()
};
var doc = new Document(documentFilename, disableExternalImagesOptions);

Allez plus loin

Ouf ! Beaucoup d’informations ! 😅

👇 Une vidéo est disponible sur la chaine de Trackflaw pour une meilleur vulgarisation. N’hésitez pas à noter vos retours en commentaire 🙏