программы setuid, кажется, не выполняют setuid в TinyCore Linux

Учитывая часть сообщения "семафор с идентификатором 1157627995 с помощью ключевых 989855746", сказал бы я, этот модуль использует примитивы SysV IPC. Используйте ipcs команда для наблюдения, сколько семафоров, сколько сегментов общей памяти, и т.д. существуют. Сетевые проблемы, возможно, заставили модуль создавать семафоры и не удалять их. Или что-то. Я, кажется, вспоминаю, что довольно низкий предел на количество семафоров и/или сегментов общей памяти существует по умолчанию, таким образом, можно сталкиваться с теми пределами.

2
20.12.2014, 13:03
2 ответа

Ничто неправильно с 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;
}
2
27.01.2020, 22:14

Возможно, некоторая политика безопасности (SELinux, AppArmor...) находится в силе и не позволяет SUID неперечисленным исполняемым файлам? Или это просто что (чистой исправностью) /tmp смонтирован nosuid?

0
27.01.2020, 22:14
  • 1
    живой CD, который я использую, является крошечным, 8 МБ для начала. Я сомневаюсь, что это было бы настолько сложно, но возможно Вы правы, я должен проверить это (не уверенный как...). Согласно /tmp, Я использовал это только для упрощения вопроса. В моей реальной установке это находится в моем корневом каталоге, не смонтированном nosuid. На самом деле тест уязвимости работает в собственной среде, затем я chroot в него там он не делает. –  janos 20.02.2013, 21:14

Теги

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