Bitcoin Core 31.0 มีช่องโหว่ด้านความเป็นส่วนตัว ทำให้นโหนดที่เป็นอันตรายสามารถบังคับกระตุ้นให้เกิดการรั่วไหลของ IP ได้

BTC1.11%

Bitcoin Core隱私漏洞

ทีมพัฒนา Bitcoin Core ได้โพสต์บน X ในวันที่ 12 มิถุนายน โดยยืนยันว่า ฟีเจอร์ -privatebroadcast ที่เพิ่มเข้ามาในเวอร์ชัน 31.0 ของ Bitcoin Core มีช่องโหว่ด้านความเป็นส่วนตัว: ภายใต้เงื่อนไขเครือข่ายบางประการ หากการจับมือ v2 ล้มเหลว จะเชื่อมต่อกับเพียร์ผ่าน IPv4 หรือ IPv6 ส่งผลให้ผู้รับได้รับข้อมูลที่เป็น IP แบบสาธารณะของผู้ส่ง

เงื่อนไขผู้ใช้งานที่ได้รับผลกระทบ: ต้องครบ 5 ข้อพร้อมกัน

ตามประกาศอย่างเป็นทางการของ Bitcoin Core เงื่อนไขทั้ง 5 ข้อนี้ต้องเป็นจริงพร้อมกันเท่านั้น โหนดจึงจะได้รับผลกระทบจากช่องโหว่นี้:

· โหนดใช้งาน Bitcoin Core 31.0 และเปิดใช้งานฟีเจอร์ -privatebroadcast แล้ว

· การส่งธุรกรรมใช้การกระจายผ่านคำสั่ง RPC sendrawtransaction (RPC ของวอลเล็ตเช่น sendtoaddress, sendall ฯลฯ ไม่ใช้การกระจายแบบ private จึงไม่ถูกกระทบ)

Tor สามารถสร้างการเชื่อมต่อขาออกได้

· สามารถสร้างการเชื่อมต่อขาออก IPv4 หรือ IPv6 ได้โดยตรง (ไม่มีข้อจำกัด -onlynet และไม่มีการตั้งค่า -proxy=...)

· การส่งข้อมูล BIP324 v2 ยังไม่ได้ถูกปิดใช้งาน (ไม่ได้ตั้งค่า -v2transport=0)

การเชื่อมต่อไปยังเพียร์ onion และ I2P ไม่ได้รับผลกระทบ เพราะในการลองซ้ำแบบ v1 ทั้งหมด การเชื่อมต่อเหล่านี้จะผ่านเส้นทางพร็อกซีของแต่ละเครือข่ายอยู่เสมอ

กลไกทางเทคนิคของช่องโหว่: หลังจับมือ v2 ล้มเหลว แต่การลองซ้ำ v1 ไม่ผ่าน Tor

ตามคำอธิบายอย่างเป็นทางการ กลไกที่ทำให้ช่องโหว่เกิดขึ้นคือ: เมื่อการเลือก private broadcast รองรับการขนส่ง v2 (BIP324) กับเพียร์ที่เป็น IPv4 หรือ IPv6 การเชื่อมต่อเริ่มต้นจะใช้เส้นทางพร็อกซีผ่าน Tor ตามที่คาดหวัง หากการจับมือ v2 ล้มเหลว Bitcoin Core จะพยายามลองอีกครั้งด้วยโปรโตคอล v1 โดยการลองซ้ำแบบ v1 นี้จะไม่ผ่านพร็อกซี Tor แต่จะเชื่อมต่อโดยตรงผ่าน IPv4 หรือ IPv6 ส่งผลให้มีการรั่วไหลที่อยู่ IP ของผู้ที่เริ่มการเชื่อมต่อ

พฤติกรรมนี้ขัดกับการรับประกันด้านความเป็นส่วนตัวในคำอธิบายเวอร์ชัน 31.0: «ผู้รับจะไม่มีทางรู้ที่อยู่ IP (และตำแหน่งทางภูมิศาสตร์) ของตนเอง» ทีมพัฒนาได้ยืนยันว่า ช่องโหว่นี้มีแนวโน้มสูงมากที่จะถูกกระตุ้นโดยผู้โจมตีผ่านเพียร์ที่เป็นอันตราย โดยตั้งใจปิดการจับมือ v2 เพื่อบังคับให้เกิดการลองซ้ำแบบ v1

แนวทางแก้ชั่วคราว 3 วิธี: ใช้ได้ก่อนอัปเกรดเป็น 31.1

Bitcoin Core อย่างเป็นทางการมีแนวทางแก้ชั่วคราว 3 วิธีดังต่อไปนี้:

วิธีที่ 1 (แนะนำ): ปิดการตั้งค่า -privatebroadcast โดยตรงด้วย -privatebroadcast=0

วิธีที่ 2: ปิดการขนส่ง v2 ด้วยการตั้งค่า -v2transport=0 โปรดทราบ: การตั้งค่านี้จะทำให้การเชื่อมต่อทั้งหมดของโหนดใช้โปรโตคอล v1 ที่ไม่มีการเข้ารหัส ซึ่งทำให้บนเครือข่ายสาธารณะมีโอกาสถูกระบุตัวตนด้วยลายนิ้วมือ (fingerprinting) และถูกตรวจสอบมากขึ้น

วิธีที่ 3: ส่งทราฟฟิกขาออก IPv4/IPv6 ไปยัง Tor ด้วยการตั้งค่า -proxy=127.0.0.1:9050 (แทนที่ด้วยพอร์ต SOCKS ของ Tor ตามที่ใช้งานจริง) โปรดทราบ: การตั้งค่านี้จะทำให้โหนดเสี่ยงต่อการโจมตีแบบซิบิล (Sybil Attack) มากขึ้น

คำถามที่พบบ่อย

โหนดที่ใช้ wallet RPC เช่น sendtoaddress หรือ sendall ได้รับผลกระทบหรือไม่?

ตามประกาศอย่างเป็นทางการของ Bitcoin Core wallet RPC (เช่น sendtoaddress, sendall ฯลฯ) ไม่ได้ใช้ฟีเจอร์ private broadcast ดังนั้นจึงไม่ถูกกระทบ ช่องโหว่นี้จะถูกกระตุ้นก็ต่อเมื่อทำการกระจายผ่าน sendrawtransaction และเป็นไปตามเงื่อนไขอีก 4 ข้อที่เหลือ

ช่องโหว่นี้จะเกิดขึ้นเองโดยไม่ต้องมีเพียร์ที่เป็นอันตรายได้หรือไม่?

ตามคำอธิบายอย่างเป็นทางการ สำหรับเพียร์ที่รองรับการขนส่ง v2 จริง ๆ ในสถานการณ์ปกติ การจับมือ v2 ไม่น่าจะล้มเหลวได้ ช่องโหว่นี้มีแนแนวโน้มสูงที่จะถูกกระตุ้นโดยมนุษย์จากเพียร์ที่เป็นอันตราย โดยตั้งใจปิดการจับมือ v2 เพื่อบังคับให้เกิดการลองซ้ำแบบ v1

กำหนดการเผยแพร่ Bitcoin Core 31.1 คืออะไร?

ตามประกาศอย่างเป็นทางการของ Bitcoin Core แผนการแก้ไขจะถูกรวมมากับเวอร์ชัน 31.1 แต่ประกาศไม่ได้ระบุวันที่เผยแพร่ที่ชัดเจน ทางการแนะนำให้ก่อนอัปเกรดเป็น 31.1 ให้ใช้หนึ่งในแนวทางแก้ชั่วคราวทั้งสามข้างต้น

news.article.disclaimer
แสดงความคิดเห็น
0/400
ไม่มีความคิดเห็น