วิธีสแกนประวัติการทำงานของ Coding Agent เพื่อหาข้อมูลลับโดยไม่ต้องส่งข้อมูลไปคลาวด์
เจาะลึกเบื้องหลังการพัฒนาเครื่องมือตรวจจับข้อมูลส่วนบุคคลและรหัสผ่านใน Claude Code session แบบรันในเครื่องผู้ใช้ 100%

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- ประวัติเซสชันของ coding agent บันทึกข้อมูลลับในรูปแบบ plain text ลงดิสก์โดยไม่รู้ตัว
- การส่งข้อมูลไปสแกนบนคลาวด์มีความเสี่ยงเรื่องการรั่วไหลเสียเอง จึงต้องทำในเครื่อง (local) เท่านั้น
- ใช้ระบบผสมผสานระหว่าง Regex และโมเดลขนาดเล็ก ONNX (1.6 GB) เพื่อความแม่นยำสูงสุด
- ใช้ Viterbi algorithm ควบคุมการถอดรหัสและการคำนวณตำแหน่งไบต์อย่างแม่นยำ
เมื่อคุณวางไฟล์ .env ลงในเซสชัน Claude Code เพื่อแก้ไขปัญหาดีพอยต์ที่ล้มเหลว ตัวเอเจนต์จะอ่านไฟล์ แก้ไขค่าคอนฟิก และทำงานต่อจนเสร็จสิ้นภายในเวลา 20 นาที จากนั้นคุณก็ปิดเทอร์มินัล แต่ข้อมูลลับยังคงอยู่ ไม่ได้อยู่ในเทอร์มินัล แต่ถูกบันทึกไว้ในทรานสคริปต์ (transcript) ทุกเซสชันของเอเจนต์จะเขียนไฟล์ JSONL ลงดิสก์ และไฟล์นั้นเก็บ URL ฐานข้อมูลโปรดักชันของคุณไว้แบบ plain text ในไดเรกทอรีที่คุณแทบจะไม่เคยเปิดดูอีกเลย
เมื่อลองคูณสิ่งนี้กับเซสชันที่มีนับร้อยครั้ง นั่นคือสภาพความเป็นจริงของเครื่องคอมพิวเตอร์ส่วนใหญ่ที่รันโค딩เอเจนต์ในปัจจุบัน วิธีแก้ที่ชัดเจนคือการสแกนทรานสคริปต์เหล่านั้นเพื่อซ่อนข้อมูลที่พบ แต่วิธีที่ชัดเจนที่สุดคือการส่งข้อมูลไปยังโมเดลบนคลาวด์ที่มีความสามารถในการค้นหาข้อมูลลับ ซึ่งหมายถึงการอัปโหลดข้อมูลทั้งหมดของคุณรวมถึงข้อมูลที่มีรหัสผ่านไปยังบุคคลที่สาม การสแกนจึงกลายเป็นการรั่วไหลเสียเอง ทีมพัฒนาจึงเลือกให้ฟีเจอร์ PII ทั้งหมดต้องรันในเครื่องของผู้ใช้เท่านั้น หรือไม่ก็ต้องไม่มีฟีเจอร์นี้เลย
การรันโมเดลปัญญาประดิษฐ์ในเครื่องผู้ใช้ (Local AI) สำหรับงานความปลอดภัยเช่นนี้กำลังกลายเป็นเทรนด์สำคัญ เนื่องจากองค์กรและนักพัฒนาให้ความสำคัญกับความเป็นส่วนตัวของข้อมูล (Data Privacy) มากขึ้น การพึ่งพาส องคาพยพบนคลาวด์สำหรับข้อมูลที่มีความอ่อนไหวสูงอย่าง API Keys หรือ Database Credentials อาจสร้างช่องโหว่ทางกฎหมายและความปลอดภัยที่คาดไม่ถึง
คำว่ารันในเครื่องหมายถึงโมเดลที่ต้องมีขนาดเล็กพอที่จะดาวน์โหลดได้เร็ว ทำงานได้ทันที และมีความแม่นยำสูงพอที่จะเปิดใช้งานจริง ความท้าทายเหล่านี้ขัดแย้งกันเองในตัว ทีมงานจึงเริ่มต้นด้วยการใช้ Regular Expression (Regex) ซึ่งทำงานได้ดีกว่าที่คาดไว้ AWS access key, JWT, IBAN หรือหมายเลขบัตรเครดิตล้วนมีรูปแบบที่แน่นอน การใช้ Regex ร่วมกับตัวตรวจสอบ checksum ทำให้ค้นหาข้อมูลเหล่านี้ได้อย่างแม่นยำที่ระดับไมโครวินาที

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
อย่างไรก็ตาม เมื่อเจอข้อมูลที่ไม่มีรูปแบบตายตัว เช่น เพื่อนร่วมงานชื่อ Sarah จัดการเรื่องบิลอยู่ที่ 14 Rue de Rivoli หรือรหัสผ่าน staging เหมือนกับชื่อสุนัขบวกปี 1999 ไม่มีแพทเทิร์นใดจับสิ่งเหล่านี้ได้ ทีมงานจึงใช้แนวทางผสมผสาน (Composite Detector) ทั้ง Regex และโมเดลขนาดเล็กเข้าด้วยกัน โดยใช้ฟิลตอร์ความเป็นส่วนตัวของ OpenAI ที่ถูกควอนไทซ์เป็น int8 และส่งออกเป็น ONNX ซึ่งรันผ่าน ONNX Runtime ขนาดของน้ำหนักโมเดลและโทไนเซอร์รวมกันอยู่ที่ประมาณ 1.6 GB บนดิสก์
ขนาด 1.6 GB สร้างปัญหาให้กับแอปพลิเคชันที่สัญญาว่าจำทำงานอย่างเงียบๆ บนเมนูบาร์ ดังนั้น ฟีเจอร์นี้จึงถูกปิดไว้เป็นค่าเริ่มต้น และไฟล์น้ำหนักโมเดลจะถูกดาวน์โหลดมาเฉพาะเมื่อผู้ใช้เปิดใช้งานเท่านั้น ไฟล์ทั้งหมดจะถูกตรวจสอบความถูกต้องด้วย SHA-256 เพื่อป้องกันข้อผิดพลาด นอกจากนี้ การถอดรหัสผลลัพธ์จากโมเดลยังต้องใช้ Viterbi pass แบบมีเงื่อนไข เพื่อป้องกันการเปลี่ยนผ่านสถานะที่ผิดกฎหมาย และแปลงผลลัพธ์ให้อยู่ในรูปแบบช่วงข้อมูลที่สมบูรณ์
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น