🔍 CVE-2024-48930

0.0
CVSS Score
UNKNOWN
2024-10-21
2026-06-17 07:59
✅ 완료

🇰🇷 한글 설명

secp256k1-node 라이브러리의 loadCompressedPublicKey 함수에서 공개키가 곡선 위에 있는지 검증하지 않아, 공격자가 저차수 곡선의 공개키로 11회 ECDH 세션만으로 개인키를 복원할 수 있습니다. publicKeyVerify(), publicKeyTweakMul() 등도 잘못된 결과를 반환합니다.

💡 쉬운 설명

암호화 라이브러리가 공개키를 제대로 검증하지 않아 공격자가 특정 공개키로 비밀키를 훔칠 수 있습니다. 약 11번의 통신만으로도 실제 비밀키를 알아낼 수 있습니다.

🇺🇸 원문 (English)

secp256k1-node is a Node.js binding for an Optimized C library for EC operations on curve secp256k1. In `elliptic`-based version, `loadUncompressedPublicKey` has a check that the public key is on the curve. Prior to versions 5.0.1, 4.0.4, and 3.8.1, however, `loadCompressedPublicKey` is missing that check. That allows the attacker to use public keys on low-cardinality curves to extract enough information to fully restore the private key from as little as 11 ECDH sessions, and very cheaply on compute power. Other operations on public keys are also affected, including e.g. `publicKeyVerify()` incorrectly returning `true` on those invalid keys, and e.g. `publicKeyTweakMul()` also returning predictable outcomes allowing to restore the tweak. Versions 5.0.1, 4.0.4, and 3.8.1 contain a fix for the issue.

📍 영향받는 시스템

secp256k1-node 버전 5.0.1 미만, 4.0.4 미만, 3.8.1 미만 (elliptic 기반 버전)

⚔️ 공격 벡터

공격자가 저차수 곡선의 공개키를 사용하여 여러 ECDH 세션을 통해 개인키 정보를 누적 추출

🛡️ 대응 방법

secp256k1-node를 5.0.1, 4.0.4 또는 3.8.1 이상으로 업그레이드

🔧 검증 코드

표시된 버전이 5.0.1, 4.0.4, 3.8.1 이상이면 안전하며 이전 버전이면 즉시 업그레이드 필요

Shell / Script
npm list secp256k1-node | grep secp256k1-node | head -1

💻 영향받는 소프트웨어

Node.js