공급망 공격과 RubyGems 취약점
공급망 공격은 개발 프로세스의 신뢰할 수 있는 종속성을 손상시켜 악성 코드를 전파합니다. 2022년, RubyGems 백엔드에서 CVE-2022-29176 및 CVE-2022-29218 취약점이 발견되어 인기 젬의 캐시 변조 위험이 드러났습니다.
체크섬: 공급망 방어 메커니즘
체크섬 검증은 Gemfile.lock에 기록된 젬의 SHA256 체크섬을 사용하여 무결성을 보장합니다. 젬 파일이 변조되면 Bundler가 설치를 차단하며, 특히 기존 젬 버전의 교체 공격을 효과적으로 방지합니다.
Bundler 2.6 체크섬 검증의 주요 특징
-
작동 방식: Bundler는 각 젬의 SHA256 체크섬을 계산하여 Gemfile.lock의
CHECKSUMS섹션에 저장하고, 설치 시 재검증하여 불일치 시 설치를 차단합니다. -
자동 유효성 검사: 초기 설정 후 추가 구성 없이 젬 무결성을 자동으로 확인합니다.
-
적용 범위: RubyGems.org, 개인 젬 서버 등 Gemfile.lock에 명시된 모든 비로컬 젬에 적용됩니다.
-
호환성:
CHECKSUMS섹션이 포함된 Lockfile에만 적용되어 기존 프로젝트와의 호환성을 유지합니다.
체크섬 활성화 방법
-
Bundler 업데이트:
gem install bundler로 Bundler 2.6+로 업데이트합니다. -
Lockfile에 체크섬 추가:
bundle lock --add-checksums로Gemfile.lock에CHECKSUMS섹션을 생성합니다. -
향후 Lockfile 설정:
bundle config lockfile_checksums true로 새 Lockfile에 자동 포함되도록 합니다. -
Lockfile 정규화(선택 사항):
bundle lock --normalize-platforms로 플랫폼별 변형을 포함시킵니다.
체크섬 불일치 발생 시 대처
불일치는 변조, 재패키징, 손상된 다운로드 등으로 발생할 수 있으며, Bundler는 오류 메시지를 제공합니다.
-
대처 방안: 젬 소스 확인, 수동 체크섬 비교, 유지보수자 문의,
bundle update gem_name시도. -
중요: 불일치 시 맹목적 업데이트/비활성화 대신 철저한 조사가 필수입니다.
개인 레지스트리 보안 강화
개인 레지스트리는 내부 위협, 유통 채널 손상 등에 취약합니다. 체크섬 검증은 개인 레지스트리 젬의 무결성을 보장하여 보안을 강화합니다.