From a5e4b12090b0c939d85af4f29280e40c5b6600aa Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Mon, 22 Dec 2025 19:16:44 +0100 Subject: [PATCH] CVE-2026-0964 scp: Reject invalid paths received through scp Signed-off-by: Jakub Jelen Reviewed-by: Andreas Schneider (cherry picked from commit daa80818f89347b4d80b0c5b80659f9a9e55e8cc) --- src/scp.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/scp.c b/src/scp.c index a1e3687f..08a29fad 100644 --- a/src/scp.c +++ b/src/scp.c @@ -862,6 +862,22 @@ int ssh_scp_pull_request(ssh_scp scp) size = strtoull(tmp, NULL, 10); p++; name = strdup(p); + /* Catch invalid name: + * - empty ones + * - containing any forward slash -- directory traversal handled + * differently + * - special names "." and ".." referring to the current and parent + * directories -- they are not expected either + */ + if (name == NULL || name[0] == '\0' || strchr(name, '/') || + strcmp(name, ".") == 0 || strcmp(name, "..") == 0) { + ssh_set_error(scp->session, + SSH_FATAL, + "Received invalid filename: %s", + name == NULL ? "" : name); + SAFE_FREE(name); + goto error; + } SAFE_FREE(scp->request_name); scp->request_name = name; if (buffer[0] == 'C') {