Datasette 0.65.5 menutup celah permission bypass
Oleh Zai · Let's Make It Easy
Dipublikasikan 2026-09-17
Datasette 0.65.5 menutup celah permission bypass — ringkasan teknis berbasis sumber primer dan referensi independen.
Datasette 0.65.5 menutup celah pada pemeriksaan izin nama tabel. Menurut catatan rilis Simon Willison dan advisory GitHub GHSA-h547-rmjf-5m2m, trailing newline pada nama tabel dapat melewati pemeriksaan permission dan membuka akses ke private rows. Bug ini sudah diperbaiki dalam rilis tersebut.
1. Apa yang terjadi pada validasi nama tabel?
Aplikasi sering membandingkan nama tabel dari request dengan daftar tabel yang boleh diakses. Masalah muncul ketika komponen yang memeriksa izin memperlakukan string dengan trailing newline secara berbeda dari komponen yang menjalankan query. Perbedaan kecil dalam normalisasi bisa membuat pemeriksaan melihat satu nilai, sementara router atau database menerima nilai lain.
Kasus Datasette ini tidak berarti setiap instalasi otomatis terekspos. Dampaknya bergantung pada konfigurasi permission dan endpoint yang menerima nama tabel dari pengguna. Namun, bug ini menunjukkan kenapa validasi input perlu diuji sampai ke boundary antar-komponen, bukan hanya pada request normal.
2. Mengapa trailing newline penting?
Karakter newline mudah luput dari pemeriksaan karena tidak terlihat dalam log atau tampilan browser. Developer bisa menganggap `users` dan `users\
` sebagai input yang jelas berbeda, tetapi sistem yang melakukan trimming, decoding, atau routing dapat menghasilkan perilaku yang tidak konsisten.
Untuk aplikasi data, ketidakkonsistenan ini berbahaya. Permission check yang lolos tidak otomatis berarti query yang dijalankan aman. Setiap layer harus memakai aturan normalisasi yang sama sebelum nilai dipakai untuk otorisasi atau akses data.
3. Apa yang perlu dilakukan?
Pemilik instalasi Datasette sebaiknya memeriksa versi yang berjalan dan mengikuti rilis 0.65.5. Setelah patch, tambahkan regression test untuk nama tabel dengan whitespace di awal dan akhir, termasuk newline. Uji endpoint yang memakai nama tabel dari URL atau parameter, lalu pastikan hasil permission check sama dengan objek yang benar-benar diakses.
Advisory GitHub adalah referensi teknis utama untuk celah ini. Catatan rilis Simon Willison memberi konteks perubahan pada Datasette, tetapi tidak menggantikan audit konfigurasi lokal. Jika aplikasi menaruh Datasette di balik service lain, periksa juga apakah proxy melakukan decoding atau trimming tambahan.
Bug seperti ini jarang terlihat dalam alur pemakaian biasa. Justru karena itu, test keamanan perlu memasukkan input yang tampak tidak penting. Satu karakter yang tidak terlihat bisa mengubah keputusan otorisasi.
4. Batas pembacaan temuan
Catatan rilis dan advisory menjelaskan mekanisme bug, bukan bukti bahwa semua deployment Datasette pernah dieksploitasi. Karena itu, respons yang tepat bukan panik atau mengabaikan patch. Identifikasi versi, pahami konfigurasi permission, lalu verifikasi perilaku endpoint dengan test yang merepresentasikan input nyata. Dokumentasikan hasilnya agar perubahan berikutnya tidak menghapus regression test tersebut.
Referensi: https://simonwillison.net/2026/Sep/16/datasette-2/