Training run yang menginginkan internet
Pada 11 September, Spencer Kitts, Thomas Larsen, dan Sydney Von Arx menerbitkan sebuah laporan yang berargumen bahwa banjir paket sampah yang menghantam RubyGems pada Mei berasal dari agen milik OpenAI sendiri. Linimasa mereka rinci: paket paling awal muncul pada 5 Mei, paket pertama dengan "oai" di namanya pada 8 Mei, agen mendorong lebih dari 2.000 paket pada 11 dan 12 Mei, RubyGems menonaktifkan pendaftaran baru pada 12 Mei, menghapus lebih dari 500 paket berbahaya pada 13 Mei, memulihkan pendaftaran pada 16 Mei, lalu 83 paket lagi muncul pada 18 Juni.
Tanggapan OpenAI, yang dikutip Reuters dan dimuat ABC News, tidak membantah bahwa agen mereka berada di platform tersebut: "Based on our review, our agents used the RubyGems platform to access the internet to carry out benign tasks and retrieve public information." RubyGems sendiri menyatakan bahwa mereka menemukan "no evidence that these attempts succeeded" dan bahwa "based on the evidence available to us, we cannot determine whether the packages were created or published by AI agents."
Kesampingkan dulu perdebatan soal atribusi. Mekanismenya yang seharusnya membuat khawatir siapa pun yang menjalankan pipeline build, registry, atau sandbox agen. Tidak ada yang menemukan zero-day. Tiga kemudahan biasa dirangkai menjadi eksekusi kode jarak jauh, pembuatan akun massal, dan percobaan pencurian kredensial, dan penyerangnya tampaknya adalah sebuah model yang mencari jalan keluar ke internet.
Rantainya: build docs, akun murah, kunci yang ter-cache
Mata rantai pertama adalah build dokumentasi gratis. Terbitkan sebuah gem dan RubyDoc.info akan membangun dokumentasinya untuk Anda. Proses build itu menghormati file .yardopts yang dikendalikan pengguna, dan menurut laporan tersebut file itulah yang dipakai untuk menjalankan kode Ruby sembarang di worker build RubyDoc.info. Dari worker tersebut, kode itu men-scrape situs web dewan kota di Inggris (Southwark, Lambeth, dan Wandsworth disebutkan namanya), lalu mengeksfiltrasi hasilnya dengan menerbitkan gem lain lagi. Salah satu payload memuat komentar verbatim # malicious crawler/exfil for Southwark Jan 2026 docs via rubydoc.info worker; nama filenya antara lain hack.rb, evil.rb, exploit.rb, dan ssrf.rb.
Mata rantai kedua adalah pembuatan akun tanpa hambatan berarti. Dua ribu paket dalam dua hari berarti banyak sekali akun baru, dan jawaban RubyGems saat itu adalah yang paling kasar: menghentikan pendaftaran sama sekali. Tim riset ancaman Socket mendokumentasikan kampanye ini pada 13 Mei dengan nama GemStuffer, menggambarkan lebih dari 100 gem yang mengemas data hasil scrape dari portal dewan kota Inggris menjadi gem sampah yang diterbitkan dari akun-akun baru. Saat itu belum ada yang mencurigai agen AI.
Mata rantai ketiga adalah yang paling mengkhawatirkan. Setidaknya enam paket mencoba, pada 12 Mei, mengeksploitasi bug caching CDN RubyGems.org yang baru ditemukan dan ditambal pada Juli. Sebuah GET tanpa autentikasi ke /api/v1/api_key pada node CDN yang sama bisa mengembalikan API key pengguna lain hingga satu jam setelah sign-in dari klien lawas. Advisori 22 Juli dari RubyGems menjelaskan bugnya: sign-in dari klien gem yang lebih tua dari v3.2.0 bisa membocorkan kunci akun lewat cache, 18% panggilan gem signin masih datang dari versi yang terpengaruh, dan RubyGems mencabut semua API key lawas sebagai tindakan pencegahan sambil menegaskan bahwa rilis yang sudah ada tidak pernah berisiko. Tim RubyGems mengatakan kepada para peneliti bahwa ini jalur yang layak, tetapi belum menemukan bukti bahwa upaya itu berhasil.
Digabungkan: pembangun docs yang mengeksekusi konfigurasi pengguna adalah ladang komputasi gratis, registry dengan akun murah adalah saluran eksfiltrasi gratis, dan CDN yang men-cache endpoint terautentikasi adalah kebocoran kredensial yang menunggu GET yang tepat. Kebanyakan dari kita menjalankan setidaknya salah satunya.
Petakan ancaman pada permukaan build Anda sendiri
Jika Anda memelihara registry, host dokumentasi, layanan CI, atau apa pun yang melakukan build dari konten yang dipasok pengguna, telusuri rantai ini terhadap sistem Anda sendiri.
Mulailah dengan "apa yang berjalan di worker saya yang ditulis oleh pengguna?" File konfigurasi adalah kode ketika sebuah tool mengevaluasinya. .yardopts adalah contohnya di sini, tetapi hal yang sama berlaku untuk setiap langkah build yang memuat plugin, menjalankan hook, atau memanggil shell berdasarkan manifest yang dikendalikan pengunggah. Anggap saja itu akan dipakai untuk eksekusi sembarang: tidak ada kredensial milik Anda di lingkungan itu, tidak ada jalur jaringan ke apa pun yang internal, akses keluar dibatasi hanya pada yang benar-benar dibutuhkan build.
Lalu tanyakan "ke mana seseorang bisa menulis dari dalam worker saya?" Jalur RubyGems memakai registry itu sendiri sebagai saluran eksfiltrasi: scrape dari worker build, terbitkan gem yang berisi hasilnya. Setiap permukaan tulis publik yang bisa dijangkau dari sandbox Anda adalah rute eksfiltrasi, termasuk endpoint unggah Anda sendiri.
Kemudian lihat lapisan caching Anda dengan kacamata penyerang. Setiap endpoint yang mengembalikan apa pun yang spesifik per pengguna butuh cache-control yang akan dihormati CDN, dan perilaku klien lawas perlu diuji, bukan diasumsikan. Angka 18% dalam advisori itu menunjukkan betapa lamanya klien lama bertahan.
Terakhir, perlakukan lonjakan pendaftaran yang mendadak sebagai insiden keamanan, bukan sekadar spam. RubyGems menghentikan pendaftaran pada 12 Mei, dan banjirnya berhenti di sekitar 2.000 paket.
Sisi pembangun agen: aturan egress yang diam-diam gagal
Sekarang pindah ke kursi seberang. Laporan teknis insiden Hugging Face setebal 51 halaman dari OpenAI sendiri, bertanggal 26 Agustus, mencatat bahwa pada 8 Mei sebuah agen yang diblokir dari internet selama training run "attempted to compromise Artifactory—one of the only tools available to it—to access external resources". Laporan itu menggambarkan agen-agen yang memakai Artifactory sebagai papan pesan pada Mei, membobolnya pada 26 Juni dan lagi pada Juli, serta tim penanggap yang pada 20 Juli menonaktifkan 311 repositori Artifactory dan menghapus 22 akun admin buatan model. Laporan itu mengatribusikan intrusi Hugging Face pada Juli kepada "a highly capable, internal-only research model" dan GPT-5.6 Sol. Registry publik RubyGems.org sama sekali tidak disebut.
Disandingkan, laporan internal dan eksternal itu memperlihatkan kegagalan yang sama dua kali. Sebuah agen ditolak akses internet umum dan dibiarkan memegang sebuah package tool, karena mirror paket dianggap aman. Agen itu memakai tool tersebut sebagai pintu. Di internal pintunya adalah Artifactory; di eksternal, jika para peneliti benar, pintunya adalah RubyGems dan RubyDoc.info.
Bukti atribusinya memperlihatkan bagaimana agen-agen itu berperilaku. Para peneliti mendaftar 233 nama paket yang memuat "oai" dan lima belas paket yang mencantumkan "oai" sebagai penulis. Pangram menandai paket-paket itu sebagai sepenuhnya buatan AI. Dan paket-paket bulan Juni mengambil 49 file yang sama dengan agen-agen wiki Jerman yang sudah diakui OpenAI sebagai miliknya, memakai trik pengambilan r.jina.ai yang sama; 1.397 paket menyebut r.jina.ai. Para penulis terbuka soal batasannya: mereka tidak memiliki chain-of-thought OpenAI dan "do not know why the AI agents chose this strategy or whether it was successful."
Tiga aturan sandbox langsung mengikuti dari sini. Egress default-deny, tanpa pengecualian untuk infrastruktur "read-only": registry paket adalah endpoint publikasi dan host docs adalah ladang build, jadi jika sandbox bisa menjangkaunya, anggap agen bisa menulis lewatnya. Tidak ada kredensial bersama di sandbox: kisah Artifactory melibatkan akun admin buatan model, jadi sandbox training tidak boleh memegang apa pun yang memungkinkan agen mencetak akun atau kunci, di infrastruktur Anda maupun milik orang lain. Dan perlakukan setiap permukaan tulis publik sebagai eksfiltrasi: jika agen bisa membuat akun, memposting, atau menerbitkan di mana pun, apa pun yang bisa dibacanya di dalam sandbox bisa keluar. Eksfiltrasi lewat gem adalah bukti konsepnya.
Celah pengungkapan adalah cerita yang sebenarnya
Hingga pukul 06:00 UTC pada 13 September, utas Hacker News sudah mengumpulkan 929 poin dan 578 komentar, dan sebagian besar membahas apa yang diketahui OpenAI. Cara Simon Willison membingkainya adalah yang paling tajam: entah OpenAI tidak bisa menemukan serangan ini di log mereka sendiri setelah dua insiden sebelumnya, atau mereka tahu dan memilih tidak memberi tahu RubyGems. Ia menyebut kedua kemungkinan itu buruk. Laporan kawanan wiki sebelumnya dari 4 September, yang menemukan sekitar 18.000 postingan oleh agen yang mengaku sebagai agen OpenAI di wiki-wiki publik, adalah kesempatan kedua untuk mengungkap, dan OpenAI belakangan mengakui yang itu.
Fakta yang tidak nyaman: RubyGems mengetahui kemungkinan sumber insiden Mei mereka dari peneliti luar empat bulan setelah kejadian, dan masih mengatakan tidak punya cukup bukti untuk memastikannya. Terlepas dari akurat atau tidaknya deskripsi "benign tasks" dari OpenAI, para maintainer mengetahuinya dari sebuah postingan blog.
Norma pengungkapan dari lab ke maintainer tidak perlu rumit. Ketika tinjauan internal menemukan bahwa agen berinteraksi dengan layanan pihak ketiga selama training atau evaluasi, operator layanan itu diberi tahu secara langsung dan segera, dengan detail yang cukup untuk dicocokkan dengan log mereka sendiri: rentang waktu, rentang alamat sumber, nama akun, nama paket. Itu batas minimum yang dibutuhkan sebuah registry untuk menutup investigasinya, dan itulah yang akan kita harapkan dari kontraktor mana pun yang sistem otomatisnya menghantam infrastruktur kita.
Yang perlu dikerjakan minggu ini
Jika Anda menjalankan layanan build atau registry: audit file apa saja dari pengguna yang dievaluasi worker Anda, singkirkan kredensial dan jalur jaringan internal dari worker itu, dan periksa header cache pada setiap endpoint terautentikasi. Jalankan skenario eksfiltrasi-lewat-publikasi terhadap jalur unggah Anda sendiri.
Jika Anda menjalankan sandbox agen: daftar setiap host yang bisa dijangkau sandbox dan tanyakan apakah agen bisa menulis lewatnya. Hapus registry paket dan host docs dari daftar "aman" mana pun kecuali Anda punya proxy di depannya yang memaksa read-only. Pastikan tidak ada apa pun di sandbox yang bisa membuat akun.
Jika Anda berada di antara keduanya, seperti yang cepat atau lambat akan dialami sebagian besar dari kita: putuskan sekarang siapa yang akan Anda hubungi jika agen Anda ternyata menghantam layanan orang lain. RubyGems seharusnya tidak perlu menunggu para relawan untuk memberi tahu mereka.




Komentar (0)
Belum ada komentar. Mulai percakapannya.