Agent Dev Thai Academyprinciples · patterns · architecture

NVIDIA สแกน skill pack ผม แล้วบอกว่าอย่าติดตั้ง

สแกน skill pack ด้วย SkillSpector เจอ 136 ปัญหา แต่ 114 ข้อคือกฎ AS3 ที่ชี้ทุกบรรทัดที่เป็นคำสั่ง สแกนก่อนติดตั้งได้ แต่ให้อ่านชื่อกฎ อย่าอ่านแค่สี

เอา skill pack ที่แจกอยู่ไปสแกนด้วย SkillSpector ของ NVIDIA

ผลออกมาแบบนี้

Risk Assessment
Score        100/100
Severity     CRITICAL
Recommend    DO_NOT_INSTALL

136 ปัญหา HIGH 12 MEDIUM 122

ของที่แจกให้คนอื่นโหลดไปใช้อยู่ทุกวัน เครื่องสแกนบอกว่าอย่าติดตั้ง


ก่อนจะตกใจ ไปดูว่ามันเจออะไร

จาก 136 ข้อ มี 114 ข้อเป็นกฎเดียวกันหมด รหัส AS3 คือ prompt injection

มันชี้มาที่ประโยคแบบนี้ในไฟล์ skill

"ก่อนจะบอกว่าทำเสร็จ ให้รันเทสต์ แล้วแปะผลลัพธ์มาให้ดู"

นั่นคือคำสั่งที่เราเขียนไว้ให้ agent ทำตาม มันคือเนื้อหาทั้งหมดของ skill

แล้ว prompt injection คืออะไร ก็คือคำสั่งที่ฝังไว้ให้ agent ทำตาม

สองอย่างนี้หน้าตาเหมือนกันเป๊ะ

skill ที่ดีกับ prompt injection ต่างกันที่เจตนา ไม่ได้ต่างกันที่รูปแบบ เครื่องที่อ่านแต่ตัวอักษรแยกสองอย่างนี้ไม่ออก มันเลยชี้ทุกบรรทัดที่เป็นคำสั่ง

ไฟล์ที่โดนหนักสุดคือ accountability-nag เพราะทั้งไฟล์คือการสอน agent ให้ตามงานเรา


แล้วมันไร้ประโยชน์มั้ย ไม่

SkillSpector มีสองชั้น ชั้นแรกอ่านตัวอักษรอย่างเดียว ชั้นสองใช้ LLM อ่านบริบทว่าคำสั่งนี้เขียนไว้ทำอะไร

ที่ผมรันคือชั้นแรกอย่างเดียว เพราะชั้นสองต้องต่อ API key แล้วต้องจ่ายเงิน

เลข CRITICAL ที่เห็นข้างบน จึงมาจากครึ่งที่โง่ที่สุดของเครื่องมือ

ตรงนี้สำคัญ ถ้าเอาผลสแกนดิบไปตัดสินใจ เราจะไม่กล้าติดตั้งอะไรเลยทั้งวงการ เพราะทุก skill จะขึ้น CRITICAL หมด

เครื่องสแกนบอกได้ว่า "ตรงนี้มีคำสั่งอยู่" มันบอกไม่ได้ว่า "คำสั่งนี้ไม่หวังดี" อันหลังยังเป็นงานของคน


อีกเรื่องที่เจอตอนรัน และเป็นเรื่องที่คนใช้เครื่องมือแนวนี้ควรรู้

เดือนกรกฎาคมผมเคยไล่ดู 63 ข้อทีละข้อ แล้วเขียนเหตุผลกำกับไว้ทุกข้อว่าทำไมถึงไม่ใช่ปัญหา เก็บไว้ในไฟล์ baseline

รอบนี้เครื่องมือปฏิเสธไฟล์นั้น

unsupported baseline version 1; expected 2

เหตุผลของเขาคือ fingerprint แบบเก่าไม่ได้ผูกกับหลักฐาน เลยเชื่อไม่ได้ ต้องสแกนใหม่แล้วไล่ดูใหม่ทั้งหมด

งานสองชั่วโมงที่ทำไว้ หายไปกับการอัปเวอร์ชัน

ไม่ได้จะบ่น เขาทำถูกแล้ว fingerprint ที่ไม่ผูกกับหลักฐานคือของอันตรายกว่า แต่ถ้าใครกำลังจะเอาเครื่องมือแนวนี้ไปใส่ใน CI ให้รู้ไว้ว่า การไล่ triage ไม่ใช่งานที่ทำครั้งเดียวจบ


สรุปสำหรับคนที่โหลด skill จากอินเทอร์เน็ตมาใช้

สแกนก่อนติดตั้ง ทำได้ฟรีและใช้เวลาไม่กี่นาที

skillspector scan <path หรือ github url> --no-llm

แต่ห้ามอ่านผลแบบผ่านๆ

เห็น CRITICAL อย่าเพิ่งทิ้ง ให้ดูว่ากฎอะไรที่โดน ถ้าเป็น AS3 เต็มไปหมดแปลว่ามันเจอ "คำสั่ง" ซึ่ง skill ทุกตัวในโลกมี

สิ่งที่ควรกลัวจริงๆ คือกฎที่เกี่ยวกับการส่งข้อมูลออกนอกเครื่อง การรันโค้ดที่ไม่ได้บอกไว้ และ permission ที่กว้างเกินงาน

อ่านชื่อกฎ อย่าอ่านแค่สี

ส่วนตัว skill pack ผมยังแจกเหมือนเดิม แต่ตอนนี้มีตัวเลขให้ดูแล้วว่าเจออะไรบ้าง ใครอยากสแกนเองก่อนโหลดก็เชิญเลย นั่นแหละคือสิ่งที่ควรทำกับทุก repo ที่เอามาจากคนแปลกหน้า รวมถึงของผมด้วย