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