Wine programları için 'ptrace_scope' çözümü nedir ve herhangi bir risk var mı?


37

WINE'da bazı Windows programlarını çalıştırmak için bu geçici çözümü kullanmanız gerekir:

echo 0|sudo tee /proc/sys/kernel/yama/ptrace_scope

Destek web sitelerine göre, bunun nedeni Ubuntu çekirdeğindeki ptrace ve WINE'in birlikte iyi oynamasını engelleyen bir hata.

Yukarıdaki komutu kullanarak yaptığım araştırmaya göre (0'da hangi web sitelerini, çok fazla göründüğümü sorma), ptrace'in programlar arasındaki etkileşimlerle ilgisi var. 0 ayarı 1'den daha izinlidir.

Ubuntu'nun ptrace = 1'i istemesinin iyi bir sebebi olduğunu varsaymalıyım, bu yüzden bu beni sorunun kısa biçimine götürür.

Ptrace = 0 ayarında risk var mı? Düşük güvenlik? hata ayıklama sorunları? hiç düşünmedim diğerleri ???

Bunu okuyanlar için PS, hatanın neye neden olduğunu merak ediyor, Windows programları hiç açılmıyor, Sistem Monitörü'nde açmaya çalışırken programın birçok örneğini göreceksiniz ve sonra hepsi bırakacaklar ve progamı çalıştırırsanız Terminal için, maksimum program örneği sayısına ulaşıldığını bildiren bir hata mesajı alırsınız.


: İşte ptrace_scope 0 olarak ayarlanmadığı sürece .Net 4.5 kurulumunu iptal bir PlayOnLinux açılır hata mesajı bağlanan bir açıklama playonlinux.com/en/...
pabouk

Yanıtlar:


40

Kısa cevap: henüz pratik bir tehlike yok, ancak daha iyi bir yol için okumaya devam edin ...


Zaten bu ptrace olayı nedir ?

Bunun nedeni Ubuntu çekirdeğindeki ptrace ve WINE'in birlikte iyi oynamasını önleyen bir hatadır.

  • Hayır, ptrace koruması ilk olarak Ubuntu 10.10 civarında tanıtılan kasıtlı bir çekirdek güvenlik önlemidir . Bu bir hata değil ve bu yüzden "sabit" olmayacak.

  • Basit bir ifadeyle, varsayılan ptrace_scopedeğeri 1inceleyerek ve başka bir işlem değiştirmesini engeller bir süreç olmadıkça ikinci süreç (çocuk) ilk süreç (ana) tarafından başlatıldı.

  • Bu, Wine altında bazı programlarda wineserverbu programlara "Windows Services" sağlama biçiminden dolayı sorunlara neden olabilir .

Belirlenmesinde riskler nelerdir ptrace_scopeiçin 0?

  • Bu, bir ebeveyn-çocuk ilişkisi olmasa bile, bir işlemin başka bir işlemi "izleyebildiği" eski davranışı geri yükler.

  • Teoride, bir kötü amaçlı yazılım parçası size / bilgisayarınıza zarar vermek için kullanabilir; Örneğin, Firefox’a eklenebilir ve tüm URL’lerinizi / şifrelerinizi kaydedebilir, vb.

  • Bildiğim kadarıyla ayıklama giderse, 0ayarlar için gerekli aslında gdb, stracesen yükseltilmiş ayrıcalıkları (sudo) ile onları çalıştırmak sürece, vb olmayan çocuklara takmak için.

Geçici çözümle ilgili sorunlar nelerdir?

  • Geçici çözüm biraz sorunlu çünkü ptrace_scopeküresel bir değer ve buna göre 0sisteminizdeki tüm işlemler çocuk olmayan kısıtlamalardan muaf tutuluyor.
  • Geçici çözümü kullanıyorsanız, bunu sağlayan basit bir bash komut dosyasına koyun, Windows programınızı çalıştırır ve çıkışta devre dışı bırakır (1 olarak ayarlar).
    • YAPMAYIN yapmak ptrace_scopeartık herhangi süreç iradesiyle değiştirebilirsiniz, çünkü çok büyük bir güvenlik riski olduğunu - forum mesajı önerir gibi dünyaca yazılabilir (666)!

Daha iyi bir çözüm var mı?

  • Daha güvenlidir ve tekrar tekrar modifiye gerektirmez Daha iyi bir çözüm ptrace_scope etmektir Wineserver ptrace yeteneklerini hibe .

    • Bir terminalde:

      sudo apt-get install libcap2-bin 
      sudo setcap cap_sys_ptrace = eip / usr / bin / wineserver
      sudo setcap cap_sys_ptrace = eip / usr / bin / şarap önyükleyici
      
    • Bu, şarap üreticisi ve şarap preloader ikililerini çocukluk dışı kısıtlama sınırından muaf tutuyor ve herhangi bir işlemi yapmalarını sağlıyor.

    • Bunun yalnızca bir kez yapılması gerekiyor ve daha güvenli, çünkü bu ikili dosyalar genellikle güvenilir bir kaynaktan - resmi depolar veya resmi Şarap PPA'sı, yani kötü amaçlı olmayacaklar.

Crossover kullanıyorsanız

Libcap2'yi kurun:

sudo apt-get install libcap2-bin;

Ardından, Crossover için bir istisna ekleyin:

sudo setcap cap_sys_ptrace = eip / opt / cxoffice / bin / wineserver;
sudo setcap cap_sys_ptrace = eip / opt / cxoffice / bin / wine-preloader;

Son olarak, kütüphanelerini ld.so.conf dosyasına ekleyin (ya da "paylaşılan kitaplıkları yüklerken hata alırsınız: libwine.so.1: paylaşılan nesne dosyasını açamıyor: böyle bir dosya ya da dizin yok"):

echo / opt / cxoffice / lib / | sudo tee /etc/ld.so.conf.d/crossover.conf
sudo / sbin / ldconfig

Sanırım bir böcek deniyor çünkü ptrace, Wine'ı desteklemesi için 10.10'da gayet iyi çalışıyordu. 10.10-11.10 ile çalışmaktadır ancak 12.04'te gerilemiştir.
TrailRider

@TrailRider'ı kabul ettiğiniz için teşekkür ederiz; " Çekirdekteki bir böcek " ( ifadesi değil); bu kesinlikle Şarap için bir çeşit hata, ve boğulmak zorunda kalıyor :) Çekirdekte bazı şeyler kesinlikle değişiyor, genellikle daha iyisi için ve Linus'a "yo adama" söylemekten ziyade kendini düzeltmek için etkilenen yazılımlara bırakılmış. kendin geri dön ": P
ish

Burada ne söylediğinizi anlıyorum ve kabul ediyorum, sadece çekirdekte bir hata olduğunu söylemiştim, çünkü birçok destek web sitesi ve Codeweavers bunu bir çekirdek hatası olarak adlandırdı. İşte kod yazarı sayfası. codeweavers.com/support/wiki/linux/faq/ubuntu1204
TrailRider

2
Küresel performansı 0 olarak ayarlıyorum ve birkaç saniye sonra uygulama başladı; setcap çok daha güvenli ve her zaman sudo yapmak zorunda kalmaktan rahatsız edici değil… thx vm!
Kova Gücü

@izx: Bu cevap için teşekkürler. "Eip" in ne anlama geldiğiyle ilgili bilgi eklemek ilginç olacaktır (burada açıklanmıştır: andy-pearce.com/blog/posts/2013/Mar/file-capabilities-in-linux ). : Ayrıca, ben yazar bir güvenlik meselesi olabileceğini cevap reptyr docs, bu yöntemi tavsiye sürmüşlerdir github.com/nelhage/reptyr/pull/27#issuecomment-29486673 - Eğer ayrıntılı eğer o, çok iyi olurdu Bu konuda.
Aralık'ta

4

Gelen Ubuntuforums'da aşağıdaki bağlantıyı içeren bir cevap var

https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace_Protection

işte bağlantıdan gelen yapıştırma (vurgu ekleyerek)

Linux popülaritesinde büyüdükçe, kötü amaçlı yazılımlar için büyüyen bir hedef haline gelecektir. Linux süreç arayüzlerinin özellikle sorunlu zayıflığı, tek bir kullanıcının işlemlerinin herhangi birinin hafızasını ve çalışma durumunu inceleyebilmesidir. Örneğin, bir uygulama (örneğin firefox) tehlikeye girmişse, bir saldırganın ek kimlik bilgilerini almak ve saldırılarının kapsamını genişletmeye devam etmek için diğer çalışan işlemlere (örneğin gpg-agent) eklenmesi mümkün olabilir.

Bu teorik bir problem değil. SSH oturumunu ele geçirme ve hatta rasgele kod enjeksiyonu, ptrace normalde izin veriliyorsa tamamen mümkündür .

Bir çözüm için, bazı uygulamalar, bu gibi uygulama eklerine (örneğin ssh-agent) özel olarak izin vermemek için prctl () işlevini kullanır. Daha genel bir çözüm, sadece doğrudan ebeveynden bir çocuk sürecine (yani doğrudan gdb ve strace hala çalışmaktadır) veya kök kullanıcı olarak (yani gdb BIN PID ve strace -p PID'nin hala kök olarak çalışması) izin vermesidir.

Bu davranış / proc / sys / kernel / yama / ptrace_scope sysctl değeri ile kontrol edilir. Varsayılan olmayan çocuk tacizini engellemek için varsayılan "1" dir. "0" değeri, yalnızca yönetici hesapları olan bazı geliştirme sistemleri ve sunucular için daha uygun olabilecek önceki daha izin verilen davranışı geri yükler. "Sudo" kullanımı, CAP_SYS_PTRACE özelliği aracılığıyla geçici olarak özel izinler de verebilir, ancak bu yöntem herhangi bir işlemin yerine getirilmesine izin verir.

Bu yüzden kısa cevabın daha az güvenli olacağı kanaatindeyim ama bu tür saldırılara maruz kalan kişisel bir bilgisayarın kaputu oldukça zayıf olurdu.


1

GÜNCELLEME Yukarıdaki talimatlar:

sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wineserver;
sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wine-preloader;

Ubuntu 18.04.1 ve PlayOnLinux v.4.2.12'de 9/15/2018 itibariyle v.3.0.1 libcap2 zaten kurulu olan en son kararlı sürümü kullanarak çalışmamaktadır.

Gnome Terminali'ndeki hata mesajı aşağıdaki gibidir:

Failed to set capabilities on file `/usr/bin/wineserver' (Invalid argument)
The value of the capability argument is not permitted for a file. Or the file is not a regular (non-symlink) file

Bunun ne anlama geldiğinden emin değilim ..... ama yorumlayabilmesi ve belki de yeni, uygulanabilir bir çözüm bulabilmeyi düşündüm.

Teşekkürler.

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.