FlawOpen

flawopen.com/AI Security/cve-2026-103956-aws-loom-authentication-bypass

● CVE-2026-103956 · CVSS v4 10.0[7] · Critique
Recherche · FlawOpen

CVE-2026-103956 : contournement de l’authentification AWS Loom

CVE-2026-103956 affectait Loom for AWS d’AWS Labs avant la version 1.6.1 : sans fournisseur d’identité configuré, tout client réseau pouvait obtenir les privilèges de superadministrateur. Passez à la version 1.7.0 ou ultérieure pour couvrir cette faille et les problèmes associés ; la version 1.6.1 corrige déjà ce contournement d’authentification.[1], [5]

Vecteur CVSSCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H[7]
💡 Explication en Langage Simple (ELI5)

Un bâtiment laisse son accueil sans personnel, mais le logiciel considère chaque visiteur comme l’administrateur principal. Le correctif refuse l’entrée si aucun fournisseur d’identité n’est configuré ; l’exception de développement local exige une option explicite et une connexion depuis la même machine.[1], [4]

Concepts Clés et Termes

Fournisseur d’identité (IdP)
Système configuré pour authentifier les utilisateurs de Loom. La condition vulnérable se produisait quand ni Cognito ni un IdP externe n’étaient configurés.[1]
Plan de contrôle
Couche d’administration et API qui gère les intégrations d’agents, les identifiants et les politiques de rôles.[1]
Échec sécurisé
En l’absence du service d’identité requis, refuser la requête au lieu d’accorder une identité privilégiée par défaut.[4]

Correspondances de référentiels

  • Référence CWE pour la faiblesse décrite dans ce guide : CWE-306 CWE-1188

Déroulement de l'Attaque Étape par Étape

Étape 1

Aucun fournisseur d’identité n’est configuré

La condition concernée avant la version 1.6.1 est précise : aucun groupe d’utilisateurs Cognito ni IdP externe n’est configuré.[1]

Étape 2

Le mécanisme de repli crée un utilisateur privilégié

Le chemin vulnérable get_current_user attribuait silencieusement t-admin et g-admins-super, y compris aux requêtes non authentifiées.[4]

Étape 3

L’API accorde une autorité sur le plan de contrôle

Un client joignable pouvait agir comme superadministrateur, enregistrer des serveurs d’outils, lire des identifiants d’intégration stockés ou réécrire les politiques IAM des rôles associés aux agents gérés. C’est l’impact décrit par le fournisseur, pas la preuve qu’une installation a été compromise.[1]

Étape 4

Le correctif refuse l’accès par défaut

La version 1.6.1 exige l’option explicite LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV=true et un client loopback pour l’exception de développement local ; sinon, elle renvoie HTTP 401. AWS recommande la version 1.7.0 ou ultérieure pour couvrir les trois failles du bulletin.[1], [4], [2], [3]

Matrice de couverture des versions de Loom

Plage de versionsContournement d’authentification CVE-2026-103956Autres problèmes du bulletin AWS d’octobreAction pour les opérateurs
<1.6.1Concerné si ni Cognito ni un IdP externe n’est configuré ; un client réseau pouvait obtenir les droits de superadministrateur.CVE-2026-103957 et CVE-2026-103958 sont distincts et ont également été corrigés en 1.7.0.Passez à la version 1.7.0 ou ultérieure. La 1.6.1 est le correctif minimal de ce contournement.
1.6.1–<1.7.0Corrigé. Sans IdP, les requêtes reçoivent une réponse 401, sauf si l’option de développement local est activée et que le client est loopback.AWS indique que les deux problèmes associés sont corrigés en 1.7.0.Passez à 1.7.0 ou ultérieure pour couvrir l’ensemble du bulletin.
1.7.0 ou ultérieureCorrigé.AWS indique que la version 1.7.0 résout les trois problèmes du bulletin.Maintenez Loom et ses forks sur une version prise en charge et vérifiez que les correctifs y sont intégrés.

Analyse de Cause Racine

Lorsque ni Cognito ni un fournisseur d’identité externe n’étaient configurés, le mécanisme de repli de la dépendance d’authentification attribuait silencieusement t-admin et g-admins-super au lieu de rejeter la requête. L’API traitait ensuite cette identité de repli comme authentifiée : tout client réseau pouvant joindre le backend pouvait ainsi obtenir les privilèges de super-administrateur du plan de contrôle. Le correctif refuse l’accès par défaut ; l’exception de développement local exige une activation explicite et un client loopback. L’enregistrement CVE associe le problème à CWE-306 (absence d’authentification pour une fonction critique) et CWE-1188 (initialisation avec une valeur par défaut non sûre).[1], [4], [7]

Code Source : Vulnérable vs Sécurisé

L’extrait vulnérable résume la description du mainteneur de get_current_user : sans Cognito ni IdP externe, le chemin attribuait silencieusement t-admin / g-admins-super. La version renforcée résume le comportement intégré en amont, sans être une transcription littérale : l’exception locale exige l’option explicite et un client loopback ; les autres requêtes échouent avec HTTP 401. Note de déploiement de FlawOpen : En production, ne faites confiance à request.client que si la gestion du proxy empêche des en-têtes transférés non fiables de se faire passer pour loopback. Passez à la version 1.6.1 ou ultérieure pour corriger ce CVE, et à 1.7.0 ou ultérieure pour couvrir tout le bulletin d’octobre 2026. Aucun appel d’exploitation ni procédure d’accès aux identifiants n’est présenté.[4], [1]

IMPLÉMENTATION VULNÉRABLE
# Fluxo de contrôle simplifié décrit pour le chemin get_current_user concerné
if not cognito_pool and not external_idp:
    return User(username="t-admin", groups=["g-admins-super"])
return await authenticate_with_configured_idp(token)
PATCH SÉCURISÉ ET ROBUSTE
# Refuser par défaut sauf si l’exception locale est explicite et limitée à loopback.
if not cognito_pool and not external_idp:
    opted_in = os.getenv("LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV") == "true"
    peer_is_local = request.client is not None and ipaddress.ip_address(
        request.client.host
    ).is_loopback
    if opted_in and peer_is_local:
        return local_development_user()
    raise HTTPException(status_code=401, detail="Identity provider is not configured")
return await authenticate_with_configured_idp(token)

Liste de Contrôle de Sécurité pour l'Ingénierie

Sources

← AI Security Directory →