
Bitcoin Core เปิดเผยช่องโหว่ 3 จุด โหนด Windows, macOS, BSD ถูกทำแครชได้ แก้แล้วใน 32.1
Bitcoin Core ซึ่งเป็นซอฟต์แวร์โหนดหลักของ Bitcoin เผยแพร่ประกาศความปลอดภัย 3 ฉบับเมื่อวันที่ 28 ตุลาคม 2569 เกี่ยวกับช่องโหว่ 3 จุด ได้แก่ ช่องโหว่ที่โหนดประสงค์ร้ายส่งข้อมูล TCP แบบเร่งด่วน (urgent data) ทำให้โหนดบน Windows, macOS และ BSD หน่วยความจำเต็มจนแครชได้ ช่องโหว่ที่หน่วยความจำของโหนดโตช้าๆ ไม่จำกัด และช่องโหว่ที่ผู้ขุดอาจทำให้ข้อมูลย้อนกลับ (undo data) เสียหาย ประกาศจัดความรุนแรงเป็นปานกลาง ปานกลาง และต่ำ ตามลำดับ ทั้งสามจุดแก้แล้วในเวอร์ชัน 29.5, 30.4, 31.2 และ 32.1 และทั้งหมดพบโดยการสแกนอัตโนมัติด้วยโมเดลภาษา (LLM) ของ Project Loupe ที่ Spiral
ทีมข่าวอ่านประกาศทั้ง 3 ฉบับและหน้าปล่อยเวอร์ชันบน bitcoincore.org แล้ว ประกาศไม่ระบุหมายเลข CVE และไม่ระบุว่ามีการโจมตีจริงเกิดขึ้น สรุปที่แชร์ใน X ของบัญชี Bitcoin News (อ้างโพสต์ของ Rod Palmer) ต่างจากประกาศในบางจุด ดูหัวข้อสุดท้ายของข่าวนี้
ช่องโหว่ทั้ง 3 จุดคืออะไร
- หน่วยความจำเต็มจากข้อมูล TCP แบบเร่งด่วน (ความรุนแรงปานกลาง): ประกาศระบุว่า บนระบบที่ไม่ใช่ Linux โหนดใช้กลไกตรวจสอบซ็อกเก็ตแบบ select() ซึ่งยังเฝ้าเหตุการณ์ผิดปกติแม้หยุดอ่านข้อมูลชั่วคราวเพื่อจำกัดคิว โหนดประสงค์ร้ายที่ส่งข้อมูลเร่งด่วนจึงทำให้โหนดอ่านและเพิ่มข้อมูลเข้าคิวต่อได้ไม่จำกัด ประกาศระบุว่าในทางปฏิบัติ โหนดประสงค์ร้ายทำให้โหนด Windows, macOS หรือ BSD ที่เชื่อมต่ออยู่แครชได้โดยไม่ยาก โหนด Linux ใช้กลไก poll() จึงไม่ได้รับผลกระทบ
- หน่วยความจำโตช้าๆ จากโหนดที่ไม่รองรับ BIP 31 (ความรุนแรงปานกลาง): Bitcoin Core หยุดส่งข้อมูลให้โหนดที่อ่านช้า แต่ยังเพิ่มประกาศธุรกรรมเข้าคิว โหนดที่ไม่ตอบ ping ภายใน 20 นาทีจะถูกตัดการเชื่อมต่อ แต่กลไกนี้ไม่ใช้กับโหนดที่แกล้งทำเป็นไม่รองรับ BIP 31 ซึ่งหน่วงการอ่านข้อมูลเพื่อให้คิวโตไม่จำกัด หน่วยความจำอาจโตสูงสุดราว 2 MB ต่อชั่วโมงต่อโหนดขาเข้า และ 5 MB ต่อชั่วโมงต่อโหนดขาออก โหนดที่รันแบบ -blocksonly ได้รับผลน้อยกว่ามาก เพราะประกาศธุรกรรมเป็นส่วนใหญ่ของคิว
- ไฟล์ข้อมูลย้อนกลับล้น (ความรุนแรงต่ำ): ไฟล์ undo (rev*.dat) ไม่มีเพดานขนาด และตำแหน่งในไฟล์เก็บเป็นเลข 32 บิต ผู้ขุดอาจสร้างบล็อกที่ถูกต้องแต่มีข้อมูลย้อนกลับใหญ่กว่าตัวบล็อกมาก จนไฟล์เกิน 4 GiB แล้วตำแหน่งวนกลับ ข้อมูลใหม่เขียนทับข้อมูลเก่า ถ้ามีการ reorg ที่ยกเลิกบล็อกนั้น โหนดอ่านข้อมูลไม่ได้และปิดตัวลง รีสตาร์ตไม่หาย ต้องใช้ -reindex บนเวอร์ชันที่แก้แล้ว บน Windows และระบบ 32 บิต เพดานอยู่ที่ 2 GiB ซึ่งทำให้โหนดปิดตัวทุกครั้งที่รีสตาร์ตโดยไม่ต้องมี reorg
ประกาศระบุว่าช่องโหว่ที่สามโจมตีได้ยากมากบนระบบ 64 บิต ต้องขุดบล็อกที่มีธุรกรรมนอกมาตรฐานหลายพันบล็อก ซึ่งเทียบเท่ากำลังผลิตบล็อกของทั้งเครือข่ายราวหนึ่งเดือน ต้องวางบล็อกให้ตรงตำแหน่ง และต้องชนะ reorg 2 บล็อก ส่วนรูปแบบไฟล์ของแต่ละโหนดต่างกัน จึงไม่มีวิธีวางที่ใช้ได้กับทุกโหนด ประกาศยังระบุว่าในทางทฤษฎี ถ้าควบคุมไฟล์ของโหนดได้ละเอียดกว่านี้ ผู้โจมตีอาจทำให้โหนดคืนเหรียญผิดระหว่าง reorg จนชุด UTXO เสียหาย
ใครได้รับผลกระทบ และต้องทำอะไร
- เวอร์ชันที่แก้แล้ว: 29.5, 30.4, 31.2 และ 32.1 ประกาศระบุว่า 32.1 และ 31.2 ออกวันที่ 27 ตุลาคม ส่วน 29.5 และ 30.4 ออกวันที่ 28 ตุลาคม หน้าปล่อยเวอร์ชันของ 32.1 ระบุวันที่ 27 ส่วนหน้าของ 31.2 และ 29.5 ระบุวันที่ 28 วันที่ของ 31.2 จึงไม่ตรงกันในสองหน้า
- ช่องโหว่ TCP กระทบเฉพาะ Windows, macOS และ BSD ผู้ใช้ Linux ไม่ได้รับผลกระทบจากจุดนี้ ส่วนช่องโหว่หน่วยความจำโตช้า ประกาศไม่ได้จำกัดเฉพาะระบบปฏิบัติการใด
- ช่องโหว่ไฟล์ undo: ระบบ 32 บิต และโหนดที่เก็บบล็อกบนระบบไฟล์ FAT32 ยังได้รับผลกระทบแม้อัปเดตแล้ว เพราะเพดานไฟล์ 2 GiB และ 4 GiB ยังอยู่ ประกาศระบุว่าการแก้ครอบคลุมระบบ 64 บิตเท่านั้น
- โหนดที่ไฟล์ undo เสียหายแล้วต้องอัปเดตและใช้ -reindex ตามประกาศ
- หน้าปล่อย 32.1 ระบุว่า 32.0 ติดแท็กไว้แต่ไม่เคยประกาศหรือปล่อยจริงเพราะปัญหาช่วงท้าย และตั้งแต่ปล่อยเวอร์ชันหลักใหม่ 29.x และเก่ากว่าหมดอายุการดูแล แต่ประกาศความปลอดภัยระบุว่า 29.5 ออกพร้อมการแก้ ทีมข่าวไม่ได้ตรวจว่า 29.5 เป็นรุ่นสุดท้ายของสาย 29 หรือไม่
ใครพบ และเกิดอะไรขึ้นเมื่อไร
ทั้งสามจุดพบโดย Project Loupe ของอีเลียส โรเรอร์ (Elias Rohrer) ที่ Spiral ผ่านการสแกนอัตโนมัติด้วยโมเดลภาษา เกรกอรี แซนเดอร์ส (Gregory Sanders) เป็นผู้ตรวจสอบและส่งต่อให้ทีม Bitcoin Core อองตวน ปัวโซต์ (Antoine Poinsot) เปิด Pull Request ที่แก้ทั้งสามจุด (หมายเลข 36665, 36667 และ 36669)
- ช่องโหว่หน่วยความจำโตช้า: Loupe พบเมื่อ 15 กันยายน และ L0rinc พบโดยอิสระ แจ้งแซนเดอร์สเมื่อ 21 กันยายน
- ช่องโหว่ไฟล์ undo: Loupe รายงานเมื่อ 8 กรกฎาคม L0rinc รายงานโดยอิสระเมื่อ 21 สิงหาคม และแอนดรูว์ ดอร์แมน (Andrew Dorman) รายงานโดยอิสระเมื่อ 23 ตุลาคม
- ช่องโหว่ TCP: Loupe พบเมื่อ 23 ตุลาคม แซนเดอร์สตรวจสอบและแจ้งทีมความปลอดภัยในวันเดียวกัน
- 26 ตุลาคม: แก้ในสาขาหลักและย้อนไปใส่ในสาย 29, 30, 31 และ 32 วันที่ 27 และ 28 ตุลาคมออกเวอร์ชันที่แก้ และเปิดเผยต่อสาธารณะวันที่ 28
ที่จะตามมา และที่ประกาศยังไม่ตอบ
- หน้าปล่อย 32.1 ระบุว่าตามตารางเปิดเผยปกติ จะเปิดเผยช่องโหว่ความรุนแรงปานกลางและสูงที่แก้ใน 30.0 อีก 3 จุดในอีกสองสัปดาห์ และช่องโหว่ความรุนแรงต่ำที่แก้ใน 32.1 มี 0 จุด
- หน้าเดียวกันระบุว่าตามนโยบายความปลอดภัย ช่องโหว่ที่ "หาเจอได้ง่าย" (easily discoverable) ที่แก้ในรุ่นนี้ จะเปิดเผยทันทีที่มีเวอร์ชันที่แก้ครบทุกสายหลักที่ยังดูแล ประกาศทั้งสามฉบับจัดทุกจุดเป็นกลุ่มนี้
- ประกาศไม่ระบุหมายเลข CVE ไม่ระบุช่วงเวอร์ชันที่ได้รับผลกระทบ และไม่ระบุว่ามีการโจมตีจริงหรือไม่
- ทีมข่าวไม่ได้ประเมินจำนวนโหนดที่ยังใช้เวอร์ชันเก่า
สรุปใน X ต่างจากประกาศอย่างไร
- โพสต์ใน X ระบุว่า Project Loupe พบสองในสามช่องโหว่ และมีหนึ่งจุดที่ L0rinc พบโดยอิสระ ส่วนประกาศระบุว่า Loupe เป็นผู้พบทั้งสามจุด และ L0rinc พบโดยอิสระซ้ำกับสองจุด (หน่วยความจำโตช้า และไฟล์ undo) พร้อมแอนดรูว์ ดอร์แมนที่พบซ้ำกับจุดไฟล์ undo
- โพสต์ที่อ้างถึงระบุว่าช่องโหว่ทำให้ "brick" โหนดได้ ส่วนประกาศใช้คำว่า แครช (crash) หรือปิดตัว ช่องโหว่ TCP ทำให้หน่วยความจำเต็มจนแครช ช่องโหว่ไฟล์ undo ทำให้โหนดปิดตัวและต้อง -reindex ประกาศไม่ได้ใช้คำว่า brick
- โพสต์ระบุว่า "บางการตั้งค่ายังเสี่ยงต่อช่องโหว่ที่สาม" ซึ่งตรงกับประกาศ คือระบบ 32 บิตและ FAT32 แต่ประกาศจัดช่องโหว่นี้ว่าความรุนแรงต่ำและโจมตีได้ยากมาก
📎 ข่าวที่เกี่ยวข้องจาก Bitcoinaddict.com:
เรื่องความปลอดภัยของซอฟต์แวร์ Bitcoin ที่เราเคยรายงานไว้
👉 Bitcoin Core อุดจุดเสี่ยงความเป็นส่วนตัวใน v32 แล้ว แต่ผู้ใช้ v31.1 ยังต้องรอแพตช์
🔗 อ้างอิงต้นฉบับ: Bitcoin Core: Unbounded memory growth through TCP urgent data on non-Linux systems (28 ต.ค. 2569), Bitcoin Core: Slow unbounded memory growth on paused pre-BIP31 peers (28 ต.ค. 2569), Bitcoin Core: Undo file overflow under extreme conditions (28 ต.ค. 2569), Bitcoin Core 32.1 Release Notes
💬 ความเห็นบรรณาธิการ Bitcoinaddict
ข้อที่ตรวจได้จากประกาศโดยตรงคือ ช่องโหว่ 3 จุดได้รับการแก้แล้วในรุ่นที่ออก 27 ถึง 28 ตุลาคม ทั้งหมดพบจากการสแกนด้วยโมเดลภาษา และประกาศไม่ได้ระบุว่ามีการโจมตีจริง ประกาศพูดถึงซอฟต์แวร์โหนด ทีมข่าวไม่ได้ประเมินผลต่อบริการที่ใช้ซอฟต์แวร์นี้ ผู้ให้บริการที่รันโหนดเองควรตรวจเวอร์ชันของตัวเอง
สำหรับผู้อ่านชาวไทย ผู้ที่รันโหนด Bitcoin Core บน Windows หรือ macOS อยู่ในข่ายของช่องโหว่ TCP ที่ประกาศบอกว่าโหนดประสงค์ร้ายทำให้แครชได้โดยไม่ยาก จึงควรอัปเดตเป็นรุ่นที่แก้แล้ว ส่วนผู้ใช้ Linux ไม่โดนจุดนี้ แต่ยังควรอัปเดตเพราะช่องโหว่หน่วยความจำโตช้าที่ประกาศไม่ได้จำกัดเฉพาะระบบปฏิบัติการใด ทีมข่าวไม่ได้ประเมินว่าช่องโหว่ใดมีโอกาสเกิดขึ้นจริงมากน้อยแค่ไหน นอกจากที่ประกาศระบุว่าจุดไฟล์ undo โจมตีได้ยากมาก สิ่งที่ต้องรอดูคือการเปิดเผยช่องโหว่ความรุนแรงปานกลางและสูงของ 30.0 อีก 3 จุดภายในราวสองสัปดาห์ ตามหน้าปล่อย 32.1
เนื้อหานี้เป็นข้อมูลข่าว ไม่ใช่คำแนะนำการลงทุน
— รายงานโดยทีมข่าว Bitcoinaddict.com