ไฟล์ตั้งค่า 104,185 ไฟล์เปิดสาธารณะบน GitHub: Claude Code รั่วความลับอย่างไร?
โดย Nokka (นก-กา) | 10 พฤศจิกายน 2026 บทความนี้เขียนโดย AI (deepseek-v4.1-flash · ผู้ให้บริการโมเดล: ollama-cloud) ผ่าน Hermes Agent ภายใต้การควบคุมและตรวจสอบคุณภาพโดยมนุษย์ - Nokka (นก-กา) Apiiro เปิดผลวิจัยเมื่อวัน
โดย Nokka (นก-กา) | 10 พฤศจิกายน 2026
บทความนี้เขียนโดย AI (deepseek-v4.1-flash · ผู้ให้บริการโมเดล: ollama-cloud) ผ่าน Hermes Agent ภายใต้การควบคุมและตรวจสอบคุณภาพโดยมนุษย์ - Nokka (นก-กา)
Apiiro เปิดผลวิจัยเมื่อวันที่ 5 พฤศจิกายน 2026 [1] ว่าเจอไฟล์ .claude/settings.local.json เปิดสาธารณะบน GitHub ถึง 104,185 ไฟล์ ใน 103,617 รีโป [1][2]
ในจำนวนนั้น 1,122 ไฟล์มีข้อมูลรับรองจริงอยู่ข้างใน รวมกันได้ 1,379 ความลับ [1]
เมื่อนับทุกแหล่งที่ทีมวิจัยตรวจ ทั้ง git history, ไฟล์ settings.json ที่ทีม commit และ transcript ตัวเลขรวมคือ 2,539 ความลับ ใน 1,994 รีโป กระทบ 63 องค์กร [1]
ความลับที่พบมีตั้งแต่รหัสผ่านฐานข้อมูล, service-role key ของ Supabase, AWS key, npm token ไปจนถึงรหัส root ของ SSH [1]
และจุดที่ทำให้ผมหยุดอ่านคือกลไกของมัน เพราะมันเรียบง่ายจนน่ากลัว
กลไกที่ทำให้ความลับหลุด
เมื่อคุณสั่งให้ Claude Code ต่อฐานข้อมูลหรือเรียก API คำสั่งที่มันเสนอจะมีรหัสผ่านติดมาด้วย เพราะถ้าไม่มีรหัสก็ทำงานไม่ได้ [1]
Claude Code จะถามก่อนรันทุกครั้ง
แต่พอคุณกด "Yes, and don't ask again" มันจะบันทึกคำสั่งเต็มพร้อมรหัสลงไฟล์ .claude/settings.local.json ในโฟลเดอร์โปรเจกต์ เพื่อไม่ต้องถามอีก [1]
ไฟล์นี้ถูกออกแบบให้อยู่บนเครื่องนักพัฒนา และ Claude Code พยายามกันโดยใส่ชื่อไฟล์ใน global gitignore ของเครื่อง [1]
แต่ไม่ได้ใส่ใน .gitignore ของรีโป
ดังนั้นถ้าโฟลเดอร์นั้นกลายเป็นรีโปทีหลัง หรือมีคน clone ไปเครื่องอื่น ไฟล์ก็หลุดไปด้วย [1]
ไม่ใช่ความผิดของโมเดล
Apiiro ระบุชัดว่านี่เป็นพฤติกรรมของตัว Claude Code ไม่ใช่ของโมเดล
ทีมวิจัยทำซ้ำได้กับ Opus 5.5 และ Fable 5.1 [1]
แปลว่าการเปลี่ยนไปใช้โมเดลใหม่ไม่ได้แก้ปัญหา เพราะต้นเหตุอยู่ที่วิธีเก็บ permission rule ไม่ใช่ความสามารถของโมเดล
ตัวเลขที่ควรอ่านให้ถูก
- 104,185 ไฟล์ที่เปิดสาธารณะ
- 1,122 ไฟล์ที่มีข้อมูลรับรองจริง
- 2,539 ความลับจากทุกแหล่ง
- 1,994 รีโปที่ได้รับผลกระทบ
- 63 องค์กร
ตัวเลข 2,539 มาจากหลายแหล่ง ไม่ใช่แค่ไฟล์ settings.local.json เพราะทีมวิจัยยังพบความลับอีก 1,160 จุดใน git history, ใน settings.json ที่ทีม commit ตั้งใจ และใน transcript แชทของเอเจนต์ที่ถูกเก็บไว้ในรีโป [1]
ข้อจำกัดของงานวิจัยคือ ทีมไม่ได้ใช้หรือทดสอบข้อมูลรับรองใด ๆ และไม่ได้ติดต่อโฮสต์ปลายทาง คำว่า "ความลับจริง" จึงหมายถึงข้อมูลที่ตรงรูปแบบของผู้ให้บริการหรือชี้ไปที่โฮสต์สาธารณะ ไม่ใช่ข้อมูลที่ยืนยันแล้วว่าใช้ได้ [1]
Anthropic ตอบว่าอะไร
Boris Cherny จากทีม Claude Code ตอบบน Hacker News วันที่ 7 พฤศจิกายน 2026 [3]
เขาให้เหตุผลสามข้อที่ควรบันทึกไว้ด้วย
หนึ่ง ไฟล์นี้มีไว้ให้อยู่บนเครื่องและไม่ควรถูก commit ขึ้น source control Claude Code จะใส่ global gitignore ให้เมื่อมันสร้างไฟล์เอง ในกรณีที่พบจำนวนมาก ไฟล์ถูกสร้างและ commit ด้วยมือ [3]
ข้อนี้มีข้อมูลหักล้างอยู่ในรายงานของ The Hacker News เช่นกัน ใน 539 จาก 1,105 รีโปที่ทีมวิจัยตามรอยได้ มีคอมมิตที่ระบุชื่อ Claude เป็นผู้ร่วมเขียนและแก้ไฟล์นี้ [2]
สอง เขาแนะนำให้ใช้ auto mode แทนการสะสม permission rule [3]
สาม เขาบอกว่าผู้ใช้ควรเปิด secret scanning ที่โฮสต์ไว้ด้วย [3]
ในอีกคอมเมนต์ เขาระบุว่ากำลังทดลองหลายแนวทาง ทั้งทำให้ auto mode จับกรณีนี้ได้ ใส่ secret scanning พื้นฐาน และแนวคิดอื่น ๆ [4]
และเมื่อมีคนท้วงว่า auto mode ก็เกิดปัญหาเดียวกันได้ เขาตอบรับว่าเป็นข้อสังเกตที่ดี [5]
ยังไม่มีกำหนดการหรือรายละเอียดว่าจะออกเมื่อไหร่
สิ่งที่ต้องทำวันนี้
ถ้าเครื่องคุณมี Claude Code อยู่ สี่ข้อนี้ทำได้เลย
1. ค้นทั้ง org ด้วย GitHub code search: .claude/settings.local.json
2. ตรวจ git history ของทุกรีโป ไม่ใช่แค่ไฟล์ที่เห็นตอนนี้
3. เปลี่ยนรหัสทุกตัวที่พบก่อน แล้วค่อยลบไฟล์
4. เพิ่ม .claude/settings.local.json ลง .gitignore ของทุกโปรเจกต์
ข้อสามสำคัญที่สุด เพราะการลบไฟล์ไม่ช่วยอะไรถ้ามี fork หรือ clone เก็บสำเนาไว้ [1]
และถ้าข้อมูลที่หลุดเป็นข้อมูลลูกค้า องค์กรไทยควรให้ฝ่ายกฎหมายประเมินหน้าที่ตาม PDPA ด้วย ไม่ใช่แค่เปลี่ยนรหัส
ตัวอย่างที่เห็นได้บ่อย
ตัวอย่างเช่น นักพัฒนาที่ต่อฐานข้อมูล staging ไว้ใน .env แล้วสั่งให้เอเจนต์รัน migration
คำสั่งที่ถูกบันทึกจะมีทั้งรหัสผ่านและชื่อโฮสต์อยู่ในบรรทัดเดียว
ถ้ารีโปนั้นเป็น public แม้เพียงชั่วคราว ข้อมูลก็อยู่นอกองค์กรแล้ว
ข้อควรระวัง
งานวิจัยนี้ตรวจไฟล์ที่เปิดสาธารณะบน GitHub เป็นหลัก และยังพบกรณีบน Hugging Face Spaces 126 ไฟล์จาก 31,053 และ GitLab 2 ไฟล์จาก 69 [1]
ไม่ได้หมายความว่ารีโป private จะปลอดภัย เพราะไฟล์เดียวกันอาจถูก commit ไว้ในประวัติและหลุดตอนเปลี่ยน visibility
ผมจึงคิดว่าการตรวจควรทำกับทุก org ไม่ใช่เฉพาะรีโปที่ตั้งใจเปิด
คำตอบของผม
เครื่องมือที่ช่วยให้เราทำงานเร็วขึ้นมักพาเอาข้อมูลที่ควรอยู่ในเครื่องออกไปด้วย
Claude Code ไม่ได้ทำอะไรที่ผิดกฎ แต่การออกแบบให้จำคำสั่งพร้อมความลับแล้วเก็บไว้ในโฟลเดอร์โปรเจกต์ คือช่องที่ต้องปิด
ถ้าคุณใช้เอเจนต์เขียนโค้ดในทีม วันนี้ควรใช้เวลาสิบนาทีค้นหาไฟล์นี้ใน org ของคุณ
คุณเจอกี่ไฟล์?
แหล่งอ้างอิง
[1] Apiiro, Coding Agents Are Leaking Secrets on GitHub: The "Don't Ask Again" Problem, 5 พฤศจิกายน 2026 https://apiiro.com/blog/coding-agents-leaking-secrets-github-dont-ask-again/
[2] The Hacker News, Claude Code's "Don't Ask Again" File Exposes Passwords and Keys in 1,122 Public Copies on GitHub, 7 พฤศจิกายน 2026 https://thehackernews.com/2026/11/claude-codes-dont-ask-again-file.html
[3] Boris Cherny (bcherny), ความเห็นบน Hacker News, 7 พฤศจิกายน 2026 https://news.ycombinator.com/item?id=50408126
[4] Boris Cherny (bcherny), ความเห็นบน Hacker News, 7 พฤศจิกายน 2026 https://news.ycombinator.com/item?id=50408176
[5] Boris Cherny (bcherny), ความเห็นบน Hacker News, 7 พฤศจิกายน 2026 https://news.ycombinator.com/item?id=50408250
Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.