
POC for CVE-2026-49009, an authenticated path traversal to RCE issue in Mender Server.
▄█████ ██ ██ ██████ ████▄ ▄██▄ ████▄ ▄██▀▀▀ ██ ██ ▄█▀▀█▄ ▄██▄ ▄██▄ ▄█▀▀█▄
██ ██▄▄██ ██▄▄ ▄▄▄ ▄██▀ ██ ██ ▄██▀ ██▄▄▄ ▄▄▄ ▀█████ ▀▀▀██ ██ ██ ██ ██ ▀▀▀██
▀█████ ▀██▀ ██▄▄▄▄ ███▄▄ ▀██▀ ███▄▄ ▀█▄▄█▀ ██ ▄▄██▀ ▀██▀ ▀██▀ ▄▄██▀
░█▄█░█▀▀░█▀█░█▀▄░█▀▀░█▀▄░░░█▀▀░█▀▀░█▀▄░█░█░█▀▀░█▀▄░░░█▀▄░█▀▀░█▀▀░
░█░█░█▀▀░█░█░█░█░█▀▀░█▀▄░░░▀▀█░█▀▀░█▀▄░▀▄▀░█▀▀░█▀▄░░░█▀▄░█░░░█▀▀░
░▀░▀░▀▀▀░▀░▀░▀▀░░▀▀▀░▀░▀░░░▀▀▀░▀▀▀░▀░▀░░▀░░▀▀▀░▀░▀░░░▀░▀░▀▀▀░▀▀▀░
J'ai découvert et signalé de manière responsable une vulnérabilité critique dans le workflow de génération d'artefacts à fichier unique du serveur Mender. Le problème a commencé comme un bogue de validation d'entrée et de contournement de chemin dans le champ args.filename contrôlé par l'utilisateur, mais j'ai montré que le bogue ne s'arrêtait pas à l'écriture arbitraire de fichiers. En ciblant un exécutable appartenant au worker à l'intérieur du conteneur de génération d'artefacts, j'ai transformé le problème en une exécution de code à distance fiable.
En pratique, un attaquant authentifié ayant accès à la génération d'artefacts pouvait écraser /usr/bin/mender-artifact à l'intérieur du create-artifact-worker. Le workflow invoquait alors ce même binaire lors de la génération normale d'artefacts, ce qui entraînait l'exécution de la charge utile contrôlée par l'attaquant.
Cela a transformé un bogue de contournement / écrasement arbitraire en un problème d'exécution de code backend dans le workflow d'artefacts.
Le workflow vulnérable acceptait une entrée contrôlée par l'attaquant dans le flux de génération d'artefacts à fichier unique et ne contraignait pas suffisamment l'endroit où le contenu téléchargé serait écrit.
J'ai découvert que je pouvais contrôler args.filename et abuser du contournement de chemin pour écrire en dehors de la destination prévue. Au lieu d'écrire un fichier d'entrée d'artefact normal, j'ai pointé la cible d'écriture vers /usr/bin/mender-artifact à l'intérieur du conteneur du worker. Étant donné que l'utilisateur d'exécution possédait ce binaire dans la configuration vulnérable, l'écriture a réussi.
Le workflow appelait ensuite mender-artifact dans le cadre du processus de construction de l'artefact. Comme j'avais déjà remplacé cet exécutable par ma propre charge utile, le worker a exécuté le code contrôlé par l'attaquant.
Un attaquant avait besoin :
À un niveau élevé, la chaîne d'exploitation fonctionnait ainsi :
/usr/bin/mender-artifact.mender-artifact lors de la génération de l'artefact.Cela importait car la cible d'écriture vulnérable n'était pas un fichier quelconque. C'était un binaire que le workflow faisait immédiatement confiance et exécutait.
Un attaquant réussi pouvait exécuter des commandes arbitraires à l'intérieur du worker de génération d'artefacts partagé.
À partir de là, l'impact s'étendait au-delà d'une seule requête :
En bref, ce n'était pas seulement un bogue d'écriture de fichier. C'était un bogue d'exécution de code dans un composant backend sensible qui se trouvait dans le chemin de livraison logicielle.
HackerOne a finalement évalué le rapport comme Critique et a attribué une prime de 3 000 $, ce qui correspondait à l'impact pratique démontré lors de la validation.
La cause racine était une défaillance de la frontière de confiance dans le chemin de génération d'artefacts à fichier unique.
Le workflow faisait trop confiance à l'entrée de chemin contrôlée par l'attaquant dans la chaîne de traitement backend. Il permettait à un nom de fichier influencé par l'utilisateur de s'échapper de son emplacement prévu et d'atteindre des cibles sensibles du système de fichiers. L'environnement du worker amplifiait ensuite cette erreur car il exposait des chemins exécutables qui étaient inscriptibles par l'utilisateur d'exécution et exécutés ultérieurement par le workflow lui-même.
Cette combinaison créait une chaîne d'exploitation propre :
Entrée de chemin contrôlée par l'utilisateur → Écriture arbitraire de fichier → Écriture d'un exécutable de confiance → RCE backend
CVE-2026-49009 montre comment un problème apparemment limité de nettoyage d'entrée peut devenir une chaîne RCE complète lorsqu'un workflow de confiance écrit des données contrôlées par l'attaquant dans des chemins exécutables.
Dans les versions vulnérables, un attaquant authentifié pouvait transformer la fonctionnalité de génération d'artefacts à fichier unique en une chaîne de contournement de chemin, d'écrasement arbitraire et d'exécution de code à distance. Les versions corrigées ont bloqué ce chemin et rétabli le workflow à son comportement prévu.