Jump to content

В^Х

W^X («запись xor выполнение», произносится как W xor X ) — функция безопасности в операционных системах и виртуальных машинах . Это памяти политика защиты , согласно которой каждая страница в процесса или ядра адресном пространстве может быть либо доступной для записи, либо исполняемой , но не тем и другим одновременно. Без такой защиты программа может записывать (как данные «W») инструкции ЦП в область памяти, предназначенную для данных, а затем запускать (как исполняемый файл «X»; или читать-выполнять «RX») эти инструкции. Это может быть опасно, если автор памяти злонамерен. W^X — это Unix-подобная терминология для строгого использования общей концепции защиты исполняемого пространства , управляемой через mprotect системный вызов.

W^X относительно прост на процессорных архитектурах , поддерживающих детальные разрешения страниц, таких как AMD от SPARC и SPARC64 от Sun, - PA , RISC Packard Hewlett от , HP (первоначально x86-64 - ) Альфа и ARM .

Термин W^X также применялся к разрешениям на запись/выполнение файловой системы для уменьшения уязвимостей записи файлов (например, в памяти) и устойчивости злоумышленников. [ 1 ] Обеспечение ограничений прав доступа к файлам также может устранить пробелы в применении W^X, вызванные файлами, отображенными в памяти. [ 2 ] [ 3 ] Полный запрет на использование произвольного собственного кода также может уменьшить уязвимости ядра и ЦП, не выявленные через существующий код на компьютере. [ 4 ] Менее интрузивный подход — заблокировать файл на время любого сопоставления с исполняемой памятью, чего достаточно для предотвращения обходов после проверки.

Совместимость

[ редактировать ]

В некоторых ранних процессорах Intel 64 отсутствовал бит NX, необходимый для W^X, но он появился в более поздних чипах. На более ограниченных процессорах, таких как Intel i386 , W^X требует использования ограничения сегмента кода CS в качестве « линии на песке », точки в адресном пространстве, выше которой выполнение не разрешено и расположены данные, а ниже которой разрешено и размещаются исполняемые страницы. Эта схема использовалась в Exec Shield . [ 5 ]

Изменения компоновщика обычно необходимы для отделения данных от кода (например, батуты , необходимые для функций компоновщика и библиотеки среды выполнения ). Переключатель, позволяющий смешивание, обычно называют execstack в Unix-подобных системах [ 6 ]

W^X также может представлять собой небольшую проблему для JIT-компиляции , которая включает в себя интерпретатор, генерирующий машинный код на лету, а затем запускающий его. Простое решение, используемое большинством, исторически включая Firefox , заключается в том, чтобы просто сделать страницу исполняемой после того, как интерпретатор завершит написание машинного кода, используя VirtualProtect в Windows или mprotect в Unix-подобных операционных системах. Другое решение предполагает отображение одной и той же области памяти на две страницы: одну с помощью RW, а другую с помощью RX. [ 7 ] Не существует простого консенсуса относительно того, какое решение безопаснее: сторонники последнего подхода полагают, что разрешение на выполнение страницы, которая когда-либо была доступна для записи, противоречит принципу W^X (существует политика SELinux для управления такими операциями, называемая allow_execmod) и что рандомизация макета адресного пространства позволит безопасно поместить обе страницы в один и тот же процесс. Сторонники первого подхода считают, что второй подход безопасен только тогда, когда две страницы отданы двум отдельным процессам, а межпроцессное взаимодействие будет более затратным, чем вызов mprotect.

W^X был впервые реализован в OpenBSD 3.3, выпущенном в мае 2003 года. В 2004 году Microsoft представила аналогичную функцию под названием DEP ( предотвращение выполнения данных ) в Windows XP. Аналогичные функции доступны для других операционных систем, включая исправления PaX и Exec Shield для Linux , а также . реализацию PaX в NetBSD В Red Hat Enterprise Linux (и автоматически CentOS ) версии 5 или в ядре Linux 2.6.18-8 SELinux получил allow_execmem, allow_execheap, и allow_execmod политики, которые предоставляют W^X при отключении.

Хотя W^X (или DEP) на протяжении большей части своего существования защищал только программы пользовательского пространства, в 2012 году Microsoft распространила его на ядро ​​Windows на архитектурах x86 и ARM. [ 8 ] В конце 2014 — начале 2015 года W^X был добавлен в ядро ​​OpenBSD на архитектуре AMD64. [ 9 ] В начале 2016 года W^X был полностью реализован в ядре AMD64 NetBSD и частично в ядре i386.

Компьютеры macOS , работающие на кремниевых процессорах Apple, применяют W^X для всех программ. Компьютеры Mac на базе Intel применяют эту политику только для программ, использующих режим Hardened Runtime ОС. [ 10 ] [ 11 ]

Начиная с Firefox 46 в 2016 году и заканчивая Firefox 116 в 2023 году, виртуальная машина Firefox для JavaScript реализовала политику W^X. [ 7 ] Позже это было отменено на некоторых платформах по соображениям производительности, но осталось на других, которые применяют W^X для всех программ. [ 12 ]

Начиная с .NET 6.0 в 2021 году, .NET теперь использует W^X. [ 13 ]

  1. ^ «Применить ограничения execve() для API > 28» .
  2. ^ «Новости ядра Зака» .
  3. ^ «SARA — новый многоуровневый LSM» .
  4. ^ «Усиление защиты ядра Linux (серия 2.0.x)» .
  5. ^ «i386 W^X» . 17 апреля 2003 года . Проверено 19 июня 2014 г.
  6. ^ execstack(8) Linux по администрированию системы Руководство
  7. ^ Перейти обратно: а б «JIT-код W^X включен в Firefox» . Проверено 29 апреля 2016 г.
  8. ^ «Усовершенствования по устранению уязвимостей в Win8» .
  9. ^ «Защита W^X для ядра AMD64» .
  10. ^ «Портирование JIT-компиляторов на Apple Silicon» . разработчик.apple.com . Проверено 17 апреля 2022 г.
  11. ^ «Часто задаваемые вопросы по ARM Mac» . SecureMac. 17 июля 2020 г. Проверено 17 апреля 2022 г.
  12. ^ «1835876 — Рассмотрите возможность отключения защиты памяти кода в процессе содержимого» . bugzilla.mozilla.org . Мозилла . Проверено 1 июля 2024 г.
  13. ^ «Что нового в .NET 6» . docs.microsoft.com . Майкрософт . Проверено 9 ноября 2021 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: bd91e92090ab802c49c744a4d95406b2__1719855480
URL1:https://arc.ask3.ru/arc/aa/bd/b2/bd91e92090ab802c49c744a4d95406b2.html
Заголовок, (Title) документа по адресу, URL1:
W^X - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)