RubyGems CVE의 역사와 보안 취약점

Samuel Giddins, "A survey of recent RubyGems CVEs"

작성자
EuRuKo
발행일
2025년 01월 13일

핵심 요약

  • 1 RubyGems, Bundler, rubygems.org는 지난 20년간 디렉토리 탐색, YAML 역직렬화 등 다양한 보안 취약점(CVE)에 직면했습니다.
  • 2 특히 2013년 rubygems.org 침해 사건은 YAML RCE로 인해 인프라를 전면 재구축하는 계기가 되었습니다.
  • 3 Ruby Central은 HackerOne 보고, 서드파티 감사, 새로운 보안 프로젝트를 통해 Ruby 패키징 생태계의 보안 강화를 위해 지속적으로 노력하고 있습니다.

도입

발표자는 RubyGems, Bundler, rubygems.org의 유지보수자이자 Ruby Central의 보안 엔지니어로서, Ruby 패키징 생태계의 보안 중요성과 과거 취약점(CVE)의 역사를 다룹니다. 그는 `gem install`이나 `Gemfile` 사용 경험을 통해 청중에게 보안의 필요성을 강조하며, RubyGems와 관련된 프로젝트들이 겪어온 다양한 보안 문제와 그 대응 과정을 소개하고자 합니다.

CVE(Common Vulnerabilities and Exposures)는 공개적으로 알려진 사이버 보안 취약점을 식별하고 분류하는 프로그램입니다. 이는 소프트웨어 내의 약점이 악용되어 기밀성, 무결성, 가용성에 부정적인 영향을 미칠 수 있는 사건을 의미합니다. RubyGems는 지난 20년간 수많은 CVE에 직면했습니다.

초기 사례로 CVE-2007-0469는 RubyGems 0.9.1 이전 버전에서 extract_files 함수가 파일 존재 여부를 확인하지 않아 임의 파일 덮어쓰기 및 코드 실행이 가능했던 디렉토리 탐색 취약점을 보여줍니다. 이는 신뢰할 수 없는 입력에 대한 검증 부족에서 비롯되었습니다.

더 심각한 사건은 2013년 rubygems.org 침해였습니다. exploit이라는 젬이 푸시되어 원격 코드 실행(RCE)이 발생, 서버 설정 파일이 유출되고 rubygems.org 인프라 전체를 재구축해야 했습니다. 이 사건의 근본 원인은 YAML 원격 코드 실행 취약점이었으며, 침해 여부 확인을 위해 S3 체크섬 비교, 미러 검증, 데이터베이스 덤프 확인 등 광범위한 조사가 이루어졌습니다. 당시의 열악한 서버 환경(컨테이너 부재, 장기간 미재부팅 VPS)도 문제를 심화시켰습니다.

RubyGems 자체에서는 디렉토리 탐색(심볼릭 링크, 악성 젬 이름), 임의 YAML 역직렬화, 터미널 제어 문자 삽입, 크로스 사이트 스크립팅(XSS), 다양한 서비스 거부(DoS) 공격(예: ReDoS, 긴 문자열 처리, 음수 길이 파일 처리)과 같은 취약점들이 지속적으로 발견되었습니다. Bundler 또한 소스 의존성 혼동(오타 젬 다운로드, 비공식 서버 사용), 셸 주입 버그(bundle install 시 임의 명령 실행) 등의 고유한 취약점을 가졌습니다. rubygems.org는 콘텐츠 덮어쓰기, 캐시 오염, 접근 제어 우회, MFA 없는 비밀번호 재설정, 임의 YAML 역직렬화, 다양한 DoS 공격(폭탄 압축 해제) 등에 시달렸습니다.

Ruby Central은 이러한 보안 위협에 대응하기 위해 체계적인 노력을 기울이고 있습니다. HackerOne을 통한 취약점 보고 프로그램 운영, 수백 건의 보고서 처리 및 실제 문제 해결, 서드파티 보안 감사, 악성 젬 발행 및 타이포스쿼팅과 같은 실제 공격에 대한 대응, 비정상적인 트래픽 및 서비스 중단 모니터링 및 조치 등이 포함됩니다. 취약점 발견 시 보고-분류-긴급 조치-수정-검증-영향 평가-백포팅-공개로 이어지는 표준화된 라이프사이클을 따릅니다. 또한, Sigstore, Trusted Publishing과 같은 프로젝트를 통해 Ruby 패키징 생태계 전반의 소프트웨어 공급망 보안 강화를 목표로 합니다. 이 모든 노력은 AWS, Shopify 등 후원사 및 기부자의 지원을 통해 가능합니다.

결론

RubyGems 생태계는 과거부터 현재까지 다양한 보안 취약점과 공격에 직면해 왔습니다. 하지만 Ruby Central의 전담 보안 팀과 커뮤니티의 적극적인 참여(취약점 비공개 보고, 재정적 지원)를 통해 이러한 위협에 효과적으로 대응하고 있습니다. 과거의 경험을 통해 보안 의식이 크게 향상되었으며, 지속적인 개선과 협력을 통해 Ruby 패키징 시스템의 안정성과 신뢰성을 확보하려는 노력이 계속될 것입니다. 사용자들에게는 의심스러운 활동 발견 시 비공개 보고를 요청하며, 보안에 대한 지속적인 관심과 참여를 당부합니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!