Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cve-2026-103956-loom-unauth — CVE-2026-103956 - Loom pour AWS - Critique - Contournement d'authentification - super-admin non authentifié lorsqu'aucun IdP n'est configuré | Kitploit
Outils/GitHubGitHub/abraxas/cve-2026-103956-loom-unauth
Analyse des VulnérabilitésExploitationExploitation d'Applications WebVirtualisation de SécuritéTests d'IntrusionSécurité CloudAuthentificationLabs et Pratique
GitHubabraxas/cve-2026-103956-loom-unauth

cve-2026-103956-loom-unauth

CVE-2026-103956 - Loom pour AWS - Critique - Contournement d'authentification - super-admin non authentifié lorsqu'aucun IdP n'est configuré

Voir le dépôt
8522il y a 20 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - cve-2026-103956-loom-unauth

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  cve-2026-103956-loom-unauth

cve-2026-103956-loom-unauth

Loom for AWS < 1.6.1 - AWS Labs

Lorsque Cognito n'est pas configuré et qu'aucun IdP externe n'est actif, get_current_user attribue à chaque requête t-admin / g-admins-super. Cela inclut les requêtes sans en-tête Authorization. Un déploiement récent avant la configuration de l'IdP constitue un panneau d'administration ouvert.

IDCVE-2026-103956
CWECWE-306 / CWE-1188
CVSSCritique : 10.0 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
ProduitLoom for AWS
Affecté< 1.6.1. Version du labo v1.6.0 (8c658d61). Corrigé dans v1.6.1 (ccad5665).
Authentificationnon authentifié
ClasseContournement d'authentification / super-admin non authentifié (ATO)
PortéeDistant (non authentifié)
LicenceGNU Affero GPL v3.0
Labo127.0.0.1 uniquement

Ce qu'un attaquant peut faire

L'attaquant contrôle le plan de contrôle de l'agent sans aucun identifiant.

  • Entrer en tant que super-admin. GET /api/auth/me sans en-tête renvoie username=local-dev, sub=local, groupes t-admin et g-admins-super. Toutes les portées de GROUP_SCOPES accompagnent cette identité.
  • Enregistrer des serveurs d'outils. POST /api/mcp/servers non authentifié renvoie 201. MCP, A2A, agents, mémoires, sécurité, paramètres, identifiants et audit d'administration reposent sur la même dépendance.
  • Lire les secrets d'intégration stockés. GET /api/mcp/servers/{id}/export est admin:write. Sur cette version, il renvoie oauth2_client_secret depuis SQLite. Le texte du CVE mentionne également la réécriture de politique de rôle IAM sur les rôles d'agent gérés ; ce chemin nécessite AWS et sort du cadre de ce labo en boucle locale.
  • L'atteindre sur un port publié. Déploiement récent, Cognito oublié, ou un IdP qui n'a pas pu se charger. Le backend est FastAPI sur 8000. La portée réseau suffit.

v1.6.1 requires LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV plus a loopback client. Same request is 401 (No identity provider configured).

Comment je l'ai trouvé

AWS a publié CVE-2026-103956 avec GHSA-vgmj-998f-r8mp et le bulletin 2026-124-AWS. J'ai épinglé awslabs/loom v1.6.0 (8c658d61) à côté de v1.6.1 (ccad5665) et j'ai exécuté le backend sur SQLite avec LOOM_COGNITO_USER_POOL_ID non défini.

backend/app/dependencies/auth.py get_current_user vérifie les variables d'environnement Cognito et une ligne IdP active. Les deux étant vides : il renvoie UserInfo(sub="local", username="local-dev", groups=["t-admin", "g-admins-super"], scopes=ALL_SCOPES). Le jeton n'est jamais lu.

J'ai déployé FastAPI standard sur la boucle locale 127.0.0.1:18180 (v1.6.0) et 18181 (v1.6.1). Pas de frontend. Pas d'AWS. GET /api/auth/me non authentifié sur 1.6.0 a renvoyé 200 avec ces groupes. POST /api/mcp/servers non authentifié avec oauth2_client_secret=CVE-2026-103956-WITNESS a renvoyé 201. GET /api/mcp/servers/1/export a restitué le secret. Sur 1.6.1, le même /api/auth/me a renvoyé 401.

SUCCESS CVE-2026-103956 me-http=200 me-user=local-dev me-sub=local me-groups=t-admin,g-admins-super mcp-create=201 export-has-secret=yes list-has-witness=yes patched-me-http=401 CVE-2026-103956-WITNESS

Mauvais chemins déjà enregistrés : public.ecr.aws/docker/library/python:3.13-slim a été ignoré au profit de Docker Hub python:3.13-slim ; le premier /health sur la v1.6.0 a renvoyé curl 52 alors qu'uvicorn était en écoute, puis 200 ; le schéma de création MCP a correspondu dès le premier POST, sans nouvelle tentative sur 422. Un reverse shell. Du théâtre. L'oracle est /api/auth/me plus le secret exporté.

Lab

cd lab
./run.sh

Ciblez uniquement http://127.0.0.1:18180 (v1.6.0) et http://127.0.0.1:18181 (v1.6.1). run.sh effectue un clone superficiel de ces tags, compile les deux backends, puis démonte la pile. SQLite. Aucune variable d'environnement Cognito. Pas de LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV sur le service corrigé.

Le correctif

Passez à la version 1.6.1 ou ultérieure. AWS recommande la 1.7.0 pour les problèmes SSRF/token associés. Le contournement de la 1.6.1 est optionnel et limité à la boucle locale. D'ici là, terminez la configuration de Cognito ou d'un IdP externe avant que le backend ne soit accessible au-delà de la boucle locale, et laissez LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV non défini sur tout déploiement.

Références

  • CVE-2026-103956
  • GHSA-vgmj-998f-r8mp
  • Bulletin AWS 2026-124-AWS
  • awslabs/loom tags v1.6.0 / v1.6.1
  • backend/app/dependencies/auth.py (get_current_user)
  • CWE-306

Licence

GNU Affero GPL v3.0

Télécharger l’outil