오염된 Ruby Gems와 Go Modules가 CI 파이프라인을 이용해 자격 증명 절도
Source: The Hacker News
개요
새로운 소프트웨어 공급망 공격 캠페인이 관찰되었으며, 슬리퍼 패키지를 사용해 악성 페이로드를 전달합니다. 이 페이로드는 자격 증명 탈취, GitHub Actions 변조, SSH 지속성을 가능하게 합니다. 이번 활동은 BufferZoneCorp 라는 GitHub 계정에 의해 수행된 것으로 추정되며, 악성 Ruby gem 및 Go 모듈을 포함한 저장소를 공개했습니다. 작성 시점 기준으로 Ruby gem은 RubyGems에서 삭제되었으며, Go 모듈은 차단되었습니다.

영향을 받는 패키지
Ruby Gems
knot-activesupport-loggerknot-devise-jwt-helperknot-rack-session-storeknot-rails-assets-pipelineknot-rspec-formatter-jsonknot-date-utils-rb(슬리퍼 gem)knot-simple-formatter(슬리퍼 gem)
Go Modules
github.com/BufferZoneCorp/go-metrics-sdkgithub.com/BufferZoneCorp/go-weather-sdkgithub.com/BufferZoneCorp/go-retryablehttpgithub.com/BufferZoneCorp/go-stdlib-extgithub.com/BufferZoneCorp/grpc-clientgithub.com/BufferZoneCorp/net-helpergithub.com/BufferZoneCorp/config-loadergithub.com/BufferZoneCorp/log-core(슬리퍼 모듈)github.com/BufferZoneCorp/go-envconfig(슬리퍼 모듈)
이 패키지들은 activesupport-logger, devise-jwt, go-retryablehttp, grpc-client, config-loader와 같은 잘 알려진 모듈을 가장해 탐지를 회피합니다.

공격 세부 사항
Socket 보안 연구원 Kirill Boychenko는 Ruby gem이 설치 과정에서 자격 증명 탈취를 자동화하며, 다음을 수집한다고 설명했습니다:
- 환경 변수
- SSH 키
- AWS 비밀 키
.npmrc및.netrc파일- GitHub CLI 설정
- RubyGems 자격 증명
탈취된 데이터는 공격자가 제어하는 웹훅 엔드포인트로 유출됩니다.
Go 모듈은 다음과 같은 보다 광범위한 기능을 제공합니다:
- GitHub Actions 워크플로우 변조
- 가짜 Go 래퍼 삽입
- 개발자 데이터 탈취
~/.ssh/authorized_keys에 하드코딩된 SSH 공개 키를 추가해 지속적인 원격 접근 확보
모듈은 init()을 통해 실행되며, GITHUB_ENV와 GITHUB_PATH를 감지하고, HTTP_PROXY/HTTPS_PROXY를 설정한 뒤, 캐시 디렉터리에 가짜 Go 실행 파일을 작성하고 해당 디렉터리를 워크플로우 PATH 앞에 추가합니다. 이 래퍼는 이후 go 실행을 가로채면서도 정상 바이너리로 위임해 작업을 중단시키지 않습니다.
완화 방안
목록에 있는 패키지를 설치한 경우 다음 단계를 수행하십시오:
- 삭제: 시스템에서 악성 gem 및 모듈을 제거합니다.
- 검토: 민감 파일에 대한 무단 접근 및
~/.ssh/authorized_keys변경 여부를 확인합니다. - 재발급: 노출됐을 가능성이 있는 자격 증명(AWS 키, SSH 키, API 토큰 등)을 모두 교체합니다.
- 점검: 네트워크 로그에서 알 수 없는 웹훅 엔드포인트로의 외부 HTTPS 트래픽을 확인합니다.
- 업데이트: CI/CD 파이프라인 및 의존성 잠금 파일을 신뢰할 수 있는 소스만 참조하도록 갱신합니다.
참고 자료
- Kirill Boychenko의 분석 (Socket.dev)
- 추가 보도: