Jakub Filak d596ad
From a16d12d27e5c12f3e4ab5defaf775a692c405206 Mon Sep 17 00:00:00 2001
Jakub Filak d596ad
From: Jakub Filak <jfilak@redhat.com>
Jakub Filak d596ad
Date: Wed, 11 Nov 2015 13:19:35 +0100
Jakub Filak d596ad
Subject: [PATCH] ccpp: make crashes of processes with locked memory
Jakub Filak d596ad
 not-reportable
Jakub Filak d596ad
Jakub Filak d596ad
Lets begin with a simply policy preventing users from accidental
Jakub Filak d596ad
publication of problem data with security sensitive data.
Jakub Filak d596ad
Jakub Filak d596ad
"not-reportable" problems can still be auto-reported. That is not an
Jakub Filak d596ad
security issue because uReports does not contain any user data stored in
Jakub Filak d596ad
process' memory (only stack-trace without values local|global variables
Jakub Filak d596ad
and function arguments).
Jakub Filak d596ad
Jakub Filak d596ad
Related to #796.
Jakub Filak d596ad
Jakub Filak d596ad
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Jakub Filak d596ad
---
Jakub Filak d596ad
 src/hooks/abrt-hook-ccpp.c | 21 +++++++++++++++++++++
Jakub Filak d596ad
 1 file changed, 21 insertions(+)
Jakub Filak d596ad
Jakub Filak d596ad
diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c
Jakub Filak d596ad
index 809b45e..4b79900 100644
Jakub Filak d596ad
--- a/src/hooks/abrt-hook-ccpp.c
Jakub Filak d596ad
+++ b/src/hooks/abrt-hook-ccpp.c
Jakub Filak d596ad
@@ -868,6 +868,27 @@ int main(int argc, char** argv)
Jakub Filak d596ad
 
Jakub Filak d596ad
         dd_save_text(dd, FILENAME_ABRT_VERSION, VERSION);
Jakub Filak d596ad
 
Jakub Filak d596ad
+        /* In case of errors, treat the process as if it has locked memory */
Jakub Filak d596ad
+        long unsigned lck_bytes = ULONG_MAX;
Jakub Filak d596ad
+        const char *vmlck = strstr(proc_pid_status, "VmLck:");
Jakub Filak d596ad
+        if (vmlck == NULL)
Jakub Filak d596ad
+            error_msg("/proc/%s/status does not contain 'VmLck:' line", pid_str);
Jakub Filak d596ad
+        else if (1 != sscanf(vmlck + 6, "%lu kB\n", &lck_bytes))
Jakub Filak d596ad
+            error_msg("Failed to parse 'VmLck:' line in /proc/%s/status", pid_str);
Jakub Filak d596ad
+
Jakub Filak d596ad
+        if (lck_bytes)
Jakub Filak d596ad
+        {
Jakub Filak d596ad
+            log_notice("Process %s of user %lu has locked memory",
Jakub Filak d596ad
+                        pid_str, (long unsigned)uid);
Jakub Filak d596ad
+
Jakub Filak d596ad
+            dd_mark_as_notreportable(dd, "The process had locked memory "
Jakub Filak d596ad
+                    "which usually indicates efforts to protect sensitive "
Jakub Filak d596ad
+                    "data (passwords) from being written to disk.\n"
Jakub Filak d596ad
+                    "In order to avoid sensitive information leakages, "
Jakub Filak d596ad
+                    "ABRT will not allow you to report this problem to "
Jakub Filak d596ad
+                    "bug tracking tools");
Jakub Filak d596ad
+        }
Jakub Filak d596ad
+
Jakub Filak d596ad
         if (setting_SaveBinaryImage)
Jakub Filak d596ad
         {
Jakub Filak d596ad
             if (save_crashing_binary(pid, dd))
Jakub Filak d596ad
-- 
Jakub Filak d596ad
2.6.3
Jakub Filak d596ad