- Ditemukan kasus ketika antarmuka web perangkat NAS mengirim nama host khusus internal ke layanan eksternal
- Skrip pelaporan error sentry.io yang disertakan dalam UI web NAS mengirim nama host internal ke luar bersama stack trace
- Teramati perilaku aneh ketika pihak sentry.io mencoba koneksi TLS balik ke nama host tersebut, tetapi tidak pernah mengirim permintaan nyata
- Berkat konfigurasi DNS wildcard yang sudah disiapkan sebelumnya, kebocoran dapat terdeteksi, dan ada risiko kebocoran informasi serius bila memakai nama host yang sensitif
- Mekanisme ini berpotensi menjadi masalah keamanan karena bisa disalahgunakan untuk memicu pemindaian DNS terhadap host arbitrer
Instalasi NAS dan konfigurasi nama host internal
- Membeli perangkat NAS, memasang drive, lalu menghubungkannya ke jaringan rumah dan menjalankannya dalam mode HTTPS
- Memasang sertifikat TLS wildcard untuk subzona dari domain yang tidak bermakna di internet publik (misalnya
*.nothing-special.whatever.example.com)
- Menambahkan entri khusus lokal seperti
172.16.12.34 nas.nothing-special.whatever.example.com ke file /etc/hosts agar bisa diakses dari browser
Menemukan akses tak terduga dari luar
- Beberapa hari setelah NAS dipasang, mulai muncul permintaan dari luar ("outside world") ke nama host yang sama
- Nama host tersebut adalah nama yang sepenuhnya khusus internal dan hanya ada di file
/etc/hosts laptop
- Karena sebelumnya sudah disiapkan entri DNS wildcard untuk seluruh
*.nothing-special.whatever.example.com yang mengarah ke mesin yang dikelola sendiri, kebocoran ini bisa terdeteksi
- Setiap kali NAS dimuat, host GCP mencoba terhubung sambil menyajikan nama host internal tersebut sebagai SNI
Penyebab kebocoran: pelaporan error sentry.io
- Antarmuka web NAS memiliki fitur phone home, dan sebagai bagian darinya mengirim stack trace ke sentry.io
- Saat browser melakukan callback ke sentry.io, nama host yang dipakai untuk perangkat penyimpanan internal ikut terkirim
- Dikonfirmasi bahwa pihak sentry.io membuat koneksi TLS balik ke nama host tersebut, tetapi sama sekali tidak mengirim permintaan HTTP nyata
Implikasi keamanan dan respons
- Jika nama host memuat informasi sensitif (misalnya nama seperti
mycorp-and-othercorp-planned-merger-storage), ada risiko kebocoran informasi serius
- Dengan memanfaatkan mekanisme pelaporan sentry ini, dimungkinkan untuk memicu pemindaian DNS terhadap host eksternal arbitrer (cara detailnya diserahkan kepada pembaca)
- Sebagai langkah mitigasi, menjalankan Little Snitch untuk memblokir seluruh domain tersebut bagi semua aplikasi
1 komentar
Komentar Hacker News
Sepertinya orang-orang salah paham. Ini bukan masalah log CT, melainkan terkait sertifikat wildcard
Sentry mengumpulkan trace sisi klien, mengekstrak hostname yang mengirim permintaan, lalu mencoba melakukan polling kembali ke sana dan ditolak
Hostname pada dasarnya bukan informasi privat
Ia terekspos ke luar lewat berbagai jalur seperti kueri DNS atau sertifikat TLS
Jika ingin menyembunyikan layanan privat, lebih baik menaruh rahasia di path URL daripada di hostname
Misalnya seperti
fileservice.example.com/my-hidden-service-007-abc123/, karena ini hanya dikirim lewat HTTPS sehingga eksposurnya jauh lebih kecilAda yang penasaran apakah “clown GCP Host” itu istilah teknis. Ternyata itu adalah ungkapan penulis untuk menyindir cloud
Inti masalahnya adalah antarmuka web NAS mengirim log ke Sentry dengan hostname internal ikut terbawa
Dalam kasus seperti ini, saya mungkin akan menggantinya dengan OS open source tepercaya, atau memblokir panggilan ke Sentry lewat DNS blocking seperti PiHole
Ada yang menjelaskan bahwa ia memakai DNS lokal dan proxy TLS untuk memblokir total traffic yang keluar
Karena kasus seperti ini, saya menganggap uBlock Origin sebagai standar minimum keamanan web
Terlalu parah melihat kebanyakan halaman web memuat segunung skrip pihak ketiga dan membocorkan data
Ini bukan solusi mendasar, tetapi itulah yang terbaik yang bisa kita lakukan saat ini
Untuk mencegah masalah seperti ini, bagus jika menaruh reverse proxy Nginx di depan dan menyuntikkan header CSP
Dengan begitu, memang tidak bisa menghentikan NAS mengirim permintaan ke luar, tetapi bisa mencegah browser yang melakukannya sebagai pengganti
Misalnya permintaan avatar Steam (
https://avatars.steamstatic.com/HASH_medium.jpg) juga bisa diblokir dengan kebijakan CSPJika perlu, cukup buka sebagian saja. Tambahkan juga Referrer-Policy: no-referrer agar hostname tidak tertinggal di log eksternal
Saya membeli Synology NAS dan sudah beberapa kali menyesalinya
Di luar software komunitas, hampir tidak banyak yang bisa dilakukan
Menerapkan SSL dengan Let's Encrypt juga rumit, dan path-nya tidak standar sehingga sulit menemukan lokasi konfigurasinya
Ada banyak keluhan seperti versi rsync yang sudah tua, utilitas bawaan yang kurang, dan lain-lain. Rasanya lebih baik dulu memakai NAS berbasis Linux atau BSD
Saya baru-baru ini mencoba mengonfigurasi Sentry, dan sistem ini punya fitur yang mencoba mengatur uptime monitoring secara otomatis
Jika mengenali host, ia akan mengirim ping berkala, lalu jika responsnya stabil selama beberapa hari, muncul notifikasi, “Apakah Anda ingin menyiapkan uptime monitoring untuk host ini?”
Secara pribadi saya memblokir seluruh domain terkait Sentry
Ini bukan solusi umum, tetapi di lingkungan saya itulah pilihan terbaik
Server reverse lookup alamat kadang terlihat mencoba menyelesaikan bahkan alamat jaringan internal (ULA, RFC1918)
Jika data seperti ini digabungkan dengan informasi lain, kondisi internal bisa diinferensikan
Ada juga yang berkata, “Bahkan pernah tertangkap audio UDP saat mengumpulkan data darknet”
Dulu saya pernah menyelidiki fenomena serupa di Heroku
Saat membuat aplikasi baru, sebuah subdomain acak diberikan, dan bahkan tanpa melakukan lookup DNS pun permintaan dari pemindai kerentanan langsung masuk
Setelah ditanya ke Heroku, mereka menjelaskan bahwa URL aplikasi baru itu dipublikasikan di log Certificate Transparency (CT)
Ia juga membagikan tautan Cara kerja Certificate Transparency