Компания Cisco выявила активную эксплуатацию ранее неизвестной уязвимости в функции Web User Interface (Web UI) программного обеспечения Cisco IOS XE (CVE-2023-20198) при выходе в Интернет или недоверенные сети. Эта уязвимость затрагивает как физические, так и виртуальные устройства под управлением ПО Cisco IOS XE, на которых также включена функция HTTP или HTTPS Server.
- Успешная эксплуатация CVE-2023-20198 позволяет злоумышленнику получить доступ к устройству с уровнем привилегий 15, который он может использовать для создания локального пользователя и входа в систему с обычным пользовательским доступом.
- Далее злоумышленник может использовать новую неавторизованную учетную запись локального пользователя для эксплуатации второй ранее неизвестной уязвимости (CVE-2023-20273) в другом компоненте WebUI. Это позволяет злоумышленнику выполнять команды с повышенными (root) привилегиями, что дает ему возможность запускать произвольные команды на устройстве.
- Рекомендации Cisco по отключению функции HTTP-сервера в системах, выходящих в Интернет, соответствуют не только лучшим практикам, но и рекомендациям правительства США по снижению рисков, связанных с использованием интерфейсов управления, выходящих в Интернет.
- Центры поддержки Cisco сотрудничали с группой безопасности после использования методов и процедур, которые позволили выявить аналогичные признаки в очень небольшом количестве случаев из нашего обычного значительного ежедневного объема.
- Эти уязвимости относятся к критическим и уязвимостям высокой степени серьезности, и мы настоятельно рекомендуем пострадавшим организациям незамедлительно выполнить действия, описанные в PSIRT-сообщении Cisco.
Первоначальный доступ и доставка имплантата
Уязвимость CVE-2023-20198 получила наивысшую оценку Common Vulnerability Scoring System (CVSS) (10/critical). Успешная эксплуатация позволяет злоумышленнику получить доступ к устройству с полными правами администратора. После компрометации устройства мы наблюдали, как злоумышленник использовал вторую уязвимость (CVE-2023-20273), затрагивающую другой компонент Web UI, для установки имплантата. Это позволяет злоумышленнику выполнять произвольные команды с повышенными (root) привилегиями, тем самым фактически получая полный контроль над устройством. В данной конкретной атаке злоумышленник использовал возможность выполнения произвольных команд для записи имплантата в файловую систему. CVE-2023-20273 имеет CVSS-оценку 7,2 (высокая).
Анализ импланта
Имплантат основан на языке программирования Lua и состоит из 29 строк кода, облегчающего выполнение произвольных команд. Злоумышленник должен создать HTTP POST-запрос к устройству, который выполняет следующие три функции:
- Первая функция диктуется параметром "menu", который должен существовать и быть непустым. Она возвращает строку чисел, окруженных прямыми слэшами, которая, как мы полагаем, представляет собой версию имплантата.
- Вторая функция диктуется параметром "logon_hash", который должен быть равен "1". Он возвращает 18-символьную шестнадцатеричную строку, которая жестко закодирована в импланте.
- Третья функция также диктуется параметром "logon_hash", который проверяет, совпадает ли параметр с 40-символьной шестнадцатеричной строкой, жестко закодированной в импланте. Второй параметр, используемый здесь, - "common_type", который должен быть непустым и значение которого определяет, выполняется ли код на системном уровне или на уровне IOS. Если код выполняется на системном уровне, то значение этого параметра должно быть равно "subsystem", а если на уровне IOS, то параметр должен быть равен "iox". Команды IOX выполняются на уровне привилегий 15.
В большинстве наблюдаемых случаев установки данного импланта как 18-символьная шестнадцатеричная строка во второй функции, так и 40-символьная шестнадцатеричная строка в третьей функции были уникальны, хотя в некоторых случаях эти строки были одинаковыми на разных устройствах. Это позволяет предположить, что существует способ вычисления агентом значения, используемого в третьей функции, из значения, возвращаемого второй функцией, что является формой аутентификации, необходимой для выполнения произвольных команд, предусмотренных в третьей функции.
Cisco также наблюдали вторую версию импланта, которая теперь включает предварительную проверку на наличие заголовка HTTP Authorization. Большинство основных функциональных возможностей этой версии остались такими же, как и у предыдущей. Вторая версия, скорее всего, начала разворачиваться еще 20 октября и была развернута с использованием более ранней версии имплантата.
Добавление злоумышленниками проверки заголовка в имплант, скорее всего, является реактивной мерой, направленной на предотвращение идентификации скомпрометированных систем. Данная проверка заголовка используется в основном для того, чтобы помешать идентификации компрометации с помощью предыдущей версии команды curl, предоставленной компанией Talos. Основываясь на информации, полученной на данный момент, мы считаем, что добавление проверки заголовка в имплант, скорее всего, привело к недавнему резкому снижению видимости зараженных систем, находящихся в открытом доступе. Мы обновили команду curl, приведенную в нашем руководстве, чтобы помочь идентифицировать варианты имплантов, использующих проверку HTTP-заголовков.
Организациям следует обратить внимание на необъяснимые или вновь созданные пользователи на устройствах как свидетельство потенциально вредоносной активности, связанной с этой угрозой. Одним из способов выявления наличия известных вариантов имплантата является выполнение следующих команд на устройстве, где часть "DEVICEIP" является заполнителем IP-адреса проверяемого устройства:
1 | curl -k -H "Authorization: 0ff4fbf0ecffa77ce8d3852a29263e263838e9bb" -X POST "https[:]//DEVICEIP/webui/logoutconfirm.html?logon_hash=1" |
В результате будет выполнен запрос к Web-интерфейсу устройства на предмет наличия имплантата. Если запрос возвращает шестнадцатеричную строку, аналогичную той, что была описана в третьей функции выше, значит, известная версия имплантата присутствует. Отметим, что это будет свидетельствовать о компрометации только в том случае, если веб-сервер был перезапущен агентом после установки имплантата.
Кроме того, для идентификации систем с известными версиями имплантата можно выполнить общую команду curl, не взаимодействуя с основной функциональностью имплантата:
1 | curl -k "https[:]//DEVICEIP/%25" |
Если в ответ будет получен HTTP-ответ 404 с HTML-страницей, состоящей из сообщения "404 Not Found", это означает, что в системе присутствует известная разновидность имплантата. Система без импланта должна возвращать либо стандартный HTTP-ответ 404, либо HTTP-ответ 200 с JavaScript-перенаправлением.
Indicators of Compromise
IPv4
- 154.53.56.231
- 154.53.63.93
- 5.149.249.74
User Name
- cisco_tac_admin
- cisco_support
- cisco_sys_manager