CVE-2018-5704 - https://nvd.nist.gov/vuln/detail/CVE-2018-5704 Signed-off-by: Jan Pavlinec <jan.pavlinec@nic.cz>lilik-openwrt-22.03
@ -0,0 +1,45 @@ | |||
Subject: Bind to IPv4 localhost by default | |||
Origin: other, http://openocd.zylin.com/#/c/4331/2 | |||
Last-Update: 2018-01-18 | |||
From f8630b0b15e30dc6c51270006a4e075c79cf466a Mon Sep 17 00:00:00 2001 | |||
From: Paul Fertser <fercerpav@gmail.com> | |||
Date: Sat, 13 Jan 2018 16:22:10 +0300 | |||
Subject: [PATCH] server: bind to IPv4 localhost by default | |||
Since OpenOCD basically allows to perform arbitrary actions on behalf of | |||
the running user, it makes sense to restrict the exposure by default. | |||
If you need network connectivity and your environment is safe enough, | |||
use "bindto 0.0.0.0" to switch to the old behaviour. | |||
Change-Id: I4a4044b90d0ecb30118cea96fc92a7bcff0924e0 | |||
Signed-off-by: Paul Fertser <fercerpav@gmail.com> | |||
--- | |||
diff --git a/doc/openocd.texi b/doc/openocd.texi | |||
index 7f5b72e..5c7f465 100644 | |||
--- a/doc/openocd.texi | |||
+++ b/doc/openocd.texi | |||
@@ -7017,7 +7017,7 @@ | |||
@deffn Command bindto [name] | |||
Specify address by name on which to listen for incoming TCP/IP connections. | |||
-By default, OpenOCD will listen on all available interfaces. | |||
+By default, OpenOCD will listen on the loopback interface only. | |||
@end deffn | |||
@anchor{targetstatehandling} | |||
diff --git a/src/server/server.c b/src/server/server.c | |||
index 1e52e97..ea1e898 100644 | |||
--- a/src/server/server.c | |||
+++ b/src/server/server.c | |||
@@ -259,7 +259,7 @@ | |||
c->sin.sin_family = AF_INET; | |||
if (bindto_name == NULL) | |||
- c->sin.sin_addr.s_addr = INADDR_ANY; | |||
+ c->sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK); | |||
else { | |||
hp = gethostbyname(bindto_name); | |||
if (hp == NULL) { |
@ -0,0 +1,47 @@ | |||
Subject: Prevent some forms of Cross Protocol Scripting attacks | |||
Author: Andreas Fritiofson <andreas.fritiofson@gmail.com> | |||
Origin: other, http://openocd.zylin.com/#/c/4335/ | |||
Bug-Debian: https://bugs.debian.org/887488 | |||
Last-Update: 2018-01-18 | |||
From 3a223ca3ebc7ac24d7726a0cd58e5695bc813657 Mon Sep 17 00:00:00 2001 | |||
From: Andreas Fritiofson <andreas.fritiofson@gmail.com> | |||
Date: Sat, 13 Jan 2018 21:00:47 +0100 | |||
Subject: [PATCH] CVE-2018-5704: Prevent some forms of Cross Protocol Scripting attacks | |||
OpenOCD can be targeted by a Cross Protocol Scripting attack from | |||
a web browser running malicious code, such as the following PoC: | |||
var x = new XMLHttpRequest(); | |||
x.open("POST", "http://127.0.0.1:4444", true); | |||
x.send("exec xcalc\r\n"); | |||
This mitigation should provide some protection from browser-based | |||
attacks and is based on the corresponding fix in Redis: | |||
https://github.com/antirez/redis/blob/8075572207b5aebb1385c4f233f5302544439325/src/networking.c#L1758 | |||
Change-Id: Ia96ebe19b74b5805dc228bf7364c7971a90a4581 | |||
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com> | |||
Reported-by: Josef Gajdusek <atx@atx.name> | |||
--- | |||
diff --git a/src/server/startup.tcl b/src/server/startup.tcl | |||
index 64ace40..dd1b31e 100644 | |||
--- a/src/server/startup.tcl | |||
+++ b/src/server/startup.tcl | |||
@@ -8,3 +8,14 @@ | |||
# one target | |||
reset halt | |||
} | |||
+ | |||
+proc prevent_cps {} { | |||
+ echo "Possible SECURITY ATTACK detected." | |||
+ echo "It looks like somebody is sending POST or Host: commands to OpenOCD." | |||
+ echo "This is likely due to an attacker attempting to use Cross Protocol Scripting" | |||
+ echo "to compromise your OpenOCD instance. Connection aborted." | |||
+ exit | |||
+} | |||
+ | |||
+proc POST {args} { prevent_cps } | |||
+proc Host: {args} { prevent_cps } |