Атака эксплуатирующая ошибки канонизации

Перейти к содержанию

Что такое атака канонизации?

На чтение 3 мин Просмотров 101 Опубликовано 16.08.2022

Канонизация — это процесс сопоставления входных данных с их каноническим эквивалентом. Он часто используется для криптографических алгоритмов и данных, которые должны быть защищены от несанкционированного доступа, обычно путем хеширования. В компьютерной безопасности атака канонизации направлена ​​​​на поиск или вычисление сопоставления между двумя разными входными данными, которые дают одинаковый результат при обработке данной системой. Затем эта атака ищет способы манипулировать входными строками, чтобы они обе приводили к нежелательному результату (например, «война», которую можно манипулировать друг другом, изменив всего один символ). В некоторых алгоритмах, таких как MD5, даже незначительные изменения входных данных приведут к огромной разнице в хеш-значениях, что делает этот тип атаки относительно простым. Атака канонизации — это тип атаки по определенному шаблону.

Содержание

  1. Реализации
  2. Ключевые моменты
  3. Противодействие атаке канонизации

Реализации

  • Мы реализовали алгоритмы чистого хеширования таким образом, что по существу объединяются все входные строки, кроме одной, которая принимается за каноническую форму. Для таких алгоритмов, как MD5, это означает, что легко найти две входные строки, которые производят одно и то же хэш-значение, но очень сложно предсказать, как изменение любого отдельного символа преобразует произвольный ввод в его каноническую форму.
  • Алгоритм хеширования, который создает коллизию для двух разных входных данных, которые были нарушены коллизией.
  • Исследования атак канонизации имеют значение для многих областей, включая криптоанализ, компьютерную безопасность и безопасность данныхна основе хэшей. Эти атаки позволяют злоумышленнику предотвратить получение одинаковых выходных данных двумя входами; для данного выхода мы можем изменить один вход, не затрагивая оригинал.

Ключевые моменты

  • Этот метод используется для кражи данных жертвы с сервера.
  • Злоумышленник сначала создает домен, обычно в разных доменах верхнего уровня, например:.com,.co.uk или.info и т. д. Затем регистрирует веб-сайт с этим доменным именем и, наконец, публикует ссылки на сайт из различных социальных сетей или разных блогов. в Интернете, чтобы он отображался на страницах результатов поисковых систем по определенным ключевым словам, которые ищут пользователи.
  • Затем злоумышленник ждет пользователей, которые зайдут на их поддельный сайт и введут свое имя пользователя/пароль, чтобы выполнить действие (например, совершить платеж).
  • В случае платежной операции пользователи будут перенаправлены на настоящий сайт киберпреступников, где они завершат операцию, а затем сразу же будут перенаправлены обратно на поддельный сайт через скрипт майнинга криптовалюты.
  • Пользователь может посетить любой вредоносный сайт, использующий эту технику. Такие сайты могут отображаться в поисковых системах и результатах социальных сетей, но не на законных страницах результатов. Единственный способ узнать, безопасно ли вводить информацию на таких веб-сайтах, — это проверить наличие ошибок сертификата: если он выдает ошибку, значит, это подделка.

Противодействие атаке канонизации

  • Если ЦС использует слабую криптографию, с этим нужно что-то делать. Прежде чем использовать этот ЦС, компания должна больше узнать о них и их политиках безопасности.
    Контрмеры против атаки канонизации:
    чтобы предотвратить эту атаку, необходимо принять стратегию глубокоэшелонированной защиты.
  • Политика безопасности на уровне инфраструктуры: DDoS-атакиявляются аспектом постоянной эскалации угроз безопасности и в настоящее время не являются основным направлением деятельности большинства организаций. Однако их часто можно предотвратить с помощью простых превентивных мер, таких как ограничение доступа к данным для IP-адресов, которые вошли в систему в течение заранее определенного периода времени, или с помощью брандмауэров на основе хоста и т. д.
  • Тестирование на проникновение также следует проводить на любом новом сервере после его установки. Это может предотвратить нераскрытие уязвимостей и т. д.

Перейти к содержанию

Что такое атака канонизации?

На чтение 3 мин Просмотров 62 Опубликовано 16.08.2022

Канонизация — это процесс сопоставления входных данных с их каноническим эквивалентом. Он часто используется для криптографических алгоритмов и данных, которые должны быть защищены от несанкционированного доступа, обычно путем хеширования. В компьютерной безопасности атака канонизации направлена ​​​​на поиск или вычисление сопоставления между двумя разными входными данными, которые дают одинаковый результат при обработке данной системой. Затем эта атака ищет способы манипулировать входными строками, чтобы они обе приводили к нежелательному результату (например, «война», которую можно манипулировать друг другом, изменив всего один символ). В некоторых алгоритмах, таких как MD5, даже незначительные изменения входных данных приведут к огромной разнице в хеш-значениях, что делает этот тип атаки относительно простым. Атака канонизации — это тип атаки по определенному шаблону.

Содержание

  1. Реализации
  2. Ключевые моменты
  3. Противодействие атаке канонизации

Реализации

  • Мы реализовали алгоритмы чистого хеширования таким образом, что по существу объединяются все входные строки, кроме одной, которая принимается за каноническую форму. Для таких алгоритмов, как MD5, это означает, что легко найти две входные строки, которые производят одно и то же хэш-значение, но очень сложно предсказать, как изменение любого отдельного символа преобразует произвольный ввод в его каноническую форму.
  • Алгоритм хеширования, который создает коллизию для двух разных входных данных, которые были нарушены коллизией.
  • Исследования атак канонизации имеют значение для многих областей, включая криптоанализ, компьютерную безопасность и безопасность данныхна основе хэшей. Эти атаки позволяют злоумышленнику предотвратить получение одинаковых выходных данных двумя входами; для данного выхода мы можем изменить один вход, не затрагивая оригинал.

Ключевые моменты

  • Этот метод используется для кражи данных жертвы с сервера.
  • Злоумышленник сначала создает домен, обычно в разных доменах верхнего уровня, например:.com,.co.uk или.info и т. д. Затем регистрирует веб-сайт с этим доменным именем и, наконец, публикует ссылки на сайт из различных социальных сетей или разных блогов. в Интернете, чтобы он отображался на страницах результатов поисковых систем по определенным ключевым словам, которые ищут пользователи.
  • Затем злоумышленник ждет пользователей, которые зайдут на их поддельный сайт и введут свое имя пользователя/пароль, чтобы выполнить действие (например, совершить платеж).
  • В случае платежной операции пользователи будут перенаправлены на настоящий сайт киберпреступников, где они завершат операцию, а затем сразу же будут перенаправлены обратно на поддельный сайт через скрипт майнинга криптовалюты.
  • Пользователь может посетить любой вредоносный сайт, использующий эту технику. Такие сайты могут отображаться в поисковых системах и результатах социальных сетей, но не на законных страницах результатов. Единственный способ узнать, безопасно ли вводить информацию на таких веб-сайтах, — это проверить наличие ошибок сертификата: если он выдает ошибку, значит, это подделка.

Противодействие атаке канонизации

  • Если ЦС использует слабую криптографию, с этим нужно что-то делать. Прежде чем использовать этот ЦС, компания должна больше узнать о них и их политиках безопасности.
    Контрмеры против атаки канонизации:
    чтобы предотвратить эту атаку, необходимо принять стратегию глубокоэшелонированной защиты.
  • Политика безопасности на уровне инфраструктуры: DDoS-атакиявляются аспектом постоянной эскалации угроз безопасности и в настоящее время не являются основным направлением деятельности большинства организаций. Однако их часто можно предотвратить с помощью простых превентивных мер, таких как ограничение доступа к данным для IP-адресов, которые вошли в систему в течение заранее определенного периода времени, или с помощью брандмауэров на основе хоста и т. д.
  • Тестирование на проникновение также следует проводить на любом новом сервере после его установки. Это может предотвратить нераскрытие уязвимостей и т. д.

Несколько месяцев назад Билл Гейтс объявил, что безопасность станет приоритетом номер 1 в Microsoft. Несколько групп в Microsoft, такие как Trusted Computing Group и Secure Windows Initiative стремятся улучшить безопасность в продуктах Microsoft, и, в конечном счете, улучшить ситуацию для людей и корпораций во всем мире. Если Microsoft, с ее миллиардными ресурсами и многочисленным штатом сотрудников, имеет проблемы с безопасностью, то как же решать проблему создания доверенных систем?

Михаил
Разумов

Создание защищенных систем.

Несколько месяцев назад Билл Гейтс
объявил, что безопасность станет приоритетом номер 1 в Microsoft. Несколько
групп в Microsoft, такие как Trusted Computing Group и Secure Windows Initiative
стремятся улучшить безопасность в продуктах Microsoft, и, в конечном счете,
улучшить ситуацию для людей и корпораций во всем мире. Эта инициатива не удивительна,
принимая во внимание многочисленные уязвимости, найденные недавно в Windows
XP, Internet Information Server, Internet Explorer и Outlook. Из-за популярности
продуктов Microsoft и их значительной доли на рынке, уязвимости вызвали значительный
ущерб повсеместно в Интернет. Если Microsoft, с ее миллиардными ресурсами и
многочисленным штатом сотрудников, имеет все эти проблемы с безопасностью, то
как же решать проблему создания доверенных систем?

Как скажет вам любой хороший профессионал
по безопасности, невозможно создать полностью безошибочное и неуязвимое программное
обеспечение. Ресурсы и финансы, требуемые для создания такого программного обеспечения,
будут бесконечны. Основная идея в индустрии безопасности – уменьшение риска.
То есть, уменьшение риска до приемлемого уровня. Эта статья содержит краткий
обзор некоторых ключевых вопросов защищенного программирования. В ней показаны
некоторые типичные ошибки, совершаемые при создании программ, которые ведут
к их уязвимости. Далее представлен список рекомендаций, неукоснительное следование
которым поможет избежать 90% проблем безопасности. И, в завершение – список
ресурсов, которые помогут вам в задаче создания более защищенного программного
обеспечения.

Защищенное программирование. Типичные ошибки

Разработка защищенных программ –
процесс, требующий повышенного внимания на всех стадиях и уровнях. Это означает
строгие требования безопасности, отличное понимание проблем защищенности и наличие
группы оценки качества, которая может обнаруживать проблемы безопасности. Однако,
чтобы решить эту проблему, нужно много учиться, и даже при этом, нельзя решить
все проблемы безопасности одновременно. Существует пять основных проблем, которые
охватывают 90% уязвимостей программного обеспечения. Если вы учтете их, вы сможете
на порядок увеличить защищенность ваших программ.

Переполнение буфера

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

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

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

Одна хакерская группа, например,
в настоящее время исследует все расширения ISAPI в Microsoft IIS для определения условий переполнения
буфера. Они методично анализируют все расширения ISAPI с помощью дебаггера,
дизассемблера и специализированных хакерских программ, которые передают неожиданный
вызов на Web сервер. Программы Microsoft – любимая цель хакеров вследствие широкой
распространенности этих продуктов и непопулярности компании в определенных хакерских
кругах. Однако, все компании – разработчики программ подвержены этому риску.

Уязвимости форматной строки

Уязвимости форматной строки – новый
класс проблем безопасности, обнаруженный в последние пару лет. Форматные строки
– это программные конструкции, используемые в языках C и C++ для форматирования
ввода-вывода. Они содержат специальные идентификаторы (такие как %s для строк,
%d для целых чисел), которые, в случае использования в злонамеренном вводе,
могут открыть информацию о содержании стэка и используемых в функции переменных.
В частности, опасный идентификатор %n может использоваться для изменения данных
в памяти. Поскольку это позволяет хакерам делать почти то же, что и при переполнении
буфера, результаты одинаковы: запуск произвольного кода.

Первичная причина уязвимости форматной
строки в использовании функций переменного параметра в C/C++. Эту проблему можно
решить с помощью проверки на правильность ввода и поиска ошибок в коде. Также
можно использовать автоматические утилиты проверки кода для обнаружения ошибок
типа: printf (string); будет рекомендовано заменить на printf
(“%
s”, string).

Аутентификация

Аутентификация – наиболее важный
компонент в любой защищенной системе. Некорректная аутентификация пользователя
сделает все остальные функции безопасности, такие как шифрование, аудит и авторизация,
просто бесполезными. Наиболее типичная ошибка в аутентификации – использование
слабых мандатов (credentials), что позволяет хакеру применить метод грубой силы
(brute force), например, к взлому пароля. Кроме того, необходима строгая политика
паролей для уменьшения вероятности их взлома. Требования к составу пароля зависят
от уровня безопасности, требуемого приложением и его функциями. Обычно рекомендуется,
чтобы пароли были длиной минимум в 8 символов и включали буквы, цифры и спецсимволы.

Многие приложения, особенно Web-приложения,
используют аутентификаторы для определения зарегистрировавшегося пользователя.
Аутентификаторы – это как «билеты», которые выдаются после ввода пользователем аутентификационной информации. Эти «билеты» могут использоваться для проверки
подлинности в течение сессии вместо запроса имени пользователя и пароля. В Web-приложениях аутентификаторы часто сохраняются в куки (cookies). При создании приложения
важно убедиться, что аутентификаторы не подвержены атакам грубой силы или предсказания.

Авторизация

Авторизация – это процесс разрешения
или запрета доступа к определенному ресурсу, основанный на идентификации аутентификационной
информации. Уязвимости авторизации являются типичными проблемами во многих приложениях.
Наиболее частые ошибки:

  • Авторизация проведена
    некорректно.
    Интерфейс обеспечивает доступ к ресурсу до тех пор, пока
    обеспечивается аутентификация. Обычно, в этом случае требуется некий идентификатор,
    и предполагается, что он не может быть угадан или изменен. Например, в одном
    банковском Web-приложении Web-сервер устанавливал переменную в Javascript
    в номер аккаунта. Простым изменением этой переменной стало возможно просматривать
    и изменять другие аккаунты.
  • Слишком много доверия
    к пользовательскому вводу.
    Например, HTTP куки – это один из типов пользовательского
    ввода в Web-приложение, который может быть изменен. Если приложение осуществляет
    авторизацию с помощью куки, оно может довериться фальсифицированной информации.
    Это может быть или имя пользователя, или запрашиваемый ресурс. Например, при
    испытании одного приложения была найдена переменная в куки с именем “admin”.
    Если она устанавливалась в “true”, приложение предоставляло нелегитимному
    пользователю администраторские права.
  • Ошибки канонизации.
    Часто приложения принимают решения об авторизации на основе аутентификационной
    информации и запрошенных ресурсов. Многие уязвимости безопасности относятся
    к ошибкам канонизации в имени ресурса. Например, хотя приложение может запретить
    доступ к securesecret.txt, оно может дать доступ
    к public..securesecret.txt на основании имени директории. Кодировки
    в Юникод и в шестнадцатеричном формате относятся к той же категории.

Криптография

Если криптография производится
в приложении, чувствительность данных очень высока. Опытных программистов, имеющих
полное математическое понимание криптографических алгоритмов, как это ни странно
и печально, очень мало. Одна ошибка в разработке криптографического алгоритма
или его реализации может полностью подорвать защищенность приложения. Многие
программы используют алгоритмы промышленного стандарта, такие как RSA или blowfish,
но не некорректно работают с памятью, что оставляет возможным кражу пароля и
других данных в чистом виде. Очень рекомендуется использовать CryptoAPI и CAPICOM,
встроенные в операционные системы Windows, или купить библиотеки третьих лиц
для избежания проблем с использованием криптографии. Очень легко по ошибке попасть
в ловушку, считая, что данные «выглядят» зашифровано, и потому защищены.

Рекомендации для разработки защищенных программ

К этому моменту вы, если вы являетесь
разработчиком программ, уже можете задаться вопросом — при всех этих потенциальных
проблемах как мне определить, не имеет ли моя программа какие-то уязвимости?
Более того, если имеет, то как мне решить их? Ответ на первый вопрос прост.
Проведите аудиты и тесты безопасности и анализ кода для определения уязвимостей
безопасности в приложении. Ответ на второй вопрос гораздо сложнее. Создание
защищенного программного обеспечения является проблемой, которую пытались разрешить
многие люди в течение долгого времени. Вы не найдете здесь ответа, но найдете
список рекомендаций, которые, как мы ми говорили, помогут вам избежать 90% типичных
уязвимостей безопасности.

Не доверяйте пользовательскому вводу

Хакер зачастую атакует приложение
через его внешние интерфейсы. Примеры внешних интерфейсов: сокеты, Web-формы,
ввод командной строки, файлы и т.п. Многие эксплоиты посылают злонамеренные
входные данные, чтобы заставить приложение вести себя непредусмотренным образом,
например как при переполнении буфера. Хотя это и кажется легким, но распознавание
всего ввода не всегда может оказаться таким уж простым. Например, в Web-приложении
наиболее типичный пользовательский ввод – URI и данные для форм. Однако, хакер,
который не использует стандартный Web-броузер, может манипулировать HTTP заголовками,
куки, и скрытыми данными. Эти типы входных данных никогда не следует считать
содержащими безопасные данные.

Проверка правильности ввода

Необходимо разработать описание
достоверных данных для каждого ввода. Пример для случая аутентификации: имя
пользователя должно содержать буквы и цифры, быть длиной 6-20 символов, и пароль
должен содержать 6-20 печатаемых символов. Если клиент посылает переполнение
буфера более 20 символов, приложение должно отсоединить пользователя. Если производится
атака SQL injection, проверка запроса в приложении не должна пропустить его
к SQL серверу. Такое недоверие к пользовательскому воду в комбинации с хорошей
проверкой корректности ввода в корне предотвратит большинство атак. Ваше приложение
может иметь уязвимости SQL injection и переполнения буфера, но при правильной
проверке корректности ввода оно может стать невзламываемым для подобных атак.

«Магические» ключи

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

  • VCC /G – Visual Studio
    .NET имеет опцию /G, которая добавляет автоматическую проверку границ для
    предотвращения переполнения буфера. Имейте в виду, что существуют техники
    для обхода автоматической проверки границ. Тем не менее, это делает гораздо
    более сложным для хакеров взлом переполнением буфера и облегчает  для вас
    определение уязвимости.
  • midl /robust – Использование
    ключа /robust с компилятором midl дает жесткую проверку параметров в RPC приложениях.
  • DCOM encryption – Включает
    шифрование пакетов для DCOM приложений.
  • Avoid using Null DACLS
    – никогда не используйте NULL DACLS (Discretionary Access Control Lists) в
    приложении.

Ресурсы для написания защищенных программ

Утилиты

Здесь представлены утилиты, осуществляющие
автоматический анализ программного кода и определяющие недостатки в нем. Достоинство
автоматизированных утилит в том, что они требуют минимальной от вас работы.
Не самые опытные разработчики могут запустить эти утилиты, проанализировать
полученные результаты и исправить ошибки. Кроме того, каждая из перечисленных
ниже утилит имеет большую базу данных проблем защиты и могут распознать уязвимости,
о которых разработчик может и не подозревать. Автоматизированные утилиты могут
также анализировать огромное количество программного кода за небольшое время.
Но, как и с любой утилитой, необходимо знать их ограничения. Они производят
очень подробный вывод, с большим количеством ложных тревог, и необходимо много
времени, чтобы все это проанализировать. Кроме того, автоматизированные системы
прекрасно работают с проблемами типа переполнения буфера, но не прослеживают
логику вашей программы и не определяют, авторизован ресурс, или нет. Вообще,
уязвимости аутентификации и авторизации плохо поддаются автоматическому анализу.
Таким образом, рекомендуется использовать автоматизированные системы для поиска
уязвимостей, типа переполнения буфера или некорректного ввода. А затем уже передавать
исправленный код на проверку профессионалам безопасности для отслеживания проблем
аутентификации, авторизации и шифрования. Некоторые утилиты, которые могут помочь
вам в этом:

  • ITS4
  • RATS
  • Flawfinder

Заключение

Разработка защищеннго программного
обеспечения – непростая задача. Но, принимая во внимание количество атак сегодня,
было бы преступной халатностью не создавать защищенный от хакеров код. Затраты,
требуемые для создания защищенных программ, очень высоки. Тем не менее, обучая
программистов избегать типичных ошибок, проводя анализ безопасности кода и проверку
приложений на наличие ошибок безопасности, можно значительно улучшить код и
избавиться от большинства типичных на сегодняшний день уязвимостей.

What are canonicalisation attacks?

Unauthorised access of file and directories on the web server machine by tampering file/directory paths that a web site normally allows users to enter as part of its functionality. The attack is typically carried out by entering the path of the file in input field on a web page or by supplying it as part of the URL.

What are the consequences?

Loss of confidentiality, integrity and a denial of service results if files are deleted.

What files can the attacker access?

Any file or folder on the disk(s) of the web server m/c.

Defending applications against canonicalisation attacks

— Administrative Controls

  1. Ensure that the web server hosts on a secure file system like NTFS.
  2. Set ACL (access control lists) on files and folders. This can be done by setting appropriate permissions in the [Security] tab in the [Properties] tabpage of files and folders. Ensure that only administrators can access sensitive files and folders.
  3. Do not keep sensitive files, source code or any such material on the web server machine.
  4. Turn-off MS-DOS file name (8.3) convention on the machine by adding the following setting to the HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control FileSystem registry key: NtfsDisable8dot3NameCreation : REG_DWORD : 1.
    Note that this option does not remove previously generated 8.3 filenames.

— Programming Controls

1. White-list directories that you would like to have your application access rather than black-list them.

BAD WAY:
string InputFilePath = GetPathFromUser();
if ( InputFilePath = = "Secret Directory")
Output ("Access Denied")
CORRECT WAY:
string InputFilePath = GetPathFromUser();
if ( InputFilePath startsWith "Application-accessible Directory")
allow Further operations...
else
Output ("Access Denied")

2. If ACLs have been set (Point b in Administrative Controls, above) then turn on Integrated Windows Authentication (in IIS) and impersonate using the WindowsIdentity class in your .NET code.

3. Filter the user input path by subjecting it to MapPath in .NET. MapPath( ), according to MSDN, maps the virtual path in the requested URL to a physical path on the server . To prevent the path from mapping to a path in another application on the same server, set MapPath’s third parameter to false.

4. Use regular expressions to control the filefolders that can be accessed. This can be implemented in 1. above.

5. Reduce UTF-8 to its canonical form. UTF-8 text can be represented in multiple forms — guard against this.

What are canonicalisation attacks?

Unauthorised access of file and directories on the web server machine by tampering file/directory paths that a web site normally allows users to enter as part of its functionality. The attack is typically carried out by entering the path of the file in input field on a web page or by supplying it as part of the URL.

What are the consequences?

Loss of confidentiality, integrity and a denial of service results if files are deleted.

What files can the attacker access?

Any file or folder on the disk(s) of the web server m/c.

Defending applications against canonicalisation attacks

— Administrative Controls

  1. Ensure that the web server hosts on a secure file system like NTFS.
  2. Set ACL (access control lists) on files and folders. This can be done by setting appropriate permissions in the [Security] tab in the [Properties] tabpage of files and folders. Ensure that only administrators can access sensitive files and folders.
  3. Do not keep sensitive files, source code or any such material on the web server machine.
  4. Turn-off MS-DOS file name (8.3) convention on the machine by adding the following setting to the HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control FileSystem registry key: NtfsDisable8dot3NameCreation : REG_DWORD : 1.
    Note that this option does not remove previously generated 8.3 filenames.

— Programming Controls

1. White-list directories that you would like to have your application access rather than black-list them.

BAD WAY:
string InputFilePath = GetPathFromUser();
if ( InputFilePath = = "Secret Directory")
Output ("Access Denied")
CORRECT WAY:
string InputFilePath = GetPathFromUser();
if ( InputFilePath startsWith "Application-accessible Directory")
allow Further operations...
else
Output ("Access Denied")

2. If ACLs have been set (Point b in Administrative Controls, above) then turn on Integrated Windows Authentication (in IIS) and impersonate using the WindowsIdentity class in your .NET code.

3. Filter the user input path by subjecting it to MapPath in .NET. MapPath( ), according to MSDN, maps the virtual path in the requested URL to a physical path on the server . To prevent the path from mapping to a path in another application on the same server, set MapPath’s third parameter to false.

4. Use regular expressions to control the filefolders that can be accessed. This can be implemented in 1. above.

5. Reduce UTF-8 to its canonical form. UTF-8 text can be represented in multiple forms — guard against this.

A обход каталога (или обход пути ) заключается в использовании недостаточной проверки безопасности / очистки введенных пользователем имен входных файлов, так что символы, представляющие «переход в родительский каталог», передаются в файл API.

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

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

Содержание

  • 1 Пример
  • 2 Варианты обхода каталога
    • 2.1 Обход каталога в Unix
    • 2.2 Обход каталога в Microsoft Windows
    • 2.3 Обход каталога с кодировкой URI
    • 2.4 Unicode / UTF- 8 закодированный обход каталога
    • 2.5 Атаки обхода Zip / архива
  • 3 Возможные методы предотвращения обхода каталога
  • 4 См. Также
  • 5 Ссылки
  • 6 Ресурсы
  • 7 Внешние ссылки

Пример

Типичный пример уязвимого приложения в коде PHP :

Атака на эту систему может заключаться в отправке следующего HTTP-запроса:

GET /vulnerable.php HTTP / 1.0 Cookie: TEMPLATE =.. /.. /.. /.. /.. /.. /.. /.. /.. / etc / passwd

Создание ответа сервера, например:

HTTP / 1.0 200 OK Content-Type: text / html Сервер: корень Apache: fi3sED95ibqR6: 0: 1: Системный оператор: /: / bin / ksh daemon: *: 1: 1 :: / tmp: phpguru: f8fk3j1OIf31.: 182: 100: Разработчик: / home / users / phpguru /: / bin / csh

Повторяющиеся символы ../после / home / users / phpguru / templates /вызвали include() , чтобы перейти в корневой каталог, а затем включить файл паролей Unix / etc / passwd .

Unix / etc / passwd - это общий файл, используемый для демонстрации обхода каталога, поскольку он часто используется взломщиками, чтобы попытаться взломать пароли.

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

Варианты обхода каталога

Ниже перечислены некоторые известные строки атаки обхода каталога:

Обход каталога в Unix

Обычный Unix-подобный обход каталога использует символы ../. Sudo, повсеместно распространенная в Unix программа управления привилегиями, уязвима для этой атаки, когда пользователи используют подстановочный знак glob (например, chown / opt / myapp / myconfig / *может быть использован командой sudo chown baduser /opt/myapp/myconfig/../../../etc/passwd).

При обходе каталогов в Microsoft Windows

Microsoft Windows и DOS обход каталогов использует .. или ../последовательности символов.

Каждый раздел имеет отдельный корневой каталог (помеченный C: для определенного раздела C), и над ним нет общего корневого каталога. Это означает, что для большинства уязвимостей каталогов в Windows атака ограничивается одним разделом.

Этот вид атаки стал причиной многочисленных уязвимостей Microsoft.

Обход каталога с кодировкой URI

Проблема канонизации.

Некоторые веб-приложения сканируют строку запроса на наличие опасных символов, таких как:

  • ..
  • ..
  • ../

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

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

Обход каталога в кодировке Unicode / UTF-8

Проблема канонизации.

UTF-8 был отмечен как источник уязвимостей и векторов атак Брюсом Шнайером и Джеффри Стрейфлингом.

Когда Microsoft добавила поддержку Unicode в на их веб-сервере в их код был введен новый способ кодирования ../, что привело к тому, что их попытки предотвратить обход каталога были обойдены.

Множественные процентные кодировки, такие как

  • % c1% 1c
  • % c0% af

, переведенные в символы /или .

Процент кодировок был декодирован в соответствующие 8-битные символы веб-сервером Microsoft. Исторически это было правильным поведением, поскольку Windows и DOS традиционно использовали канонические 8-битные наборы символов на основе ASCII.

Однако исходный UTF-8 не было каноническим, и несколько строк теперь были строковыми кодировками, переводимыми в одну и ту же строку. Microsoft выполнила проверки на обход без UTF-8 канонизации, и поэтому не заметила, что (HEX ) C0AFи (HEX ) 2Fбыли тот же символ при выполнении сравнения строки. Также использовались искаженные процентные кодировки, такие как % c0% 9v.

Атаки обхода Zip / архивов

Использование форматов архивов, таких как zip, допускает атаки обхода каталогов: файлы в архиве могут быть записаны таким образом, что они перезаписывают файлы в файловой системе путем отслеживания с возвратом. Код, распаковывающий файлы архива, может быть написано для проверки того, что пути к файлам в архиве не участвуют в обходе пути.

Возможные методы предотвращения обхода каталогов

Возможный алгоритм предотвращения обхода каталогов:

  1. Обработайте запросы URI, которые не приводят к запросу файла, например, выполнение перехвата в коде пользователя, прежде чем продолжить ниже.
  2. Когда должен быть выполнен запрос URI для файла / каталога, создайте полный путь к файлу / каталогу, если он существует, и нормализовать все символы (например, % 20преобразованы в пробелы).
  3. Предполагается, что 'Document Root' полностью определен, нормализован, путь известен, и эта строка имеет длину N. Предположим, что файлы вне этого каталога не могут обслуживаться.
  4. Убедитесь, что первые N символов полного пути к запрошенному файлу в точности совпадают с 'Document Root'.
  5. Если да, разрешить возврат файла.
  6. Если нет, вернуть ошибку, так как запрос явно выходит за границы того, чем должен быть веб-сервер разрешено обслуживать.
  7. Использование жестко запрограммированного предопределенного расширения файла в качестве суффикса пути не ограничивает масштаб атаки файлами с этим расширением файла.

Пользователь может использовать символ NULL (обозначающий конец строки), чтобы обойти все, что находится после $ _GET. (Это специфично для PHP.)

См. Также

  • Chroot-тюрьмы могут подвергаться обходу каталогов, если chroot-тюрьма создана неправильно. Возможные векторы атаки обхода каталогов - открытые файловые дескрипторы для каталогов вне тюрьмы. рабочий каталог - еще один возможный вектор атаки.

Ссылки

Ресурсы

  • Открытый проект безопасности веб-приложений
  • Классификация угроз WASC - обход пути
  • Уязвимость обхода пути Эксплуатация и исправление
  • Перечисление общих слабых мест CWE - обход пути

Внешние ссылки

  • ИНСТРУМЕНТЫ: DotDotPwn - фаззер обхода каталогов - [1]
  • Обвинение в использовании обхода каталогов. [2 ] [3]
  • Ошибка: удаленное выполнение команды IIS% c1% 1c
  • Информационный бюллетень Cryptogram, июль 2001 г. [4].

Отчет по уязвимостям с 13 по 19 августа

Еженедельный отчет содержит описания шести уязвимостей и одного эксплоита в наиболее распространенных приложениях и операционных системах.

 FreeBSD 

Уязвимость в операционной системе позволяет удаленному пользователю вызвать отказ в обслуживании.

Уязвимость существует из-за ошибки разыменования нулевого указателя при обработке ASCONF частей. Удаленный пользователь может с помощью SCTP пакета, содержащего специально сформированный тег подтверждения вызвать панику ядра системы.

Ссылка на эксплоит для данной уязвимости приведена в конце обзора.

Ссылка на сайт разработчика:  www.freebsd.org

Версии:  FreeBSD 8.1

Опасность: высокая, возможна удаленная эксплуатация уязвимости

Операционные системы: FreeBSD

ID в базе CVE:  

Решение: Способов устранения уязвимости не существует в настоящее время..

Apple Safari

Обнаружены множественные уязвимости в браузере, которые позволяют удаленному пользователю выполнить произвольный код на целевой системе.

1. Уязвимость существует из-за ошибки при обработке URL адресов «feed:». Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта.

2. Уязвимость существует из-за ошибки при обработке URL адресов «feed:». Удаленный пользователь может с помощью специально сформированной web-страницы загрузить на сервер произвольные файлы.

3. Уязвимость существует из-за ошибки в функции автоматического заполнения. Удаленный пользователь может обойти атрибут и автоматически заполнить пароли.

4. Уязвимость существует из-за ошибки при обработке HTTP заголовка «Content-Disposition». Удаленный пользователь может вызвать открытие вложения без диалогового окна подтверждения и осуществить атаку межсайтового скриптинга.

5. Компонент WebKit содержит множество уязвимостей.

6. Уязвимость существует из-за множественных ошибок в компоненте WebKit. Удаленный пользователь может выполнить произвольный код на целевой системе.

7. Уязвимость существует из-за ошибки политики единства происхождения в компоненте WebKit при обработке событий drag and drop. Удаленный пользователь может обойти политику единства происхождения и раскрыть определенные данные, обманным путем заставив пользователя посетить вредоносный сайт.

8. Уязвимость существует из-за ошибки политики единства происхождения в компоненте WebKit при обработке событий drag and drop. Удаленный пользователь может обойти политику единства происхождения и раскрыть определенные данные, обманным путем заставив пользователя посетить вредоносный сайт.

9. Уязвимость существует из-за ошибки политики единства происхождения при обработке значений CSS свойства. Удаленный пользователь может обойти политику единства происхождения и раскрыть определенные данные, обманным путем заставив пользователя посетить вредоносный сайт.

10. Уязвимость существует из-за ошибки политики единства происхождения при работе со всплывающими окнами. Более подробная информация об уязвимости доступна по адресу.

http://www.securitylab.ru/vulnerability/422838.php, №8

11. Уязвимость существует из-за ошибки политики единства происхождения. Удаленный пользователь может раскрыть ID фрагмента iFrame. Более подробная информация об уязвимости доступна по адресу.

http://www.securitylab.ru/vulnerability/426316.php, №1

12. Уязвимость существует из-за ошибки в функции поддержки Domain Name (IDN). Удаленный пользователь может подменить URL и обманом заставить пользователя посетить вредоносный сайт. Более подробная информация об уязвимости доступна по адресу.

http://www.securitylab.ru/vulnerability/421449.php, №1

13. Уязвимость существует из-за ошибки в компоненте WebKit при обработке событий drag and drop. Уделанный пользователь может раскрыть путь файловой системы к определенным файлам.

14. Уязвимость существует из-за ошибки канонизации при обработке URL. Удаленный пользователь может с помощью специально сформированного свойства location.hrefс осуществить атаку межсайтового скриптинга.

15. Уязвимость существует из-за ошибки при обработке WebSocket. Удаленный пользователь может осуществить атаку расщепления HTTP атак.

16. Уязвимость существует из-за ошибки при обработке истории. Удаленный пользователь может подменить URL строку. Более подробная информация об уязвимости доступна по адресу.

http://www.securitylab.ru/vulnerability/409071.php, №1

17. Уязвимость существует из-за ошибки в WebProcess. Удаленный пользователь может обойти ограничения песочницы.

18. Уязвимость существует из-за ошибки при обработке SVG изображений. Удаленный пользователь может раскрыть содержимое произвольных ячеек памяти..

Ссылка на сайт разработчика:     http://support.apple.com/kb/HT5400

Версии: Apple Safari 5.x

Опасность: критическая, возможна удаленная эксплуатация уязвимости

Операционные системы:  

ID в базе CVE: CVE-2011-2845 CVE-2011-3016 CVE-2011-3021 CVE-2011-3027 CVE-2011-3032 CVE-2011-3034 CVE-2011-3035 CVE-2011-3036 CVE-2011-3037 CVE-2011-3038 CVE-2011-3039 CVE-2011-3040 CVE-2011-3041 CVE-2011-3042 CVE-2011-3043 CVE-2011-3044 CVE-2011-3050 CVE-2011-3053 CVE-2011-3059 CVE-2011-3060 CVE-2011-3064 CVE-2011-3067 CVE-2011-3068 CVE-2011-3069 CVE-2011-3071 CVE-2011-3073 CVE-2011-3074 CVE-2011-3075 CVE-2011-3076 CVE-2011-3078 CVE-2011-3081 CVE-2011-3086 CVE-2011-3089 CVE-2011-3090 CVE-2011-3426 CVE-2011-3913 CVE-2011-3924
CVE-2011-3926 CVE-2011-3958 CVE-2011-3966 CVE-2011-3968 CVE-2011-3969 CVE-2011-3971 CVE-2012-0678 CVE-2012-0679 CVE-2012-0680 CVE-2012-0682 CVE-2012-0683 CVE-2012-1520 CVE-2012-1521 CVE-2012-2815 CVE-2012-3589 CVE-2012-3590 CVE-2012-3591 CVE-2012-3592 CVE-2012-3593 CVE-2012-3594 CVE-2012-3595 CVE-2012-3596 CVE-2012-3597 CVE-2012-3599 CVE-2012-3600 CVE-2012-3603 CVE-2012-3604 CVE-2012-3605 CVE-2012-3608 CVE-2012-3609 CVE-2012-3610 CVE-2012-3611 CVE-2012-3615 CVE-2012-3618 CVE-2012-3620 CVE-2012-3625 CVE-2012-3626 CVE-2012-3627
CVE-2012-3628 CVE-2012-3629 CVE-2012-3630 CVE-2012-3631 CVE-2012-3633 CVE-2012-3634 CVE-2012-3635 CVE-2012-3636

Решение: Установить обновления с сайта производителя

Microsoft Widows RDP

Из-за ошибки в Remote Desktop Services при обработке некоторых объектов, удаленный пользователь может с помощью специально сформированного RDP пакета заставить приложение обратиться к ранее удаленному объекту и выполнить произвольный код на целевой системе.

Ссылка на сайт разработчика:    

http://www.microsoft.com/downloads/details.aspx?familyid=ccc3d8fb-2631-42d0-87ed-5d29d4b1f598

Версии:

Опасность: критическая, возможна удаленная эксплуатация уязвимости

Операционные системы:   Windows XP

ID в базе CVE:  CVE-2012-2526  

Решение: Установить соответствующее обновление с сайта производителя

Microsoft Internet Explorer

Обнаруженные уязвимости позволяют удаленному пользователю выполнить произвольный код на целевой системе.

1. Уязвимость существует из-за ошибки в обработке разметки при получении доступа к некорректно инициированному или удаленному объекту. Удаленный пользователь может вызвать повреждение памяти и выполнить произвольный код на целевой системе.

2. Уязвимость существует из-за ошибки использования после освобождения при асинхронном получении доступа к нулевым объектам. Удаленный пользователь может вызвать разыменование уже удаленного объекта и выполнить произвольный код на целевой системе.

3. Уязвимость существует из-за ошибки при подключении к поврежденной виртуальной функции, которая была удалена. Удаленный пользователь может вызвать повреждение памяти и выполнить произвольный код на целевой системе.

4. Уязвимость существует из-за ошибки целочисленного переполнения при обработке JavaScript при расчете размера объекта в памяти во время операции копирования. Удаленный пользователь может вызвать повреждение памяти в выполнить произвольный код на целевой системе..

Ссылки на сайт разработчика:  MS12-052: Cumulative Security Update for Internet Explorer (2722913)

Опасность: критическая, возможна удаленная эксплуатация уязвимости

Операционные системы:  Windows (Any)

ID в базе CVE:  CVE-2012-1526

CVE-2012-2521

CVE-2012-2522

CVE-2012-2523

Решение: Установить соответствующее обновление с сайта производителя  

Microsoft Visio

Уязвимость позволяет удаленному пользователю выполнить произвольный код на целевой системе.

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

Ссылки на сайт разработчика:   MS12-059: Vulnerability in Microsoft Visio Could Allow Remote Code Execution (2733918)

Версии: Microsoft Visio 2010
Microsoft Visio 2010 Viewer 14.x

Опасность: высокая

Операционные системы:   Windows

ID в базе CVE:  CVE-2012-1888

Решение: Установить соответствующее обновление с сайта производителя  

Adobe Flash Player

Из-за неизвестной ошибки, удаленный пользователь может скомпрометировать целевую систему.

Уязвимость активно эксплуатируется в настоящее время.

Ссылки на сайт разработчика:   
http://www.adobe.com/support/security/bulletins/apsb12-18.html

Версии:  Adobe Flash Player 11.x

Опасность: критическая, возможна удаленная эксплуатация уязвимости

Операционные системы: 

ID в базе CVE:  CVE-2012-1535

Решение: Установить соответствующее обновление с сайта производителя  

Эксплоит для FreeBSD

Ссылка на исходный код эксплоита: http://www.exploit-db.com/exploits/20226/.

Использованные источники:

  1. Securitytracker.com
  2. Securitylab.ru
  3. www.exploit-db.com

What are canonicalisation attacks?

Unauthorised access of file and directories on the web server machine by tampering file/directory paths that a web site normally allows users to enter as part of its functionality. The attack is typically carried out by entering the path of the file in input field on a web page or by supplying it as part of the URL.

What are the consequences?

Loss of confidentiality, integrity and a denial of service results if files are deleted.

What files can the attacker access?

Any file or folder on the disk(s) of the web server m/c.

Defending applications against canonicalisation attacks

— Administrative Controls

  1. Ensure that the web server hosts on a secure file system like NTFS.
  2. Set ACL (access control lists) on files and folders. This can be done by setting appropriate permissions in the [Security] tab in the [Properties] tabpage of files and folders. Ensure that only administrators can access sensitive files and folders.
  3. Do not keep sensitive files, source code or any such material on the web server machine.
  4. Turn-off MS-DOS file name (8.3) convention on the machine by adding the following setting to the HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control FileSystem registry key: NtfsDisable8dot3NameCreation : REG_DWORD : 1.
    Note that this option does not remove previously generated 8.3 filenames.

— Programming Controls

1. White-list directories that you would like to have your application access rather than black-list them.

BAD WAY:
string InputFilePath = GetPathFromUser();
if ( InputFilePath = = "Secret Directory")
Output ("Access Denied")
CORRECT WAY:
string InputFilePath = GetPathFromUser();
if ( InputFilePath startsWith "Application-accessible Directory")
allow Further operations...
else
Output ("Access Denied")

2. If ACLs have been set (Point b in Administrative Controls, above) then turn on Integrated Windows Authentication (in IIS) and impersonate using the WindowsIdentity class in your .NET code.

3. Filter the user input path by subjecting it to MapPath in .NET. MapPath( ), according to MSDN, maps the virtual path in the requested URL to a physical path on the server . To prevent the path from mapping to a path in another application on the same server, set MapPath’s third parameter to false.

4. Use regular expressions to control the filefolders that can be accessed. This can be implemented in 1. above.

5. Reduce UTF-8 to its canonical form. UTF-8 text can be represented in multiple forms — guard against this.

A обход каталога (или обход пути ) заключается в использовании недостаточной проверки безопасности / очистки введенных пользователем имен входных файлов, так что символы, представляющие «переход в родительский каталог», передаются в файл API.

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

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

Содержание

  • 1 Пример
  • 2 Варианты обхода каталога
    • 2.1 Обход каталога в Unix
    • 2.2 Обход каталога в Microsoft Windows
    • 2.3 Обход каталога с кодировкой URI
    • 2.4 Unicode / UTF- 8 закодированный обход каталога
    • 2.5 Атаки обхода Zip / архива
  • 3 Возможные методы предотвращения обхода каталога
  • 4 См. Также
  • 5 Ссылки
  • 6 Ресурсы
  • 7 Внешние ссылки

Пример

Типичный пример уязвимого приложения в коде PHP :

Атака на эту систему может заключаться в отправке следующего HTTP-запроса:

GET /vulnerable.php HTTP / 1.0 Cookie: TEMPLATE =.. /.. /.. /.. /.. /.. /.. /.. /.. / etc / passwd

Создание ответа сервера, например:

HTTP / 1.0 200 OK Content-Type: text / html Сервер: корень Apache: fi3sED95ibqR6: 0: 1: Системный оператор: /: / bin / ksh daemon: *: 1: 1 :: / tmp: phpguru: f8fk3j1OIf31.: 182: 100: Разработчик: / home / users / phpguru /: / bin / csh

Повторяющиеся символы ../после / home / users / phpguru / templates /вызвали include() , чтобы перейти в корневой каталог, а затем включить файл паролей Unix / etc / passwd .

Unix / etc / passwd - это общий файл, используемый для демонстрации обхода каталога, поскольку он часто используется взломщиками, чтобы попытаться взломать пароли.

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

Варианты обхода каталога

Ниже перечислены некоторые известные строки атаки обхода каталога:

Обход каталога в Unix

Обычный Unix-подобный обход каталога использует символы ../. Sudo, повсеместно распространенная в Unix программа управления привилегиями, уязвима для этой атаки, когда пользователи используют подстановочный знак glob (например, chown / opt / myapp / myconfig / *может быть использован командой sudo chown baduser /opt/myapp/myconfig/../../../etc/passwd).

При обходе каталогов в Microsoft Windows

Microsoft Windows и DOS обход каталогов использует .. или ../последовательности символов.

Каждый раздел имеет отдельный корневой каталог (помеченный C: для определенного раздела C), и над ним нет общего корневого каталога. Это означает, что для большинства уязвимостей каталогов в Windows атака ограничивается одним разделом.

Этот вид атаки стал причиной многочисленных уязвимостей Microsoft.

Обход каталога с кодировкой URI

Проблема канонизации.

Некоторые веб-приложения сканируют строку запроса на наличие опасных символов, таких как:

  • ..
  • ..
  • ../

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

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

Обход каталога в кодировке Unicode / UTF-8

Проблема канонизации.

UTF-8 был отмечен как источник уязвимостей и векторов атак Брюсом Шнайером и Джеффри Стрейфлингом.

Когда Microsoft добавила поддержку Unicode в на их веб-сервере в их код был введен новый способ кодирования ../, что привело к тому, что их попытки предотвратить обход каталога были обойдены.

Множественные процентные кодировки, такие как

  • % c1% 1c
  • % c0% af

, переведенные в символы /или .

Процент кодировок был декодирован в соответствующие 8-битные символы веб-сервером Microsoft. Исторически это было правильным поведением, поскольку Windows и DOS традиционно использовали канонические 8-битные наборы символов на основе ASCII.

Однако исходный UTF-8 не было каноническим, и несколько строк теперь были строковыми кодировками, переводимыми в одну и ту же строку. Microsoft выполнила проверки на обход без UTF-8 канонизации, и поэтому не заметила, что (HEX ) C0AFи (HEX ) 2Fбыли тот же символ при выполнении сравнения строки. Также использовались искаженные процентные кодировки, такие как % c0% 9v.

Атаки обхода Zip / архивов

Использование форматов архивов, таких как zip, допускает атаки обхода каталогов: файлы в архиве могут быть записаны таким образом, что они перезаписывают файлы в файловой системе путем отслеживания с возвратом. Код, распаковывающий файлы архива, может быть написано для проверки того, что пути к файлам в архиве не участвуют в обходе пути.

Возможные методы предотвращения обхода каталогов

Возможный алгоритм предотвращения обхода каталогов:

  1. Обработайте запросы URI, которые не приводят к запросу файла, например, выполнение перехвата в коде пользователя, прежде чем продолжить ниже.
  2. Когда должен быть выполнен запрос URI для файла / каталога, создайте полный путь к файлу / каталогу, если он существует, и нормализовать все символы (например, % 20преобразованы в пробелы).
  3. Предполагается, что 'Document Root' полностью определен, нормализован, путь известен, и эта строка имеет длину N. Предположим, что файлы вне этого каталога не могут обслуживаться.
  4. Убедитесь, что первые N символов полного пути к запрошенному файлу в точности совпадают с 'Document Root'.
  5. Если да, разрешить возврат файла.
  6. Если нет, вернуть ошибку, так как запрос явно выходит за границы того, чем должен быть веб-сервер разрешено обслуживать.
  7. Использование жестко запрограммированного предопределенного расширения файла в качестве суффикса пути не ограничивает масштаб атаки файлами с этим расширением файла.

Пользователь может использовать символ NULL (обозначающий конец строки), чтобы обойти все, что находится после $ _GET. (Это специфично для PHP.)

См. Также

  • Chroot-тюрьмы могут подвергаться обходу каталогов, если chroot-тюрьма создана неправильно. Возможные векторы атаки обхода каталогов - открытые файловые дескрипторы для каталогов вне тюрьмы. рабочий каталог - еще один возможный вектор атаки.

Ссылки

Ресурсы

  • Открытый проект безопасности веб-приложений
  • Классификация угроз WASC - обход пути
  • Уязвимость обхода пути Эксплуатация и исправление
  • Перечисление общих слабых мест CWE - обход пути

Внешние ссылки

  • ИНСТРУМЕНТЫ: DotDotPwn - фаззер обхода каталогов - [1]
  • Обвинение в использовании обхода каталогов. [2 ] [3]
  • Ошибка: удаленное выполнение команды IIS% c1% 1c
  • Информационный бюллетень Cryptogram, июль 2001 г. [4].

Реализовать простое приложение с графическим интерфейсом, удовлетворяющее следующим требованиям:
1) Приложение проводит аутентификацию пользователя.
2) Каждый пользователь программы должен относиться к какой-нибудь группе пользователей (роли), членам которой доступны различные функциональные возможности программы.
3) Программа должна принимать от пользователя некоторые данные и, возможно, после некоторой обработки, отображать их.
4) При этом должна осуществляться защита от как минимум 4 типов возможных атак на приложение:
4.1) Атака «переполнение буфера».
4.2) Атака «SQL-инъекции».
4.3) Атака, эксплуатирующая ошибки канонизации.
4.4) Атака «XSS» (межсайтовое кодирование).
4.5) Принцип минимизации привилегий.
4.6) DoS-атака (отказ в обслуживании).
При разработке защиты нужно предположить, что приложение работает с базой данных, в которой сохраняет введённые пользователем данные.
Желательно использование популярных объектно-ориентированных языков программирования (C++, Java, Python…). Комментируйте код где считаете нужным.

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

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Атака пришельцев ошибок скачать
  • Ата ошибка коммуникации скания
  • Ата 152 скания ошибка
  • Аська произошла ошибка попробуйте позже

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии