Docker-ийн мартагдсан түүхээс GitHub-ийн админ эрх рүү: AI агент Baseten-ийн дэд бүтцийг 25 минутад задлав
Програм хангамжийн дэд бүтцэд хамгийн аюултай цоорхой ихэвчлэн шинэ код биш, харин хэдийн мартагдсан хуучин бүтээцүүдэд (artifacts) нуугдаж байдаг. AI инференсийн чиглэлээр зах зээлд өндөр үнэлэгдэж, олон мянган компаниудын машин сургалтын загваруудыг ажиллуулдаг Baseten компани саяхан нэгэн ноцтой асуудалтай нүүр туллаа. Автономит кибер аюулгүй байдлын AI агент хөгжүүлэгч Strix баг Baseten-ийн дэд бүтцийг гаднаас нь туршиж үзэхэд уг агент ердөө 25 минутын дотор тэдний үндсэн бүтээгдэхүүн, GitOps кластер болон продакшн репозиторууд руу Admin эрхээр нэвтрэх боломжтойг илрүүлжээ.
Хамгийн жихүүцмээр нь: уг халдлагыг хүн биш, ямар ч урьдчилсан мэдээлэлгүй, зөвхөн домэйн нэрээр зэвсэглэсэн бие даасан AI агент бүрэн автоматаар гүйцэтгэсэн явдал юм.
25 минутын дотор юу болов?
Strix компанийн хувьд өөрсдийн AI агентуудыг ажиллуулах хурдан, хямд инференс үйлчилгээ хайж байсан бөгөөд Baseten-ийг сонгохын өмнө тэдний аюулгүй байдлыг шалгахаар шийджээ. Тэд Strix автономит пентестинг агентыг *.baseten.co домэйн рүү ямар ч нэвтрэх эрх, эх код эсвэл тусгай зааварчилгаагүйгээр "чөлөөтэй турш" хэмээн тавьсан байна.
AI агент нь хүний оролцоогүйгээр дараах дарааллаар мөшгилт хийжээ:
- Домэйны дэд бүтцийг сканнердаж, нийтэд нээлттэй (public) үлдээсэн Harbor container registry-г олсон.
- Тус бүртгэлээс Docker image татаж авах боломжтой эсэхийг бие даан шалгаж баталгаажуулсан.
- Эхний тааралдсан хуучин credential-ийг туршиж үзээд идэвхгүй болсныг тогтоосон.
- Дараагийн алхамдаа чингэлэгийн давхарга (layer) болон build history мета-өгөгдлийг гүнзгий задлан шинжилж, 2023 оны 3-р сард бичигдсэн нууц токеныг ухаж гаргаж ирсэн.
- Гарч ирсэн Personal Access Token (PAT)-ийг GitHub API-аар шалгаж, ямар эрхтэйг нь тогтоосон.
Үр дүн нь юу байсан бэ? basetenbot нэртэй уг токен нь Baseten-ийн үндсэн системийн эх код (main product repo), бүх кластеруудыг удирддаг GitOps репо, Homebrew tap болон хэрэглэгчдийн тусгай хувийн сангуудад Admin болон Push бүрэн эрхтэй болох нь батлагдсан юм. Хэрэв энэ боломжийг хорон санаатай этгээд ашигласан бол Baseten дээр байршиж буй олон зуун байгууллагын хувийн модел, нууц өгөгдөл, кластеруудыг бүхэлд нь атгах аюул нүүрлээд байв.
Алдааны цаад шалтгаан: Хөгжүүлэгчдийн нийтлэг Dockerfile алдаа
Энэхүү эмзэг байдал хаанаас үүссэн бэ? Хариулт нь өнөөг хүртэл олон зуун багуудын гаргадаг хялбарчилсан багцлалтын аргаас үүдэлтэй.
Baseten-ийн инженерүүд 2023 онд хувийн хамааралтай (private dependency) сангуудыг татаж авахын тулд Dockerfile дотор дараах бүтцийг ашигласан байв:
# Аюултай жишээ: Build argument-ээр токен дамжуулах
ARG GITHUB_TOKEN
RUN if [[ "${GITHUB_TOKEN}" != "" ]]; then \
git config --global --add url."https://${GITHUB_TOKEN}@github.com/".insteadOf "git@github.com:"; \
fi
Энд инженерүүдийн хувьд хоёр давхар алдаа гарсан байдаг:
- Build History болон ARG хадгалалт: Docker нь
ARG-аар орж ирсэн хувьсагчийн утгыг тухайн чингэлэгийн түүхэн metadata дотор бүртгэж хадгалдаг. Та image доторх файлыг устгасан ч,docker historyкоммандаар уг токен ил харагддаг. - Global тохиргоо үлдэх:
git config --globalашигласнаар Git-ийн тохиргооны файлд нэвтрэх нууц URL тэр чигээрээ файл болон үлддэг.
Үүн дээр нэмэгдээд тухайн image бүртгэгдсэн Harbor registry төслийг санамсаргүйгээр public тохиргоотой орхисон нь гаднын хэн ч татаж аваад бүтцийг нь задлах хаалгыг нээж өгчээ. Гурван жилийн турш хэн ч анзаараагүй тэрхүү токен ямар ч хугацааны хязгааргүйгээр (expiration date-гүй) амьд байсан нь асуудлыг туйлд нь хүргэсэн юм.
AI агентуудын эрин үе: Хуучин аюулгүй байдлын соёл өнгөрсөн
Baseten-ийн аюулгүй байдлын баг мэдээлэл авсан даруйдаа Harbor-ийг хааж, токеныг 24 цагийн дотор цуцалж (rotate хийж), жинхэнэ мэргэжлийн түвшинд шуурхай хариу арга хэмжээ авсан байна. Гэхдээ энэ үйл явдал салбарын хувьд маш чухал дохио боллоо:
- AI хакерууд амардаггүй, залхдаггүй: Өмнө нь аюулгүй байдлын шинжээч эсвэл хакерууд олон зуун хуучин чингэлэгийн түүхийг нэг бүрчлэн ухаж үзэх цаг заваар хомс байв. Харин орчин үеийн LLM суурьтай автономит агентууд (Strix, AutoDefense зэрэг) өгөгдлийн логик сэжмийг алдалгүй хөөж, "dead credential"-ийг туршиж, цааш давхаргыг нэвтлэн хэдхэн минутад цогц зураглал гаргаж чадаж байна.
- Dockerfile-д Secret Mount ашиглах нь стандарт болох ёстой: Хувийн репо татахдаа токенийг
ARGэсвэлENV-ээр дамжуулахаа бүрмөсөн зогсоох хэрэгтэй. Үүний оронд Docker BuildKit-ийн--mount=type=secretболон түр хугацааны SSH/OAuth session ашиглах нь цорын ганц аюулгүй арга юм. - Токены хүчинтэй хугацаа (TTL): Бүх төрлийн Personal Access Token болон Service Account-уудад хатуу expiration date тохируулах шаардлагатай. Хэзээ ч дуусдаггүй "forever" админ эрхтэй токен нь танай дэд бүтцийн цаг нь тохируулагдсан бөмбөг л гэсэн үг.
- Байгууллагууд "Өөрсдийгөө өдөр бүр хакердах" шаардлагатай: Зөвхөн source code дээр static scanning хийх хангалтгүй. Нийтэд ил гарсан хуучин registry, bucket, S3, staging орчнуудыг автономит AI агентуудаар байнга шалгуулж байх нь хамгаалалтын дараагийн үеийн стандарт болж байна.
Маргаашийн халдлага имэйл фишингээр биш, таны гурван жилийн өмнө мартаад орхисон нэг ширхэг Docker layer-ээс эхлэх болно. Дэд бүтцийнхээ аюулгүй байдлын аудит хийх цаг яг одоо иржээ.
Эх сурвалж: Strix Security Research Blog (strix.ai), Hacker News
Сэтгэгдэл
Ачаалж байна...