NPM anbarından UAParser.js kitabxanasının kodunu kopyalayan üç zərərli paketinin silinməsi ilə bağlı hekayə gözlənilməz davam etdi — naməlum hakerlər UAParser.js layihəsinin müəllifinin hesabını ələ keçirərək şifrələri oğurlamaq və kriptovalyuta mədənçiliyi üçün zərərli kod əlavə edən yeniləmələr buraxdılar.
Problemin kökü isə odur ki, UAParser.js kitabxanası HTTP User-Agent başlığını təhlil etməyə imkan verən funksiyalar təqdim edir və həftədə təxminən 8 milyon yükləmə alır. UAParser.js-nin Microsoft, Amazon, Facebook, Slack, Discord, Mozilla, Apple, ProtonMail, Autodesk, Reddit, Vimeo, Uber, Dell, IBM, Siemens, Oracle, HP və Verison kimi şirkətlərin layihələrində istifadə olunduğu bildirilir.
Hücum, layihənin inkişafçısının hesabının hacklənməsi ilə həyata keçirildi, o, qeyri-adi bir spam dalğası poçt qutusuna düşdükdən sonra bir şeyin düzgün olmadığına başa düşdü. İnkişafçının hesabının necə hackləndiyinə dair məlumat verilməyib. Hücum edənlər 0.7.29, 0.8.0 və 1.0.0 versiyalarını buraxaraq zərərli kodu daxil etdilər. Bir neçə saat içində inkişafçılar layihə üzərində nəzarəti bərpa etdilər və 0.7.30, 0.8.1 və 1.0.1 yeniləmələrini hazırladılar. Zərərli versiyalar sadəcə NPM anbarında paket şəklində yayımlandı. Layihənin GitHub-dakı Git anbarı zərər görmədi. Problemlə üzləşmiş versiyaları quraşdıran istifadəçilərə Linux/macOS sistemlərində jsextension faylını, Windows-da isə jsextension.exe və create.dll faylını aşkar edərlərsə, sistemin zəifləmiş hesab edilmələri tövsiyə edilir.
Əlavə olunan zərərli dəyişikliklər, UAParser.js-nin klonlarında daha əvvəl təklif olunan dəyişiklikləri xatırladırdı. Görünən odur ki, bunlar əsas layihəyə genişmiqyaslı hücum etməzdən əvvəl funksionallığı test etmək məqsədilə buraxılmışdır. İstifadəçinin sisteminə xarici bir ev sahibi vasitəsilə jsextension adlı çalıştırılabilir fayl yüklənir və sistemin platformasına uyğun olaraq işlədilir. Windows platforması üçün kriptovalyuta mədənçiliyi üçün Monero proqramı (XMRig mədənçisi istifadə edilirdi) ilə yanaşı, hakerlər şifrələri ələ keçirmək və onları xarici bir ev sahibinə göndərmək üçün create.dll kitabxanasını da daxil etdilər.
Yükləmə kodu preinstall.sh faylına əlavə edilmişdir, burada aşağıdakı koda yer verilmişdir: IP=$(curl -k https://freegeoip.app/xml/ | grep ‘RU|UA|BY|KZ’) if [ -z "$IP" ] … yükləmə və çalıştırma fi
Kodni göründüyü kimi, skript əvvəlcə IP ünvanını freegeoip.app xidməti vasitəsilə yoxlayır və Rusiya, Ukrayna, Belarus və Kazaxıstandan olan istifadəçilər üçün zərərli tətbiqi işə salmır.
Mənbə: opennet.ru
