Xygeni baru-baru ini memerhatikan corak yang membimbangkan dalam landskap serangan rantaian bekalan perisian pada tahun 2025, muncul merentasi dua pengurus pakej yang popular: PyPI dan npmSebagai sebahagian daripada usaha risikan ancaman berterusan kami,Amaran Awal Perisian Hasad Xygeni (MEW) alat mengenal pasti contoh pakej berniat jahat yang dimuat naik ke daftar lain sebelum ini tetapi serupa secara metodologi. Kes ini mengetengahkan bagaimana pelaku ancaman sedang berkembang dan menggunakan semula teknik serangan merentasi ekosistem, terutamanya melalui pakej Python yang berniat jahat dan pakej npm berniat jahat, yang meningkatkan risiko pakej berniat jahat menyusup masuk ke rantaian bekalan sumber terbuka.
MEW Xygeni: Mengenal Pasti Persamaan
Alat MEW Xygeni dibina untuk mengesan dan menandakan pakej berniat jahat, terutamanya yang dikaitkan dengan Serangan Rantaian Bekalan Perisian pada tahun 2025, sebaik sahaja ia diterbitkan ke daftar sumber terbuka. Ia berfungsi dengan menganalisis pakej baharu untuk mengenal pasti tingkah laku yang mencurigakan.
Dalam hal ini, ia mengenal pasti dua pakej Python yang berniat jahat (graphalgo pada PyPI) dan pakej npm berniat jahat (express-cookie-parser pada npm).
Pakej Python dan npm Berniat Jahat dalam Serangan Rantaian Bekalan Perisian (2025)
Mari kita terokai ciri-ciri bersama yang mencetuskan makluman kita:
Typosquatting
Mereka berdua cuba menyamar sebagai pakej sedia ada yang popular.
- grafalgo (PyPI): "Pakej Python untuk mencipta dan memanipulasi graf dan rangkaian.Dimuat naik oleh pengguna bernama "larrytech" Pada 13 Jun 2025, pakej ini memperkenalkan dirinya sebagai alternatif PyPi kepada projek graphalgo yang tidak berniat jahat, yang kemudiannya dinamakan semula sebagai graphdict.
- penghurai-kuki-ekspres (npm)Pakej ini meniru pakej cookie-parser yang terkenal, malah mencerminkannya README.md. Penyamaran sedemikian adalah taktik klasik untuk memanfaatkan kepercayaan sedia ada.
Kekeliruan sebagai Barisan Pertahanan Pertama
Kedua-dua pakej tersebut mengaburkan kod berniat jahat mereka dalam fail asal. Untuk grafalgo, kod yang dikaburkan itu ditemui di dalamnya /utils/load_libraries.py. Dalam kes penghurai-kuki-ekspres, cookie-loader.min.js mengandungi muatan yang dikaburkan.
Lapisan awal pengeliruan ini biasanya digunakan untuk menghalang pemeriksaan kasual dan analisis statik. Pengeliruan tersebut agak mudah: pemampatan ZLib berulang serta pengekodan Base64. Jenis pengeliruan ini jelas menunjukkan bahawa perisian tersebut cuba menyembunyikan kelakuannya. Bersama-sama dengan bukti lain, ini membolehkan Xygeni MEW mengklasifikasikan pakej tersebut sebagai perisian hasad yang berpotensi. Semasa peringkat pengesahan, pengulas kami segera menyediakan skrip penyahkeliruan yang mendedahkan peringkat penitis yang jelas berniat jahat.
Penghantaran Muatan Berbilang Peringkat dan Titik Asal Dikongsi
Kedua-dua pakej berfungsi sebagai "awal"dropper," menyediakan pentas untuk muatan sebenar. Mereka berkongsi luaran yang sama "benih"URL fail:https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example
Fail benih luaran yang sama ini merupakan penunjuk kuat pelaku ancaman yang dikongsi. Menariknya, kandungan fail benih ini kelihatan seperti pembolehubah persekitaran mudah (cth., JWT_SECRET, PORT), yang berpotensi mengelirukan pemeriksaan terhadap fungsi sebenarnya.
Resolusi C2 Dinamik dengan DGA
Satu taktik canggih yang diperhatikan dalam pakej berniat jahat ini ialah penggunaan Algoritma Penjanaan Domain (DGA) untuk menyelesaikan pelayan Perintah dan Kawalan (C2) secara dinamik. Teknik ini, yang sering dilihat dalam serangan rantaian bekalan perisian canggih pada tahun 2025, bergantung pada hash SHA256 yang diperoleh daripada kandungan fail benih, digabungkan dengan nilai kod keras yang lain. Dengan berbuat demikian, infrastruktur C2 kerap berubah, menjadikan penyenaraian hitam tradisional kurang berkesan. Dalam kes ini, varian npm menggunakan nilai tetap 496AAC7E sebagai sebahagian daripada logik DGAnya.
Mewujudkan Kegigihan
Kedua-dua penyerang berusaha untuk mewujudkan kehadiran yang berkekalan pada sistem yang terjejas. Strategi mereka melibatkan pengguguran fail, startup.py (untuk PyPi) atau startup.js (untuk npm), ke dalam direktori data pengguna Google Chrome yang biasa merentasi pelbagai sistem pengendalian (Windows, Linux, macOS).
Pembersihan Pasca Pelaksanaan
Untuk meminimumkan kesan, kedua-dua skrip berniat jahat telah menjalankan operasi pembersihan. Ini termasuk memadam fail dropper awal mereka (load_libraries.py, cookie-loader.min.js) dan mengubah suai fail pakej yang sah (__init__.py, index.js) untuk mengalih keluar rujukan kepada komponen yang kini dipadamkan.
Petunjuk Kompromi dalam Pakej Python dan npm Berbahaya
- Pakej PyPI: graphalgo (diterbitkan oleh larrytech, 13 Jun 2025)
- Pakej npm: penghurai-kuki-ekspres (khususnya versi 1.4.12)
- Akses kepada URL Benih Dikongsi:
https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example
- Nama Fail Berterusan:
startup.py(Python)startup.js(JavaScript) - Laluan Berterusan Biasa (bergantung pada OS): Dalam direktori data pengguna Google Chrome (cth.,
AppData\Local\Google\Chrome\UserData\Scripts\di Windows,~/.config/google-chrome/Scripts/pada Linux, dsb.).
Cara Mempertahankan Diri Daripada Pakej Berniat Jahat dalam Serangan Rantaian Bekalan Perisian 2025
Pendekatan yang Disyorkan untuk Pembangun
Insiden ini berfungsi sebagai kajian kes yang berharga dalam landskap ancaman serangan rantaian bekalan perisian yang semakin berkembang pada tahun 2025. Ia mengetengahkan bagaimana pakej Python yang berniat jahat dan pakej npm yang berniat jahat boleh menyelinap masuk ke dalam ekosistem yang dipercayai, selalunya mengelak pengesanan sehingga terlambat. Itulah sebabnya pengesanan awal, perkakasan pintar dan kebersihan sistem proaktif kini menjadi bahagian penting dalam sebarang aliran kerja DevOps yang selamat. Pembangun digalakkan untuk mempertimbangkan perkara berikut:
Kajian Kebergantungan
Jika projek anda telah merangkumi grafalgo or penghurai-kuki-ekspres, adalah bijak untuk meneruskan penyingkirannya.
- Untuk PyPI:
pip uninstall graphalgo - Untuk npm:
npm uninstall express-cookie-parser
Kebersihan Sistem
Pertimbangkan untuk menjalankan imbasan sistem yang komprehensif. Anda juga dinasihatkan untuk menyemak laluan direktori data pengguna Chrome yang biasa secara manual untuk sebarang gangguan yang tidak dijangka. startup.py or startup.js fail.
Langkah Keselamatan Proaktif
- Menilai Kebergantungan BaharuTetapkan rutin untuk menilai pakej baharu secara menyeluruh sebelum penyepaduan, dengan memberi tumpuan kepada pakej daripada penerbit yang tidak dikenali.
- Integrasikan Alat KeselamatanAlat seperti MEW Xygeni, bersama-sama dengan Analisis Komposisi Perisian lain (SCA) penyelesaian, boleh menyediakan lapisan pertahanan kritikal dengan mengenal pasti tingkah laku dan kelemahan yang mencurigakan.
- Keistimewaan Paling RendahMengendalikan persekitaran pembangunan dengan prinsip keistimewaan paling minimum boleh membantu mengehadkan potensi impak kompromi.
- Kesedaran RangkaianPemantauan trafik rangkaian keluar untuk sambungan luar biasa kadangkala boleh mendedahkan komunikasi C2 yang dijana oleh DGA.
Komponen Utama load_libraries.py (daripada graphalgo)
download_remote_content(): Mengendalikan pengambilan fail daripada URL yang ditentukan.run_process(): Melaksanakan skrip Python luaran secara berasingan, menyekat output agar kekal diskret.get_output_file_path(): Menentukan lokasi sistem yang ideal untuk fail startup.py yang berterusan.remove_self(): Mengatur pembersihan pasca pelaksanaan fail berniat jahat awal dan pengubahsuaian pakej.simple_shift_encrypt()/simple_shift_decrypt()Fungsi kriptografi tersuai untuk mengaburkan saluran komunikasi, penting untuk pelaksanaan DGA.load_libraries()Fungsi pusat yang menyelaras keseluruhan proses berbilang peringkat, daripada muat turun awal hingga pelaksanaan muatan akhir dan pembersihan.
Selepas
Seperti pakej lain yang berpotensi berniat jahat yang dikenal pasti oleh MEW, tembok api kebergantungan serta-merta melindungi pengguna yang akan memasukkan pakej berniat jahat ini dalam kebergantungan mereka. Selepas pengesahan, kami mengikuti prosedur pemberitahuan untuk kedua-dua pendaftaran, yang selepas semakan mengalih keluar kedua-dua pakej.





