
sckit: Paket Memori AI MemTensor Disusupi Backdoor untuk Mencuri Kredensial dan Prompt Agen
- OrcaBARUOrcaCyber: MiMo V2.6 Flash Abliterated2026-10-26$0.80 / $1.60 per 1 juta token · 109 tok/s
- MoonshotBARUMoonshotAI: Kimi K3.1 Pro2026-10-2455Kecerdasan
- OrcaBARUOrcaCyber: DeepSeek V4.1 Flash Abliterated2026-10-23$0.80 / $1.60 per 1 juta token · 170 tok/s
- minimaxBARUMiniMax: M3.1 Flash2026-10-1943Kecerdasan
- OrcaBARUOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 per 1 juta token · 42 tok/s
- deepseekBARUDeepSeek: DeepSeek V4.1 Flash 10172026-10-1745Kecerdasan
- DeepSeekBARUDeepSeek: DeepSeek V4.1 Flash2026-10-1740Kecerdasan
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 per 1 juta token · 130 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2952Kecerdasan
- anthropicAnthropic: Claude Sonnet 5.52026-09-2856Kecerdasan
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 per 1 juta token · 926 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2238Kecerdasan
- OpenAIOpenAI: GPT-6 Sol2026-09-2248Kecerdasan
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Kecerdasan
- xAIGrok 4.72026-09-2146Kecerdasan
- OrcaOrca: OrcaCyber Zero 1.02026-09-17$3.00 / $7.50 per 1 juta token · 228 tok/s
- OrcaOrca: OrcaVerify Text 1.02026-09-16$2.00 / $0.00 per 1 juta token · 1906 tok/s
- OpenAIOpenAI: GPT-6 Astra2026-09-0453Kecerdasan77Koding
- GoogleGoogle: Gemini 3.8 Flash2026-09-0241Kecerdasan76Koding
- AlibabaQwen: Qwen3.8 Max (0902)2026-09-0245Kecerdasan76Koding
Empat rilis MemTensor yang dipublikasikan pada 23 September 2026 membawa implan Go yang telah di-strip yang sama, dan masing-masing merupakan versi terbaru di registrinya saat masih aktif. Paket npm @memtensor/memos-cloud-openclaw-plugin dirilis sebagai 0.1.21 pada 02:23 UTC, 0.1.23 pada 03:49 dan 0.1.25 pada 04:36; dari PyPI, MemoryOS dirilis sebagai 2.0.34 pada 05:25. Keempatnya menyertakan sckit, yang dimulai saat gateway agen OpenClaw melakukan boot, dimulai lagi pada setiap recall memori — dengan teks prompt pengguna diserahkan melalui variabel lingkungan — dan, dalam paket Python, dimulai pada impor biasa modul memos. Ia kemudian menyapu direktori home untuk mencari rahasia npm, PyPI, GitHub, GitLab, AWS, Vault, dan SSH dan mengirim apa yang ditemukannya ke server di bawah skyleen[.]fr. Socket, StepSecurity, SafeDep, dan Aikido mendokumentasikan kompromi tersebut secara independen pada hari itu, dan tidak satu pun dari mereka melaporkan bukti bahwa implan tersebut telah berjalan di host nyata. Orca AI Incident Archive menyimpan entri ini secara lengkap, bersama dengan setiap insiden rantai pasok lain yang telah dicatatnya, dan setiap catatan membawa tingkat keyakinan dan status bahayanya sendiri.
Empat rilis, dan sebuah laporan bug publik di tengah-tengahnya
MemOS adalah kerangka kerja memori open-source dari MemTensor untuk agen LLM, dan paket npm adalah konektor yang memungkinkan runtime agen OpenClaw membaca dan menulis ke layanan memori yang di-hosting; StepSecurity mencatat bahwa paket yang sama juga mendeklarasikan titik integrasi untuk runtime Clawdbot dan Moltbot. Socket mengukur repositori tersebut sekitar 11.500 bintang dan 1.100 fork saat menerbitkannya. Posisi itulah sebabnya kompromi ini menarik empat investigasi terpisah: seperti yang dikatakan StepSecurity, ini "menempatkan plugin di dalam proses yang rutin menangani input pengguna dan mungkin mewarisi kredensial berharga." Pihak yang terekspos adalah mereka yang menginstal salah satu dari kedua paket tersebut — pengembang di mesin mereka sendiri, serta runner CI dan kontainer yang hanya menjalankan rangkaian pengujian.
Urutan npm adalah bagian catatan yang paling jelas karena stempel waktu registri bersifat publik dan beberapa perusahaan mencatatnya secara independen. Tulisan Socket dan linimasa SafeDep sepakat pada setiap menit: 0.1.21 pada 02:23:04, 0.1.22 pada 03:45:44, 0.1.23 pada 03:49:20, 0.1.24 pada 04:33:30 dan 0.1.25 pada 04:36:58. Versi 0.1.22 dan 0.1.24 bersih — Socket mengatakan keduanya cocok dengan 0.1.20 kecuali string versi — dan payload muncul kembali tiga setengah menit setelah masing-masingnya.
Lonjakan ukurannya adalah petunjuknya. Socket mengukur 0.1.20 sekitar 272 KB setelah diekstrak dan 0.1.21 sebesar 43,6 MB, karena rilis berbahaya tersebut membundel enam biner platform yang ditautkan secara statis dengan ukuran masing-masing sekitar 7,4 MB. PyPI menunjukkan pola yang sama: wheel 2.0.34 berukuran 19.201.772 byte dibandingkan 951.210 untuk 2.0.33, menurut Socket.
Pada 04:17 UTC — enam belas menit sebelum 0.1.24 yang bersih dan sembilan belas menit sebelum payload kembali sebagai 0.1.25 — seorang pengguna GitHub bernama omeridel membuka issue #173 pada repositori plugin, berjudul "Versi berbahaya 0.1.21 dan 0.1.23 diterbitkan ke npm — token publikasi tampaknya telah dikompromikan." Issue tersebut mencatat bahwa 0.1.23 saat itu adalah tag terbaru, bahwa tidak ada versi yang cocok dengan commit atau tag mana pun di repositori, dan bahwa commit sah terbaru bertanggal 14 Agustus. Issue ini masih terbuka tanpa komentar dari para pengelola hingga 26 Oktober 2026.

Apa yang dilakukan sckit setelah paket dimuat
Tidak ada paket yang menggunakan hook instalasi, itulah sebabnya saran biasa tentang --ignore-scripts tidak berlaku. Analisis StepSecurity terhadap varian npm menjelaskan file baru, lib/sckit.js, yang mengekspor peluncur yang diimpor dan dipanggil oleh kode startup dan memory-recall plugin yang sudah ada. Saat startup, ia menjalankan proses terlepas .sckit/<os>-<arch>/sckit dengan stage0 --config64 dan lingkungan lengkap induknya; saat recall, ia melakukan hal yang sama dan meneruskan prompt pengguna yang telah dibersihkan melalui variabel lingkungan bernama SCKIT_EVENT_TEXT. Socket menyatakan konsekuensinya dengan gamblang: oleh karena itu, biner tersebut berjalan lagi pada setiap recall.
Varian PyPI lebih pendek dan, dalam praktiknya, lebih sulit dihindari. Socket menemukan bahwa memos/log.py memanggil fungsi pemicu di dalam memos/_stage0.py saat logging dikonfigurasi, bahwa 149 modul memanggil logger pada level modul, dan bahwa impor biasa modul memos karenanya cukup untuk memulai payload sekali per proses. Analisis StepSecurity terhadap paket yang sama sepenuhnya statis — analisis itu tidak menginstal, mengimpor, membangun, atau mengeksekusinya.
Cakupan pengumpulan adalah seluruh direktori home. SafeDep mencantumkan root inventaris sebagai $HOME dan file yang ditargetkan sebagai .npmrc, .pypirc, .git-credentials, .netrc, id_rsa, id_ecdsa, id_ed25519, .vault-token, msal_token_cache, access_tokens.json dan access_tokens.db, ditambah variabel lingkungan yang namanya mengandung token, secret, password, API key atau database URL, ditambah format token yang dikenali untuk GitHub, GitLab, npm, PyPI, Hugging Face, Slack, Stripe, AWS dan SendGrid. Catatan OSV untuk kedua paket, MAL-2026-16476 untuk npm dan MAL-2026-16475 untuk PyPI, menjelaskan daftar file yang sama dan menambahkan bahwa protokol command-and-control menggunakan CBOR, pertukaran kunci X25519 dan XChaCha20-Poly1305, dengan lease bertanda tangan dan modul yang dikirim saat runtime — jadi isi modul tidak pernah teramati, hanya loader yang mengambilnya.
Dua detail membentuk apa yang masih dapat dipulihkan oleh seorang defender. Biner tersebut membawa rutinitas penghapusan diri bernama scheduleSelfDelete dan deleteExecutable, menurut catatan OSV, itulah sebabnya panduannya adalah berburu artefak proses dan jaringan alih-alih file. Dan 0.1.25 menambahkan lib/tls-trust.js, yang menetapkan SSL_CERT_FILE ke file otoritas 145 sertifikat yang dibundel pada sistem Linux minimal, menurut StepSecurity — perbaikan yang bertujuan agar lalu lintasnya sendiri berfungsi pada container yang tidak memiliki system trust store.

Pipeline rilis adalah pintu masuknya.
Rekonstruksi SafeDep adalah catatan paling rinci tentang akses awal, dan ini menunjuk ke GitHub Actions alih-alih pada kata sandi registri yang dicuri. Antara 00:48 dan 02:03 UTC, sebuah akun GitHub yang beroperasi sebagai Memtensor-AI membuat, melakukan push, dan menghapus cabang bernama sc/release-0.1.21-20260922-cloud sebanyak lima kali. Commit 9b97ec6 memodifikasi skrip alur kerja .github/scripts/validate-release-confirmation.mjs sehingga skrip itu menambahkan nilai BASH_ENV ke $GITHUB_ENV, yang membuat langkah-langkah shell non-interaktif berikutnya melakukan source pada sckit-publish-bridge.sh yang dipasok penyerang sebelum menjalankan perintah mereka sendiri. Bridge tersebut memeriksa nama paket dan batas waktu 150 detik pada langkah publikasi, memanggil pengumpul token dengan NPM_TOKEN atau NODE_AUTH_TOKEN, menghapus dirinya sendiri, dan keluar dengan kode 1 — sehingga publikasi gagal setelah token diambil. Rilis npm berbahaya pertama muncul dua puluh menit setelah push cabang terakhir.
Jalur PyPI menggunakan trik yang sama terhadap pipeline yang berbeda. SafeDep melaporkan bahwa tag v2.0.34 menunjuk ke commit yang tidak ditandatangani yang tidak berada di main, dan bahwa commit b52958f, yang ditulis sebagai "MemTensor CI Review", menambahkan enam biner, sebuah loader Python, dan backend build khusus bernama sckit_poetry_build. Backend tersebut menulis BASH_ENV yang menunjuk ke _pypi_bridge.sh ke dalam $GITHUB_ENV; bridge tersebut hanya bertindak di dalam wrapper unggahan twine, mengambil indeks bertanda tangan dari host skyleen[.]fr, memverifikasi emitter dengan implementasi Ed25519, mencetak baris penanda, menghapus setelan kata sandi unggahan dan keluar tanpa mengunggah apa pun. Sekitar dua jam kemudian commit 41bf5c7 menghapus panggilan tersebut dengan pesan "chore: allow native PyPI upload [skip ci]", tag tersebut dihapus dan dibuat ulang dalam sepuluh detik, dan unggahan PyPI menyusul 62 detik setelah itu. SafeDep membaca commit pertama sebagai proses penangkapan token dan commit kedua sebagai proses yang memungkinkan alur kerja MemTensor sendiri membangun dan menerbitkan paket berbahaya dengan token asli proyek.
Tidak semua akun sejalan dalam hal ini. Socket mengamati bahwa rilis npm berasal dari akun npm yang sama dengan versi sah sebelumnya dan tidak memiliki gitHead, yang dibacanya sebagai tanda bahwa rilis tersebut tidak dihasilkan oleh CI proyek, dan menyatakan bahwa pihaknya tidak dapat memastikan bagaimana penyerang memperoleh akses penerbitan. SC Media, yang melaporkan temuan Socket pada 24 September, menarik inferensi yang sama ke arah kompromi akun. Kedua versi sepakat bahwa kredensial penerbitan diambil dari pipeline rilis dan berbeda pendapat tentang bagaimana artefak npm itu sendiri dihasilkan; belum ada yang menerbitkan log alur kerja, karena Actions API GitHub tidak menunjukkan adanya eksekusi setelah 7 September dan SafeDep menyimpulkan bahwa catatan tersebut telah dihapus. Bagaimana akun Memtensor-AI memperoleh akses push pada awalnya tidak diketahui dalam kedua versi; SafeDep menyebut token akun yang dicuri sebagai kemungkinan besar tetapi belum terkonfirmasi.
Ditetapkan, disimpulkan, dan tidak ada
Peringkat keyakinan catatan itu adalah A dan tidak diperselisihkan, yang perlu dinyatakan secara tepat, karena kepastian tersebut melekat pada apa yang diterbitkan dan bukan pada apa yang dilakukannya.
• Ditetapkan: isi dari keempat artefak, yang direkonstruksi melalui analisis statis di Socket, StepSecurity, dan SafeDep; waktu publikasi npm dan tag terbaru pada 0.1.25; lonjakan ukuran di kedua ekosistem; commit, tag, dan riwayat cabang di kedua repositori; infrastruktur skyleen[.]fr dan pengidentifikasi kampanye cloud-openclaw-semi-nuclear dan memos-semi-nuclear; serta konfigurasi payload, yang kedaluwarsa pada 22–23 Oktober 2026 menurut Socket dan SafeDep.
• Disimpulkan: bahwa alat tersebut ditulis dengan bantuan model bahasa, yang SafeDep nyatakan secara langsung dan sebut sebagai inferensi; dan bahwa token publikasi yang dicuri dimaksudkan untuk digunakan kembali, yang didukung tetapi tidak dibuktikan oleh string kanal konfigurasi — "exact-ref-one-use-NPM_TOKEN".
• Belum dipastikan: siapa penyerangnya; apakah ada salinan sckit yang pernah dieksekusi di luar sandbox; apakah ada kredensial yang keluar dari sebuah host; apakah ada prompt yang diketik ke agen OpenClaw yang mencapai penyerang; dan apakah ada paket hilir yang diterbitkan ulang. Socket dan StepSecurity keduanya bekerja secara statis, dan StepSecurity menyatakan bahwa tidak ada proses yang dijalankan, tidak ada transmisi rahasia, tidak ada eksfiltrasi yang berhasil, tidak ada instalasi alur kerja, dan tidak ada publikasi paket lebih lanjut yang teramati dalam analisisnya.
Kesenjangan itulah sebabnya arsip mencatat insiden ini dengan kerugian nyata yang ditandai sebagai salah. Paparannya nyata dan luas — siapa pun yang memasang versi terdampak diberi tahu untuk memperlakukan host sebagai telah dikompromikan — tetapi kerugian, dalam arti kredensial yang terbukti digunakan atau sistem yang terbukti telah diakses, belum dicatat oleh salah satu dari empat firma penyelidik.
![A self-built HTML card headed 'What the record supports', titled 'Four investigating firms, no confirmed victim', subtitled 'Socket, StepSecurity, SafeDep and Aikido documented the same four artefacts on 23 September 2026'. The left column, headed 'Established by static analysis', lists: four malicious releases, npm 0.1.21, 0.1.23 and 0.1.25 and PyPI MemoryOS 2.0.34; one implant, the same stripped Go binary sckit in all four; the publish window 02:23 to 05:25 UTC with 0.1.25 tagged latest; package growth from 272 KB to 43.6 MB on npm and 951 KB to 19.2 MB for the PyPI wheel; six builds per package for Linux, macOS and Windows on amd64 and arm64; collection scoped to the whole home directory across registry, source-control, cloud, Vault and SSH secrets; exfiltration to servers under skyleen[.]fr; and OSV tracking as MAL-2026-16476 and MAL-2026-16475. The right column, headed 'Not established', lists: the attacker's identity; how Memtensor-AI obtained push access; whether any copy ever executed outside static analysis; whether a stolen secret reached the attacker; whether any prompt text was received; and whether any downstream package was republished. A footer reads 'Archive classification for this record: incident, severity high, confidence A, real harm false.' The OrcaRouter logo is composited in the bottom-right corner.](https://cms.orcarouter.ai/api/media/file/4-2644.png)
Worm yang tidak pernah terlihat menyebar
Binari tersebut berisi lebih dari sekadar stealer. SafeDep mencantumkan fungsi bernama recursivePublish, prepareRemoteNode, prepareRemotePython dan prepareRemoteWorkflow, ditambah templat GitHub Actions tertanam yang dipicu saat push dan kemampuan untuk menulis file workflow bernama runtime-update.yml ke repositori yang dapat dijangkau implant. Socket menemukan string tentang pengodean manifes paket dan pemasangan file repositori serta menilai bahwa binari tersebut mungkin dapat menerbitkan ulang paket menggunakan token registri yang dicuri.
Itu adalah rancangan worm. Itu bukan worm yang teramati berfungsi. StepSecurity tidak menemukan bukti bahwa logika tersebut pernah digunakan untuk menyebar, dan catatan riset Cloud Security Alliance tanggal 25 September menilai kemampuannya sebagai potensi penyebaran mandiri yang terbatas, bukan perilaku worm yang terkonfirmasi. Beberapa media menggambarkan kasus ini sebagai worm rantai pasok pertama yang menyasar infrastruktur memori agen AI; deskripsi itu wajar sebagai pernyataan tentang rancangan, dan laporan-laporan tersebut tidak mendukungnya sebagai pernyataan tentang apa yang terjadi.
Apa yang berubah setelahnya
Registri dibersihkan pada hari yang sama. Saat diperiksa pada 26 Oktober 2026, metadata paket npm tidak lagi mencantumkan 0.1.21, 0.1.23, atau 0.1.25 di antara versinya, tag latest mengarah ke 0.1.24, dan paket terakhir dimodifikasi pada pukul 11.53 UTC tanggal 23 September. Dua dist-tag yang tidak biasa masih terpasang — clean-inverse-0-1-23 mengarah ke 0.1.22 dan clean-inverse-0-1-25 mengarah ke 0.1.24 — mencerminkan dua rilis bersih yang sempat menginterupsi rilis berbahaya. Di PyPI, MemoryOS 2.0.34 sudah tidak ada dan rilis terbaru adalah 2.0.33, yang diunggah pada 3 September 2026; tidak ada rilis PyPI lebih lanjut dalam tujuh minggu sejak itu.
Yang tidak berubah adalah akun publik proyek tersebut. Repositori tidak mencantumkan advisory keamanan apa pun, issue GitHub dari pukul 04.17 pada hari insiden masih terbuka dan belum dijawab, dan tidak satu pun laporan yang disurvei di sini mengutip pernyataan dari MemTensor atau OpenClaw. Tidak satu pun paket berbahaya membawa atestasi asal-usul, yang menurut catatan SafeDep menghilangkan satu-satunya sinyal bahwa artefak telah dibangun dari commit yang tidak terduga.
Respons yang ada berada di sisi deteksi: StepSecurity menambahkan domain command-and-control skyleen[.]fr ke blocklist globalnya, dan kedua paket tersebut dilacak di OSV sebagai MAL-2026-16476 dan MAL-2026-16475.
Jika versi yang terdampak telah diinstal
Panduan Socket adalah yang paling ketat dan paling sederhana: jika ada versi yang tercantum dimuat atau diimpor, anggap host tersebut telah dikompromikan, termasuk runner CI dan kontainer yang hanya menjalankan pengujian. Langkah-langkah konkret yang disepakati oleh keempat perusahaan:
• Hapus paket dan sematkan ke versi yang bersih — npm 0.1.20, PyPI 2.0.33. StepSecurity memperingatkan bahwa analisisnya tidak menetapkan baseline PyPI yang bersih, sementara SafeDep dan SC Media sama-sama menyebut 2.0.33 sebagai rilis baik terakhir.
• Cari baris perintah proses, karena file yang dapat dieksekusi mungkin menghapus dirinya sendiri: sckit stage0 --config64, dan variabel lingkungan SCKIT_EVENT_TEXT.
• Hapus direktori status ~/.openclaw/.cache/runtime dan ~/.memos/.cache/runtime, lalu periksa repositori untuk runtime-update.yml alur kerja atau direktori .sckit/ yang tidak terduga.
Rotasi setiap kredensial yang dapat diakses dari direktori home dan environment proses, dari mesin yang bersih: npm, PyPI, GitHub, GitLab, AWS, Vault, SSH, Hugging Face, Slack, Stripe, dan SendGrid, serta nilai .env apa pun. Token registri dan kontrol sumber didahulukan.
• Tinjau rilis paket Anda sendiri, untuk berjaga-jaga jika token publikasi yang dicuri telah digunakan untuk merilis versi yang tidak Anda tulis.
• Blokir skyleen[.]fr dan subdomainnya, serta baca log egress hingga 23 September.
• Perlakukan setiap prompt atau rahasia yang ditempelkan yang melewati plugin selama plugin tersebut aktif sebagai telah terekspos. Inilah bagian dari insiden yang khusus untuk memori agen: implan tidak perlu mengais transkrip, karena transkrip itu diserahkan kepadanya pada setiap recall.
