AWS의 s3:ResourceAccount 조건 키에 와일드카드 매치를 적용할 수 있는 능력
이 기능이 놀라운 점은, 부분적인 계정 ID 매치를 기반으로 권한을 부여하거나 거부하는 것에 정당한 이유가 없다는 것임. AWS 계정 ID는 IP 주소와 같이 민감할 수 있지만, 일을 진행하기 위해 누군가는 이를 알아야 함.
AWS 계정 ID == 당신의 IP 주소. 민감할 수 있지만, 일을 처리하기 위해서는 누군가가 그것을 알아야 함.
예시: 작성자는 반돈세탁 절차로 인해 통합해야 하는 제3자와의 거래에서, 개방된 sftp 포트보다 일반적으로 더 안전한 privatelink 설정을 원했음. 그러나 해당 회사는 계정 ID를 숨기는 보안상의 이유로 거부함. 결과적으로, 작성자 팀은 그들이 사용하는 공개 IP 범위를 포트 22로 화이트리스트에 올림.
이야기의 교훈: ID를 숨기는 것이 현명해 보일 수 있지만, 사람들이 당신에게 연락할 수 있는 주소가 없다면 실제로 비즈니스를 운영할 수 없음.
일반적으로 계정 ID를 공개적으로 배포하지는 않겠지만, 어느 시점에 일부가 공개될 것으로 예상해야 함.
제3자 벤더와 SaaS 플랫폼이 IAM 사용자와 액세스 키에서 역할 가정(role assumption)을 선호하는 통합 방식으로 이동함에 따라, 통합 지점으로 사용하는 계정의 계정 ID는 다른 당사자에 의해 알려지며, 그들은 자신의 의존성과 취약점을 가짐.
관련: AWS 키 ID(비밀 키 부분이 아님)는 계정 ID를 포함하고 있으며, 한 위치만큼 비트 이동됨.
이 키 ID는 S3에 대한 사전 서명된 링크의 URL에 포함되어 있으므로, 이미 계정 ID를 공개하고 있을 가능성이 높음.
흥미로운 발견이지만, 제목을 보고 더 간단한 방법이 있을 것으로 기대했음.
AWS에서 관리자 계정으로 "X 리소스가 어디에 있는지" 물어볼 수 있는 간단한 방법이 있었으면 좋겠음. 특히 어떤 계정에 특정 S3 버킷이 있는지 빠르게 알려주는 기능이 필요함. 이는 주로 코드로 정의되기 전에 존재했던 레거시 버킷과 관련된 문제임. 많은 AWS 계정을 가지고 있을 때 알려지지 않은 계정과 가능한 지역에서 리소스를 찾는 것은 번거로울 수 있음.
실제 해킹이 "한 번에 한 문자씩 비밀번호를 '해킹'하는" 오래된 클리셰나 오해를 가져오는 시나리오는 언제나 멋짐.
더 걱정되는 공격 벡터는 이제 계정 번호를 사용하여 다른 계정의 주체를 자신의 계정 정책에 허용 목록에 추가하려고 할 때임.
다른 계정에 해당 주체가 존재하지 않으면 역할/사용자를 찾을 수 없는 오류가 발생함. 이를 이용하여 다른 계정의 실제 주체를 찾을 수 있음.
이것이 왜 중요한가? 명백한 한 가지: 생산 버킷이 주어지면, 동일한 조직의 개발 버킷을 찾을 수 있게 되는데, 이는 예상치 못한 행동임.
Hacker News 의견