Означает ли это, что если моя программа запускается с корневыми правами и случайно (из-за повреждения памяти или хак) обеспечивает -1, как Pid аргумент - это приведет к тому полная DoS для всей системы?
Да, такой сценарий возможен. Но шансов на это очень мало. Потому что никакая программа, которая запускается с правами root, не сделает этого. Если вредоносный пользователь/двоичный код каким-то образом получил привилегии root, тогда отправка сигналов является лишь одной из проблем.
Если да, рекомендуется ли всегда выполнять двойную проверку значения аргумента pid перед вызовом этого потенциально катастрофического вызова?
Это просто параноидальное мышление. Есть тысячи способов сделать катастрофическое activities.You могло бы также беспокоиться о:
Что делать, если есть не злой демон бежал при запуске системы, делает:
kill(-1, SIGKILL);
Как вы знаете, если функция вам библиотеку make не звонит reboot(2)
и перезагружает вашу систему?
и т.д.
Кроме того, ИДП не только при условии, пользовательские значения, которые необходимо продезинфицировать. PID - это в основном значения, полученные в рамках программы с использованием системных вызовов или вызовов библиотеки. Таким образом, вероятность «случайного» использования -1 равна нулю. В принципе, у вас/у кого-то есть привилегия root и решили ввернуть вашу систему, тогда вы не можете многое сделать.
Зачем нужна ваша программа с правами root? –
@ FrédéricHamidi как это относится к вопросу? Очевидно, существуют программы, которые должны выполняться как root. Предположим, мы говорим о них. –
@John, тогда эти программы должны проявлять максимальную осторожность при работе в * любой * ситуации, а не только при вызове 'kill()'. Есть несколько способов прикрепить вашу систему, если вы слегка пробиваетесь с помощью системных вызовов, будучи «root», а 'kill()' не является особенным в этом отношении - 'write()' на самом деле хуже. Теперь мы должны дважды проверить, что 'write()' не касается MBR только в случае повреждения памяти или взлома *? –