🔍 CVE-2026-41564

7.5
CVSS Score
HIGH
2026-04-23
2026-10-26 22:10
✅ 완료

🇰🇷 한글 설명

Perl용 CryptX 0.088 이전 버전은 fork 이후 Crypt::PK PRNG 상태를 재시드하지 않습니다. 부모 프로세스에서 생성된 Crypt::PK 객체는 자식 프로세스와 동일한 PRNG 상태를 공유하여 키 생성 등 난수 기반 연산 결과가 동일해질 수 있으며, 이로 인해 서명용 개인키가 노출될 위험이 있습니다.

💡 쉬운 설명

프로그램이 여러 작업자 프로세스를 복제해 실행할 때, 암호 키를 만드는 난수 생성기가 모든 복제본에서 똑같이 시작됩니다. 그 결과 서로 다른 프로세스가 만든 서명에서 비밀키가 역산될 수 있습니다.

🇺🇸 원문 (English)

CryptX versions before 0.088 for Perl do not reseed the Crypt::PK PRNG state after forking. The Crypt::PK::RSA, Crypt::PK::DSA, Crypt::PK::DH, Crypt::PK::ECC, Crypt::PK::Ed25519 and Crypt::PK::X25519 modules seed a per-object PRNG state in their constructors and reuse it without fork detection. A Crypt::PK::* object created before `fork()` shares byte-identical PRNG state with every child process, and any randomized operation they perform can produce identical output, including key generation. Two ECDSA or DSA signatures from different processes are enough to recover the signing private key through nonce-reuse key recovery. This affects preforking services such as the Starman web server, where a Crypt::PK::* object loaded at startup is inherited by every worker process.

📍 영향받는 시스템

CryptX 0.088 미만의 Perl 모듈을 사용하는 환경, 특히 Starman 등 preforking 웹 서버

⚔️ 공격 벡터

공격자가 같은 서비스의 서로 다른 워커 프로세스에서 생성된 ECDSA/DSA 서명 두 개를 수집해 nonce 재사용 기법으로 개인키를 복원합니다.

🛡️ 대응 방법

CryptX를 0.088 이상으로 업데이트하고, 업데이트가 어려우면 fork 이후 Crypt::PK 객체를 자식 프로세스에서 새로 생성하도록 코드를 수정합니다.

🔧 검증 코드

출력된 CryptX 버전이 0.088 미만이면 취약하며, 0.088 이상이면 this CVE에 대해 패치된 상태입니다.

Shell / Script
perl -MCrypt::PK::RSA -e 'print "$Crypt::PK::RSA::VERSION\n"' 2>/dev/null; perl -MCryptX -e 'print "$CryptX::VERSION\n"' 2>/dev/null

📊 CVSS Vector String

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