Чего нам стоит репутация или пользовательский фикс для CVE-2018-18472 от NAS WD

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

О нашумевшей истории с стиранием данных с NAS от Western Digital можно почитать в посте @ZlodeiBaal: Western Digital стер данные с большинства пользовательских NAS

Здесь же будет об исправлении уязвимости, которой, как оказалось, 7 лет (2014), пусть Western Digital 3 дня назад отписались следующим параграфом:

"Серия My Book Live была представлена на рынок в 2010-м, и эти устройства получили последнее обновление прошивки в 2015-м году.

The My Book Live series was introduced to the market in 2010 and these devices received their final firmware update in 2015. [1]

17 часов назад пользователь dracenmarx опубликовал следующие инструкции для исправления ошибки с удаленным выполнением кода (RCE):

  • Заходим по SSH и редактируем файл (например с nano)

  • /var/www/Admin/webapp/includes/languageConfiguration.php

  • Первое изменение, находим:

exec("sudo bash -c '(echo \"language {$changes["language"]}\">/etc/language.conf)'", $output, $retVal);
  • Заменяем на:

if (!preg_match('/^[a-z]{2}_[A-Z]{2}$/', $changes["language"], $dummy)) return 'BAD_REQUEST';
exec("sudo bash -c '(echo '\"'\"".escapeshellarg("language {$changes["language"]}")."\"'\"'>/etc/language.conf)'", $output, $retVal);
  • Второе изменение, находим:

exec("sudo bash -c '(echo \"language {$lang["language"]}\">/etc/language.conf)'", $output, $retVal);

Заменяем на:

if (!preg_match('/^[a-z]{2}_[A-Z]{2}$/', $lang["language"], $dummy)) return 'BAD_REQUEST';
exec("sudo bash -c '(echo '\"'\"".escapeshellarg("language {$lang["language"]}")."\"'\"'>/etc/language.conf)'", $output, $retVal);

Больше, по его словам, он похожих ошибок не нашел.

Ну что ж, элементарно забыли не знали, что надо экранировать параметры, которые будем выполнять прямиком в системе, да ещё из под sudo c sudoers. А может знали, но верили​, что в переменных-то точно не будет ереси! Это я уж не буду ехидничать, что можно было вместо полноценного exec с внешними данными в командной строке, записать данные по STDOUT.

Всё бы было ничего, но dracenmarx под своим сообщением пишет, что уязвимость была известна с 2018-го года, так ведь? https://cve.circl.lu/cve/CVE-2018-18472 (оригинальный блог-пост от WizCase)

Western Digital WD My Book Live (все версии) имеет баг с удаленынм выполением команд под рутом через метасимволы шелла в параметре language через /api/1.0/rest/language_configuration. Может быть вызвано любым, кто знает адрес устройства.

Да, некрасиво, но пользователи -- сами себе злые буратины. Устройство не на гарантии? - Выкидывайте. Сами WizCase приводят такой PoC:

curl -kX GET -d ‘bim=param`whoami`’ https:///panel/rest/configuration

Так что WD знали о уязвимости в 2018-ом, что есть очень, очень большая дыра в безопасности, которая сотрёт все данные и ничего не сделали. А теперь, когда её эксплуатируют, делают вид, что удивлены. - dracenmarx, 26 июня.

Всё бы хорошо, если не дальнейшее копание самого dracenmarx:

Пока искал информацию по CVE-2018-18472, обнаружил, что эксплоит был уже известен в марте 2014-го! (WDMyCloud Command Injection CSRF) Получается, эксплоит на иньекцию команд от рута был в онлайне пока MyBookLive ещё поддерживать и WD ничего не сделали?! - dracenmarx, 26 июня

Давайте посмотрим на этот код. Опубликован 20-го марта 2014г. Выполнен как модуль для Metasploit. Описание модуля и код:

Name: WDMyCloud NAS Command Injection CSRF

Description: This module exploits a command injection vulnerability in the web interface of the WDMyCloud NAS device, via CSRF. It will submit the CSRF request to RHOST, as well as wdmycloud and wdmycloud.local.

То есть элементарно отсылаем запрос на 3 адреса, двое из них известны и статичны, и в теории должны в локальной сети идти прямиком на NAS, а третий адрес можно задать самому.

params = "format=xml&rest_method=PUT&language=" + Rex::Text.uri_encode("`#{payload.encoded}`")
...
<html>
<body>
<h1>Redirecting... Please Wait</h1>
<div style='display:none'>
<img src='http://wdmycloud.local/api/1.0/rest/language_configuration?#{params}' />
<img src='http://wdmycloud/api/1.0/rest/language_configuration?#{params}' />
<img src='http://#{datastore['RHOST']}/api/1.0/rest/language_configuration?#{params}' />
</div>

Как видим, всё то же самое. Параметр language и вжух! 2014г.

Примечательно, что два других пользователя создали себе форки этого когда. 11 июня 2014-го и 29-го августа 2015-го. Утверждать, что о нём никто не знал... ну PR и не на такое способны :)

Получается, "неофициально", но вполне находимо (→ https://gist.github.com/phikshun) эксплоит был публично доступен 7 лет, самое позднее, когда WD получили официальный пинок репорт - 2018-ый. Но когда код пишется на тяп-ляп (или матерную форму сего выражения), а задача поддержки не ведение базы данных и введение причастных лиц в курс дела, то и получаем отписки типа:

The vulnerability report CVE-2018-18472 affects My Book Live devices originally introduced to the market between 2010 and 2012. These products have been discontinued since 2014 and are no longer covered under our device software support lifecycle. We encourage users who wish to continue operating these legacy products to configure their firewall to prevent remote access to these devices, and to take measures to ensure that only trusted devices on the local network have access to the device.

Western Digital takes the security of our customers’ data seriously, and we provide security updates for our products to address issues from both external reports and regular security audits. Additionally, we welcome the opportunity to work with members of the security research community through responsible disclosure to help protect our users. [...]

- с блога WizCase

Только обычные пользователи - не B2B, и вой и вонь поднять могут. И тогда вдруг репутационный ущерб появляется на сводках и диаграммах мудрых MBA, и неожиданно выделяется и время и деньги на безопасность и IT.

Странно только, что один единственный пользователь за пару дней не только создал патч, но и нашел всю историю по багу - то, чем должна была заняться сама многомиллиардная компания.

Пока гром не грянет - мужик не перекрестится.

А потерпевшим можно только позавидовать, видно стирались просто файлы и TestDisk/PhotoRec вполне восстанавливает утраченное. Будь я злодеем - прошелся бы с dd, а будь хипстерским злодеем - openssl с публичным ключиком. Но не будем о плохом, его и так хватает:

I got a quote for data recovery and it was $2,000 to $5,000. Unbelievable. - mkennedy

Another affected user here in Canada. I had no idea there was an issue until I read the email from WD this afternoon. I checked the drive and sure enough, only the default folders were there. I unplugged the drive and here we are. I’m a hobby photographer, approximately 80,000 photos gone. I’m on the support chat waitlist, it’s been 11 seconds remaining for the past 20 minutes so I’m not holding my breath. - damack604

Источник: https://habr.com/ru/post/564956/


Интересные статьи

Интересные статьи

Я отвечаю за одно из направлений в UX-лаборатории Mail.ru Group. Мы проводим исследования для продуктов, в командах которых нет своих исследователей. Проектов в бэклоге много, поэтому...
Angular — это достаточно большой фреймворк. Задокументировать и написать примеры использования для каждого кейса просто невозможно. И механизм внедрения зависимостей не исключение. В...
На работе я занимаюсь поддержкой пользователей и обслуживанием коробочной версии CRM Битрикс24, в том числе и написанием бизнес-процессов. Нужно отметить, что на самом деле я не «чист...
Как часто вы слышите эту незамысловатую, на первый взгляд, фразу от своих знакомых, близких и коллег? По мере того, как государство и компании-гиганты вводят в эксплуатацию всё более изощрённы...
Вчера мы опубликовали на Хабре подборку материалов для тех, кто хотел бы разобраться с ITSM — изучить тренды и инструменты. Сегодня продолжаем рассказывать о том, как интегрировать ITSM в бизнес-...