Coder는 소프트웨어 레지스트리 registry.coder.com의 인프라가 침해되어, 공격자가 Cloudflare를 통해 관리되는 인프라에 무단 서버를 추가할 수 있었다고 밝혔습니다. 그 결과 일부 다운로드 요청이 정상적인 Coder 서버가 아닌 공격자의 서버로 전달되었고, 일부 사용자에게 악성 Terraform 모듈이 제공되었습니다.
Coder의 설명에 따르면 악성 파일이 배포된 시간대는 8월 31일 07:35부터 21:45(UTC)까지였습니다. 변조된 모듈은 프로비저너 도구의 실행 환경을 겨냥했으며, 영향을 받은 장치에서 실행될 때 정보 탈취 도구로 작동하는 코드가 포함되어 있었습니다.
어떤 데이터가 위험에 노출되었나?
악성 모듈은 사용자 환경에 존재하는 다양한 비밀 정보와 자격 증명을 탐색했으며, 여기에는 다음이 포함됩니다.
- Provisioner 프로세스의 환경 변수와 비밀 정보
- 클라우드 인프라 및 인공지능 도구의 API 키
- CI/CD 시스템의 자격 증명
- 구성 파일과 터미널 기록에 있는 비밀 정보
- OIDC 토큰과 구성된 SSH 키, 그리고 외부 인증의 일회용 토큰
- Provisioner가 coderd 내부에서 실행될 때 Coder 데이터베이스 비밀번호 및 기타 비밀 정보
수집된 데이터는 유사 도메인인 coder-infra[.]com으로 전송되었습니다. Coder는 영향을 받았을 가능성이 있는 사용자에게 목록에 포함된 모든 비밀 정보를 가능한 한 신속하게 교체할 것을 권고했습니다.
확인 및 대응 단계
Coder는 수정된 버전인 2.37.0, 2.36.4, 2.35.7 또는 2.34.9로 업그레이드하기 전에 방화벽, 프록시, DNS 로그와 VPC 흐름을 검사해 악성 도메인과의 연결을 찾을 것을 요청했습니다. 또한 개발자는 Provisioner 로그에서 data.external.telemetry를 검색하고, 노출 시간대에 다운로드된 모듈을 식별하며, 변조되었을 가능성이 있는 패키지를 캐시에서 삭제해야 합니다.
Coder는 캐시된 모듈과 영향을 받았을 수 있는 템플릿 버전을 식별하는 데 도움이 되는 SQL 쿼리도 제공했습니다.
이 침해가 중요한 이유
이번 위험은 악성 소프트웨어 패키지가 게시된 데 그치지 않고, 개발자들이 작업 환경과 인프라 템플릿을 구축할 때 의존하는 신뢰할 수 있는 배포 지점까지 확장됩니다. 또한 모듈이 노린 비밀 정보에는 클라우드 키, 인공지능 도구, CI/CD 환경이 포함되어 있어 이번 사건은 개발, 플랫폼 및 보안 팀과 직접적으로 관련됩니다.
Coder는 업데이트 토큰이 Provisioner로 전달되지 않았으며, 자사가 보유한 고객 데이터가 영향을 받았다는 증거도 발견하지 못했다고 밝혔습니다. 그러나 동시에 공격자가 사용한 인프라가 Coder의 통제 범위를 벗어나 있었기 때문에 중요한 로그를 보유하고 있지 않으며, 침해된 모든 배포를 확실하게 식별할 수 없다고 인정했습니다. 이러한 공백 때문에 유출의 직접적인 증거가 보이지 않는 경우에도 비밀 정보 교체와 로그의 독립적인 검증은 필수적인 조치입니다.