patchpanel: Prevent ConnectNamespace from allowing privileged PIDs.
Block PID 1 and the PID of the patchpanel process.
BUG=b:174735412
TEST=unit
Change-Id: Ic1eaed424d697851aed9931d80cb2895d7b2e73f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2571141
Tested-by: Garrick Evans <garrick@chromium.org>
Reviewed-by: Hugo Benichi <hugobenichi@google.com>
Commit-Queue: Garrick Evans <garrick@chromium.org>
diff --git a/patchpanel/manager.cc b/patchpanel/manager.cc
index 5d611d7..a093891 100644
--- a/patchpanel/manager.cc
+++ b/patchpanel/manager.cc
@@ -824,6 +824,11 @@
}
pid_t pid = request.pid();
+ if (pid == 1 || pid == getpid()) {
+ LOG(ERROR) << "ConnectNamespaceRequest: privileged namespace pid " << pid;
+ writer.AppendProtoAsArrayOfBytes(patchpanel::ConnectNamespaceResponse());
+ return dbus_response;
+ }
{
ScopedNS ns(pid);
if (!ns.IsValid()) {