사이버보안 연구원들은 Amazon Web Services(AWS)에서 여러 가지 심각한 결함을 발견했는데, 이 결함이 성공적으로 악용된다면 심각한 결과를 초래할 수 있습니다.
클라우드 보안 회사 Aqua는 The Hacker News에 공유한 자세한 보고서에서 “이러한 취약점의 영향은 원격 코드 실행(RCE), 전체 서비스 사용자 인수(강력한 관리자 액세스 제공 가능), AI 모듈 조작, 중요 데이터 노출, 데이터 유출 및 서비스 거부에 이릅니다.”라고 밝혔습니다.
2024년 2월 책임 있는 공개에 따라 Amazon은 3월부터 6월까지 몇 달 동안 단점을 해결했습니다. 이 결과는 Black Hat USA 2024에서 발표되었습니다.
버킷 모노폴리라 불리는 이 문제의 핵심은 섀도우 리소스(Shadow Resource)라는 공격 벡터입니다. 이 경우 섀도우 리소스는 CloudFormation, Glue, EMR, SageMaker, ServiceCatalog, CodeStar와 같은 서비스를 사용할 때 AWS S3 버킷이 자동으로 생성되는 것을 말합니다.
이런 방식으로 생성된 S3 버킷 이름은 고유하며 사전 정의된 명명 규칙(예: “cf-templates-{Hash}-{Region}”)을 따릅니다. 공격자는 이 동작을 이용하여 사용되지 않는 AWS 지역에 버킷을 설정하고 합법적인 AWS 고객이 취약한 서비스 중 하나를 사용하여 S3 버킷의 콘텐츠에 대한 은밀한 액세스 권한을 얻을 때까지 기다릴 수 있습니다.
적이 제어하는 S3 버킷에 부여된 권한을 기반으로, 이 접근 방식은 DoS 조건을 유발하거나 코드를 실행하고, 데이터를 조작하거나 훔치고, 심지어 사용자의 지식 없이 피해자 계정을 완전히 제어하는 데 사용될 수 있습니다.
성공 가능성을 최대화하기 위해 버킷 모노폴리를 사용하여 공격자는 사용 가능한 모든 지역에서 미리 청구되지 않은 버킷을 만들고 버킷에 악성 코드를 저장할 수 있습니다. 대상 조직이 취약한 서비스 중 하나를 새 지역에서 처음으로 활성화하면 악성 코드가 모르게 실행되어 공격자에게 제어권을 부여할 수 있는 관리자 사용자가 생성될 가능성이 있습니다.
CloudFormation 취약점 개요 |
그러나 공격자는 피해자가 공격을 성공적으로 시작하기 위해 처음으로 새로운 지역에 새로운 CloudFormation 스택을 배포할 때까지 기다려야 한다는 점을 고려하는 것이 중요합니다. S3 버킷에서 CloudFormation 템플릿 파일을 수정하여 사기 관리자 사용자를 만드는 것도 피해자 계정에 IAM 역할을 관리할 권한이 있는지 여부에 따라 달라집니다.
Glue 취약점 개요 |
CodeStar 취약점 개요 |
Aqua는 S3 버킷에 대해 유사한 명명 방법론({서비스 접두사}-{AWS 계정 ID}-{지역})을 사용하는 다른 5개의 AWS 서비스를 찾았다고 밝혔으며, 이를 통해 Shadow Resource 공격에 노출되고 궁극적으로 위협 행위자가 권한을 확대하고 DoS, 정보 공개, 데이터 조작, 임의 코드 실행을 포함한 악의적인 작업을 수행할 수 있게 되었다고 밝혔습니다.
- AWS Glue: aws-glue-assets-{계정-ID}-{지역}
- AWS Elastic MapReduce(EMR): aws-emr-studio -{계정-ID}-{지역}
- AWS SageMaker: sagemaker-{지역}-{계정-ID}
- AWS CodeStar: aws-codestar-{지역}-{계정-ID}
- AWS 서비스 카탈로그: cf-templates-{해시}-{지역}
또한 이 회사는 AWS 계정 ID는 Amazon이 문서에서 언급한 것과 달리 비밀로 간주되어야 하며, 유사한 공격을 실행하는 데 사용될 수 있다고 지적했습니다.
게다가 AWS 계정에 사용된 해시는 GitHub 정규 표현식 검색이나 Sourcegraph를 사용하거나, 혹은 열려 있는 이슈를 스크래핑해서 찾아낼 수 있고, 이를 통해 계정 ID나 다른 계정 관련 메타데이터에서 직접 해시를 계산하는 방법이 없더라도 S3 버킷 이름을 조각조각 모으는 것이 가능합니다.
“이 공격 벡터는 AWS 서비스뿐만 아니라 조직이 AWS 환경에서 리소스를 배포하는 데 사용하는 많은 오픈소스 프로젝트에도 영향을 미칩니다.”라고 Aqua는 말했습니다. “많은 오픈소스 프로젝트는 기능의 일부로 S3 버킷을 자동으로 생성하거나 사용자에게 S3 버킷을 배포하도록 지시합니다.”
“버킷 이름에 예측 가능하거나 정적 식별자를 사용하는 대신 각 지역 및 계정에 대해 고유한 해시 또는 임의 식별자를 생성하여 이 값을 S3 버킷 이름에 통합하는 것이 좋습니다. 이 접근 방식은 공격자가 버킷을 조기에 청구하는 것을 방지하는 데 도움이 됩니다.”