From daa80818f89347b4d80b0c5b80659f9a9e55e8cc 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 --- src/scp.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/scp.c b/src/scp.c index fb29d0c6..ec2d1a2e 100644 --- a/src/scp.c +++ b/src/scp.c @@ -874,6 +874,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') {