Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2017-0037 — Технический анализ CVE-2017-0037, уязвимости повреждения памяти в браузере Microsoft, позволяющей удалённое выполнение кода из-за путаницы типов при обработке CSS/JS, с деталями PoC-эксплойта и стратегиями смягчения. | Kitploit
Инструменты/GitHubGitHub/chattopadhyaykittu/cve-2017-0037
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubchattopadhyaykittu/cve-2017-0037

CVE-2017-0037

Технический анализ CVE-2017-0037, уязвимости повреждения памяти в браузере Microsoft, позволяющей удалённое выполнение кода из-за путаницы типов при обработке CSS/JS, с деталями PoC-эксплойта и стратегиями смягчения.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
4 лет назадЕщё не проверено

CVE-2017-0037 (Уязвимость повреждения памяти браузера Microsoft)

Этот документ посвящен CVE-2017-0037 — уязвимости повреждения памяти браузера Microsoft. Сначала будет рассказано, что такое удаленное выполнение кода (RCE), а затем рассмотрены некоторые технические детали.

Что такое удаленное выполнение кода?

Кибератака, при которой злоумышленник может удаленно выполнять команды на другом компьютере, называется удаленным выполнением кода. Удаленные выполнения кода (RCE) чаще всего вызываются вредоносным программным обеспечением, загруженным хостом, и могут происходить независимо от местоположения системы.

Для достижения RCE могут использоваться следующие способы:

  1. Атаки внедрения: Здесь злоумышленник предоставляет ошибочные входные данные с намерением, чтобы часть из них была обработана как часть команды.

  2. Атаки десериализации: Программа десериализации может читать тщательно сформулированные пользовательские входные данные в сериализованных данных как исполняемый код.

  3. Запись за пределами выделенной области: Если распределение памяти выполнено плохо, злоумышленник может создать входные данные, выходящие за пределы выделенного буфера. Поскольку исполняемый код также хранится в памяти, программа может выполнить предоставленные пользователем данные, если они записаны в правильное место.

  4. Атака путаницы типов: Существует угроза путаницы типов, когда исходный код не предпринимает никаких действий для проверки подлинности сущности, которая ему передается. Поскольку путаница типов позволяет хакеру протащить код, который может выполнять произвольные инструкции, просто вызывая несоответствие типов объектов, это рискованно.

Выполнение атаки RCE

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

Язык целевого приложения часто используется для внедрения кода. Затем язык выполняется серверным процессором. Python, Java, Perl, Ruby и PHP — распространенные языки программирования. Внедрение кода часто встречается на платформах, которые сразу анализируют непроверенные входные данные. Действительно, публичные веб-приложения являются основной целью для хакеров.

Вредоносный скрипт обычно выполняется bash-скриптами. Bash-скрипт — это текстовый документ, содержащий команды, которые обычно вводятся в командную строку. Bash-скрипты обеспечивают правильное выполнение включенных команд. К ним принято добавлять расширение ".sh", хотя это не требуется. После упаковки хакер помещает код в уязвимое приложение, которое затем его выполняет. Приложение также может передать решение ядру для его выполнения.

Метрики атаки

Следующее изображение фокусируется на базовых метриках оценки CVE-2017-0037.

Alt text

Источник

Оценка CVSS здесь составляет 8.1 (высокая).

Вектор атаки — уязвимый компонент здесь привязан к сетевому стеку, а диапазон потенциальных хакеров включает все, от других указанных альтернатив до всего Интернета.

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

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

Целостность высокая, что означает серьезную потерю целостности и защиты.

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

Детали атаки

Уязвимость CVE-2017-0037 была ошибкой путаницы типов, которая находилась в Microsoft Edge и Internet Explorer 10 и 11. Она позволяла злоумышленникам удаленно выполнять код на целевой машине, когда пользователь посещал вредоносный веб-сайт.

На ошибку указал исследователь Google Иван Франтик, и подробности уязвимости были опубликованы Google, поскольку Microsoft не смогла исправить ее в течение своего 90-дневного периода раскрытия.

Alt text

Источник

Эксплойт proof-of-concept (PoC), опубликованный исследователем, показывает, что он может аварийно завершить Edge и IE, позволяя злоумышленнику удаленно выполнить код и получить привилегии администратора скомпрометированной системы. Он также подтвердил, что атака сработала на 64-битной версии Internet Explorer на Windows Server 2012 R2 и затронула 32-битный IE 11, а также Microsoft Edge.

Путаница типов находится в функции

Layout::MultiColumnBoxBuilder::HandleColumnBreakOnColumnSpanningElemnt в mshtml.dll. Атака может произойти путем удаленного выполнения произвольного кода через векторы, включающие последовательность токенов Каскадных таблиц стилей (CSS) и созданный код JavaScript, который работает с элементом TH.

PoC от Ивана Франтика из Google Project Zero

Alt text

Источник

Как заявил исследователь Иван Франтик, PoC аварийно завершается в

MSHTML!Layout::MultiColumnBoxBuilder::HandleColumnBreakOnColumnSpanningElement при чтении из адреса 0000007800000070.

Alt text

Источник

Alt text

Источник

Анализируя код вокруг точки сбоя, можно заметить, что по адресу памяти 00007ffe`8f330a51 содержимое из регистра rbp считывается в регистр rcx. Затем вызов

MSHTML!Layout::Patchable<Layout::PatchableArrayData<Layout::MultiColumnBox::SMultiColumnBoxItem> >::Readable присваивает значение rax (это назначенный регистр для хранения возвращаемых значений функций).

Хотя rcx должен указывать на другой тип объекта, но в PoC, как показано выше, он указывает на массив 32-битных целых чисел, выделенных в Array<Math::SLayoutMeasure>::Create. Смещения столбцов таблицы хранятся в этом массиве, и злоумышленник может получить над ним контроль. Сбой происходит по адресу 00007ffe`8f330a59, так как rax указывает на неинициализированную память. rax хранит возвращаемое значение функции

MSHTML!Layout::Patchable<Layout::PatchableArrayData<Layout::MultiColumnBox::SMultiColumnBoxItem> >::Readable, которая не является инициализированным адресом памяти. Злоумышленник может направить rax на какое-то место в памяти, которым он может управлять. Злоумышленник может изменить свойства таблицы, такие как border-spacing и ширину первого элемента TH, чтобы получить контроль над rax.

Alt text

Источник

Если злоумышленник сможет получить контроль над rax в строке 00007ffe`8f330a59, функция

MSHTML!Layout::Patchable<Layout::PatchableArrayData<Layout::MultiColumnBox::SMultiColumnBoxItem> >::Readable вызывается снова в строке 00007ffe`8f330a5d 743d с теми же аргументами и переходом на более высокий адрес. После этого, через серию различий, начинающихся с rax, может быть получен указатель на функцию и сохранен в rdi. Если злоумышленник сможет пройти проверку CFG для этого указателя на функцию, то управляемый злоумышленником указатель на функцию будет вызван в строке 00007ffe`8f330a80.

Вероятное исправление ошибки

Как предложил Иван Франтик, сначала необходимо обнаружить причину возникновения путаницы типов. Согласно его гипотезе, в DOM существуют два типа столбцов: столбцы HTML-таблиц и столбцы CSS, и IE/Edge путали их. Таким образом, если бы где-то в уязвимую функцию была добавлена проверка типа, это могло бы решить проблему.

Полезные ссылки

  • Ошибка, сообщенная Иваном Франтиком
  • Уязвимость повреждения памяти браузера Microsoft

Последствия атаки RCE

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

  2. Раскрытие информации: Атаки RCE помогают установить вредоносное ПО для кражи информации или выполнять команды, собирающие и крадущие данные с затронутого устройства.

  3. Отказ в обслуживании: Уязвимость RCE позволяет хакерам выполнять код на машине, на которой работает уязвимое приложение, и, таким образом, нарушать его работу и работу других программ в системе.

  4. Майнинг криптовалют: Вредоносное ПО для майнинга криптовалют часто развертывается и выполняется на уязвимых устройствах.

  5. Программы-вымогатели: Программа-вымогатель — это тип программного обеспечения, которое блокирует доступ пользователя к его файлам, если он не заплатит деньги.

Способы смягчения атак RCE

  1. Для смягчения атак RCE можно использовать контроль переполнения буфера.

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

  3. Сетевой трафик должен контролироваться на наличие потенциально вредоносного содержимого в дополнение к мониторингу конечных точек.

  4. Использование очистки входных данных — процесса очистки и фильтрации входных данных от пользователя для защиты от их использования для эксплуатации уязвимостей безопасности.

Ссылки

  • https://msrc.microsoft.com/update-guide/vulnerability/CVE-2017-0037
  • https://www.checkpoint.com/cyber-hub/cyber-security/what-is-remote-code-execution-rce/#:~:text=In%20an%20injection%20attack%2C%20the%20attacker%20deliberately%20provides%20malformed%20input%20that%20causes%20part%20of%20their%20input%20to%20be%20interpreted%20as%20part%20of%20the%20command
  • https://www.bugcrowd.com/glossary/remote-code-execution-rce/
  • https://nvd.nist.gov/vuln/detail/CVE-2017-0037
  • https://bugs.chromium.org/p/project-zero/issues/detail?id=1011
  • https://blog.0patch.com/2017/03/0patching-another-0-day-internet.html
  • https://www.cs.uaf.edu/2017/fall/cs301/lecture/09_11_registers.html
  • https://reverseengineering.stackexchange.com/questions/10746/what-does-mov-qword-ptr-dsrax18-r8-mean
Скачать инструмент