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. Tabel 1. dan 2. dibawah menunjukkan paket data request dan response pada HTTP.

Tabel 1. Paket data request pada HTTP.
Tabel 2. Paket data request pada HTTP.

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. Gambar 1. dibawah menunjukkan presentase aplikasi pada stakeholder pemerintah.

Gambar 1. Persentase aplikasi pada sektor pemerintah.

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. Gambar 2. dibawah menujukkan rekapitulasi penilaian keamanan header HTTP pada aplikasi stakeholder pemerintah.

Gambar 2. Rekapitulasi penilaian keamanan header HTTP pada aplikasi stakeholder pemerintah (Sumber : Hasil ITSA periode 2018-Juli 2019).

Sedangkan gambar 3. dibawah menunjukkan rekapitulasi penilaian keamanan header HTTP aplikasi pada stakeholder pemerintah (dalam persen).

Gambar 3. Persentase penilaian keamanan header HTTP aplikasi pada stakeholder pemerintah. (Sumber : hasil ITSA periode 2018 – Juli 2019)

Berdasarkan pada hasil rekapitulasi diatas, dapat diketahui bahwa setting keamanan header HTTP pada aplikasi stakeholder pemerintah, baik pusat maupun daerah masih sangat rendah, dimana terdapat sebanyak 79% aplikasi yang keamanan header HTTP nya belum disetting sama sekali dan hanya 2% aplikasi yang telah mensetting keamanan header HTTP dengan baik.

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’;. Gambar 4. dibawah menunjukkan contoh setting CSP.

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;. Gambar 5. dibawah menunjukkan contoh setting STS.

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. Gambar 6. dibawah menunjukkan contoh setting X Content Type Options.

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. Gambar 7. dibawah menunjukkan contoh setting X Frame Options.

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. Gambar 8. dibawah menunjukkan setting parameter header HTTP pada aplikasi stakeholder pemerintah.

Gambar 8. Rekapitulasi setting header HTTP pada aplikasi stakeholder pemerintah. (Sumber : Hasil ITSA periode 2018 – Juli 2019)

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.