Security Header HTTP
Hypertext Transfer Protocol (HTTP)
HTTP merupakan protokol pada lapisan aplikasi (application layer) yang digunakan untuk mendistribusikan dan mengkolaborasikan data dari client ke server (dan sebaliknya) menggunakan hipermedia pada jaringan internet. Pengembangan HTTP dilakukan oleh World Wide Web Consortium (W3C) dan grup Internet Engineering Task Force (IETF) yang dituangkan pada dokumen Request for Comments (RFC). Pengambangan HTTP pertama kali adalah versi 0.9 yang dapat mengirimkan data secara simple (hanya berfokus pada isi data, tanpa memandang tipe data dan encodingnya), seiring dengan perkembangan infrastruktur internet, perangkat pengguna dan kebutuhan pengiriman data, pada tahun 1999 HTTP dikembangkan kembali menjadi versi 1.1 untuk memperbaiki HTTP versi sebelumnya dan mengakomodir penambahan tipe data, encoding data, penggunaan proxy, cache, serta koneksi yang persistent.
Cara Kerja HTTP
HTTP memiliki 2 (dua) jenis transaksi data, yaitu permintaan (request) dari client ke server dan tanggapan (response) dari server ke client. Secara umum cara kerja protokol HTTP pada server adalah dengan mendengarkan port komunikasi, kemudian client akan mengirimkan kode request (misalnya GET / HTTP/1.1) diikuti dengan pesan MIME yang berisis informasi header, request header dan body data. Apabila request yang dikirimkan oleh client bernilai valid, maka server akan membalasnya dengan kode response HTTP/1.1 200 OK diikuti dengan pesan MIME yang berisi informasi header, response header dan body data
Header HTTP
Header HTTP merupakan nilai attribut berbasis teks yang ditetapkan oleh client dan server untuk melakukan kirim-terima data melalui mekanisme request dan response. Secara umum standar header HTTP 1.1 memiliki informasi mengenai teknik enkripsi yang digunakan pada konten, caching times-to-live, serta arah tujuan website. Paket HTTP dikirimkan melalui jaringan yang memungkinkan untuk di eksploitasi oleh pihak tidak berwenang, khususnya pada jaringan yang tidak terenkripsi, oleh karena itu perlu adanya implementasi teknik keamanan pada paket tersebut.
Keamanan Header HTTP Dalam Statistik
Berdasarkan hasil kegiatan Information Technology Security Assessment (ITSA) pada instansi pemerintah pusat maupun daerah tahun 2018 sampai dengan bulan Juli tahun 2019, terdapat 148 (seratus empat puluh delapan) aplikasi yang telah diperiksa keamanan header HTTP nya, dimana hanya 123 (seratus dua puluh tiga) aplikasi yang menampilkan hasil pemeririksaan, adapaun 14 (empat belas) aplikasi mengalami server down, 10 (sepuluh aplikasi) menerapakan setting WAF atau IPS yang tidak memungkinkan untuk dilakukan pemeriksaan dan 1 (satu) aplikasi localhost
Penilaian mengenai implementasi keamanan header HTTP dapat diklasifikasikan kedalam 6 (enam) penilaian, antara lain :
- A+ : Mengimplementasikan seluruh setting keamanan header HTTP;
- A : Mengimplementasikan 5 (lima) setting keamanan header HTTP;
- B : Mengimplementasikan 4 (empat) setting keamanan header HTTP;
- C : Mengimplementasikan 3 (tiga) setting keamanan header HTTP;
- D : Mengimplementasikan 2 (dua) setting keamanan header HTTP;
- E : Mengimplementasikan 1 (satu) setting keamanan header HTTP.
- F : Tidak mengimplementasikan setting keamanan header HTTP sama sekali).
Dari 123 (seratus dua puluh tiga) aplikasi pada stakeholder pemerintah yang telah diperiksa, hampir seluruh aplikasi belum mensetting keamanan header HTTP dengan baik, sehingga dapat memiliki celah kerawanan yang dapat dieksploitasi dengan mudah oleh pihak yang tidak berwenang
Serangan dan Remediasi pada Celah Kerawanan Header HTTP
Salah satu serangan yang memanfaatkan celah kerawanan pada header HTTP adalah serangan clickjacking. Serangan clickjacking merupakan teknik serangan dengan cara menyisipkan frame pada tombol dan/atau form input pada aplikasi yang menjadi target serangan. Dimana apabila pengguna menekan frame tersebut, maka dapat mentrigger instruksi yang telah ditanamkan oleh penyerang (misal mengirimkan informasi rahasia milik pengguna kepada pihak penyerang tanpa diketahui). Serangan clickjacking dapat dengan mudah dilakukan khususnya pada form login aplikasi, yang tentunya dapat merugikan pengguna. Melihat pentingnya setting keamanan pada header HTTP, maka perlu dilakukan pengamanan pada header HTTP, antara lain :1. Content Security Policy (CSP)
CSP merupakan setting pada header HTTP untuk melindungi aplikasi dari serangan XSS dengan cara melakukan whitelist pada sumber konten yang disetujui (approved content sources), sehingga dapat mencegah web browser untuk memuat aset dan konten yang mencurigakan. Pengaturan yang disarankan pada setting CSP adalah default-src ‘self’; script-src ‘self’; style-src ‘self’; img-src ‘self’; connect-src ‘self’;font-src ‘self’;form-action ‘self’;frame-ancestors ‘none’; upgrade-insecure-requests; report-to ‘default’;
2. Strict Transport Security (STS)
STS merupakan setting pada header HTTP untuk memperkuat implementasi Transport Layer Security (TLS), yaitu dengan cara memastikan semua komunikasi berjalan pada transport layer yang aman. Penerapan keamanan pada STS juga dapat meminimalisir beberapa jenis serangan Man in the Middle (MITM) yang umumnya melakukan pemaksaan pelepasan penggunaan TLS pada jalur komunikasi aman. Pengaturan yang disarankan pada setting STS adalah max-age=31536000;includeSubDomains; preload
3. X Content Type Options
X Content Type Options merupakan setting pada header HTTP untuk melindungi web browser dari serangan MIME-sniff, yaitu dengan cara mempertahankan tipe konten pada aplikasi. Pengaturan yang disarankan pada setting X Content Type Options adalah nosniff
4. X Frame Options
X Frame Options merupakan setting pada header HTTP untuk mengatur enable/disable frame pada aplikasi, dengan diaktifkannya setting ini, maka dapat mencegah penyisipan frame pada serangan clickjacking. Pengaturan yang disarankan pada setting X Frame Option adalah SAME-ORIGIN
5. Feature Policy
Feature Policy merupakan setting pada header HTTP untuk mengontrol fitur dan API yang digunakan pada aplikasi. Kontrol tersebut dapat berupa whitelist maupun blacklist terhadap fitur dan API yang terhubung pada aplikasi. Pengaturan yang disarankan pada setting Feature Policy adalahaccelerometer ‘none’; camera ‘none’; geolocation ‘none’; gyroscope ‘none’; magnetometer ‘none’; microphone ‘none’; payment ‘none’; usb ‘none’.6. Referrer Policy
Referrer Policy merupakan setting pada header HTTP untuk mengontrol jumlah informasi yang disertakan oleh web browser pada aplikasi. Pengaturan yang disarankan pada setting Referrer Policy adalah strict-origin-when-cross-origin.
Penutup
Berdasarkan pada parameter header HTTP yang perlu diamankan, dari 123 (seratus dua puluh tiga) aplikasi stakeholder pemerintah, hampir tidak mensetting Content Security Policy dan Feature Policy sama sekali, adapun setting X Frame Option merupakan parameter header HTTP yang paling banyak disetting
Perkembangan jaman dan teknologi telah memberikan banyak kemudahan dalam melakukan akses dan kirim terima informasi, akan tetapi juga memiliki tantangan yang berkaitan erat dengan keamanan informasi tersebut. Oleh karena itu perlu adanya kesadaran akan keamanan (security awareness) yang baik, khususnya bagi programmer yang mengembangkan aplikasi dinas, sehingga aplikasi yang dirancang bangun tidak hanya dapat berjalan (secara fungsionalitas), akan tetapi juga memiliki keamanan secara menyeluruh, salah satunya adalah dengan mengimplementasikan seluruh setting keamanan header HTTP pada aplikasi yang dikembangkan.