SORU
24 EYLÜL 2014, ÇARŞAMBA


Bash Shellshock güvenlik açığı arkasındaki davranış veya kasıtlı belgelenmiştir?

Yeni bir güvenlik açığı, CVE-2014-6271, Bash çevre değişkenleri was disclosed yorumlar. İstismar Bash fonksiyon tanımlaması olarak bazı ortam değişkeni tanımlamalar ayrıştırma, ama sonra tanımını aşağıdaki kodu çalıştırmak için devam dayanıyor:

$ x='() { echo i do nothing; }; echo vulnerable' bash -c ':'
vulnerable

Ama anlamıyorum. Fonksiyonları gibi ortam değişkenleri yorumlama hakkında Bash el kitabında bulmak mümkün oldum bir şey yok (hariçmiras fonksiyonlarıfarklı olan). Gerçekten de, uygun adında bir işlev tanımı sadece bir değer olarak kabul edilir:

$ x='y() { :; }' bash -c 'echo $x'
y() { :; }

Ama bozuk bir şey yazdırır:

$ x='() { :; }' bash -c 'echo $x'

$ # Nothing but newline

Bozuk işlev isimsiz ve sadece karar veremiyorum. Ben bunu göremiyoruz bu saf uygulama bir hata, güvenlik açığı, veya oraya yönelik bir özellik işte.

Güncelleme

Barmar yorum başına, ben öne işlev adı, parametre adı:

$ n='() { echo wat; }' bash -c 'n'
wat

Daha önce denedim yemin edebilirim, ama yeterince çalışmadım sanırım. Tekrarlanabilir. Burada biraz daha test edilmesi

$ env n='() { echo wat; }; echo vuln' bash -c 'n'
vuln
wat
$ env n='() { echo wat; }; echo $1' bash -c 'n 2' 3 -- 4

wat

...görünüşe göre argümanlar istismar yürütür zamanda ayarlanmamış.

Benim için temel soru cevap . her neyse, ^em>evet, bu Bash uygular fonksiyonları miras kaldı.

CEVAP
24 EYLÜL 2014, ÇARŞAMBA


Bu uygulama, bir hata gibi görünüyor.

Görünüşe göre, ihraç fonksiyonları bash çalışma şeklinizi, özel olarak biçimlendirilmiş ortam değişkenleri kullanırlar. Eğer bir fonksiyon verme:

f() { ... }

bir ortam değişkeni tanımlar:

f='() { ... }'

Muhtemelen neler olduğunu yeni kabuk () ile başlayan bir ortam değişkeni gördüğünde değişken adı başa ve sonuç dizesi yürütür. Hata bu her şeyi yürütme içerirsonrabu da fonksiyon tanımlama.

Düzeltme görünüşe göre eğer geçerli bir işlev tanımı diye sonuç ayrıştırmak için açıklanmıştır. Değilse, geçersiz fonksiyon tanımlama girişimi hakkında uyarı yazdırır.

This article hatanın nedenini açıklamamı doğruluyor. Ayrıca düzeltme çözümler hakkında biraz daha detaya gider: sadece değerleri daha dikkatli ayrıştırma yapıyorlar, ama geçiş için kullanılan değişkenler fonksiyonlar özel bir adlandırma kuralı takip et ihraç etti. Bu adlandırma bu ortam değişkenleri, CGI betikleri için oluşturulan için kullanılan farklı bir HTTP istemci asla bu kapı kendi ayak almak gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hey Nadine

    Hey Nadine

    24 Kasım 2006
  • TheDroidDemos

    TheDroidDemo

    15 ŞUBAT 2011
  • thetrollska

    thetrollska

    2 EKİM 2009