From: Jeremy Harris Date: Tue, 10 Sep 2019 11:29:12 +0000 (+0100) Subject: Refuse to open a msglog file with .. in the path. X-Git-Tag: exim-4.93-RC0~69 X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=8f84b06a462cb02821c09aeeb8ca77f1bbdc00cb;p=exim.git Refuse to open a msglog file with .. in the path. Recent exploits have use this as a step for overwriting system files, and msglog file should always be under the spooldir, so add this as a defence-in-depth tactic --- diff --git a/src/src/deliver.c b/src/src/deliver.c index 59fbeeaf9..72751c2dc 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -328,6 +328,10 @@ Returns: a file descriptor, or -1 (with errno set) static int open_msglog_file(uschar *filename, int mode, uschar **error) { +if (Ustrstr(filename, US"/../")) + log_write(0, LOG_MAIN|LOG_PANIC, + "Attempt to open msglog file path with upward-traversal: '%s'\n", filename); + for (int i = 2; i > 0; i--) { int fd = Uopen(filename,