/ Tmp noexec'in montajı ne kadar faydalı?


39

Birçok kişi ( Debian Güvenceye Alma El Kitabı dahil ) bir dizi seçenekle /tmpbirlikte montajı önerir noexec,nodev,nosuid. Bu, genellikle birisinin dosya yazmasına izin veren bir saldırının ya da meşru bir hesabı olan ancak başka bir yazılabilir alanı olmayan bir kullanıcının saldırısını engelleyerek, 'derinlemesine savunma' stratejisinin bir öğesi olarak sunulur.

Ancak zaman içinde, noexecbirkaç olası nedenden ötürü işe yaramaz bir önlem olan argümanlarla (en belirgin şekilde Debian / Ubuntu Developer Colin Watson tarafından) karşılaştım :

  1. Kullanıcı /lib/ld-linux.so <binary>aynı etkiyi elde etmek için çalışabilir.
  2. Kullanıcı, sistem tarafından sağlanan tercümanları doğrudan çalıştırılamayan komut dosyalarında çalıştırabilir.

Bu argümanlar göz önüne alındığında, daha fazla konfigürasyon için potansiyel ihtiyaç (örneğin debconf, yürütülebilir geçici bir dizini sever) ve potansiyel kolaylık kaybı, bu değerli bir güvenlik önlemi midir? Sünnete izin veren başka hangi delikleri biliyorsunuz?


1
@neoice: Eğer / tmp çalıştırılabilir değilse uygulamaların ara sıra bozulacağını duydum. Gerçi bunun gerçekleşmiş olduğunu gerçekten görmedim. TuxGuitar-1.2'ye bakın ... olur. / Tmp noexec seçeneği olmadan monte edilmezse başlamaz, çünkü oradaki kütüphaneleri açar ve sonra onları yüklemeye çalışır.

VMware'in Site Kurtarma Yöneticisi, "/ tmp" adlı komut dosyalarını çalıştırır: IP Özelleştirme, vCenter Site Recovery Manager'da (2021083) bir kurtarma planı sırasında bir başarısızlık veya test devri sırasında başarısız olur: kb.vmware.com/selfservice/microsites/…

1
Snappy adındaki sıkıştırma yardımcı programının .so dosyasını / tmp içine bıraktığını ve eğer noexec monte edilmişse çalışamayacağını biliyorum. (cassandra ve kafka'da varsayılan olarak kullanılır) IMHO,
noexec'i

Yanıtlar:


31

İşte şimdiye kadar bulduğum yardımcı programın argümanları:

Modern çekirdekler /lib/ld-linux.sodeliği düzeltir , böylece bir noexecdosya sisteminden çalıştırılabilir sayfaları eşleştiremez .

Tercümanların noktası kesinlikle bir endişe kaynağı olsa da, insanların iddia edebileceğinden daha azını düşünüyorum. Ortaya çıkarabileceğim sebep, belirli hatalı biçimlendirilmiş sistem aramaları yapmaya dayanan çok sayıda ayrıcalık yükselme güvenlik açığı olduğudur. İkili bir saldırgan sağlayan bir saldırgan olmadan, kötü aramalar yapmak çok daha zor olurdu. Ayrıca, komut dosyası tercümanları ayrıcalıklı olmamalıdır (bunun tarihsel olarak bazen suid perl ile olduğu gibi olmadığını biliyorum) ve bu nedenle bir saldırıda yararlı olmaları için kendi güvenlik açılarına ihtiyaç duyacaklarını biliyorum. Görünüşe göre, en azından bazı istismarları yürütmek için Python kullanmak mümkün .

Pek çok 'korunan' istismar, çalıştırılabilir dosyaları yazmaya ve çalıştırmaya çalışabilir /tmpve bu nedenle noexeckomut dosyasıyla yapılmış bir saldırıya düşme olasılığını azaltır (güvenlik açığı bildirimi ve düzeltme eki yüklemesi arasındaki pencerede).

Bu nedenle, montaj için hala bir güvenlik avantajı /tmpvar noexec.

Anlatıldığı gibi Debian'ın hata takip ayarlayarak, APT::ExtractTemplates::TempDiriçinde apt.confolmayan bir dizine noexecDebconf kaygısını gidermek istiyorum köküne ve erişilebilir.


ancak, var / tmp çalıştırılabilir değilse uygulamaları bazen kıracak duydu. Gerçi bunun gerçekleşmiş olduğunu gerçekten görmedim.
neoice

Soruyla bağlantılı kılavuzda belirtildiği gibi, bir alternatif oluşturmadan Debconf paketi ön konfigürasyonunu bozar.
Phil Miller

2
Evet, noexec, güvenlik açısından çok iyi bir ilave katmandır ve bu nedenle tahribatı engelleyen şeyler görmedim. Paket kurulumu tek şeydir ve buradaki cevapların söylediği gibi çalışılabilir. Çözümüm olarak şöyle bir takma adı var: alias update = "mount -o exec, remount / tmp && apt-get güncelleme && apt-get yükseltme && mount -o noexec,
remount

1
Sanırım nadir, ancak bir paket kurulum bağlamı dışında / tmp'dan bir şey yürütmek için yazılan paketler var (örneğin, Belçika Elektronik Kimlik Kartlarını kullanmak için ara yazılımın güncel sürümü).
21'de

equaeghe: Hangi paket bu? Muhtemelen bir hata olarak rapor edilmelidir. Bahse varım bunu nasıl kullandığı konusunda da bir güvenlik açığı var.
Phil Miller

7

Birçok Debian paketi, paketin kurulması için / tmp dosyasının çalıştırılabilir olmasını gerektirir. Bunlar genellikle hatalar ('normal' / 'dilek listesi' ciddiyetinden) olarak işaretlenir:

https://www.google.com/#q=site:bugs.debian.org+noexec+/tmp

Ben bugün sadece kararlı şubeye güncellenmiş bir çekirdek yüklerken sadece bu hatayı aldım.

Öyle görünüyor ki Debian (& türevleri?) / Tmp'nin noexec'e monte edilmesine hazır değil ...


6

aşağıdakini /etc/apt.conf, veya, /etc/apt/apt.conf.d/50remount

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};

6
Ben yerini ettik mounttarafından /bin/mountdava YOLU modifiye alır içinde. Asla bilemeyeceksin.
Lekensteyn

4

Uygulamayı seçebileceğiniz birçok ek güvenlik önlemi için geçici çözümler mevcut olsa da, en kolay güvenlik önlemleri bile (alternatif olarak bağlanma / tmp bağlanması veya SSH'yi alternatif bir bağlantı noktasında çalıştırma gibi), varsayılanları temel alan güvenlikli otomatik veya komut dosyası saldırılarını engeller işlevi. Sizi kararlı ve bilgili bir saldırgana karşı korumaz, ancak zamanın% 99'undan fazlası kararlı ya da bilgili bir saldırgana karşı olmayacaksınız. Bunun yerine, otomatik bir saldırı komut dosyasına karşı kendinizi savunuyorsunuz.


2

Birincisi: Çok sayıda, farklı saldırı vakalarını kapsıyor çünkü onu kapatmak için bilinen bazı yollar vardı (bazıları düzeltildi bile) garip. / Dev / shm veya / tmp dizinine kod indiren saldırganlar yaptıkları yaygın bir şeydir.

Derinlemesine savunma, en yaygın yol noktalarının güvence altına alınması ile ilgilidir, her biri onları durdurarak sisteminizin daha sürdürülebilir olmasını sağlar. Güvenli değil. Ama aynı zamanda bir şansı olacak . İkincil yüklerini alamazlarsa, bu oldukça iyi bir şanstır.

  • Ayrıca iptables kullanıcı kısıtlamaları ile de durdurulabilir.
  • SELinux tarafından da durdurulabilir.
  • Ayrıca belki değil bir kolayca diğer istismar erişilen nedeniyle durabilir.

Nokta gibi sert olarak yapmaktır kolayca yapabilirsiniz ve saldırıların% 99 kesip.

İkincisi: Kötü uygulamaları durdurur (geçici çalıştırma, kullanıcı tmpdir yerine / tmp üzerinden büyük uygulama yüklemeleri yapmak) / tmp içinde veri bırakmak. Özel yükleyiciler genellikle TMPDIR'yi anlarlar. Ayrıca: olmasa bile: yükleme zamanı, belirli bir noktadaki eylem olarak, bir güvenlik sorununu kalıcı olarak kapatmak için geçerli bir neden değildir .

Üçüncüsü: / tmp (bir "özellik") içindeki isimsiz ad alanlarını göz önünde bulundurarak, gerçekten orada bırakılanları ve oradan kaçanları kısıtlamak istersiniz.

İleri: Kolaylık bununla alakalı bir faktör değildir. Sunucuları para için çalıştırdığımızı varsayalım ve bir amaç için: biz bu şeylerden sorumluyuz. "Ah, / tmp'yi kilitlemedim çünkü gelecek yıl yazılımımı güncellerken birkaç dakikaya ihtiyacım var". Şüphesiz şantaj yapmakla sadece iyi olmak arasında duran şey bu olmayacak. Harika bir sebep mi? Sanmıyorum

Buna ne dersin:

“Düşmanların haber vermeden saldırabileceklerini öğrendik. Yiyecekleri zehirlemek için yüzlerce casus da kullanabileceklerini öğrendik. Bu yüzden askerlerimize silah dağıtmayı bıraktık.”

Bir dakika ne?

Bir sistemi güvence altına almak için çok daha fazla çaba, deneyim ve şans gerektiren başka önlemler de var ve insanların sınırlı miktarda parası, ömrü olduğunu ve aileleriyle zaman geçirmek istediklerini bilmek: Kolay şeyleri atlamayın.


1

Yüklemek için çalıştırılabilir olması gereken / tmp gerektiren uygulamalar vardır. Daha önceki bir işte, oraya varmadan önce yöneticiler / tmp noexec'i kurdular, ancak db2 paketinin kurulmayacağını keşfettim. Db2 paketini başka bir yerden kaldırsanız bile, kurulum prosedürü bazı dosyaları / tmp dosyasına kopyalar ve elbette izin verilmediği halde başarısızlıkla sonuçlanmasını bekler. Dosya sisteminin noexec'in monte edilmediğini bilmiyorsanız, biraz yanıltıcı olabilir. Yüklemeye ancak noexec olmadan yeniden bağladıktan / tmp sonrasında devam edebildi.

Her neyse, mesele şu ki, en az bir ticari ürün, noexec'in monte edilmemesini gerektirmektedir / tmp gerektirmektedir ve diğerleri de olabilir. Bunun için gerçekten zorlayıcı bir sebep bulamadım. Daha iyi güvenlik istiyorsanız, onun yerine selinux ile giderdim.


Bir noexec / tmp ile durdurulacak olan Samba güvenlik açığı için bir açığa çıkarma analizi : bobao.360.cn/learning/detail/4168.html (Chrome'un Google çevirisi önerilir. İlk istisnayı bozar ve aynı zamanda yükün büyük bir kısmı ...) (Bu şekilde birçok yaygın otomatik sömürüyü kırabilirsin ....). mount -o remount,exec /tmpmalzeme yüklemeniz gerektiğinde çalışır ... (Evet, çalışmak çok önemlidir, ancak birçok saldırgan rahatsız etmiyor gibi görünüyor ...)
Gert van den Berg
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.