Ancaman terhadap supply chain software

Vektor serangan untuk rantai pasokan software adalah berbagai cara yang dapat digunakan seseorang untuk membahayakan software Anda secara sengaja atau tidak sengaja.

Risiko software yang rentan mencakup kebocoran kredensial atau data rahasia, kerusakan data, penginstalan malware, dan gangguan aplikasi. Masalah ini menyebabkan hilangnya waktu, uang, dan kepercayaan pelanggan.

Titik masuk untuk ancaman mencakup seluruh siklus proses software dan dapat berasal dari dalam atau luar organisasi Anda.

Titik masuk untuk serangan supply chain software

Legenda diagram mencakup dua set ancaman:

  • Huruf A hingga H menunjukkan vektor serangan dalam supply chain software yang dijelaskan sebagai ancaman dalam framework Supply chain Levels for Software Artifacts (SLSA).
  • Angka 1 hingga 4 menunjukkan vektor serangan tambahan yang tidak dijelaskan secara langsung oleh framework SLSA.

Google Cloud menyediakan serangkaian kemampuan dan alat modular yang menggabungkan praktik terbaik untuk memitigasi kedua jenis ancaman tersebut.

Subbagian dalam dokumen ini menjelaskan ancaman dalam konteks sumber, build, deployment, dan dependensi.

Ancaman sumber

Ancaman ini memengaruhi integritas kode sumber Anda.

  • 1: Menulis kode yang tidak aman. Kurangnya praktik coding yang aman dapat menyebabkan penulisan kode yang secara tidak sengaja menyertakan kerentanan. Workstation developer yang tidak aman juga dapat memasukkan kode berbahaya atau tidak aman. Mitigasi meliputi:

    • Menetapkan kebijakan untuk workstation developer. Cloud Workstations menyediakan workstation yang terkelola sepenuhnya dan telah dikonfigurasi sebelumnya yang dapat Anda sesuaikan agar sesuai dengan kebutuhan Anda.
    • Pemindaian kode lokal. Perlindungan sumber Cloud Code (pratinjau pribadi) memberikan masukan keamanan real-time, termasuk informasi kerentanan dan lisensi untuk dependensi. Developer juga dapat menggunakan On-Demand Scanning API untuk memindai kerentanan paket bahasa dan OS pada image container.
    • Edukasi tentang praktik untuk membuat kode lebih aman.
  • A: Mengirim kode buruk ke repositori sumber. Hal ini tidak hanya mencakup kode berbahaya, tetapi juga kode yang secara tidak sengaja menyebabkan kerentanan terhadap serangan seperti cross-site scripting. Mitigasi meliputi:

    • Mewajibkan peninjauan oleh manusia untuk perubahan pada kode sumber.
    • Menggunakan alat pemindaian kode dan linting yang terintegrasi dengan IDE dan sistem kontrol sumber.
  • B: Membobol sistem kontrol sumber. Membatasi akses ke sistem kontrol sumber dan sistem lain di pipeline build Anda, serta menggunakan autentikasi multi-faktor membantu mengurangi risiko ini.

Saat mengevaluasi integritas sumber, periksa juga skrip dan konfigurasi pendukung yang Anda gunakan untuk membangun dan men-deploy software. Sertakan file tersebut dalam sistem kontrol sumber dan proses peninjauan kode Anda, sehingga Anda dapat mengurangi risiko dari kerentanan dalam file ini.

Lihat Mengamankan sumber untuk mempelajari lebih lanjut cara melindungi sumber Anda.

Membangun ancaman

Ancaman ini membahayakan software Anda saat Anda membangun atau memaketkannya, atau menipu konsumen software Anda agar menggunakan versi yang buruk.

  • C: Membangun dengan sumber yang bukan dari sistem kontrol sumber tepercaya. Mitigasi yang membantu mengurangi risiko ini mencakup:
    • Menggunakan layanan build, seperti Cloud Build, yang menghasilkan informasi asal sehingga Anda dapat memvalidasi bahwa build Anda menggunakan sumber tepercaya.
    • Menempatkan infrastruktur CI/CD Anda di perimeter jaringan untuk mencegah pemindahan data yang tidak sah dari build Anda. Untuk Google Cloud layanan, gunakan Kontrol Layanan VPC.
    • Menyimpan dan menggunakan salinan tepercaya dari dependensi open source yang Anda butuhkan di penyimpanan artefak pribadi seperti Artifact Registry.
  • D: Membobol sistem build. Mitigasi yang membantu mengurangi risiko ini meliputi:
    • Ikuti prinsip hak istimewa terendah dengan membatasi akses langsung ke sistem build hanya untuk individu yang memerlukannya. Di Google Cloud , Anda dapat memberikan peran standar yang sesuai atau membuat peran khusus.
    • Gunakan layanan build terkelola seperti Cloud Build. Cloud Build menjalankan build sementara dengan menyiapkan lingkungan VM untuk setiap build dan menghancurkannya setelah build.
    • Tempatkan infrastruktur CI/CD Anda di perimeter jaringan untuk mencegah. pemindahan data yang tidak sah dari build Anda. Untuk Google Cloud layanan, gunakan Kontrol Layanan VPC.
  • F: Mengemas dan memublikasikan software yang dibuat di luar proses resmi. Sistem build yang membuat dan menandatangani provenance build memungkinkan Anda memvalidasi bahwa software Anda dibangun oleh sistem build tepercaya.
  • G: Membahayakan repositori tempat Anda menyimpan software untuk pengguna internal atau eksternal. Mitigasi yang membantu mengurangi risiko ini meliputi:
    • Menyimpan dan menggunakan salinan tepercaya dari dependensi open source yang Anda butuhkan di penyimpanan artefak pribadi seperti Artifact Registry.
    • Memvalidasi build dan asal sumber.
    • Membatasi izin upload ke akun non-manusia khusus dan administrator repositori. Di Google Cloud, akun layanan bertindak atas nama layanan dan aplikasi.

Ancaman deployment dan runtime

  • H: Menyelesaikan dependensi dengan menentukan rentang versi atau tag yang tidak terpasang secara permanen ke versi build tertentu dapat menyebabkan beberapa masalah:

    • Build tidak dapat direproduksi karena dependensi yang digunakan build untuk pertama kali dapat berbeda dengan dependensi yang digunakan build untuk eksekusi build yang sama pada masa mendatang.
    • Dependensi dapat diselesaikan ke versi yang disusupi, atau versi dengan perubahan yang merusak software Anda. Oknum jahat dapat memanfaatkan ketidakpastian ini untuk menyebabkan build Anda memilih versi paket mereka alih-alih versi yang ingin Anda gunakan. Sejumlah praktik terbaik untuk dependensi dapat membantu mengurangi risiko kebingungan dependensi.
  • 2: Membahayakan proses deployment. Jika Anda menggunakan proses deployment berkelanjutan, proses tersebut dapat terganggu dan menyebabkan perubahan yang tidak diinginkan pada software yang Anda berikan kepada pengguna. Anda dapat mengurangi risiko dengan membatasi akses ke layanan deployment dan menguji perubahan di lingkungan praproduksi. Cloud Deploy dapat membantu Anda mengelola proses pengiriman berkelanjutan dan promosi antar-lingkungan.

  • 3: Men-deploy software yang disusupi atau tidak mematuhi kebijakan. Menerapkan kebijakan deployment dapat membantu mengurangi risiko ini. Anda dapat menggunakan Otorisasi Biner untuk memvalidasi bahwa image container mematuhi kriteria kebijakan dan memblokir deployment image container dari sumber yang tidak tepercaya.

  • 4: Kerentanan dan kesalahan konfigurasi dalam software yang sedang berjalan.

    • Kerentanan baru ditemukan secara rutin, yang berarti temuan baru dapat mengubah tingkat risiko keamanan untuk aplikasi Anda dalam produksi.
    • Beberapa konfigurasi meningkatkan risiko akses tidak sah, seperti menjalankan sebagai pengguna root atau mengizinkan eskalasi akses pada eksekusi container.

    Dasbor postur keamanan GKE menampilkan informasi tentang kerentanan dan masalah konfigurasi dalam workload yang sedang berjalan.

    Di Cloud Run, Anda juga dapat melihat insight keamanan tentang revisi yang di-deploy, termasuk kerentanan yang diketahui dalam image penampung yang Anda deploy.

Lihat Mengamankan build untuk mempelajari lebih lanjut cara melindungi sumber Anda, dan Mengamankan deployment untuk mempelajari cara melindungi deployment.

Ancaman ketergantungan

Dependensi mencakup dependensi langsung dalam build Anda serta semua dependensi transitif, hierarki dependensi rekursif yang berada di hilir dari dependensi langsung Anda.

Dalam diagram, E menunjukkan penggunaan dependensi buruk dalam build Anda. Dependensi yang buruk dapat mencakup:

  • Semua software yang menjadi dependensi aplikasi Anda, termasuk komponen yang Anda kembangkan secara internal, software komersial pihak ketiga, software open source.
  • Kerentanan yang berasal dari vektor serangan lainnya. Contoh:
    • Penyerang mendapatkan akses ke sistem kontrol sumber Anda dan memodifikasi versi dependensi yang digunakan project Anda.
    • Build Anda menyertakan komponen yang dikembangkan oleh tim lain di organisasi Anda. Mereka membuat dan memublikasikan komponen langsung dari lingkungan pengembangan lokal dan secara tidak sengaja memperkenalkan kerentanan di library yang hanya mereka gunakan secara lokal untuk pengujian dan proses debug.
  • Penghapusan yang disengaja terhadap dependensi open source dari repositori publik. Penghapusan dapat menyebabkan pipeline yang menggunakan rusak jika mengambil dependensi langsung dari repositori publik.

Lihat praktik terbaik untuk dependensi guna mempelajari cara mengurangi risiko.

Mengurangi ancaman

Integritas keseluruhan supply chain Anda hanya sekuat bagiannya yang paling rentan. Mengabaikan vektor serangan meningkatkan risiko serangan di bagian supply chain Anda.

Pada saat yang sama, Anda tidak perlu mengubah semuanya sekaligus. Efek tindakan kumulatif, yang lebih dikenal sebagai model keju Swiss, berlaku untuk keamanan supply chain software. Setiap mitigasi yang Anda terapkan akan mengurangi risiko Anda, dan jika Anda menggabungkan mitigasi di seluruh rantai pasokan, Anda akan meningkatkan perlindungan terhadap berbagai jenis serangan.

  • Menilai postur keamanan Anda menggunakan framework dan alat yang membantu Anda mengevaluasi kemampuan organisasi Anda untuk mendeteksi, merespons, dan memulihkan ancaman.
  • Pelajari praktik terbaik untuk melindungi supply chain software Anda, dan Google Cloud produk yang dirancang untuk mendukung praktik tersebut.
  • Sertakan fitur keamanan dalam proses pengembangan, build, dan deployment untuk meningkatkan postur keamanan supply chain software Anda. Google Cloud Anda dapat menerapkan layanan secara bertahap, berdasarkan prioritas dan infrastruktur yang ada.

Langkah berikutnya