🔍 CVE-2026-44310

5.4
CVSS Score
MEDIUM
2026-05-15
2026-10-26 14:10
✅ 완료

🇰🇷 한글 설명

Gitsign 0.4.0~0.15.0 버전의 CertVerifier.Verify() 함수가 인증서 슬라이스 길이를 확인하지 않고 접근하여 발생하는 인덱스 범위 초과 취약점입니다. 빈 인증서 세트의 CMS/PKCS7 서명 메시지 입력 시 패닉이 발생하며, GPG 호환 모드에서는 내부적으로 복구되어 종료 코드 0으로 반환되므로 검증 실패가 성공으로 잘못 해석됩니다.

💡 쉬운 설명

Gitsign이 특정 조작된 서명을 검증하지 못하면서도 오류 없이 성공했다고 보고하는 문제입니다. 가짜 또는 변조된 Git 커밋이 실제로는 검증되지 않았는데도 유효하다고 인식될 수 있습니다.

🇺🇸 원문 (English)

Gitsign is a keyless Sigstore to signing tool for Git commits with your a GitHub / OIDC identity. From 0.4.0 to before 0.15.0, CertVerifier.Verify() in pkg/git/verifier.go unconditionally dereferences certs[0] after sd.GetCertificates() without checking the slice length. A CMS/PKCS7 signed message with an empty certificate set is a structurally valid DER payload; GetCertificates() returns an empty slice with no error, causing an immediate index-out-of-range panic. On the gitsign --verify code path (the GPG-compatible mode invoked by git verify-commit), the panic is silently recovered by internal/io/streams.go's Wrap() function, which returns nil instead of an error. main.go then exits with code 0, causing exit-code-only verification callers to interpret the failed verification as success. This vulnerability is fixed in 0.15.0.

📍 영향받는 시스템

Gitsign 0.4.0 이상 0.15.0 미만의 모든 버전

⚔️ 공격 벡터

공격자가 빈 인증서 세트를 포함한 조작된 CMS/PKCS7 서명 메시지를 제공하여 Git 커밋 검증 우회

🛡️ 대응 방법

Gitsign을 0.15.0 이상으로 업그레이드

🔧 검증 코드

0.15.0 미만이 출력되면 취약, 0.15.0 이상이면 패치됨, 실행 불가 시 gitsign 미설치

Shell / Script
gitsign --version 2>/dev/null | grep -oE '0\.[0-9]+\.[0-9]+'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L

💻 영향받는 소프트웨어

Git