From 3f0d3d12da77d8833a725f99f6fa08640678a1ae Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Wed, 24 May 2017 14:44:03 +0200 Subject: [PATCH] samba: fix CVE-2017-7494 Signed-off-by: Stijn Tintel --- .../patches/028-CVE-2017-7494-v3-6.patch | 29 +++++++++++++++++++ .../patches/310-remove_error_strings.patch | 8 ++--- 2 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 package/network/services/samba36/patches/028-CVE-2017-7494-v3-6.patch diff --git a/package/network/services/samba36/patches/028-CVE-2017-7494-v3-6.patch b/package/network/services/samba36/patches/028-CVE-2017-7494-v3-6.patch new file mode 100644 index 0000000000..17b020d88a --- /dev/null +++ b/package/network/services/samba36/patches/028-CVE-2017-7494-v3-6.patch @@ -0,0 +1,29 @@ +From d2bc9f3afe23ee04d237ae9f4511fbe59a27ff54 Mon Sep 17 00:00:00 2001 +From: Volker Lendecke +Date: Mon, 8 May 2017 21:40:40 +0200 +Subject: [PATCH] CVE-2017-7494: rpc_server3: Refuse to open pipe names with / + inside + +Bug: https://bugzilla.samba.org/show_bug.cgi?id=12780 + +Signed-off-by: Volker Lendecke +Reviewed-by: Jeremy Allison +Reviewed-by: Stefan Metzmacher +--- + source3/rpc_server/srv_pipe.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/source3/rpc_server/srv_pipe.c ++++ b/source3/rpc_server/srv_pipe.c +@@ -473,6 +473,11 @@ bool is_known_pipename(const char *cli_f + pipename += 1; + } + ++ if (strchr(pipename, '/')) { ++ DEBUG(1, ("Refusing open on pipe %s\n", pipename)); ++ return false; ++ } ++ + if (lp_disable_spoolss() && strequal(pipename, "spoolss")) { + DEBUG(10, ("refusing spoolss access\n")); + return false; diff --git a/package/network/services/samba36/patches/310-remove_error_strings.patch b/package/network/services/samba36/patches/310-remove_error_strings.patch index ee3460dfdb..596a327f6f 100644 --- a/package/network/services/samba36/patches/310-remove_error_strings.patch +++ b/package/network/services/samba36/patches/310-remove_error_strings.patch @@ -303,7 +303,7 @@ --- a/source3/rpc_server/srv_pipe.c +++ b/source3/rpc_server/srv_pipe.c -@@ -991,7 +991,6 @@ static bool api_pipe_bind_req(struct pip +@@ -996,7 +996,6 @@ static bool api_pipe_bind_req(struct pip if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("api_pipe_bind_req: invalid pdu: %s\n", nt_errstr(status))); @@ -311,7 +311,7 @@ goto err_exit; } -@@ -1325,7 +1324,6 @@ bool api_pipe_bind_auth3(struct pipes_st +@@ -1330,7 +1329,6 @@ bool api_pipe_bind_auth3(struct pipes_st if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("api_pipe_bind_auth3: invalid pdu: %s\n", nt_errstr(status))); @@ -319,7 +319,7 @@ goto err; } -@@ -1483,7 +1481,6 @@ static bool api_pipe_alter_context(struc +@@ -1488,7 +1486,6 @@ static bool api_pipe_alter_context(struc if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("api_pipe_alter_context: invalid pdu: %s\n", nt_errstr(status))); @@ -327,7 +327,7 @@ goto err_exit; } -@@ -2057,7 +2054,6 @@ static bool process_request_pdu(struct p +@@ -2062,7 +2059,6 @@ static bool process_request_pdu(struct p if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("process_request_pdu: invalid pdu: %s\n", nt_errstr(status))); -- 2.30.2