Ko'rinmas kod orqali GitHub va boshqa omborlarga hujum uyushtirildi

Tadqiqotchilar ta'minot zanjiri hujumini aniqlaganliklarini ma'lum qilishdi. Bu hujum omborlarni ko'rinmas kodni o'z ichiga olgan zararli paketlar bilan to'ldirib yubormoqda. Ushbu yangi usul an'anaviy himoya vositalarini chalg'itib, tahdidlarni aniqlashda qiyinchilik tug'dirmoqda.

Aikido Security firmasi tadqiqotchilari juma kuni ma'lum qilishicha, ular 3-martdan 9-martgacha bo'lgan muddatda GitHubga yuklangan 151 ta zararli paketni topishgan. Bunday ta'minot zanjiri hujumlari deyarli o'n yildan buyon keng tarqalgan. Ular odatda keng qo'llaniladigan kod kutubxonalariga o'xshash nom va kodga ega bo'lgan zararli paketlarni yuklash orqali ishlaydi, bu bilan ishlab chiquvchilarni adashtirib, ularni o'z dasturiy ta'minotiga kiritishga majbur qiladi. Ba'zi holatlarda, bu zararli paketlar minglab marta yuklab olinadi.

Mudofa tizimlari hech narsani ko‘rmaydi. Dekoderlar bajariladigan kodni aniqlaydi

Aikido tomonidan shu oyda topilgan paketlar yangi texnikani qo‘llagan: ular deyarli barcha tahrirlovchilar, terminallar va kodni ko‘rib chiqish interfeyslarida ko‘rinmaydigan koddan tanlab foydalanadi. Kodning ko‘p qismi odatiy, o‘qiladigan shaklda ko‘rinsa-da, zararli funksiyalar va yuklamalar – ya'ni xavfli xatti-harakatlarning odatiy belgilari – inson ko‘ziga mutlaqo ko‘rinmas bo‘lgan Unikod belgilarida ifodalangan. Aikido o‘tgan yili birinchi marta aniqlagan bu taktika qo‘lda kodni ko‘rib chiqish va boshqa an'anaviy himoya usullarini deyarli foydasiz holga keltiradi. Bu hujumlardan zarar ko‘rgan boshqa omborlar qatoriga NPM va Open VSX kiradi.

Zararli paketlarni aniqlash yanada qiyinlashadi, chunki ularning ko'rinadigan qismlari yuqori sifatli qilib tayyorlangan.

“Zararli in'eksiyalar shubhali kommitlar ko‘rinishida kelmaydi”, deb yozadi Aikido tadqiqotchilari. “Atrofidagi o‘zgarishlar realistik: hujjatlardagi kichik tuzatishlar, versiya yangilanishlari, kodni biroz qayta ishlash va xatolar tuzatishlar har bir maqsadli loyihaga uslubiy jihatdan mos keladi.”

Tadqiqotchilar "Glassworm" – ular hujum guruhiga bergan nom – ushbu ishonchli ko‘rinishdagi qonuniy paketlarni yaratish uchun Katta til modellari (KTMlar) dan foydalanayotganidan shubha qilishmoqda. “Biz hozir ko‘rayotgan miqyosda, turli kod bazalarida 151+ ta maxsus kod o‘zgarishlarini qo‘lda tayyorlash imkonsizdir”, deb tushuntirishdi ular. Shu guruhni kuzatib borayotgan Koi nomli xavfsizlik firmasi ham guruh AI dan foydalanayotganidan shubhalanayotganini ma'lum qildi.

Ko‘rinmas kod qanday ishlaydi?

Ko‘rinmas kod Shaxsiy foydalanish hududlari (Private Use Areas – PUA) yordamida yaratiladi. Bular Unikod spesifikatsiyasida emoji, bayroqlar va boshqa belgilarni aniqlash uchun shaxsiy foydalanishga ajratilgan maxsus belgilar diapazonidir. Ushbu kod nuqtalari kompyuterga kiritilganda AQSh alifbosining har bir harfini ifodalaydi, ammo ularning natijasi insonlar uchun mutlaqo ko‘rinmas bo‘ladi. Kodni ko‘rib chiqadigan yoki statik tahlil vositalaridan foydalanadigan odamlar faqat bo‘sh joy yoki bo‘sh satrlarni ko‘radi. JavaScript interpretatori uchun esa bu kod nuqtalari bajariladigan kodga aylanadi.

Ko'rinmas Unikod belgilari o‘nlab yillar oldin ishlab chiqilgan va keyinchalik deyarli unutilgan edi. 2024-yilgacha, ya'ni xakerlar bu belgilardan AI dvigatellariga kiritiladigan zararli ko‘rsatmalarni yashirish uchun foydalana boshlagunga qadar. Matn insonlar va matn skanerlari uchun ko‘rinmas bo‘lsa-da, KTMlar ularni o‘qish va zararli ko‘rsatmalarga amal qilishda deyarli hech qanday qiyinchilikka duch kelmagan. Shundan so‘ng, AI dvigatellari ushbu belgilardan foydalanishni cheklash uchun himoya vositalarini ishlab chiqdi, ammo bunday himoya choralari vaqti-vaqti bilan chetlab o‘tiladi.

O'shandan beri Unikod texnikasi an'anaviy zararli dastur hujumlarida ham qo'llanila boshladi. Aikido juma kuni e'lon qilgan tahlilida, hujumchilar ko'rinmas belgilar yordamida zararli yuklamani kodlaganliklarini aniqladi. Kodni tekshirish hech qanday shubhali narsani ko'rsatmaydi. Biroq, JavaScript ishga tushganda, kichik bir dekoder haqiqiy baytlarni ajratib oladi va ularni eval() funksiyasiga uzatadi.

const s = v => [...v].map(w => (
  w = w.codePointAt(0),
  w >= 0xFE00 && w <= 0xFE0F ? w - 0xFE00 :
  w >= 0xE0100 && w <= 0xE01EF ? w - 0xE0100 + 16 : null
)).filter(n => n !== null);

//
eval(Buffer.from(s(``)).toString('utf-8'));

“s() funksiyasiga uzatilgan teskari tirnoq ichidagi matn har qanday ko‘ruvchida bo‘sh ko‘rinadi, ammo u ko‘rinmas belgilar bilan to‘ldirilgan bo‘lib, ular dekodlangach, to‘liq zararli yuklamani hosil qiladi”, deb tushuntirdi Aikido. “O‘tgan holatlarda, bu dekodlangan yuklama Solana-ni yetkazib berish kanali sifatida foydalanib, ikkinchi bosqichli skriptni olib kelib ijro etgan, bu esa tokenlar, hisobga olish ma'lumotlari va sirlarni o‘g‘irlashga qodir bo‘lgan.”

GitHubda yangi paketlar aniqlanganidan so‘ng, tadqiqotchilar npm va VS Code bozorlarida ham shunga o‘xshashlarini topishgan. Aikido ma'lumotlariga ko‘ra, aniqlangan 151 ta paket kampaniya bo‘ylab tarqalgan kichik bir qism bo‘lishi mumkin, chunki ko‘plari dastlab yuklangandan beri o‘chirib tashlangan.

Ta'minot zanjiri hujumlaridan himoyalanishning eng yaxshi usuli – loyihalarga kiritishdan oldin paketlar va ularning bog‘liqliklarini diqqat bilan tekshirishdir. Bu paket nomlarini sinchkovlik bilan o‘rganish va imlo xatolarini qidirishni ham o‘z ichiga oladi. Agar KTMlar (Katta til modellari)dan foydalanish haqidagi shubhalar to‘g‘ri bo‘lsa, ayniqsa ko‘rinmas Unikod belgilari zararli yuklamalarni kodlashda qo‘llanilsa, zararli paketlar tobora ko‘proq qonuniy ko‘rinishda paydo bo‘lishi mumkin.