---
# System prepended metadata

title: Audit Sysdream automne 2022

---

---

robots : noindex, nofollow

---
# Audit Sysdream automne 2022

## Calendrier
- Audit de configuration : 26 au 30 septembre
    - conf fournie par Hélouri le 23 septembre => détails à ajuster
- Audit d'intrusion : 26 au 30 septembre
    - IP de sysdream fourni à Hélouri le 23 septembre
    - Identifiants/Mots de passe de pilotage et portail fournis le 23 septembre
    - en attente du compte pour accéder au swagger de l'API de consultation
- Audit de code : 3 au 7 octobre
    - zip des 3 espaces gitlab fournis par Céline le 23 septembre
- Restitution le vendredi 14 octobre 10h-11h30 => reportée

## Intervenants
- DSI/DSMR : Jean-Luc Flotté et Myriam Beck 
- Sysdream : Marc Legendre, Neil Martin, Julien Valet
- SNDI Lille : Michael Canalès, Céline Bonjour, Jérémie Léonard
- DSE/DRISS : Isabelle Léonard, Annie Chanut, Myriam Broin
- CEI/CIGAL : Hélouri Morvan (non disponible du 26 au 30 septembre)
- DSI/DDSI : Dominique Ansieau

## Communication
- Salon Tchap : Audit Coltrane
- Mail DSMR : :DG75-Division Sécurité et Maîtrise des Risques <division-securite-et-maitrise-des-risques@insee.fr>

## Champ
- Coltrane = Batchs Core Portail Pilotage https://gitlab.insee.fr/plateformes-collecte/coltrane/coltrane
- API de consultation https://gitlab.insee.fr/plateformes-collecte/coltrane/api-de-consultation
- ws dans les bdd? https://gitlab.insee.fr/plateformes-collecte/coltrane/existdb-api ou accès dashboard de preprod (fourni au cas où)
- orbeon? https://gitlab.insee.fr/plateformes-collecte/coltrane/orbeon/authentification (non fourni)

## Comptes pour Sysdream sur la Preprod
- Accès à Pilotage (4.5.9) https://preprod.contacts-pilotage.insee.fr/
    - COLPILTEST1 à 8 avec les droits Utilisateurs_Coltrane-Pilotage
    - quid des mots de passe : Pil@udit2022
        - https://preprod.gestion-comptes-utilisateurs.insee.fr/realm/SSP/users/COLPILTEST1
- Accès au Portail (4.5.9)  https://preprod.entreprises.stat-publique.fr/portail
    - NSSU89M Coltr@udit22
        - Habilitation sur ANTIPOL-2022-A00 pour 999999003 vague 99 modèle M1 (base 2)
        - Habilitation sur ECMOSS-2022-A00 pour 999999003 vague 99 modèle m1 (base 1)
    - TGA6MM9 Coltr@udit22
        - Habilitation sur ANTIPOL-2022-A00 pour 999999031 vague 99 modèle M1 (base 2)
        - Habilitation sur ECMOSS-2022-A00 pour 999999031 vague 99 modèle m1 (base 1)
- Accès à l'API (1.0.5) https://preprod.api.consultation.coltrane.insee.fr/
    - compte audit-service créé en hors-prod et preprod/prod (le secret de preprod/prod est connu par le CEI uniquement)
        - "realm": "insee-ssp",
        - "auth-server-url": "https://auth.insee.net/auth/",
        - "resource": "audit-service", _ou prendre le compte coltrane-service si audit-service n'est pas créé à temps_
        - "secret": _a demander au CEI_

**Chargement des comptes IDEP et IDEC**
via Fillpilotage sur donnees-pilotage-comptes-audit2022.zip vendredi 16/09 11h (preprod et prod) => OK
**Réinitialisation des mots de passe des 2 IDEC**
via IHM Pilotage (preprod et prod :warning: les annuaires sont bizarrement branchés)
**Initialisation des questionnaires (les forms sont déjà présents - collecte en cours)**
via Persochaine sur coltrane-ECMOSS-2022-A00-audit.xml vendredi 16/09 12h (preprod et prod)
via Persochaine sur coltrane-ANTIPOL-2022-A00-audit.xml vendredi 16/09 12h (preprod et prod)
    => KO les forms et/ou params ne doivent pas être correctement chargés dans les bdd orbeons
        fillstromae ou attendre la recopie de la prod

:warning: si questionnaire déjà rempli il faut le réinitialiser en modifiant les dernières balises du questionnaire (ou en supprimant le fichier .xml) dans les bdd de preprod sous 
-db/orbeon/fr/ecmoss-2022-a00/m1/data/27/999999003.xml 
-db/orbeon/fr/antipol-2022-a00/m1/data/27/999999003.xml 
-db/orbeon/fr/ecmoss-2022-a00/m1/data/28/999999031.xml 
-db/orbeon/fr/antipol-2022-a00/m1/data/28/999999031.xml 
Remplacer à la main (intervention dashboard de préprod => CEI) le contenu de la balise <stromae> par : 
```
<stromae>
        <util>
            <sectionCourante>1</sectionCourante>
            <nomSectionCourante/>
            <expedie>non</expedie>
            <extrait>non</extrait>
            <dateHeure/>
        </util>
        <perso/>
</stromae>
```
    
ou passer le zip sous 
    \\pp_as_st_d2_00\st_data_pp\coltrane_pp\donnees-orbeon-reinit-4questionnaires-audit.zip
en fillstromae (ordonnancement chargement_donnees_automatique_pp)
pour cela le copier/coller sous \\pp_as_st_d2_00\st_data_pp\coltrane_pp\fichiers-batch\depot 
    
## CR hebdo de la part de sysdream
**- Lundi 26 : le portail**
Nous avons concentré nos tests sur l'application preprod.entreprises.stat-publique.fr.
- L'exposition **réseau** est correctement contrôlée, en effet l'application expose uniquement les services nécessaires à son bon fonctionnement.
- Deux vulnérabilités à faible risque ont été découvertes
    - La fonctionnalité de **réinitialisation de mot de passe** permet d'énumérer les comptes utilisateurs. Cependant, les comptes utilisateur disposent de 7 caractères composés de chiffres et de lettres, ce qui diminue fortement la probabilité d'exploitation. :large_orange_diamond:
    - La fonctionnalité de **changement d'adresse email** ne dispose pas de jeton anti-CSRF. Exposant les utilisateurs à un changement d'adresse email à leur insu. Un attaquant disposant du nom du compte utilisateur pourrait par une attaque par ingénierie sociale changer l'adresse email, réinitialiser le mot de passe et prendre le contrôle du compte. Toutefois, pour que cette attaque fonctionne les cibles doivent être authentifiées et une interaction avec l'utilisateur est nécessaire, réduisant ainsi la probabilité d'exploitation. :large_orange_diamond:
        - [ :red_circle: sauf via la mutualisation de comptes - :zipper_mouth_face: ]

**- Mardi 27 : pilotage**
Durant cette deuxième journée d'audit, nous avons effectué des tests sur l'application Contacts Pilotage.
- Nous avons constaté la présence de **vulnérabilités de type injection de code JavaScript** dans les champs de certains formulaires. Ces vulnérabilités permettent à un attaquant d'injecter du code JavaScript malveillant qui sera exécuté par le navigateur de la victime. :large_orange_diamond:
- Par ailleurs, nous avons détecté un **défaut de contrôle d'accès** sur certaines fonctionnalités de l'application. En effet, le compte "Assistant" est en mesure d'accéder à des fonctionnalités initialement réservées à des comptes privilégiés (Gestionnaire ou Admin). :red_circle:
    
**- Mercredi 28 : API pilotage**
- Nous avons éprouvé l'application **API consultation** sans déceler de vulnérabilité. :heavy_check_mark: 
- Nous avons relevé la présence de **nouvelles injections de code JavaScript** ainsi qu'une **injection de formule** dans les fichiers CSV générés par l'application Pilotage Contacts. Un attaquant disposant d'un accès à l'application est en mesure d'injecter une formule voire du code qui sera exécuté par la machine de la victime qui télécharge le fichier. :large_orange_diamond:
- De plus, sur l'application preprod.contacts-pilotage.insee.fr **tous les rôles utilisateurs peuvent changer le mot de passe de n'importe quel contact**. Également, la section **"Gérer des utilisateurs internes" est accessible**. **Un compte assistant peut alors modifier son rôle et ainsi élever ses privilèges**. :red_circle:
    - pas via l'onglet mais en tapant l'url à la main... Oups!:worried:  
- Nous avons identifié **des défauts de configuration** au niveau du serveur web. L'entête de sécurité HSTS permettant de garantir l’**usage du chiffrement TLS n'est pas activé**. De plus, au niveau de la configuration TLS, certaines suites de chiffrement utilisant un **mode d’opération déprécié** sont proposées par le serveur. :red_circle:
    
**- Lundi 03 : audit de code J1**
Nous avons débuté l'analyse du code de l'application coltrane. Nous avons identifié trois points à améliorer :
- Des **secrets sont conservés en clair** dans les fichiers du code. :red_circle: Ainsi, nous avons découvert un secret KeyCloak ainsi que des identifiants permettant de s'authentifier auprès du WebService. Si ces identifiants permettent de se connecter à des actifs de production, un attaquant ayant accès au code pourrait gagner un accès aux actifs en question.
- À de nombreux emplacements dans les fichiers jsp, nous avons constaté que des variables sont affichées sur la page Web sans que la sortie ne soit filtrée. Certaines de ces variables, telles que le nom ou le prénom de l'utilisateur, semblent modifiables. Si un attaquant **insère du code JavaScript malveillant dans ces champs**, il serait en mesure de compromettre le navigateur des victimes qui navigueraient sur son profil, par exemple. :large_orange_diamond:
- L'application analyse à de nombreuses fois des fichiers XML. Dans la fonction getHandler(), **les bouts de code permettant de désactiver les entités externes sont placés trop tard**, ainsi ces entités ne sont pas désactivées. :red_circle: Nous n'avons cependant pas eu le temps de déterminer si des entrées utilisateurs sont soumises à cette fonction.

**- Mardi 04 : audit de code J2**    
    
Nous avons continué l'analyse du code de l'application coltrane. Nous avons également commencé les tests sur l'api consultation et les webservices.
- Nous avons découvert de nouveaux points d'injections de code JavaScript potentiels. :large_orange_diamond: Toutes les variables affichées dans le navigateur des utilisateurs devront être revues afin de s'assurer qu'aucune entrée utilisateur non-filtrée ne soit affichée.
- Enfin, nous avons remarqué que les entrées utilisateur passées en paramètre aux webservices ne sont pas échappées. Certains de ces paramètres semblent concaténés à des chemins de fichier, résultant en vulnérabilités de type Path Traversal. :red_circle: Un attaquant pourrait ainsi charger des fichiers XML auquel il n'est pas censé avoir accès, sur le disque du serveur. Nous n'avons cependant pas été en mesure de vérifier si cette vulnérabilité est exploitable en pratique.    
    
**- Mercredi 05 : audit de code J3** 
    
Durant cette troisième journée de tests, nous avons finalisé l'analyse du code des différentes applications.
- Nous avons constaté la présence de **quelques dépendances vulnérables**, cependant la majorité de ces vulnérabilités ne semblent pas affecter l'application. :large_orange_diamond: Seule une vulnérabilité dans la **dépendance struts2-core**, nommée CVE-2021-31805,  pourrait impacter coltranebis-pilotage. Dans le pire des cas, un attaquant pourrait exécuter des commandes côté serveur via une entrée utilisateur non échappée qui serait ensuite affichée sur le navigateur d'un utilisateur. Nous n'avons pas été en mesure de déterminer si cette vulnérabilité est réellement exploitable sur l'application Coltrane, cependant nous vous recommandons de mettre à jour les dépendances Struts.
- Enfin, nous avons identifié un manque de gestion du contrôle d'accès dans l'application. :red_circle: En effet, de nombreuses fonctionnalités sensibles, telles que la modification de données, ne vérifient pas le rôle de l'utilisateur qui a effectué la requête. Un utilisateur standard pourrait ainsi effectuer des requêtes normalement réservées aux utilisateurs privilégiés, et ainsi accéder à des données auquel il n'est pas censé avoir accès.

Nous entamerons demain la rédaction du rapport, pour une durée de deux jours. Il suivra ensuite notre processus qualité afin de vous être livré d'ici la fin de la semaine prochaine.
    
--- 
Mot de passe pour le rapport dans le Tchap