Git 커밋 서명의 치명적 허점: 서명 키 없이도 'Verified' 배지를 얻는 방법
Git Hash Chain Malleability

Git 커밋 서명은 커밋 해시가 서명된 콘텐츠를 고유하고 불변하게 식별한다는 믿음에 기반합니다. 그러나 이 연구는 서명 키에 접근할 수 없고 SHA2를 깨지 않고도, 동일한 트리와 메타데이터를 가지며 유효한 서명과 GitHub에서 'Verified' 배지를 받는 두 번째 커밋을 생성할 수 있음을 보여줍니다. 이는 커밋을 구성하는 데이터 표현의 가변성(ECDSA의 대수적 역변환, OpenPGP 서브패킷 삽입, DER 길이 재인코딩)을 악용하며, 결과적으로 후속 커밋 해시에도 영향을 미칩니다. 논문은 해시 기반 커밋 차단, 의존성 고정(Nixpkgs, Go modules, GitHub Actions), 재현 빌드 시스템에 미치는 영향을 논의하고, 세 가지 공격 경로를 자동화하는 개념 증명 도구를 제공합니다.
서명 키에 대한 접근 권한도 없고 SHA2를 깨지도 않고도, 동일한 트리, 동일한 메타데이터, 유효한 서명, 그리고 GitHub와 같은 Git Forge의 'Verified' 배지를 가진 두 번째의 구별되는 커밋을 생성할 수 있습니다.