
Token Jira Snowflake: Celah yang Ikut Ditandatangani Copilot, dan GitHub Menyebut Manusia yang Menulisnya
- OrcaBARUOrcaCyber: MiniMax M3.1 Flash Abliterated2026-10-29orca/orcacyber-minimax-m3.1-flash
- OrcaBARUOrcaCyber: GLM 5.3 Flash Abliterated2026-10-2793 tok/s
- OrcaBARUOrcaCyber: Qwen3.8 Flash Next Abliterated2026-10-26$0.80 / $1.60 per 1 juta token · 260 tok/s
- OrcaBARUOrcaCyber: MiMo V2.6 Flash Abliterated2026-10-26$0.80 / $1.60 per 1 juta token · 92 tok/s
- MoonshotBARUMoonshotAI: Kimi K3.1 Pro2026-10-2446Kecerdasan
- OrcaBARUOrcaCyber: DeepSeek V4.1 Flash Abliterated2026-10-23$0.80 / $1.60 per 1 juta token · 104 tok/s
- minimaxBARUMiniMax: M3.1 Flash2026-10-1929Kecerdasan
- OrcaBARUOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 per 1 juta token · 65 tok/s
- deepseekBARUDeepSeek: DeepSeek V4.1 Flash 10172026-10-1733Kecerdasan
- DeepSeekBARUDeepSeek: DeepSeek V4.1 Flash2026-10-1740Kecerdasan
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 per 1 juta token · 101 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2955Kecerdasan
- anthropicAnthropic: Claude Sonnet 5.52026-09-2854Kecerdasan
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 per 1 juta token · 180 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2228Kecerdasan
- OpenAIOpenAI: GPT-6 Sol2026-09-2248Kecerdasan
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Kecerdasan
- xiaomiXiaomi: MiMo-V2.6-Flash2026-09-2127Kecerdasan
- xiaomiXiaomi: MiMo-V2.6-Pro2026-09-2130Kecerdasan
- xAIGrok 4.72026-09-2134Kecerdasan
Pada 23 Juni 2026, Red Agent, agen keamanan otonom yang dibuat oleh Wiz, membuka sebuah issue di repositori GitHub publik milik Snowflake dan kembali dengan membawa kredensial. Repositori tersebut adalah snowflakedb/snowflake-connector-net, dan alur kerja yang bermasalah, .github/workflows/jira_issue.yml, berfungsi untuk mengajukan tiket Jira setiap kali seseorang membuka issue — alur kerja itu menyusun judul tiket ke dalam sebuah perintah shell alih-alih meneruskannya melalui variabel lingkungan, sehingga judul yang dirancang khusus dieksekusi sebagai kode pada runner GitHub Actions. Token yang dipulihkan Red Agent terautentikasi sebagai qa@snowflake.net terhadap snowflakecomputing.atlassian.net dan membawa akses baca ke proyek-proyek Jira engineering, security-compliance, dan bug-bounty Snowflake. Cacat tersebut telah aktif selama lima hari. Wiz menerbitkan analisis lengkapnya pada 17 Agustus 2026. Insiden ini dikatalogkan sebagai catatan 2026-08-17-snowflake-jira-zhao-dao-can dalam Orca AI Incident Archive, yang menyimpan kumpulan catatan lengkap beserta tingkat keyakinannya dan sumber-sumber yang dikutip.
Interpolasi, dan penjaga yang tidak pernah dijalankan
Alur kerja dipicu oleh peristiwa GitHub "issues: opened". Siapa pun yang memiliki akun GitHub dapat memicunya dengan membuka issue di repositori publik — tanpa undangan, tanpa peran maintainer, tanpa fork. Langkah yang rentan membaca judul issue ke dalam variabel shell: TITLE=$(echo '${{ github.event.issue.title }}' | sed ...), dengan dua filter yang dimaksudkan untuk meng-escape tanda kutip ganda dan tanda kutip tunggal sebelum string dirakit.
Kegagalan tersebut terletak pada urutan operasi, bukan pada escaping. GitHub mengganti isi ekspresi ke dalam teks skrip sebelum bash sempat mem-parsing-nya, sehingga tanda kutip tunggal di dalam judul issue menutup string berkutip yang sedang dibiarkan terbuka oleh echo. Kedua filter sed berjalan di dalam skrip yang sama, setelah substitusi, dan tidak dapat memperbaiki quoting yang sudah mengubah cara baris tersebut diparsing. Tulisan Wiz secara eksplisit menyatakan bahwa escaping datang terlambat untuk mencegah breakout, dan bahwa judul yang dibuat dengan tanda kutip penutup dan titik koma menambahkan perintah pilihan penyerang ke langkah run.
Kontrol kedua seharusnya mempersempit audiens dan tidak berhasil. Job tersebut memiliki kondisi if yang membandingkan github.event.pull_request.user.login dengan login bot whitesource-for-github-com, jelas untuk menghentikan pull request dependensi otomatis agar tidak membuat tiket. Pada event issues tidak ada objek pull request sama sekali, sehingga perbandingan dilakukan terhadap properti null. Dokumentasi GitHub sendiri, yang dikutip oleh The Hacker News, menyatakan bahwa dereferensi properti yang tidak ada akan dievaluasi menjadi string kosong; analisis Wiz mencapai hasil yang sama melalui nilai null. Dengan cara apa pun, kondisi tersebut dievaluasi true untuk setiap pengguna, dan pengecualian untuk bot menjadi jalur tembus bagi internet.
Yang membuat injeksi ini layak dilaporkan alih-alih dianggap rutin adalah lingkungan yang menyertainya. Langkah yang sama menyimpan JIRA_BASE_URL, JIRA_USER_EMAIL, dan JIRA_API_TOKEN sebagai variabel lingkungan, sehingga eksekusi perintah arbitrer pada runner memiliki kredensial yang dapat dijangkau, bukan landasan kosong. Tidak ada rilis Snowflake Connector for .NET yang diidentifikasi terdampak: kelemahan tersebut berada dalam otomasi CI/CD repositori, bukan dalam kode konektor yang dirilis.
Apa yang diambil Red Agent, dan apa yang katanya telah dibuang
Uraian Wiz tentang eksploitasi tersebut adalah bagian yang membedakannya dari temuan pemindai. Payload pertama menggunakan karakter hash, yang menjadikan tanda kurung tutup dari penetapan TITLE=$(...) sebagai komentar dan menghasilkan kesalahan sintaks bash alih-alih callback. Agen tersebut membaca kesalahan itu dan menulis ulang payload untuk menutup blok shell dengan titik koma dan kutipan echo baru, lalu menerima panggilan out-of-band. Payload tersebut menggunakan curl untuk menjangkau subdomain oast.me dengan nilai tiga variabel kredensial yang dikodekan base64, dan callback tiba dari IP Azure 20.106.182.197, sebuah alamat yang diatribusikan Wiz ke runner GitHub Actions.
Token yang dikembalikannya adalah token API Jira untuk qa@snowflake.net, dan Wiz mendeskripsikan jangkauannya sebagai akses baca yang mencakup proyek pelacakan engineering, security-compliance, dan bug-bounty pada instans cloud Atlassian milik Snowflake. Itulah dampak buruk yang dicatat arsip: bukan eksekusi kode di mesin build selama lima hari, melainkan kredensial yang dapat membaca antrean tiket tempat bug engineering dan keamanan yang belum diperbaiki dilaporkan — termasuk, menurut deskripsi Wiz, pelacak bug-bounty.

Wiz mengatakan bahwa pihaknya telah menghapus secara aman semua yang diakses selama proof of concept. Snowflake, dalam sebuah pernyataan kepada CSO Online, mengatakan bahwa laporan tersebut "langsung diselidiki dan diperbaiki" serta bahwa "penyelidikan kami tidak menemukan bukti akses tidak sah"; blog Wiz menambahkan bahwa Snowflake meninjau log audit untuk rentang lima hari tersebut dan tidak menemukan penggunaan pihak ketiga selain alamat pengujian milik Wiz sendiri. Snowflake belum menerbitkan log tersebut, sehingga temuan tidak adanya aktor lain bersandar pada pernyataannya dan ringkasan Wiz tentang hal itu, bukan pada dokumen yang dapat dibaca oleh siapa pun di luar kedua organisasi.
Siapa yang menulis baris rentan
Pertanyaan itu menghasilkan cerita kedua yang lebih besar. PR #1218, berjudul "SNOW-2069227: Update jira workflows", digabungkan dengan metode squash pada 18 Juni 2026 sebagai commit 4a1b8ce, dan commit squash tersebut mencantumkan Copilot Autofix powered by AI di antara para rekan penulisnya. Judul asli Wiz bersandar tepat pada hal itu, menggambarkan cacat tersebut berada dalam pull request yang dibantu GitHub Copilot, dan liputan media industri awal mengikuti garis yang sama — judul SC Media berbunyi "Wiz agent finds Snowflake repo flaw in code co-authored by GitHub Copilot Autofix".
Posisi GitHub, yang dilaporkan oleh The Next Web dan dirangkum dalam catatan riset Cloud Security Alliance, adalah bahwa tinjauan internalnya menemukan “manusia menulis kontribusi yang menyebabkan kerentanan tersebut” dan bahwa Copilot Autofix “tidak meninjau maupun berkontribusi terhadapnya”. Dasar teknis untuk bantahan itu ada dalam riwayat git. Squash-merge meruntuhkan sebuah pull request menjadi satu commit dan meneruskan setiap trailer co-author ke depan tanpa memedulikan baris mana yang disentuh penulis tersebut, sehingga baris co-author mencatat partisipasi dalam pull request, bukan kepengarangan atas hunk tertentu. Commit yang ditulis bersama oleh Copilot dalam pull request yang sama, 6d0e2fa, mengubah jira_close.yml — workflow yang berbeda dari jira_issue.yml yang rentan. Interpolasi tidak aman tersebut diatribusikan ke commit 094038e, bertanggal 25 Agustus 2025 dan diatribusikan oleh GitHub kepada seorang engineer Snowflake, sfc-gh-hpathak; PR #1218 menempatkan pola tersebut ke branch default pada Juni 2026.
Wiz tidak menarik temuan tersebut, dan mengubah framing pada hari publikasi. Blog-nya memuat pembaruan yang diposting pada 19:57 UTC tanggal 17 Agustus yang menggambarkan Copilot sebagai "rekan penulis yang memeriksa PR yang telah digabungkan dan perubahan kode" yang "menyatakan semuanya aman" tanpa menyadari kerentanan, dan mengakui bahwa "tidak jelas apakah perubahan kode itu dibantu AI." Dalam catatan itu, kegagalan AI adalah kegagalan dalam peninjauan, bukan kepenulisan: pull request yang telah digabungkan membawa tanda tangan bersama Copilot dan injeksi tersebut lolos darinya. CSO Online mengutip CTO Wiz Ami Luttwak yang mengatakan bahwa atribusi yang jelas antara manusia dan AI "semakin sulit untuk ditetapkan", dan bahwa "hanya melihat rekan penulis PR saja tidak cukup."

Yang sama dari kedua versi tersebut layak dipisahkan dari yang mereka perdebatkan. Keduanya sepakat bahwa commit squash membawa trailer co-author Copilot Autofix dan bahwa workflow tersebut dapat dieksploitasi. Tidak ada yang membantah bahwa GitHub Advanced Security memindai revisi final pull request, mengekstrak jira_issue.yml, dan tidak menandai injeksi tersebut — Wiz melaporkannya sebagai kelewatan, dan bantahan GitHub adalah tentang kepengarangan, bukan tentang pemindaian. Yang masih belum terselesaikan adalah apakah Copilot meninjau baris-baris rentan sama sekali: Wiz mengatakan sebuah tinjauan dijalankan dan meloloskannya, GitHub mengatakan alat tersebut tidak berperan di dalamnya, dan log yang dapat menyelesaikannya berada pada salah satu dari kedua perusahaan. Catatan tersebut memuat kedua versi itu alih-alih memilih.
Lima hari, dan apa yang berubah setelahnya
Perbaikan berlangsung cepat setelah laporan masuk. Wiz mengajukan melalui program HackerOne Snowflake sebagai laporan #3819931 pada 23 Juni dan memberi tahu tim keamanan Snowflake melalui Slack pada hari yang sama; Snowflake menggabungkan PR #1402, commit 1dc7766, yang menggantikan ekspansi ekspresi langsung dengan variabel lingkungan yang diteruskan ke jq sebagai argumen. Linimasa Wiz menempatkan rotasi token Jira pada 24 Juni, dan The Hacker News melaporkan perbedaan yang sama. Sebaliknya, pendahuluan Wiz sendiri menyatakan bahwa Snowflake memperbaiki kerentanan dan merotasi kredensial "pada hari yang sama" — sebuah ketidaksesuaian di dalam sumber primer yang tidak boleh ditutupi oleh catatan. Perbaikan diterapkan pada 23 Juni; rotasi bertanggal 24 Juni dalam tabel Wiz.
Pengungkapan berjalan sesuai jadwal Snowflake: Wiz menetapkan tenggat pengungkapan publik pada 25 Juli 2026, tiga puluh hari setelah resolusi tanggal 25 Juni berdasarkan kebijakan program tersebut, dan menerbitkan analisisnya pada 17 Agustus. Pernyataan Snowflake kepada CSO Online menyebut bahwa perusahaan "menghargai pelaporan bertanggung jawab dari Wiz" dan bahwa pihaknya sedang bekerja sama dengan Wiz untuk membagikan pelajaran kepada industri. Baik analisis Wiz maupun laporan The Hacker News tidak memuat pengenal CVE, skor CVSS, atau entri dalam katalog kerentanan yang diketahui dieksploitasi milik CISA; celah tersebut merupakan konfigurasi alur kerja di repositori publik, bukan pustaka yang dirilis, sehingga tidak pernah masuk ke basis data kerentanan dengan cara yang lazim.

Apa yang ditetapkan oleh catatan, dan apa yang tidak.
Arsip tersebut mengklasifikasikan ini sebagai temuan penelitian, bukan peristiwa deployment, dengan tingkat keparahan tinggi, nilai keyakinan A, keterlibatan AI yang terkonfirmasi, dan kerugian nyata yang tercatat; tanggalnya, 17 Agustus 2026, adalah hari Wiz mempublikasikan, dan insiden itu sendiri berlangsung dari 18 hingga 23 Juni. Inti yang telah mapan bersifat sempit dan dapat diperiksa: sebuah alur kerja publik menyisipkan teks yang dikendalikan penyerang ke dalam perintah shell, kondisi penjaganya dibandingkan dengan properti yang null pada peristiwa tersebut, sebuah token Jira berada pada langkah yang sama, sebuah agen otonom mengeksploitasinya, dan Snowflake menggabungkan perbaikan serta merotasi kredensial dalam waktu satu hari.
Bagian-bagian yang merupakan inferensi dan bukan catatan adalah bagian yang cenderung diratakan oleh penuturan ulang secara kasual. Copilot Autofix didokumentasikan sebagai salah satu penulis bersama pull request dan tidak didokumentasikan sebagai penulis baris-baris rentan; kerangka AI-versus-AI yang mendominasi siklus berita pertama ditarik sebagian oleh organisasi peliputan dalam hitungan jam dan dibantah oleh GitHub. Apakah tinjauan AI atas pull request yang telah digabungkan melihat jira_issue.yml masih merupakan pertanyaan faktual yang terbuka, bukan yang sudah tuntas. Dan sejauh mana akses yang terjadi, meskipun diuraikan secara rinci oleh Wiz, belum diaudit secara independen: tidak ada izin Jira, eksekusi workflow, atau catatan audit yang dipublikasikan.
Pola perbaikan tersebut adalah pola yang direkomendasikan oleh panduan GitHub sendiri sejak Juli 2025 — meneruskan data issue yang tidak tepercaya ke dalam variabel lingkungan dan menyerahkannya ke jq sebagai argumen, alih-alih mengembangkannya di dalam blok run. Commit hasil merge Snowflake melakukan persis hal itu, dan penanganan yang telah diperbaiki tetap berada di branch default. Bagi siapa pun yang membaca catatan ini sebagai preseden, temuan yang bertahan lama adalah tentang atribusi, bukan tentang injeksi: ketika sebuah pull request membawa beberapa manusia dan beberapa agen, trailer co-author tidak dapat memberi tahu Anda siapa yang menulis suatu baris, dan baik Wiz maupun GitHub akhirnya menyatakan hal itu dengan kata-kata yang berbeda.
