فهرست منبع

Kernel: Make perfcore files owned by UID=0, GID=0

Since perfcore files can be generated during process finalization,
we can't just allow them to contain sensitive kernel information
if they're gonna be owned by the process's own UID+GID.

So instead, perfcores are now owned by 0:0. This is not the most
ergonomic solution, but I'm not sure what we could do to make it nicer.
We'll have to think more about that. In the meantime, this patches up
a kernel info leak. :^)
Andreas Kling 3 سال پیش
والد
کامیت
bc518e39bf
1فایلهای تغییر یافته به همراه1 افزوده شده و 1 حذف شده
  1. 1 1
      Kernel/Process.cpp

+ 1 - 1
Kernel/Process.cpp

@@ -562,7 +562,7 @@ bool Process::dump_perfcore()
     auto perfcore_filename = String::formatted("{}.profile", base_filename);
     auto perfcore_filename = String::formatted("{}.profile", base_filename);
     RefPtr<OpenFileDescription> description;
     RefPtr<OpenFileDescription> description;
     for (size_t attempt = 1; attempt <= 10; ++attempt) {
     for (size_t attempt = 1; attempt <= 10; ++attempt) {
-        auto description_or_error = VirtualFileSystem::the().open(perfcore_filename, O_CREAT | O_EXCL, 0400, current_directory(), UidAndGid { uid(), gid() });
+        auto description_or_error = VirtualFileSystem::the().open(perfcore_filename, O_CREAT | O_EXCL, 0400, current_directory(), UidAndGid { 0, 0 });
         if (!description_or_error.is_error()) {
         if (!description_or_error.is_error()) {
             description = description_or_error.release_value();
             description = description_or_error.release_value();
             break;
             break;