GitHub의 SHA-1 충돌 공격 탐지 및 대응

Source

  • Evernote/Inbox/SHA-1 collision detection on GitHub.com.md

Summary

GitHub는 SHA-1 해시 함수의 첫 번째 실제 충돌 공격 사례인 ‘SHAttered’ 발표에 대응하여, GitHub.com 및 GitHub Enterprise에서 SHA-1 충돌 공격 증거가 있는 Git 객체를 탐지하고 거부하는 기능을 도입했습니다. Git은 객체 식별에 SHA-1을 사용하므로, 충돌이 발생하면 악의적인 코드가 유효한 서명(Commit/Tag)을 우회하여 삽입될 수 있는 보안 위험이 있습니다. GitHub는 Marc Stevens 등이 개발한 오픈소스 라이브러리를 활용하여 충돌 쌍의 패턴을 탐지하고 있습니다. 현재 Git 객체 자체에 대한 충돌은 아직 발견되지 않았으나, Git 프로젝트는 향후 SHA-1에서 더 안전한 해시 알고리즘으로 전환하는 작업을 진행 중이며 GitHub도 이를 지원할 예정입니다.

Key Points

  • GitHub는 SHA-1 충돌 공격(SHAttered)을 방지하기 위해 충돌 증거가 있는 Git 객체의 업로드 및 호스팅을 차단함
  • Git은 객체 식별에 SHA-1을 사용하며, 충돌 시 서명된 Commit/Tag가 의도하지 않은 다른 데이터(악성 코드)를 가리킬 수 있는 보안 취약점이 존재함
  • 현재의 충돌 공격 기법은 계산 비용이 매우 높으며, Git 객체 헤더를 고려한 실제 Git 충돌은 아직 발생하지 않음
  • GitHub는 충돌 탐지 라이브러리를 Git 프로젝트에 업스트림으로 기여했으며, Git은 장기적으로 SHA-1에서 더 안전한 해시 알고리즘으로 마이그레이션하는 계획을 수립 중임