Нэг даралтаар 2,500 нууц түлхүүр цацагдав: Claude Code-ийн "Don't Ask Again" тохиргоо GitHub дээр шинэ аюул тарилаа
Терминал дээр ажилладаг AI кодинг агентууд хөгжүүлэгчдийн өдөр тутмын амьдралыг үлэмж хөнгөвчилж байна. Баазын асуудал шалгах, API дуудах, тест ажиллуулах бүрд тушаал бүрийг гараар бичихийн оронд AI агент бэлтгэж өгөөд хөгжүүлэгчээс зөвшөөрөл (confirmation) аваад цааш ажилладаг. Гэвч байн байн асуухаас залхсан инженерүүдийн байнга сонгодог "Yes, and don't ask again" буюу "Тийм, дахиж бүү асуу" гэдэг энгийн нэг товчлол өнөөдөр кибер аюулгүй байдлын томоохон хямралыг дагуулаад байна.
Аюулгүй байдлын Apiiro судалгааны багийн нийтэлсэн шинэ тайлангаар Claude Code-ийн энэхүү байнгын зөвшөөрлийн механизмаас болж GitHub дээрх нийтийн 1,994 репозитороос нийт 2,539 нууц түлхүүр, мэдээллийн сангийн нууц үг ил задгай цацагдсан нь тогтоогджээ.
"Don't Ask Again" яг цаанаа юу хийдэг вэ?
Claude Code анхдагч тохиргоогоороо бүрхүүл (shell) дээр дурын комманд гүйцэтгэхээсээ өмнө хэрэглэгчээс баталгаажуулалт хүсдэг. Хэрэв та "Yes, and don't ask again" гэсэн сонголтыг хийвэл уг хэрэгсэл дараа дараагийн удаа тухайн үйлдлийг асуухгүй автоматаар гүйцэтгэх зорилгоор төслийн .claude/settings.local.json файлд зөвшөөрөгдсөн дүрмийг (allow rule) бичиж үлдээдэг.
Асуудлын цөм нь Claude Code уг тушаалыг ерөнхий хэв шинж (жишээ нь npm test *) болгон хадгалахаас гадна, зарим тохиолдолд терминал дээр гүйцэтгэсэн яг бодит тушаалыг үг үсэггүй бүрэн эхээр нь (verbatim) тэмдэглэдэгт байна.
Бодит жишээ авч үзье: Хөгжүүлэгч баазын холболтоо шалгахын тулд Claude-д даалгавар өгөхөд Claude дараах тушаалыг санал болгосон гэж бодъё:
psql postgresql://admin:MySecretPassword2026@db.prod.internal:5432/app_db
Хэрэв хөгжүүлэгч үүнийг "Don't ask again" дарж зөвшөөрвөл дээрх бүтэн тушаал — тэр дундаа нууц үг нь тохиргооны .claude/settings.local.json файлд plaintext буюу шууд уншигдах хэлбэрээр хадгалагдана. Үүнтэй адил curl -H "Authorization: Bearer sk-ant-..." гэх мэт API түлхүүр агуулсан хүсэлтүүд ч яг энэ замаар файл дотор түгжигдэн үлддэг.
Global Git Ignore-ийн хуурмаг хамгаалалт
Anthropic-ийн баг уг эрсдэлийг огт тооцоолоогүй биш юм. Тэдний баримт бичигт дурдсанаар, Claude Code анх удаа Git репозитор дотор тохиргооны файлыг үүсгэх үедээ тухайн төхөөрөмжийн Global Git Ignore (~/.config/git/ignore эсвэл глобал тохиргоо) файл руу уг замын нэрийг нэмж, Git-ээр хянагдахаас автоматаар хамгаалдаг гэжээ.
Гэвч практик дээр энэ хамгаалалт нь дараах тохиолдлуудад бүрэн хүчингүй болж байна:
- Төслийн дотоод
.gitignore-д нэмэгддэггүй: Глобал тохиргоо зөвхөн тухайн нэг хөгжүүлэгчийн зөөврийн компьютер дээр л хүчинтэй. Төслийг өөр машин дээр clone хийх, багийн гишүүдтэй хуваалцах үед уг дүрэм байхгүй. - Аль хэдийн track хийгдсэн файлууд: Хэрэв
.claudeхавтас өмнө нь нэг л удааgit addхийгдсэн бол Global Git Ignore түүнийг хамгаалж чадахгүй. - AI агентын өөрийнх нь commit: Судлаачдын тогтоосноор нууц үг алдагдсан нийт репозиторын 539-д нь Claude агент өөрөө автоматаар commit хийхдээ энэхүү тохиргооны файлыг репозитортоо хавсарган push хийсэн байжээ.
Юу ил болов: Үүлэн баазын эрхээс эхлээд эмнэлгийн систем хүртэл
Apiiro баг GitHub дээрээс 104,185 ширхэг нийтэд нээлттэй settings.local.json хуулбарыг шүүж үзэхэд:
- 63 томоохон байгууллага, компани энэхүү алдаанд өртсөн байна.
- 379 мэдээллийн сангийн root/admin нууц үг (Azure PostgreSQL гэх мэт),
- 122 Supabase service-role түлхүүр,
- Square төлбөрийн системийн продакшн түлхүүрүүд,
- Цахим эмнэлгийн бүртгэлийн сангийн эзэмшигчийн нууц үг зэрэг шууд системд бүрэн нэвтрэх боломжтой 2,500 гаруй нууц ил задгай байжээ.
Судлаачид нэгэн компанийг сэрэмжлүүлэхэд тухайн компани түлхүүр нь үнэхээр ч идэвхтэй (live) байсныг баталж, яаралтай хүчингүй болгосон байна.
"Файлаа устгачихлаа" гэдэг бол шийдэл биш
Олон хөгжүүлэгч тохиргооны файлд нууц үгээ орхисноо мэдүүтээ файлаа git rm хийж commit хийгээд асуудал шийдэгдлээ гэж боддог. Гэвч:
- Git History: Файл өмнөх бүх commit түүхэнд хэвээр үлддэг.
- Forks & Mirrors: Хэн нэгэн эсвэл хайлтын ботууд уг репозиторыг аль хэдийн fork хийж, эсвэл өөртөө татаж авсан байх өндөр магадлалтай.
Иймд судлаачдын өгч буй хамгийн эхний зөвлөмж бол: "Rotate first, clean up later" буюу эхлээд систем дээрээсээ тухайн нууц үг, API түлхүүрийг нэн даруй хүчингүй болгож (revoke) шинэчлэх, дараа нь Git түүхээ цэвэрлэх явдал юм.
Хөгжүүлэгчид өөрсдийгөө хэрхэн хамгаалах вэ?
AI кодинг агентууд улам хүчирхэгжиж байгаа ч, бидний анхаарал сулрах ёсгүйг энэ явдал сануулж байна. Дараах алхмуудыг төсөлдөө нэн даруй хэрэгжүүлэхийг зөвлөж байна:
- Төслийнхөө
.gitignore-д шууд зааж өгөх: Зөвхөн Claude-ийн глобал тохиргоонд найдалгүй, төслийн үндсэн.gitignoreфайлдаа.claude/болон*.local.json-ийг заавал нэмэх хэрэгтэй. - Терминал дээр inline нууц үг хэзээ ч бүү бич: Тушаал дуудаж байхдаа
TOKEN=xxxxэсвэлpassword=...гэж шууд бичихийн оронд environment variable ашиглах, эсвэл.envфайл дотроос дуудах хэв маягийг баримтлах шаардлагатай. - Pre-commit hook ашиглах: Төсөлдөө
gitleaksэсвэлgit-secretsзэрэг хэрэгслүүдийг тохируулж, ямар нэг нууц түлхүүр код дотор орсон үед commit хийхийг автоматаар блоклодог байх нь зүйтэй. - Claude Code-ийн тохиргоог шалгах: Яг одоо өөрийнхөө төслийн
.claude/settings.local.jsonфайлыг нээгээд дотор нь ямар тушаалууд хадгалагдсаныг нүдээрээ шалгаж үзээрэй.
Агентын тав тухыг эдлэхдээ аюулгүй байдлын анхан шатны сахилга батаа мартаж болохгүйг энэхүү судалгаа бодитоор нотоллоо.
Эх сурвалж: Apiiro Security Research, The Hacker News, Cyber Security News
Сэтгэгдэл
Ачаалж байна...