Критична вразливість BASH – «Shell Shock» [CVE-2014-6271]

30/09/2014

Учора, 24.09.2014, було зафіксовано критичну за важливістю вразливість командного інтерпретатора GNU Bash (першоджерело — critical vulnerability), яку назвали Shell shock.  Bash — це Bourne Again Shell, який встановлюється на Unix-подібних операційних системах.  

Вразливість стосується способу, за допомогою якого оброблюються змінні оточення перед запуском BASH-шелу. Можливо створити такі змінні оточення, які будуть включати виклики функцій. BASH обробить ці виклики, дозволивши віддалене виконання команд (remote code execution).

Таким чином, якщо атакуючий може контролювати значення змінної оточення перед тим, як виконати шел-скрипт, він може встановити значення, яке потім буде розібрано та оброблено інтерпретатором BASH. Таким чином атакуючий отримає можливість виконати будь-яку команду шелу.

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

У відповідності до специфікацій CGI, коли CGI-скрипт виконується, усі заголовки конвертуються в змінні оточення автоматично. Тому, атакуючий може експлуатувати цю вразливість шляхом додавання додаткових HTTP-заголовків і встановлення їм спеціальних заначень.

Приклад:

 23

Коли запит розбирається веб-сервером, створюється змінна оточення HTTP_JZSECETBRI і потрапляє до CGI-скрипта. Коли BASH виконує цей скрипт, він парсить (розбирає) цю змінну і виконує команду «/bin/touch ‘/tmp/pwned‘».

Сервер відповідає помилкою 500 Internal Server Error, але команда виконана і файл  /tmp/pwned створений від імені користувача веб-серверу (www-data).

test@dev:/var/www/cgi-bin$ ls -lah /tmp/pwned

-rw-r—r— 1 www-data www-data 0 Sep 30 15:56 /tmp/pwned

Це критична вразливість, якій інститутом NIST було присвоєно найвище значення важливості CVSS — 10 (CVE-2014-6271). Деякі відомі вектори атак на найпоширеніші сервіси наведено тут.

Сканер вразливостей веб-додатків Acunetix вже оновив базу відомих вразливостей і виявляє цю вразливість у тріальній версії (14 діб).

Користувачам RedHat-подібних Linux-систем можливо перевірити вразливість до цієї атаки наступною командою:

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

CERT-UA перевірила тестову систему з BackTrack Linux і вона виявилась уразлива:

22

 Усім системним адміністраторам і адміністраторам безпеки рекомендуємо негайно вжити заходів з захисту від такого роду атак, наприклад, шляхом:

— перевірки отримання веб-сервером тільки передбачуваних змінних оточення та реалізувати захист їх значень від команд інтерпретатора BASH (так званий variable sanity check);

— оновлення bash до версії старшої 4.3 (версію bash можливо дізнатись командою echo $BASH_VERSION);

— фільтрації спецсимволів у значеннях змінних, що передаються веб-серверу у скрипті (наприклад, символу ;).