Перейти к содержимому

Linux: программы setuid без разрешения на чтение

4

Я заметил, что во всех системах Linux ArchLinux *, определенныеsetuid программы имеют довольно необычные разрешения:

-r-sr-xr-x корневой корень / bin / su * --- s - x - x root root / usr / bin / sudo * 

Вопрос в том, почему sudoбинарный набор доступен для чтения только пользователю root? Какой в ​​этом смысл? Почему это не может быть как su?

Редактировать: после переустановки sudoон также не имеет чтения / записи.

( *Я мог бы поклясться, что видел то же самое в Debian. Очевидно нет.)

1 025 просмотров
grawity спросил 16 лет назад
G 229 123

3 ответа

3

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

В целом, suid-программы довольно опасны, и вы должны предоставлять им как можно меньше привилегий. Вы не можете получить гораздо более строгие ограничения, чем только разрешение на выполнение!

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

sudoнемного более уязвим для атаки, чем то, suчто вам не всегда нужно указывать пароль для привилегированного доступа к некоторым ресурсам (в зависимости от того, как он настроен). Это может гарантировать более строгую безопасность.

А если вы можете скомпилировать его самостоятельно? Разве это не сделает это еще проще?

grawity · 16 лет назад · 0

Это просто дополнительное препятствие, которое должен был бы прыгнуть потенциальный атакованный объект. Это не достаточно само по себе, но в качестве дополнительного уровня защиты это может стоить того.

Stephen Darlington · 16 лет назад · 1
Stephen Darlington ответил 16 лет назад
S 413
0

На моей машине, Ubuntu 9.04, нет различий в разрешениях.

-rwsr-xr-x 2 root root /usr/bin/sudo -rwsr-xr-x 1 root root /bin/su 

На вашей машине, возможно, он был недоступен для чтения, чтобы люди не могли его использовать? Может быть, это как-то отредактировано? Нет никаких оснований для разных прав доступа к двум файлам. В Ubuntu учетная запись root заблокирована - вы все равно не сможете войти в систему как root (если вы не предпримете действия, чтобы включить ее явно).

Может быть, здесь есть различия в ОС. Какую ОС вы используете в своем примере?

Еще раз проверил, и, похоже, это происходит только в Arch Linux. (На самом деле, после переустановки пакета sudo, его двоичный файл имеет только разрешения на выполнение и setuid (0411), вообще не читается.)

grawity · 16 лет назад · 0

Makefile из исходного пакета исходного кода с http://sudo.ws/ также устанавливает sudo как 4111.

grawity · 16 лет назад · 0

В FAQ по sudo говорится, что разрешения для sudo (должны быть) «что-то вроде chmod 4111 / usr / local / bin / sudo ». У меня проблемы с поиском эквивалентной информации для su. Возможно ли, что различие является просто историческим, поскольку два бинарных файла имеют две разные группы разработчиков?

DaveParillo · 16 лет назад · 0
DaveParillo ответил 16 лет назад
D 12 972
0

Я ставлю под сомнение вашу предпосылку. Почему sudo должно быть как su?

su предоставляет привилегии только в том случае, если они у вас (а) уже есть или (b) вы прошли аутентификацию для их получения.

sudo предоставляет привилегии на основе рулебазы; например, можно сказать, что root-привилегии могут быть предоставлены joe в любое время, когда спрашивает joe, без пароля. "Человек sudoers" - его довольно мощный.

Так что у sudo есть возможность делать то, чего не может su.

Кто-то может спросить исполняемый файл sudo таким образом, чтобы он всегда предоставлял root любому, кто его спрашивал, - игнорируя файл sudoers и просто используя своего рода внутреннюю «проводку».

Так что имеет смысл защищать его БОЛЬШЕ, чем нужно для защиты su; имеет смысл усложнить чтение или запись в сам исполняемый файл sudo.

Вопрос был о разрешении «читать», а не «писать».

grawity · 16 лет назад · 0

Первый шаг создания «stomp» - это чтение исполняемого файла, чтобы вы могли узнать, как он работает, и где вы можете растоптать. Таким образом, я исправил свой ответ.

pbr · 16 лет назад · 0
pbr ответил 16 лет назад
P 1 200