오염된 Ruby Gems와 Go Modules가 CI 파이프라인을 이용해 자격 증명 절도

발행: (2026년 5월 1일 PM 06:43 GMT+9)
4 분 소요

Source: The Hacker News

개요

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

Buffer image

영향을 받는 패키지

Ruby Gems

  • knot-activesupport-logger
  • knot-devise-jwt-helper
  • knot-rack-session-store
  • knot-rails-assets-pipeline
  • knot-rspec-formatter-json
  • knot-date-utils-rb (슬리퍼 gem)
  • knot-simple-formatter (슬리퍼 gem)

Go Modules

  • github.com/BufferZoneCorp/go-metrics-sdk
  • github.com/BufferZoneCorp/go-weather-sdk
  • github.com/BufferZoneCorp/go-retryablehttp
  • github.com/BufferZoneCorp/go-stdlib-ext
  • github.com/BufferZoneCorp/grpc-client
  • github.com/BufferZoneCorp/net-helper
  • github.com/BufferZoneCorp/config-loader
  • github.com/BufferZoneCorp/log-core (슬리퍼 모듈)
  • github.com/BufferZoneCorp/go-envconfig (슬리퍼 모듈)

이 패키지들은 activesupport-logger, devise-jwt, go-retryablehttp, grpc-client, config-loader와 같은 잘 알려진 모듈을 가장해 탐지를 회피합니다.

Illustration

공격 세부 사항

Socket 보안 연구원 Kirill Boychenko는 Ruby gem이 설치 과정에서 자격 증명 탈취를 자동화하며, 다음을 수집한다고 설명했습니다:

  • 환경 변수
  • SSH 키
  • AWS 비밀 키
  • .npmrc.netrc 파일
  • GitHub CLI 설정
  • RubyGems 자격 증명

탈취된 데이터는 공격자가 제어하는 웹훅 엔드포인트로 유출됩니다.

Go 모듈은 다음과 같은 보다 광범위한 기능을 제공합니다:

  • GitHub Actions 워크플로우 변조
  • 가짜 Go 래퍼 삽입
  • 개발자 데이터 탈취
  • ~/.ssh/authorized_keys에 하드코딩된 SSH 공개 키를 추가해 지속적인 원격 접근 확보

모듈은 init()을 통해 실행되며, GITHUB_ENVGITHUB_PATH를 감지하고, HTTP_PROXY/HTTPS_PROXY를 설정한 뒤, 캐시 디렉터리에 가짜 Go 실행 파일을 작성하고 해당 디렉터리를 워크플로우 PATH 앞에 추가합니다. 이 래퍼는 이후 go 실행을 가로채면서도 정상 바이너리로 위임해 작업을 중단시키지 않습니다.

완화 방안

목록에 있는 패키지를 설치한 경우 다음 단계를 수행하십시오:

  1. 삭제: 시스템에서 악성 gem 및 모듈을 제거합니다.
  2. 검토: 민감 파일에 대한 무단 접근 및 ~/.ssh/authorized_keys 변경 여부를 확인합니다.
  3. 재발급: 노출됐을 가능성이 있는 자격 증명(AWS 키, SSH 키, API 토큰 등)을 모두 교체합니다.
  4. 점검: 네트워크 로그에서 알 수 없는 웹훅 엔드포인트로의 외부 HTTPS 트래픽을 확인합니다.
  5. 업데이트: CI/CD 파이프라인 및 의존성 잠금 파일을 신뢰할 수 있는 소스만 참조하도록 갱신합니다.

참고 자료

  • Kirill Boychenko의 분석 (Socket.dev)
  • 추가 보도:
0 조회
Back to Blog

관련 글

더 보기 »