Учитывая часть сообщения "семафор с идентификатором 1157627995 с помощью ключевых 989855746", сказал бы я, этот модуль использует примитивы SysV IPC. Используйте ipcs
команда для наблюдения, сколько семафоров, сколько сегментов общей памяти, и т.д. существуют. Сетевые проблемы, возможно, заставили модуль создавать семафоры и не удалять их. Или что-то. Я, кажется, вспоминаю, что довольно низкий предел на количество семафоров и/или сегментов общей памяти существует по умолчанию, таким образом, можно сталкиваться с теми пределами.
Ничто неправильно с setuid
в TinyCore. Однако простая программа в вопросе не так проста использовать в TinyCore.
system
вызов вызывает указанное использование команды /bin/sh -c
. В TinyCore, /bin/sh
символьная ссылка на busybox ash
, который отбрасывает setuid
полномочия. Таким образом, даже если Вы создаете сценарий оболочки или даже двоичный файл, который делает что-то злонамеренное и называет его date
для обманывания уязвимой программы для выполнения его он не будет работать как setuid
. Исходная программа будет работать setuid
, но не команда, порожденная system
.
Как примечание стороны, стандарт bash
также отбрасывания setuid
полномочия при вызове как /bin/sh
, начиная с версии 2. Однако уязвимость, описанная в вопросе, может быть продемонстрирована в Debian и его производных, как по-видимому, версия Debian bash
не отбрасывает полномочия. (Очевидно, существует серьезное основание для этого, но я не исследовал.)
Наконец, я мог обойти поведение отбрасывания полномочий путем изменения программы на:
int main(int argc, char **argv)
{
// circumvent busybox ash dropping privileges
uid_t uid = geteuid();
setreuid(uid, uid);
printf("Current time: ");
fflush(stdout);
system("date");
return 0;
}
Возможно, некоторая политика безопасности (SELinux, AppArmor...) находится в силе и не позволяет SUID неперечисленным исполняемым файлам? Или это просто что (чистой исправностью) /tmp
смонтирован nosuid?
/tmp
, Я использовал это только для упрощения вопроса. В моей реальной установке это находится в моем корневом каталоге, не смонтированном nosuid
. На самом деле тест уязвимости работает в собственной среде, затем я chroot
в него там он не делает.
– janos
20.02.2013, 21:14