ตลอดปีที่ผ่านมา @pewdiepie ได้กลายเป็นหนึ่งในผู้สนับสนุนที่โดดเด่นที่สุดของแนวคิดการประมวลผลแบบส่วนตัวและโฮสต์เอง และมันเป็นเรื่องที่น่าชมอย่างแท้จริง
สิ่งที่เริ่มต้นในปลายปี 2025 ในฐานะการทดลองที่สนุกสนาน ชุดอุปกรณ์ที่บ้านที่เต็มไปด้วย GPU ที่ถูกดัดแปลงเพื่อรันโมเดลโอเพนซอร์ส แชทบอทที่ลงคะแนนเสียงใน "สภา" และพลังประมวลผลที่เหลือใช้ที่บริจาคให้กับการวิจัยพับโปรตีน ได้เติบโตขึ้นในช่วงเวลาประมาณสิบสองเดือนจนกลายเป็นสิ่งที่มีภารกิจที่ชัดเจน
ในวันที่ 31 พฤษภาคม 2026 มันได้ถือกำเนิดขึ้นในชื่อ Odysseus ซึ่งเป็นพื้นที่ทำงาน AI แบบโอเพนซอร์ส โฮสต์เอง และฟรี ที่เขาอธิบายอย่างตรงไปตรงมาว่าเป็นการท้าทายโมเดลการสมัครสมาชิก: เน้นการทำงานในเครื่องก่อน เน้นความเป็นส่วนตัว ไม่มีการติดตามข้อมูล ข้อมูลของคุณจะอยู่บนฮาร์ดแวร์ของคุณเองแทนที่จะไหลไปยังบริษัทใหญ่ไม่กี่แห่ง
สำหรับคนที่มีอิทธิพลถึงขนาดนี้ การนำเสนอการประมวลผลในเครื่องให้กับผู้ชมทั่วไปที่ไม่ใช่สายเทคนิค เป็นสิ่งที่วงการความเป็นส่วนตัวปรารถนามาหลายปี และผมก็เชียร์อยู่
ผมยังเป็นคนที่เมื่อทดสอบการติดตั้งที่ได้รับอนุญาตของตัวเอง ก็พบวิธีที่จะยึดเซิร์ฟเวอร์เหล่านี้ด้วยคลิกเดียว สองสิ่งนี้ไม่ได้ขัดแย้งกัน ซอฟต์แวร์ที่ทะเยอทะยานขนาดนี้ ที่ถูกปล่อยออกมาเร็วขนาดนี้ ในหมวดหมู่ที่ใหม่ขนาดนี้ คือที่ที่บั๊กด้านความปลอดภัยที่น่าสนใจอาศัยอยู่ และการค้นพบพวกมันตั้งแต่เนิ่นๆ คือวิธีที่โปรเจกต์จะกลายเป็นที่น่าเชื่อถือได้ในภายหลัง
ดังนั้น ด้วยจิตวิญญาณแห่งการช่วยเหลือ นี่คือห่วงโซ่ทั้งหมด อธิบายตั้งแต่พื้นฐาน พร้อมกับสิ่งที่มันบอกเกี่ยวกับช่วงเวลาที่เรากำลังสร้างอยู่
ประตูที่ไม่มีกุญแจ และพอร์ตที่ดูเหมือนไม่เป็นอันตราย
Odysseus สามารถส่งงานหนักไปยังเครื่อง GPU ระยะไกลที่มันเข้าถึงผ่าน SSH ซึ่งเป็นวิธีมาตรฐานที่คอมพิวเตอร์เครื่องหนึ่งใช้รันคำสั่งบนอีกเครื่องหนึ่ง
เอนด์พอยต์ภายในบางส่วนของมันจึงได้รับอนุญาตให้เข้าถึงเชลล์คำสั่ง ซึ่งเป็นบรรทัดคำสั่งดิบที่ ถ้าคุณเข้าถึงได้ คุณก็สามารถทำให้เครื่องทำอะไรก็ได้เกือบทุกอย่าง
อย่างสมเหตุสมผล เกือบทุกเอนด์พอยต์เหล่านั้นเริ่มต้นด้วยการตรวจสอบว่าผู้เรียกเป็นผู้ดูแลระบบหรือไม่
ข้อยกเว้นคือเอนด์พอยต์เล็กๆ ที่เงียบๆ ซึ่งมีหน้าที่แสดงรายการแพ็คเกจ Python ที่ติดตั้งบนเซิร์ฟเวอร์ระยะไกล และข้อยกเว้นนั้นคือจุดที่ทุกอย่างพังทลาย
ปัญหาแรกคือเอนด์พอยต์นี้ไม่เคยได้รับข้อมูลที่จำเป็นในการระบุตัวผู้เรียก ดังนั้นมันจึงไม่ทำการตรวจสอบผู้ดูแลระบบเลย และ ไม่สามารถ ทำได้แม้ในหลักการ
สิ่งเดียวที่ขวางหน้ามันคือกฎครอบคลุมของแอปที่ว่าคุณต้องเข้าสู่ระบบ ซึ่งหมายความว่าบัญชีใดๆ ก็ตาม รวมถึงบัญชีที่คนแปลกหน้าสมัครเมื่อสักครู่ที่แล้ว สามารถเข้าถึงประตูที่สัมผัสเชลล์ที่เอนด์พอยต์อื่นๆ ทุกตัวเฝ้าระวังอย่างดี

สาเหตุหลักเชิงโครงสร้าง: ตัวจัดการที่ไม่สามารถเห็นได้ว่าใครเรียก ก็ไม่สามารถบังคับใช้ได้ว่าใครได้รับอนุญาต ดังที่เห็นด้านล่าง

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


ด้วยเหตุนี้ โปรแกรมที่ระมัดระวังจะนำสิ่งที่คนพิมพ์มาและห่อด้วยเครื่องหมายคำพูดก่อนส่งให้เชลล์ ซึ่งเป็นวิธีบอกเชลล์ให้ปฏิบัติต่ออักขระเหล่านั้นเป็นข้อความธรรมดาที่ไม่มีอำนาจในการรันเป็นคำสั่ง
นักพัฒนาทำสิ่งนี้อย่างถูกต้องสำหรับชื่อเซิร์ฟเวอร์และสำหรับคำสั่งที่ถูกส่ง ดังนั้นอินพุตเหล่านั้นจึงปลอดภัย
อย่างไรก็ตาม หมายเลขพอร์ตถูกวางลงในบรรทัดแบบเปลือย โดยไม่มีเครื่องหมายคำพูดล้อมรอบ โดยอาศัยสมมติฐานที่ฟังดูสมเหตุสมผลว่าพอร์ตนั้นเป็นแค่ตัวเลขเสมอ และตัวเลขไม่สามารถทำอันตรายใดๆ ได้ (พาธของสภาพแวดล้อมเสมือนถูกต่อเข้าด้วยกันในลักษณะที่ไม่ใส่เครื่องหมายคำพูดเดียวกัน ด้วยเหตุผลเดียวกัน)
ช่องโหว่ในสมมติฐานคือพอร์ตไม่จำเป็นต้องเป็นตัวเลข มันมาถึงเป็นข้อความธรรมดาที่ดึงมาจากที่อยู่เว็บโดยตรง และใครก็ตามที่ทำการร้องขอจะได้ตัดสินใจว่ามันจะพูดว่าอะไร
ดังนั้น แทนที่ 22 ผู้โจมตีจะเขียน 22; id; hostname #
เชลล์อ่านส่วนแรก พยายามเชื่อมต่อ และล้มเหลวอย่างไม่เป็นอันตราย จากนั้นถึงเครื่องหมายอัฒภาคแรกและรันคำสั่งสองคำสั่งของผู้โจมตีอย่างเชื่อฟัง ในขณะที่ # ต่อท้ายบอกให้มันไม่สนใจข้อความที่เหลือที่ควรจะตามมา

เครื่องหมายอัฒภาคหนึ่งตัวเปลี่ยน "แสดงรายการแพ็คเกจบนเครื่องระยะไกล" เป็น "รันคำสั่งของฉันบนเครื่องนี้"
การเข้าถึงมันไม่ต้องการอะไรที่พิเศษไปกว่าเซสชันที่เข้าสู่ระบบแล้วและที่อยู่เว็บที่ถูกปรุงแต่ง:

คำขอส่งคืน HTTP 200 พร้อม JSON แพ็คเกจปกติ ในขณะที่คำสั่งที่ถูกแทรกทำงานฝั่งเซิร์ฟเวอร์
คำสั่งที่ผมสอดเข้าไปเป็นโพรบที่ไม่เป็นอันตราย และเมื่อเอาต์พุตของมันกลับมาโดยระบุชื่อบัญชีบริการของเซิร์ฟเวอร์เอง ก็ยืนยันว่าคำสั่งของผมทำงานบนเครื่องนั้นเอง

รวมข้อบกพร่องทั้งสองเข้าด้วยกัน และภาพรวมในเครื่องก็พอดีกับประโยคเดียว - ผู้ใช้ที่เข้าสู่ระบบแล้วทุกคนสามารถรันคำสั่งที่ตนเลือกบนเซิร์ฟเวอร์ได้
ความเสี่ยงในวงกว้างนั้นถูกทำให้รุนแรงขึ้นโดยสิ่งที่ทำให้ Odysseus น่าตื่นเต้น
หากครีเอเตอร์ที่มีผู้ติดตามร้อยล้านคนสามารถนำผู้ชมจำนวนมากที่ไม่ใช่สายเทคนิคเข้าสู่การโฮสต์ตัวเองได้สำเร็จ ผลลัพธ์ที่ได้คืออินสแตนซ์ที่คล้ายกันหลายพันแห่ง กำหนดค่าในลักษณะเดียวกัน เปิดเผยในลักษณะเดียวกัน ซึ่งเป็นระบบเดี่ยว และระบบเดี่ยวคือสิ่งที่เวิร์มชอบ
@ashnichrist พูดได้ดี
เปลี่ยนให้เป็นคลิกเดียว
บั๊กที่ "ผู้ใช้ที่เข้าสู่ระบบแล้วทุกคน" สามารถกระตุ้นได้ยังฟังดูเหมือนต้องมีคนภายในที่ประสงค์ร้าย และขั้นตอนต่อไปคือสิ่งที่ลบข้อกำหนดนั้นออกไป เพราะมันทำให้เบราว์เซอร์ของเหยื่อเองเป็นผู้ดำเนินการโจมตี
เทคนิคนี้คือการปลอมแปลงคำขอข้ามไซต์ (CSRF) และมันอาศัยนิสัยของเบราว์เซอร์ที่เงียบๆ อย่างหนึ่ง
เมื่อคุณเข้าสู่ระบบไซต์หนึ่งแล้ว เบราว์เซอร์ของคุณจะเก็บโทเค็นขนาดเล็กและแนบมันโดยอัตโนมัติกับคำขอที่ส่งไปยังไซต์นั้น โดยพิจารณาจากปลายทางของคำขอเท่านั้น โดยไม่สนใจว่าหน้าไหนเป็นผู้เริ่มต้น

Odysseus ตั้งค่าโทเค็นนั้นด้วยนโยบาย SameSite=Lax ซึ่งเป็นค่าเริ่มต้นที่สมเหตุสมผลและป้องกันไม่ให้โทเค็นติดไปกับคำขอพื้นหลังที่แอบแฝง แต่ยังคงส่งมันไปในการนำทางระดับบนสุด ซึ่งหมายถึงการคลิกธรรมดาที่ทำให้แท็บของคุณย้ายไปที่อื่น
เนื่องจากเอนด์พอยต์ที่เปราะบางตอบสนองต่อลิงก์ธรรมดา ไม่ตรวจสอบว่าคำขอมาจากไหน และไม่ใช้โทเค็นป้องกันการปลอมแปลง ผู้โจมตีจึงต้องโฮสต์เพจที่มีปุ่มที่น่าดึงดูดเท่านั้น
สำหรับการสาธิต ผมสร้างสิ่งนั้นขึ้นมา - หน้าเพจ tribute CoComelon ที่ร่าเริง เป็นมิตรกับเด็ก และที่สำคัญที่สุดคือถูกต้องตามเนื้อเรื่อง - สีสันแบบเพลงกล่อมเด็ก, ฟอนต์ Comic Sans, ปุ่ม "เล่น" ปุ่มใหญ่หนึ่งปุ่ม

ปุ่มนั้นไม่ใช่ลิงก์ไปยังเพลง ตัวจัดการคลิกของมันเปิดเป้าหมายจริงในหน้าต่างป๊อปอัปขนาดเล็กที่ใช้แล้วทิ้ง ดังนั้นคำขอที่เป็นอันตรายจึงเกิดขึ้นเป็นการนำทางระดับบนสุด ซึ่งนำคุกกี้เซสชัน SameSite=Lax ไปด้วย โดยไม่ขโมยโฟกัส จากนั้นก็ปิดตัวเองอัตโนมัติในอีกสักครู่ ที่อยู่ที่มันเปิดคือเอนด์พอยต์แพ็คเกจที่มีคำสั่งซุกซ่อนอยู่ใน "พอร์ต":

ในขณะที่คลิกนั้นเกิดขึ้น หน้าเหยื่อจะแสดงโชว์ให้กล้องดู: งานศิลปะ CoComelon กะพริบไปทั่วหน้าจอเหมือนแสงแฟลชปากกระบอกปืน และเทอร์มินัลจะพิมพ์ตัวเองออกมาบรรยายแต่ละขั้นตอนของการยึดครอง (ข้อความเทอร์มินัลเป็นบทบรรยายที่จัดฉากสำหรับการสาธิต การดำเนินการจริงคือคำขอเงียบที่ป๊อปอัปเพิ่งทำไป)

เพื่อให้ผลกระทบเป็นรูปธรรม คลิกเดียวนั้นทำสามสิ่ง: มันเขียนอินเทอร์เฟซที่ให้บริการใหม่เพื่อการทำลายรูปลักษณ์ที่ชัดเจน (โอเวอร์เลย์เต็มหน้าจอ "🍉 Odysseus ของคุณถูก CoComelon แล้ว 🍉", ไอคอนแตงโม, แอปที่เปลี่ยนชื่อ), มันอ่านสิ่งที่ผู้ใช้บริการสามารถอ่านได้ และ - ที่คงทนที่สุด - มันเขียนบัญชีผู้ดูแลระบบที่ซ่อนอยู่ลงใน auth.json ของแอปโดยตรง

จุดเจ็บปวด: การรีบูตจะทำความสะอาดความยุ่งเหยิงที่เห็นได้ชัดและเก็บบัญชีของผู้โจมตีไว้
นี่คือการสาธิตสด
ทำไมนี่ถึงเป็นบั๊กที่แย่ที่สุดที่จะมีในเครื่องมือแบบ agentic
เหตุผลที่การบุกรุกอินสแตนซ์เดียวควรทำให้คุณกังวลในปี 2026 ก็คืออินสแตนซ์เดียวมักจะไม่ใช่จุดที่สิ่งเหล่านี้หยุด และเวิร์มที่นิยามปีนี้แสดงให้เห็นว่าทำไม
Shai-Hulud ซึ่งเป็นเวิร์ม npm ที่แพร่กระจายตัวเองได้ ถูกพบครั้งแรกในเดือนกันยายน 2025 และกลับมาในระลอกที่ใหญ่ขึ้นตั้งแต่นั้นมา ทำงานในลูปที่โหดร้ายและเรียบง่าย - สคริปต์เวลาติดตั้งที่เป็นอันตรายจะทำงานทันทีที่ติดตั้งแพ็คเกจ สแกนเครื่องเพื่อหาความลับ เช่น โทเค็น npm และ GitHub, คีย์ SSH และข้อมูลประจำตัวบนคลาวด์ จากนั้นใช้ข้อมูลประจำตัวที่ถูกขโมยเหล่านั้นเพื่อเผยแพร่เวอร์ชันที่มีแบ็คดอร์ของแพ็คเกจอื่นๆ ของเหยื่อ ดังนั้นการติดตั้งใหม่แต่ละครั้งจึงกลายเป็นจุดปล่อยต่อไปโดยไม่ต้องใช้ความพยายามเพิ่มเติมจากผู้โจมตี
บทเรียนที่ควรนำไปใช้คือ งานที่ยากที่สุดของเวิร์มคือการเก็บเกี่ยวข้อมูลประจำตัวและหาทางไปยังเครื่องถัดไป
ผู้ช่วย AI แบบ agentic มอบ
ทั้งสองอย่าง
นั้นให้ฟรี เพราะการถือความลับที่ทรงพลังและการเอื้อมไปยังเครื่องอื่นคือจุดประสงค์ทั้งหมดของมัน
คลิกเดียวที่ Odysseus ให้ผลลัพธ์มากกว่าการรันโค้ดมาก มันส่งมอบห้องนิรภัยที่รวบรวมไว้ล่วงหน้าของคีย์ API ที่เก็บไว้, ฐานข้อมูล, การกำหนดค่า และการเข้าถึง SSH ที่เครื่องมือใช้เพื่อเข้าสู่เซิร์ฟเวอร์ GPU ระยะไกลที่มันจัดการ นั่นคือเชื้อเพลิงที่แน่นอนที่การโจมตีแบบแพร่กระจายตัวเองใช้ดำเนินการ นั่งอยู่ในที่เดียวโดยมีป้ายหันออกด้านนอก และคู่มือการใช้งานมันมีอยู่แล้วในโลกจริง

ทั้งหมดนี้หมายความว่าอะไร
สิ่งที่ทำให้ผมประทับใจที่สุดคือบั๊กที่ยึดเซิร์ฟเวอร์ได้จริงๆ นั้นเก่าแก่ การฉีดคำสั่งและการปลอมแปลงคำขอมีวิธีแก้ไขที่เป็นตำราเรียนที่นักพัฒนาในปี 2005 จะรู้จัก และพวกมันอาศัยอยู่ในซอฟต์แวร์ AI เพื่อผู้บริโภคที่มองไปข้างหน้ามากที่สุดชิ้นหนึ่ง ซึ่งเป็นรูปแบบทั่วทั้งอุตสาหกรรมในปีนี้ ที่ช่องโหว่ AI ที่เป็นข่าวพาดหัวกลับกลายเป็นข้อบกพร่องคลาสสิกที่อยู่ในเครื่องมือใหม่ที่แวววาว
แนวหน้านั้นทำให้พื้นฐานเหล่านั้นมีผลบังคับใช้อย่างเต็มที่ จากนั้นก็ซ้อนชั้นที่ทรงพลัง เคลื่อนที่เร็ว และมักได้รับความไว้วางใจมากเกินไปไว้ด้านบน และเชื่อมต่อชั้นนั้นกับทุกสิ่งที่คุณเป็นเจ้าของ

กริ่งประตูที่ยังไม่ได้เดินสายไฟ
มีรายละเอียดอีกหนึ่งอย่างที่ควรค่าแก่การเรียนรู้ เพราะมันเป็นส่วนที่เกี่ยวกับโค้ดน้อยที่สุด
เมื่อผมไปรายงานเรื่องนี้ครั้งแรก มีนโยบายความปลอดภัยในพื้นที่เก็บข้อมูล ซึ่งเป็นนโยบายที่รอบคอบ พร้อมคำแนะนำในการปรับใช้ที่สมเหตุสมผล
แต่ส่วนการรายงานของมันชี้ไปที่ "การแจ้งเตือนความปลอดภัยของ GitHub หากมี" และในตอนแรกช่องทางส่วนตัวนั้นก็ไม่ได้เปิดอยู่
สิ่งที่ละเอียดอ่อนที่สุดที่คนแปลกหน้าสามารถหาเกี่ยวกับโปรเจกต์ได้ไม่มีที่ลงส่วนตัว ช่องว่างนั้นได้ถูกปิดไปแล้ว - ห่วงโซ่การฉีดคำสั่งตอนนี้ถูกติดตามโดยการแจ้งเตือน วิกฤต และการแก้ไขถูกรวมเข้าไปแล้ว - แต่การไม่มีในตอนแรกคือสัญญาณบอกเหตุ
โชคดีที่ผมได้คุยกับผู้ดูแลคนหนึ่ง ซึ่งเปิดฟีเจอร์การแจ้งเตือน และตั้งแต่นั้นมาผมก็ได้ส่งการแก้ไขอื่นๆ อีกจำนวนหนึ่ง

อย่างไรก็ตาม... มันเป็นสัญญาณของยุคสมัย
โปรเจกต์ตอนนี้ไปจากงานอดิเรกบน GPU ที่บ้าน สู่ผู้ชมร้อยล้านคนในช่วงเวลาของการประกาศเพียงครั้งเดียว และโครงสร้างพื้นฐานด้านความปลอดภัย - กล่องจดหมายส่วนตัวสำหรับข่าวร้าย, ขั้นตอนการแจ้งเตือน, นิสัยในการปฏิบัติต่อเอาต์พุตของโมเดลว่าเป็นศัตรู - ล้าหลังโค้ด ซึ่งในทางกลับกันก็ล้าหลังผู้ชม
ลำดับนั้นตรงกันข้ามกับสิ่งที่ศัตรูต้องการอย่างสิ้นเชิง
ฐานแฟนคลับขนาดใหญ่ ที่ไว้วางใจ และส่วนใหญ่ไม่ใช่สายเทคนิค ติดตั้งซอฟต์แวร์เดียวกันในสัปดาห์เดียวกัน โดยมีคนที่พวกเขาไว้ใจอยู่แล้วชี้ทาง เป็นเป้าหมายที่น่าดึงดูดที่สุดที่มีอยู่ - ใหญ่โต สม่ำเสมอ และถูกขายไปแล้ว
มันคือระบบเดี่ยวที่เวิร์มต้องการ โดยมีพรมต้อนรับวางไว้แล้ว
ดังนั้น ส่วนที่ให้กำลังใจของเรื่องนี้ไม่ใช่โค้ดที่สมบูรณ์แบบ - มันไม่ใช่ - แต่คือโปรเจกต์ที่เดินสายกริ่งประตูและส่งการแก้ไขภายในเวลาประมาณหนึ่งวันหลังจากได้ยินเสียงเคาะ
สำหรับซอฟต์แวร์ที่เคลื่อนที่เร็วขนาดนี้ ต่อหน้าผู้ชมขนาดนี้ ปฏิกิริยาตอบสนองนั้น - เปิดช่องทางส่วนตัว ตอบสนองอย่างรวดเร็ว แก้ไขอย่างเปิดเผย - มีค่ามากกว่าการมีประวัติที่ไร้ที่ติตั้งแต่แรก ท้ายที่สุดแล้ว นี่คือวิธีที่ความไว้วางใจในการโฮสต์ตัวเองได้รับมาจริงๆ
สำหรับตอนนี้... เท่านี้ก่อนนะทุกคน!

https://x.com/Grummz/status/2061300454907371953
https://x.com/ashnichrist/status/2061481763516399737





