- Belum lama ini, ada rantai serangan yang memanfaatkan kerentanan injeksi JSON pada perangkat Samsung hingga berujung pada eksekusi kode di perangkat
- Ini bisa menjadi pelajaran tentang bagaimana API yang mempercayai payload JSON secara membabi buta dapat disalahgunakan
Menyuntikkan ke segala sesuatu secara "smart"
- Dalam kasus Samsung Smart Hub, aplikasi mobile dapat berkomunikasi dengan hub dari jarak jauh untuk mengendalikan semua perangkat yang terhubung
- Dengan mengirim permintaan POST berbahaya ke endpoint /credentials, penyerang dapat mengubah kredensial yang digunakan hub untuk terhubung ke server jarak jauh dan memanipulasi data hingga berujung pada SQL injection
- Library json-c yang diandalkan Samsung dikompilasi dengan JSON_TOKENER_STRICT=0, sehingga string dapat didefinisikan dengan tanda kutip tunggal maupun ganda
- Melalui ini, penyerang dapat membuat kolom kustom di database sqlite internal hub
- Setelah menyisipkan rantai ROP yang terlalu panjang ke tabel camera, penyerang dapat mengirim DELETE ke endpoint /cameras sehingga proses video-core mencoba membaca data tersebut lalu crash, memicu buffer overflow berbasis stack yang klasik
- Pelajaran di sini adalah JSON injection → SQL injection → buffer overflow → ROP = pengambilalihan
Apa itu injeksi JSON?
- Injeksi JSON adalah kerentanan yang memungkinkan data berbahaya disisipkan ke dalam stream JSON untuk mengubah perilaku aplikasi atau memicu tindakan yang tidak diinginkan
- Injeksi JSON sisi server terjadi ketika data dari sumber yang tidak tepercaya tidak dibersihkan dengan benar di server lalu digunakan secara langsung atau tidak langsung dalam kode
Masalahnya ada pada parser
- Dalam aplikasi web dan API modern, beberapa parser dengan karakteristik dan kerentanan unik masing-masing dapat digunakan di dalam pipeline permintaan
- Ketidaksesuaian antar parser yang digabung dengan pemrosesan permintaan bertahap dapat menimbulkan kerentanan serius
- Parser JSON menghadapi kesulitan karena RFC JSON resmi membiarkan topik seperti kunci duplikat dan representasi angka tetap terbuka
- RFC resmi bukan satu-satunya spesifikasi; ada juga ECMAScript, JSON5, HJSON, dan Binary JSON(BSON)
- Interoperabilitas antar parser mengekspos risiko keamanan yang bahkan tidak disadari banyak orang keberadaannya
Masalah keamanan dalam interoperabilitas parser JSON
- Ketidaksesuaian dalam cara menangani kunci duplikat
- Ketidaksesuaian dalam cara menangani karakter khusus atau komentar
- Ketidaksesuaian dalam (de)serialisasi JSON
Bagaimana JSON disalahgunakan?
- Dengan memanipulasi JSON, data dapat disuntikkan agar aplikasi bekerja dengan cara yang tidak diperkirakan pengembang
- Ketika Anda dapat memanipulasi cara data melewati komponen dalam infrastruktur API, muncul peluang untuk mengendalikan logika bisnis
- Jika memahami bagaimana parser memproses input, Anda dapat menyalahgunakan perilaku parser agar input ditafsirkan dengan cara yang memungkinkan manipulasi data, sehingga validasi input bisa dilewati
Kesimpulan
- Serangan terhadap Samsung Smart Hub hanyalah salah satu contoh bagaimana injeksi JSON dapat berkembang menjadi rantai kerentanan kompleks, dari SQL injection hingga eksekusi kode jarak jauh
- Akar penyebabnya sering kali terletak pada ketidaksesuaian cara parser JSON menangani data, terutama ketika beberapa parser yang tidak lazim ikut terlibat
- Dengan memeriksa secara menyeluruh bagaimana objek JSON diserialisasi, dideserialisasi, dan diproses, kita dapat mengetahui cara membuat payload yang dapat melewati filter sanitasi dan memengaruhi logika bisnis
- Karena API terus menjadi fondasi aplikasi modern, memastikan keamanan cara API memproses data menjadi semakin penting
1 komentar
Validasi data yang diterima melalui body JSON sepertinya memang harus dibuat sangat ketat.