13. Локальные атаки DoS



Локальные атаки DoS


Несмотря на то что удаленные атаки DoS получили большее распространение, локальные атаки тоже способны принести немало бед. Существует множество многопользовательских систем, в которых атаку DoS может инициировать авторизованный пользователь. Большинство локальных атак основано на захвате ресурсов или на использовании изъянов в программном обеспечении и направлено на то, чтобы запретить доступ легитимным пользователям. В системах NT и UNIX существуют сотни возможностей реализации локальных атак DoS, однако мы познакомимся с захватом ресурсов и использованием ошибок в программном обеспечением для систем Windows NT и UNIX соответственно.

Терминальный сервер Windows NT и процесс proquota. ехе



Классическим примером атаки, направленной на захват ресурсов, является использование свободного дискового пространства сверх выделенной квоты. Если функции квотирования дискового пространства в мире UNIX давно ни у кого не вызывают удивления, то в системе Windows NT эта возможность является относительно новой. Терминальный сервер Windows NT позволяет обычному пользователю применить функцию квотирования дискового пространства и заполнить системный диск (%systemdrive%). После этого пользователи, у которых отсутствует кэшированный профиль доступа, не смогут обратиться к системе. В процессе этой атаки пользователи, у которых превышена дисковая квота, не смогут завершить свою работу. Однако для того, чтобы обойти это ограничение, можно удалить процесс proguota. ехе. Это можно осуществить, поскольку владельцем этого процесса является пользователь, а не системная учетная запись.

Контрмеры



Практика подсказывает, что системные файлы и пользовательские данные лучше всего хранить в разных разделах. Эта аксиома как нельзя лучше подходит к приведенному примеру. Переменная %systemdrive% должна указывать на другой диск, а не на тот, на котором хранятся данные пользователей. Кроме того, поместите профили на незагружаемом разделе и используйте их только при необходимости.

Паника ядра



В ядре системы Linux версии 2.2.0 появлялась потенциальная возможность для возникновения условия DoS, если программа idd, используемая для печати зависимостей совместно используемых библиотек, применялась для печати определенных файлов ядра. Этот изъян был связан с вызовом функции munmap (), используемой для отображения файлов или устройств в оперативную память. При определенных обстоятельствах функция munmap () могла перезаписать важные области памяти, используемые ядром, и вызвать в системе панику и ее перезагрузку. Хотя такая ситуация не выглядит необычной, она все же иллюстрирует основную концепцию, на которой основано большинство направленных на ядро атак. В большинстве случаев непривилегированный пользователь может воспользоваться изъяном в программном обеспечении и повредить важную область памяти, применяемую ядром. Конечным результатом подобной деятельности практически всегда является паника ядра (panic kernel).

Контрмеры против паники ядра



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