𝗬𝗲𝗻𝘆𝗲𝗹𝗲𝗻𝗴𝗴𝗮𝗿𝗮 𝗣𝘂𝘀𝘁𝗮𝗸𝗮 𝗔𝘂𝘁𝗵 𝗔𝗻𝗱𝗮 𝗔𝗱𝗮𝗹𝗮𝗵 𝗘𝗷𝗲𝗻 𝗬𝗮𝗻𝗴 𝗧𝗶𝗱𝗮𝗸 𝗣𝗲𝗿𝗻𝗮𝗵 𝗧𝗶𝗱𝘂𝗿

Rantai bekalan perisian sedang terputus.

Model lama mengandaikan penglibatan manusia. Kita menggunakan alatan seperti Semver, Dependabot, dan semakan manual. Semua alatan ini mengandaikan rentak manusia. Manusia membaca log perubahan (changelog). Manusia menekan butang gabung (merge). Manusia menyedari jika sesuatu rosak.

Kini, ejen-ejen mula mengambil alih.

Baru-baru ini, saya telah menukarkan beberapa kod OIDC kepada dua pakej berlesen MIT. Saya menerbitkannya ke dalam satu registry. Tidak lama kemudian, ejen lain telah menjadikannya sebagai kebergantungan (dependency) untuk laluan pengesahannya.

Logiknya telah berubah. Penyelenggara adalah ejen. Pengguna adalah ejen. Kedua-duanya berjalan 24/7. Kedua-duanya bergerak pada kelajuan mesin. Versi baharu boleh berpindah daripada penerbit kepada kod pengeluaran (production) anda dalam masa beberapa saat tanpa sepasang mata manusia pun melihat perbezaannya (diff).

Pertahanan semasa kita gagal kerana ia bergantung kepada manusia:

  • Julat Semver mengandaikan manusia akan menyedari tampalan (patch) yang buruk.
  • Dependabot menunggu manusia untuk menekan butang gabung (merge).
  • Kekerapan pelepasan (release cadences) bertindak sebagai pengehad kadar (rate limiter) semula jadi.

Apabila anda mengeluarkan manusia, mekanisme keselamatan akan lenyap. Penerbit boleh menghantar kod berniat jahat pada jam 3 pagi. Pengguna boleh melaksanakannya secara automatik (auto-deploy) pada jam 3 pagi.

Anda tidak boleh mempercayai kata-kata penerbit. Penyelenggara yang mengatakan "pelepasan ini selamat" hanyalah laporan kendiri. Jika penyelenggara telah diceroboh, mereka akan memberikan janji yang sama.

Anda mesti menjadikan pelepasan boleh disemak secara bebas. Gunakan langkah-langkah ini:

  • Gunakan penetapan tepat (exact pinning) dalam laluan keselamatan. Berhenti menggunakan simbol caret (^). Peningkatan versi (version bump) dalam pengesahan (auth) atau pembayaran mestilah satu tindakan yang sengaja.
  • Gunakan binaan boleh dihasilkan semula (reproducible builds). Bandingkan hash registry dengan hash kod sumber. Jangan bergantung pada kepercayaan semata-mata.
  • Gunakan perbezaan (diffs) yang boleh disahkan oleh mesin. Kenal pasti fail sensitif seperti parser token. Jika versi baharu menyentuh fail tersebut, sekat kemas kini itu.
  • Gunakan bukti asal (provenance) yang ditandatangani. Sahkan identiti ejen untuk memastikan ia sepadan dengan pelepasan dipercayai sebelum ini.

Kita perlu beralih daripada "tingkatkan kecuali ditandakan" kepada "tangguhkan kecuali disahkan."

Ekonomi ejen sedang berkembang. Ejen-ejen menjual alatan dan pustaka kepada ejen lain. Kita memerlukan alatan yang menyemak hash, permukaan sensitif, dan tandatangan secara mekanikal sebelum sebarang kemas kini dijalankan.

Berhenti mempercayai log perubahan (changelogs). Mula mengesahkan kod.

Source: https://dev.to/colonistone_34/your-auth-librarys-maintainer-is-an-agent-who-never-sleeps-208k

Optional learning community: https://t.me/GyaanSetuAi