สรุปสั้น
บริษัท Alby ผู้พัฒนากระเป๋าบิตคอยน์ได้ออกคำเตือนถึงช่องโหว่ระดับร้ายแรงใน Alby Hub ที่อาจเปิดทางให้ผู้โจมตีเข้าควบคุมกระเป๋าและโอนเงินในกระเป๋าออกไปได้ โดยมีเงื่อนไขสำคัญคือเกิดขึ้นเฉพาะกับเครื่องที่เจ้าของเปิดให้เข้าถึงจากอินเทอร์เน็ตเท่านั้น Alby Hub เป็นกระเป๋า Lightning แบบโฮสต์เอง หมายความว่าเจ้าของรันซอฟต์แวร์บนคอมพิวเตอร์หรือเซิร์ฟเวอร์ของตัวเองและถือบิตคอยน์ไว้ที่นั่นโดยตรง ช่องโหว่นี้กระทบเวอร์ชัน v1.7.0 จนถึง v1.18.5 ซึ่งทั้งหมดออกก่อนเดือนสิงหาคม พ.ศ. 2568 ส่วนเวอร์ชัน v1.19.0 เป็นต้นไปไม่ได้รับผลกระทบ โดยรุ่นแรกที่มีการแก้ไขเผยแพร่เมื่อวันที่ 29 สิงหาคม พ.ศ. 2568
สิ่งที่บริษัทยังไม่บอกคือรายละเอียดของช่องโหว่ Alby ระบุเพียงว่าจะเผยแพร่รายละเอียดทั้งหมดในภายหลังตามแนวปฏิบัติการเปิดเผยอย่างมีความรับผิดชอบ และขอบคุณนักวิจัยที่รายงานปัญหาอื่นซึ่งถูกแก้ไปในรุ่นล่าสุด บริษัทระบุว่าเท่าที่ทราบมีผู้ใช้ได้รับผลกระทบแล้ว 1 ราย ซึ่งเป็นผู้แจ้งรายละเอียดกลับมาให้บริษัทเอง แต่ไม่ได้ระบุว่าผู้ใช้รายนั้นสูญเงินหรือไม่ คำแนะนำที่ให้ไว้คือให้ตัดการเข้าถึงหน้าจัดการของ Hub จากภายนอกก่อนเป็นอันดับแรก แล้วจึงอัปเดตเป็น v1.24.0 ซึ่งเป็นรุ่นปัจจุบัน
ปมที่น่าสนใจไม่แพ้ตัวช่องโหว่คือเรื่องเอกสาร Alby Hub ถูกออกแบบมาให้อยู่บนเครือข่ายส่วนตัว แต่เอกสารของโครงการเพิ่งเพิ่มคำเตือนไม่ให้นำไปวางบนอินเทอร์เน็ตสาธารณะเมื่อวันที่ 7 กันยายน พ.ศ. 2569 นี้เอง โดยคำอธิบายของการแก้ไขนั้นระบุเองว่าคู่มือติดตั้งหลายฉบับเคยบรรยายว่าเซิร์ฟเวอร์ทำงานบน localhost ทั้งที่ความจริงมันรับฟังการเชื่อมต่อบนทุกอินเทอร์เฟซเครือข่ายของเครื่อง ขณะที่คู่มือการติดตั้งบนคลาวด์ของบริษัทเองยังคงแนะนำการตั้งค่าที่เปิดสู่อินเทอร์เน็ตอยู่ ณ วันที่ออกคำเตือน
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 9 กันยายน พ.ศ. 2569 ว่าบริษัท Alby ได้เตือนถึงช่องโหว่ระดับร้ายแรงใน Alby Hub ที่อาจเปิดทางให้ผู้โจมตียึดกระเป๋าและส่งเงินในกระเป๋าออกไป แต่เฉพาะในกรณีที่เจ้าของทำให้ Hub เข้าถึงได้จากอินเทอร์เน็ตเท่านั้น
ช่องโหว่กระทบเวอร์ชัน v1.7.0 ถึง v1.18.5 ซึ่งออกก่อนเดือนสิงหาคม พ.ศ. 2568 ทั้งหมด โดย Alby ระบุว่ามีผู้ใช้ได้รับผลกระทบแล้วหนึ่งรายเท่าที่บริษัททราบ ส่วนเวอร์ชัน v1.19.0 และใหม่กว่านั้นไม่มีช่องโหว่นี้ และเนื่องจากรุ่นแรกที่มีการแก้ไขถูกเผยแพร่เมื่อวันที่ 29 สิงหาคม พ.ศ. 2568 Hub ที่อัปเดตเป็นรุ่นใดก็ตามที่ออกหลังจากวันนั้นจึงปลอดภัยจากปัญหานี้
ลำดับการแก้ไขที่ Alby ย้ำคือให้ตัดการเข้าถึงจากภายนอกที่หน้าจัดการของ Hub ซึ่งเป็นหน้าเว็บที่ใช้ควบคุมกระเป๋าเสียก่อน จากนั้นจึงอัปเดตเป็น v1.24.0 ซึ่งเป็นรุ่นปัจจุบัน ลำดับนี้มีเหตุผลในตัวเอง เพราะการอัปเดตโดยยังเปิดหน้าจัดการทิ้งไว้บนอินเทอร์เน็ตเท่ากับปล่อยให้เครื่องอยู่ในสถานะเสี่ยงต่อไปตลอดช่วงเวลาที่ใช้ดำเนินการ
ในแง่ข้อมูล บริษัทยังไม่บอกว่าช่องโหว่คืออะไร โดยระบุว่าจะเผยแพร่รายละเอียดทั้งหมดในภายหลังตามแนวปฏิบัติการเปิดเผยอย่างมีความรับผิดชอบ พร้อมขอบคุณนักวิจัยที่รายงานปัญหาอื่น ๆ ซึ่งได้รับการแก้ไขในรุ่นล่าสุด ส่วนกรณีผู้ใช้ที่ได้รับผลกระทบนั้น Alby ระบุว่าผู้ใช้รายดังกล่าวเป็นผู้แจ้งรายละเอียดกลับมาให้บริษัท แต่ไม่ได้เปิดเผยว่าผู้ใช้รายนั้นสูญเสียเงินไปหรือไม่
Alby ยังไม่ได้ตอบด้วยว่าการอัปเดตเพียงอย่างเดียวจะยุติสิทธิ์เข้าถึงที่ผู้โจมตีอาจได้ไปแล้วบน Hub ที่เปิดสู่อินเทอร์เน็ตหรือไม่ คำแนะนำให้เปลี่ยนรหัสผ่านปลดล็อกของบริษัทนั้นเจาะจงไปที่ผู้ใช้กลุ่มนี้พอดี แต่ไม่มีแหล่งข้อมูลที่เผยแพร่แล้วอธิบายว่าการเปลี่ยนรหัสผ่านมีไว้เพื่อยกเลิกสิ่งใด ซึ่งเป็นช่องว่างที่ทำให้ผู้ใช้ที่เคยเปิด Hub สู่อินเทอร์เน็ตไม่สามารถประเมินได้ว่าตนเองปลอดภัยแล้วหรือยัง
ประเด็นเรื่องเอกสารเป็นอีกส่วนที่ต้องบันทึกไว้ Alby Hub ถูกสร้างมาให้อยู่บนเครือข่ายส่วนตัว หน้าเว็บของมันต้องล็อกอินก่อนใช้งาน และเอกสารของโครงการเพิ่งมาเตือนเจ้าของไม่ให้วางมันไว้บนอินเทอร์เน็ตสาธารณะ เนื่องจากเซิร์ฟเวอร์รับฟังการเชื่อมต่อบนทุกอินเทอร์เฟซเครือข่ายที่เครื่องมี ไม่ใช่เฉพาะบนตัวเครื่องเอง คำเตือนดังกล่าวเป็นของใหม่ มาพร้อมการแก้ไขเอกสารที่ถูกรวมเข้าโครงการเมื่อวันที่ 7 กันยายน ซึ่งคำอธิบายของการแก้ไขนั้นระบุเองว่าคู่มือติดตั้งหลายฉบับเคยบรรยายเซิร์ฟเวอร์ว่า “ทำงานบน localhost ทั้งที่จริงแล้วมันรับฟังบนทุกอินเทอร์เฟซเครือข่าย” การแก้ไขเดียวกันนี้ยังเปลี่ยนไฟล์ Docker ของโครงการจากการเปิดพอร์ต 8080 ให้ทุกที่อยู่ มาเป็นเปิดให้เฉพาะตัวเครื่องเองเท่านั้น
ก่อนหน้านั้น คู่มือการรัน Alby Hub บนเซิร์ฟเวอร์ลินุกซ์ระบุว่า Hub ทำงานบน localhost และแนะนำให้ใช้ reverse proxy สำหรับผู้ที่ต้องการเปิดสู่สาธารณะ ขณะที่ไฟล์ README ที่มากับทั้งรุ่นเก่าที่สุดและรุ่นใหม่ที่สุดในช่วงที่ได้รับผลกระทบไม่มีคำเตือนนี้ และรุ่นปัจจุบันก็ยังไม่มีเช่นกัน ที่หนักกว่านั้นคือ ณ วันที่ 9 กันยายนซึ่งเป็นวันออกคำเตือน คู่มือของ Alby เองสำหรับการรัน Hub บนเซิร์ฟเวอร์คลาวด์ยังคงอธิบายการตั้งค่าที่เปิดสู่อินเทอร์เน็ตอยู่ โดยคู่มือสำหรับ DigitalOcean บอกให้ผู้อ่านเปิดที่อยู่สาธารณะของเซิร์ฟเวอร์ไว้เพราะ “จำเป็นเพื่อให้คุณเปิด Alby Hub ในเบราว์เซอร์ได้” แล้วจึงเข้าใช้งาน Hub ที่ที่อยู่นั้น ส่วนคู่มือสำหรับ Hetzner พาผู้อ่านสร้างกฎไฟร์วอลล์สำหรับพอร์ต 8080 โดยตั้งต้นทางเป็น “IPv4 และ IPv6 ใดก็ได้ หรือที่อยู่ไอพีของคุณเองเพื่อความปลอดภัยที่ดีกว่า” และไฟล์ Docker ตัวอย่างในคู่มือก็เปิดพอร์ตให้ทุกที่อยู่
รายละเอียดช่องโหว่
เนื่องจาก Alby ยังไม่เปิดเผยลักษณะทางเทคนิคของช่องโหว่ สิ่งที่ประเมินได้ในตอนนี้จึงมีเพียงขอบเขตและเงื่อนไข ขอบเขตคือ v1.7.0 ถึง v1.18.5 เงื่อนไขคือ Hub ต้องเข้าถึงได้จากอินเทอร์เน็ต และผลลัพธ์ตามที่บริษัทบรรยายคือผู้โจมตีเข้าควบคุมกระเป๋าและส่งเงินออกได้ การที่คำแนะนำหลังอัปเดตระบุให้เปลี่ยนรหัสผ่านปลดล็อกด้วย บ่งชี้ว่าช่องโหว่น่าจะเกี่ยวข้องกับการได้มาซึ่งสิทธิ์เข้าถึงที่ควรถูกกันไว้ด้วยรหัสผ่านนั้น แต่ในเมื่อบริษัทไม่ยืนยัน การตีความนี้ยังคงเป็นเพียงการอนุมานจากคำแนะนำเท่านั้น
| เวอร์ชัน | สถานะ |
|---|---|
| v1.7.0 ถึง v1.18.5 | ได้รับผลกระทบ ในกรณีที่ Hub เข้าถึงได้จากอินเทอร์เน็ต |
| v1.19.0 เป็นต้นไป | ไม่ได้รับผลกระทบ |
| v1.24.0 | รุ่นปัจจุบัน Alby แนะนำให้ใช้แม้กับผู้ที่ไม่ได้รับผลกระทบ |
ต้นตอที่แท้จริงของปัญหาในภาพรวมจึงไม่ได้อยู่ที่ตัวบั๊กอย่างเดียว แต่อยู่ที่ช่องว่างระหว่างสิ่งที่เอกสารบอกกับสิ่งที่ซอฟต์แวร์ทำจริง เจ้าของ Hub ที่อ่านคู่มือแล้วเข้าใจว่าเซิร์ฟเวอร์ผูกอยู่กับ localhost ย่อมไม่คิดว่าตนต้องวางไฟร์วอลล์เพิ่ม ขณะที่ในความเป็นจริงเซิร์ฟเวอร์รับฟังบนทุกอินเทอร์เฟซ และหากเครื่องนั้นมีที่อยู่ไอพีสาธารณะ หน้าจัดการกระเป๋าก็เปิดรับการเชื่อมต่อจากทั่วโลกทันที กรณีของ Docker ยิ่งชัดเจน เพราะการเขียนการเปิดพอร์ตเป็น 8080:8080 ทำให้พอร์ตผูกกับทุกที่อยู่ ต่างจาก 127.0.0.1:8080:8080 ที่จำกัดไว้เฉพาะตัวเครื่อง ซึ่งเป็นความต่างเพียงข้อความสั้น ๆ ที่ผู้ใช้จำนวนมากไม่ทราบผลของมัน
เหตุการณ์ลักษณะนี้เคยเกิดกับ Alby Hub มาแล้วครั้งหนึ่ง เมื่อเดือนพฤศจิกายน พ.ศ. 2568 Alby ตอบผู้ใช้รายหนึ่งที่ถูกดูดเงินออกจาก Hub จนหมดว่าเครื่องนั้น “เข้าถึงได้แบบสาธารณะบน clearnet จึงถูกเข้าถึงจากภายนอกได้” โดยบริษัทระบุว่ากรณีนั้นเป็นคนละปัญหากับช่องโหว่ครั้งนี้ เพราะการตั้งค่า Hub เครื่องนั้นไม่เคยถูกทำให้เสร็จ จึงยังไม่มีรหัสผ่านปลดล็อก และผู้โจมตีเป็นฝ่ายทำขั้นตอนตั้งค่าให้เสร็จเสียเอง หลังกรณีนั้น การแก้ไขแอปของ Umbrel ได้นำ Alby Hub ไปอยู่หลังระบบล็อกอินของ Umbrel เอง ซึ่งก่อนหน้านั้นถูกปิดไว้สำหรับแอปตัวนี้ ปัจจุบันคลังแอปของ Umbrel ติดตั้งรุ่น v1.24.0 ส่วนรายการของ Alby บน Umbrel ติดตั้งรุ่น v1.21.4 ซึ่งทั้งคู่ใหม่กว่ารุ่นที่แก้ไขแล้ว แม้ตัวเลขเหล่านี้จะบอกเพียงว่าคลังแอปติดตั้งอะไรในวันนี้ ไม่ได้บอกว่า Hub เครื่องใดกำลังรันรุ่นใดอยู่
คำถามสองข้อที่คำเตือนทิ้งไว้กระทบผู้ใช้เป็นกลุ่ม ข้อแรกคือคำแนะนำให้ตรวจสอบเวอร์ชันที่ติดตั้งอยู่นั้นไม่ได้บอกว่าผู้ใช้บริการ Alby Cloud ได้รับการจัดการให้เรียบร้อยแล้วหรือยัง ข้อที่สองคือการระบุ v1.7.0 เป็นจุดเริ่มของช่วงที่ได้รับผลกระทบ โดยไม่ได้บอกว่ารุ่นก่อนหน้านั้นซึ่งย้อนไปถึง v1.0.2 อยู่ในสถานะใด The Hacker News ระบุว่าได้ส่งคำถามทั้งสองข้อนี้ไปยัง Alby แล้ว พร้อมกับคำถามว่าการเปลี่ยนรหัสผ่านมีไว้เพื่อยกเลิกสิ่งใด
ผลกระทบ
ผู้ได้รับผลกระทบโดยตรงคือเจ้าของ Alby Hub ที่รันรุ่น v1.18.5 หรือเก่ากว่า และเปิดให้เข้าถึงจากอินเทอร์เน็ต ซึ่งเป็นกลุ่มที่มีความเสี่ยงสูงเป็นพิเศษเพราะสิ่งที่อยู่ปลายทางคือเงินจริงที่โอนออกแล้วเรียกคืนไม่ได้ ต่างจากระบบทั่วไปที่การถูกเจาะมักหมายถึงข้อมูลรั่วหรือบริการหยุดทำงาน ในกรณีของกระเป๋าแบบโฮสต์เอง ความเสียหายเกิดขึ้นทันทีที่ผู้โจมตีสั่งโอนสำเร็จ และไม่มีตัวกลางรายใดที่จะยับยั้งหรือย้อนรายการให้ได้
กลุ่มที่เสี่ยงโดยไม่รู้ตัวคือผู้ที่ทำตามคู่มือการติดตั้งบนคลาวด์ ซึ่งเป็นเส้นทางที่นำไปสู่การเปิดพอร์ตสู่อินเทอร์เน็ตโดยธรรมชาติ ผู้ใช้ที่เลือกรันบนเซิร์ฟเวอร์เช่าแทนเครื่องที่บ้านมักทำเพราะต้องการให้กระเป๋าออนไลน์ตลอดเวลา และการเข้าถึงจากที่ใดก็ได้คือเหตุผลของการเลือกเช่นนั้นตั้งแต่ต้น คนกลุ่มนี้จึงเป็นกลุ่มที่ตรงกับเงื่อนไขของช่องโหว่มากที่สุด และเป็นกลุ่มเดียวกับที่คู่มืออย่างเป็นทางการยังชี้ทางให้เปิดสู่สาธารณะอยู่ ณ วันที่ออกคำเตือน
ในภาพที่กว้างกว่ากรณีนี้ บทเรียนอยู่ที่การที่ค่าเริ่มต้นของซอฟต์แวร์และถ้อยคำในเอกสารทำหน้าที่เป็นมาตรการความปลอดภัยไปโดยปริยาย ซอฟต์แวร์โฮสต์เองจำนวนมากรับฟังบนทุกอินเทอร์เฟซโดยค่าเริ่มต้นเพื่อให้ติดตั้งได้ง่าย และเมื่อเอกสารระบุคลาดเคลื่อนว่าเป็น localhost ผู้ใช้ก็ไม่มีทางรู้ว่าต้องป้องกันเพิ่ม สำหรับผู้ดูแลระบบที่รันบริการโฮสต์เองไม่ว่าจะเป็นกระเป๋าคริปโต แดชบอร์ด หรือเครื่องมือภายใน ข้อสรุปที่ใช้ได้ทั่วไปคืออย่าเชื่อคำว่า localhost ในเอกสาร แต่ให้ตรวจสอบด้วยตนเองว่ากระบวนการนั้นผูกกับที่อยู่ใด และพอร์ตใดเปิดออกสู่ภายนอกจริง
คำแนะนำ
ขั้นตอนตามลำดับที่ Alby แนะนำคือ เริ่มจากตรวจสอบว่า Hub ของตนรันเวอร์ชันใด หากเป็น v1.18.5 หรือเก่ากว่า ให้ตัดการเข้าถึงจากภายนอกเครือข่ายของตนเองก่อนเป็นอันดับแรก สำหรับการติดตั้งด้วย Docker หมายถึงการเปิดพอร์ตเป็น 127.0.0.1:8080:8080 แทน 8080:8080 ส่วนบนเซิร์ฟเวอร์คลาวด์หมายถึงการตั้งกฎไฟร์วอลล์ของพอร์ต 8080 ให้อนุญาตเฉพาะที่อยู่ไอพีของตนเองแทนที่จะเป็นที่อยู่ใดก็ได้ จากนั้นจึงอัปเดตเป็น v1.24.0
สำหรับผู้ที่ Hub เคยรันเวอร์ชันที่ได้รับผลกระทบและเปิดให้เข้าถึงจากอินเทอร์เน็ต Alby แนะนำให้เปลี่ยนรหัสผ่านปลดล็อกหลังอัปเดตเสร็จ และติดต่อบริษัทที่ security@getalby.com เพิ่มเติมจากคำแนะนำนั้น ผู้ใช้กลุ่มนี้ควรตรวจสอบประวัติธุรกรรมย้อนหลังทั้งหมดเพื่อหารายการที่ตนไม่ได้เป็นผู้สั่ง ตรวจดูแอปหรืออุปกรณ์ที่เคยถูกอนุญาตให้เชื่อมต่อกับกระเป๋า และเพิกถอนสิทธิ์ที่ไม่รู้จักทิ้ง เนื่องจากบริษัทยังไม่ตอบว่าการอัปเดตอย่างเดียวตัดสิทธิ์เข้าถึงเดิมของผู้โจมตีได้หรือไม่ การถือว่ายังไม่ตัดจึงเป็นสมมติฐานที่ปลอดภัยกว่า
แนวทางระยะยาวสำหรับกระเป๋าแบบโฮสต์เองคืออย่าเปิดหน้าจัดการสู่อินเทอร์เน็ตโดยตรงไม่ว่ากรณีใด หากจำเป็นต้องเข้าถึงจากภายนอก ควรใช้เครือข่ายส่วนตัวเสมือนหรือเครือข่ายซ้อนทับแบบ Tailscale หรือ WireGuard หรือใช้ reverse proxy ที่มีการยืนยันตัวตนอีกชั้นอยู่ข้างหน้า และควรตรวจสอบด้วยคำสั่งบนเครื่องว่าบริการผูกกับที่อยู่ใดจริง เช่น ดูผลของ ss -tlnp หรือสแกนพอร์ตจากภายนอก แทนการเชื่อคำอธิบายในคู่มือ
สุดท้าย ผู้ใช้ที่รัน Hub ผ่าน Umbrel ควรตรวจสอบว่าแอปอยู่หลังระบบล็อกอินของ Umbrel แล้วจริง และตรวจเวอร์ชันที่ติดตั้งอยู่ในเครื่องของตนเอง ไม่ใช่ดูจากเวอร์ชันที่คลังแอปเสนอในวันนี้ ส่วนผู้ที่ใช้บริการ Alby Cloud หรือรันรุ่นเก่ากว่า v1.7.0 ควรติดตามประกาศฉบับถัดไปของบริษัท เพราะเป็นสองกลุ่มที่คำเตือนฉบับนี้ยังไม่ได้ตอบว่าอยู่ในสถานะใด
