'Sudo pip' çalıştırmanın riskleri nelerdir?


99

Bazen ben girmek yorumlar veya yanıtlar devlet basa basa çalışan o pipaltından da sudo"yanlış" ya da "kötü" olduğunu, ancak o da çok basit ya bile gerekir (ı kurmak araçları bir grup var arada da dahil) durumlar vardır bu şekilde çalıştırın.

Çalışan ile ilgili riskler nelerdir pipaltında sudo?


Not bu kadar bu değil aynı soru bu bir başlık rağmen riskleri hakkında herhangi bir bilgi sağlamaz. Bu aynı zamanda kullanmaktan nasıl kaçınılacağıyla ilgili bir soru değil sudo, özellikle neden isteyeceğiyle ilgili.

Yanıtlar:


108

Eğer çalıştırdığınızda pipile sudo, çalıştırmak setup.pyile sudo. Başka bir deyişle, İnternet'ten kök olarak rastgele Python kodunu çalıştırırsınız. Birisi PyPI'ye kötü amaçlı bir proje koyarsa ve siz onu yüklerseniz, bir saldırganın makinenize kök erişimi vermiş olursunuz. pipPyPI'de yapılan son düzeltmelerden önce , bir saldırgan, güvenilir bir proje indirdiğinizde kodunu enjekte etmek için ortadaki bir adamı da çalıştırabilirdi.


2
Tehdit, yalnızca pipyüklediği şey sırasında veya sonraki herhangi bir çalıştırma sırasında mı geçerli ?
orome

4
Ama bu, ben olsam sudoda olmasam da doğru olacak pip, değil mi? Kurulduktan sonra, oraya nasıl girmiş olursa olsun hepimiz risk altında mıyız?
orome

2
@raxacoricofallapatorius Bu bölgeye giriyor Cevap vermekten rahatsızlık duyuyorum, herhangi bir fikrim olmadığı için değil (bir önsezim var ve bunun için nedenler söyleyebilirim), ancak bu gibi görünen küçük değişikliklerin genel olarak nasıl etkilendiğini tahmin etmek çok zor olduğu için güvenlik. Ayrıca sudo, paketleri başka bir yere kurarak (örneğin bir virtualenv'de) sadece bu izin sorunlarını önlemek genellikle son derece basittir . Bunu yapmak, tüm güvenlik endişelerini göz ardı etse bile daha iyi ve daha güvenilir olabilir.

2
@raxacoricofallapatorius Tam yazma izinlerine ve dizin düzenine bağlı olarak, daha karmaşık kötü amaçlı yazılımların, rutin olarak kök olarak çalışan sistem yardımcı programları tarafından kullanılan kod gibi diğer, daha güvenilir kodların üzerine yazılmasından korkuyorum.

2
Bu cevap tuhaf. Elbette, bir şeyi birlikte çalıştırdığınızda sudoona kök ayrıcalıkları verirsiniz; tüm mesele bu sudove kesinlikle özel değil pip.

19

Bariz güvenlik risklerinin yanı sıra (bildiğiniz bir yazılımı yüklediğinizde aslında düşük olduğunu düşünüyorum) başka yanıtlar getirmesinin başka bir nedeni daha var. Sistemle birlikte gelen Python bu sistemin bir parçasıdır ve sistemi yönetmek istediğinizde, yazılım yükleme / yükseltme / kaldırma durumunda paket yöneticisi gibi sistem bakımı için belirlenmiş araçları kullanırsınız. Sistem yazılımını üçüncü taraf araçlarla (bu durumda pip) değiştirmeye başladığınızda, sisteminizin durumu hakkında hiçbir garantiniz olmaz. Yine başka bir neden de, sudo'nun size başka bir şansınız olmayacağı veya çok küçük bir şansınızın olmadığı sorunlar getirebilmesidir. Örneğin Python'da sys.executable ve sys.version arasındaki uyuşmazlığa bakın

Dağıtımcılar bu sorunun farkındadır ve onu azaltmaya çalışır. Örneğin Fedora - sudo pip'i güvenli hale getirmek ve Debian - site paketleri yerine dağıtım paketleri .


6

Pip'i bu şekilde kullanmak, sisteminize herhangi bir şey yapmasına izin verdiğiniz düzeyde güvendiğiniz anlamına gelir. Yalnızca pip değil, aynı zamanda güvenmeyebileceğiniz kaynaklardan indirip çalıştıracağı ve kötü amaçlı olabilecek herhangi bir kod.

Ve pip tüm bu ayrıcalıklara ihtiyaç duymaz, yalnızca belirli dosyalara ve dizinlere yazma erişimine ihtiyaç duyar. Sisteminizin paket yöneticisini kullanamıyorsanız ve sanal ortam yoluna gitmek istemiyorsanız, python kurulum dizinine yazma ayrıcalığına sahip belirli bir kullanıcı oluşturabilir ve bunu pip için kullanabilirsiniz. Bu şekilde, pip'in yapıp yapamayacağını daha iyi kontrol edebilirsiniz. Ve sudo -ubunun için kullanabilirsiniz !


Yani tek yapmam gereken, örneğin, kendime yazma izinlerine izin vermek site-packagesmi?
orome

1
@raxacoricofallapatorius sadece orada değil, çünkü bazı paketler yardımcı komut dosyaları da yüklüyor ( pipkendisi, IPython, django, pygments, ... gibi), böylece kendilerini yükledikleri dizine de erişmeniz gerekecek.
MattDMo

Evet ve hayır. Güvenlik uzmanı değilim, ancak komut dosyalarını çalıştıran kullanıcının yazma iznine sahip olmaması daha iyi olur. Bu nedenle, ayrı bir kullanıcı öneriyorum.
Cilyan

@MattDMo: Evet, mantıklı; ancak bu durumlar, uygun izinler olmadan işler başarısız olduğu için muhtemelen kolayca keşfedilebilir. Yine de yapılırsa, bu gitmenin en güvenli yolu değil, o zaman bir bütün olarak sistemime olabilecek en kötü şey, herhangi bir şeyi çalıştırdığımda ne olabileceğidir, değil mi? Tek fark, benim için Python kurulumumu potansiyel olarak mahvedebilmem (bunu yapmak için uygun olmak yerine), değil mi?
orome

Sadece kullanmak amacıyla böyle bir kullanıcıyı nasıl oluşturabilirim pip(sistemde yeni bir ana dizin gibi başka değişikliklere gerek yoktur)? Bundan sonra sahibini site-packageso kullanıcıya değiştirdiğimi varsayıyorum , değil mi?
orome

1

"Yanlış" olan tek şey sudo, Süper Kullanıcı olarak YAPILMASI, yani bir kurulumu yanlış komutla potansiyel olarak yok edebileceğiniz anlamına gelir. PIP, belirli bir program için bir paket bakımı olduğundan, her halükarda değişiklik yapmak için böyle bir erişime ihtiyacınız olacaktır ...

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.