it-swarm.asia

/ Tmp noexec montajı ne kadar yararlı?

Birçok kişi ( Debian El Kitabı Güvencesi dahil olmak üzere /tmp ile noexec,nodev,nosuid seçenek kümesi. Bu genellikle birisinin dosya yazmasına izin veren bir saldırının veya meşru bir hesabı olan ancak yazılabilir bir alanı olmayan bir kullanıcı tarafından saldırı yapılmasını önleyerek 'derinlemesine savunma' stratejisinin bir unsuru olarak sunulur.

Bununla birlikte, zamanla, (potansiyel olarak Debian/Ubuntu Geliştirici Colin Watson tarafından) noexec'nin birkaç potansiyel nedenden ötürü yararsız bir ölçü olduğu iddialarıyla karşılaştım:

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

Bu argümanlar göz önüne alındığında, daha fazla yapılandırmaya yönelik potansiyel ihtiyaç (ör. debconf yürütülebilir bir geçici dizini sever) ve potansiyel kolaylık kaybı, bu değerli bir güvenlik önlemi midir? Bunun atlatılmasını sağlayan başka hangi delikleri biliyorsunuz?

40
Phil Miller

Şimdiye kadar bulduğum fayda için argümanlar:

Modern çekirdekler /lib/ld-linux.so Deliğini düzeltir, böylece noexec dosya sistemindeki yürütülebilir sayfaları eşleştiremez.

Tercümanların noktası kesinlikle bir endişe kaynağı olsa da, insanların iddia edebileceğinden daha azı olduğunu düşünüyorum. Ortaya koyabileceğim akıl yürütme, belirli hatalı biçimlendirilmiş sistem çağrıları yapmaya dayanan çok sayıda ayrıcalık yükselmesi güvenlik açığı olduğu. İkili sağlayan bir saldırgan olmadan, kötü sistem çağrıları yapmak çok daha zor olurdu. Ayrıca, senaryo tercümanları ayrıcalıksız olmalıdır (bunun bir tarihsel Perl gibi tarihsel olarak bazen böyle olmadığını biliyorum) ve bu yüzden bir saldırıda yararlı olması için kendi güvenlik açıklarına ihtiyaç duyacaktır. Görünüşe göre, mümkün en azından bazı istismarlar çalıştırmak için Python kullanmak.

Birçok 'hazır' istismar /tmp İçinde çalıştırılabilir dosyalar yazmaya ve çalıştırmaya çalışabilir ve bu nedenle noexec komut dosyası saldırısına düşme olasılığını azaltır (örneğin güvenlik açığının açığa çıkması ve düzeltme eki yüklemesi arasındaki pencerede).

Bu nedenle, noexec ile /tmp Bağlamanın hala bir güvenlik avantajı vardır.

Debian'ın hata izleyicisi 'de açıklandığı gibi, APT::ExtractTemplates::TempDir İçindeki apt.conf Öğesinin noexec olmayan ve root tarafından erişilebilir bir dizine ayarlanması debconf sorununu ortadan kaldıracaktır.

31
Phil Miller

Birçok Debian paketi, paketin yüklenebilmesi için/tmp'nin yürütülebilir olmasını gerektirir. Bunlar genellikle hata olarak işaretlenir ('normal'/'istek listesi' şiddeti):

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

Bugün bu kararlı şubeye güncellenmiş bir çekirdek kurarken sadece bu hatayı aldım.

Yani Debian (& türevleri?)/Tmp noexec monte edilecek hazır değil gibi görünüyor ...

7
thomasrutter

aşağıdakileri /etc/apt.conf veya /etc/apt/apt.conf.d/50remount'a ekleyin

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

Uygulamayı seçebileceğiniz çoğu ek güvenlik önlemi için geçici çözümler mevcut olsa da, en kolay atlatılmış güvenlik önlemleri (montaj/tmp noexec veya alternatif bir bağlantı noktasında SSH çalıştırmak gibi) bile, varsayılanlara sırayla dayanan otomatik veya komut dosyası saldırılarını engeller işlev. Sizi kararlı ve bilgili bir saldırgana karşı koruyamaz, ancak zamanın% 99'unun üzerinde, kararlı veya bilgili bir saldırgana karşı olmayacaksınız. Bunun yerine, kendinizi otomatik bir saldırı komut dosyasına karşı koruyacaksınız.

4
tylerl

İlk: Birçok farklı saldırı vakasını kapsıyor Kapatmak için bilinen bazı yollar olduğu için (bazıları sabit bile olsa) garip./Dev/shm veya/tmp'ye kod indiren saldırganlar yaptıkları yaygın bir şeydir.

Derinlemesine savunma, en yaygın yol noktalarını güvence altına almakla ilgilidir, her biri onları durdurarak sisteminizi daha dayanıklı hale getirir. Güvenli değil. Ama aynı zamanda bir şansı olacak. İkincil yüklerini getiremezlerse, bu oldukça iyi bir şans.

  • Ayrıca iptables kullanıcı kısıtlamaları tarafından durdurulabilir.
  • SELinux tarafından da durdurulabilir.
  • Kolayca erişilebilen başka bir istismar nedeniyle değil durdurulabilir.

Mesele, kolayca olabildiğince zorlaştırmak ve saldırıların% 99'unu kesmektir.

İkinci: Verileri/tmp içinde bırakarak, kötü uygulamayı durdurur (geçici öğelerin çalıştırılması, kullanıcı tmpdir yerine/tmp üzerinden büyük uygulama yüklemeleri yapmak). Özel yükleyiciler genellikle TMPDIR'ı anlayın Ayrıca: olmasa bile: kurulum süresi, bir anlık eylem olarak, bir güvenlik sorununu kapatmak için geçerli bir neden değildir sürekli olarak .

Üçüncü:/tmp ("özellik") içindeki anonim ad alanlarını göz önünde bulundurarak, oraya konanları kısıtlamak ve oradan çalıştırmak gerçekten istersiniz.

Dördüncü: Kolaylık bununla ilgili bir faktör değildir. Sunucuları para için ve bir amaç için çalıştırdığımızı varsayarsak: bu şeylerden biz sorumluyuz. "Oh,/tmp'yi kilitlemedim çünkü gelecek yıl yazılımımı güncellediğimde birkaç dakikaya daha ihtiyacım var". Şüphesiz, şantaj yapmakla sadece iyi olmak arasındaki tek şey bu olmayacak. Harika bir sebep mi? Ben öyle düşünmüyorum.

Buna ne dersin:

"Düşmanların haber vermeden saldırabileceklerini öğrendik. Yiyecekleri zehirlemek için yüzlerce casus da kullanabilirler. Böylece 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 vardır ve insanların sınırlı paraları, ömürleri olduğunu ve aileleriyle zaman geçirmek istediklerini bilmek: Atlamayın kolay şeyler.

2
Florian Heigl

Yüklemek için/tmp dosyasının çalıştırılabilir olmasını gerektiren uygulamalar vardır. Önceki bir işte, oraya varmadan önce yöneticiler/tmp noexec'i kurmuşlardı, ancak db2 paketinin yüklenmeyeceğini keşfettim. Db2 paketini başka bir yerde açsanız bile, kurulum prosedürü bazı dosyaları/tmp dosyasına kopyalar ve yürütmeyi bekler, ki bu da izin verilmedi. Dosya sisteminin noexec'e monte edildiğinin farkında değilseniz, biraz yanıltıcı olabilir. Kuruluma ancak noexec olmadan/tmp yeniden bağlandıktan sonra devam edebildim.

Her neyse, asıl nokta, en az bir ticari ürünün /exmp'nin noexec'e monte edilmemesini gerektirmesidir ve başkaları da olabilir. Bunun için gerçekten zorlayıcı bir neden bulamadım. Daha iyi bir güvenlik istiyorsanız, bunun yerine selinux ile giderdim.

1
lsd