Введение

Атака направлена ​​на изучение недостатков в механизме декодирования, реализованном в приложениях при декодировании формата данных Unicode. Злоумышленник может использовать этот метод для кодирования определенных символов в URL-адресе, чтобы обойти фильтры приложений, таким образом получая доступ к ограниченным ресурсам на веб-сервере или для принудительного просмотра защищенных страниц. Прежде чем мы узнаем об атаке, давайте узнаем о Unicode.

Краткое введение в Unicode

Ранние кодировки символов также противоречили друг другу. То есть две кодировки могут использовать одно и то же число для двух разных символов или использовать разные числа для одного и того же символа. Любой компьютер (особенно серверы) должен поддерживать множество различных кодировок. Однако, когда данные передаются через разные компьютеры или между разными кодировками, эти данные подвергаются риску повреждения.
Стандарт Unicode предоставляет уникальный номер для каждого символа, независимо от платформы, устройства, приложения или языка. Он был принят всеми современными поставщиками программного обеспечения и теперь позволяет передавать данные через множество различных платформ, устройств и приложений без повреждения.

Как работает эта атака

В обычном представлении пути к файлу используются ../ или .. \. Так как их можно использовать для обхода пути, серверы всегда будут проверять, что запрошенный URL не выходит за разрешенные каталоги файлов. Если не использовать указанные выше символы, пользователь может получить доступ к любому из файлов на данном сервере. Таким образом, серверы обязательно проверят, что URL-адрес запрашивает или пытается войти.

Но когда URL-адрес содержит символы в кодировке Unicode, вышеуказанная проверка безопасности может не работать. После первоначальной проверки прохождения символов в URL-адресе он начнет декодировать URL-адрес Unicode. Если символ «/» закодирован в Юникоде как «% c0% af», URL-адрес пройдет проверку безопасности, поскольку он не содержит никаких шаблонов «../». Вместо этого проверка безопасности видит только «..% c0% af», который не распознается как вредоносный шаблон. Поэтому, когда процедура декодирования закончится, этот символ будет рассматриваться как «../». Итак, теперь можно выполнить злонамеренный обход. Некоторые веб-приложения сканируют строку запроса на наличие опасных символов, таких как

  • ..
  • ../
  • ..\

чтобы предотвратить обход каталога.

Однако строка запроса обычно декодируется перед использованием URI. Таким образом, эти приложения уязвимы для прохождения каталогов, закодированных в процентах, например:

  • % 2e% 2e% 2f, что означает ../
  • % 2e% 2e / что переводится как ../
  • ..% 2f, что означает ../
  • % 2e% 2e% 5c, что переводится как .. \

Угрозы Unicode-атак.

Благодаря возможности переходить в неавторизованные каталоги, пользователь может получать конфиденциальные данные, а также удалять или изменять их в соответствии со своими предпочтениями. Они также могут выполнять произвольные команды на сервере через URL-адреса. Таким образом, из-за этого обхода у низкоуровневого пользователя будут повышенные привилегии.

Противодействие атакам Unicode

  1. Использование патчей, предоставленных серверами. Например, Microsoft IIS предоставил исправление для борьбы с этой уязвимостью.
  2. Когда клиентский ввод требуется из веб-форм, избегайте использования метода GET для отправки данных, поскольку этот метод приводит к добавлению данных формы к URL-адресу и им легко манипулировать. Вместо этого по возможности используйте метод POST.
  3. Любые проверки безопасности должны быть завершены после того, как данные были декодированы и подтверждены как приемлемое содержимое (например, максимальная и минимальная длина, правильный тип данных, не содержит никаких закодированных данных, текстовые данные содержат только символы a-z и A-Z и т. Д.).

Резюме

Мощность и гибкость уязвимости Unicode делают ее одной из самых популярных и, следовательно, опасных уязвимостей, используемых злоумышленниками сегодня. Злоумышленники могут очень легко создавать новые и разнообразные атаки, используя эту уязвимость, и уязвимость достаточно проста для использования, так что талантливые злоумышленники могут атаковать ваш сервер «на лету», изменяя свои команды, отправляемые серверу, в соответствии с вашей конкретной средой. Однако эту уязвимость можно легко устранить, если внимательный системный администратор предпримет несколько простых шагов, например переместит корень веб-папки с логического диска, на котором хранятся системные исполняемые файлы. Но в Интернете слишком много систем, администраторы которых придерживаются менее проактивного подхода к безопасности и применяют только исправления безопасности в своей системе, а не проектируют систему безопасности с самого начала.