[Из песочницы] Обход правил разграничения доступа в средствах защиты от НСД
На российском рынке информационной безопасности существует целый класс продуктов, разработанных для выполнения требований регуляторов (ФСТЭК, ФСБ, Роскомнадзор и прочие). Эти продукты называются «СЗИ от НСД», что означает — средства защиты информации от несанкционированного доступа. Основные функции таких продуктов — реализация независимо от операционной системы аутентификации пользователей, правил разграничения доступа к файлам и директориям (дискреционно — как в операционных системах, и мандатно — для гостайны, где есть разные уровни информации), контроль целостности, управление подключением устройств и всякие другие функции. Про подобные продукты на Хабре есть короткая статья, правда ей уже больше пяти лет, но в целом мало что изменилось. Все эти продукты, по большей части, нужны для комплаинса в чистом виде, но, тем не менее, с помощью этих средств реализуется большинство политик безопасности в госорганах, госкомпаниях, оборонке и т.д.
Логично предположить, что эти продукты безопасны и правильно выполняют свои функции, но я выяснил, что это совсем не так. В данной статье будем рассматривать исключительно СЗИ от НСД под операционную систему Windows, так как не смотря на тренд импортозамещения, большинство госкомпьтеров всё равно работает под ней. В Windows есть множество особенностей и тонкостей, которые могут сыграть злую шутку с разработчиками средств защиты. Не будем сейчас говорить обо всех нюансах, разберем только один, который позволяет обойти политики разграничения доступа к файлам.
Не секрет, что основная файловая система, используемая в Windows, это NTFS. В NTFS есть такая штука, как атрибуты, доступ к которым можно получить путем добавления двойного двоеточия после имени файла. Атрибутов у файлов много, но нас интересует один — $DATA, он содержит содержимое файла. Обращение к file.txt и file.txt::$DATA тождественно, но механизм работы внутри операционной системы разный. Я решил посмотреть, знают ли об этой особенности разработчики СЗИ. Практическая часть проста — создавался файл test.txt с содержанием «Hello, world!», в интерфейсе СЗИ выставлялись права доступа, запрещающие чтение файла для всех пользователей, затем проверялось чтение файла по имени и по атрибуту $DATA, под непривилегированным пользователем.
Я хотел посмотреть на максимально возможном числе СЗИ, но оказалось, что свободно получить демо-версию можно только для двух продуктов — Dallas Lock и Secret Net. В открытом доступе есть еще Aura, но она не обновлялась с 2011 года и вряд ли ей кто-то еще пользуется. Все остальные (Страж, Блокхост, Diamond) получить в демо не удалось — в открытом доступе их нет, на запросы производитель либо не отвечает, либо требует гарантийные письма, либо вместо демо-версии предлагают прослушать вебинар.
Dallas Lock
Устанавливаем разрешения:
Проверяем:
И вот оно — любой пользователь может прочитать содержимое любого файла, полностью игнорируя все настроенные правила разграничения доступа.
Уязвимая версия:
Secret Net
Устанавливаем разрешения:
Проверяем:
В Secret Net данный фокус не работает, похоже, их разработчики разбираются в NTFS (хотя и не очень понимают в безопасности драйверов).
Проверял на этой версии, возможно, более ранние всё-таки уязвимы:
Я буду рад если вы протестируете доступные вам СЗИ и опубликуете результат в комментариях. И будьте осторожны с «сертифицированными средствами защиты», не стоит слепо доверять сертификатам и лицензиям.