What Hacker Can Do with Grafana 8.x Arbitrary File Reading Vulnerability?

What Hacker Can Do with Grafana 8.x Arbitrary File Reading Vulnerability?

Table of contents

No heading

No headings in the article.

This article in Bahasa, are you looking for English version? Google Translate here.

Grafana adalah sebuah aplikasi web open source yang biasanya digunakan sebagai sarana visualisasi pada monitoring system. Pertulisan ini dibuat versi terakhir dari Grafana adalah 8.3.0.

grafana-v8.png

Berawal dari sebuah artikel yang ada pada tautan ini. Artikel tersebut menjelaskan bahwa ada sebuah celah keamanan yang memungkinkan pengguna membaca berkas pada server aplikasi Grafana tanpa perlu login. Selama aplikasi bisa diakses dari internet atau bahasa kerennya "internet accessible", maka celah keamanan ini bisa dieksploitasi.

Update: Selang satu hari dari tulisan ini, Grafana menerbitkan press release terkait celah keamanan ini. Sumber masalah dari celah keamanan ini dikategorisasikan sebagai Path Traversal ( CVE-2021-43798 ).

Saya mencoba melakukan PoC (proof of concept) untuk mengetahui sejauh mana celah ini bisa dieksploitasi. Untuk kebutuhan PoC ini saya menggunakan Docker, dan berikut langkahnya.

docker run --rm -ti \
--publish 3000:3000 \
--name grafana \
--env "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \
grafana/grafana-oss:latest

Perintah di atas menjalankan sebuah container grafana/grafana-oss:latest dengan nama grafana pada port 3000 dan sekaligus mengaktifkan beberapa plugin. Untuk mengetahui apakah aplikasi grafana sudah berhasil dijalankan, silakan buka alamat http://localhost:3000 pada browser. Seharusnya halaman login grafana akan ditampilkan. Namun jika tidak berhasil, silakan liat log pada terminal atau docker dashboard.

Hal selanjutnya adalah memastikan apakah grafana yang dijalankan masih bisa dieksploitasi dengan celah keamanan ini. Untuk hal ini saya menggunakan Nuclei . Berikut perintah yang saya gunakan ketika menjalankan Nuclei.

nuclei \
--templates vulnerabilities/grafana/grafana-file-read.yaml \
--target http://localhost:3000

nuclei.png

Jika dilihat dari hasil scan nuclei, terlihat bahwa versi terakhir yang saya jalankan (saat tulisan ini dibuat adalah versi 8.3.0) ini bisa dieksploitasi. Tapi mungkin ada pertanyaan seperti ini "memang hacker bisa apa ya dengan hal ini?". Jika ditanya demikian, jawabannya menyesuaikan dengan situasi dan kondisi server serta kreatifitas hacker itu sendiri. Saya akan coba rangkum beberapa poin yang bisa dilakukan hacker pada celah keamanan ini, sebagai berikut:

Dapat membaca hampir semua berkas pada server tempat Grafana terpasang.

Sesuai dengan nama celah keamanannya "arbitrary file read", tentunya hacker bisa mengetahui isi dari hampir semua berkas yang ada di server. Mengapa saya bilang hampir semua? karena pada kenyataanya aplikasi ini tidak dijalankan dengan level tertinggi (root). Jika aplikasi ini dijalankan dengan hak akses tertinggi (root), maka akibatnya bisa lebih berbahaya lagi.

Oke sebelum berandai-andai, mari kita bahas hal yang pasti bisa dilakukan pada kondisi standar. Pada kondisi standar aplikasi ini memiliki sebuah file konfigurasi, dan hal inilah yang bisa dimanfaatkan oleh hacker. Konfigurasi ini biasanya berada pada direktori /etc/grafana/ yaitu grafana.ini dan ldap.toml.

grafana-conf.png

Jika dilihat dari berkas konfigurasinya, ada yang berisi konfigurasi LDAP. LDAP ini biasanya digunakan untuk sarana login terpusat (single sign-on). Hacker yang mengetahui informasi LDAP ini, bisa melakukan eksploitasi lebih lanjut. Misalnya, dengan menyerang server LDAP atau menggunakan credentials LDAP untuk mencuri informasi pengguna lain.

Dapat menyerang aplikasi atau server lain.

Tentunya hacker akan mencari informasi lain agar dapat meningkatkan serangannya. Misalnya pada contoh ini, hacker bisa mengetahui bahwa Nginx terpasang pada server yang sama dengan cara merekues ke berkas /etc/nginx/nginx.conf. Berbekal konfigurasi Nginx ini, hacker bisa mengetahui lokasi sertifikat SSL yang digunakan. Selanjutnya menggunakan informasi tersebut untuk kebutuhan dekripsi komunikasi pada semua target dengan sertifikat SSL yang sama.

nginx-conf.png

Hal lebih buruk bisa terjadi sejalan dengan jumlah aplikasi lain yang terpasang di server. Tentunya kemungkinan yang saya sebutkan di atas bisa berkurang atau bertambah. Bisa berkurang atau bahkan tidak bisa dieksploitasi, ketika pengelola server sudah melakukan hardening secara menyeluruh. Bisa bertambah, ketika hacker mengetahui ada aplikasi atau miskonfigurasi lain yang dapat meningkatkan serangan.

Mengakhiri tulisan ini, saya ingin memberikan opini terkait celah keamanan ini. Celah keamanan seperti ini akan selalu ada dan tidak bisa dihindari. Jika anda pengelola dan pengguna Grafana, sebaiknya tidak membuka akses Grafana ke publik atau internet. Hanya gunakan domain internal atau IP private untuk mengaksesnya. Pada dasarnya Grafana ini digunakan untuk kebutuhan monitoring yang tidak diperuntukkan untuk konsumsi umum. Bahkan tidak semua orang dalam satu perusahaan perlu hak akses untuk melihat visualisasi data pada Grafana. Namun, jika tidak memungkinkan dengan hanya akses internal, opsi lain bisa gunakan seperti whitelist IP address. Hal ini berguna untuk mengurangi pintu masuk hacker.

Tabik,