flawopen.com/AI Security/cve-2026-103956-aws-loom-authentication-bypass
CVE-2026-103956: AWS Loom 인증 우회
CVE-2026-103956은 AWS Labs의 Loom for AWS 1.6.1 이전 버전에 영향을 줬습니다. ID 공급자가 설정되지 않으면 모든 네트워크 클라이언트가 최고 관리자 권한을 얻을 수 있었습니다. 이 취약점과 관련 수정 사항을 모두 적용하려면 1.7.0 이상으로 업그레이드하세요. 인증 우회 자체는 1.6.1에서 이미 수정됐습니다.[1], [5]
건물에 안내 데스크가 없는데도 소프트웨어가 모든 방문자를 최고 관리자로 대하는 상황입니다. 수정 후에는 ID 공급자가 설정되지 않으면 접근을 거부합니다. 로컬 개발 예외를 사용하려면 명시적 설정과 같은 컴퓨터에서의 연결이 필요합니다.[1], [4]
핵심 개념 및 용어
ID 공급자(IdP)- Loom 사용자를 인증하도록 설정된 시스템입니다. Cognito와 외부 IdP가 모두 설정되지 않았을 때 취약한 조건이 발생했습니다.[1]
컨트롤 플레인- 에이전트 통합, 자격 증명, 역할 정책을 관리하는 API 및 관리 계층입니다.[1]
안전한 실패- 필수 ID 서비스가 없으면 기본 특권 ID를 부여하지 않고 요청을 거부하는 방식입니다.[4]
프레임워크 매핑
단계별 공격 실행 흐름
ID 공급자가 설정되지 않음
1.6.1 이전의 영향 조건은 Cognito 사용자 풀과 외부 IdP가 모두 없는 경우입니다.[1]
대체 경로가 특권 사용자를 생성
취약한 get_current_user 경로는 인증되지 않은 요청까지 t-admin 및 g-admins-super로 조용히 지정했습니다.[4]
API가 컨트롤 플레인 권한을 부여
네트워크에서 접근 가능한 클라이언트는 최고 관리자로 도구 서버를 등록하고, 저장된 통합 자격 증명을 읽거나, 관리형 에이전트 역할의 IAM 정책을 수정할 수 있었습니다. 이는 공급업체가 설명한 영향이며 실제 배포 환경의 침해를 입증하지는 않습니다.[1]
Loom 버전별 수정 범위 표
| 버전 범위 | CVE-2026-103956 인증 우회 | AWS 10월 보안 공지의 다른 문제 | 운영자 조치 |
|---|---|---|---|
| <1.6.1 | Cognito와 외부 IdP가 모두 구성되지 않은 경우 영향이 있습니다. 네트워크 클라이언트가 슈퍼 관리자 권한을 얻을 수 있었습니다. | CVE-2026-103957 및 CVE-2026-103958은 별개의 문제이며 1.7.0에서 함께 수정되었습니다. | 1.7.0 이상으로 업그레이드하세요. 1.6.1은 이 우회 문제만 해결하는 최소 버전입니다. |
| 1.6.1–<1.7.0 | 수정됨. IdP가 없으면 요청에 401을 반환합니다. 로컬 개발 옵트인과 loopback 클라이언트가 모두 있을 때만 예외입니다. | AWS는 관련된 두 문제도 1.7.0에서 수정했다고 명시합니다. | 공지의 모든 문제를 해결하려면 1.7.0 이상으로 업그레이드하세요. |
| 1.7.0 이상 | 수정됨. | AWS는 1.7.0이 공지의 세 문제를 모두 해결한다고 명시합니다. | Loom과 포크를 지원 버전으로 유지하고 수정 사항의 반영을 확인하세요. |
근본 원인 분석 (Root Cause)
Cognito 사용자 풀이나 외부 ID 공급자가 모두 설정되지 않은 경우 인증 종속성의 대체 경로는 요청을 거부하지 않고 t-admin과 g-admins-super를 묵시적으로 할당했습니다. API는 이 대체 ID를 인증된 사용자로 취급했기 때문에 백엔드에 접근할 수 있는 네트워크 클라이언트가 제어 평면의 슈퍼 관리자 권한을 얻을 수 있었습니다. 수정 사항은 기본적으로 접근을 거부하며, 로컬 개발 예외에는 명시적 opt-in과 loopback 클라이언트가 필요합니다. CVE 기록은 이 문제를 CWE-306(중요 기능에 대한 인증 누락) 및 CWE-1188(안전하지 않은 기본값으로 초기화)로 분류합니다.[1], [4], [7]
소스 코드 비교: 취약한 구현 vs 보안 패치
취약한 코드는 유지관리자가 설명한 get_current_user 동작을 요약합니다. Cognito와 외부 IdP가 모두 설정되지 않으면 해당 경로가 t-admin / g-admins-super를 조용히 부여했습니다. 강화된 코드는 upstream에 반영된 동작을 요약한 것으로 원문을 그대로 옮긴 것은 아닙니다. 로컬 예외에는 명시적 옵션과 loopback 클라이언트가 필요하며, 나머지 요청은 HTTP 401로 거부됩니다. FlawOpen 배포 참고: 프로덕션에서는 신뢰할 수 없는 전달 헤더가 loopback을 가장하지 못하도록 proxy가 설정된 경우에만 request.client를 신뢰하세요. 이 CVE는 1.6.1 이상으로, 2026년 10월 공지 전체는 1.7.0 이상으로 업데이트해 해결하세요. 익스플로잇 요청이나 자격 증명 접근 절차는 포함하지 않았습니다.[4], [1]
# 영향을 받은 get_current_user 경로에 대해 보고된 간략한 제어 흐름
if not cognito_pool and not external_idp:
return User(username="t-admin", groups=["g-admins-super"])
return await authenticate_with_configured_idp(token)
# 로컬 개발 예외가 명시적으로 활성화되고 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)
엔지니어링 및 시스템 보안 강화 체크리스트
- ✓Loom을 1.7.0 이상으로 업데이트하세요. 1.6.1은 CVE-2026-103956을 수정한 첫 버전이며, 1.7.0은 전체 보안 공지의 통합 업그레이드 대상입니다.[1], [2], [3]
- ✓Backend를 loopback 외부에 노출하기 전에 Cognito 또는 외부 IdP가 설정됐는지 확인하세요.[1]
- ✓배포 환경에서는
LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV를 설정하지 마세요. 로컬 개발에서 사용한다면 허용 클라이언트가 loopback이고 신뢰할 수 없는 proxy가 서비스를 노출하지 않는지 확인하세요. FlawOpen 배포 확인: proxy 헤더 처리를 확인한 뒤에만 loopback 신호를 신뢰하세요.[1], [4] - ✓FlawOpen 분석: 업데이트 후 영향 기간의 접근과 관리 변경을 검토하세요. AWS는 설정된 OAuth2 클라이언트 비밀을 교체하고 해당 기간에 활성화되어 있던 access token을 폐기한 뒤 다시 발급하라고 권고합니다. 컨테이너 역할 자격 증명에 접근한 경우 IAM 역할 세션 자격 증명을 교체하고 CloudTrail에서 의도하지 않은 사용을 검토하세요.[1]
- ✓CVE-2026-103957과 CVE-2026-103958은 1.7.0에서 수정된 별도 문제로 취급하고 업데이트 전까지
mcp:write와a2a:write를 신뢰할 수 있는 관리자에게만 허용하세요.[1], [3]