Sebuah ekstensi eksperimental PostgreSQL baru yang menggunakan JSON Web Tokens (JWT) untuk row-level security telah memicu diskusi sengit tentang kerentanan keamanan JWT dan pendekatan alternatif. Ekstensi jwt_context, yang dikembangkan oleh Tomas Vondra, bertujuan untuk menyelesaikan masalah connection pooling dengan row-level security berbasis peran tradisional, namun para ahli keamanan mengangkat bendera merah tentang pendekatan ini.
Row-level security (RLS) di PostgreSQL secara tradisional mengandalkan peran database untuk membangun konteks terpercaya. Namun, pendekatan ini menciptakan tantangan dengan connection pooling dan mengharuskan administrator database untuk mengelola peran untuk setiap pengguna aplikasi. Ekstensi baru ini berusaha menyelesaikan masalah-masalah tersebut dengan menggunakan token JWT yang ditandatangani secara kriptografis untuk membangun kepercayaan tanpa mengandalkan peran berbasis autentikasi.
Kekhawatiran Keamanan Menjadi Pusat Perhatian
Kekhawatiran paling signifikan yang diangkat oleh komunitas berpusat pada kerentanan JWT yang terdokumentasi dengan baik. Para peneliti keamanan telah mengidentifikasi cacat kritis dalam implementasi JWT, terutama seputar serangan kebingungan algoritma di mana aktor jahat dapat beralih antara metode kriptografi simetris dan asimetris untuk melewati kontrol keamanan.
Oh lihat, pengaturan tipikal untuk kerentanan JWT klasik... Anda benar-benar harus mempertimbangkan untuk tidak menggunakan JWT untuk desain baru yang tidak a priori perlu berinteroperasi dengan JWT.
Struktur kode ekstensi jwt_context tampaknya mengikuti pola yang secara historis telah menyebabkan pelanggaran keamanan dalam implementasi JWT lainnya. Kerentanan ini telah mempengaruhi platform besar termasuk Firebase dan berbagai paket npm, menunjukkan bahwa bahkan organisasi yang mapan dapat menjadi korban masalah keamanan terkait JWT.
Perbandingan Keamanan JWT vs PASETO
- Masalah JWT: Serangan kebingungan algoritma, kerentanan perpindahan kunci simetris/asimetris, pelanggaran keamanan historis di Firebase dan paket npm
- Keunggulan PASETO: Dirancang untuk menghindari jebakan kriptografi, lebih aman secara default, menghilangkan serangan kebingungan algoritma
- Dampak Performa: Implementasi keamanan tingkat baris dapat mengonsumsi hingga 30% dari performa server basis data
Pendekatan Alternatif Mendapat Perhatian
Diskusi ini telah menyoroti PASETO (Platform-Agnostic Security Tokens) sebagai alternatif yang lebih aman untuk JWT. Tidak seperti JWT, PASETO dirancang dari awal untuk menghindari jebakan kriptografis yang mengganggu implementasi JWT. Beberapa anggota komunitas menyatakan terkejut saat mempelajari tentang alternatif ini, menunjukkan adanya kesenjangan pengetahuan dalam komunitas pengembang tentang masalah keamanan JWT.
Menariknya, beberapa organisasi telah berhasil mengimplementasikan solusi serupa. Neon, sebuah layanan cloud PostgreSQL, telah mengembangkan sistem RLS berbasis JWT mereka sendiri dengan langkah-langkah keamanan tambahan. Pendekatan mereka mencakup penggunaan JSON Web Keys acak untuk setiap koneksi, ID token monotonik untuk mencegah penyelundupan token, dan manajemen connection pool yang ketat untuk mencegah penggunaan ulang konteks.
Tantangan Implementasi Dunia Nyata
Selain kekhawatiran keamanan, diskusi komunitas mengungkapkan tantangan praktis dengan implementasi RLS berbasis JWT. Overhead kinerja tetap menjadi masalah signifikan, dengan satu pengembang melaporkan bahwa row-level security mengonsumsi sekitar 30% kinerja server database dalam implementasi mereka dari dua dekade lalu.
Kompatibilitas connection pooling, meskipun diperbaiki oleh pendekatan JWT, masih memerlukan manajemen yang hati-hati. Ekstensi menyimpan konteks dalam variabel tingkat sesi yang harus dibersihkan dan dipulihkan dengan benar ketika koneksi digunakan kembali. Ini menambah kompleksitas pada implementasi connection pool dan memerlukan modifikasi pada infrastruktur database yang ada.
Ekstensi saat ini hanya mendukung fitur JWT dasar, kurang memiliki langkah-langkah keamanan penting seperti kedaluwarsa token dan kemampuan rotasi kunci. Keterbatasan ini membuatnya tidak cocok untuk lingkungan produksi tanpa pengembangan tambahan yang signifikan.
Keterbatasan Ekstensi jwt_context
- Algoritma yang Didukung: Hanya HS256 (HMAC) dan ES256 (ECDSA)
- Fitur yang Hilang: Pemeriksaan kedaluwarsa token, manajemen rotasi kunci, enkripsi payload token
- Persyaratan Keamanan: Level privilege SUSET untuk konfigurasi kunci, akses superuser dapat mengkompromikan keamanan
- Connection Pooling: Memerlukan manajemen konteks sesi dan pembersihan yang tepat antara penggunaan ulang koneksi
Adopsi Industri dan Prospek Masa Depan
Meskipun ada kekhawatiran keamanan, sistem autentikasi dan otorisasi berbasis JWT tetap banyak diadopsi di industri. Banyak organisasi terus menggunakan token JWT karena kemudahan dan interoperabilitasnya, seringkali tidak menyadari risiko keamanan yang mendasarinya. Perdebatan ini menyoroti tantangan yang lebih luas dalam industri teknologi: menyeimbangkan kemudahan dan standardisasi dengan praktik terbaik keamanan.
Diskusi juga mengungkapkan bahwa pendekatan serupa telah berhasil diimplementasikan oleh berbagai organisasi selama bertahun-tahun, menunjukkan bahwa konsep itu sendiri memiliki manfaat ketika dijalankan dengan benar. Namun, pilihan JWT sebagai teknologi yang mendasarinya tetap kontroversial di antara para ahli keamanan.
Karena ekstensi tetap dalam status eksperimental, umpan balik komunitas dapat mempengaruhi arah pengembangan masa depannya. Apakah para pengembang akan mengatasi kekhawatiran keamanan dengan beralih ke format token alternatif atau mengimplementasikan perlindungan tambahan masih harus dilihat.