Integritas kode platform

Tantangan signifikan dalam mengoperasikan sistem yang kompleks seperti Microsoft Azure adalah memastikan bahwa hanya perangkat lunak sah yang berjalan di sistem. Perangkat lunak yang tidak sah menghadirkan beberapa risiko bagi bisnis apa pun:

  • Risiko keamanan seperti alat serangan khusus, malware khusus, dan perangkat lunak pihak ketiga dengan kerentanan yang diketahui
  • Risiko kepatuhan ketika proses manajemen perubahan yang disetujui tidak digunakan untuk membawa perangkat lunak baru
  • Risiko kualitas dari perangkat lunak yang dikembangkan secara eksternal, yang mungkin tidak memenuhi persyaratan operasional bisnis

Di Azure, kita menghadapi tantangan yang sama dan dengan kompleksitas yang signifikan. Kita memiliki ribuan server yang menjalankan perangkat lunak yang dikembangkan dan dikelola oleh ribuan insinyur. Ini menghadirkan permukaan serangan besar yang tidak dapat dikelola melalui proses bisnis saja.

Menambahkan gerbang otorisasi

Azure menggunakan proses rekayasa kaya yang menerapkan gerbang pada keamanan, kepatuhan, dan kualitas perangkat lunak yang kita sebarkan. Proses ini mencakup kontrol akses ke kode sumber, melakukan tinjauan kode rekan, melakukan analisis statis untuk kerentanan keamanan, mengikuti Security Development Lifecycle (SDL) Microsoft, dan melakukan pengujian fungsional dan kualitas. Kita perlu menjamin bahwa perangkat lunak yang kita gunakan telah mengalir melalui proses ini. Integritas kode membantu kita mencapai jaminan itu.

Integritas kode sebagai gerbang otorisasi

Integritas kode adalah layanan tingkat kernel yang tersedia mulai Windows Server 2016. Integritas kode dapat menerapkan kebijakan kontrol eksekusi yang ketat setiap kali driver atau perpustakaan taut-dinamis (DLL) dimuat, biner yang dapat dieksekusi telah dieksekusi, atau skrip dijalankan. Sistem serupa, seperti DM-Verity, ada untuk Linux. Kebijakan integritas kode terdiri dari serangkaian indikator otorisasi, baik sertifikat penandatanganan kode atau hash file SHA256, yang cocok dengan kernel sebelum memuat atau mengeksekusi biner atau skrip.

Integritas Kode memungkinkan administrator sistem untuk menentukan kebijakan yang hanya mengizinkan binari dan skrip yang telah ditandatangani oleh sertifikat tertentu atau cocok dengan hash SHA256 yang ditentukan. Kernel memberlakukan kebijakan ini dengan memblokir eksekusi segala sesuatu yang tidak memenuhi kebijakan yang ditetapkan.

Kekhawatiran dengan kebijakan integritas kode adalah bahwa kecuali kebijakan tersebut benar-benar tepat, kebijakan tersebut dapat memblokir perangkat lunak penting dalam produksi dan menyebabkan pemadaman. Mengingat kekhawatiran ini, orang mungkin bertanya mengapa tidak cukup menggunakan pemantauan keamanan untuk mendeteksi ketika perangkat lunak yang tidak sah telah dijalankan. Integritas kode memiliki mode audit yang, alih-alih mencegah eksekusi, dapat memperingatkan ketika perangkat lunak yang tidak sah dijalankan. Peringatan tentu saja dapat menambah banyak nilai dalam menangani risiko kepatuhan, tetapi untuk risiko keamanan seperti ransomware atau malware khusus, menunda respons bahkan beberapa detik dapat menjadi perbedaan antara perlindungan dan musuh mendapatkan pijakan yang kuat di armada Anda. Di Azure, kami telah berinvestasi secara signifikan untuk mengelola risiko integritas kode apa pun yang berkontribusi pada pemadaman yang berdampak pada pelanggan.

Proses build

Seperti yang dibahas di atas, sistem pembuatan Azure memiliki serangkaian pengujian yang kaya untuk memastikan perubahan perangkat lunak aman dan sesuai. Setelah build maju melalui validasi, sistem build menandatanganinya menggunakan sertifikat build Azure. Sertifikat menunjukkan build telah melewati seluruh proses manajemen perubahan. Pengujian terakhir yang dilalui build disebut Code Signature Validation (CSV). CSV mengonfirmasi bahwa binari yang baru dibuat memenuhi kebijakan integritas kode sebelum kita terapkan ke produksi. Ini memberi kita keyakinan tinggi bahwa kitatidak akan menyebabkan pelanggan yang berdampak pada pemadaman karena biner yang salah ditandatangani. Jika CSV menemukan masalah, build akan berhenti dan teknisi yang relevan akan diarahkan untuk menyelidiki dan memperbaiki masalah tersebut.

Keamanan selama penyebaran

Meskipun kita menjalankan CSV untuk setiap build, masih ada kemungkinan bahwa beberapa perubahan atau inkonsistensi dalam produksi dapat menyebabkan pemadaman terkait integritas kode. Misalnya, komputer mungkin menjalankan versi lama dari kebijakan integritas kode atau mungkin dalam keadaan tidak sehat yang menghasilkan kesalahan positif dalam integritas kode. (Pada skala Azure, kami telah melihat semuanya.) Karena itu, kami perlu terus melindungi dari risiko pemadaman selama penerapan.

Semua perubahan di Azure diperlukan untuk diterapkan melalui serangkaian tahapan. Yang pertama adalah instans pengujian Azure internal. Tahap berikutnya hanya digunakan untuk melayani tim produk Microsoft lainnya. Tahap akhir melayani pelanggan pihak ketiga. Ketika perubahan disebarkan, perubahan bergerak ke setiap tahap ini secara bergantian, dan dijeda untuk mengukur kesehatan tahapan. Jika ternyata perubahan tersebut tidak berdampak negatif, maka dilanjutkan ke tahap berikutnya. Jika kami membuat perubahan buruk pada kebijakan integritas kode, perubahan akan terdeteksi selama penerapan bertahap ini dan dibatalkan.

Respons Insiden

Bahkan dengan perlindungan berlapis ini, masih ada kemungkinan bahwa beberapa server dalam armada dapat memblokir perangkat lunak yang diotorisasi dengan benar dan menyebabkan masalah yang dihadapi pelanggan, salah satu skenario terburuk kita. Lapisan pertahanan terakhir kita adalah penyelidikan oleh manusia. Setiap kali integritas kode memblokir file, ini akan memunculkan peringatan bagi teknisi dalam panggilan untuk menyelidikinya. Peringatan tersebut memungkinkan kami untuk memulai penyelidikan keamanan dan melakukan intervensi, apakah masalah tersebut merupakan indikator serangan nyata, positif palsu, atau situasi lain yang berdampak pada pelanggan. Ini meminimalkan waktu yang diperlukan untuk mengurangi masalah terkait integritas kode.

Langkah berikutnya

Pelajari bagaimana Windows 10 menggunakan integritas kode yang dapat dikonfigurasi.

Untuk mempelajari selengkapnya tentang apa yang kami lakukan untuk mendorong integritas dan keamanan platform, lihat: