Что такое Log Injection?

Log Injection, также известная как Log Forgery, описывает уязвимость, возникающую при любом сценарии, в котором недоверенные входные данные могут загрязнить или нарушить целостность файлов журналов приложений или систем.

Как правило, это результат неспособности предотвратить появление в логах злонамеренно созданных входных данных, предназначенных для введения в заблуждение мониторов и систем SIEM (Security Information and Event Management).

Целостность файлов журнала

Файлы журнала - это способ, с помощью которого приложения, службы и сама ОС (операционная система) записывают события и создают исторический архив произошедших действий. Каждое приложение обычно генерирует файл журнала, который (в идеале) позволяет восстановить события в случае возникновения проблем.

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

Это доверие оказывается неуместным, если недоверенный ввод, предоставленный приложению, может появиться без фильтрации в файлах журнала приложения. Это происходит потому, что содержимое может быть злонамеренно сформировано в файле(ах) журнала, чтобы создать впечатление, что проблема имеет место, когда это не так, и/или может быть использовано для сокрытия проблемы или атаки.

Log Injection: Пример

Рассмотрим приложение, которое регистрирует неудачные попытки входа в систему и выдает предупреждение после некоторого фиксированного числа неудачных попыток с одним и тем же идентификатором входа. Это может быть использовано для обнаружения атак грубой силы на приложение и упреждающего оповещения администраторов. Далее предположим, что система SIEM настроена на генерацию предупреждения, если в течение одной (1) минуты в журнале появляются 10 записей, подобных следующим, для одного и того же идентификатора входа:

Монитор будет сброшен, если событие успешного входа произойдет до достижения порога предупреждения.

Это решение имеет смысл до тех пор, пока сохраняется целостность файла журнала. Однако злоумышленник, который может добавить произвольное содержимое в файл журнала, может попытаться войти в систему со значением Id, предназначенным для подделки записи в журнале:

Если приложение не проверит входящее значение идентификатора входа, а затем зарегистрирует его, как показано выше, то в результирующем файле журнала будет содержаться ДВЕ (2) записи, первая - неудачная, а вторая - успешная:

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий