SSTI. Что это за уязвимость? Методы защиты.

14 мая 2020

Server-Side Template Injection и методы защиты

Server-Side Template Injection или SSTI представляет собой механизм атаки, при котором злоумышленник внедряет в шаблон вредоносный код. Так как инъекция шаблона производится на стороне сервера, то многие защитные программы, фильтрующие трафик со стороны пользования, не обнаруживают постороннего вмешательства.
Каковы особенности атаки SSTI и каким образом можно защититься от них?

Что такое шаблонизация

Механизм шаблонов разработан для того, чтобы на их основе упростить процесс создания интернет-страниц с использованием динамичных данных. Пользователь использует шаблон для основного оформления страницы, но вставляет в него собственный контент.
Атака с использованием шаблона на стороне сервера производится в момент, когда пользовательская информация объединяется с шаблоном. Благодаря этому хакеры могут вводить произвольные директивы шаблонов и манипулировать ими с целью получения контроля над сервером.

Опасность внедрения шаблона на стороне сервера

Как понятно из названия, Server-Side Template Injection выполняется на стороне сервера, что делает такую атаку особенно опасной. Сайт может подвергаться различным атакам в зависимости от типа шаблона и того, каким образом он используется на сервере. В некоторых случаях само внедрение вредоносного кода не несет повышенной опасности, но оно готовит почву под более опасные атаки.
В наиболее опасных случаях злоумышленник может инициировать удаленное выполнение кода и получить полный контроль над сервером. В дальнейшем он может использоваться для атак на внутреннюю информационную инфраструктуру компании.
Если установленное защитное ПО не дает выполнить опасный код, механизм внедрения шаблона на стороне сервера может открыть для чтения конфиденциальные данные на сервере.

Как предотвратить атаку SSTI

В зависимости от ситуации можно использовать несколько способов защиты от Server-Side Template Injection:

1. Запрет на изменение шаблонов пользователем. Установка такого ограничения сделает невозможным внесение изменений в базовый шаблон и внедрение в него потенциального опасного кода. К сожалению, во многих бизнес-приложениях установить такой запрет невозможно из-за особенностей решаемых задач.
2. Использование особых механизмов шаблонизации. Эффективный способ предотвращения описываемых атак –  экранирование пользовательских данных и использование средств безопасности, которое предоставляет шаблонизатор.
Максимальное разделение внутренней логики от внешнего представления позволяет существенно уменьшить риск возникновения атак на основе шаблонов сайтов.
3. Выполнение пользовательского кода в изолированной среде. Если потенциально опасный код будет выполнен в «песочнице», то основной системе не будет причинен ущерб. Однако такой вариант требует значительных затрат и усложняет программное обеспечение.
4. В качестве альтернативы можно использовать защитные средства, например Web Application Firewall, который в реальном времени анализирует и блокирует вредоносные запросы. Одним из таких решений является разработка наших специалистов - Penlab WaF.