CVE-2025-46598: 미확인 트랜잭션 처리로 인한 CPU DoS
조작된 비표준 트랜잭션 하나로 Bitcoin Core 노드를 몇 초씩 묶어 둘 수 있었고, 보낸 쪽은 연결이 끊기지도 않았다. 공격자가 블록 전파를 늦추는 데 쓸 수 있는 수법이다. 심각도 ‘낮음’인 CVE-2025-46598은 Antoine Poinsot가 제보했으며, v30.0이 최악의 경우 검증 시간을 줄여 완화했다.
Bitcoin Core
비트코인의 참조 구현. 공식 사이트에 릴리스 발표, 보안 공지, 프로젝트 성명이 게시됩니다.
기사 119건
조작된 비표준 트랜잭션 하나로 Bitcoin Core 노드를 몇 초씩 묶어 둘 수 있었고, 보낸 쪽은 연결이 끊기지도 않았다. 공격자가 블록 전파를 늦추는 데 쓸 수 있는 수법이다. 심각도 ‘낮음’인 CVE-2025-46598은 Antoine Poinsot가 제보했으며, v30.0이 최악의 경우 검증 시간을 줄여 완화했다.
Bitcoin Core
1GB가 넘는 블록은 32비트 Bitcoin Core 노드의 크기 검사를 오버플로시켜 디스크 기록 단계에서 노드를 다운시킬 수 있었다. 다만 컴팩트 블록으로 전달돼야 하고, 피해 노드가 -maxmempool을 3GB 넘게 설정한 채 1GB어치 트랜잭션을 들고 있어야 한다. Pieter Wuille가 발견한 CVE-2025-46597의 심각도는 ‘낮음’이며, 29.1과 30.0이 32비트 시스템의 -maxmempool에 상한을 둬 막았다.
Bitcoin Core
최소 수수료율 기본값이 Bitcoin Core 28.3에서 내려갔다. -blockmintxfee는 kvB당 1사토시, -minrelaytxfee와 -incrementalrelayfee는 kvB당 100사토시다. 지갑 수수료율은 그대로이고, 새 기본값이 네트워크에 퍼지지 않으면 더 싼 트랜잭션은 전파되지 않을 수 있다. 화이트리스트 권한은 어니언 인바운드 연결에 더는 적용되지 않는다(#33395).
Bitcoin Core
FillBlock 관련 P2P 수정 두 건이 Bitcoin Core 29.2에 담겼다. witness 변조 검사(#32646)와 호출 전 빈 헤더 검사(#33296)다. 리오그 때 TRUC 검사는 더 이상 강제하지 않고(#33504), getblock과 getblockheader는 체인 끝의 target을 반환하지 않는다(#33446).
Bitcoin Core
OP_RETURN 제한이 Bitcoin Core 30.0에서 사실상 사라졌다. -datacarriersize 기본값은 100,000이고 트랜잭션 하나에 데이터 출력을 여러 개 넣을 수 있으며, -datacarriersize=83으로 옛 상한을 되살릴 수 있다. 기본 릴레이 수수료율은 vB당 0.1사토시로 내려갔고 표준 트랜잭션의 레거시 서명 연산은 2500개로 제한된다. 기존 실행 파일들을 감싸는 bitcoin 명령도 새로 생겼다.
Bitcoin Core
디스크에 무조건 기록하던 로그가 Bitcoin Core 29.1부터 소스 위치별로 시간당 1MiB로 제한된다(#32604). 표준 트랜잭션에 담을 수 있는, 실행될 가능성이 있는 레거시 서명 연산은 최대 2500개다. 기본 릴레이 수수료율은 kvB당 100사토시로 내려갔고, 32비트 빌드는 -maxmempool을 500MB, -dbcache를 1GiB로 묶는다.
Bitcoin Core
Bitcoin Core 28.2 변경 사항의 절반 남짓은 빌드 작업이다. 이제 Guix가 macOS 앱 번들을 공증하고 macOS·Windows 바이너리 전부에 코드 서명을 한다(#31407). depends에는 NetBSD용 libevent(#31500)와 cmake 환경의 freetype(#32693) 컴파일 수정이 들어갔다.
Bitcoin Core
Bitcoin Core 기여자 31명이 공동 서한을 내고, 경제적 수요가 꾸준하고 블록에 안정적으로 포함되는 트랜잭션의 릴레이를 노드 소프트웨어가 거부해서는 안 된다고 밝혔다. 사용자와 채굴자가 그런 필터를 우회할 수 있기 때문이다. 이들은 비금융 데이터 사용을 지지한다는 뜻이 아니며, 어떤 소프트웨어와 정책을 쓸지는 오직 사용자가 고를 일이라고 강조했다.
Bitcoin Core
addr 스팸을 몇 년이고 쉬지 않고 보내면 Bitcoin Core 주소 관리자의 32비트 식별자가 오버플로해 노드가 다운될 수 있었다. v22.0의 속도 제한으로 일차 차단했던 공격의 남은 부분이다. 29.0이 식별자를 64비트로 바꿔 CVE-2024-52919(심각도 ‘낮음’)를 막았다. Eugene Siegel이 발견하고 Martin Zumsande가 수정했다.
Bitcoin Core
UPnP 지원이 Bitcoin Core 29.0에서 빠졌다. -natpmp는 libnatpmp 대신 내장 PCP·NAT-PMP 구현으로 돌아간다. 새 정책으로 임시 더스트(ephemeral dust)가 도입됐고, 블록 가중치가 이중으로 예약되던 문제를 고치면서 -blockreservedweight가 추가됐다. 노드는 고아 트랜잭션을 알린 모든 피어에 누락된 부모를 요청한다. 26.x 이하 버전은 유지보수가 끝난다.
Bitcoin Core
-port를 지정하면 Bitcoin Core 28.1은 메인넷 기본 어니언 수신 포트를 8334로 고정하지 않고 그 포트에 1을 더해 정한다. 로컬 노드 여러 대를 시작 충돌 없이 다시 나란히 돌릴 수 있게 됐다. torrc에 HiddenServicePort를 직접 적어 뒀다면 고쳐야 할 수도 있다. DecodeExtKey에서는 비밀 데이터를 지운다(#31166).
Bitcoin Core
블록을 알린 뒤 전송을 멈추는 피어 때문에 Bitcoin Core 노드가 다른 곳에 요청하기까지 최대 10분을 기다릴 수 있었고, 공격자는 이 수법을 되풀이할 수 있었다. Greg Sanders가 제보하고 수정한 CVE-2024-52922(심각도 ‘중간’)는 v25.1과 v26.0에서 완화됐다. 두 버전은 고대역폭 컴팩트 블록 피어 최대 3곳에 블록을 곧바로 요청할 수 있다.
Bitcoin Core
자기 연결 감지의 경쟁 상태가 Bitcoin Core 27.2에서 해소됐고(#30394), FillPSBT 호출이 complete=true를 잘못 반환하던 문제도 바로잡혔다(#30357). 블록 로드 스레드와 스케줄러의 종료 순서가 바뀌었으며(#30435), miniupnpc 2.2.8과 GCC 15로 빌드된다.
Bitcoin Core
v25.0 이전 Bitcoin Core에서는 한 피어가 보낸 변조 블록이 같은 블록을 알린 다른 피어들의 다운로드 상태까지 지워, 노드가 재구성 중이던 컴팩트 블록을 잊어버릴 수 있었다. Suhas Daftuar가 문제를 발견했고, #27608이 피어별로 자기 상태만 건드리도록 제한했다. CVE-2024-52921의 심각도는 ‘중간’이다.
Bitcoin Core
v25.0 이전 Bitcoin Core 노드는 한 블록에 대해 blocktxn 메시지를 거듭 받으면 FillBlock이 한 번만 실행된다는 assertion에 걸려 원격으로 다운될 수 있었다. 쇼트 ID 충돌도 필요 없었다. 블록 머클 루트에 없는 트랜잭션을 넣으면 같은 경로에 닿았다. 심각도 ‘높음’인 이 버그 CVE-2024-35202는 Niklas Gögge가 찾아내 수정했다.
Bitcoin Core
2023년 5월 초 네트워크 활동이 폭증하고 스파이 노드가 이를 부추기면서 블록과 트랜잭션 전파가 느려졌다. 비대해진 inv-to-send 집합을 정렬하는 데 P2P 스레드 시간이 거의 다 들어간 탓이다. 심각도 ‘중간’인 이 문제는 Bitcoin Core v25.0의 #27610으로 해결됐다. 멤풀에서 사라진 트랜잭션을 더 일찍 빼고, 집합이 커질수록 더 빠르게 비운다.
Bitcoin Core
Testnet4(BIP94)가 Bitcoin Core 28.0에 들어왔다. 1부모 1자녀 쌍에 한정한 패키지 릴레이, BIP 431의 표준 TRUC 트랜잭션, 새 출력 유형 Pay To Anchor도 함께다. -mempoolfullrbf 기본값은 1이 됐고, 27.0에서 폐지 예고된 libbitcoinconsensus는 제거됐다.
Bitcoin Core
v24.0.1 이전 Bitcoin Core 노드는 저난이도 헤더 체인으로 원격 크래시가 가능했고, 조작한 체인 하나를 네트워크의 어느 노드에든 재사용할 수 있었다. #25717의 수정으로 노드는 체인을 저장하기 전 작업량이 충분한지 확인하며, 알려진 공격을 막으려고 체크포인트에 기대던 관행도 끝났다. 심각도는 ‘높음’이다.
Bitcoin Core
addr 메시지 스팸만으로 Bitcoin Core 노드를 다운시킬 수 있었다. addrman 삽입이 2^32회에 이르면 32비트 ID 카운터가 오버플로해 assertion에 걸렸다. Eugene Siegel이 2021년 제보한 심각도 ‘높음’ 버그로, Pieter Wuille의 수정이 v22.0에 들어갔다.
Bitcoin Core
공격자가 로컬 네트워크에서 UPnP 장치로 가장해 부풀린 M-SEARCH 응답을 보내면 Bitcoin Core 노드의 메모리가 바닥날 수 있었다. 이 라이브러리는 기본적으로 꺼져 있어 -miniupnp로 시작한 노드만 노출됐다. 심각도 ‘낮음’인 이 버그는 v22.0에서 수정됐다.
Bitcoin Core