Jelajahi Sumber

check_icmp: Uncheck return values of set*id() family functions

In the unlikely event where setuid() fails, privileges of the
 plugin would not be dropped and commands would be run as root.
 This would lead to privilege escalation.
Jeffrey Bencteux 2 tahun lalu
induk
melakukan
5f704efe58
1 mengubah file dengan 3 tambahan dan 1 penghapusan
  1. 3 1
      plugins-root/check_icmp.c

+ 3 - 1
plugins-root/check_icmp.c

@@ -725,7 +725,9 @@ int main(int argc, char **argv) {
   }
 
   /* now drop privileges (no effect if not setsuid or geteuid() == 0) */
-  setuid(getuid());
+  if (setuid(getuid()) == -1) {
+    crash("dropping privileges failed");
+  }
 
 #ifdef SO_TIMESTAMP
   if (setsockopt(icmp_sock, SOL_SOCKET, SO_TIMESTAMP, &on, sizeof(on))) {