พบข้อมูลรับรอง 1,379 รายการในไฟล์ตั้งค่า Claude Code 1,122 ไฟล์ หลังคำสั่งที่นักพัฒนาอนุมัติถูกบันทึกไว้ในไฟล์ตั้งค่าและถูกนำขึ้นคลัง GitHub สาธารณะ
Apiiro ระบุในรายงานที่เผยแพร่เมื่อวันที่ 5 ว่าได้ตรวจไฟล์ตั้งค่า 104,185 ไฟล์จากคลังสาธารณะ 103,617 แห่ง ระหว่างวันที่ 1–3 พฤศจิกายน พบข้อมูลรับรองในไฟล์ 1,122 ไฟล์ หรือ 1.1%
ช่องทางที่ทำให้ข้อมูลรั่วเกี่ยวข้องกับขั้นตอนอนุมัติการรันคำสั่ง หากผู้ใช้เลือก “อนุมัติและไม่ต้องถามอีก” Claude Code จะบันทึกคำสั่งที่อนุมัติไว้เป็นกฎอนุญาตในไฟล์ .claude/settings.local.json ของโปรเจกต์ หากคำสั่งมีรหัสผ่านหรือ API key ค่าดังกล่าวก็อาจถูกบันทึกไปด้วย
เอกสารการตั้งค่าของ Claude Code ระบุว่าไฟล์นี้เป็นการตั้งค่าเฉพาะผู้ใช้ในโปรเจกต์ เมื่อเครื่องมือสร้างไฟล์ไว้ใน Git repository ระบบจะเพิ่มไฟล์ลงในรายการยกเว้นส่วนกลางของผู้ใช้ แต่จะไม่เพิ่มลงใน .gitignore ของโปรเจกต์โดยอัตโนมัติ
ดังนั้น หากสร้างไฟล์ก่อนตั้ง repository หรือคัดลอกไปยังคอมพิวเตอร์เครื่องอื่น การตั้งค่ายกเว้นส่วนกลางเพียงอย่างเดียวอาจป้องกันการเผยแพร่ไฟล์ที่ Git ติดตามอยู่แล้วไม่ได้ ผู้ใช้ต้องเพิ่มไฟล์ลงใน .gitignore ของโปรเจกต์เองด้วย หากสร้างไฟล์ด้วยตนเอง
ในข้อมูลรับรอง 1,379 รายการที่พบ มี 636 รายการเป็นคีย์ที่ตรงกับรูปแบบของผู้ให้บริการ และอีก 743 รายการเป็นรหัสผ่านหรือโทเค็นที่พบอยู่ในบรรทัดเดียวกับโฮสต์สาธารณะ ข้อมูลเหล่านี้รวมรหัสผ่านฐานข้อมูล 379 รายการ, service role key ของ Supabase 122 รายการ และข้อมูลสำหรับเชื่อมต่อ SSH 43 รายการ
มีองค์กร 63 แห่งที่พบข้อมูลรับรองในไฟล์ตั้งค่าสาธารณะ บริษัทแห่งหนึ่งที่ได้รับแจ้งยืนยันว่าคีย์ที่เปิดเผยยังใช้งานได้ในขณะนั้น
ใน repository ที่มีข้อมูลรับรอง ไฟล์ตั้งค่าถูก commit ครั้งแรกเมื่อค่ามัธยฐาน 217 วันก่อนหน้า แสดงว่าไฟล์จำนวนมากอยู่ในคลังสาธารณะเป็นเวลานาน
ทีมวิจัยยังพบข้อมูลรับรองอีก 734 รายการในประวัติ Git ซึ่งไม่มีอยู่ในไฟล์ปัจจุบัน ข้อมูลดังกล่าวมาจากไฟล์เวอร์ชันก่อนหน้าใน 509 repository และเนื้อหาเดียวกันถูกทำซ้ำใน fork 211 แห่งของ 74 repository
เมื่อขยายขอบเขตการตรวจไปยังไฟล์ตั้งค่าที่ใช้ร่วมกัน บันทึกบทสนทนาของ agent และบันทึกส่งต่องาน พบข้อมูลรับรอง 2,539 รายการใน repository สาธารณะ 1,994 แห่ง ตัวเลขไฟล์ 1,122 ไฟล์จากการตรวจครั้งแรก ข้อมูลรับรอง 734 รายการจากประวัติก่อนหน้า และ repository ทั้งหมด 1,994 แห่งเป็นคนละตัวชี้วัด
เครื่องมือตรวจจับข้อมูลรับรองทั่วไปยังพลาดไฟล์บางส่วน Gitleaks ตรวจพบไฟล์ตั้งค่าที่มีข้อมูลรับรอง 564 จาก 1,122 ไฟล์ ส่วน TruffleHog ตรวจพบ 643 ไฟล์ และมี 215 ไฟล์ที่ทั้งสองเครื่องมือตรวจไม่พบ
ช่องว่างในการตรวจจับอาจเกิดจากรหัสผ่านที่ดูเหมือนคำทั่วไปเมื่ออยู่ในคำสั่ง หากเครื่องมือเน้นค้นหาคำนำหน้าคีย์เฉพาะบริการหรือข้อความสุ่ม รหัสผ่านที่อยู่หลัง mysql -p หรือ sshpass -p อาจถูกมองข้ามว่าเป็นส่วนหนึ่งของคำสั่งทั่วไป
บอริส เชอร์นี (Boris Cherny) ผู้รับผิดชอบ Claude Code กล่าวในความคิดเห็นบน Hacker News เมื่อวันที่ 7 ว่า “เรากำลังพิจารณาว่าจะทำอะไรได้บ้างเพื่อป้องกันเรื่องแบบนี้” เขาอธิบายว่า Claude Code ไม่เคยมีฟังก์ชันกรองข้อมูลลับย้อนหลัง และไฟล์เหล่านี้เป็นไฟล์ที่ผู้ใช้สร้างและนำขึ้นระบบควบคุมเวอร์ชันด้วยตนเอง
จาก repository 1,105 แห่งที่มีข้อมูลรับรองและสามารถติดตามได้ พบ 539 แห่งที่ commit ซึ่งระบุ Claude เป็นผู้ร่วมเขียนได้แก้ไขไฟล์ตั้งค่าดังกล่าว อย่างไรก็ตาม ข้อมูลนี้เพียงอย่างเดียวไม่เพียงพอที่จะสรุปว่า Claude เป็นผู้สร้างไฟล์ขึ้นครั้งแรกหรือนำไฟล์ไปเผยแพร่ใน repository สาธารณะ
Apiiro แนะนำให้เปลี่ยนข้อมูลรับรองที่เปิดเผย และนำไฟล์ที่ Git ติดตามอยู่แล้วออกจากรายการติดตามก่อนเพิ่มลงใน .gitignore ของโปรเจกต์ นอกจากนี้ยังเสนอให้เรียกใช้รหัสผ่านผ่าน environment variable แทนการใส่ไว้ในคำสั่งโดยตรง และอนุญาตเฉพาะรูปแบบคำสั่งที่จำเป็นแทนการอนุญาตคำสั่งทั้งหมด
ทีมวิจัยไม่ได้ใช้ข้อมูลรับรองที่พบเพื่อเข้าสู่ระบบหรือทดสอบการเชื่อมต่อกับโฮสต์ ดังนั้นข้อมูลในรายงานหมายถึงค่าที่ตรงกับรูปแบบคีย์ของบริการหรือพบร่วมกับโฮสต์สาธารณะ ไม่ได้หมายความว่าทุกรายการยังใช้งานได้ในปัจจุบัน
Comment 0