/ Etc / fstab içindeki “nodev” neden bu kadar önemli? Karakter aygıtları bilgisayar korsanlığı için nasıl kullanılabilir?


19

Linux güvenliğini öğreniyorum ve üzerinde bir karakter cihazı bulunan bir USB çubuğunun neden potansiyel olarak tehlikeli olduğunu anlamaya çalışıyorum.

Üzerinde setuid kökü olan bir bash çalıştırılabilir bir USB çubuğum varsa, tehlike açıktır: Böyle bir USB çubuğa sahip olan herkes,

/dev/sdb1 /media/usbstick auto defaults 0 0

/etc/fstabçünkü benim defaultsiçerir suid.

Peki ya karakter cihazları? Buna nasıl bir karakter cihazı ile USB stick ile monte alırsa root yetkileri veya kopma şeyler kazanmak için bir karakter cihazı kullanabilirsiniz devya defaults?

Yanıtlar:


31

Temel aygıta erişim varsayılan olarak yalnızca dosya izinleriyle denetlendiğinden, USB çubuğunuzda sistemdeki gerçek bir aygıta karşılık gelen dünya tarafından yazılabilir aygıt düğümüne sahip bir POSIX dosya sistemi varsa, ilgili aygıt düğümüne karşılık gelen cihazı "düz" kullanıcı olarak gösterir. Ses cihazlarından birine, web kameranıza karşılık gelen bir cihaz düşünün /dev/sda(bu bir karakter cihazı yerine bir blok cihazdır, ancak argüman aynıdır) ...

İşte işleri daha net hale getirmek için bir örnek. Erişmek istediğinizi varsayalım /dev/sda(daha sonra, olmanıza izin verecek bir program dikmek de dahil olmak üzere diskin içeriğiyle istediğiniz her şeyi yapabilirsiniz root; bu bir blok cihazıdır, ancak sorun karakter cihazlarında aynıdır). Hedef sisteminizde ls -l /dev/sdaşovlar

brw-rw----  1 root disk      8,   0 Sep  8 11:25 sda

Bu , büyük sayı 8 ve küçük sayı 0 ( satırın ortasında) olan /dev/sdabir blok cihazıdır ( bsatırın başlangıcında 8, 0). Cihaza sadece root(okuma / yazma) ve diskgrubun üyeleri (okuma / yazma) erişebilir .

Şimdi bu sistemde olamayacağınızı hayal edin, rootancak bir nedenden ötürü USB çubukları olmayan bir kullanıcı olarak monte edebilirsiniz nodev. rootBulunduğunuz başka bir sistemde, USB anahtarınızda karşılık gelen özel bir dosya oluşturabilirsiniz:

mknod -m 666 usersda b 8 0

Bu, usersdaherkes tarafından okunabilir ve yazılabilir adlı özel bir dosya oluşturur .

Anahtarı hedef sisteminize monte edin ve hey presto, usersdacihazı aynı şekilde kullanabilirsiniz /dev/sda, ancak erişim kısıtlaması olmadan ...

(Bu, şifresi çözülmüş haritacı cihaza erişebildiğiniz sürece şifrelenmiş dosya sistemlerinde bile çalışır: uygun /dev/mappergirişle eşleşen cihaz oluşturun .)


Bu ilginç geliyor! Ama anladığımdan emin değilim. Aygıt bir dosyadır ve dosyalara inode ile erişilir. USB çubuğumdaki sahte cihazın farklı bir inode'u olurdu ve bu nedenle farklı bir cihaz olurdu, değil mi?
rosix

7
Cihaz, büyük ve küçük bir sayıya sahip özel bir dosyadır; bunları yaparsanız ls -l /dev, dosya boyutu yerine görünen iki sayıdır. Çekirdek, bir aygıt özel dosyasını bu sayıları kullanan bir sürücü ile eşleştirir, böylece aynı çekirdek sürücüsünü ve aygıta işaret eden birden çok dosyaya sahip olabilirsiniz. Özel dosyalar kullanılarak oluşturulur mknod.
Stephen Kitt

Not o /dev/tty*cihazların tam okuma / yazma erişimini karakter cihazları ve davetsiz olan terminal oturumları ve / veya sistem konsolunda pis hileler her türlü izin verebilir terminal emülatörü özelliklerini kötüye ile birlikte ...
TELCOM

1
@TheQuark hemen hemen evet. Biraz daha genel; “Yorumla”, “aygıt dosyalarına düz dosyalar değil, aygıt düğümleri gibi davran” anlamına gelir.
Stephen Kitt

1
@ n00b bağlayamazsınız usersda, ancak en azından altta yatan diskten herhangi bir kısıtlama olmadan okumak ve muhtemelen de yazmak için kullanabilirsiniz. Tüm diskin içeriğini ve debuge2fsüzerine yazma /etc/shadowvb. Gibi araçlarla kolayca kopyalayabilirsiniz
Stephen Kitt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.