Мэдээ

Ганц товшилтын гай: Claude Code-ийн "Don't ask again" тохиргооноос болж мянга мянган нууц түлхүүр GitHub дээр илчлэгдлээ

TOGTOKHTOGTOKH·2026 оны арван нэгдүгээр сарын 9·1 үзсэн·
Ганц товшилтын гай: Claude Code-ийн "Don't ask again" тохиргооноос болж мянга мянган нууц түлхүүр GitHub дээр илчлэгдлээ

Сүүлийн үед хиймэл оюун ухаанд суурилсан код бичих агент (AI coding agent) хэрэгслүүдийг туршиж, өдөр тутмын хөгжүүлэлтийн ажлаа автоматжуулж буй хөгжүүлэгчдийн тоо огцом нэмэгдэж байна. Ялангуяа терминал дээр шууд ажилладаг Anthropic-ийн Claude Code хэрэгслийг олон инженер идэвхтэй хэрэглэж эхэлсэн. Гэвч агентын ажиллах хурдыг нэмэгдүүлж, хөгжүүлэгчийн ажлыг хөнгөвчлөх зориулалттай нэгэн энгийн товч кибер аюулгүй байдлын томоохон эрсдэл үүсгэсэн нь дөнгөж сая илчлэгдлээ.

Кибер аюулгүй байдлын чиглэлээр дагнасан Apiiro судалгааны багийн нийтэлсэн тайланд дурдсанаар, Claude Code-ийн "Yes, and don't ask again" үйлдлийн улмаас олон зуун байгууллага, хөгжүүлэгчдийн production датабэйс болон серверийн нууц үгс нээлттэй GitHub репозиторуудад алдагдсан байна.

Асуудлын үндэс: "Approval fatigue" ба settings.local.json

Claude Code нь терминал дээр ямар нэгэн shell команд (жишээ нь npm test, бааз руу холбогдох командууд г.м.) ажиллуулах бүртээ хөгжүүлэгчээс зөвшөөрөл шаарддаг аюулгүй байдлын системтэй. Гэвч ажил дундуур минут тутамд зөвшөөрөл нэхэх нь хөгжүүлэгчдэд төвөг учруулж, "зөвшөөрлөөс залхах" (approval fatigue) үзэгдэл үүсгэдэг.

Иймд уг хэрэгсэл дахин асуухгүй байх "Yes, and don't ask again" гэсэн сонголтыг санал болгодог.

Асуудал яг эндээс эхэлнэ: Хөгжүүлэгч энэ товчийг дарах үед Claude Code тухайн зөвшөөрсөн командыг яг тэр чигээр нь төслийн .claude/settings.local.json файлд бичиж хадгалдаг. Хэрэв таны ажиллуулсан команд дотор:

  • Мэдээллийн сангийн нууц үг бүхий холболтын string (PGPASSWORD=..., mysql -u... -p...),
  • Серверийн нэвтрэх эрх (sshpass -p...),
  • Эсвэл хувийн API токен агуулагдаж байсан бол тэр бүхэн уг тохиргооны файлд энгийн текстээр (plain text) бичигдэж үлддэг.

Git хамгаалалт яагаад бүтэлгүйтэв?

Anthropic-ийн баримт бичигт дурдсанаар, .claude/settings.local.json нь локал хэрэглээний файл бөгөөд Git-д хуулагдах ёсгүй байв. Claude Code тухайн файлыг анх үүсгэхдээ хөгжүүлэгчийн компьютерын глобал git excludes (~/.config/git/ignore эсвэл глобал тохиргоо) дээр тус файлыг автоматаар нэмдэг.

Гэвч энэ хамгаалалт нь дараах суурь цоорхойтой байв:

  1. Төслийн .gitignore-д ордоггүй: Энэ дүрмийг төслийн өөрийнх нь .gitignore файлд бичдэггүй тул зөвхөн тухайн нэг машин дээр л хүчинтэй.
  2. Багийн хөгжүүлэлт ба клоон: Төслийг өөр компьютерт clone хийх, багийн өөр гишүүн татаж авах, эсвэл өөр CI/CD орчинд ажиллуулах үед уг хамгаалалт ажилладаггүй.
  3. Claude өөрөө commit хийх: Хамгийн хачирхалтай нь, ил гарсан төслүүдийн тэн хагаст нь уг файлыг хөгжүүлэгч биш, харин Claude Code агент өөрөө commit хийхдээ хамтад нь багцлаад push хийчихсэн байжээ.

Ил болсон тоо баримтууд

Apiiro-ийн судалгаагаар нээлттэй GitHub дээрээс нийт 104,185 ширхэг settings.local.json файл олдсон байна. Тэдгээрээс:

  • 1,122 файл дотор дор хаяж нэг бодит нууц түлхүүр байсан бөгөөд нийт 1,379 нууц мэдээлэл ил байжээ.
  • Хэрэв өмнөх Git commit түүх (history), fork-ууд болон хадгалагдсан чатын бүртгэлүүдийг нэмж тооцвол нийт 1,994 репозиторт 2,539 нууц түлхүүр ил задгай байгааг илрүүлсэн байна.
  • Түлхүүрүүдийн дунд:
    • 379 мэдээллийн сангийн нууц үг (үүнд Azure Postgres-ийн production бааз багтсан),
    • 122 Supabase service-role түлхүүр,
    • 43 серверийн SSH нэвтрэх эрх (зарим нь бүр root эрх),
    • GitHub, GitLab, npm болон AWS-ийн өндөр эрхтэй түлхүүрүүд,
    • Нэгэн байгууллагын хувьд өвчтөний эмнэлгийн түүхийг хадгалдаг мэдээллийн сангийн үндсэн эзэмшигчийн (owner) нууц үг ч ил цацагдсан байв.

Аюулгүй байдлын сканнерууд болох Gitleaks, TruffleHog зэрэг хэрэгслүүд эдгээр нууцын ихэнхийг илрүүлж чадаагүй нь команд дотор параметр байдлаар нуугдсан байсантай холбоотой байжээ.

Anthropic-ийн хариу үйлдэл

Энэхүү судалгааны дараа Claude Code-ийн төслийн удирдагч Борис Черный (Boris Cherny) Hacker News хэлэлцүүлэгт хариу өгсөн юм. Түүний тайлбарласнаар, өмнө нь Claude Code нь нууц түлхүүрүүдийг автоматаар таньж шүүх (secret scrubbing) үйлдэл хийдэггүй байсан бөгөөд цаашид үүнийг хэрхэн сэргийлэх арга замыг судалж байгаа ажээ.

Мөн тэрээр хөгжүүлэгчдийг команд бүрийг зөвшөөрч жагсаалт үүсгэхийн оронд Claude Code-ийн шинэ "auto mode" горимыг ашиглах, мөн GitHub-ийн secret scanning хамгаалалтыг заавал асаахыг зөвлөсөн байна.

Хөгжүүлэгчид яг одоо юу хийх ёстой вэ?

Хэрэв та төсөлдөө Claude Code ашигладаг бол дараах алхмуудыг нэн даруй хэрэгжүүлэхийг зөвлөж байна:

  1. Түлхүүрүүдээ яаралтай солих (Rotate): Хамгийн чухал нь зүгээр л тухайн файлыг устгаад орхих биш юм. Git-ээс файлыг устгасан ч хуучин commit түүх, clone болон fork хийсэн салбаруудад үлддэг. Иймд өмнө нь тухайн төсөлд ашиглаж байсан бүх API түлхүүр, мэдээллийн сангийн нууц үгээ шууд хүчингүй болгож (rotate) шинэчлэх хэрэгтэй.

  2. .gitignore файлдаа нэмэх: Төслийнхөө үндсэн .gitignore файлын эхэнд дараах мөрийг шууд нэмж оруул:

.claude/
.claude/settings.local.json

Энэ нь таны файлыг ямар ч орчин, ямар ч машин дээр санамсаргүй commit хийгдэхээс хамгаална.

  1. Команд дээр нууц үг бичихгүй байх: Терминалын команд дунд хэзээ ч нууц түлхүүр, нууц үгийг шууд бичиж ажиллуулахгүй байх хэрэгтэй. Үүний оронд .env файл болон орчны хувьсагчдыг (environment variables) ашиглах стандарт баримтлах нь зүйтэй.

  2. GitHub Secret Scanning асаах: Байгууллагын болон хувийн репозиторуудынхаа Settings -> Code security хэсгээс Secret Scanning болон Push Protection-ийг заавал идэвхжүүлээрэй.

AI туслахууд бидний бүтээмжийг асар өндөрт гаргаж байгаа хэдий ч системийн эрх олголт, файлын хамгаалалт дээр сонор сэрэмжээ сулруулж болохгүйг энэ явдал санууллаа.

Эх сурвалж:

  • Apiiro Research: "Coding Agents Are Leaking Your Secrets to GitHub"
  • The Hacker News: "Claude Code's 'Don't Ask Again' File Exposes Passwords and Keys in 1,122 Public Copies on GitHub"
  • Hacker News Discussion (thread #50407882)

Сэтгэгдэл

Ачаалж байна...