𝗔𝗽𝗮 𝘆𝗮𝗻𝗴 𝗔𝗻𝗱𝗮 𝗩𝗲𝗿𝗶𝗳𝗶𝗸𝗮𝘀𝗶 𝗕𝘂𝗸𝗮𝗻𝗹𝗮𝗵 𝗛𝗮𝗹 𝘆𝗮𝗻𝗴 𝗗𝗶𝗷𝗮𝗹𝗮𝗻𝗸𝗮𝗻

Sebuah alat baru baru-baru ini menarik perhatian. Alat ini berada di depan perintah seperti curl dan menunjukkan skrip kepada Anda sebelum dijalankan. Alat ini menyoroti bagian-bagian yang berbahaya. Alat ini memang membantu, tetapi ia melewatkan masalah intinya.

Masalahnya bukan pada apakah byte tersebut terlihat berbahaya. Masalahnya adalah sebuah URL dapat menyajikan satu skrip hari ini dan skrip yang berbeda besok. Pemeriksaan Anda hanya berlaku untuk satu momen waktu tertentu.

Para ahli sistem menyebut ini TOCTOU. Singkatan dari time-of-check to time-of-use. Anda memeriksa sebuah berkas, lalu seseorang menukarnya sebelum Anda membukanya. Pemeriksaan Anda benar, tetapi benar mengenai sesuatu yang sudah tidak ada lagi.

Agen AI membuat risiko ini jauh lebih tinggi. Agen melakukan pemeriksaan secara terus-menerus.

  • Agen melakukan ping ke sebuah URL dan menganggap respons yang berhasil sebagai tanda keamanan.
  • Agen membaca profil dan menganggap sebuah deklarasi sebagai fakta.
  • Agen melihat tanda tangan dan berasumsi bahwa byte tepat yang akan dijalankannya adalah byte yang telah ditandatangani.

Setiap pemeriksaan menempelkan kepercayaan pada suatu momen atau saluran. Agen kemudian bertindak pada sesuatu di hilir yang tidak pernah dicakup oleh pemeriksaan tersebut.

Sebagai contoh, seorang agen mungkin memvalidasi manifes alat dan menyimpan hasilnya di cache. Jika endpoint berubah sebelum agen memanggil alat tersebut, agen akan menjalankan versi yang salah. Validasi berhasil, tetapi berhasil untuk manifes yang tidak lagi digunakan oleh agen.

Mencoba memperbaiki ini dengan pemindaian yang lebih ketat tidak akan berhasil. Menambah lebih banyak aturan hanya mempersempit celah. Aturan tersebut tidak menutupnya. Seorang produsen masih dapat menyajikan artefak yang berbeda dalam hitungan milidetik antara pemindaian dan eksekusi Anda.

Untuk memperbaikinya, berhentilah memverifikasi momen. Mulailah memverifikasi artefak.

Ikatkan keputusan Anda pada objek yang tidak dapat diubah (immutable) alih-alih pada sebuah fetch.

  • Jangan menyetujui sebuah URL.
  • Setujui hash konten tertentu.
  • Lebih baik lagi, setujui hash yang telah ditandatangani oleh kunci tepercaya.

Ini mengubah pertanyaannya dari "apakah teks ini menakutkan?" menjadi "apakah ini artefak yang tepat yang dijamin oleh kunci tersebut?" Jika hash tidak cocok, Anda menolaknya. Tidak ada perdebatan.

Pendekatan ini juga membuat verifikasi menjadi portabel. Pihak ketiga dapat menggunakan hash dan tanda tangan yang sama untuk memverifikasi hasilnya sendiri. Ini adalah properti dari objek tersebut, bukan properti dari waktu Anda saat itu.

Gunakan dua pertanyaan ini untuk menguji verifikasi apa pun:

  1. Apakah pengecekan tersebut terikat pada artefak persis yang digunakan, atau pada suatu momen dan sebuah janji?
  2. Bisakah orang asing menjalankan ulang pengecekan tersebut dan mencapai keputusan yang sama?

Jika jawaban untuk yang pertama adalah sebuah momen, maka pengecekan tersebut memiliki tanggal kedaluwarsa. Jika jawaban untuk yang kedua adalah tidak, Anda tidak memiliki verifikasi. Anda hanya memiliki kesaksian.

Sebagian besar verifikasi agen saat ini hanyalah kesaksian. "Handshake berhasil" atau "pemindaian bersih" adalah pernyataan yang benar tentang suatu momen, tetapi pernyataan tersebut tidak melekat pada byte yang benar-benar dijalankan.

Agen bertindak ribuan kali tanpa pengawasan manusia. Jika Anda tidak menambatkan kepercayaan pada artefak, seluruh rantai akan mewarisi pengecekan yang paling lemah dan paling lama.

Anda tidak memerlukan teknologi baru untuk memperbaiki ini. Content addressing dan tanda tangan digital sudah ada sejak puluhan tahun yang lalu. Anda hanya perlu mengarahkannya pada hal yang tepat: byte persis yang dieksekusi, bukan permintaan yang mengambilnya.

Sebelum Anda memercayai sebuah pengecekan, cari tahu apa yang dilekatinya. Jika ia melekat pada suatu momen, maka ia sudah kedaluwarsa.

Sumber: https://dev.to/anp2network/the-thing-you-verified-is-not-the-thing-that-runs-hnl

Komunitas belajar opsional: https://t.me/GyaanSetuAi