Does Shellshock Bash hata zsh etkiler?
Bash'i yükseltmek tek çözüm mü?
Does Shellshock Bash hata zsh etkiler?
Bash'i yükseltmek tek çözüm mü?
Yanıtlar:
Hayır, ZSH'yi etkilemez.
Hala GEREKİR sistem komut çoğu partisi yüzünden yazılı ve shellshock hatadan savunmasız olarak bash güncelleyin.
ZSH'nizi test etmek için şunu yapın:
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
Bu kod tam olarak ne yapar?
env x='() { :;}; echo vulnerable'
değişken sonunda komutu kullanarak bilinen hata ile bir ortam değişkeni yaratırzsh -c 'echo hello'
ZSH kabuğunu basit merhaba ile başlattı (ve x dahil tüm env değişkenlerini değerlendiriyor )Çıktı görürseniz:
vulnerable
hello
O zaman ZSH'niz korunmasızdır. Maden (5.0.2) değil:
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
bash
, sistem kurulumları için kötü bir alışkanlıktır çünkü bash'ın kurulması garanti edilmez; /bin/sh
standart kabuktur ve doğru bir POSIX kabuk yorumlayıcısı olması gerekir.
env x='() { :;}; echo vulnerable' sh -c 'echo hello'
Gönderen bu bağlantı :
Bu testi uygulayarak CVE-2014-6271'deki orijinal soruna açık olup olmadığınızı belirleyebilirsiniz:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
Bu komutun çıktısında savunmasız kelimesini görüyorsanız, bashınız savunmasızdır ve güncellenmelisiniz. Aşağıda OS X 10.8.5’ten korunmasız bir versiyonu var:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
vulnerable
hello
Aşağıdaki çıktı, korunmasız bir bash versiyonunun bir örneğidir.
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
env X='() { (a)=>\' bash -c "echo date"
yamalı bir bashta ve çok fazla hata atmasına rağmen echo
, tarihi içeren bir dosya oluşturur. Nedenini bilmek istemiyorum.
zsh
etmez olmayan kullanımı bash
özünde. bash
açıkça örneklerde denir. Bu satırları çalıştırmak için hangi kabuğu kullandığınız fark etmez. Bu güvenlik açığı, yeni başlatılan bash kabuğunu etkiler, çalıştırıldığı kabuğu değil.
bash
örnek tarafından değiştirmek istiyorum $SHELL
.
zsh
Çalıştırılabilir kabuğu etkilemez , çünkü kaynak kodu hiçbir zaman hatayı içermez .
Orada arasında birçok similaritys vardır bash
ve zsh
fakat birbirinden bağımsız hayata werer. Aynı özellik iki farklı şekilde uygulanır ve - bu bağlamda daha önemli - genellikle farklı hatalarla.
Dolaylı olarak, zsh
neredeyse bir terminaldeki kabukla etkileşimli olarak çalışmayı etkiler bash
.
Kullanımı bash
o kadar yaygındır ki, kişi onu aramaktan kaçınmaktan neredeyse kaçınıyor.
zsh
, ama aslında içerirler bash
. #!/bin/bash
belirtmek için kullanılan çok sayıda kabuk komut dosyası bash
.Tahmin ettiğiniz birçok komut ikiliktir, ancak bazıları tarafından kullanılan kabuk komut dosyalarıdır bash
.
Bir kabuğun açıkça yürütüldüğü birçok yerde bash
kullanılabilir ve muhtemelen gerekli olabilir.
xargs
komutlar veya git
argümanlar içeren takma adlar gibiHayır, Shellshock doğrudan zsh'yi etkilemez.
Ancak, varsayılan kabuk olarak zsh kullanan birçok ortamda bash yüklüdür. Zsh dahil olmak üzere herhangi bir kabuk, tehlikeye atılmış bir bash kabuğunun ortaya çıkarılması için kullanılabilir:
zsh ❯ env X='() { (a)=>\' sh -c "echo date"; cat echo
sh: X: line 1: syntax error near unexpected token `='
sh: X: line 1: `'
sh: error importing function definition for `X'
Fri 26 Sep 2014 12:05:57 BST
Buna karşı savunmak için, bash'ın yedekli sürümlerini yama yapmanız, kaldırmanız veya devre dışı bırakmanız gerekir. Sistem bash kurulumunu şu şekilde devre dışı bırakabilirsiniz chmod
:
$ chmod a-x /bin/bash
Ancak, betiklerin açıkça bash çağırması yaygındır. Bunu yapan komutlar ve bash'a özgü komut dosyası özelliklerini kullananlar, bash mevcut değilse başarısız olur. Yama en iyi çözümdür.
importing function definition
" için bash kullanıyor ? Ayrıca ssh-sunucu enjeksiyonu ile test: ssh testuser@localhost '() { :;}; echo "$SHELL"'
belirlediğim yere testuser
kadar 'nin giriş kabuğu /bin/zsh
ve yankıları/bin/zsh