GNU/Linux >> Znalost Linux >  >> Linux

Jak opravit Bash Shellshock CVE-2014-6271, CVE-2014-7169 v systému Linux

CVE-2014-6271 je kritická oprava s vysokým dopadem. Pokud používáte systém Linux, měli byste tuto chybu zabezpečení opravit.

Tato chyba zabezpečení CVE-2014-6271 (a CVE-2014-7169) se také nazývá Shellshock.

Byla nalezena chyba ve způsobu, jakým Bash vyhodnotil určité speciálně vytvořené proměnné prostředí. Útočník by mohl tuto chybu použít k přepsání nebo obejití omezení prostředí při provádění příkazů shellu. Některé služby a aplikace umožňují vzdáleným neověřeným útočníkům poskytovat proměnné prostředí, což jim umožňuje tento problém zneužít.

Pomocí bash shellu tato chyba zabezpečení umožňuje útočníkovi spouštět náhodné příkazy shellu ve vašem prostředí. Myšlenka za tím je, že útočník může obejít omezení proměnných prostředí, což mu umožňuje provádět příkazy shellu.

Upozorňujeme, že některé služby (nebo aplikace), které běží na linuxových serverech, mohou umožnit neověřeným útočníkům zadat některé proměnné prostředí, které jim zase umožní zneužít tuto chybu zabezpečení v síti bez jakékoli autentizace.

Jediné, co musíte udělat, abyste to napravili, je upgradovat bash na nejnovější verzi. Například na RedHat nebo CentOS tento problém vyřešíte takto:

yum update bash

Je váš systém zranitelný vůči CVE-2014-6271?

RedHat poskytl následující skript pro testování, zda je váš systém zranitelný nebo ne.

Pokud ve výstupu uvidíte slovo „zranitelný“, pak je váš systém zranitelný.

env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

Vezměte prosím na vědomí, že se ve výstupu může zobrazit také nějaká chybová zpráva spolu se slovem „zranitelný“. Například následující je výstup na systému RedHat 5 a RedHat 6 (a CentOS 5 a 6), který je zranitelný.

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test

Verze Bash před opravou

Než problém vyřešíte, zkontrolujte aktuální verzi bash. Na RedHat 5 (a CentOS 5) jsem měl před opravou následující bash verzi:

# rpm -qa | grep bash
bash-3.2-24.el5

Na RedHat 6 (a CentOS 6) jsem měl před opravou následující bash verzi:

# rpm -qa | grep bash
bash-4.1.2-3.el6.x86_64

Opravit CVE-2014-6271

Nyní aktualizujte bash pomocí yum (nebo jiného nástroje pro správu balíčků pro vaši příslušnou distribuci)

yum update bash

Na RedHat 5 (a CentOS 5) je následující verze bash po aktualizaci, která opravila zranitelnost.

# rpm -qa | grep bash
bash-3.2-33.el5_11.4

Na RedHat 6 (a CentOS 6) je následující verze bash po aktualizaci, která opravila zranitelnost.

# rpm -qa | grep bash
bash-4.1.2-15.el6_5.2.x86_64

Po opravě otestujte chybu zabezpečení CVE-2014-6271

Po upgradu bash na nejnovější verzi, když provedete test, neuvidíte slovo „zranitelný“ v následujícím výstupu příkazu. Upozorňujeme, že níže uvedené varování a chybová zpráva jsou v pořádku.

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test

A co CVE-2014-7169?

Po vydání původní opravy redhat zjistil, že oprava CVE-2014-6271 byla neúplná a bash stále umožňoval několik znaků, které lze za určitých zvláštních okolností vložit do proměnné prostředí.

Když jste provedli yum aktualizaci bash z předchozího kroku, automaticky získá nejnovější verzi bash, která také obsahuje opravu pro CVE-2014-7169. Takže pro tuto opravu opravdu nemusíte dělat nic konkrétního.

Stále však můžete provést test, abyste se ujistili, že váš systém není zranitelný vůči tomuto problému, a to provedením následujícího v systému:

cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo

V systému, který je zranitelný vůči CVE-2014-7169, si všimnete, že následující vytvořil soubor /tmp/echo a zobrazí obsah souboru.

Pokud uvidíte následující výstup, měli byste aktualizovat svůj bash na nejnovější verzi pomocí „yum update bash“ (nebo použijte vhodný nástroj pro správu balíčků pro vaši distribuci)

# cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 16:15:09 PDT 2014

Pokud váš systém není zranitelný vůči CVE-2014-7169, uvidíte následující výstup, který nevytvoří soubor /tmp/echo.

# cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory

Další informace

  • Podrobnosti o CVE-2014-6271, CVE-2014-7169 z webu RedHat
  • Zpráva RedHat (CentOS, Fedora) Bugzilla pro CVE-2014-6271
  • Zpráva RedHat (CentOS, Fedora) Bugzilla pro CVE-2014-7169
  • Oracle Security Alert for CVE-2014-7169 – pro Solaris nebo Oracle Enterprise Linux
  • Ubuntu CVE-2014-7169
  • Debian CVE-2014-7169

Linux
  1. Jak vymazat historii příkazového řádku BASH v Linuxu

  2. Jak vymazat historii Bash na Linuxu

  3. Jak vymazat konkrétní příkaz z historie Bash v Linuxu

  1. Jak opravit chybu Cron Authentication Failure v Linuxu?

  2. Jak zkontrolovat, zda má Bash zranitelnost Shellshock?

  3. Jak zkrátit Bash Prompt v Linuxu?

  1. Jak zkontrolovat syslog v Bash na Linuxu?

  2. jak nainstalovat anaconda / miniconda na Linux tiše

  3. Jak získat masku sítě z bash?