{"id":"GHSA-vgmj-998f-r8mp","kind":"vulnerability","aliases":["GHSA-vgmj-998f-r8mp"],"related":[],"title":"CVE-2026-103956, CVE-2026-103957, and CVE-2026-103958 - Issues in Loom for AWS","description":"CVE-2026-103956, CVE-2026-103957, and CVE-2026-103958 - Issues in Loom for AWS\n\n### CVE-2026-103956, CVE-2026-103957, and CVE-2026-103958 - Issues in Loom for AWS\n\nBulletin ID: 2026-124-AWS Scope: AWS Content Type: Important (requires attention) Publication Date: 10/02/2026 12:00 PM PDT\n\nDescription:\n\nLoom is an AWS Labs open-source AI agent orchestration platform. We have identified and addressed three issues in Loom for AWS, described below. We recommend upgrading to the latest version (1.7.0) and ensuring any forked or derivative code is patched to incorporate the new fixes.\n\n- CVE-2026-103956 — Authentication bypass in Loom for AWS (CWE-306, CWE-1188) An issue in the authentication dependency in Loom for AWS versions <1.6.1 allowed any network client to obtain full administrative authority over the agent control plane — including registering tool servers, reading stored integration credentials, and rewriting IAM role policies attached to managed agent roles — via any request to the application API in a deployment where no identity provider was configured. This issue was addressed in version 1.6.1, released 2026-08-04.\n- CVE-2026-103957 — OAuth2 token and credential disclosure via outbound request handling in Loom for AWS (CWE-918, CWE-201) An issue in the OAuth2 discovery handling in Loom for AWS versions <1.7.0 allowed an authenticated user with the mcp:write or a2a:write scope to configure a well-known discovery URL whose document directed the backend to send OAuth2 client secrets or another user's access token to a third-party-controlled endpoint. The 1.6.1 release blocked internal-address reach for this code path but did not fully address the token disclosure. This issue was fully addressed in version 1.7.0.\n- CVE-2026-103958 — Outbound request handling issue in tool server and remote agent connections in Loom for AWS (CWE-918) An issue in the tool server (MCP) and remote agent (A2A) connection handling in Loom for AWS versions <1.7.0 allowed an authenticated user with the mcp:write or a2a:write scope to direct connection requests to arbitrary internal network locations — including the container's credential-vending endpoint — and read the responses. This issue was addressed in version 1.7.0.\n\nResolution:\n\nThese issues have been addressed in Loom version 1.7.0. CVE-2026-103956 was independently addressed in version 1.6.1. We recommend upgrading to the latest version and ensuring any forked or derivative code is patched to incorporate the new fixes.\n\nUntil upgrading:\n\n- For CVE-2026-103956: Ensure a Cognito user pool or an active external identity provider is fully configured before the backend is reachable beyond loopback, and confirm LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV is unset in any deployed (non-local-dev) environment.\n- For CVE-2026-103957 and CVE-2026-103958: Restrict the mcp:write, and a2a:write scopes (i.e., g-admins-super, g-admins-mcp, g-admins-a2a, g-admins-demo group membership) to trusted administrators only. This reduces the likelihood of these issues being triggered but does not fully close the issue without the code fix.\n\nAfter upgrading:\n\n1. Rotate any OAuth2 client secrets configured for MCP/A2A integrations\n2. Revoke and re-issue any access tokens that were active during the affected window\n3. If container role credentials were accessed, rotate the IAM role's session credentials and review CloudTrail for unintended usage.\n\nReferences:\n\n- CVE-2026-103956\n- CVE-2026-103957\n- CVE-2026-103958\n- GHSA-vgmj-998f-r8mp\n- GHSA-jcxf-gpf4-58hm\n- GHSA-w6g6-h8pv-6mc7\n\nAcknowledgement:\n\nWe would like to thank Kenneth Cox for collaborating on this issue through the coordinated disclosure process.\n\n Please email aws-security@amazon.com with any security questions or concerns.","summary":"Loom for AWS, an open-source AI agent orchestration platform, had an authentication bypass that gave any network client full admin over its agent control plane when no identity provider was configured. Authenticated users with MCP or A2A write scopes could also make the backend send OAuth2 secrets or access tokens to third-party endpoints and reach internal network locations, including the container credential endpoint.","severity":"high","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["a2a","ai-agents","ai-tooling","aws","lab-disclosure","loom","mcp","self-hosted"],"not_affected_if":["loopback-only-local-dev","version-1.7.0-or-later"],"how_to_check":"- Check the Loom version in use against `1.6.1` and `1.7.0`; versions below `1.6.1` are affected by CVE-2026-103956 and below `1.7.0` by CVE-2026-103957 and CVE-2026-103958.\n- Confirm whether a Cognito user pool or external identity provider is configured, and that `LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV` is unset in deployed environments.\n- Check which groups hold `mcp:write` or `a2a:write` scopes (g-admins-super, g-admins-mcp, g-admins-a2a, g-admins-demo).","fix":"- Upgrade Loom to `1.7.0`, and patch any forked or derivative code.\n- Until upgraded, restrict `mcp:write` and `a2a:write` scopes to trusted administrators, and configure an identity provider before exposing the backend beyond loopback.\n- After upgrading, rotate OAuth2 client secrets for MCP/A2A integrations and revoke access tokens active during the affected window.\n- If container role credentials may have been read, rotate the IAM role session credentials and review CloudTrail.","status":"open","published_at":null,"first_seen_at":"2026-10-24T19:28:15+00:00","triaged_at":"2026-10-25T04:51:27+00:00","updated_at":"2026-10-25T04:51:27+00:00","category":"ai-tooling","confidence":0.8,"triage":{"at":"2026-10-25T04:51:27Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Loom to `1.7.0`, and patch any forked or derivative code.\n- Until upgraded, restrict `mcp:write` and `a2a:write` scopes to trusted administrators, and configure an identity provider before exposing the backend beyond loopback.\n- After upgrading, rotate OAuth2 client secrets for MCP/A2A integrations and revoke access tokens active during the affected window.\n- If container role credentials may have been read, rotate the IAM role session credentials and review CloudTrail.","reach":"network","title":"Loom for AWS: auth bypass and token theft in AI agent control plane","impact":"high","summary":"Loom for AWS, an open-source AI agent orchestration platform, had an authentication bypass that gave any network client full admin over its agent control plane when no identity provider was configured. Authenticated users with MCP or A2A write scopes could also make the backend send OAuth2 secrets or access tokens to third-party endpoints and reach internal network locations, including the container credential endpoint.","category":"ai-tooling","nicknames":[],"who_cares":["aws","loom","ai-agents","mcp","a2a","self-hosted"],"confidence":0.8,"needs_auth":"unknown","worst_case":"Network attacker gains full agent control plane admin and reads stored credentials.","analyst_note":"","how_to_check":"- Check the Loom version in use against `1.6.1` and `1.7.0`; versions below `1.6.1` are affected by CVE-2026-103956 and below `1.7.0` by CVE-2026-103957 and CVE-2026-103958.\n- Confirm whether a Cognito user pool or external identity provider is configured, and that `LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV` is unset in deployed environments.\n- Check which groups hold `mcp:write` or `a2a:write` scopes (g-admins-super, g-admins-mcp, g-admins-a2a, g-admins-demo).","needs_analyst":false,"not_affected_if":["version-1.7.0-or-later","loopback-only-local-dev"],"who_is_affected":"Teams running Loom for AWS as a deployed backend, especially any deployment where no identity provider was configured, which exposed the admin bypass. Deployments with an identity provider are exposed only to the authenticated-user issues, and only users holding MCP or A2A write scopes can trigger them. Local-only development use on loopback is not exposed to the network bypass.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000916,"input_tokens":4715,"output_tokens":889,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-04':289C '-08':288C '-103956':3A,111C,126C,208C,485C,518C,667C '-103957':6A,114C,129C,292C,560C,670C '-103958':10A,118C,133C,396C,564C,673C '-1188':218C '-124':142C '-201':309C '-2026':2A,5A,9A,110C,113C,117C,125C,128C,132C,207C,291C,395C,484C,517C,559C,563C,666C,669C,672C '-306':216C '-918':307C,413C '00':155C '1':618C '1.6.1':230C,285C,367C,491C '1.7.0':191C,322C,393C,432C,472C,482C '10/02/2026':153C '12':154C '2':628C '2026':141C,287C '3':644C '58hm':683C '6mc7':688C '998f':19A,24A,677C 'a2a':26B,80B,332C,424C,442C,570C,585C 'access':92B,357C,635C,650C 'acknowledg':689C 'activ':526C,639C 'address':175C,282C,372C,382C,390C,469C,478C,488C 'admin':63B,576C,580C,584C,588C 'administr':238C,594C 'affect':642C 'agent':29B,50B,66B,168C,242C,261C,406C,423C 'ai':28B,31B,49B,167C 'ai-ag':27B 'ai-tool':30B 'allow':231C,323C,433C,543C 'also':84B 'anoth':354C 'api':269C 'applic':268C 'arbitrari':450C 'attach':258C 'attent':150C 'authent':55B,75B,209C,223C,325C,435C 'author':239C 'aw':15A,33B,44B,123C,138C,143C,145C,162C,181C,214C,228C,305C,320C,411C,430C 'aws-security@amazon.com':709C 'backend':87B,347C,535C 'beyond':538C 'block':369C 'bulletin':139C 'bypass':56B,210C 'client':61B,234C,351C,622C 'close':609C 'cloudtrail':660C 'code':198C,376C,505C,614C 'cognito':521C 'collabor':698C 'concern':715C 'configur':74B,278C,336C,532C,624C 'confirm':541C 'connect':407C,425C,447C 'contain':106B,456C,646C 'content':146C 'control':67B,243C,364C 'coordin':704C 'could':83B 'cox':696C 'credenti':107B,252C,296C,459C,648C,657C 'credential-vend':458C 'cve':1A,4A,8A,109C,112C,116C,124C,127C,131C,206C,290C,394C,483C,516C,558C,562C,665C,668C,671C 'cwe':215C,217C,306C,308C,412C 'date':152C 'demo':589C 'depend':224C 'deploy':272C,551C 'deriv':197C,504C 'describ':182C 'descript':158C 'dev':546C,555C 'direct':345C,446C 'disclosur':36B,297C,385C,705C 'discoveri':315C,341C 'document':344C 'email':708C 'endpoint':98B,108B,365C,461C 'ensur':193C,500C,519C 'environ':556C 'extern':527C 'fix':205C,512C,615C 'fork':195C,502C 'full':62B,237C 'fulli':381C,389C,531C,608C 'g':575C,579C,583C,587C 'g-admins-a2a':582C 'g-admins-demo':586C 'g-admins-mcp':578C 'g-admins-sup':574C 'gave':58B 'ghsa':17A,22A,675C,680C,685C 'ghsa-jcxf-gpf4-58hm':679C 'ghsa-vgmj-998f-r8mp':16A,21A,674C 'ghsa-w6g6-h8pv-6mc7':684C 'gpf4':682C 'group':590C 'h8pv':687C 'handl':301C,316C,399C,426C 'host':41B 'i.e':573C 'iam':255C,653C 'id':140C 'ident':71B,275C,528C 'identifi':173C 'import':148C 'includ':104B,245C,454C 'incorpor':202C,509C 'independ':487C 'integr':251C,627C 'intern':101B,371C,451C 'internal-address':370C 'issu':11A,119C,134C,177C,220C,280C,311C,387C,400C,415C,467C,475C,602C,611C,633C,701C 'jcxf':681C 'kenneth':695C 'known':340C 'lab':35B,163C 'lab-disclosur':34B 'latest':189C,497C 'like':692C 'likelihood':599C 'local':545C,554C 'locat':103B,453C 'loom':13A,37B,42B,121C,136C,159C,179C,212C,226C,303C,318C,409C,428C,480C,542C 'loopback':539C 'make':85B 'manag':260C 'mcp':38B,78B,329C,420C,439C,567C,581C 'mcp/a2a':626C 'membership':591C 'network':60B,102B,233C,452C 'new':204C,511C 'non':553C 'non-local-dev':552C 'oauth2':89B,293C,314C,350C,621C 'obtain':236C 'open':47B,165C 'open-sourc':46B,164C 'orchestr':51B,169C 'outbound':299C,397C 'parti':97B,363C 'patch':200C,507C 'path':377C 'pdt':157C 'plane':68B,244C 'platform':52B,170C 'pleas':707C 'pm':156C 'polici':257C 'pool':523C 'process':706C 'provid':72B,276C,529C 'public':151C 'question':713C 'r8mp':20A,25A,678C 're':632C 're-issu':631C 'reach':100B,373C 'reachabl':537C 'read':249C,463C 'recommend':185C,493C 'reduc':597C 'refer':664C 'regist':246C 'releas':286C,368C 'remot':405C,422C 'request':265C,300C,398C,448C 'requir':149C 'resolut':473C 'respons':465C 'restrict':565C 'review':659C 'revok':629C 'rewrit':254C 'role':256C,262C,647C,654C 'rotat':619C,651C 'scope':82B,144C,334C,444C,572C 'secret':90B,352C,623C 'secur':712C 'self':40B 'self-host':39B 'send':88B,349C 'server':248C,403C,419C 'session':656C 'sourc':48B,166C 'store':250C 'super':577C 'thank':694C 'third':96B,362C 'third-parti':95B 'third-party-control':361C 'three':176C 'token':93B,294C,358C,384C,636C 'tool':32B,247C,402C,418C 'trigger':604C 'trust':593C 'type':147C 'unauthent':544C 'unintend':662C 'unset':548C 'upgrad':186C,494C,514C,617C 'url':342C 'usag':663C 'user':76B,326C,355C,436C,522C 'vend':460C 'version':190C,229C,284C,321C,392C,431C,471C,481C,490C,498C 'vgmj':18A,23A,676C 'via':263C,298C 'w6g6':686C 'well':339C 'well-known':338C 'whose':343C 'window':643C 'without':612C 'would':691C 'write':81B,330C,333C,440C,443C,568C,571C","nicknames":[],"mitigations":[],"who_affected":"Teams running Loom for AWS as a deployed backend, especially any deployment where no identity provider was configured, which exposed the admin bypass. Deployments with an identity provider are exposed only to the authenticated-user issues, and only users holding MCP or A2A write scopes can trigger them. Local-only development use on loopback is not exposed to the network bypass.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":null,"kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"lab","external_id":"https://aws.amazon.com/security/security-bulletins/rss/2026-124-aws/#GHSA-vgmj-998f-r8mp","url":"https://aws.amazon.com/security/security-bulletins/rss/2026-124-aws/","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T19:28:15+00:00","fetched_at":"2026-10-25T08:14:50+00:00","note":"AWS: CVE-2026-103956, CVE-2026-103957, and CVE-2026-103958 - Issues in Loom for AWS"}],"documents":[{"id":2947,"url":"https://aws.amazon.com/security/security-bulletins/rss/2026-124-aws/","title":"AWS: CVE-2026-103956, CVE-2026-103957, and CVE-2026-103958 - Issues in Loom for AWS","kind":"advisory","source":"lab","text":"CVE-2026-103956, CVE-2026-103957, and CVE-2026-103958 - Issues in Loom for AWS\n\n### CVE-2026-103956, CVE-2026-103957, and CVE-2026-103958 - Issues in Loom for AWS\n\nBulletin ID: 2026-124-AWS Scope: AWS Content Type: Important (requires attention) Publication Date: 10/02/2026 12:00 PM PDT\n\nDescription:\n\nLoom is an AWS Labs open-source AI agent orchestration platform. We have identified and addressed three issues in Loom for AWS, described below. We recommend upgrading to the latest version (1.7.0) and ensuring any forked or derivative code is patched to incorporate the new fixes.\n\n- CVE-2026-103956 — Authentication bypass in Loom for AWS (CWE-306, CWE-1188) An issue in the authentication dependency in Loom for AWS versions <1.6.1 allowed any network client to obtain full administrative authority over the agent control plane — including registering tool servers, reading stored integration credentials, and rewriting IAM role policies attached to managed agent roles — via any request to the application API in a deployment where no identity provider was configured. This issue was addressed in version 1.6.1, released 2026-08-04.\n- CVE-2026-103957 — OAuth2 token and credential disclosure via outbound request handling in Loom for AWS (CWE-918, CWE-201) An issue in the OAuth2 discovery handling in Loom for AWS versions <1.7.0 allowed an authenticated user with the mcp:write or a2a:write scope to configure a well-known discovery URL whose document directed the backend to send OAuth2 client secrets or another user's access token to a third-party-controlled endpoint. The 1.6.1 release blocked internal-address reach for this code path but did not fully address the token disclosure. This issue was fully addressed in version 1.7.0.\n- CVE-2026-103958 — Outbound request handling issue in tool server and remote agent connections in Loom for AWS (CWE-918) An issue in the tool server (MCP) and remote agent (A2A) connection handling in Loom for AWS versions <1.7.0 allowed an authenticated user with the mcp:write or a2a:write scope to direct connection requests to arbitrary internal network locations — including the container's credential-vending endpoint — and read the responses. This issue was addressed in version 1.7.0.\n\nResolution:\n\nThese issues have been addressed in Loom version 1.7.0. CVE-2026-103956 was independently addressed in version 1.6.1. We recommend upgrading to the latest version and ensuring any forked or derivative code is patched to incorporate the new fixes.\n\nUntil upgrading:\n\n- For CVE-2026-103956: Ensure a Cognito user pool or an active external identity provider is fully configured before the backend is reachable beyond loopback, and confirm LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV is unset in any deployed (non-local-dev) environment.\n- For CVE-2026-103957 and CVE-2026-103958: Restrict the mcp:write, and a2a:write scopes (i.e., g-admins-super, g-admins-mcp, g-admins-a2a, g-admins-demo group membership) to trusted administrators only. This reduces the likelihood of these issues being triggered but does not fully close the issue without the code fix.\n\nAfter upgrading:\n\n1. Rotate any OAuth2 client secrets configured for MCP/A2A integrations\n2. Revoke and re-issue any access tokens that were active during the affected window\n3. If container role credentials were accessed, rotate the IAM role's session credentials and review CloudTrail for unintended usage.\n\nReferences:\n\n- CVE-2026-103956\n- CVE-2026-103957\n- CVE-2026-103958\n- GHSA-vgmj-998f-r8mp\n- GHSA-jcxf-gpf4-58hm\n- GHSA-w6g6-h8pv-6mc7\n\nAcknowledgement:\n\nWe would like to thank Kenneth Cox for collaborating on this issue through the coordinated disclosure process.\n\n Please email aws-security@amazon.com with any security questions or concerns.","published_at":null,"relation":"advisory","confidence":null,"note":null}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}