Абстрактная техническая иллюстрация на тёмно-синем фоне: широкая полупрозрачная граница охватывает ряд небольших минималистичных серверных панелей; одна стрелка запроса без подписи входит в границу слева, рядом с ней нет токена учётных данных, и там, где она пересекает линию границы, стрелка становится янтарной, а затем разветвляется на множество тонких голубых линий, достигающих каждой панели внутри, включая небольшой куб с нарисованной замочной скважиной, обозначающий хранилище учётных данных. Ниже вторая стрелка того же размера останавливается у границы короткой сплошной белой полосой. Текст, люди или логотипы организаций отсутствуют. Логотип OrcaRouter наложен в правом нижнем углу.
AI Safety Incidents

Loom for AWS выдавал права супер-администратора любому неаутентифицированному запросу — CVE-2026-103956

Автор

Gideon Frost

Дата публикации

Новые модели · 20Все модели →
Бенчмарки: Artificial Analysis · обновляется ежедневно
Назад ко всем статьям

2 октября 2026 года AWS опубликовала Security Bulletin 2026-124-AWS, раскрывCVE-2026-103956 в Loom for AWS — открытой платформе AWS Labs для создания, развёртывания и управления ИИ-агентами на Amazon Bedrock AgentCore Runtime. В развёртывании, где не был настроен ни один провайдер идентификации, зависимость аутентификации бэкенда присваивала каждому входящему запросу фиксированную учётную запись супер-администратора — включая запросы, вообще не содержащие заголовка Authorization. Удалённый клиент, способный достучаться до бэкенда, мог регистрировать серверы инструментов, читать сохранённые учётные данные интеграций и переписывать политики роли IAM, привязанные к управляемым ролям агентов: полный административный контроль над плоскостью управления агентами при полном отсутствии аутентификации. NVD оценивает уязвимость в 10,0 балла — критический уровень — как по CVSS 3.1, так и по CVSS 4.0. За обнаружение уязвимости был отмечен Кеннет Кокс, действовавший в рамках скоординированного раскрытия. В бюллетене описано, что позволяла бы эта уязвимость; в нём не сказано, что кто-либо с её помощью сделал.

Что на самом деле делала зависимость аутентификации

Дефект находился в зависимости аутентификации бэкенда. Согласно рекомендации GitHub по безопасности GHSA-vgmj-998f-r8mp, путь выполнения кода в зависимости аутентификации бэкенда — get_current_user — функция в бэкенде Loom — возвращал жестко закодированные идентификационные данные администратора, учетную запись супер-администратора в группе g-admins-super, всякий раз, когда не существовало ни пула пользователей Amazon Cognito, ни активного внешнего поставщика удостоверений. Он не проверял, предъявил ли вызывающий токен. Он не переходил к отклонению. Он всё равно возвращал идентификационные данные администратора.

В бюллетене AWS последствие описывается так же: уязвимость позволяла любому сетевому клиенту получить полные административные права над плоскостью управления агентом. CVE-2026-103956 отнесена к CWE-306 (отсутствие аутентификации для критичной функции) и CWE-1188 (небезопасная инициализация ресурса по умолчанию). Вектор CVSS 3.1 от NVD: AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — доступность по сети, низкая сложность, отсутствие привилегий, отсутствие взаимодействия с пользователем, изменение области действия, полное воздействие на конфиденциальность, целостность и доступность.

Важный аспект, и та часть, которая объясняет, почему CVSS 10.0 оказался у небольшого проекта с открытым исходным кодом, заключается в том, что развертывание без IdP — не экзотика. Свежая установка Loom, в которой Cognito ещё не подключён, находится именно в таком состоянии, как и развертывание, в котором конфигурация поставщика удостоверений никогда не задавалась или перестала разрешаться. В рекомендации это рассматривается как обычное состояние, а не как ошибка конфигурации, которую оператор должен был сам допустить.

К чему может получить доступ неаутентифицированный клиент

• Регистрация агентов и серверы инструментов: клиент мог регистрировать или изменять серверы инструментов, которые агенту разрешено вызывать, что в архитектуре с вызовом инструментов составляет разницу между агентом, который читает тикет, и агентом, который запускает что-то.

• Хранимые учётные данные интеграций: платформа хранит учётные данные для внешних систем, к которым подключаются её агенты и серверы инструментов, и в бюллетене указано, что они были доступны для чтения.

• Политики ролей IAM для управляемых ролей агентов: в рекомендации описывается перезапись политик ролей IAM, прикреплённых к ролям, которыми Loom управляет для своих агентов; это тот шаг, который превращает контроль над уровнем оркестрации в контроль над тем, что агенты могут делать внутри аккаунта AWS.

• Всё остальное, чем управляет платформа: агенты, воспоминания, конфигурация авторизатора и безопасности, настройки — и вызов любого агента, запускаемого развёртыванием.

Эти четыре пункта — это собственный список рекомендации о том, к чему даёт доступ полный административный доступ, а не реконструкция. Не утверждается, что при эксплуатации использовался хотя бы один из них.

Установлено и не установлено

Установлено. Уязвимость существовала и задокументирована в согласованных первичных источниках: бюллетене безопасности AWS 2026-124-AWS от 2 октября 2026 года, рекомендации GitHub GHSA-vgmj-998f-r8mp, опубликованной в тот же день, и записи NVD о CVE-2026-103956. Затронутые версии (до 1.6.1), оценки CVSS, сопоставления CWE, версия исправления и указание авторства согласуются между собой. Архивная запись об этом инциденте имеет оценку достоверности A, не оспаривается и содержит real_harm со значением false.

Собственные поля записи относят раскрытие к 2 октября 2026 года с точностью до дня и описывают публичное заявление о доказательстве концепции как неподтверждённое; ни бюллетень, ни рекомендательное сообщение не содержат свидетельств атаки. Публичная запись NVD для CVE-2026-103956 указывает, что каталог известных эксплуатируемых уязвимостей CISA пуст для этой CVE, а архивная запись содержит real_harm со значением false. Итак: уязвимость, которую мог бы использовать неаутентифицированный сетевой клиент, при отсутствии в источниках свидетельств того, что кто-либо ею воспользовался.

HTML card titled 'What the record establishes — and what it does not', kicked 'Record 2026-10-02-loom-aws-agent-control-plane-cve-2026-103956' and subtitled with the source list: AWS Security Bulletin 2026-124-AWS, GHSA-vgmj-998f-r8mp and the NVD record, all published 2 October 2026, with the archive classification confidence A, not disputed, real harm recorded as false. Two columns run side by side. The left column, headed 'Established' in cyan, lists six items: CVSS 10.0 critical under both CVSS 3.1 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H) and CVSS 4.0; CWE-306 and CWE-1188 — missing authentication for a critical function and insecure default initialization of a resource; affected versions before 1.6.1, where the auth dependency returned a fixed super-admin identity when no Cognito pool or external identity provider was configured; reach by any network client that could reach the backend, including registering tool servers, reading stored integration credentials and rewriting IAM role policies on managed agent roles; fixed in Loom 1.6.1, released 4 August 2026, about two months before the bulletin named the CVE; and credit to Kenneth Cox through coordinated disclosure. The right column, headed 'Not established' in amber, lists six items: no confirmed exploitation in the wild, with the AWS bulletin and the GitHub advisory both silent on attacks; a public proof-of-concept claim that is unverified in the record and could not be corroborated from the cited sources; no CISA KEV entry for CVE-2026-103956 in the NVD record; no statement about whether the fixed release is deployed across the installed base of forks and derivative code; no estimate of exposed deployments, since nothing in the cited sources says how many Loom instances ran IdP-less and network-reachable; and the note that severity measures what the flaw allowed, not what happened, with no harm recorded for this entry. A footer reads 'Facts as published by AWS (Security Bulletin 2026-124-AWS), the Loom maintainers (GHSA-vgmj-998f-r8mp) and NVD. Card rendered by OrcaRouter.' The OrcaRouter logo is composited in the bottom-right corner.

Также стоит разделять. CVSS 10.0 измеряет то, что уязвимость могла бы позволить, а не то, что она сделала. Оценка 10.0 без эксплуатации и без зафиксированного ущерба — это почти инцидент, и архив относит её именно к этой категории.

Исправление, и двухмесячный разрыв до того, как оно получило название

AWS исправила проблему в Loom 1.6.1, выпущенном 4 августа 2026 года. Эта дата важна: релиз вышел примерно за два месяца до бюллетеня, и номер CVE уже существовал публично. В примечаниях к выпуску v1.6.1 изменение описано без указания CVE — теперь обход аутентификации требует явного согласия (opt-in) и loopback-клиента, а в остальных случаях безопасно отклоняется с кодом 401 — поэтому серьёзность уязвимости и её обозначение были видны только пользователям Loom, следившим за трекерами, а не тем, кто читал одни только примечания к выпуску. В том же выпуске добавили усиление защиты от SSRF для OAuth-запросов обнаружения.

HTML card titled 'Two months between the fix and the name', kicked 'CVE-2026-103956' and subtitled with the point: the code was patched in August, but nothing in the 1.6.1 release notes pointed a Loom operator at a CVSS 10.0 authentication bypass. Four dated rows run down a vertical timeline. 4 August 2026: Loom 1.6.1 ships the fix, and the release notes describe the change without naming a CVE, with the local-dev no-IdP bypass now requiring an explicit opt-in plus a loopback client and otherwise failing closed with a 401; the same release adds SSRF hardening for OAuth discovery. 4 August to 2 October 2026: roughly two months of unstated severity, with the patch public and the defect gone but the CVE number and the 10.0 score not yet existing, so a Loom user reading release notes alone sees a security hardening rather than a critical advisory with a remediation deadline. 2 October 2026, 12:00 PM PDT: AWS Security Bulletin 2026-124-AWS is published, naming CVE-2026-103956 for Loom before 1.6.1 alongside CVE-2026-103957 and CVE-2026-103958, both fixed in 1.7.0, and CVE-2026-104019 in Amazon SageMaker Unified Studio. 2 October 2026: the GitHub advisory and the NVD record follow, with GHSA-vgmj-998f-r8mp published the same day and NVD publishing CVE-2026-103956 with CVSS 3.1 and CVSS 4.0 base scores of 10.0, critical. A footer reads 'Dates as published by the Loom 1.6.1 release notes, AWS Security Bulletin 2026-124-AWS, GHSA-vgmj-998f-r8mp and the NVD record. The cited sources do not state the release date of Loom 1.7.0. Card rendered by OrcaRouter.' The OrcaRouter logo is composited in the bottom-right corner.

Для развертываний, уже открытых для внешнего доступа, рекомендация AWS перед обновлением состоит в том, чтобы полностью настроить пул пользователей Amazon Cognito или активный внешний поставщик удостоверений до того, как серверная часть станет доступна за пределами loopback, чтобы убедиться, что LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV не установлена вне локальной разработки, и чтобы тем временем ограничить сетевой доступ к серверной части или доступ через группы безопасности. В бюллетене прямо указано, что ограничение сети снижает вероятность непреднамеренного доступа, но не закрывает проблему без обновления, и что форки и производный код также требуют исправления.

Тот же бюллетень, другие изъяны

В сводке записи отмечается, что 2026-124-AWS касается не только этой CVE. В тот же день были раскрыты ещё две проблемы Loom, исправленные в Loom 1.7.0: CVE-2026-103957 — SSRF в обработке обнаружения OAuth2, позволяющая отправлять секреты клиента OAuth2 или токен доступа другого пользователя на контролируемую злоумышленником конечную точку (CVSS 3.1 6.2, CVSS 4.0 8.2), и CVE-2026-103958 — SSRF в обработке подключений сервера инструментов и удалённого агента, позволяющая достигать произвольных внутренних адресов, включая конечную точку выдачи учётных данных контейнера, и читать ответы (CVSS 3.1 7.6, CVSS 4.0 8.3). Для обеих требовался аутентифицированный пользователь с областью действия mcp:write или a2a:write. Бюллетень также охватывает CVE-2026-104019 — внедрение команд ОС в скрипт проверки запуска Studio Space, используемый Amazon SageMaker Unified Studio, оценённое в 9.0 как критическое по CVSS 3.1; AWS утверждает, что исправила его на стороне сервера с помощью глобального изменения санитизации, применённого при следующем перезапуске Space.

После обновления AWS просит операторов выполнить ротацию клиентских секретов OAuth2 для интеграций MCP и A2A, отозвать и перевыпустить токены, которые были активны в течение затронутого окна, и — если был получен доступ к учетным данным роли контейнера — выполнить ротацию учетных данных сессии роли IAM и проверить CloudTrail.

Почему эта запись находится в архиве

Abstract technical illustration on a dark navy field: three stacked horizontal layers. The top layer is a loose cluster of small abstract agent glyphs. Thin filaments run down from them into the middle layer, a clearly bounded cyan-outlined slab containing three small icons — two overlapping identity discs, a rectangular socket representing a tool registration, and a padlock on a folded document representing a policy. Every filament passes through those three icons. A single thick bundle leaves the middle slab and fans out across the bottom layer, a wide plain of large rectangular blocks. On the right edge of the middle slab, a short section of its outline is drawn as a dashed amber line, marking a boundary that is not intact. No text, people or organisation logos appear. The OrcaRouter logo is composited in the bottom-right corner.

CVE-2026-103956 зарегистрирована как уязвимость, а не как инцидент: обнаружена, не обязательно эксплуатировалась, INFRA и CRED, GLOBAL, высокая степень серьёзности, высокая уверенность. Её ценность в наборе записей — в том, что она служит пограничным случаем для всей категории плоскостей управления агентами. Задача Loom — хранить идентификаторы, регистрации серверов инструментов вместе с их учётными данными интеграций и политики IAM, определяющие, к чему агенты могут иметь доступ, — тот слой, который соединяет платформу агентов с облачной учётной записью, в которой она существует. Отсутствующая проверка в этом слое не деградирует агента; она передаёт всё хозяйство. Соседняя запись в архиве — раскрытие AgentCorruption от 8 октября 2026 года против Amazon Bedrock AgentCore — описывает, как до того же слоя добрались другим путём: цепочка SSRF от одного публично доступного агента.

Архив перечисляет каждый содержащийся в нём документированный инцидент с агентом, каждый со своими источниками, степенью серьёзности, оценкой достоверности и флагом оспаривания, наряду с этим. Эта статья посвящена одной записи из этого набора, и именно в этой записи находится полная классификация по каждому полю.

Это одна запись, исследованная и описанная другими и приведённая здесь со ссылкой на них. Собственный слой Loom — идентичности, регистрации на серверах инструментов и политики IAM, определяющие, к чему могут обращаться агенты, — это тот слой, до которого доходят и родственные записи в архиве инцидентов ИИ, и каждая из этих записей несёт собственные источники, уровень серьёзности, степень уверенности и флаг спорности.