Source Code Versioning & Security

Dalam kuliah “Software Security” yang saya ajarkan minggu lalu, kami berdiskusi mengenai topik “source code versioning” dan “security“. Apa kaitannya keduanya? Adakah kaitannya?

Source code versioning adalah sebuah kegiatan dalam pengembangan perangkat lunak. Pada awalnya pengembangan perangkat lunak dilakukan secara serampangan. Tidak ada metodologi. Pokoknya asal jadi saja. Salah satu masalah yang muncul adalah ketidakjelasan versi yang digunakan. Misal, di sistem produksi ada masalah dengan perangkat lunaknya. Dia menggunakan versi 1.1. Sementara itu di bagian pengembangan, perangkat lunaknya sudah sampai ke versi 1.7. Agak sulit menentukan masalah karena ada perbedaan versi. Masalah lain juga dapat terjadi ketika terjadi upgrade. Misal, perangkat lunak dari versi 1.1 diperbaharui menjadi versi 1.3 kemudian diperbaharui lagi ke versi 1.7. Ternyata ada masalah di versi 1.7, maka perangkat lunak harus dikembalikan ke versi sebelumnya. Tanpa menggunakan versioning, ini akan sulit dilakukan.

Saat ini ada banyak sistem source code versioning ini. Yang paling terkenal saat ini adalah Git.

Mari kita sekarang membahas topik utamanya; hubungan antara code versioning ini dengan security. Dalam diskusi yang kami lakukan, kami belum menemukan hubungan atau alasan yang dapat diterima dengan mudah bahwa code versioning itu mendukung security. Yang kami temukan adalah alur seperti ini:

Pengembangan perangkat lunak sangat disarankan (harus?) menggunakan code versioning. Karena code versioning ini digunakan, maka hal-hal yang terkait dengan itu harus aman (secure). Kendali-kendali keamanan apa saja yang sudah diterapkan?

Itu yang baru dapat kami utarakan.

Iklan

2 pemikiran pada “Source Code Versioning & Security

  1. Hahaha,… Jka sembung bawa kampak, gak nyambung pak. Wajar lah. Mungkin yang dibuat sebelumnya adalah software untuk petugas sekuriti pak, jaga kampus, kantor, atau rumah. Jadi waktu membicarakan tentang sekuriti software yang dipikirkannya adalah satpam alias sekuriti. Mau bicara gimana? Wong yang namanya programmer itu tidak biasa banyak bicara. Diam saja hanya jari jemari, mata, otak, dan jantungnya yang bekerja. Lainnya standby. 🙂

  2. Yang saya lihat, version control dapat mendukung keamanan software jika digunakan dengan baik.

    Version control menekankan aspek kepemilikan kode, karena identitas melekat pada commit. Kalau ada yang coba masukkan malicious code bisa dilacak siapa penulisnya. Kalau ada bug atau kerawanan, bisa rollback. Kalau repo utama rusak atau compromised, bisa dibangun lagi dari repo lokal developer (untuk VC terdistribusi). Atau kebiasaan melekatkan data sensitif dalam kode sumber, jadi disoroti[1] sebagai praktik jelek yang harus dihindari setelah ketahuan diunggah dalam repo publik. Kesadaran tentang hal ini saja sudah mendukung pemberlakuan security best practices.

    Kalau pakai Git, sifatnya yang terdistribusi dan punya fitur branching juga dapat meminimalisir celah rawan pada software. Developer bebas mengembangkan fitur2 baru di repo lokalnya dalam branch terpisah, bebas masukkan kode debug, sebelum push ke repo utama. Modifikasi2 di berbagai file terpisah yang tujuan modifikasinya sama juga bisa dikumpulkan dalam satu / serangkai commit berdasarkan tujuan tersebut, sehingga memudahkan audit kode. Branch master dalam repo utama bisa dibatasi hanya untuk kode yang lolos tes dan diaudit keamanannya, bersih dari fitur2 eksperimental yang masih rawan.

    Terkait keamanan kode itu sendiri, dengan version control tim developer bisa membatasi siapa saja yang bisa commit. Kalau untuk aplikasi web, keamanan bisa ditingkatkan dengan menjadikan server produksi sekadar clone dangkal dari repo utama (update bisa dilakukan otomatis lewat script hook di repo utama). Developer bisa bekerja tanpa perlu mengkuatirkan keamanan dan kestabilan kode produksi.

    [1] https://arstechnica.com/information-technology/2015/03/in-major-goof-uber-stored-sensitive-database-key-on-public-github-page/

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s