Backdoor от SAP

Backdoor от SAP

Проводить исследования по безопасности SAP — одна из основных моих задач в Positive Technologies. Кроме того, мне нужно было придумать — с чем выступать перед слушателями на нашем форуме PHDays III.

Автор: Дмитрий Гуцко, ведущий эксперт Positive Technologies

Проводить исследования по безопасности SAP — одна из основных моих задач в Positive Technologies. Кроме того, мне нужно было придумать — с чем выступать перед слушателями на нашем форуме PHDays III. Так была найдена тема для исследований: как в SAP-системе можно скрыть наличие профиля SAP_ALL у пользователя (то есть, всех возможных авторизаций). Если злоумышленнику удалось проникнуть в систему, получить права на создание пользователей и присвоение им привилегий, то скорее всего следующим шагом для закрепления в системе будет создание для себя новой учетной записи, разумеется со всеми необходимыми правами. Но такой пользователь будет отображаться в результатах внутренних проверок, внешних аудитов, и трудно рассчитывать, что пользователь с правами SAP_ALL останется незамеченным.

Итак, приступим. Я наметил два вектора проведения работ:

  1. Запутать работу отчетов по анализу полномочий: посредством вложенности профилей, использования ссылочного пользователя, ролей, копий профиля и т. п.
  2. Если спросить у спецов по SAP: «Как получить список пользователей, обладающих определенными правами?» — они назовут транзакцию SUIM, отчет RSUSR002, что, по сути, одно и то же. Отсюда следующая идея: на основании анализа ABAP-кода отчета RSUSR002 придумать механизм для преодоления алгоритма работы отчета, тем самым скрыв пользователя.

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

Обратимся к логике работы отчета. Логика простая: берется список всех пользователей системы, и каждый пользователь пошагово проверяется на наличие искомых полномочий. Если пользователь не соответствует условиям поиска — он удаляется из списка. Все вроде бы просто... Но при анализе внимание привлекает следующая строка:

Из списка вывода удаляется пользователь с загадочным именем ‘…………’ (12 точек). Проверим наше предположение на практике: создадим пользователя с именем из 12 точек, назначим ему различные роли и профили — и посмотрим на результаты анализа отчета. Как и ожидалось, в результатах отчета пользователь с таким именем отсутствует!

Не правда ли, интересно: зачем такое могло понадобиться производителю SAP? На этот вопрос я, конечно, не могу дать ответа. Может, этот пользователь создавался при генерации отчетов EARLYWATCH и что-то «делал» в системе?..

Для уязвимости определили следующий CVSS-вектор:

CVSS Base Score: 4.6

CVSS Base Vector: AV:N/AC:H/AU:S/C:P/I:P/A:P

Рейтинг, вроде бы, невысокий, но согласитесь: неприятно осознавать тот факт, что производитель системы, в которой у нас хранится и обрабатывается вся критическая бизнес-информация, оставил подобные лазейки для сокрытия каких-то специально заведенных пользователей. Собственно, для чего это могло быть нужно?

Однако, не так уж все и плохо. В июне 2013 года обновление, закрывающее эту уязвимость, уже вышло: SAP Note 1844202. Скачав выпущенное обновление, вы избавитесь от подобной проблемы на своих системах.

Как видно из таблицы ниже, исправление было выпущено для всех существующих версий SAP_BASIS, начиная с версии 4.6B. Иначе говоря, если вы еще не успели обновиться, то данная закладка со стопроцентной вероятностью будет и у вас.

Вот и все, собственно, что я хотел рассказать. Рекомендую применить «ноту», инициатором которой является ваш покорный слуга :)

SAP Security note 1844202: https://service.sap.com/sap/support/notes/1844202

Не ждите, пока хакеры вас взломают - подпишитесь на наш канал и станьте неприступной крепостью!

Подписаться