Kelemahan Keselamatan JWT Mencetuskan Perdebatan Mengenai Pelaksanaan Row-Level Security PostgreSQL

Pasukan Komuniti BigGo
Kelemahan Keselamatan JWT Mencetuskan Perdebatan Mengenai Pelaksanaan Row-Level Security PostgreSQL

Sambungan eksperimental baharu PostgreSQL yang menggunakan JSON Web Tokens (JWT) untuk keselamatan peringkat baris telah mencetuskan perbincangan hangat mengenai kelemahan keselamatan JWT dan pendekatan alternatif. Sambungan jwt_context, yang dibangunkan oleh Tomas Vondra, bertujuan menyelesaikan isu pengumpulan sambungan dengan keselamatan peringkat baris berasaskan peranan tradisional, tetapi pakar keselamatan membangkitkan kebimbangan mengenai pendekatan ini.

Keselamatan peringkat baris (RLS) dalam PostgreSQL secara tradisinya bergantung kepada peranan pangkalan data untuk mewujudkan konteks yang dipercayai. Walau bagaimanapun, pendekatan ini menimbulkan cabaran dengan pengumpulan sambungan dan memerlukan pentadbir pangkalan data menguruskan peranan untuk setiap pengguna aplikasi. Sambungan baharu ini cuba menyelesaikan masalah ini dengan menggunakan token JWT yang ditandatangani secara kriptografi untuk mewujudkan kepercayaan tanpa bergantung kepada peranan berasaskan pengesahan.

Kebimbangan Keselamatan Menjadi Tumpuan Utama

Kebimbangan paling ketara yang dibangkitkan oleh komuniti berpusat pada kelemahan JWT yang telah didokumentasikan dengan baik. Penyelidik keselamatan telah mengenal pasti kecacatan kritikal dalam pelaksanaan JWT, terutamanya berkaitan serangan kekeliruan algoritma di mana pelaku berniat jahat boleh bertukar antara kaedah kriptografi simetri dan asimetri untuk memintas kawalan keselamatan.

Oh lihat, persediaan biasa untuk kelemahan JWT klasik... Anda sepatutnya benar-benar mempertimbangkan untuk tidak menggunakan JWT untuk reka bentuk baharu yang tidak memerlukan interoperabiliti dengan JWT secara a priori.

Struktur kod sambungan jwt_context nampaknya mengikuti corak yang secara sejarahnya telah membawa kepada pelanggaran keselamatan dalam pelaksanaan JWT lain. Kelemahan ini telah menjejaskan platform utama termasuk Firebase dan pelbagai pakej npm, menunjukkan bahawa walaupun organisasi yang mantap boleh menjadi mangsa isu berkaitan keselamatan JWT.

Perbandingan Keselamatan JWT vs PASETO

  • Isu JWT: Serangan kekeliruan algoritma, kelemahan pertukaran kunci simetri/asimetri, pelanggaran keselamatan bersejarah dalam pakej Firebase dan npm
  • Kelebihan PASETO: Direka untuk mengelakkan perangkap kriptografi, lebih selamat secara lalai, menghapuskan serangan kekeliruan algoritma
  • Kesan Prestasi: Pelaksanaan keselamatan peringkat baris boleh menggunakan sehingga 30% daripada prestasi pelayan pangkalan data

Pendekatan Alternatif Mendapat Perhatian

Perbincangan ini telah menyerlahkan PASETO (Platform-Agnostic Security Tokens) sebagai alternatif yang lebih selamat kepada JWT. Tidak seperti JWT, PASETO direka bentuk dari awal untuk mengelakkan perangkap kriptografi yang melanda pelaksanaan JWT. Beberapa ahli komuniti menyatakan terkejut apabila mengetahui tentang alternatif ini, menunjukkan jurang pengetahuan dalam komuniti pembangun mengenai isu keselamatan JWT.

Menariknya, sesetengah organisasi telah melaksanakan penyelesaian serupa dengan jayanya. Neon, perkhidmatan awan PostgreSQL, telah membangunkan sistem RLS berasaskan JWT mereka sendiri dengan langkah keselamatan tambahan. Pendekatan mereka termasuk menggunakan JSON Web Keys rawak untuk setiap sambungan, ID token monotonik untuk mencegah penyeludupan token, dan pengurusan kumpulan sambungan yang ketat untuk mencegah penggunaan semula konteks.

Cabaran Pelaksanaan Dunia Sebenar

Selain kebimbangan keselamatan, perbincangan komuniti mendedahkan cabaran praktikal dengan pelaksanaan RLS berasaskan JWT. Overhed prestasi kekal sebagai isu penting, dengan seorang pembangun melaporkan bahawa keselamatan peringkat baris menggunakan kira-kira 30% prestasi pelayan pangkalan data dalam pelaksanaan mereka dari dua dekad yang lalu.

Keserasian pengumpulan sambungan, walaupun diperbaiki oleh pendekatan JWT, masih memerlukan pengurusan yang teliti. Sambungan menyimpan konteks dalam pembolehubah peringkat sesi yang mesti dibersihkan dan dipulihkan dengan betul apabila sambungan digunakan semula. Ini menambah kerumitan kepada pelaksanaan kumpulan sambungan dan memerlukan pengubahsuaian kepada infrastruktur pangkalan data sedia ada.

Sambungan pada masa ini hanya menyokong ciri JWT asas, kekurangan langkah keselamatan penting seperti tamat tempoh token dan keupayaan putaran kunci. Batasan ini menjadikannya tidak sesuai untuk persekitaran pengeluaran tanpa pembangunan tambahan yang ketara.

Batasan Sambungan jwt_context

  • Algoritma yang Disokong: Hanya HS256 (HMAC) dan ES256 (ECDSA)
  • Ciri yang Tiada: Pemeriksaan tamat tempoh token, pengurusan putaran kunci, penyulitan muatan token
  • Keperluan Keselamatan: Tahap keistimewaan SUSET untuk konfigurasi kunci, akses superuser boleh menjejaskan keselamatan
  • Pengumpulan Sambungan: Memerlukan pengurusan konteks sesi dan pembersihan yang betul antara penggunaan semula sambungan

Penggunaan Industri dan Pandangan Masa Depan

Walaupun terdapat kebimbangan keselamatan, sistem pengesahan dan kebenaran berasaskan JWT kekal diterima pakai secara meluas dalam industri. Banyak organisasi terus menggunakan token JWT untuk kemudahan dan interoperabiliti mereka, sering kali tidak menyedari risiko keselamatan yang mendasari. Perdebatan ini menyerlahkan cabaran yang lebih luas dalam industri teknologi: mengimbangi kemudahan dan penstandardan terhadap amalan terbaik keselamatan.

Perbincangan juga mendedahkan bahawa pendekatan serupa telah berjaya dilaksanakan oleh pelbagai organisasi selama bertahun-tahun, menunjukkan bahawa konsep itu sendiri mempunyai merit apabila dilaksanakan dengan betul. Walau bagaimanapun, pilihan JWT sebagai teknologi asas kekal menjadi kontroversi di kalangan pakar keselamatan.

Memandangkan sambungan kekal dalam status eksperimental, maklum balas komuniti mungkin mempengaruhi arah pembangunan masa depannya. Sama ada pembangun akan menangani kebimbangan keselamatan dengan bertukar kepada format token alternatif atau melaksanakan perlindungan tambahan masih belum dapat dipastikan.

Rujukan: Using JWT to establish a trusted context for RLS