Почему все каталоги, доступные для записи в мире, должны принадлежать привилегированной группе?

Я читаю руководство по безопасности Ubuntu, разработанное для Министерства обороны США, которое можно найти здесь. Оно написано для 16.04, но я не думаю, что этот конкретный пункт сильно изменился. В руководстве говорится:

ID группы (Vulid): V-75583

Название группы: SRG-OS-000480-GPOS-00227

ID правила: SV-90263r2_rule

Серьезность: CAT II

Версия правила (STIG-ID): UBTU-16-010840

Название правила: Все записываемые в мире каталоги должны принадлежать группе root, sys, bin или группе приложения.

Обсуждение уязвимости: Если в каталоге с возможностью записи в мир установлен бит sticky и он не принадлежит группе с привилегированным групповым идентификатором (GID), неавторизованные пользователи могут иметь возможность изменять файлы, созданные другими.

Я не понимаю логики. Sticky bit на каталоге предотвращает удаление файлов, а не модификацию. Единственное, что я могу предположить, это то, что они говорят не о модификации файла, а о чтении файла, его удалении и последующем воссоздании. Эта схема работает только в том случае, если файл изначально был доступен для чтения всем миром, чего не должно было быть, если бы он был хоть сколько-нибудь чувствительным.

В целом, я в растерянности. Имеет ли это правило хоть какой-то смысл?

1
задан 25 December 2019 в 17:32

1 ответ

Мое единственное предположение, что речь идет не об изменении файла а о чтении файла, его удалении и повторном создании.

Да, похоже, именно об этом они и говорят. Является ли файл доступным для чтения, не имеет значения. Удаление файла и воссоздание его с тем, что вы хотите, - практически то же самое, что и его изменение. Конечно, если вы хотите мудрить, вы можете возразить, что это не один и тот же файл, потому что он может иметь другой индексный дескриптор или занимать разные блоки на диске, но это не имеет значения для безопасности. В любом случае, он имеет то же имя файла и другое содержимое, чем ожидает пользователь, которому он принадлежит. Это угроза безопасности.

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

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

1
ответ дан 24 September 2020 в 23:34

Другие вопросы по тегам:

Похожие вопросы: