Lubang Keselamatan Tersembunyi Yang Membolehkan Pelajar Memintas Kebenaran Fail

Pasukan Komuniti BigGo
Lubang Keselamatan Tersembunyi Yang Membolehkan Pelajar Memintas Kebenaran Fail

Dalam dunia keselamatan komputer yang rumit, kadangkala kisah paling menarik muncul dari tempat yang tidak disangka—seperti makmal komputer universiti pada tahun 1990-an di mana seorang pelajar yang terdesak menemui kelemahan sistem fail yang kritikal semasa berkejar dengan tarikh akhir tugasan pengaturcaraan. Kejadian ini, yang dikongsi oleh bekas pelajar University of Waterloo, mendedahkan bagaimana pepijat kebenaran fail yang mudah boleh menggugurkan model keselamatan keseluruhan sistem, dan menghubungkannya dengan perbincangan lebih luas tentang mengapa sistem Unix berkembang dengan sekatan keselamatan semasa mereka.

Penemuan Tengah Malam Yang Membingungkan Pentadbir Sistem

Tahunnya lebih kurang 1996, dan seorang pelajar sains komputer mendapati diri mereka tidak dapat mengakses fail tugasan kritikal disebabkan oleh kebenaran kumpulan yang tidak betul. Dengan tarikh akhir semakin hampir dan tiada bantuan pentadbiran tersedia selepas waktu pejabat, pelajar itu mencuba jalan keluar yang bijak: mencipta skrip, menetapkan kebenaran ID kumpulannya, kemudian menukar pemilikan kumpulan skrip itu sambil entah bagaimana mengekalkan keistimewaan tinggi. Yang mengejutkan semua orang, pendekatan yang tidak sepatutnya berjaya ini sebenarnya memintas sistem kebenaran, membolehkan akses kepada fail yang dilindungi. Apabila dilaporkan kepada pentadbir sistem keesokan paginya, responsnya jelas—ahh, awak jumpanya—menunjukkan ini bukanlah isu yang tidak diketahui tetapi sebenarnya kelemahan yang diketahui dalam pelayan fail NetApp baharu mereka yang telah ditemui secara bebas oleh beberapa pelajar.

Pejabat sememangnya dibuka tetapi tiada penjelasan diberikan; sebaliknya, saya ditegah untuk tidak membincangkan lubang keselamatan ini dengan sesiapa sehingga saya melaporkannya, secara bersemuka, kepada pentadbir sistem.

Konteks Sejarah Sekatan Pemilikan Fail

Kejadian ini berkait secara langsung dengan mengapa sistem moden seperti Unix menyekat arahan chown kepada pengguna root sahaja. Dalam versi Unix awal seperti System III dan System V, pengguna biasa sebenarnya boleh menukar pemilikan fail—ciri yang menimbulkan kebimbangan keselamatan yang ketara. Masalah terasnya ialah pengelakan kuota: pengguna boleh menyimpan fail besar kemudian memindahkan pemilikan kepada orang lain, secara efektif mencuri peruntukan ruang cakera mereka. Seperti yang dijelaskan oleh seorang pemberi komen, Jika Bob boleh secara senyap menukar pemilikan kepada Alice, sambil meninggalkan kebenaran terbuka supaya dia boleh mengakses fail, maka fail itu dikira ke dalam kuota Alice. Kebimbangan keselamatan asas ini, digabungkan dengan isu berpotensi dengan binari suid—program yang berjalan dengan keistimewaan pemilik—membawa kepada sekatan semasa di mana hanya superpengguna yang boleh menukar pemilikan fail.

Evolusi Kebenaran Fail Unix Dari Segi Sejarah

  • System III dan System V: Pengguna biasa boleh menukar pemilikan fail (chown)
  • Sistem Unix moden: Hanya pengguna root boleh menukar pemilikan fail
  • Solaris: Mengekalkan keupayaan chown bukan-root sehingga versi kemudian
  • Kebimbangan keselamatan utama: Pengelakan kuota cakera melalui pemindahan pemilikan

Perdebatan Berterusan Tentang Reka Bentuk Sistem Fail

Perbincangan mengenai kebenaran fail secara semula jadi berkembang kepada falsafah reka bentuk sistem fail yang lebih luas. Ahli komuniti menyuarakan kekecewaan bahawa ciri lanjutan seperti mampatan telus ZFS, pendayaan, dan gambar salinan-sambil-tulis kekal sebagai tawaran gred perusahaan dan bukan piawai. Walau bagaimanapun, seperti yang dinyatakan oleh orang lain, ciri ini melibatkan pertukaran yang ketara: mampatan memerlukan lebihan pengiraan, pendayaan masa nyata merumitkan operasi penulisan, dan salinan-sambil-tulis boleh membawa kepada fragmentasi fail. Evolusi berterusan apabila pemaju mengimbangi kecanggihan dengan kebolehpercayaan, mengakui bahawa apa yang kelihatan seperti penambahbaikan yang jelas sering membawa kerumitan tersembunyi yang hanya muncul pada skala besar.

Pertukaran Ciri-ciri Sistem Fail

Ciri Faedah Pertukaran
Pemampatan Menjimatkan ruang storan Beban pengiraan tambahan
Deduplikasi Menghapuskan data pendua Operasi penulisan yang kompleks, keperluan pengindeksan
Copy-on-Write Membolehkan snapshot, integriti data Potensi pemecahan fail
Saiz semula dinamik Pengurusan storan yang fleksibel Pengurangan saiz sering bermasalah

Pengajaran Dari Evolusi Sistem Fail Satu Generasi

Kejadian bersejarah dan perbincangan seterusnya menonjolkan bagaimana keselamatan komputer dan reka bentuk sistem fail mewakili perbualan berterusan antara fungsi, keselamatan, dan kebolehgunaan. Hakikat bahawa beberapa pelajar secara bebas menemui kelemahan yang sama mencadangkan bahawa keselamatan melalui kekaburan jarang berfungsi dalam persekitaran akademik yang dipenuhi dengan minda ingin tahu. Sementara itu, reaksi bercampur komuniti terhadap ciri sistem fail moden menunjukkan bahawa jarang ada satu penyelesaian sempurna—setiap keputusan reka bentuk melibatkan keseimbangan keperluan dan kekangan yang berbeza. Semasa kita terus membangunkan sistem storan yang lebih canggih, pengajaran sejarah ini mengingatkan kita bahawa walaupun kebenaran yang kelihatan kecil boleh mempunyai implikasi sistem secara keseluruhan.

Nota: Binari setuid/setgid adalah program yang sementara berjalan dengan keistimewaan pemilik atau kumpulan fail dan bukannya pengguna yang melaksanakannya, membolehkan akses terkawal kepada fungsi yang dilindungi.

Rujukan: You're using a suspiciously old browser