สรุปสั้น
Tailscale คือ บริการ VPN แบบ mesh ที่เชื่อมเครื่องในองค์กรเข้าหากันโดยตรง และมีฟีเจอร์ Tailscale SSH ให้ล็อกอินเข้าเครื่องในเครือข่ายด้วยตัวตนบน Tailscale แทนรหัสผ่านหรือคีย์ SSH ส่วน headscale คือ เซิร์ฟเวอร์ควบคุมแบบโอเพนซอร์สที่ใช้แทนของ Tailscale ล่าสุด นางสาว Erica Windisch นักวิจัยจาก Cyberdione Labs เผยแพร่รายงานชื่อ Tailworm เมื่อวันที่ 25 ตุลาคม 2569 ระบุว่าบนเครือข่าย Tailscale ที่ตั้งค่า Tailscale SSH ให้อนุญาต port forwarding เครื่องที่ถูกเจาะเพียงเครื่องเดียวใช้ยกสิทธิ์เป็น root บนเซิร์ฟเวอร์อื่นที่กฎการเข้าถึง (ACL) อนุญาตให้เชื่อมต่อได้ การโจมตีไม่ต้องใช้รหัสผ่านหรือคีย์ที่ขโมยมา เพราะ Tailscale SSH ยืนยันตัวตนจากเครื่อง ไม่ใช่จากผู้ใช้ ในการทดสอบ นางสาว Windisch อธิบายว่าการโจมตี “แพร่ตัวเองได้” (wormable) ลามจากเครื่องหนึ่งไปทุกเครื่องที่กฎอนุญาตในไม่ถึงหนึ่งวินาทีต่อขั้น และในห่วงโซ่ที่ไปไกลที่สุดยังขโมยคีย์ลงทะเบียนเครื่องใหม่ แล้วเอาเครื่องของผู้โจมตีเข้าเครือข่ายเป็นเซิร์ฟเวอร์ที่เชื่อถือได้
ข้อจำกัดสำคัญ คือ ผลทั้งหมดมาจากรายงานของนางสาว Windisch คนเดียว ทดสอบในแล็บกับ Tailscale 1.104.2 และ headscale 0.29.5 ยังไม่มีนักวิจัยรายอื่นทำซ้ำได้ต่อสาธารณะ และโค้ด PoC ไม่เปิดเผย ณ วันที่เผยแพร่ Tailscale ยังไม่มีประกาศความปลอดภัย ไม่มีหมายเลข CVE และไม่มีเวอร์ชันที่แก้ แต่นาย Mike Shaver รองประธานฝ่ายวิศวกรรมของบริษัท Tailscale ยอมรับว่าได้รับรายงานและพบปัญหาที่กำลังแก้อยู่ ขณะที่ยังไม่แนะนำให้ทุกคนปิด Tailscale SSH ระหว่างนี้ผู้ดูแลแก้ได้ด้วยการตั้งค่า คือ เขียนกฎแบบคู่ต้นทาง-ปลายทาง และปิด port forwarding ส่วน headscale 0.29.5 ปิด forwarding ไม่ได้เลย จึงต้องถือว่าสิทธิ์ SSH ทุกรายการเท่ากับสิทธิ์ root บนเครื่องปลายทาง
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 25 ตุลาคม 2569 ว่าเครื่องที่ถูกแฮ็กเพียงเครื่องเดียวบนเครือข่าย Tailscale อาจใช้เข้าถึงสิทธิ์ root บนเซิร์ฟเวอร์อื่นที่มันเชื่อมต่อได้ การโจมตีต้องมีเงื่อนไข 2 ข้อ คือ Tailscale SSH ตั้งค่าให้อนุญาต port forwarding และผู้โจมตีควบคุมเครื่องหนึ่งที่กฎการเข้าถึงอนุญาตให้เชื่อมต่อไปยังเป้าหมายได้อยู่แล้ว
นางสาว Windisch ทดสอบ Tailscale 1.104.2 และ headscale 0.29.5 ซึ่งเป็นเซิร์ฟเวอร์ควบคุมที่โฮสต์เองที่บางองค์กรใช้แทนบริการของ Tailscale เป็นเวลา 3 วันในแล็บ รายงานนี้เป็นผลการทดสอบซอฟต์แวร์ ไม่ใช่การโจมตีเครือข่ายจริง และการแพร่กระจายที่วัดได้ก็วัดในแล็บ ไม่ได้พบบนเครือข่ายจริง
นาย Shaver เขียนบน Reddit ว่า Tailscale ได้รับรายงานแล้ว และทีมกำลังตรวจส่วนเดียวกันร่วมกับผู้เชี่ยวชาญความปลอดภัยภายนอกอยู่ก่อนแล้ว พบปัญหาที่กำลังแก้ ยังอยู่ระหว่างระบุว่าการตั้งค่าแบบใดได้รับผลกระทบ และ “ไม่ได้แนะนำให้ทุกคนปิด Tailscale SSH” ด้านการเปิดเผย นางสาว Windisch เรียกว่า “รายงานแล้วแต่ไม่ได้ประสานงาน” ผู้แสดงความเห็นบน Hacker News อย่างน้อยหนึ่งรายมองว่าการเผยแพร่ก่อนแจ้ง Tailscale ไม่รับผิดชอบ แต่นางสาว Windisch ชี้แจงกับ The Hacker News ว่าได้ส่งรายงานและโค้ด PoC ให้ช่องทางความปลอดภัยของบริษัทตั้งแต่วันเสาร์ก่อนเผยแพร่ เคยแจ้งข้อกังวลด้านสถาปัตยกรรมกับซีอีโอของ Tailscale มาก่อน และโพสต์ hash ของไฟล์รายงานพร้อมแนะนำให้ผู้ใช้ปิด Tailscale SSH ไว้ต่อสาธารณะ นักวิจัยบางรายตั้งคำถามกับคำว่า “wormable” แต่บางรายมองว่าการยกสิทธิ์เป็น root เป็นเรื่องร้ายแรง

รายละเอียดช่องโหว่
Tailscale SSH ทำงานต่างจาก SSH server ทั่วไป แทนที่จะตรวจรหัสผ่านหรือคีย์ของผู้ใช้ มันระบุตัวตนจากเครื่องที่เชื่อมต่อเข้ามา และกฎการเข้าถึงเพียงข้อเดียวตัดสินว่าเครื่องนั้นเปิดเซสชัน SSH ไปยังเป้าหมายได้หรือไม่ การโจมตีจึงไม่ต้องขโมยข้อมูลรับรอง ขอแค่มีจุดตั้งหลักบนเครื่องหนึ่งก่อน ซึ่งได้มาด้วยวิธีทั่วไป เช่น เว็บแอปที่มีช่องโหว่ แพ็กเกจซอฟต์แวร์ที่ถูกวางยา ฟิชชิง หรือข้อมูลล็อกอินที่ถูกขโมย Tailscale ไม่ได้เป็นผู้สร้างจุดตั้งหลักแรกนั้น
ในแล็บ นางสาว Windisch แสดงปัญหาเป็นขั้น ๆ
- forwarding ไปยัง socket ของ root — ใช้ SSH port forwarding ปกติในเซสชันธรรมดา ทำให้โปรเซส Tailscale ที่รันด้วยสิทธิ์ root เชื่อมต่อไปยัง socket ของระบบที่ควรเข้าถึงได้เฉพาะ root การทดสอบได้สิทธิ์ root และอ่านไฟล์รหัสผ่านของระบบได้แทบทันที โดยไม่ต้องมีสิทธิ์ผู้ดูแล
- สลับ socket — แทนที่ socket ที่ root เป็นเจ้าของด้วย socket ของผู้โจมตี ทำให้สั่งรันคำสั่งระดับ root ใส่บริการบางตัวได้โดยตรง
- race condition หลบการตรวจพาธ — เอาชนะการตรวจที่จำกัดไฟล์ที่ forwarding เข้าถึงได้ ด้วยการแข่งเวลาระหว่างตอนที่ระบบตรวจพาธกับตอนที่ใช้พาธนั้นจริง (TOCTOU) ห่วงโซ่นี้ไปไกลที่สุด คือ ดักคีย์ที่ใช้ลงทะเบียนเครื่องใหม่ แล้วใช้คีย์นั้นเอาเครื่องของผู้โจมตีเข้าเครือข่ายเป็นเซิร์ฟเวอร์ที่เชื่อถือได้ ขั้นสุดท้ายนี้สำเร็จครบเฉพาะเครือข่ายที่ไม่ได้เปิด Tailnet Lock ส่วนเครือข่ายที่เปิดไว้ ผู้โจมตีดัก secret ที่ต้องใช้ได้ระหว่างส่ง แต่ทำขั้นสุดท้ายไม่สำเร็จ
ปัจจัยที่หยุดการแพร่กระจายในการทดสอบมี 2 อย่าง คือ กฎการเข้าถึงที่เขียนเป็นคู่ต้นทาง-ปลายทางทีละคู่ ซึ่งหยุดการลามได้ด้วยตัวเอง และคีย์เครื่องที่ผูกกับฮาร์ดแวร์อย่าง TPM หรือ Secure Enclave ความสามารถในการป้องกันขึ้นกับว่าใช้เซิร์ฟเวอร์ควบคุมแบบใด บนบริการของ Tailscale ปิด forwarding ได้รายกฎ แต่บน headscale 0.29.5 ปิดไม่ได้เลย
ปัญหา SSH เป็นหนึ่งใน 11 ข้อค้นพบของรายงาน ซึ่งครอบคลุม app connector ฟีเจอร์ serve, DERP relay ที่ใช้ส่งต่อทราฟฟิกระหว่างเครื่อง และ headscale ด้วย นางสาว Windisch ระบุว่าการยกสิทธิ์ผ่าน SSH “น่ากังวล” แต่ข้อค้นพบเรื่อง app connector “อาจกระทบบางองค์กรมากกว่า” ข้อนี้อยู่ในฟีเจอร์ทดลองชื่อ conn25 ทำให้ผู้ใช้ที่ได้รับอนุญาตส่งทราฟฟิกไปปลายทางที่ทีมความปลอดภัยไม่เคยอนุมัติ รวมถึงบริการ metadata ของผู้ให้บริการคลาวด์ ซึ่งแจกข้อมูลรับรองของเซิร์ฟเวอร์ได้ ปัญหานี้ยังต่อเนื่องจากส่วนเดียวกันของ Tailscale เพราะต้นปี 2569 บริษัทเพิ่งแก้ช่องโหว่ Tailscale SSH และการจัดการ socket หลายตัวในเวอร์ชัน 1.98.9 รวมถึงตัวที่ SSH Unix socket forwarding เข้าถึง socket สิทธิ์สูงได้
ผลกระทบ
กลุ่มที่เสี่ยง คือ องค์กรที่ใช้ Tailscale SSH แทนการจัดการคีย์ SSH แบบเดิม โดยเฉพาะที่เขียนกฎกว้าง ๆ แบบให้สิทธิ์ตามกลุ่มผู้ใช้หรือแท็ก เช่น ให้เครื่องของทีม DevOps ทุกเครื่อง SSH เข้าเซิร์ฟเวอร์ทุกตัวที่ติดแท็ก prod ได้ ในกรณีนี้เครื่องนักพัฒนาที่ติดมัลแวร์หรือ CI runner ที่ถูกวางยาเพียงเครื่องเดียว อาจเป็นจุดเริ่มที่ลามไปเป็นสิทธิ์ root ทั้งฟลีต รายงานสรุปว่า “เครือข่ายแบบ mesh เปลี่ยนจุดตั้งหลักธรรมดาจุดเดียวให้กลายเป็นสิทธิ์ระดับสูงทั้งฟลีตด้วยความเร็วของเครื่องจักร”
ผู้ใช้ headscale เสี่ยงกว่า เพราะไม่มีสวิตช์ปิด forwarding ส่วนองค์กรที่เปิด app connector ไว้กว้างเสี่ยงต่อการดึงข้อมูลรับรองจาก metadata service ของคลาวด์ ประเด็นนี้ยังสะท้อนจุดอ่อนของแนวคิดที่ยืนยันตัวตนจากเครื่อง ซึ่งความปลอดภัยของทั้งเครือข่ายขึ้นกับความแคบของกฎการเข้าถึง และความปลอดภัยของเครื่องที่อ่อนแอที่สุดที่ได้รับอนุญาต อย่างไรก็ตาม จนกว่าจะมีการทำซ้ำอิสระหรือ Tailscale ยืนยันรายละเอียดทางเทคนิค ระดับความรุนแรงจริงในเครือข่ายใช้งานจริงยังประเมินได้ไม่ชัด
คำแนะนำ
- ทบทวนกฎ Tailscale SSH ให้เป็นคู่ต้นทาง-ปลายทางทีละคู่ ระบุเครื่องเดียวกับเป้าหมายเดียว และลบกฎกว้างที่ให้สิทธิ์ตามตัวตนผู้ใช้หรือแท็ก ซึ่งรายงานระบุว่าเป็นมาตรการเดียวที่หยุดการลามได้ในการทดสอบ
- ปิด SSH port forwarding ทุกจุดที่ทำได้ บนบริการของ Tailscale ตั้งได้รายกฎ บน headscale 0.29.5 ปิดไม่ได้ ให้ถือว่าสิทธิ์ SSH ทุกรายการเท่ากับ root บนปลายทาง และพิจารณาปิด Tailscale SSH แล้วใช้ OpenSSH ที่ยืนยันด้วยคีย์แทนชั่วคราว
- ถอนสิทธิ์ app connector ออกจากเครื่องที่ไม่จำเป็น โดยเฉพาะฟีเจอร์ทดลอง conn25 และบล็อกการเข้าถึง metadata service ของคลาวด์จากทราฟฟิกที่ผ่าน connector
- ลบ
tailscale serveที่ forward ไปยัง Unix socket - เปิด node-key expiry เพื่อไม่ให้คีย์เครื่องที่ถูกขโมยใช้ได้ตลอดไป และเปิด Tailnet Lock ซึ่งหยุดขั้นสุดท้ายของห่วงโซ่ได้ในการทดสอบ
- ถ้าเครื่องใดถูกเจาะ ให้ลบเครื่องนั้นที่ control plane ทันที การลงระบบใหม่ไม่ได้เพิกถอนคีย์ที่ผู้โจมตีอาจคัดลอกไปแล้ว
- เปิด SSH check mode และอัปเดตอัตโนมัติตามที่ Tailscale แนะนำ แต่ check mode แค่เพิ่มด่านล็อกอินก่อนเริ่มเซสชัน ไม่ได้แก้การยกสิทธิ์
- ติดตามหน้า security bulletins ของ Tailscale เพื่อดูเวอร์ชันที่แก้และหมายเลข CVE
