Pengantar

Fault Injection Attack adalah teknik yang memanfaatkan kondisi kesalahan secara sengaja untuk melihat bagaimana sistem merespons. Dalam konteks keamanan, teknik ini dapat digunakan untuk menemukan kelemahan yang mungkin tidak terlihat saat sistem berjalan dalam kondisi normal.

Fault injection juga digunakan sebagai metode pengujian keamanan. NIST menjelaskan bahwa security fault injection test dapat mengubah data atau kondisi yang diterima komponen aplikasi untuk mengetahui dampaknya terhadap keamanan sistem (dikutip dari: NIST – Security Fault Injection Test).


Apa Itu Fault Injection Attack?

Fault Injection Attack dilakukan dengan membuat sistem mengalami kondisi yang tidak biasa. Tujuannya dapat berupa pengujian keamanan, pencarian bug, atau eksploitasi terhadap sistem yang memiliki kelemahan.

Fault dapat diberikan pada berbagai bagian, seperti:

  • Data yang diproses aplikasi.
  • Memori atau kondisi internal.
  • Komunikasi jaringan.
  • Input pengguna.
  • Komponen perangkat keras.
  • Proses autentikasi atau kontrol keamanan.

Berbeda dari serangan yang langsung mengeksploitasi kerentanan tertentu, fault injection berusaha memicu kondisi yang membuat sistem berperilaku tidak semestinya.

baca juga : Zero Trust Network Access (ZTNA) vs Traditional VPN: Mana yang Lebih Aman untuk Akses Jaringan Modern?


Bagaimana Fault Injection Bekerja?

1. Menentukan Target

Pertama, tester menentukan komponen yang ingin diuji. Target dapat berupa aplikasi, API, perangkat IoT, sistem operasi, atau komponen keamanan.

2. Menentukan Jenis Fault

Selanjutnya, dipilih kondisi kesalahan yang relevan. Contohnya adalah data rusak, koneksi terputus, input tidak valid, atau perubahan kondisi runtime.

3. Memicu Kondisi Tidak Normal

Fault kemudian diberikan pada lingkungan pengujian. Sistem diamati untuk melihat apakah kontrol keamanan tetap berjalan dengan benar.

4. Menganalisis Respons

Hasil pengujian digunakan untuk mencari kelemahan. Perhatian khusus diberikan pada kondisi ketika sistem gagal melakukan validasi, melewati autentikasi, membocorkan informasi, atau mengalami perubahan perilaku yang tidak diharapkan.


Jenis Fault Injection

Software Fault Injection

Metode ini dilakukan pada aplikasi atau perangkat lunak. Tester dapat memanipulasi input, respons, data, atau kondisi runtime.

NIST mencantumkan resource fault injection, network fault injection, system fault injection, dan user interface fault injection sebagai contoh teknik dalam dynamic analysis (dikutip dari: NIST – Dynamic Analysis Tools).

Hardware Fault Injection

Pada perangkat keras, fault dapat diberikan melalui kondisi fisik tertentu untuk menguji ketahanan komponen keamanan.

Pendekatan ini sering berkaitan dengan perangkat embedded, IoT, smart card, dan sistem yang memiliki mekanisme secure boot.

Network Fault Injection

Pengujian dilakukan dengan membuat kondisi jaringan tidak normal. Contohnya adalah packet loss, latency, koneksi terputus, atau data yang berubah.

Metode tersebut dapat membantu melihat apakah aplikasi tetap menjaga keamanan ketika komunikasi mengalami gangguan.


Mengapa Fault Injection Berbahaya?

Dalam pengujian yang sah, fault injection membantu menemukan kelemahan sebelum dimanfaatkan attacker. Namun, teknik yang sama dapat disalahgunakan terhadap sistem yang tidak memiliki perlindungan memadai.

Beberapa dampak yang mungkin muncul antara lain:

  • Authentication bypass, jika sistem gagal menangani kondisi error.
  • Information disclosure, ketika error menghasilkan informasi sensitif.
  • Data corruption, jika sistem tidak mampu menangani data yang rusak.
  • Privilege escalation, apabila kontrol akses gagal pada kondisi tertentu.
  • Denial of service, ketika fault menyebabkan aplikasi berhenti atau crash.

OWASP juga menekankan bahwa penanganan error yang buruk dapat membocorkan informasi mengenai teknologi, struktur internal, dan komponen yang digunakan aplikasi (dikutip dari: OWASP – Testing for Improper Error Handling).


Fault Injection untuk Pengujian Keamanan

Fault injection sebaiknya dilakukan dalam lingkungan yang terkontrol. Sistem produksi tidak ideal digunakan sebagai target karena pengujian dapat menyebabkan crash atau kerusakan data.

Pengujian dapat ditempatkan dalam proses Secure Software Development Life Cycle (SSDLC). NIST merekomendasikan berbagai teknik verifikasi perangkat lunak, termasuk threat modeling, automated testing, static analysis, fuzzing, dan pengujian berbasis kode (dikutip dari: NIST IR 8397 – Guidelines on Minimum Standards for Developer Verification of Software).

Dengan menggabungkan fault injection bersama teknik tersebut, tim keamanan dapat memperoleh gambaran yang lebih lengkap mengenai ketahanan aplikasi.

baca juga : AS-REP Roasting: Mengenal Serangan Kerberos untuk Mencuri Kredensial Active Directory


Cara Mencegah Dampak Fault Injection

Validasi Input

Semua input dari sumber yang tidak tepercaya harus divalidasi. Validasi membantu mencegah data tidak sesuai menyebabkan perilaku aplikasi yang tidak terduga.

Tangani Error dengan Aman

Aplikasi sebaiknya memberikan pesan error yang aman. Detail seperti stack trace, path internal, atau informasi konfigurasi sebaiknya tidak ditampilkan kepada pengguna.

Gunakan Fail-Safe

Ketika terjadi kondisi tidak normal, sistem sebaiknya masuk ke kondisi yang aman. Kontrol seperti autentikasi dan otorisasi tidak boleh dilewati hanya karena terjadi error.

Lakukan Security Testing

Fault injection perlu dikombinasikan dengan fuzzing, source code review, static analysis, dan penetration testing. Dengan begitu, kelemahan dapat ditemukan dari beberapa sudut pandang.


Fault Injection vs Fuzz Testing

Keduanya memiliki konsep yang mirip, tetapi fokusnya berbeda.

Fuzz testing biasanya memberikan banyak input tidak terduga untuk menemukan crash atau perilaku abnormal. Sementara itu, fault injection lebih luas karena dapat memanipulasi kondisi internal, resource, jaringan, maupun lingkungan sistem.

Karena itu, fault injection dapat menjadi pelengkap fuzzing dalam pengujian keamanan.

baca juga : LSASS Memory Dumping: Mengenal Teknik Pencurian Kredensial Windows dan Cara Mendeteksinya


Kesimpulan

Fault Injection Attack merupakan teknik yang memicu kondisi kesalahan secara sengaja untuk melihat bagaimana sistem merespons.

Dalam konteks keamanan, teknik ini sangat berguna untuk menemukan kelemahan pada error handling, autentikasi, kontrol akses, komunikasi, dan mekanisme keamanan lainnya.

Namun, pengujian harus dilakukan pada lingkungan yang terkontrol. Dengan memadukan fault injection, fuzzing, static analysis, dan security testing, organisasi dapat menemukan kelemahan lebih awal sebelum dimanfaatkan oleh attacker.