Prerequisite
개발자가 자주 하는 실수로 어플리케이션을 개발하다 AccessKey와 secret이 저장되어 있는 파일을 외부 저장소에 유출시키는 상황이 자주 발생하고 있습니다.
개발자가 하는 자주 하는 실수이지만, 이로 인해 적게는 몇백만원에서 많게는 몇억 상당의 비용이 청구되는 위험한 상황을 마주하게 됩니다.
이런 문제들을 해결하기 위해서 AWS AccessKey가 외부에 노출되면 AWS가 자동으로 감지하여 사용자에게 안내하도록 되어 있습니다.
사용자에게 안내하는 방법으로는 AWS Support을 통해 케이스가 생성되며 동시에 AWS Health Dashboard에 등록되게 됩니다.
Process
- Git내 Public하게 Access key가 노출되는 경우 AWS에서 탐지가 되며, Root 계정의 이메일로 알림이 전송이 됩니다.
- 알림과 동시에 해당 User의 permission에 "AWSCompromisedKeyQuarantineV2" Policy를 강제적으로 추가하게 되는데, 해당 정책은 IAM과 ec2, s3에 대한 모든 권한을 Deny 시켜 줍니다.
이렇게만 보면 사용자가 별다른 행동을 안해도 될것 같지만 아래와 같이 몇가지 문제점이 있습니다.
가장 큰 문제점은 이 문서에서 설명한 방법 중 노출된 AccessKey를 AWS가 탐지하는데 걸리는 시간이 있다는 점입니다.
하여, 노출된 Access Key를 통해 적용된 Event에 대한 기록을 확인해야 합니다.
(Access key가 노출된 계정의 권한 정도에 따라 심각도가 달라질 수 있습니다.) - CloudTrail을 통해 해당 Access key를 통해 적용된 사항에 대한 기록을 확인합니다.
CloludTrail 설정이 되어 있지 않은 Event History를 통해 검색할 수 있는 시간 범위는 90일 이내로 제한이 됩니다.
CloudTrail 설정이 되어 있는 경우, Tarils 설정 내 Trail log location에 저장된 Log를 통해 90일 이전 기록에 대한 검색이 가능합니다.
Event history로 검색된 내용은 csv, json 형태로 추출이 가능합니다.
쉽게는 csv 파일을 엑셀을 이용해서 event name, source IP 등을 추출할 수 있습니다.
이 때, Event name 내 뭔가를 Create 또는 modify 를 했는지를 확인할 수 있습니다.
해당 내역에 따라 생성 또는 수정된 event 내 리소스를 추적하여 제거 또는 변경해줍니다.
IAM의 Credential Report를 통해 최근 생성된 계정이 있는지 조사합니다.
또한 Role 내 특별한 권한이 추가되었거나, 생성된 타 Account Role이 있는지 조사합니다.
해당 내역에 따라 생성 또는 수정된 계정, Role은 추적하여 제거 또는 변경해줍니다.
이 때, 해당 로그는 Raw log 형태로 검색이 어려울 수 있어, Opensearch 등을 통해 쉽게 검색을 하실 수 있습니다. - 검색된 기록을 통해 비정상적인 Event가 있었는지 확인합니다.
- 비정상적인 Event가 확인되는 경우, 해당 Event 기록을 추적하여 제거 또는 수정합니다.
- 한번 노출된 Access key는 제거하고 신규로 발급받아 적용합니다.
- 이 때, AWS 측으로 생성된 Case에 Root로 로그인하여 다음의 사항을 요청합니다.
- 무단 사용이 없는 경우에도 활성 리소스 및 요금에 대한 확인요청
- CloudTrail 상 무단사용이 없었음을 확인 응답
- 모든 것이 확인된 후 계정 내 "AWSCompromisedKeyQuarantineV2"를 제거하여 권한을 복원 합니다.
(노출된 키는 제거를 권장 드립니다.) - 사용자가 노출된 키를 통해 입는 피해를 줄이는 방법은 개발용 사용자를 따로 생성하여, Iam 이나 S3, EC2 관련된 권한을 전부 삭제하고, 기본적으로 MFA 와 주기적으로 Console password와 AccessKey를 변경함으로써 피해를 줄이는 방법이 최선입니다.
Reference
좀 더 세부적인 대처방안에 대해서는 다음 링크 참조를 부탁드립니다.
https://github.com/aws/aws-health-tools/tree/master/automated-actions/AWS_RISK_CREDENTIALS_EXPOSED
https://aws.amazon.com/ko/blogs/tech/detect-exposed-security-credential/
댓글
댓글 0개
댓글을 남기려면 로그인하세요.