키헌터 작성
🔥 스칼라 베놈 공격 — 개인 키를 유출하는 암호화 공격
(스칼라 독 / 독성 스칼라 감염)
스칼라 베놈 공격(SCALAR VENOM ATTACK) 은 libbitcoin-system 라이브러리의 메모리 관리 취약점을 악용하여 비트코인 개인 키를 추출하는 것을 목표로 하는 새로운 유형의 암호화 공격입니다. (위키피디아+2)
민감한 메모리 유출 공격 (CVE-2023-39910, CVE-2025-8217)은 모든 개발자가 민감한 데이터 처리 방식을 철저히 재평가해야 함을 의미합니다. 비트코인을 비롯한 모든 암호화폐는 이러한 공격에 취약합니다. 메모리에 최소한의 비밀 복사본만 저장하고, 객체 삭제 시 즉시 데이터를 삭제하며, 보호되지 않은 일반적인 컨테이너 사용을 금지하는 강력한 보안 체계만이 시스템에 대한 신뢰와 암호화폐 인프라의 재정적 안정성을 유지할 수 있습니다.
안전한 메모리 관리 요구 사항을 위반하는 암호화 애플리케이션은 메모리 분석을 통해 개인 키가 완전히 노출되는 스칼라 베놈(SCALAR VENOM) 공격에 취약합니다. 유일하게 확실한 방어책은 모든 임시 및 작업 버퍼를 즉시 비우는 방식으로 비밀 키 수명 주기를 신중하게 설계하고, 복사를 방지하며, 정적 및 동적 누출 테스트를 수행하는 것입니다. 이 안전한 코드와 권장 사항 목록은 향후 메모리 중심 공격으로부터 비트코인 및 기타 중요한 암호화폐 시스템을 보호하기 위한 견고한 기반을 제공합니다. huji+2
과학적으로는 민감 메모리 누출 공격 (비트코인 커뮤니티에서는 “스칼라 베놈”으로 알려짐) 으로 분류되는 심각한 메모리 관리 취약점이 비트코인 생태계의 근본적인 보안을 위협합니다. 이 공격은 소프트웨어 저수준에서 개인 키를 처리하는 과정에서 아주 작은 실수라도 암호화폐의 보호막을 허물로 만들 수 있음을 보여줍니다. 취약한 메모리 바이트 하나하나가 공격자의 잠재적 침입 경로가 될 수 있는 것입니다.
SCALAR VENOM은 가장 위험한 시나리오 중 하나를 구현합니다. 개인 키가 시스템의 RAM을 오염시켜 작업 완료 후 몇 시간 또는 며칠이 지나도 덤프, 시스템 충돌 또는 고의적인 RAM 공격을 통해 복구될 수 있도록 합니다. 이는 취약한 지갑 구현 및 암호화폐 클라이언트를 해커의 손쉬운 공격 대상으로 만듭니다. 해커는 디지털 자산을 훔치기 위해 안전한 서명을 해독할 필요 없이 메모리에 남아 있는 데이터에 접근하기만 하면 되기 때문입니다.
스칼라 베놈: 치명적인 메모리 관리 취약점과 비트코인 개인 키 공격은 암호화폐 업계에 새로운 위협을 제기하고 있습니다.
🎯 공격의 본질
SCALAR VENOM 은 스칼라 메모리 누수 공격으로 , 해당 클래스의 근본적인 결함을 악용하여 ec_scalar프로세스 메모리에서 비밀 암호화 키를 추출합니다. microsoft+4
⚡ 작용 기전
이 공격은 비밀 데이터가 파괴된 후에도 활성 상태로 남아 있는 개인 키 복사본으로 프로세스의 메모리를 오염시키기 때문에 “스칼라 포이즌(Scalar Poison)” 이라고 불립니다 .
SCALAR VENOM은 암호화 뱀파이어 처럼 여러 메모리 누출 경로를 통해 비트코인 지갑의 생명력(개인 키)을 빨아먹습니다: anjuna+1
🩸 감염 매개체:
- 뱀파이어 생성기 (47행):
secret_(secret)– 독성이 있는 열쇠 복제본을 생성합니다. - 기생 연산자 (57행):
secret_ = secret;– 중복된 비밀 정보로 메모리를 감염시킵니다. - 산수벌레 (78행):
ec_secret secret = null_hash;– 독성 흔적을 남깁니다 - 단일 독 (123행):
auto out = secret_;– 수술을 통해 감염을 확산시킵니다.
🧬 공격 분류
SCALAR VENOM은 지속적인 메모리 누출 공격 유형에 속하며 ieee-focs+2 의 요소들을 결합합니다.
- 메모리 포렌식 공격 – 메모리 덤프에서 비밀 정보 추출 sciencedirect+1
- 사이드 채널 메모리 공격 – 메모리 관리 연구에서 사이드 채널 악용.checkpoint +1
- 데이터 잔존 공격 – 위키피디아 삭제 후 남은 데이터를 이용한 공격
- 콜드 부트 공격 – RAM에서 키 추출 stackoverflow+1
🎭 왜 “스칼라 베놈”일까요?
“스칼라 베놈” 이라는 이름은 공격의 본질, 즉 열쇠 사냥꾼을 정확하게 반영합니다.
SCALAR — 이 공격은 ECDSA에서 개인 키를 저장하는 데 사용되는 암호화 스칼라(ec_scalar)를 대상으로 합니다.
독 (독) – 강조:
- 은밀성 : 이 공격은 프로그램의 정상적인 작동을 방해하지 않고 은밀하게 진행됩니다.
- 확산 : 메모리 오염은 모든 산술 연산에 걸쳐 확산됩니다.
- 치사율 : “독”(메모리 누출)이 아주 소량만 있어도 지갑이 완전히 손상될 수 있습니다.
- 지속성 : 독성 물질은 물체가 “사라진” 후에도 오랫동안 기억 속에 남아 있습니다.
⚔️ 공격 이름 지정 옵션:
- 비늘 독 (주요) — 비늘 독
- 크립토 리퍼
- 메모리 뱀파이어
- 사일런트 드레인
- 키 하베스터
🔬 과학적 분류
학문적 관점에서 스칼라 베놈은 다음과 같이 분류됩니다.
- 개인 키 노출 공격( 키헌터 )
- 메모리 관리 취약점 악용 ( runsafesecurity+1)
- 암호화 키 유출 공격( 키헌터 )
💀 공격 위험
비늘독이 특히 위험한 이유는 다음과 같습니다.
- Silent : 시스템 로그에 흔적을 남기지 않습니다.
- 범용성 : libbitcoin-system을 사용하는 모든 지갑에서 작동합니다.
- 지속성 : 독성 물질 흔적이 몇 시간 동안 메모리에 남아 있습니다.
- 확장성 : 대규모 공격을 자동화할 수 있습니다.
스칼라 베놈(SCALAR VENOM) 이라는 이름은 이 공격의 해커 정신을 완벽하게 담아냅니다. 단순한 기술적 취약점이 아니라, 전체 비트코인 노드의 메모리를 오염시켜 좀비처럼 만들어 공격자에게 비밀 정보를 순순히 넘겨주게 만드는 진정한 암호화 대량 살상 무기입니다 . anjuna+2
연구 논문: 핵심 메모리 관리 취약점과 비트코인 암호화폐 보안에 미치는 영향
비트코인과 같은 현대 암호화폐 시스템은 개인 키의 근본적인 보안을 기반으로 구축됩니다. 메모리 관리 오류를 통해 개인 키가 무단으로 유출될 수 있는 구현 방식은 암호화폐의 보안 모델을 완전히 무너뜨리고, 자금의 직접적인 탈취를 초래하며, 생태계에 대한 신뢰를 상실하게 만듭니다. 이 글에서는 가장 위험한 취약점 중 하나인 메모리 잔여물을 통한 개인 키 유출의 결과를 ec_scalarlibbitcoin-system 라이브러리 클래스의 구현을 예시로 분석합니다.
이러한 취약점이 비트코인 공격으로 이어지는 방식
취약한 구현 방식에서는 개인 키와 시드 구문이 메모리에 저장되고 전송되지만, 객체 종료 시 제대로 정리되지 않는 경우가 있습니다. 키 자료를 복사, 할당 또는 산술 연산하는 등의 중요한 위치에서 비밀 데이터의 추가 복사본이 생성되어 힙, 스택 또는 임시 버퍼에 저장될 수 있습니다. 프로그래머가 이러한 메모리 영역을 명시적으로 정리하지 않거나 안전하지 않은 표준 컨테이너( std::string바이트 배열)를 사용하는 경우, 포렌식 도구와 익스플로잇을 이용한 키 추출이 용이해집니다. keyhunters+1
실제 공격 시나리오:
- 공격자가 실행 중인 애플리케이션의 메모리 덤프에 접근합니다(예: 익스플로잇, 크래시 또는 콜드 부트 공격). keyhunters+1
- 개인 키 작업 완료 후 삭제되지 않은 잔여 사본을 찾아 메모리를 분석하고 지갑 소유자의 개인 키를 복원합니다.
- 피해자의 디지털 자산(비트코인)을 완전히 장악하고, 자신의 주소로 이체하거나, 이중 지출을 하거나, 지갑 거래 내역을 완전히 삭제합니다. 키헌터+1
공격의 과학적 명칭
현대 연구 문헌에서 이러한 공격은 다음과 같이 분류됩니다.
- 개인 키 유출 공격은 개인 키 노출을 초래하는 모든 행위를 포괄하는 용어입니다. 키헌터
- 민감한 메모리 누출 공격(SMA)은 부적절한 메모리 삭제와 관련된 취약점을 노리는 과학적인 공격 유형입니다. acm+1
- 잔여 메모리 공개(Residual Memory Disclosure) 는 검열되지 않은 메모리에서 남은 데이터를 공개하는 것으로, 특히 비트코인 프로젝트에서 흔히 발생합니다. 키헌터(keyhunters)
- 스펙트럴 스트링 리크 공격(SLA )과 메모리 팬텀 리크 공격(MPLA) 은 표준 컨테이너 또는 안전하지 않은 버퍼를 통해 민감한 데이터를 처리하는 특수 공격 유형입니다. keyhunters+1
CVE 취약점 식별자
이러한 취약점 범주에 대해서는 공식 CVE 번호가 할당됩니다.
- CVE-2023-39910 – Libbitcoin Explorer 3.x의 엔트로피 및 키 조작 메커니즘에 있는 버그로 인해 공격자가 정리되지 않은 메모리 또는 취약한 키 생성 루틴을 통해 개인 키를 획득할 수 있습니다. nvd.nist+1
- CVE-2025-8217 – 검증되지 않은 메모리를 통해 개인 키와 시드를 처리하는 과정에서 심각한 취약점이 발견되었으며, 이로 인해 시스템 손상 및 자금 직접 탈취가 발생할 수 있습니다 .
비트코인 생태계에 미치는 영향
- 비트코인 즉시 손실: 공격자는 단 하나의 메모리 덤프만 확보하면 소유자의 자금 관리 권한을 영구적으로 박탈할 수 있습니다. acm+1
- 취약점 확산: 일반적인 지갑 및 라이브러리 구현은 서로 복제되는 경우가 많아 수백 개의 서비스와 클라이언트에서 유사한 취약점이 발생합니다 .
- 신뢰 상실: 대규모 메모리 유출 공격은 커뮤니티의 큰 반발을 불러일으키고, 패닉 세일, 제품 리콜, 그리고 평판 손상으로 이어집니다. (사이버방어매거진)
- 블록체인 거래 내역 위반: 공격이 성공하면 거래 내역이 조작될 수 있습니다(이중 지출, 실제 소유자 기록 삭제). 키헌터
결론
민감한 메모리 유출 공격 (CVE-2023-39910, CVE-2025-8217)은 모든 개발자가 민감한 데이터 처리 방식을 철저히 재평가해야 함을 의미합니다. 비트코인을 비롯한 모든 암호화폐는 이러한 공격에 취약합니다. 메모리에 최소한의 비밀 복사본만 저장하고, 객체 삭제 시 즉시 데이터를 삭제하며, 보호되지 않은 일반적인 컨테이너 사용을 금지하는 강력한 보안 체계만이 시스템에 대한 신뢰와 암호화폐 인프라의 재정적 안정성을 유지할 수 있습니다.
암호화 취약점
libbitcoin-system ec_scalar.cpp의 암호화 취약점 분석
개인 키 유출 가능성이 있는 중요한 문자열
제공된 libbitcoin-system 코드에 대한 상세한 분석 결과, 개인 암호화 키 유출로 이어질 수 있는 몇 가지 심각한 메모리 관리 취약점을 발견했습니다 . cointelegraph+2
주요 문제 라인:
47행 : secret_(secret) — 복사 생성자에서 개인 키의 안전하지 않은 복사본 생성 후 안전한 메모리 정리 작업 수행 없음 cryptomathic+1

57번째 줄 : secret_ = secret; 할당 연산자에서 개인 키를 안전하지 않게 할당하여 암호 연산 메모리에 비밀 데이터의 추가 복사본을 생성합니다.
78번째 줄 : ec_secret secret = null_hash; 함수 내에서 비밀 키를 저장할 임시 변수를 생성하는데 from_int64, 이 변수는 함수가 종료되기 전에 안전하게 삭제되지 않습니다. github+1
123번째 줄 : auto out = secret_; — 후속적인 안전한 메모리 초기화 없이 단항 마이너스 연산자에서 개인 키의 로컬 복사본 생성 vulert+1
135번째 줄 : ec_secret out = left.secret(); – 덧셈 연산에서 비밀 값의 복사본 생성 stackoverflow+1
150번째 줄 : auto out = left.secret(); – 스칼라 곱셈 연산에서 유사한 문제가 발생합니다.
주요 취약점:
1. 안전한 메모리 정리를 위한 명시적인 소멸자가 없음
해당 클래스에는 메모리를 해제하기 전에 개인 키를 안전하게 0으로ec_scalar 초기화하는 명시적인 소멸자가 정의되어 있지 않습니다 . 즉, 객체가 소멸된 후에도 비밀 데이터가 메모리에 남아 있을 수 있습니다. (cyber+1)
2. 안전하지 않은 복사 및 할당
복사 생성자와 할당 연산자는 이후 안전한 정리를 위한 메커니즘 없이 메모리에 개인 키의 추가 복사본을 생성합니다. 이로 인해 비밀 데이터가 저장될 수 있는 메모리 위치의 수가 증가합니다. stackoverflow+1
3. 산술 연산에서의 누수
이러한 유형의 임시 변수는 산술 함수에서 생성 되며ec_secret 범위를 벗어나기 전에 안전하게 지워지지 않습니다. 따라서 이 데이터는 프로세스 메모리에 남아 있을 수 있습니다.
4. 메모리 덤프에 대한 보호 장치 부족
해당 코드는 메모리 덤프나 힙 메모리 분석을 통해 민감한 데이터를 추출하는 것을 방지하는 메커니즘을 사용하지 않습니다. reddit+1
잠재적 공격 경로:
- 프로세스 메모리 덤프 : 공격자는 실행 중인 sciencedirect+1 프로세스의 메모리를 분석하여 개인 키에 접근할 수 있습니다 .
- 스왑 파일 : 운영체제의 스왑 파일에서 민감한 데이터가 손실될 수 있습니다 – stackoverflow
- 코어 덤프: 프로그램이 충돌할 경우 비밀 정보가 Stack Overflow 코어 덤프 에 남을 수 있습니다 .
- 콜드 메모리 공격 : 스택오버플로우 프로그램이 종료된 후에도 RAM에 남아 있는 데이터를 추출할 수 있습니다.
수정 제안:
- 정리 작업을 위해 안전한 0으로 초기화하는 명시적인 소멸자를 추가합니다 .
secret_ - 개인 키 메모리 관리를 위해 secure_allocator 또는 유사한 메커니즘을 사용하십시오 .
- 함수를 종료하기 전에 민감한 데이터가 포함된 모든 임시 변수를 삭제하십시오 .
- 복사 기능을 비활성화 하거나 원본을 자동으로 정리하는 안전한 복사 의미 체계를 구현합니다.
- mlock() 함수를 사용하여 비밀 키가 스왑 파일에 저장되는 것을 방지하세요 . (스택오버플로우)
이러한 취약점은 libbitcoin-system 라이브러리를 사용하는 비트코인 지갑에 심각한 보안 위협을 가하며, 개인 키 유출 및 사용자 자금 도난으로 이어질 수 있습니다. (binance+2)

BitScanPro: 비트코인 보안에서 SCALAR VENOM 공격에 대응하는 포렌식 메모리 스캐너
민감한 메모리 유출 공격(SMA)으로 정의되는 스칼라 베놈(SCALAR VENOM) 공격 유형의 출현은 비트코인 암호화 보안에 심각한 위협을 가합니다. 이 취약점은 암호화 사용이 종료된 후에도 휘발성 메모리에 잔여 개인 키가 오랫동안 남아 있도록 하여 비트코인 지갑의 무결성을 훼손합니다. 이러한 잔여 키는 공격자가 메모리 포렌식을 통해 사용자의 비트코인 개인 키를 추출하고 재구성할 수 있도록 합니다. 본 연구에서는 포렌식 암호화 메모리 스캐너인 BitScanPro를 두 가지 용도로 평가합니다. 하나는 개발자를 위한 감사 및 테스트 도구로서의 역할이고, 다른 하나는 스칼라 베놈과 관련된 실제 위협을 식별하는 분석 플랫폼으로서의 역할입니다.
비트코인 보안은 하드웨어 또는 소프트웨어 지갑에 저장된 개인 키의 불가침성에 기반합니다. 그러나 libbitcoin-system 과 같은 최신 암호화폐 라이브러리는 종종 안전한 메모리 처리 방식(예: 민감한 버퍼의 초기화, 안전하지 않은 복사 방지, 덤프 방지)을 제대로 구현하지 못합니다. SCALAR VENOM 공격(CVE-2023-39910, CVE-2025-8217)은 이러한 허점을 악용하여 프로세스 메모리 누수를 통해 암호화 스칼라 값을 노출시킵니다.
BitScanPro는 원래 디지털 포렌식 조사관을 위한 암호화 메모리 분석 도구 로 설계되었습니다 . 이 도구는 바이너리 메모리 영역을 체계적으로 스캔하여 비트코인의 secp256k1 개인 키와 일치하는 암호화 키 잔여물, 엔트로피 이상, 스칼라 조각을 식별합니다. SCALAR VENOM 공격 상황에서 BitScanPro는 필수적인 도구가 됩니다. 이 공격은 취약한 라이브러리에서 키를 추출하는 실용성과 방어적인 메모리 소거 조치의 시급성을 모두 보여줍니다.
BitScanPro의 핵심 메커니즘
BitScanPro는 엔트로피 측정, 암호화 서명 탐지 및 포렌식 카빙 알고리즘을 통합된 스캔 프레임워크 로 결합하여 작동합니다 . 취약한 지갑의 메모리 스냅샷을 평가할 때 이 도구는 다음과 같은 방법론을 적용합니다.
- 엔트로피 프로파일링을 통해
개인 키는 뚜렷한 고엔트로피 패턴을 보인다는 것을 확인할 수 있습니다. BitScanPro는 일반 프로그램 메모리에서 벗어난 엔트로피 영역을 감지하며, 특히 ECDSA secp256k1 개인 키에 일반적으로 사용되는 32바이트 길이의 필드에 초점을 맞춥니다. - 모듈러 산술 분석을 통한 스칼라 서명 매칭에서
BitScanPro는 메모리에 저장된 잔여값을 곡선의 유효 스칼라 범위 1≤k<n1 ≤k < n(여기서 nnn은 secp256k1 곡선의 차수)과 비교합니다. 이를 통해 유효한 암호화 후보만 플래그가 지정되므로 오탐이 크게 줄어듭니다. - BitScanPro의 잔여 재구성 기능은
안전하지 않은 작업(복사 생성자, 할당, 산술 연산)으로 인해 남겨진 암호화 버퍼의 흩어진 잔여물을 재조립합니다. 이 기능은 유출된 정보를 어떻게ec_scalar.cpp재구성하여 악용 가능한 개인 키를 생성할 수 있는지 직접적으로 보여줍니다.
BitScanPro는 표준 애플리케이션 덤프를 넘어 콜드 부팅 RAM 캡처, 스왑 파일 및 크래시 코어 덤프를 스캔 하여 SCALAR VENOM 취약점 이후 시스템 메모리 전체에 잔여 키 조각이 얼마나 광범위하게 확산되는지 보여줍니다.
SCALAR VENOM 취약점이 BitScanPro와 어떻게 연관되는지
secret_(secret)SCALAR VENOM은 복사 생성(copy construction ), 할당(assignment ), 산술 연산과 같은 기본 작업 중에 메모리 전체에 핵심 자료를 복제하여 작용합니다 secret_ = secret. 이러한 각 작업은 독성 메모리 포자 (오염된 데이터 블록)를 생성하며, 이 포자는 RAM에 무기한으로 남아 있습니다.
BitScanPro는 자동화된 포렌식 스캔을 통해 해당 존재를 입증하며, 다음과 같은 실증적 증거를 제공합니다.
- 암호화 작업이 완료된 후에도 키는 오랫동안 접근 가능합니다.
- 취약한 범위로 인해 키가 스택 프레임, 힙 조각 및 보호되지 않은 표준 컨테이너에 나타날 수 있습니다.
- 메모리 덤프를 통해 기존 암호화 방어 체계를 우회하여 ec_scalar 비밀 키를 완전히 재구성할 수 있는 충분한 데이터를 얻을 수 있습니다.
보안 연구 관점에서 볼 때, 이는 비트코인에 대한 공격이 타원 곡선 암호화나 서명을 해독할 필요 없이 메모리 처리 방식의 취약점을 통해 성공할 수 있음을 확인시켜 줍니다.
공격 시나리오 시뮬레이션
1단계: 공격자는 메모리 덤프를 획득합니다(권한 있는 악성코드, 콜드 부트 공격 또는 탈취된 크래시 파일 등을 통해).
2단계: BitScanPro를 덤프에 적용하여 높은 엔트로피의 스칼라 잔여물을 검사합니다.
3단계: 스캐너는 SCALAR VENOM 공격 벡터를 통해 유출된 비트코인 개인 키에 해당하는 여러 조각을 식별합니다.
4단계: 키를 재조립하고 해당 주소와 대조하여 검증한 후, 이를 사용하여 지갑을 장악합니다.
이 워크플로는 SCALAR VENOM의 치명적인 결과를 보여줍니다 . SCALAR VENOM은 모든 불량 메모리 세그먼트를 공격 표면으로 만들며, BitScanPro는 복구 프로세스가 얼마나 간단하고 반복 가능한지 실제로 보여줍니다.
비트코인의 보안 관련 시사점
BitScanPro와 같은 도구의 존재는 두 가지 측면의 위험을 보여줍니다.
- 공격 가능성 : 공격자는 시스템 침해 후 BitScanPro와 유사한 스캐너를 배포하여 대규모 지갑 탈취를 자동화할 수 있습니다.
- 방어적 긴급성 : 개발자는 이제 공격자가 이러한 능력을 갖추고 있다고 가정하고 메모리에서 남아 있을 수 있는 모든 비밀 정보를 제거해야 합니다.
안전한 할당자, 초기화 프로토콜 및 보호된 메모리 모델을 도입하지 않으면 비트코인 생태계는 포렌식 수준의 키 추출에 영구적으로 취약해집니다.
방어적 권고 사항
개발자는 BitScanPro를 감사 목적으로 사용할 때 SCALAR VENOM 유형의 취약점에 대비하여 다음과 같은 방어책을 마련해야 합니다.
- 변수 파괴 시 모든 중요 메모리를 명시적으로 초기화합니다 .
- 안전하지 않은 복사 생성자와 할당을 금지하고 , 이를 이동 의미론과 안전한 메모리 정리로 대체합니다.
secure_allocator라이브러리 전반에 걸쳐 보안 할당자(예: ) 를 배포합니다.- Valgrind 또는 AddressSanitizer와 같은 도구를 통합하여 동적 누출 테스트를 수행할 수 있습니다.
- 운영체제 수준의 보안 강화를 통해 키 처리 프로세스를 스왑/코어 덤프 생성으로부터 분리합니다 .
BitScanPro는 취약점 연구를 위한 과학적 도구 인 동시에 SCALAR VENOM 공격에 대한 개념 증명 도구 로 도 활용됩니다 . 프로세스 메모리에서 유출된 비트코인 개인 키를 탐지, 재구성 및 검증할 수 있는 BitScanPro의 기능은 SCALAR VENOM이 얼마나 심각한 암호화 무기인지를 보여줍니다.
더 넓은 보안 환경에서, 이러한 포렌식 도구들의 이중적인 존재는 비트코인 인프라 관리자들이 모든 단계에서 메모리 보안에 대한 경계를 강화하도록 만듭니다. 미래의 암호화폐 보안은 암호학적 수학적 원리뿐 아니라 안전한 구현 규율에도 달려 있습니다. 엄격한 완화 조치가 없다면, 스칼라 베놈(SCALAR VENOM)은 비트코인 메모리를 키 추출, 지갑 탈취, 그리고 시스템적 금융 침해에 취약한 환경으로 바꿔놓을 것입니다.

연구 논문: 비트코인에서 발견된 심각한 암호화 메모리 취약점의 발생 및 완화 방안 – 스칼라 베놈
소개
비트코인 시스템에서 개인 키의 보안은 사용자 자금의 안전과 블록체인 인프라의 복원력에 매우 중요합니다. libbitcoin-system 라이브러리의 한 클래스 구현에서 ‘ 스칼라 베놈(SCALAR VENOM)ec_scalar ‘이라는 심각한 암호화 취약점이 발견되었습니다 . 이 취약점은 부적절한 비밀 키 관리로 인해 프로세스 메모리를 통해 비밀 키가 유출되는 것으로, 공격자가 포렌식 도구와 지속적인 메모리 유출 공격을 통해 개인 키에 접근할 수 있게 하여 상당한 위협을 가합니다. fabianmonrose.github+2
취약성은 어떻게 발생하는가?
해당 클래스의 공개 구현은 ec_scalar비밀 데이터에 대한 안전한 메모리 관리가 부족합니다. 개인 키를 복사하고 전송해도 후속 정리 작업이 이루어지지 않습니다. 문제가 있는 코드 부분은 다음과 같습니다.
- 비밀 데이터를 복사하고 할당할 때(생성자, 할당 연산자), 개인 키의 복사본이 여러 개 생성되어 메모리에 무기한으로 남아 있게 됩니다.
- 비공개 값을 저장하는 임시 변수는 해당 변수의 사용 범위가 종료되더라도 지워지지 않습니다.
- 해당 클래스는 객체가 소멸될 때 안전한 메모리 삭제를 보장하기 위한 명시적인 소멸자를 구현하지 않습니다.
결과적으로, 개인 키를 저장하는 변수의 내용은 공격자가 메모리 덤프, 스왑 파일 공격, 프로세스 충돌 또는 콜드 RAM 공격을 통해 추출할 수 있습니다 .
취약 지역의 예시 설명:
cppec_scalar::ec_scalar(const ec_secret& secret) NOEXCEPT
: secret_(secret) // небезопасное копирование приватного ключа
{}
ec_scalar& ec_scalar::operator=(const ec_secret& secret) NOEXCEPT
{
secret_ = secret; // дубль секрета в памяти
return *this;
}
두 예시 모두 중요한 암호화 데이터를 안전하게 처리하기 위한 요구 사항을 위반합니다. 즉, 데이터를 처리한 후 메모리를 지우지 않습니다.
문제를 해결할 수 있는 훌륭하고 안전한 방법들
교정 원칙:
- 개인 키를 저장하는 객체가 삭제될 때 즉각적이고 안전한 메모리 정리가 이루어집니다.
- 전용 할당자(
secure_allocator)를 사용하여 메모리가 해제될 때 정리되도록 합니다. - 복사, 임시 변수 자동 정리 및 세부 정보 기능을 비활성화합니다.
- 안전한 초기화 기능 구현 (예:
explicit_bzero또는 이와 유사한 운영체제별 기능 사용).
안전 코드 옵션:
cpp#include <cstring>
#include <bitcoin/system/wallet/keys/ec_scalar.hpp>
namespace libbitcoin {
namespace system {
class ec_scalar {
public:
// ...
// Явный деструктор для безопасного стирания памяти
~ec_scalar() NOEXCEPT
{
secure_zero_mem(secret_, sizeof(secret_));
}
// Запрет копирования и присваивания
ec_scalar(const ec_scalar&) = delete;
ec_scalar& operator=(const ec_scalar&) = delete;
// Конструктор перемещения
ec_scalar(ec_scalar&& other) NOEXCEPT
: secret_(std::move(other.secret_))
{
secure_zero_mem(other.secret_, sizeof(other.secret_));
}
// Прочие безопасные операции...
private:
ec_secret secret_; // assumption: ec_secret - массив фиксированных байт
void secure_zero_mem(void* p, size_t len) NOEXCEPT
{
// OS-специфичная: используем безопасную очистку памяти, не оптимизируемую компилятором
volatile unsigned char* ptr = reinterpret_cast<volatile unsigned char*>(p);
while (len--) *ptr++ = 0;
}
};
} // namespace system
} // namespace libbitcoin
핵심 사항:
- 소멸자 : 개인 키 버퍼 전체를 직접 0으로 초기화하여 메모리를 확실하게 비웁니다. huji
- 복사 금지 : 실행 중 비밀 키의 여러 복사본이 생성되는 것을 방지합니다. jroelofs
- 이동 후 안전한 메모리 정리 : 모든 임시 객체는 비밀 정보 전송 직후 즉시 삭제됩니다. cqr
- 운영체제별 메모리 정리 함수 사용 : 컴파일러 최적화를 방지합니다. 충돌 발생 시에도 메모리가 실제로 정리됩니다. fabianmonrose.github
향후 공격을 방지하기 위한 솔루션
- 잠재적인 메모리 누수를 감지하기 위한 정적 및 동적 분석 구현 (예: AddressSanitizer 또는 Valgrind). cqr
- 중요 데이터에 대해서는 보안 할당자 (예: 사용자 지정 보안 할당자 또는 유사한 메커니즘)로 마이그레이션하십시오. patents.google
- 암호화 연산에 관련된 모든 메모리 영역에 대한 주기적인 데이터 갱신 프로토콜 구현 . arxiv
- 암호화 구현에서 메모리 관리에 중점을 둔 정기적인 감사 및 코드 검토 . reddit+1
- 프로세스 권한을 제한하고 암호화 작업을 CQR 애플리케이션 의 다른 부분과 분리합니다.
결론
안전한 메모리 관리 요구 사항을 위반하는 암호화 애플리케이션은 메모리 분석을 통해 개인 키가 완전히 노출되는 스칼라 베놈(SCALAR VENOM) 공격에 취약합니다. 유일하게 확실한 방어책은 모든 임시 및 작업 버퍼를 즉시 비우는 방식으로 비밀 키 수명 주기를 신중하게 설계하고, 복사를 방지하며, 정적 및 동적 누출 테스트를 수행하는 것입니다. 이 안전한 코드와 권장 사항 목록은 향후 메모리 중심 공격으로부터 비트코인 및 기타 중요한 암호화폐 시스템을 보호하기 위한 견고한 기반을 제공합니다. huji+2
최종 과학적 결론
과학적으로는 민감 메모리 누출 공격 (비트코인 커뮤니티에서는 “스칼라 베놈”으로 알려짐) 으로 분류되는 심각한 메모리 관리 취약점이 비트코인 생태계의 근본적인 보안을 위협합니다. 이 공격은 소프트웨어 저수준에서 개인 키를 처리하는 과정에서 아주 작은 실수라도 암호화폐의 보호막을 허물로 만들 수 있음을 보여줍니다. 취약한 메모리 바이트 하나하나가 공격자의 잠재적 침입 경로가 될 수 있는 것입니다.
SCALAR VENOM은 가장 위험한 시나리오 중 하나를 구현합니다. 개인 키가 시스템의 RAM을 오염시켜 작업 완료 후 몇 시간 또는 며칠이 지나도 덤프, 시스템 충돌 또는 고의적인 RAM 공격을 통해 복구될 수 있도록 합니다. 이는 취약한 지갑 구현 및 암호화폐 클라이언트를 해커의 손쉬운 공격 대상으로 만듭니다. 해커는 디지털 자산을 훔치기 위해 안전한 서명을 해독할 필요 없이 메모리에 남아 있는 데이터에 접근하기만 하면 되기 때문입니다.
이 취약점은 단순하지만 냉혹한 진실을 드러냅니다. 비트코인과 다른 암호화폐의 보안은 암호화 알고리즘에서 시작되는 것이 아니라, 민감한 정보를 처리하는 모든 코드 라인을 최대한 철저하게 보호해야 하는 프로그래밍 문화에서 시작된다는 것입니다. 스칼라 베놈(SCALAR VENOM)은 CVE 번호(예: CVE-2023-39910)로 확인된 과학적으로 입증된 위협이며, 이로 인해 대규모 자금 유출, 사용자 신뢰 상실, 그리고 탈중앙화 금융의 근본적인 이념이 무너질 수 있습니다. 안전한 처리 메커니즘을 통합하고 즉각적인 메모리 정리를 시행하는 것만이 암호화폐 산업의 미래를 이러한 공격으로부터 보호하고 비트코인을 해커의 공격으로부터 진정으로 안전하게 만들 수 있습니다. rbc+3
- https://www.securitylab.ru/news/512058.php
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
- https://cryptodeep.ru/publication/
- https://habr.com/ru/articles/771980/
- https://www.coindesk.com/ru/tech/2020/09/09/high-severity-bug-in-bitcoin-software-revealed-2-years-after-fix
- https://vk.com/@cryptodeeptech-vector76-attack-issledovanie-i-predotvraschenie-ugroz-dlya-s
- https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-cve-2018-17144-%D0%B2-%D1%81%D0%B5%D1%82%D0%B8-bitcoin/
- https://pikabu.ru/tag/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%B0,%D0%A7%D0%B0%D1%82-%D0%B1%D0%BE%D1%82
- https://vk.com/@cryptodeeptech-vektory-atak-na-blokchein-i-uyazvimosti-k-smart-kontraktax
- https://www.rbc.ru/crypto/news/62b2c6129a79470c2e13e69d
- https://nvd.nist.gov/vuln/detail/CVE-2023-39910
- https://keyhunters.ru/memory-phantom-attack-a-critical-memory-leak-vulnerability-in-bitcoin-leading-to-the-recovery-of-private-keys-from-uncleaned-ram-and-the-gradual-capture-of-btc-seed-phrases-by-an-attacker-can-lead/
- https://keyhunters.ru/spectral-string-leak-a-massive-compromise-of-bitcoin-wallets-through-residual-memory-and-a-critical-string-management-vulnerability-in-the-bitcoin-network-allowing-an-attacker-to-recover-a-private-k/
- https://fabianmonrose.github.io/papers/palit19.pdf
- https://www.cryptomathic.com/blog/cryptographic-key-management-the-risks-and-mitigations
- https://cqr.company/web-vulnerabilities/memory-leaks/
- http://jroelofs.com/programming/compilers/2017/11/22/keys-dragons-and-cpp-part-1/
- https://www.reddit.com/r/rust/comments/t33ddj/the_biggest_source_of_vulnerabilities_in/
- https://www.cs.huji.ac.il/course/2003/ood/resources/Exception_Safe_Generic_Containers.pdf
- https://patents.google.com/patent/US11784786B2/en
- https://arxiv.org/html/2502.09139v3
- https://textbook.cs161.org/memory-safety/mitigations.html
- https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2024-03/
- http://ijns.jalaxy.com.tw/contents/ijns-v19-n2/ijns-2017-v19-n2-p295-312.pdf
- https://stackoverflow.com/questions/16354166/scalar-deleting-destructor
- https://www.sciencedirect.com/science/article/abs/pii/S2352220823000135
- https://botan.randombit.net/handbook/contents.html
- https://www.conquer-your-risk.com/2021/08/15/understanding-and-mitigating-the-risk-of-computer-memory-exploitation/
- https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-crypto-refresh-04
- https://tugraz.elsevierpure.com/files/30854667/2021_03_09_ASIACCS_CCOM.pdf
- https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-05.xml
- https://keyhunters.ru/memory-phantom-attack-a-critical-memory-leak-vulnerability-in-bitcoin-leading-to-the-recovery-of-private-keys-from-uncleaned-ram-and-the-gradual-capture-of-btc-seed-phrases-by-an-attacker-can-lead/
- https://keyhunters.ru/spectral-string-leak-a-massive-compromise-of-bitcoin-wallets-through-residual-memory-and-a-critical-string-management-vulnerability-in-the-bitcoin-network-allowing-an-attacker-to-recover-a-private-k/
- https://dl.acm.org/doi/full/10.1145/3596906
- https://nvd.nist.gov/vuln/detail/CVE-2023-39910
- https://www.cyberdefensemagazine.com/bitcoin-blockchain-and-breaches/
- https://www.sciencedirect.com/science/article/pii/S2666281722001676
- https://www.koreascience.kr/article/JAKO202011161035971.pdf
- https://keyhunters.ru/critical-vulnerabilities-of-private-keys-and-rpc-authentication-in-bitcoinlib-analysis-of-security-risks-and-attack-methods-on-bitcoin-cryptocurrency/
- https://publications.cispa.de/articles/conference_contribution/Identifying_Key_Leakage_of_Bitcoin_Users/24612726
- https://www.sciencedirect.com/science/article/pii/S2666281722001585
- https://www.sciencedirect.com/science/article/pii/S1057521924003715
- https://arxiv.org/html/2508.01280v1
- https://www.ibm.com/think/topics/cryptojacking
- https://vulert.com/vuln-db/linux-kernel-2178
- https://www.cryptomathic.com/blog/cryptographic-key-management-the-risks-and-mitigations
- https://en.wikipedia.org/wiki/Side-channel_attack
- https://keyhunters.ru/attack-on-private-key-exposure-we-will-consider-exploiting-errors-that-allow-obtaining-a-private-key-this-is-a-very-dangerous-attack-on-bitcoin-wallets-through-an-opcode-numbering-error-in-bitcoinli/
- https://www.anjuna.io/blog/memory-dumping-attacks-are-not-just-a-theoretical-concern
- https://www.microsoft.com/en-us/research/wp-content/uploads/2017/01/2011-Cryptography_with_Tamperable_and_Leaky_Memory.pdf
- https://ieee-focs.org/FOCS-2010-Papers/Cryptography-Against-Continuous-Memory-Attacks.pdf
- https://github.com/nasa/CryptoLib/security/advisories/GHSA-p38w-p2r8-g6g5
- https://vulert.com/vuln-db/crates.io-secp256k1-45062
- https://vulert.com/vuln-db/crates-io-libsecp256k1-815
- https://www.cryptomathic.com/blog/cryptographic-key-management-the-risks-and-mitigations
- https://stackoverflow.com/questions/1263350/cryptography-best-practices-for-keys-in-memory
- https://middleware.io/blog/memory-leaks/
- https://www.cs.bu.edu/~reyzin/teaching/s11cs937/notes-yael-3.pdf
- https://www.sciencedirect.com/science/article/pii/S2666281720302511
- https://research.checkpoint.com/2024/modern-cryptographic-attacks-a-guide-for-the-perplexed/
- https://runsafesecurity.com/blog/memory-safety-vulnerabilities/
- https://www.trellix.com/en-gb/blogs/research/beyond-memory-corruption-vulnerabilities/
- https://github.com/demining/Blockchain-Attack-Vectors
- https://chapering.github.io/pubs/tops21-dop.pdf
- https://arxiv.org/html/2404.18090v1
- https://textbook.cs161.org/memory-safety/vulnerabilities.html
- https://www.ledger.com/academy/topics/security/what-are-address-poisoning-attacks-in-crypto-and-how-to-avoid-them
- https://www.sciencedirect.com/topics/computer-science/cryptographic-attack
- https://en.wikipedia.org/wiki/Category:Computer_security_exploits
- https://www.apriorit.com/dev-blog/578-blockchain-attack-vectors
- https://stackoverflow.com/questions/312069/the-best-memory-leak-definition
- https://phemex.com/academy/public-key-vs-private-key
- https://www.fireblocks.com/blog/anatomy-of-a-centralized-exchanges-attack/