Bitcoin Core 29.2 출시
FillBlock 관련 P2P 수정 두 건이 Bitcoin Core 29.2에 담겼다. witness 변조 검사(#32646)와 호출 전 빈 헤더 검사(#33296)다. 리오그 때 TRUC 검사는 더 이상 강제하지 않고(#33504), getblock과 getblockheader는 체인 끝의 target을 반환하지 않는다(#33446).
Bitcoin Core
공식 출처에서 수집한 모든 기사.
기사 141건
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
공격자가 로컬 네트워크에서 UPnP 장치로 가장해 부풀린 M-SEARCH 응답을 보내면 Bitcoin Core 노드의 메모리가 바닥날 수 있었다. 이 라이브러리는 기본적으로 꺼져 있어 -miniupnp로 시작한 노드만 노출됐다. 심각도 ‘낮음’인 이 버그는 v22.0에서 수정됐다.
Bitcoin Core
addr 메시지 스팸만으로 Bitcoin Core 노드를 다운시킬 수 있었다. addrman 삽입이 2^32회에 이르면 32비트 ID 카운터가 오버플로해 assertion에 걸렸다. Eugene Siegel이 2021년 제보한 심각도 ‘높음’ 버그로, Pieter Wuille의 수정이 v22.0에 들어갔다.
Bitcoin Core
Bitcoin Core 26.2는 서명할 때 TapMiniscript가 정상이라고 가정하지 않는다(#29853). getnetworkhashps는 잘못된 매개변수에 오류를 내고(#28554), setmocktime에는 최댓값이 강제된다(#29869). miniupnpc 2.2.8로도 빌드된다.
Bitcoin Core
version 메시지 처리의 버그 두 건, 즉 부호 있는 정수 오버플로와 abs64 논리 오류를 이용하면 피해 노드의 조정 시간을 틀어지게 해 새 블록을 너무 먼 미래 것으로 거부하게 만들 수 있었다. 공격자는 먼저 접속한 피어 200곳 안에 들어야 했다. 심각도 ‘중간’으로, Bitcoin Core 0.21.0에서 수정됐다.
Bitcoin Core
IPv6 덕에 Bitcoin Core의 무제한 차단 목록을 적은 비용으로 불릴 수 있었고, GETADDR 메시지가 오면 반환할 주소(최대 2500개)마다 그 목록을 훑어야 했다. 심각도 ‘높음’인 메모리 크래시와 CPU 소모는 #19219로 함께 해결됐으며 0.20.1과 0.21.0에 포함됐다.
Bitcoin Core