Як виправити вразливість безпеки Shellshock в тестуванні debian / jessie?


24

Команда тесту

x='() { :;}; echo vulnerable' bash

показує, що моя установка Debian 8 (Jessie) є вразливою, навіть з останніми оновленнями. Дослідження показують, що існує патч для стабільного та нестабільного, але тестування не має чітких змін.

Я думаю, що патч зробить тестування через пару днів, але це насправді виглядає досить неприємно, щоб бути параноїком. Чи є спосіб отримати пакет з нестабільного та встановити його, не порушуючи мою систему? Оновлення до нестабільного виглядає так, що це спричинить більше проблем, ніж вирішує.


За словами Боба, існує друга вразливість Shellshock, яка фіксується у другому патчі. Тест для нього повинен бути:

 env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("

Але я недостатньо кваліфікований в Bash, щоб розібратися, що це означає чи чому це проблема. У будь-якому випадку це робить щось дивне, що перешкоджає bash_4.3-9.2_amd64.deb у 64-бітних системах, які під час редагування знаходяться у стабільній та нестабільній, але не в Джессі / тестуванні.

Щоб виправити це для Джессі , дістаньте останній Bash з нестабільного та встановіть його dpkg -i.

Jemenake пропонує

wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.2_$(dpkg --print-architecture).deb

як команда, яка отримає версію 4.3-9.2 для вашої машини.

І ви можете слідувати цьому за допомогою:

sudo dpkg -i bash_4.3-9.2_$(dpkg --print-architecture).deb

щоб встановити його.

Якщо вам потрібні додаткові виправлення від нестабільної для вашої системи Джессі , це явно шлях ( mutatis mutandis ).

Відповіді:


5

Завантажте пакет з нестабільної за цим посиланням . Ви також можете перевірити залежності там, хоча, схоже, нестабільний баш має ті ж залежності, що і баш від тестування. Встановіть завантажений деб із наступним.

dpkg -i

1
Дякую, я це зробив і вирішив проблему, не помітно знищивши нічого. Імовірно, він з часом перезаписується в звичайному ході оновлень?
Джон Лоуренс Аспден

3
Наведене вище посилання чудово, якщо ви користуєтесь браузером у графічному інтерфейсі. Менше, якщо ви запустите рись у сеансі оболонки. Якщо ви хочете щось, що можна вставити прямо у свій командний рядок, щоб схопити його, спробуйте: wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.1_$(dpkg --print-architecture).deb Це отримає правильну архітектуру для вашого поля.
Jemenake

1
@Jemenake Це слід опублікувати як окрему відповідь.
Excellll

Це, безумовно, відповідь, яку я хотів, але тепер, коли оновлення зробило це Джессі, я думаю, що краще, якщо прийнята відповідь - це той, хто зараз шукає, тому я рухаю галочку. Дякую, хоча!
Джон Лоуренс Аспден

Насправді є два помилки, і виправлення другого тепер знаходиться в sid, але не в Джессі, тому це насправді все-таки правильна відповідь (обов'язково отримайте 4.3-9.2!), Хоча, безсумнівно, ситуація вирішиться скоро.
Джон Лоуренс Аспден

25

Я відредагував цю відповідь для додаткових виправлень bash, випущених у понеділок.

Для Ubuntu 12.04 я запустив оновлення, але також довелося запустити інсталяцію для bash, щоб позбутися вразливості.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

Ця команда показує, що система вразлива, тому запустіть оновлення.

apt-get update && apt-get -y upgrade

Перевірте ще раз.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

Досі вразливі.

apt-get install -y bash

Перевірте ще раз.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

Правка: Після випуску додаткових патчів вихід змінився.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

Так! Виправлено. Це має працювати для інших версій, але я не перевіряв його після 12.04.

Також відповідь runamok нижче працює добре, тому дайте йому підсумок!


6
Просто, apt-get update && apt-get install -y bashздається, працює.
runamok

Виходячи з відповіді @JabawokJayUK, я все-таки провалюю перший тест після оновлення bash в Ubuntu 12.04.
Бірла

Я лише отримую, this is a testале не помилку та попередження. У своїй локальній машині я отримую помилку, але на своєму сервері - ні. Що це за міра? Мій сервер виправлений? Дякую.
ElBaulP

Здається, сховище зараз оновлено, тому що мені не довелося виконувати apt-get install -y крок, проблема була вирішена Alredy після оновлення.
користувач316566

1
Це дійсно не відповідає на питання про тестування / jessie Debian . Ubuntu - це різний дистрибутив з незалежними сховищами пакетів та графіками виправлення.
Боб

16

Альтернатива Debian 6.0 (Squeeze) без отримання пакунків з Debian 7 (Wheezy):

Використовуйте сховище безпеки LTS, яке підтримує патч.

Додайте це до /etc/apt/sources.list:

#LTS security
deb http://http.debian.net/debian/ squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian/ squeeze-lts main contrib non-free

Потім бігайте apt-get update && apt-get install bash.

Через: linuxquestions


Працює для debian 6. Ми завжди зберігаємо безпеку LTC у списку!
stanleyxu2005

4

apt-get updateраніше, apt-get dist-upgradeі ви отримаєте пластир. Просто зробив це сам, і там відбулося баш оновлення, яке виправляє проблему.


2
Проблема полягала в тому, що тестування Debian ще не мали оновленого пакету, тому завантажували його вручну з нестабільної та встановлювали, що було найпростішим виправленням на той час; рішення, дане у цій відповіді, не спрацювало б. (Можливо, зараз це станеться, тому що пакет міг перейти на тестування.)
wurtel

Це не дає відповіді на початкове запитання, але це те, що люди повинні робити зараз, тому я приймаю це так, що це перше, що люди побачать. "Справжня" відповідь на мою складність (вона є нестабільною і стабільною, але не є тестуючою) - це відповідь wurtel, використовуючи завантаження нового bash - ????. Deb і dpkg -i вручну.
Джон Лоуренс Аспден

Я також думаю, що це відповідь для Ubuntu, тепер, коли вони належним чином натиснули свої виправлення, і, ймовірно, для будь-якого іншого дистрибутиву на основі debian, який все ще підтримується до тих пір, коли люди висунули виправлення.
Джон Лоуренс Аспден

Насправді є два помилки, і виправлення другого ще не зробило це Джессі.
Джон Лоуренс Аспден

Це все ще вірне рішення, і воно залишатиметься до тих пір, поки команда з тестування Debian надсилатиме оновлення; вони, можливо, не мали цього при тестуванні під час питання про ОП. Ще один варіант - налаштувати всіх користувачів на використання Dash. Це, головним чином, проблема сервера, а не
MGD_Toronto


1

Я написав статтю про те, як це зробити за допомогою apt-get на старих версіях Ubuntu. Ви в основному оновлюєте свій source.list до найновішого, а потім запускаєте apt-get update та update bash. Ви можете прочитати його крок за кроком або скопіювати його звідси .

Підсумок:

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install --only-upgrade bash

Прочитайте статтю, якщо ви використовуєте old-releases.ubuntu.com і не забувайте, що ви можете змінити її:

sudo sed -i 's/trusty/YOUR_OS_CODENAME/g' /etc/apt/sources.list

е-е ... це залишить вашу систему з Trusty в source.list. наступного разу, коли ви будете оновлені, система оновиться до Trusty. це СЕВЕРЕЛЬНО порушить вашу систему.
strugee

1

Фіксована версія (див. Журнал змін ) для пакета Bash зараз знаходиться в Debian 8 (Jessie) (див. Інформацію про пакет ) станом на 26.09.2014 14:18 UTC.

Другий виправлення, згаданий у коментарях нижче, зараз також знаходиться у сховищі Джессі . Не потрібно встановлювати з нестабільних. Дивіться посилання з інформацією про пакет вище.

Встановлювати з нестабільної вже не потрібно.

Просто запустіть:

# aptitude update

далі:

# aptitude upgrade

Потім перевірте, що вразливість зникла (у щойно відкритій оболонці):

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'

Поки не виправлено наступний CVE-2014-7169
Боб

@Bob, я думаю, це стосується лише Ubuntu? І, мабуть, Ubuntu це вже виправили.
Джон Лоуренс Аспден

@JohnLawrenceAspden Nope. Спробуйте запустити env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("- якщо він друкує still vulnerable, то остання vuln ще не виправлена. AFAIK, Джессі все ще вразлива. Зауважте, що ця команда створить файл, названий echoу поточному каталозі, якщо він успішний, і вам потрібно буде видалити його перед повторним запуском тесту.
Боб

@ Боб, я не можу зробити це головою чи хвостом, що стосується крапки з комою?
Джон Лоуренс Аспден

@Bob, але що б він не робив, ти маєш рацію, що оновлення до версії 4.3-9.2 у нестабільній зупиняє це!
Джон Лоуренс Аспден
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.