суббота, 17 октября 2009 г.

Когда люди просят дыры в безопасности в качестве новых возможностей: файлы без ограничений доступа

Это перевод When people ask for security holes as features: World-writable files. Автор: Реймонд Чен.

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

Ну, тогда у меня было бы много копеек.

Например: "я хочу файл, в который смогут писать все пользователи. Моя программа будет использовать его как общую базу данных полезняшек".

Это - дыра в безопасности. Для начала, тут есть очевидная проблема с отказом в обслуживании, поскольку любой пользователь сможет открыть файл в эксклюзивном режиме и не отпускать его. Также возможна атака подмены данных (data tampering), когда пользователь открывает файл и затирает его нулями или как-то тонко изменяет данные. Ваш индекс музыки может неожиданно потерять все песни Бритни Спирс (эй, может быть это не такая плохая вещь; атакующий может изменить индекс так, чтобы при запросе песни Бритни Спирс играла бы Мадонна).

Коллега из команды безопасности указал мне на ещё одну проблему с этим дизайном: дисковые квоты. Кто бы ни создал файл, с его счёта снимается квота за использованное файлом место (даже если большинство данных в файле записаны кем-то другим). Если вы создали такой файл во время установки программы, то наиболее вероятно, что он был создан из под учётной записи администратора компьютера. На администраторов не действуют квоты, что означает, что любой может хранить свои данные в этом файле на халяву, в обход проверок! (чтобы не смешивать свои данные с другими можно использовать файловые потоки). А если к тому же этот файл лежит на системном разделе (что вероятно), тогда пользователи смогут заполнить всё свободное место на диске и привести систему к вылету.

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

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

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

Вооружённые этой информацией, возможно, вы теперь можете ответить на этот вопрос, отправленный на конференцию comp.os.ms-windows.programmer несколько месяцев назад.

Читать далее: Почему файлы программ размещаются в каталоге Program Files?

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку.

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.

Примечание. Отправлять комментарии могут только участники этого блога.