GitHub npm болон Actions-ийн Default тохиргоонуудыг чангарууллаа: Нийлүүлэлтийн сүлжээний аюулгүй байдлын шинэ эрин үе
Хөгжүүлэгчдийн өдөр тутмын хэрэглээ болсон open-source экосистем болон CI/CD пайплайн руу чиглэсэн нийлүүлэлтийн сүлжээний халдлагууд (supply chain attacks) сүүлийн жилүүдэд эрс нэмэгдэж байна. Үүний эсрэг GitHub компани npm болон GitHub Actions дээр хийгдсэн аюулгүй байдлын цуврал шинэчлэлтүүдийг нэгтгэн танилцууллаа. Энэхүү шинэчлэлтийн гол онцлог нь хөгжүүлэгчид өөрсдөө нэмэлт тохиргоо сонгох биш, харин шууд дефолт (default) тохиргоог чангаруулж өгсөн явдал юм.
Энэхүү алхам нь open-source сангууд болон автоматжуулсан пайплайны аюулгүй байдлыг эрс дээшлүүлж байгаа ч зарим талаар хөгжүүлэгчдийн workflow-д хугацааны саатал үүсгэж, технологийн нийгэмлэгийн дунд томоохон хэлэлцүүлэг дагуулаад байна.
1. npm Хөгжүүлэгчдийн Аккаунтыг Хамгаалах Шинэ Бодлого
npm экосистемд гардаг хамгийн аюултай халдлагуудын нэг бол олон сая таталттай (high-impact) npm багцуудын эзэмшигчийн аккаунт хакердуулах буюу account takeover (ATO) тохиолдол байдаг. Энэ эрсдэлийг бууруулахын тулд GitHub дараах өөрчлөлтүүдийг нэвтрүүлжээ:
- 72 цагийн Read-Only Freeze: Шүүмжлэлт өндөртэй, чухал npm аккаунтын цахим шуудан эсвэл 2FA (Two-Factor Authentication) нэвтрэх тохиргоо сэргээгдэх буюу өөрчлөгдсөн тохиолдолд тухайн аккаунтыг шууд 72 цагийн турш "Read-Only" төлөвт шилжүүлнэ. Энэ хугацаанд ямар нэгэн шинэ багц эсвэл шинэчлэлт (publish) нийтлэх боломжгүй болох юм. Энэ нь хакерууд хулгайлсан аккаунтаараа хортой код (malicious package) шууд тараахаас сэргийлнэ.
- npm Staged Publishing: Шинээр нэвтэрч буй Staged Publishing функц нь багцыг шууд live болгохын оронд дараагийн шатны шалгалтад оруулдаг. Багцыг хэрэглэгчдийн төхөөрөмж дээр суулгах боломжтой болгохоос өмнө maintainer-аас 2FA баталгаажуулалт болон нэмэлт зөвшөөрөл шаардана.
- npm v12 дээр Install Scripts-ийг Хязгаарлах: npm-ийн шинэ v12 хувилбар дээр
preinstall,postinstallзэрэг скриптүүдийг дефолтоор хориглосон ба алсын сүлжээнээс (remote scripts) шууд татаж ажиллуулахыг хориглолоо. Багц суулгах явцад хортой код ажиллах (arbitrary code execution) тохиолдол үүгээр эрс багасна.
2. GitHub Actions ба CI/CD Орчныг Чангаруулсан нь
CI/CD пайплайн нь багийн бэлэн кодыг серверт автоматаар deploy хийдэг тул хакеруудын гол бай болдог. GitHub Actions дээр хийгдсэн дефолт өөрчлөлтүүд:
actions/checkoutба Untrusted Fork Блоклолт: Гадны эх сурвалжаас буюу итгэмжлэгдээгүй fork-оос орж ирж буй Pull Request (PR) дээр workflow ажиллах үедactions/checkoutнь дефолтоор кодын гүйцэтгэлийг хориглох буюу хязгаарлагдмал орчинд ажиллуулна. Ингэснээр fork PR ашиглан repository secret болон access token-ийг хулгайлах боломжийг хааж байна.- Read-Only Actions Cache: Итгэмжлэгдээгүй триггерээр (untrusted triggers) эхэлсэн workflow-уудад GitHub Actions-ийн кэш (cache) нь зөвхөн унших (read-only) эрхтэй байна. Энэ нь биедээ хортой кэш бичиж, дараагийн албан ёсны build-ийг хордуулах (cache poisoning attack) эрсдэлээс бүрэн хамгаална.
- Workflow Execution Policies: Байгууллагын (Enterprise) хэмжээнд workflow ажиллах зөвшөөрлийн бодлогыг төвлөрсөн байдлаар удирдах боломжтой болж, зөвхөн баталгаажсан Action-уудыг пайплайнд ашиглах хатуу дүрэм журам үйлчилнэ.
3. Нийгэмлэгийн Дебат: "Хүлээх Хугацаа" уу, эсвэл "Багцын Сертификат (Signing)" үү?
Эдгээр дефолт тохиргоонууд нь аюулгүй байдлыг эрс дээшлүүлж байгаа ч Hacker News болон хөгжүүлэгчдийн форум дээр багагүй дебат үүсгээд байна.
Зарим хөгжүүлэгчид 72 цагийн хүлээх хугацаа (waiting period) нь чухал аюулгүй байдлын patch буюу hotfix шуурхай нэвтрүүлэх шаардлагатай үед саатал үүсгэж байна гэж шүүмжилжээ. Мөн тэд "Хүлээх хугацаа зааж хөгжүүлэлтийг удаашруулахын оронд зохиогчийн дижитал гарын үсэг (author-side package signing / Sigstore)-ийг заавал биелүүлэх стандарт болгох нь илүү оновчтой шийдэл" гэж үзэж байна.
Аюулгүй байдлын шинжээчдийн зүгээс харин олонх хөгжүүлэгчдийн дунд 2FA сэргээх процесс нь аккаунт хакердуулсны шинж тэмдэг байх нь өндөр байдаг тул 72 цагийн "зогсолт" нь нийлүүлэлтийн сүлжээнд хэдэн сая хэрэглэгчид хортой багц хүрэхээс хамгаалах хамгийн практик шийдэл гэж хамгаалж байна.
4. Хөгжүүлэгчид болон DevOps Багууд Юунд Анхаарах Вэ?
Тус шинэчлэлтүүд нь open-source төсөл хөгжүүлэгчид болон байгууллагын DevOps инженерүүдээс дараах алхмуудыг хийхийг шаардаж байна:
- npm Maintainer Тохиргоогоо Шалгах: Хэрэв та олон нийтийн npm багц эзэмшдэг бол 2FA болон цахим шуудангийн тохиргоогоо урьдчилан баталгаажуулж, яаралтай үед аккаунтаа Read-Only freeze-д оруулахаас сэргийлэх.
- GitHub Actions Workflow-ийн Эрхийг Хянах: Fork PR дээр ажилладаг автомат тест болон CI пайплайндаа
read-onlyкэш болонactions/checkoutтохиргоонууд ямар зарчмаар ажиллаж байгааг шалгах. - npm v12 болон Staged Publishing-д Бэлтгэх: Багц нийтлэх (publish) процессыг автоматжуулсан скриптүүд дээрээ 2FA challenge болон staged зөвшөөрлийн алхмыг оруулж өгөх.
Дүгнэлт
GitHub-ийн хийсэн энэхүү алхам нь "Security by Default" буюу аюулгүй байдлыг анхнаас нь заавал биелүүлэх зарчим руу шилжиж буйн тод илрэл юм. Хөгжүүлэгчдийн хувьд бага зэргийн нэмэлт алхам, хүлээлт үүсч болох ч open-source экосистемийг бүхэлд нь аюулгүй байлгахад энэхүү чангаруулалт чухал үүрэг гүйцэтгэх болно.
Эх сурвалж: InfoQ - GitHub Hardens npm and Actions Defaults
Сэтгэгдэл
Ачаалж байна...