Saya belajar tentang keamanan linux dan berjuang untuk memahami mengapa stik USB dengan perangkat karakter di dalamnya berpotensi berbahaya.
Jika saya memiliki stik USB dengan executable bash yang memiliki root setuid di atasnya, bahayanya jelas:Siapa pun dengan stik USB semacam itu dapat memperoleh hak akses root di komputer saya jika saya memiliki entri seperti
/dev/sdb1 /media/usbstick auto defaults 0 0
di /etc/fstab
saya karena defaults
termasuk suid
.
Tapi bagaimana dengan perangkat karakter? Bagaimana saya bisa menggunakan perangkat karakter untuk mendapatkan hak akses root atau merusak barang jika stik USB dengan perangkat karakter terpasang dengan dev
atau defaults
?
Jawaban yang Diterima:
Karena akses ke perangkat yang mendasari hanya dikontrol oleh izin file secara default, jadi jika stik USB Anda berisi sistem file POSIX dengan node perangkat yang dapat ditulisi dunia yang sesuai dengan perangkat nyata dalam sistem, Anda dapat menggunakan node perangkat tersebut untuk mengakses yang sesuai perangkat sebagai pengguna "biasa". Bayangkan sebuah perangkat yang sesuai dengan salah satu perangkat audio, webcam Anda, /dev/sda
(yang merupakan perangkat blok daripada perangkat karakter, tetapi argumennya sama)…
Berikut adalah contoh untuk membuat segalanya lebih jelas. Katakanlah Anda ingin mengakses /dev/sda
(maka Anda dapat melakukan apa saja yang Anda inginkan dengan isi disk, termasuk menanam program yang memungkinkan Anda menjadi root
; ini adalah perangkat blok tetapi masalahnya sama dengan perangkat karakter). Pada sistem target Anda, ls -l /dev/sda
pertunjukan
brw-rw---- 1 root disk 8, 0 Sep 8 11:25 sda
Ini berarti /dev/sda
adalah perangkat blok (b
di awal baris), dengan angka mayor 8 dan angka minor 0 (8, 0
di tengah garis). Perangkat hanya dapat diakses oleh root
(baca/tulis) dan anggota disk
grup (juga membaca/menulis).
Sekarang bayangkan pada sistem ini Anda tidak dapat menjadi root
tetapi untuk beberapa alasan Anda dapat memasang stik USB sebagai pengguna tanpa nodev
. Di sistem lain, di mana Anda berada root
, Anda dapat membuat file khusus yang sesuai pada kunci USB Anda:
mknod -m 666 usersda b 8 0
Ini akan membuat file khusus bernama usersda
, dapat dibaca dan ditulis oleh semua orang.
Pasang kunci pada sistem target Anda dan hei presto, Anda dapat menggunakan usersda
perangkat dengan cara yang sama seperti /dev/sda
, tetapi tanpa batasan akses…
(Ini akan bekerja bahkan dengan sistem file terenkripsi, selama Anda dapat mengakses perangkat mapper yang didekripsi:buat perangkat yang cocok dengan /dev/mapper
yang sesuai entri.)