русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Ln /bin/su /tmp/ls


Дата добавления: 2014-11-28; просмотров: 864; Нарушение авторских прав


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

Затем пользователь вводит команду /tmp/ls и получает приглашение для ввода пароля администратора. В это время в списке процессов отображается процесс ls, запущенный от имени root, но из пользовательской консоли. Для скрытия места запуска пользователю необходимо превратить интерактивный процесс в фоновый и закрыть сеанс в данной консоли. Это ему не удастся по двум причинам. Во-первых, в фоновом режиме он не имеет возможности вводить пароль. Во-вторых, вызванный процесс login может «уйти» в фоновый режим, однако не позволит завершить сеанс, не завершив аутентификацию.

Далее пользователь в течение некоторого времени пытается подобрать вожделенный пароль. Здесь его вновь подстерегают неприятности. Пароль нельзя вводить неограниченное число раз; этому препятствуют ограничения, установленные в файле /etc/login.defs. Наконец, демон syslogd контролирует вовсе не запуск команды su, а только соответствующий системный вызов, и в файле /var/log/secure (или в /var/log/auth) неизбежно появляются записи, говорящие о попытках аутентификации.

Наконец, последние огорчения поджидают пользователя, когда он попытается удалить из доступного каталога /tmp созданную жесткую ссылку. Если бы это был регулярный файл, созданный пользователем, удаление прошло бы без проблем. Но стикки–бит, установленный на каталог, не позволяет пользователю удалять чужой файл, чем созданная жесткая ссылка и является. Перед вами был представлен пример уязвимости, который на самом деле говорит о хорошей продуманности защитных механизмов системы. Жаль, что подобная защита не является «сплошной».



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

На символическую ссылку нельзя задать права доступа: она доступна каждому зарегистрированному пользователю для чтения, записи и исполнения (маска прав доступа 777). Изменение прав доступа к символической ссылке с помощью команды chmodприводит к изменению прав доступа на объектовый файл, если у пользователя имеются на то надлежащие права. Ссылку на недоступный файл создать легко, но обратиться к нему все равно будет невозможно, так как права доступа проверяются при обращении к адресуемому файлу.

Символическая ссылка создается с помощью команды

ln -s <file_name> <link_name>

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

У большинства символических ссылок не существует блоков данных. Если адресуемое имя не превышает 60 символов, оно записывается в индексном дескрипторе вместо номеров адресуемых блоков (15 блоков х 4 байта). При исследовании inode символической ссылки с помощью дискового редактора следует обратить внимание на то, что номера адресуемых блоков данных выглядят неестественно и явно выходят из допустимых диапазонов номеров. В этих полях справа налево записываются символы полного либо относительного имени адресуемого файла в ASCII-коде. Просмотр таблицы индексных дескрипторов в шестнадцатеричном и символьном форматах позволяет сразу отличить описатель символической ссылки: она начинается байтами ff a1 и сопровождается именем файла в секции ASCII-кода. Если имя адресуемого файла длиннее 60 символов, для его символической ссылки система выделяет один блок данных.

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

Символические ссылки могут использоваться в качестве инструмента для файловой атаки. Объектом атаки может являться любой недоступный для пользователя файл, который он хотел бы уничтожить. Источником атаки может стать любой процесс с системными правами, который в процессе работы создает временные файлы и помещает их в каталог /tmp. Примечательность этого каталога в том, что любой зарегистрированный пользователь имеет в нем права на чтение, запись и поиск (исполнение).

Допустим, что злоумышленник узнал или угадал имя временного файла в каталоге /tmp и предварительно успел записать в этот каталог символическую ссылку с таким же именем. Тогда программа будет записывать данные уже не в свой временный файл, а через подставленную символическую ссылку в объектовый файл, который будет в ней указан. Угроз конфиденциальности здесь нет – если бы пользователю надо было прочесть конфиденциальную информацию из временного файла, он скопировал бы его в свой каталог и прочитал. Здесь более явной является угроза целостности. Например, программа, запущенная с правами администратора, через символическую ссылку в каталоге /tmp перенаправит запись в любой указанный файл, например в файл паролей или иной файл конфигурации. В результате весьма ответственная информация будет уничтожена.

Для противодействия подобным атакам временные файлы в обоих семействах универсальных операционных систем Windows и Linux создаются с псевдослучайными именами, и функция создания временного файла возлагается не на приложение, а на операционную систему. В Linux имеются системные функции mkstemp и tmpfile, вызов которых решает вышеперечисленные проблемы. Так, функция mkstemp генерирует шестисимвольное имя файла, подбирая каждый символ случайным образом. Нарушителю угадать имя файла весьма трудно, но появляется проблема для пользователей. Удаление временных файлов возлагается не на операционную систему, а на программу, которая их создает. И если автор программы не позаботился об удалении временных файлов, то они будут скапливаться и захламлять каталог /tmp. Поскольку имя временного файла генерируется случайно, спустя некоторое время уже трудно разобраться, какой программой и с какой целью он был создан, содержит ли нужную информацию и подлежит ли удалению.

Из командной строки генерацию временных файлов с псевдослучайными именами можно произвести с помощью команды tempfile. Задавая эту команду с произвольным символом, мы создаем в каталоге /tmp файл нулевой длины с именем fileXXXXXX, где после префикса file генерируется шестибайтная случайная последовательность символов.

Теперь нетрудно ответить на вопрос: какая из ссылок занимает меньше места в памяти? Жесткая ссылка представляет собой еще одну файловую запись в одном из каталогов. Длина такой записи равна количеству символов в имени файла + 8 байтов + дополнение до ближайшего числа, кратного четырем. При наличии в блоке данных каталога свободного места для новой файловой записи увеличения его объема не произойдет. В противном случае каталогу будет выделен еще один логический блок. Следовательно, создание жесткой ссылки в большинстве случаев к дополнительному расходу дисковой памяти не приведет.

Символическая ссылка как минимум состоит из файловой записи в каталоге и 128-байтного индексного дескриптора. Если имя целевого файла превысит 60 символов, то символическая ссылка увеличится на величину одного логического блока. Таким образом, если имена ссылок имеют одинаковую длину, символическая ссылка в большинстве случаев займет больше места в памяти.

 

4. БЕЗОПАСНОСТЬ ФАЙЛОВЫХ СИСТЕМ EXT*FS

 

Файловая система (ФС) представляет собой способ организации, хранения и именования данных на физических носителях информации. Она определяет логический формат хранения данных, которые принято группировать в виде файлов.

Файловая система может создаваться на всем физическом устройстве или на его отдельном разделе. В случае использования технологии RAID вводится ещё один уровень абстракции между файловой системой и физическим устройством, но, при аппаратной реализации RAID, он для операционной системы не виден, или, как выражаются программисты, «прозрачен».

В ОС Linux «родными» файловыми системами являются ext2fs и её последующие версии: ext3fs и ext4fs. Файловая система ext3fs отличается от предшествующей версиитолько наличием журнала транзакций. Ext2fs и ext3fs имеют идентичную структуру и могут взаимно преобразовываться друг в друга на этапе монтирования. Архитектура ФС ext4fs еще окончательно не сложилась, и по этой причине ее рассмотрение приводится в Приложении.

 

4.1. Архитектура файловых систем ext*fs

 

Дисковое пространство выделяется файлам целыми блоками фиксированной длины. Блок является адресуемой единицей дискового пространства и может иметь размер 1024, 2048 или 4096 байтов. В ОС Windows* аналогом блока является кластер. Нетрудно заметить, что размер блока кратен стандартному размеру одиночного сектора на диске (512 байтов на магнитном диске или 2048 байтов на CD/DVD). Непосредственно с секторами работает драйвер файловой системы, но информация, выводимая некоторыми утилитами, может подразумевать под названием «блок» и сектор, и логический блок. Большой размер блока сокращает число обращений к диску при чтении или записи файла, но увеличивает долю нерационально используемого пространства памяти, особенно при наличии большого числа маленьких файлов.

Параметры для утилиты создания файловой системы mke2fs по умолчанию определены в файле /etc/mke2fs.conf; эти параметры зависят от типа носителя данных и его размера. Стандартным по умолчанию является размер блока в 4 Кб, что ускоряет процессы подкачки в виртуальной памяти (размер страницы подкачки также равен 4 Кб).

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

Просматривая информацию об основных каталогах файловой системы (рис. 4.1), выведенной с помощью команды ls –li /, следует обратить внимание на значительное отличие в номерах индексных дескрипторов каталогов первого уровня. Это косвенно указывает на то, что каталоги распределены по всему доступному системе пространству логического диска.

 



<== предыдущая лекция | следующая лекция ==>
Find / -inum N | Drwxr-xr-x 17 root root 4096 Мар 18 17:36 var


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.391 сек.