AWS 권한 상승 맵
핵심 요약
- 공격자가 관리자, 데이터, 지속성으로 연결할 수 있는 AWS 권한을 각각 하나의 페이지로 정리한 참고 자료를 만들었습니다.
- 모든 항목은 동일한 네 가지를 담습니다. 권한이 어떻게 사용되는지, 이를 포착하는 CloudTrail 이벤트, MITRE ATT&CK 기법, 그리고 경로를 제거하는 통제입니다.
- 권한 상승 항목의 절반 이상이 iam:PassRole을 거칩니다. 가장 많은 서비스에 걸쳐 있는 단 하나의 권한입니다.
- 일부 권한은 단독으로 권한을 상승시킵니다. 많은 권한은 다른 권한과 함께 묶여 조합으로만 상승합니다. 이러한 유독성 조합은 정책을 한 번에 하나씩 검토하는 방식으로는 놓치게 됩니다.
- 어떤 권한이 위험하다는 것을 아는 것과 그 권한이 내 계정에서 위험하다는 것을 아는 것은 다릅니다. 후자는 실제 권한 부여에 대한 검증과, 해당 권한이 핵심적으로 쓰이는지에 관한 비즈니스 맥락의 판단을 필요로 합니다.
AWS 엔지니어 열 명에게 어떤 권한이 위험한지 물으면 짧은 목록 열 개를 받게 됩니다. 모두가 iam:PassRole을 꼽습니다. 대부분은 정책 편집을 꼽습니다. 그 이후로는 모호해집니다. 실제 답은 길고, AWS가 새 서비스를 출시하면서 바뀌며, 위험의 대부분은 단일 작업이 아니라 조합에 있기 때문입니다.
그래서 우리는 이를 기록했습니다. AWS 권한 상승 맵은 공격자가 관리자 액세스, 데이터, 또는 재침입 경로로 연결할 수 있는 모든 권한을 담은 페이지입니다. 서비스별, 기법별, 또는 권한 조합별로 검색할 수 있으며, 각 항목은 동일한 방식으로 읽힙니다.
각 페이지에 담긴 내용
모든 항목은 네 가지 질문에 답합니다. 권한이 어떻게 사용되는가, 단독으로인가 아니면 다른 권한과 함께인가. 어떻게 확인하는가, 호출을 기록하는 CloudTrail 이벤트로서. 공격자 플레이북에서 어디에 위치하는가, MITRE ATT&CK 기법으로서. 그리고 무엇이 경로를 제거하는가, 방어자가 적용할 수 있는 통제로서. 페이지는 공격자 주체부터 권한이 도달하는 대상까지의 이동을 체인으로 그리며, 각 단계에 실제 API 작업을 표시합니다.
경로, 단계별로
위의 이동을 보십시오. 권한 상승 항목의 절반 이상이 의존하는 이동입니다. 두 개의 별도 정책 문으로 읽으면, 어느 쪽도 위험해 보이지 않습니다. 하지만 연결되면, 주체가 부여받은 적 없는 역할로 공격자 코드를 실행합니다.
- 1단계. 평범한 주체로 시작합니다. lambda:CreateFunction과 iam:PassRole을 보유한 개발자 또는 CI 역할이면 충분합니다. 여기까지는 아직 관리자가 아닙니다.
- 2단계. 공격자 코드로 함수를 생성합니다 (lambda:CreateFunction). 함수 본문은 공격자가 실행하고자 하는 무엇이든 됩니다.
- 3단계. 거기에 권한 있는 역할을 넘깁니다 (iam:PassRole). 주체가 보유한 것보다 더 많은 액세스를 가진 역할, 예컨대 모든 버킷을 읽거나 정책을 연결할 수 있는 역할로 함수를 가리킵니다.
- 4단계. 함수를 호출하면, 코드가 그 역할로 실행됩니다. 주체는 부여받은 적 없는 액세스를 빌린 것이며, 이것이 권한 상승의 전부입니다.
- 5단계. 차단: iam:PassRole을 특정 역할 ARN으로 범위를 좁히고 iam:PassedToService를 고정합니다. 이 한 가지 변경이 이 경로와 맵의 나머지 상당 부분을 닫습니다. 코드를 대신 실행하는 모든 서비스가 넘겨진 역할을 동일한 방식으로 받아들이기 때문입니다.
이것이 하나의 항목입니다. 맵은 다루는 모든 권한에 대해 동일한 체인을 그리므로, 해당 권한이 내 계정에서 핵심적으로 쓰이는지 판단하기 전에 그 이동을 볼 수 있습니다.
iam:PassRole이 공통된 맥락입니다
맵의 권한 상승 항목 중 절반 이상이 iam:PassRole에 의존합니다. 이 권한은 스무 개가 넘는 서로 다른 서비스에 도달하는 경로에 등장합니다. 코드를 대신 실행하는 모든 서비스가 넘겨준 역할을 받아들이기 때문입니다. Lambda, EC2, ECS, Glue, SageMaker, CodeBuild, Step Functions 등 나머지 모두가 넘겨진 역할을 받아 그 역할로 실행합니다. 그래서 와일드카드 리소스에 부여된 단 하나의 iam:PassRole 권한이 공격자에게는 다른 거의 모든 권한보다 가치가 큽니다. 이를 특정 역할 ARN으로 범위를 좁히고 iam:PassedToService를 고정하면, 맵의 상당 부분이 한 번에 닫힙니다.
단일 권한과 유독성 조합
일부 권한은 단독으로 상승합니다. 충분히 넓은 리소스를 가진 iam:AttachUserPolicy는 단독으로 상승합니다. 하지만 가장 위험한 경로 중 상당수는 두 개 이상의 권한을 함께 보유해야 하며, 어느 하나도 단독으로는 경계를 일으키지 않습니다. iam:PassRole은 이를 사용할 서비스 작업이 없으면 무해합니다. lambda:CreateFunction은 넘길 역할이 없으면 무해합니다. 둘 다 보유하면 권한 있는 역할로 임의의 코드가 실행됩니다.
이러한 유독성 조합은 검토를 빠져나가는 것들입니다. 한 번에 하나의 문을 들여다보는 정책 감사는 그 쌍을 결코 보지 못하기 때문입니다. 맵은 각 항목을 직접 악용 가능 또는 유독성 조합으로 표시하며, 조합만 필터링할 수 있습니다.
권한 목록만으로는 전부가 아닌 이유
이와 같은 참고 자료는 어떤 권한이 위험할 수 있는지 알려줍니다. 하지만 어느 권한이 내 계정에서 위험한지는 알려주지 못합니다. 그것은 실제로 누가 그 권한을 보유하는지, 신뢰 정책과 조건이 맞아떨어지는지, SCP가 이미 이를 차단하는지, 그리고 도달하는 역할이 권한 있는 역할인지에 달려 있습니다. 같은 권한이 한 계정에서는 핵심적으로 쓰이고 다른 계정에서는 순전한 위험일 수 있습니다.
그래서 맵은 수정에 관해 의도적으로 신중합니다. 각 페이지는 경로를 제거하는 통제를 보여주고, 그것을 적용할지 여부는 자동 변경이 아니라 비즈니스 결정임을 분명히 밝힙니다. 파이프라인이 의존하는 권한을 제거하는 것은 그 자체로 하나의 장애입니다.
사용 방법
운영하는 서비스에서 시작해 그 항목을 읽어보십시오. 부여하려는 권한을 검색해 무엇이 열리는지 확인하십시오. 두 개의 권한을 입력해 함께 경로를 이루는지 확인하십시오. 각 페이지는 오늘 바로 알림을 걸 수 있는 탐지 이벤트와, 직접 매핑할 수 있는 MITRE 기법을 연결하므로, 강화든 탐지든 위협 모델링이든 맵이 유용합니다.
Pathbreak가 이를 활용하는 방법
맵은 Pathbreak가 여러분의 계정 내부에서 추론하는 내용의 공개 버전입니다. 우리는 읽기 전용으로 연결하여 실제 IAM 정책, 역할, 신뢰 관계를 해석하고, 이러한 경로 중 어떤 것이 여러분의 아이덴티티에 대해 실제로 존재하는지 확인합니다. 그런 다음 각 경로가 얼마나 많은 것을 여는지에 따라 순위를 매기고, 여러분의 위협 모델과 비즈니스 맥락을 반영해 어떤 소수의 변경이 가장 많은 것을 차단하는지 보여줍니다. 최초의 검증된 경로는 한 시간 이내에 돌아옵니다.
자주 묻는 질문
가장 위험한 AWS IAM 권한은 무엇입니까?
iam:PassRole은 권한 상승 경로에서 가장 많이 재사용되는 단일 권한입니다. 와일드카드 리소스에 부여되면, 주체가 Lambda나 EC2처럼 자신이 실행할 수 있는 서비스에 권한 있는 역할을 넘기고 그 역할을 물려받을 수 있습니다. 이 권한은 단독보다는 서비스 작업과의 조합에서 위험하며, 이것이 이 권한이 그토록 자주 지나치게 넓게 방치되는 이유 중 하나입니다. Pathbreak의 AWS 권한 상승 맵은 이 권한을 경로로 만드는 모든 조합을 보여 줍니다.
권한의 유독성 조합이란 무엇입니까?
개별적으로는 안전하지만 한 주체가 함께 보유하면 권한 상승을 허용하는 두 개 이상의 권한 집합입니다. iam:PassRole과 lambda:CreateFunction이 대표적인 예입니다. 정책 문을 한 번에 하나씩 확인하는 검토는 이를 놓칩니다. 위험이 어느 한 권한에 있는 것이 아니라 그 짝에 있기 때문입니다. Pathbreak 맵은 이를 유독성 조합으로 표시합니다.
이 권한 중 어느 것이 내 계정에서 실제로 위험한지 어떻게 알 수 있습니까?
실제 권한 부여에 대해 검증합니다. 권한은 주체가 실제로 이를 보유하고, 신뢰 정책과 조건이 이를 허용하며, 어떤 가드레일도 이를 차단하지 않고, 도달하는 역할이 권한 있는 역할일 때에만 경로를 형성합니다. Pathbreak는 이를 읽기 전용으로 해석하여, 이론상 위험할 수 있는 모든 권한이 아니라 실제로 성립하는 경로만 보고합니다.
맵에 있는 모든 권한을 그냥 제거해야 합니까?
아닙니다. 이 권한 중 상당수는 정당한 역할을 하고 있습니다. 맵은 각 경로를 제거하는 통제를 보여주지만, 이를 적용할지 여부는 비즈니스 결정입니다. 올바른 접근은 어떤 경로가 존재하는지 검증하고, 각 경로가 얼마나 많은 것을 여는지에 따라 순위를 매긴 다음, 의존하는 것을 깨뜨리지 않으면서 가장 중요한 소수를 차단하는 것입니다. Pathbreak는 그중 어떤 것이 계정에서 실제 경로를 이루는지 검증하므로, 그것부터 수정할 수 있습니다.
맵은 권한 상승 외의 것도 다룹니까?
그렇습니다. 권한 상승과 더불어 자격 증명 액세스, 여러분 자신의 로깅과 가드레일에 대한 방어 회피, 외부 또는 공개 주체로의 리소스 노출, 데이터 액세스, 지속성을 다룹니다. 실제 공격 경로는 피해에 이르는 과정에서 이러한 범주를 넘나들기 때문입니다. Pathbreak는 이 맵을 관리하며, 같은 기법을 자사 플랫폼에서 검증합니다.
이 경로 중 어떤 것이 여러분의 AWS 계정에 존재하는지 확인하십시오.
무료 스캔 신청