Bitcoin Core 27.2 출시
자기 연결 감지의 경쟁 상태가 Bitcoin Core 27.2에서 해소됐고(#30394), FillPSBT 호출이 complete=true를 잘못 반환하던 문제도 바로잡혔다(#30357). 블록 로드 스레드와 스케줄러의 종료 순서가 바뀌었으며(#30435), miniupnpc 2.2.8과 GCC 15로 빌드된다.
Bitcoin Core
비트코인 소프트웨어를 만드는 사람들이 내놓는 릴리스, 보안 공지, 프로토콜 작업.
기사 121건
자기 연결 감지의 경쟁 상태가 Bitcoin Core 27.2에서 해소됐고(#30394), FillPSBT 호출이 complete=true를 잘못 반환하던 문제도 바로잡혔다(#30357). 블록 로드 스레드와 스케줄러의 종료 순서가 바뀌었으며(#30435), miniupnpc 2.2.8과 GCC 15로 빌드된다.
Bitcoin Core
v25.0 이전 Bitcoin Core 노드는 한 블록에 대해 blocktxn 메시지를 거듭 받으면 FillBlock이 한 번만 실행된다는 assertion에 걸려 원격으로 다운될 수 있었다. 쇼트 ID 충돌도 필요 없었다. 블록 머클 루트에 없는 트랜잭션을 넣으면 같은 경로에 닿았다. 심각도 ‘높음’인 이 버그 CVE-2024-35202는 Niklas Gögge가 찾아내 수정했다.
Bitcoin Core
Testnet4(BIP94)가 Bitcoin Core 28.0에 들어왔다. 1부모 1자녀 쌍에 한정한 패키지 릴레이, BIP 431의 표준 TRUC 트랜잭션, 새 출력 유형 Pay To Anchor도 함께다. -mempoolfullrbf 기본값은 1이 됐고, 27.0에서 폐지 예고된 libbitcoinconsensus는 제거됐다.
Bitcoin Core
공격자가 로컬 네트워크에서 UPnP 장치로 가장해 부풀린 M-SEARCH 응답을 보내면 Bitcoin Core 노드의 메모리가 바닥날 수 있었다. 이 라이브러리는 기본적으로 꺼져 있어 -miniupnp로 시작한 노드만 노출됐다. 심각도 ‘낮음’인 이 버그는 v22.0에서 수정됐다.
Bitcoin Core
Bitcoin Core 26.2는 서명할 때 TapMiniscript가 정상이라고 가정하지 않는다(#29853). getnetworkhashps는 잘못된 매개변수에 오류를 내고(#28554), setmocktime에는 최댓값이 강제된다(#29869). miniupnpc 2.2.8로도 빌드된다.
Bitcoin Core
공격자는 GETDATA 응답을 보류한 뒤 가짜 알림을 쏟아부어 5만 항목짜리 g_already_asked_for 맵에서 해당 트랜잭션을 밀어내고, 같은 트랜잭션을 거듭 알려 피해 노드가 다른 피어에 요청하지 못하게 막을 수 있었다. John Newbery가 공개한 이 버그의 심각도는 ‘중간’이며, Pieter Wuille의 #19988이 Bitcoin Core 0.21.0에서 고쳤다.
Bitcoin Core
무효지만 검증 비용이 큰 고아 트랜잭션을 조작해 보내면 노드를 몇 시간씩 멈출 수 있었다. 새 트랜잭션이 승인될 때마다 고아 캐시를 이차 시간으로 탐색했기 때문이다. Pieter Wuille의 #15644는 일치 항목이 나오면 작업을 끊고 새 메시지부터 처리하게 한다. 심각도 ‘높음’ 수정은 Bitcoin Core 0.18.0으로 사용자에게 전달됐다.
Bitcoin Core
악성 BIP72 결제 링크를 열면 Bitcoin-Qt가 죽을 수 있었다. r 매개변수가 거대한 파일을 가리키면 백그라운드에서 조용히 내려받는 동안 앱이 그만큼 메모리를 할당하려 들었다. 심각도 ‘중간’인 이 버그는 #17165가 BIP70 지원을 제거하면서 사라졌고, 이 변경은 0.20.0에 실렸다.
Bitcoin Core
제네시스 블록에 바로 이어 붙인 난이도 1짜리 헤더가 Bitcoin Core 0.12.0부터 0.15.0 전까지 체크포인트 로직을 빠져나갔다. 스패머가 mapBlockIndex를 끝없이 키워 메모리 부족으로 노드를 다운시킬 수도 있었다. 심각도 ‘중간’인 이 버그는 Cory Fields가 2017년 제보했고 #11028로 막혔다.
Bitcoin Core
Bitcoin Core 0.10.1 이전에는 수신 메시지가 32MiB까지 허용돼, 공격자가 연결마다 그만큼 RAM을 할당시켜 노드를 다운시킬 가능성이 있었다. Bitcointalk 사용자 Evil-Knievel이 제보했고, #5843이 한도를 2MiB로 낮췄다가 이후 SegWit을 위해 4MB로 올렸다. 2015년으로 예고된 공개는 미뤄졌고, 세부 내용은 2024년에야 나왔다.
Bitcoin Core
Wladimir J. Van Der Laan이 miniupnpc에서 두 번째 버퍼 오버플로를 찾아냈다. 데이터가 새는 이 버그는 CVE-2015-6031과 엮으면 원격 코드 실행으로 이어질 수 있었고, 그는 Ubuntu의 miniupnpc 1.6-precise를 상대로 이를 시연했다. 해당 익스플로잇이 Bitcoin Core에 그대로 통하지는 않았으며, 수정은 2016년 2월 0.12 버전에 실렸다.
Bitcoin Core
IPv6 덕에 Bitcoin Core의 무제한 차단 목록을 적은 비용으로 불릴 수 있었고, GETADDR 메시지가 오면 반환할 주소(최대 2500개)마다 그 목록을 훑어야 했다. 심각도 ‘높음’인 메모리 크래시와 CPU 소모는 #19219로 함께 해결됐으며 0.20.1과 0.21.0에 포함됐다.
Bitcoin Core
Bitcoin Core 27.1은 버그 수정으로 채워졌다. GUI의 미서명 트랜잭션 수수료 인상이 복구됐고 프록시 IP 입력란은 포트를 받지 않는다. GetAddedNodeInfo()는 addnode로 추가한 CJDNS 피어를 감지하며(#30085), 서명 중 TapMiniscript 처리도 바뀌었다(#29853).
Bitcoin Core
BIP324 v2 전송이 Bitcoin Core 27.0에서 기본으로 켜진다. 새 알고리즘 CoinGrinder는 수수료율 30sat/vB 이상에서 가장 가벼운 입력 조합을 찾는다. 합의 코드는 네트워크 조정 시간 대신 시스템 시간을 쓰게 돼 운영자에게 정확한 시계가 더 중요해졌다. libbitcoinconsensus는 폐지 예고됐으며 v28에서 제거할 계획이다.
Bitcoin Core
Bitcoin Core 25.2 노드는 변조된 블록을 처리하지 않는다(#29412). getrawtransaction 세그폴트(#29003), WalletBatch::EraseRecords의 use-after-free(#29176), GUI에서 “Mask values”를 선택할 때 나던 크래시도 고쳤다.
Bitcoin Core
Bitcoin Core 26.1의 I2P 세션은 ECIES-X25519와 ElGamal 암호화를 모두 쓰고(#29200), 노드는 멤풀 로드 진행 상황을 로그로 남긴다. 변조 블록 처리를 거부하는 수정(#29412)과 SFFO가 켜져 있을 때 지갑이 BnB 코인 선택을 건너뛰게 한 수정(#28994)도 들어갔다.
Bitcoin Core
실험 기능 BIP324 v2 전송이 Bitcoin Core 26.0에서 첫선을 보였다. 기본값은 꺼짐이며 -v2transport로 켠다. 새 RPC loadtxoutset은 assumeutxo 스냅숏을 불러와 몇 분 안에 노드를 쓸 수 있게 하고, 원래 chainstate 검증은 백그라운드에서 마무리한다. submitpackage는 원시 트랜잭션을 패키지로 멤풀에 보낸다.
Bitcoin Core
오래된 수수료 추정치를 Bitcoin Core 24.2는 더는 내놓지 않고(#27622), 잘못된 bech32 주소에 대한 RPC 처리도 바로잡았다(#27727). 나머지 변경은 대부분 빌드 시스템과 CI 쪽으로, Xcode 15 링커에서 macOS Qt 패키지가 빌드되지 않던 문제(#28543)도 포함된다.
Bitcoin Core
컴팩트 블록 병렬 다운로드가 Bitcoin Core 25.1에 들어왔다(#27626). /deploymentinfo에서 REST가 죽던 문제(#27853), 원격 클라이언트 연결이 끊긴 뒤 서버 종료 문제(#28551)도 고쳤고, 지갑 마이그레이션은 이제 잘못된 스크립트를 거부한다(#28125).
Bitcoin Core
BIP158 컴팩트 블록 필터를 -blockfilterindex=1로 쓸 수 있으면 Bitcoin Core 25.0의 디스크립터 지갑 재스캔이 빨라진다. 이 필터를 검색하는 새 RPC scanblocks도 생겼다. 릴레이 정책은 non-witness 65바이트 이상 트랜잭션을 받아들이며, -blocksonly에서는 멤풀 최대 메모리가 300MB에서 5MB로 줄어든다.
Bitcoin Core