Morty pull request
cover Morty pull request
Please consider these changes for the next morty update
The following changes since commit b40116cf457b88a2db14b86fda9627fb34d56ae6:
zile: fix do_install (2017-08-05 07:53:02 -0700)
are available in the git repository at:
git://git.openembedded.org/meta-openembedded-contrib stable/morty-next
http://cgit.openembedded.org/meta-openembedded-contrib/log/?h=stable/morty-next
Andre McCurdy (1):
luajit: mips and mipsel are 32bit targets too
Armin Kuster (5):
wireshark: update to 2.2.6
wireshark: update to 2.2.9
wireshark: update to 2.2.10
wireshark: Update to 2.2.11
wireshark: Update Package to 2.2.12
Isaac Hermida (1):
hostapd: fix WPA2 key replay security bug
Kai Kang (1):
wireshark: 2.2.7 -> 2.2.8
Khem Raj (1):
mariadb: Do not use ucontext_* APIs with musl
Oleksandr Kravchuk (2):
lftp: change SRC_URI source
wireshark: update to 2.2.5
Pascal Bach (1):
poco: make cmake packages relocatable
Zhang Xiao (1):
dnsmasq: backport CVE fixes from dnsmasq 2.78
[email protected] (1):
opensaf: fix QA Issue
fan.xin (1):
wireshark: Upgrade to 2.2.7
.../recipes-connectivity/lftp/lftp_4.7.3.bb | 2 +-
.../recipes-daemons/opensaf/opensaf_5.0.0.bb | 14 +-
.../dnsmasq/dnsmasq-CVE-2017-14491-02.patch | 75 ++
.../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14491.patch | 268 ++++++
.../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14492.patch | 37 +
.../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14493.patch | 37 +
.../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14494.patch | 37 +
.../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14495.patch | 48 ++
.../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14496.patch | 73 ++
.../recipes-support/dnsmasq/dnsmasq_2.76.bb | 7 +
.../{wireshark_2.2.4.bb => wireshark_2.2.12.bb} | 8 +-
.../hostapd/hostapd/key-replay-cve-multiple.patch | 939 +++++++++++++++++++++
.../recipes-connectivity/hostapd/hostapd_2.5.bb | 1 +
meta-oe/recipes-devtools/luajit/luajit_2.0.4.bb | 2 +
meta-oe/recipes-support/mysql/mariadb.inc | 1 +
.../mariadb/0001-disable-ucontext-on-musl.patch | 28 +
meta-oe/recipes-support/poco/poco_1.7.5.bb | 11 +-
17 files changed, 1569 insertions(+), 19 deletions(-)
create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14491-02.patch
create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14491.patch
create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14492.patch
create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14493.patch
create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14494.patch
create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14495.patch
create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14496.patch
rename meta-networking/recipes-support/wireshark/{wireshark_2.2.4.bb => wireshark_2.2.12.bb} (90%)
create mode 100644 meta-oe/recipes-connectivity/hostapd/hostapd/key-replay-cve-multiple.patch
create mode 100644 meta-oe/recipes-support/mysql/mariadb/0001-disable-ucontext-on-musl.patchSignature · 1 line
2.7.4
PATCH 1/15 poco: make cmake packages relocatable
From: Pascal Bach <[email protected]>
Before the path to the dependencies was hard coded into the generated PocoConfig.cmake file. This causes issues with sstate.
This change overrides the libraries with just the library names and thus let's the linker take care of finding them.
--- meta-oe/recipes-support/poco/poco_1.7.5.bb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
meta-oe/recipes-support/poco/poco_1.7.5.bb +6 -5
@@ -21,6 +21,7 @@ SRC_URI = " \ S = "${WORKDIR}/git" EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=RelWithDebInfo -DPOCO_UNBUNDLED=ON \ + -DZLIB_LIBRARY_RELEASE:STRING=z -DPCRE_LIBRARY:STRING=pcre \ ${@bb.utils.contains('PTEST_ENABLED', '1', '-DENABLE_TESTS=ON ', '', d)}" # For the native build we want to use the bundled version
@@ -34,16 +35,16 @@ EXTRA_OECMAKE_append = " -DCMAKE_SKIP_RPATH=ON" # these don't have dependencies outside oe-core PACKAGECONFIG ??= "XML JSON MongoDB PDF Util Net NetSSL Crypto Data DataSQLite Zip" -PACKAGECONFIG[XML] = "-DENABLE_XML=ON,-DENABLE_XML=OFF,expat" +PACKAGECONFIG[XML] = "-DENABLE_XML=ON -DEXPAT_LIBRARY:STRING=expat,-DENABLE_XML=OFF,expat" PACKAGECONFIG[JSON] = "-DENABLE_JSON=ON,-DENABLE_JSON=OFF" PACKAGECONFIG[MongoDB] = "-DENABLE_MONGODB=ON,-DENABLE_MONGODB=OFF" PACKAGECONFIG[PDF] = "-DENABLE_PDF=ON,-DENABLE_PDF=OFF,zlib" PACKAGECONFIG[Util] = "-DENABLE_UTIL=ON,-DENABLE_UTIL=OFF" PACKAGECONFIG[Net] = "-DENABLE_NET=ON,-DENABLE_NET=OFF" -PACKAGECONFIG[NetSSL] = "-DENABLE_NETSSL=ON,-DENABLE_NETSSL=OFF,openssl" -PACKAGECONFIG[Crypto] = "-DENABLE_CRYPTO=ON,-DENABLE_CRYPTO=OFF,openssl" +PACKAGECONFIG[NetSSL] = "-DENABLE_NETSSL=ON -DOPENSSL_SSL_LIBRARY:STRING=ssl -DOPENSSL_CRYPTO_LIBRARY:STRING=crypto,-DENABLE_NETSSL=OFF,openssl" +PACKAGECONFIG[Crypto] = "-DENABLE_CRYPTO=ON -DOPENSSL_SSL_LIBRARY:STRING=ssl -DOPENSSL_CRYPTO_LIBRARY:STRING=crypto,-DENABLE_CRYPTO=OFF,openssl" PACKAGECONFIG[Data] = "-DENABLE_DATA=ON,-DENABLE_DATA=OFF" -PACKAGECONFIG[DataSQLite] = "-DENABLE_DATA_SQLITE=ON,-DENABLE_DATA_SQLITE=OFF,sqlite3" +PACKAGECONFIG[DataSQLite] = "-DENABLE_DATA_SQLITE=ON -DSQLITE3_LIBRARY:STRING=sqlite3,-DENABLE_DATA_SQLITE=OFF,sqlite3" PACKAGECONFIG[Zip] = "-DENABLE_ZIP=ON,-DENABLE_ZIP=OFF" # Additional components not build by default,
@@ -51,7 +52,7 @@ PACKAGECONFIG[Zip] = "-DENABLE_ZIP=ON,-DENABLE_ZIP=OFF" # or they don't work on all architectures PACKAGECONFIG[mod_poco] = "-DENABLE_APACHECONNECTOR=ON,-DENABLE_APACHECONNECTOR=OFF,apr apache2" PACKAGECONFIG[CppParser] = "-DENABLE_CPPPARSER=ON,-DENABLE_CPPPARSER=OFF" -PACKAGECONFIG[DataMySQL] = "-DENABLE_DATA_MYSQL=ON,-DENABLE_DATA_MYSQL=OFF,mariadb" +PACKAGECONFIG[DataMySQL] = "-DENABLE_DATA_MYSQL=ON -DMYSQL_LIB:STRING=mysqlclient_r,-DENABLE_DATA_MYSQL=OFF,mariadb" PACKAGECONFIG[DataODBC] = "-DENABLE_DATA_ODBC=ON,-DENABLE_DATA_ODBC=OFF,libiodbc" PACKAGECONFIG[PageCompiler] = "-DENABLE_PAGECOMPILER=ON,-DENABLE_PAGECOMPILER=OFF" PACKAGECONFIG[PageCompilerFile2Page] = "-DENABLE_PAGECOMPILER_FILE2PAGE=ON,-DENABLE_PAGECOMPILER_FILE2PAGE=OFF"
Signature · 1 line
2.7.4
PATCH 2/15 lftp: change SRC_URI source
In reply to Armin KusterFrom: Oleksandr Kravchuk <[email protected]>
Changed SRC_URI source to official web-site, which keeps tarballs with old releases.
Cherry-picked from master, but without the upgrade to 4.7.5.
commit a2e075ba656a89da58ca4f849c2f08ec6d50a96f
Author: Oleksandr Kravchuk <[email protected]>
Date: Mon Jan 9 15:34:07 2017 +0100
lftp: update to 4.7.5 and change SRC_URI source
Updated lftp to version 4.7.5 and changed SRC_URI source to official web-site, which keeps tarballs with old releases.
--- meta-networking/recipes-connectivity/lftp/lftp_4.7.3.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
meta-networking/recipes-connectivity/lftp/lftp_4.7.3.bb +1 -1
@@ -6,7 +6,7 @@ SECTION = "console/network" LICENSE = "GPLv3" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" -SRC_URI = "http://fossies.org/linux/misc/lftp-${PV}.tar.gz \ +SRC_URI = "http://lftp.yar.ru/ftp/lftp-${PV}.tar.gz \ file://fix-gcc-6-conflicts-signbit.patch \ " SRC_URI[md5sum] = "8eb1fe5f113126b60f172643c7f6c2e6"
Signature · 1 line
2.7.4
PATCH 3/15 opensaf: fix QA Issue
In reply to Armin KusterFrom: "[email protected]" <[email protected]>
Move the do_sysvinit_install contents to do_install_append.
--- meta-networking/recipes-daemons/opensaf/opensaf_5.0.0.bb | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)
meta-networking/recipes-daemons/opensaf/opensaf_5.0.0.bb +5 -9
@@ -53,6 +53,11 @@ do_install_append() { install -m 0644 ${B}/osaf/services/infrastructure/nid/config/opensafd.service \ ${D}${systemd_unitdir}/system install -m 0644 ${B}/contrib/plmc/config/*.service ${D}/${systemd_unitdir}/system + + if [ ! -d "${D}${sysconfdir}/init.d" ]; then + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${B}/osaf/services/infrastructure/nid/scripts/opensafd ${D}${sysconfdir}/init.d/ + fi } FILES_${PN} += "${localstatedir}/run ${systemd_unitdir}/system/*.service"
@@ -62,12 +67,3 @@ INSANE_SKIP_${PN} = "dev-so" RDEPENDS_${PN} += "bash python" -do_sysvinit_install() { - if [ ! -d "${D}${sysconfdir}/init.d" ]; then - install -d ${D}${sysconfdir}/init.d - install -m 0755 ${B}/osaf/services/infrastructure/nid/scripts/opensafd ${D}${sysconfdir}/init.d/ - fi -} - -addtask sysvinit_install after do_install before do_package -
Signature · 1 line
2.7.4
PATCH 4/15 luajit: mips and mipsel are 32bit targets too
In reply to Armin KusterFrom: Andre McCurdy <[email protected]>
When cross compiling, the word size of the compiler set via HOST_CC must match the word size of the target. That's achieved by appending "-m32" to BUILD_CC_ARCH if the target word size is known to be 32bits.
Unfortunately the current list of over-rides (powerpc, x86 and arm) does not cover all cases. Add mips and mipsel to the list too (which is still not enough to cover all targets or corner cases such as x32, but better than before).
--- meta-oe/recipes-devtools/luajit/luajit_2.0.4.bb | 2 ++ 1 file changed, 2 insertions(+)
meta-oe/recipes-devtools/luajit/luajit_2.0.4.bb +2 -0
@@ -24,6 +24,8 @@ BBCLASSEXTEND = "native" BUILD_CC_ARCH_append_powerpc = ' -m32' BUILD_CC_ARCH_append_x86 = ' -m32' BUILD_CC_ARCH_append_arm = ' -m32' +BUILD_CC_ARCH_append_mips = ' -m32' +BUILD_CC_ARCH_append_mipsel = ' -m32' # The lua makefiles expect the TARGET_SYS to be from uname -s # Values: Windows, Linux, Darwin, iOS, SunOS, PS3, GNU/kFreeBSD
Signature · 1 line
2.7.4
PATCH 5/15 mariadb: Do not use ucontext_* APIs with musl
In reply to Armin KusterFrom: Khem Raj <[email protected]>
musl has ucontext.h header but does not implement the APIs
--- meta-oe/recipes-support/mysql/mariadb.inc | 1 + .../mariadb/0001-disable-ucontext-on-musl.patch | 28 ++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 meta-oe/recipes-support/mysql/mariadb/0001-disable-ucontext-on-musl.patch
meta-oe/recipes-support/mysql/mariadb.inc +1 -0
@@ -16,6 +16,7 @@ SRC_URI = "http://downloads.mariadb.com/MariaDB/mariadb-${PV}/source/mariadb-${P file://configure.cmake-fix-valgrind.patch \ file://fix-a-building-failure.patch \ file://change-cc-to-cc-version.patch \ + file://0001-disable-ucontext-on-musl.patch \ " SRC_URI[md5sum] = "fca86f1eaed2163b4bdce4f98f472324" SRC_URI[sha256sum] = "e142f9459507b97c5848042863b313ce70750118446bb4e35e5c07fe66007293"
meta-oe/recipes-support/mysql/mariadb/0001-disable-ucontext-on-musl.patch new file +28 -0
@@ -0,0 +1,28 @@ +From 5bc3e7ef9700d12054e0125a126f1bb093f01ef9 Mon Sep 17 00:00:00 2001 +From: Khem Raj <[email protected]> +Date: Sun, 26 Mar 2017 14:30:33 -0700 +Subject: [PATCH] disable ucontext on musl + +musl does not have *contex() APIs even though it has ucontext.h header + +Signed-off-by: Khem Raj <[email protected]> +--- + include/my_context.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/my_context.h b/include/my_context.h +index dd44103..9b28c17 100644 +--- a/include/my_context.h ++++ b/include/my_context.h +@@ -31,7 +31,7 @@ + #define MY_CONTEXT_USE_X86_64_GCC_ASM + #elif defined(__GNUC__) && __GNUC__ >= 3 && defined(__i386__) + #define MY_CONTEXT_USE_I386_GCC_ASM +-#elif defined(HAVE_UCONTEXT_H) ++#elif defined(__GLIBC__) && defined(HAVE_UCONTEXT_H) + #define MY_CONTEXT_USE_UCONTEXT + #else + #define MY_CONTEXT_DISABLE +-- +2.12.1 +
Signature · 1 line
2.7.4
PATCH 6/15 hostapd: fix WPA2 key replay security bug
In reply to Armin KusterFrom: Isaac Hermida <[email protected]>
Note, hostapd and wpa_supplicant use the same sources. This commit uses the same patch than OpenEmbedded-core commit 1d92cb1a20135cfffff9f94a6633ec0840518738 in morty branch.
--- .../hostapd/hostapd/key-replay-cve-multiple.patch | 939 +++++++++++++++++++++ .../recipes-connectivity/hostapd/hostapd_2.5.bb | 1 + 2 files changed, 940 insertions(+) create mode 100644 meta-oe/recipes-connectivity/hostapd/hostapd/key-replay-cve-multiple.patch
meta-oe/recipes-connectivity/hostapd/hostapd/key-replay-cve-multiple.patch new file +939 -0
@@ -0,0 +1,939 @@ +The WPA2 four-way handshake protocol is vulnerable to replay attacks which can +result in unauthenticated clients gaining access to the network. + +Backport a number of patches from upstream to fix this. + +CVE: CVE-2017-13077 +CVE: CVE-2017-13078 +CVE: CVE-2017-13079 +CVE: CVE-2017-13080 +CVE: CVE-2017-13081 +CVE: CVE-2017-13082 +CVE: CVE-2017-13086 +CVE: CVE-2017-13087 +CVE: CVE-2017-13088 + +Thanks to Wind River for the backport from upstream master to wpa_supplicant +2.5. + +Upstream-Status: Backport +Signed-off-by: Ross Burton <[email protected]> + +From 9a4a0f78bb2ad516d4a295fb5d042f8a61bd3f47 Mon Sep 17 00:00:00 2001 +From: Haiqing Bai <[email protected]> +Date: Thu, 12 Oct 2017 10:13:17 +0800 +Subject: [PATCH 1/7] hostapd: Avoid key reinstallation in FT handshake + +Do not reinstall TK to the driver during Reassociation Response frame +processing if the first attempt of setting the TK succeeded. This avoids +issues related to clearing the TX/RX PN that could result in reusing +same PN values for transmitted frames (e.g., due to CCM nonce reuse and +also hitting replay protection on the receiver) and accepting replayed +frames on RX side. + +This issue was introduced by the commit +0e84c25434e6a1f283c7b4e62e483729085b78d2 ('FT: Fix PTK configuration in +authenticator') which allowed wpa_ft_install_ptk() to be called multiple +times with the same PTK. While the second configuration attempt is +needed with some drivers, it must be done only if the first attempt +failed. + +Signed-off-by: Mathy Vanhoef <[email protected]> + +Upstream-Status: Backport + +Signed-off-by: Haiqing Bai <[email protected]> +--- + src/ap/wpa_auth.c | 9 +++++++++ + src/ap/wpa_auth.h | 3 ++- + src/ap/wpa_auth_ft.c | 10 ++++++++++ + src/ap/wpa_auth_i.h | 1 + + 4 files changed, 22 insertions(+), 1 deletion(-) + +diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c +index 2760a3f..b38a64d 100644 +--- a/src/ap/wpa_auth.c ++++ b/src/ap/wpa_auth.c +@@ -1740,6 +1740,9 @@ int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event) + #else /* CONFIG_IEEE80211R */ + break; + #endif /* CONFIG_IEEE80211R */ ++ case WPA_DRV_STA_REMOVED: ++ sm->tk_already_set = FALSE; ++ return 0; + } + + #ifdef CONFIG_IEEE80211R +@@ -3208,6 +3211,12 @@ int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm) + return sm->wpa; + } + ++int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm) ++{ ++ if (!sm || !wpa_key_mgmt_ft(sm->wpa_key_mgmt)) ++ return 0; ++ return sm->tk_already_set; ++} + + int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm, + struct rsn_pmksa_cache_entry *entry) +diff --git a/src/ap/wpa_auth.h b/src/ap/wpa_auth.h +index fd04f16..3e53461 100644 +--- a/src/ap/wpa_auth.h ++++ b/src/ap/wpa_auth.h +@@ -258,7 +258,7 @@ void wpa_receive(struct wpa_authenticator *wpa_auth, + u8 *data, size_t data_len); + enum wpa_event { + WPA_AUTH, WPA_ASSOC, WPA_DISASSOC, WPA_DEAUTH, WPA_REAUTH, +- WPA_REAUTH_EAPOL, WPA_ASSOC_FT ++ WPA_REAUTH_EAPOL, WPA_ASSOC_FT, WPA_DRV_STA_REMOVED + }; + void wpa_remove_ptk(struct wpa_state_machine *sm); + int wpa_auth_sm_event(struct wpa_state_machine *sm, enum wpa_event event); +@@ -271,6 +271,7 @@ int wpa_auth_pairwise_set(struct wpa_state_machine *sm); + int wpa_auth_get_pairwise(struct wpa_state_machine *sm); + int wpa_auth_sta_key_mgmt(struct wpa_state_machine *sm); + int wpa_auth_sta_wpa_version(struct wpa_state_machine *sm); ++int wpa_auth_sta_ft_tk_already_set(struct wpa_state_machine *sm); + int wpa_auth_sta_clear_pmksa(struct wpa_state_machine *sm, + struct rsn_pmksa_cache_entry *entry); + struct rsn_pmksa_cache_entry * +diff --git a/src/ap/wpa_auth_ft.c b/src/ap/wpa_auth_ft.c +index eeaffbf..f8f5dbe 100644 +--- a/src/ap/wpa_auth_ft.c ++++ b/src/ap/wpa_auth_ft.c +@@ -780,6 +780,14 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm) + return; + } + ++ if (sm->tk_already_set) { ++ /* Must avoid TK reconfiguration to prevent clearing of TX/RX ++ * PN in the driver */ ++ wpa_printf(MSG_DEBUG, ++ "FT: Do not re-install same PTK to the driver"); ++ return; ++ } ++ + /* FIX: add STA entry to kernel/driver here? The set_key will fail + * most likely without this.. At the moment, STA entry is added only + * after association has been completed. This function will be called +@@ -792,6 +800,7 @@ void wpa_ft_install_ptk(struct wpa_state_machine *sm) + + /* FIX: MLME-SetProtection.Request(TA, Tx_Rx) */ + sm->pairwise_set = TRUE; ++ sm->tk_already_set = TRUE; + } + + +@@ -898,6 +907,7 @@ static int wpa_ft_process_auth_req(struct wpa_state_machine *sm, + + sm->pairwise = pairwise; + sm->PTK_valid = TRUE; ++ sm->tk_already_set = FALSE; + wpa_ft_install_ptk(sm); + + buflen = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) + +diff --git a/src/ap/wpa_auth_i.h b/src/ap/wpa_auth_i.h +index 57b098f..234d84c 100644 +--- a/src/ap/wpa_auth_i.h ++++ b/src/ap/wpa_auth_i.h +@@ -64,6 +64,7 @@ struct wpa_state_machine { + struct wpa_ptk PTK; + Boolean PTK_valid; + Boolean pairwise_set; ++ Boolean tk_already_set; + int keycount; + Boolean Pair; + struct wpa_key_replay_counter { +-- +1.9.1 + +From d0d1adad8792ae948743031543db8839f83db829 Mon Sep 17 00:00:00 2001 +From: Haiqing Bai <[email protected]> +Date: Thu, 12 Oct 2017 13:18:59 +0800 +Subject: [PATCH 2/7] Prevent reinstallation of an already in-use group key + +Track the current GTK and IGTK that is in use and when receiving a +(possibly retransmitted) Group Message 1 or WNM-Sleep Mode Response, do +not install the given key if it is already in use. This prevents an +attacker from trying to trick the client into resetting or lowering the +sequence counter associated to the group key. + +Signed-off-by: Mathy Vanhoef <[email protected]> + +Upstream-Status: Backport + +Signed-off-by: Haiqing Bai <[email protected]> +--- + src/common/wpa_common.h | 11 +++++ + src/rsn_supp/wpa.c | 119 +++++++++++++++++++++++++++++------------------- + src/rsn_supp/wpa_i.h | 4 ++ + 3 files changed, 88 insertions(+), 46 deletions(-) + +diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h +index c08f651..21e13da 100644 +--- a/src/common/wpa_common.h ++++ b/src/common/wpa_common.h +@@ -215,6 +215,17 @@ struct wpa_ptk { + size_t tk_len; + }; + ++struct wpa_gtk { ++ u8 gtk[WPA_GTK_MAX_LEN]; ++ size_t gtk_len; ++}; ++ ++#ifdef CONFIG_IEEE80211W ++struct wpa_igtk { ++ u8 igtk[WPA_IGTK_MAX_LEN]; ++ size_t igtk_len; ++}; ++#endif /* CONFIG_IEEE80211W */ + + /* WPA IE version 1 + * 00-50-f2:1 (OUI:OUI type) +diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c +index a9f255e..eab7151 100644 +--- a/src/rsn_supp/wpa.c ++++ b/src/rsn_supp/wpa.c +@@ -697,6 +697,15 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm, + const u8 *_gtk = gd->gtk; + u8 gtk_buf[32]; + ++ /* Detect possible key reinstallation */ ++ if (sm->gtk.gtk_len == (size_t) gd->gtk_len && ++ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) { ++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, ++ "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)", ++ gd->keyidx, gd->tx, gd->gtk_len); ++ return 0; ++ } ++ + wpa_hexdump_key(MSG_DEBUG, "WPA: Group Key", gd->gtk, gd->gtk_len); + wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, + "WPA: Installing GTK to the driver (keyidx=%d tx=%d len=%d)", +@@ -731,6 +740,9 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm, + } + os_memset(gtk_buf, 0, sizeof(gtk_buf)); + ++ sm->gtk.gtk_len = gd->gtk_len; ++ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len); ++ + return 0; + } + +@@ -801,6 +813,47 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm, + return 0; + } + ++#ifdef CONFIG_IEEE80211W ++static int wpa_supplicant_install_igtk(struct wpa_sm *sm, ++ const struct wpa_igtk_kde *igtk) ++{ ++ size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher); ++ u16 keyidx = WPA_GET_LE16(igtk->keyid); ++ ++ /* Detect possible key reinstallation */ ++ if (sm->igtk.igtk_len == len && ++ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) { ++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, ++ "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)", ++ keyidx); ++ return 0; ++ } ++ ++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, ++ "WPA: IGTK keyid %d pn %02x%02x%02x%02x%02x%02x", ++ keyidx, MAC2STR(igtk->pn)); ++ wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", igtk->igtk, len); ++ if (keyidx > 4095) { ++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, ++ "WPA: Invalid IGTK KeyID %d", keyidx); ++ return -1; ++ } ++ if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher), ++ broadcast_ether_addr, ++ keyidx, 0, igtk->pn, sizeof(igtk->pn), ++ igtk->igtk, len) < 0) { ++ wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, ++ "WPA: Failed to configure IGTK to the driver"); ++ return -1; ++ } ++ ++ sm->igtk.igtk_len = len; ++ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len); ++ ++ return 0; ++} ++#endif /* CONFIG_IEEE80211W */ ++ + + static int ieee80211w_set_keys(struct wpa_sm *sm, + struct wpa_eapol_ie_parse *ie) +@@ -812,30 +865,14 @@ static int ieee80211w_set_keys(struct wpa_sm *sm, + if (ie->igtk) { + size_t len; + const struct wpa_igtk_kde *igtk; +- u16 keyidx; ++ + len = wpa_cipher_key_len(sm->mgmt_group_cipher); + if (ie->igtk_len != WPA_IGTK_KDE_PREFIX_LEN + len) + return -1; ++ + igtk = (const struct wpa_igtk_kde *) ie->igtk; +- keyidx = WPA_GET_LE16(igtk->keyid); +- wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, "WPA: IGTK keyid %d " +- "pn %02x%02x%02x%02x%02x%02x", +- keyidx, MAC2STR(igtk->pn)); +- wpa_hexdump_key(MSG_DEBUG, "WPA: IGTK", +- igtk->igtk, len); +- if (keyidx > 4095) { +- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, +- "WPA: Invalid IGTK KeyID %d", keyidx); +- return -1; +- } +- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher), +- broadcast_ether_addr, +- keyidx, 0, igtk->pn, sizeof(igtk->pn), +- igtk->igtk, len) < 0) { +- wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, +- "WPA: Failed to configure IGTK to the driver"); +- return -1; +- } ++ if (wpa_supplicant_install_igtk(sm, igtk) < 0) ++ return -1; + } + + return 0; +@@ -2251,7 +2288,7 @@ void wpa_sm_deinit(struct wpa_sm *sm) + */ + void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid) + { +- int clear_ptk = 1; ++ int clear_keys = 1; + + if (sm == NULL) + return; +@@ -2277,11 +2314,11 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid) + /* Prepare for the next transition */ + wpa_ft_prepare_auth_request(sm, NULL); + +- clear_ptk = 0; ++ clear_keys = 0; + } + #endif /* CONFIG_IEEE80211R */ + +- if (clear_ptk) { ++ if (clear_keys) { + /* + * IEEE 802.11, 8.4.10: Delete PTK SA on (re)association if + * this is not part of a Fast BSS Transition. +@@ -2291,6 +2328,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid) + os_memset(&sm->ptk, 0, sizeof(sm->ptk)); + sm->tptk_set = 0; + os_memset(&sm->tptk, 0, sizeof(sm->tptk)); ++ os_memset(&sm->gtk, 0, sizeof(sm->gtk)); ++#ifdef CONFIG_IEEE80211W ++ os_memset(&sm->igtk, 0, sizeof(sm->igtk)); ++#endif /* CONFIG_IEEE80211W */ + } + + #ifdef CONFIG_TDLS +@@ -2807,6 +2848,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm) + os_memset(sm->pmk, 0, sizeof(sm->pmk)); + os_memset(&sm->ptk, 0, sizeof(sm->ptk)); + os_memset(&sm->tptk, 0, sizeof(sm->tptk)); ++ os_memset(&sm->gtk, 0, sizeof(sm->gtk)); ++#ifdef CONFIG_IEEE80211W ++ os_memset(&sm->igtk, 0, sizeof(sm->igtk)); ++#endif /* CONFIG_IEEE80211W */ + #ifdef CONFIG_IEEE80211R + os_memset(sm->xxkey, 0, sizeof(sm->xxkey)); + os_memset(sm->pmk_r0, 0, sizeof(sm->pmk_r0)); +@@ -2879,29 +2924,11 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf) + os_memset(&gd, 0, sizeof(gd)); + #ifdef CONFIG_IEEE80211W + } else if (subelem_id == WNM_SLEEP_SUBELEM_IGTK) { +- struct wpa_igtk_kde igd; +- u16 keyidx; +- +- os_memset(&igd, 0, sizeof(igd)); +- keylen = wpa_cipher_key_len(sm->mgmt_group_cipher); +- os_memcpy(igd.keyid, buf + 2, 2); +- os_memcpy(igd.pn, buf + 4, 6); +- +- keyidx = WPA_GET_LE16(igd.keyid); +- os_memcpy(igd.igtk, buf + 10, keylen); +- +- wpa_hexdump_key(MSG_DEBUG, "Install IGTK (WNM SLEEP)", +- igd.igtk, keylen); +- if (wpa_sm_set_key(sm, wpa_cipher_to_alg(sm->mgmt_group_cipher), +- broadcast_ether_addr, +- keyidx, 0, igd.pn, sizeof(igd.pn), +- igd.igtk, keylen) < 0) { +- wpa_printf(MSG_DEBUG, "Failed to install the IGTK in " +- "WNM mode"); +- os_memset(&igd, 0, sizeof(igd)); +- return -1; +- } +- os_memset(&igd, 0, sizeof(igd)); ++ const struct wpa_igtk_kde *igtk; ++ ++ igtk = (const struct wpa_igtk_kde *) (buf + 2); ++ if (wpa_supplicant_install_igtk(sm, igtk) < 0) ++ return -1; + #endif /* CONFIG_IEEE80211W */ + } else { + wpa_printf(MSG_DEBUG, "Unknown element id"); +diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h +index 965a9c1..27b6123 100644 +--- a/src/rsn_supp/wpa_i.h ++++ b/src/rsn_supp/wpa_i.h +@@ -30,6 +30,10 @@ struct wpa_sm { + u8 rx_replay_counter[WPA_REPLAY_COUNTER_LEN]; + int rx_replay_counter_set; + u8 request_counter[WPA_REPLAY_COUNTER_LEN]; ++ struct wpa_gtk gtk; ++#ifdef CONFIG_IEEE80211W ++ struct wpa_igtk igtk; ++#endif /* CONFIG_IEEE80211W */ + + struct eapol_sm *eapol; /* EAPOL state machine from upper level code */ + +-- +1.9.1 + +From 76c0d1a21f0ebf00119e50bc57776d393ee4a30d Mon Sep 17 00:00:00 2001 +From: Haiqing Bai <[email protected]> +Date: Thu, 12 Oct 2017 17:31:46 +0800 +Subject: [PATCH 3/7] Extend protection of GTK/IGTK reinstallation of WNM-Sleep + Mode cases + +This extends the protection to track last configured GTK/IGTK value +separately from EAPOL-Key frames and WNM-Sleep Mode frames to cover a +corner case where these two different mechanisms may get used when the +GTK/IGTK has changed and tracking a single value is not sufficient to +detect a possible key reconfiguration. + +Signed-off-by: Jouni Malinen <[email protected]> + +Upstream-Status: Backport + +Signed-off-by: Haiqing Bai <[email protected]> +--- + src/rsn_supp/wpa.c | 53 +++++++++++++++++++++++++++++++++++++--------------- + src/rsn_supp/wpa_i.h | 2 ++ + 2 files changed, 40 insertions(+), 15 deletions(-) + +diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c +index eab7151..e7b5ca8 100644 +--- a/src/rsn_supp/wpa.c ++++ b/src/rsn_supp/wpa.c +@@ -692,14 +692,17 @@ struct wpa_gtk_data { + + static int wpa_supplicant_install_gtk(struct wpa_sm *sm, + const struct wpa_gtk_data *gd, +- const u8 *key_rsc) ++ const u8 *key_rsc, int wnm_sleep) + { + const u8 *_gtk = gd->gtk; + u8 gtk_buf[32]; + + /* Detect possible key reinstallation */ +- if (sm->gtk.gtk_len == (size_t) gd->gtk_len && +- os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) { ++ if ((sm->gtk.gtk_len == (size_t) gd->gtk_len && ++ os_memcmp(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len) == 0) || ++ (sm->gtk_wnm_sleep.gtk_len == (size_t) gd->gtk_len && ++ os_memcmp(sm->gtk_wnm_sleep.gtk, gd->gtk, ++ sm->gtk_wnm_sleep.gtk_len) == 0)) { + wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, + "WPA: Not reinstalling already in-use GTK to the driver (keyidx=%d tx=%d len=%d)", + gd->keyidx, gd->tx, gd->gtk_len); +@@ -740,8 +743,14 @@ static int wpa_supplicant_install_gtk(struct wpa_sm *sm, + } + os_memset(gtk_buf, 0, sizeof(gtk_buf)); + +- sm->gtk.gtk_len = gd->gtk_len; +- os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len); ++ if (wnm_sleep) { ++ sm->gtk_wnm_sleep.gtk_len = gd->gtk_len; ++ os_memcpy(sm->gtk_wnm_sleep.gtk, gd->gtk, ++ sm->gtk_wnm_sleep.gtk_len); ++ } else { ++ sm->gtk.gtk_len = gd->gtk_len; ++ os_memcpy(sm->gtk.gtk, gd->gtk, sm->gtk.gtk_len); ++ } + + return 0; + } +@@ -800,7 +809,7 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm, + (wpa_supplicant_check_group_cipher(sm, sm->group_cipher, + gtk_len, gtk_len, + &gd.key_rsc_len, &gd.alg) || +- wpa_supplicant_install_gtk(sm, &gd, key->key_rsc))) { ++ wpa_supplicant_install_gtk(sm, &gd, key->key_rsc, 0))) { + wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, + "RSN: Failed to install GTK"); + os_memset(&gd, 0, sizeof(gd)); +@@ -815,14 +824,18 @@ static int wpa_supplicant_pairwise_gtk(struct wpa_sm *sm, + + #ifdef CONFIG_IEEE80211W + static int wpa_supplicant_install_igtk(struct wpa_sm *sm, +- const struct wpa_igtk_kde *igtk) ++ const struct wpa_igtk_kde *igtk, ++ int wnm_sleep) + { + size_t len = wpa_cipher_key_len(sm->mgmt_group_cipher); + u16 keyidx = WPA_GET_LE16(igtk->keyid); + + /* Detect possible key reinstallation */ +- if (sm->igtk.igtk_len == len && +- os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) { ++ if ((sm->igtk.igtk_len == len && ++ os_memcmp(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len) == 0) || ++ (sm->igtk_wnm_sleep.igtk_len == len && ++ os_memcmp(sm->igtk_wnm_sleep.igtk, igtk->igtk, ++ sm->igtk_wnm_sleep.igtk_len) == 0)) { + wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, + "WPA: Not reinstalling already in-use IGTK to the driver (keyidx=%d)", + keyidx); +@@ -847,8 +860,14 @@ static int wpa_supplicant_install_igtk(struct wpa_sm *sm, + return -1; + } + +- sm->igtk.igtk_len = len; +- os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len); ++ if (wnm_sleep) { ++ sm->igtk_wnm_sleep.igtk_len = len; ++ os_memcpy(sm->igtk_wnm_sleep.igtk, igtk->igtk, ++ sm->igtk_wnm_sleep.igtk_len); ++ } else { ++ sm->igtk.igtk_len = len; ++ os_memcpy(sm->igtk.igtk, igtk->igtk, sm->igtk.igtk_len); ++ } + + return 0; + } +@@ -871,7 +890,7 @@ static int ieee80211w_set_keys(struct wpa_sm *sm, + return -1; + + igtk = (const struct wpa_igtk_kde *) ie->igtk; +- if (wpa_supplicant_install_igtk(sm, igtk) < 0) ++ if (wpa_supplicant_install_igtk(sm, igtk, 0) < 0) + return -1; + } + +@@ -1520,7 +1539,7 @@ static void wpa_supplicant_process_1_of_2(struct wpa_sm *sm, + if (ret) + goto failed; + +- if (wpa_supplicant_install_gtk(sm, &gd, key->key_rsc) || ++ if (wpa_supplicant_install_gtk(sm, &gd, key->key_rsc, 0) || + wpa_supplicant_send_2_of_2(sm, key, ver, key_info)) + goto failed; + os_memset(&gd, 0, sizeof(gd)); +@@ -2329,8 +2348,10 @@ void wpa_sm_notify_assoc(struct wpa_sm *sm, const u8 *bssid) + sm->tptk_set = 0; + os_memset(&sm->tptk, 0, sizeof(sm->tptk)); + os_memset(&sm->gtk, 0, sizeof(sm->gtk)); ++ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep)); + #ifdef CONFIG_IEEE80211W + os_memset(&sm->igtk, 0, sizeof(sm->igtk)); ++ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep)); + #endif /* CONFIG_IEEE80211W */ + } + +@@ -2849,8 +2870,10 @@ void wpa_sm_drop_sa(struct wpa_sm *sm) + os_memset(&sm->ptk, 0, sizeof(sm->ptk)); + os_memset(&sm->tptk, 0, sizeof(sm->tptk)); + os_memset(&sm->gtk, 0, sizeof(sm->gtk)); ++ os_memset(&sm->gtk_wnm_sleep, 0, sizeof(sm->gtk_wnm_sleep)); + #ifdef CONFIG_IEEE80211W + os_memset(&sm->igtk, 0, sizeof(sm->igtk)); ++ os_memset(&sm->igtk_wnm_sleep, 0, sizeof(sm->igtk_wnm_sleep)); + #endif /* CONFIG_IEEE80211W */ + #ifdef CONFIG_IEEE80211R + os_memset(sm->xxkey, 0, sizeof(sm->xxkey)); +@@ -2915,7 +2938,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf) + + wpa_hexdump_key(MSG_DEBUG, "Install GTK (WNM SLEEP)", + gd.gtk, gd.gtk_len); +- if (wpa_supplicant_install_gtk(sm, &gd, key_rsc)) { ++ if (wpa_supplicant_install_gtk(sm, &gd, key_rsc, 1)) { + os_memset(&gd, 0, sizeof(gd)); + wpa_printf(MSG_DEBUG, "Failed to install the GTK in " + "WNM mode"); +@@ -2927,7 +2950,7 @@ int wpa_wnmsleep_install_key(struct wpa_sm *sm, u8 subelem_id, u8 *buf) + const struct wpa_igtk_kde *igtk; + + igtk = (const struct wpa_igtk_kde *) (buf + 2); +- if (wpa_supplicant_install_igtk(sm, igtk) < 0) ++ if (wpa_supplicant_install_igtk(sm, igtk, 1) < 0) + return -1; + #endif /* CONFIG_IEEE80211W */ + } else { +diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h +index 27b6123..51753ee 100644 +--- a/src/rsn_supp/wpa_i.h ++++ b/src/rsn_supp/wpa_i.h +@@ -31,8 +31,10 @@ struct wpa_sm { + int rx_replay_counter_set; + u8 request_counter[WPA_REPLAY_COUNTER_LEN]; + struct wpa_gtk gtk; ++ struct wpa_gtk gtk_wnm_sleep; + #ifdef CONFIG_IEEE80211W + struct wpa_igtk igtk; ++ struct wpa_igtk igtk_wnm_sleep; + #endif /* CONFIG_IEEE80211W */ + + struct eapol_sm *eapol; /* EAPOL state machine from upper level code */ +-- +1.9.1 + +From dc0d33ee697d016f14d0b6f3330720de2dfa9ad8 Mon Sep 17 00:00:00 2001 +From: Haiqing Bai <[email protected]> +Date: Thu, 12 Oct 2017 17:55:19 +0800 +Subject: [PATCH 4/7] Prevent installation of an all-zero TK + +Properly track whether a PTK has already been installed to the driver +and the TK part cleared from memory. This prevents an attacker from +trying to trick the client into installing an all-zero TK. + +Signed-off-by: Mathy Vanhoef <[email protected]> + +Upstream-Status: Backport + +Signed-off-by: Haiqing Bai <[email protected]> +--- + src/common/wpa_common.h | 1 + + src/rsn_supp/wpa.c | 7 +++++++ + 2 files changed, 8 insertions(+) + +diff --git a/src/common/wpa_common.h b/src/common/wpa_common.h +index 21e13da..a04e759 100644 +--- a/src/common/wpa_common.h ++++ b/src/common/wpa_common.h +@@ -213,6 +213,7 @@ struct wpa_ptk { + size_t kck_len; + size_t kek_len; + size_t tk_len; ++ int installed; /* 1 if key has already been installed to driver */ + }; + + struct wpa_gtk { +diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c +index e7b5ca8..cb69b67 100644 +--- a/src/rsn_supp/wpa.c ++++ b/src/rsn_supp/wpa.c +@@ -605,6 +605,12 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm, + const u8 *key_rsc; + u8 null_rsc[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + ++ if (sm->ptk.installed) { ++ wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, ++ "WPA: Do not re-install same PTK to the driver"); ++ return 0; ++ } ++ + wpa_dbg(sm->ctx->msg_ctx, MSG_DEBUG, + "WPA: Installing PTK to the driver"); + +@@ -643,6 +649,7 @@ static int wpa_supplicant_install_ptk(struct wpa_sm *sm, + + /* TK is not needed anymore in supplicant */ + os_memset(sm->ptk.tk, 0, WPA_TK_MAX_LEN); ++ sm->ptk.installed = 1; + + if (sm->wpa_ptk_rekey) { + eloop_cancel_timeout(wpa_sm_rekey_ptk, sm, NULL); +-- +1.9.1 + +From 9831007c38f18cd70a077fccc22c836100867138 Mon Sep 17 00:00:00 2001 +From: Haiqing Bai <[email protected]> +Date: Thu, 12 Oct 2017 19:45:13 +0800 +Subject: [PATCH 5/7] Fix PTK rekeying to generate a new ANonce + +The Authenticator state machine path for PTK rekeying ended up bypassing +the AUTHENTICATION2 state where a new ANonce is generated when going +directly to the PTKSTART state since there is no need to try to +determine the PMK again in such a case. This is far from ideal since the +new PTK would depend on a new nonce only from the supplicant. + +Fix this by generating a new ANonce when moving to the PTKSTART state +for the purpose of starting new 4-way handshake to rekey PTK. + +Signed-off-by: Jouni Malinen <[email protected]> + +Upstream-Status: Backport + +Signed-off-by: Haiqing Bai <[email protected]> +--- + src/ap/wpa_auth.c | 23 ++++++++++++++++++++--- + 1 file changed, 20 insertions(+), 3 deletions(-) + +diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c +index b38a64d..c603b1b 100644 +--- a/src/ap/wpa_auth.c ++++ b/src/ap/wpa_auth.c +@@ -1895,6 +1895,20 @@ SM_STATE(WPA_PTK, AUTHENTICATION2) + sm->TimeoutCtr = 0; + } + ++static int wpa_auth_sm_ptk_update(struct wpa_state_machine *sm) ++{ ++ if (random_get_bytes(sm->ANonce, WPA_NONCE_LEN)) { ++ wpa_printf(MSG_ERROR, ++ "WPA: Failed to get random data for ANonce"); ++ sm->Disconnect = TRUE; ++ return -1; ++ } ++ wpa_hexdump(MSG_DEBUG, "WPA: Assign new ANonce", sm->ANonce, ++ WPA_NONCE_LEN); ++ sm->TimeoutCtr = 0; ++ return 0; ++} ++ + + SM_STATE(WPA_PTK, INITPMK) + { +@@ -2417,9 +2431,12 @@ SM_STEP(WPA_PTK) + SM_ENTER(WPA_PTK, AUTHENTICATION); + else if (sm->ReAuthenticationRequest) + SM_ENTER(WPA_PTK, AUTHENTICATION2); +- else if (sm->PTKRequest) +- SM_ENTER(WPA_PTK, PTKSTART); +- else switch (sm->wpa_ptk_state) { ++ else if (sm->PTKRequest) { ++ if (wpa_auth_sm_ptk_update(sm) < 0) ++ SM_ENTER(WPA_PTK, DISCONNECTED); ++ else ++ SM_ENTER(WPA_PTK, PTKSTART); ++ } else switch (sm->wpa_ptk_state) { + case WPA_PTK_INITIALIZE: + break; + case WPA_PTK_DISCONNECT: +-- +1.9.1 + +From 7ec70b3c5a5e32f7687999ef21c608524dcf35b9 Mon Sep 17 00:00:00 2001 +From: Haiqing Bai <[email protected]> +Date: Thu, 12 Oct 2017 20:09:26 +0800 +Subject: [PATCH 6/7] TDLS: Reject TPK-TK reconfiguration + +Do not try to reconfigure the same TPK-TK to the driver after it has +been successfully configured. This is an explicit check to avoid issues +related to resetting the TX/RX packet number. There was already a check +for this for TPK M2 (retries of that message are ignored completely), so +that behavior does not get modified. + +For TPK M3, the TPK-TK could have been reconfigured, but that was +followed by immediate teardown of the link due to an issue in updating +the STA entry. Furthermore, for TDLS with any real security (i.e., +ignoring open/WEP), the TPK message exchange is protected on the AP path +and simple replay attacks are not feasible. + +As an additional corner case, make sure the local nonce gets updated if +the peer uses a very unlikely "random nonce" of all zeros. + +Signed-off-by: Jouni Malinen <[email protected]> + +Upstream-Status: Backport + +Signed-off-by: Haiqing Bai <[email protected]> +--- + src/rsn_supp/tdls.c | 36 ++++++++++++++++++++++++++++++++++-- + 1 file changed, 34 insertions(+), 2 deletions(-) + +diff --git a/src/rsn_supp/tdls.c b/src/rsn_supp/tdls.c +index 722c20a..0878c62 100644 +--- a/src/rsn_supp/tdls.c ++++ b/src/rsn_supp/tdls.c +@@ -112,6 +112,7 @@ struct wpa_tdls_peer { + u8 tk[16]; /* TPK-TK; assuming only CCMP will be used */ + } tpk; + int tpk_set; ++ int tk_set; /* TPK-TK configured to the driver */ + int tpk_success; + int tpk_in_progress; + +@@ -192,6 +193,20 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer) + u8 rsc[6]; + enum wpa_alg alg; + ++ if (peer->tk_set) { ++ /* ++ * This same TPK-TK has already been configured to the driver ++ * and this new configuration attempt (likely due to an ++ * unexpected retransmitted frame) would result in clearing ++ * the TX/RX sequence number which can break security, so must ++ * not allow that to happen. ++ */ ++ wpa_printf(MSG_INFO, "TDLS: TPK-TK for the peer " MACSTR ++ " has already been configured to the driver - do not reconfigure", ++ MAC2STR(peer->addr)); ++ return -1; ++ } ++ + os_memset(rsc, 0, 6); + + switch (peer->cipher) { +@@ -209,12 +224,15 @@ static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer) + return -1; + } + ++ wpa_printf(MSG_DEBUG, "TDLS: Configure pairwise key for peer " MACSTR, ++ MAC2STR(peer->addr)); + if (wpa_sm_set_key(sm, alg, peer->addr, -1, 1, + rsc, sizeof(rsc), peer->tpk.tk, key_len) < 0) { + wpa_printf(MSG_WARNING, "TDLS: Failed to set TPK to the " + "driver"); + return -1; + } ++ peer->tk_set = 1; + return 0; + } + +@@ -690,7 +708,7 @@ static void wpa_tdls_peer_clear(struct wpa_sm *sm, struct wpa_tdls_peer *peer) + peer->cipher = 0; + peer->qos_info = 0; + peer->wmm_capable = 0; +- peer->tpk_set = peer->tpk_success = 0; ++ peer->tk_set = peer->tpk_set = peer->tpk_success = 0; + peer->chan_switch_enabled = 0; + os_memset(&peer->tpk, 0, sizeof(peer->tpk)); + os_memset(peer->inonce, 0, WPA_NONCE_LEN); +@@ -1153,6 +1171,7 @@ skip_rsnie: + wpa_tdls_peer_free(sm, peer); + return -1; + } ++ peer->tk_set = 0; /* A new nonce results in a new TK */ + wpa_hexdump(MSG_DEBUG, "TDLS: Initiator Nonce for TPK handshake", + peer->inonce, WPA_NONCE_LEN); + os_memcpy(ftie->Snonce, peer->inonce, WPA_NONCE_LEN); +@@ -1744,6 +1763,17 @@ static int wpa_tdls_addset_peer(struct wpa_sm *sm, struct wpa_tdls_peer *peer, + peer->supp_oper_classes_len); + } + ++static int tdls_nonce_set(const u8 *nonce) ++{ ++ int i; ++ ++ for (i = 0; i < WPA_NONCE_LEN; i++) { ++ if (nonce[i]) ++ return 1; ++ } ++ ++ return 0; ++} + + static int wpa_tdls_process_tpk_m1(struct wpa_sm *sm, const u8 *src_addr, + const u8 *buf, size_t len) +@@ -1998,7 +2028,8 @@ skip_rsn: + peer->rsnie_i_len = kde.rsn_ie_len; + peer->cipher = cipher; + +- if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0) { ++ if (os_memcmp(peer->inonce, ftie->Snonce, WPA_NONCE_LEN) != 0 || ++ !tdls_nonce_set(peer->inonce)) { + /* + * There is no point in updating the RNonce for every obtained + * TPK M1 frame (e.g., retransmission due to timeout) with the +@@ -2014,6 +2045,7 @@ skip_rsn: + "TDLS: Failed to get random data for responder nonce"); + goto error; + } ++ peer->tk_set = 0; /* A new nonce results in a new TK */ + } + + #if 0 +-- +1.9.1 + +From 642f5eadf775b41bf3ddd8ffe77c33e785bda48f Mon Sep 17 00:00:00 2001 +From: Haiqing Bai <[email protected]> +Date: Thu, 12 Oct 2017 20:36:56 +0800 +Subject: [PATCH 7/7] FT: Do not allow multiple Reassociation Response frames + +The driver is expected to not report a second association event without +the station having explicitly request a new association. As such, this +case should not be reachable. However, since reconfiguring the same +pairwise or group keys to the driver could result in nonce reuse issues, +be extra careful here and do an additional state check to avoid this +even if the local driver ends up somehow accepting an unexpected +Reassociation Response frame. + +Signed-off-by: Jouni Malinen <[email protected]> + +Upstream-Status: Backport + +Signed-off-by: Haiqing Bai <[email protected]> +--- + src/rsn_supp/wpa.c | 3 +++ + src/rsn_supp/wpa_ft.c | 8 ++++++++ + src/rsn_supp/wpa_i.h | 1 + + 3 files changed, 12 insertions(+) + +diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c +index cb69b67..05e5168 100644 +--- a/src/rsn_supp/wpa.c ++++ b/src/rsn_supp/wpa.c +@@ -2391,6 +2391,9 @@ void wpa_sm_notify_disassoc(struct wpa_sm *sm) + #ifdef CONFIG_TDLS + wpa_tdls_disassoc(sm); + #endif /* CONFIG_TDLS */ ++#ifdef CONFIG_IEEE80211R ++ sm->ft_reassoc_completed = 0; ++#endif /* CONFIG_IEEE80211R */ + + /* Keys are not needed in the WPA state machine anymore */ + wpa_sm_drop_sa(sm); +diff --git a/src/rsn_supp/wpa_ft.c b/src/rsn_supp/wpa_ft.c +index 205793e..d45bb45 100644 +--- a/src/rsn_supp/wpa_ft.c ++++ b/src/rsn_supp/wpa_ft.c +@@ -153,6 +153,7 @@ static u8 * wpa_ft_gen_req_ies(struct wpa_sm *sm, size_t *len, + u16 capab; + + sm->ft_completed = 0; ++ sm->ft_reassoc_completed = 0; + + buf_len = 2 + sizeof(struct rsn_mdie) + 2 + sizeof(struct rsn_ftie) + + 2 + sm->r0kh_id_len + ric_ies_len + 100; +@@ -681,6 +682,11 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies, + return -1; + } + ++ if (sm->ft_reassoc_completed) { ++ wpa_printf(MSG_DEBUG, "FT: Reassociation has already been completed for this FT protocol instance - ignore unexpected retransmission"); ++ return 0; ++ } ++ + if (wpa_ft_parse_ies(ies, ies_len, &parse) < 0) { + wpa_printf(MSG_DEBUG, "FT: Failed to parse IEs"); + return -1; +@@ -781,6 +787,8 @@ int wpa_ft_validate_reassoc_resp(struct wpa_sm *sm, const u8 *ies, + return -1; + } + ++ sm->ft_reassoc_completed = 1; ++ + if (wpa_ft_process_gtk_subelem(sm, parse.gtk, parse.gtk_len) < 0) + return -1; + +diff --git a/src/rsn_supp/wpa_i.h b/src/rsn_supp/wpa_i.h +index 51753ee..85cc862 100644 +--- a/src/rsn_supp/wpa_i.h ++++ b/src/rsn_supp/wpa_i.h +@@ -127,6 +127,7 @@ struct wpa_sm { + size_t r0kh_id_len; + u8 r1kh_id[FT_R1KH_ID_LEN]; + int ft_completed; ++ int ft_reassoc_completed; + int over_the_ds_in_progress; + u8 target_ap[ETH_ALEN]; /* over-the-DS target AP */ + int set_ptk_after_assoc; +-- +1.9.1 +
meta-oe/recipes-connectivity/hostapd/hostapd_2.5.bb +1 -0
@@ -17,6 +17,7 @@ SRC_URI = " \ file://init \ file://hostapd.service \ file://0001-WPS-Reject-a-Credential-with-invalid-passphrase.patch \ + file://key-replay-cve-multiple.patch \ " S = "${WORKDIR}/hostapd-${PV}"
Signature · 1 line
2.7.4
PATCH 7/15 wireshark: update to 2.2.5
In reply to Armin KusterFrom: Oleksandr Kravchuk <[email protected]>
---
.../wireshark/{wireshark_2.2.4.bb => wireshark_2.2.5.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-support/wireshark/{wireshark_2.2.4.bb => wireshark_2.2.5.bb} (95%)meta-networking/recipes-support/wireshark/wireshark_2.2.5.bb renamed from meta-networking/recipes-support/wireshark/wireshark_2.2.4.bb +2 -2
@@ -10,8 +10,8 @@ SRC_URI = "https://2.na.dl.wireshark.org/src/all-versions/${BP}.tar.bz2" PE = "1" -SRC_URI[md5sum] = "6d0878ba931ea379f6e675d4cba6536b" -SRC_URI[sha256sum] = "42a7fb35eed5a32478153e24601a284bb50148b7ba919c3e8452652f4c2a3911" +SRC_URI[md5sum] = "749e7ca7606ae7df5c1ca8c62f93ff31" +SRC_URI[sha256sum] = "75dd88d3d6336559e5b0b72077d8a772a988197d571f00029986225fef609ac8" inherit autotools pkgconfig perlnative
Signature · 1 line
2.7.4
PATCH 8/15 wireshark: update to 2.2.6
In reply to Armin KusterFrom: Armin Kuster <[email protected]>
The following vulnerabilities have been fixed:
* [1]wnpa-sec-2017-12
IMAP dissector crash ([2]Bug 13466) [3]CVE-2017-7703
* [4]wnpa-sec-2017-13
WBMXL dissector infinite loop ([5]Bug 13477) [6]CVE-2017-7702
* [7]wnpa-sec-2017-14
NetScaler file parser infinite loop ([8]Bug 13478) [9]CVE-2017-7700
* [10]wnpa-sec-2017-15
RPCoRDMA dissector infinite loop ([11]Bug 13558) [12]CVE-2017-7705
* [13]wnpa-sec-2017-16
BGP dissector infinite loop ([14]Bug 13557) [15]CVE-2017-7701
* [16]wnpa-sec-2017-17
DOF dissector infinite loop ([17]Bug 13453) [18]CVE-2017-7704
* [19]wnpa-sec-2017-18
PacketBB dissector crash ([20]Bug 13559)
* [21]wnpa-sec-2017-19
SLSK dissector long loop ([22]Bug 13576)
* [23]wnpa-sec-2017-20
SIGCOMP dissector infinite loop ([24]Bug 13578)
* [25]wnpa-sec-2017-21
WSP dissector infinite loop ([26]Bug 13581)
---
.../wireshark/{wireshark_2.2.5.bb => wireshark_2.2.6.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-support/wireshark/{wireshark_2.2.5.bb => wireshark_2.2.6.bb} (95%)meta-networking/recipes-support/wireshark/wireshark_2.2.6.bb renamed from meta-networking/recipes-support/wireshark/wireshark_2.2.5.bb +2 -2
@@ -10,8 +10,8 @@ SRC_URI = "https://2.na.dl.wireshark.org/src/all-versions/${BP}.tar.bz2" PE = "1" -SRC_URI[md5sum] = "749e7ca7606ae7df5c1ca8c62f93ff31" -SRC_URI[sha256sum] = "75dd88d3d6336559e5b0b72077d8a772a988197d571f00029986225fef609ac8" +SRC_URI[md5sum] = "2cd9a35c2df8c32668c1776784f074df" +SRC_URI[sha256sum] = "f627d51eda85f5ae5f5c8c9fc1f6539ffc2a270dd7500dc7f67490a8534ca849" inherit autotools pkgconfig perlnative
Signature · 1 line
2.7.4
PATCH 9/15 wireshark: Upgrade to 2.2.7
In reply to Armin KusterFrom: "fan.xin" <[email protected]>
Upgrade wireshark from 2.2.6 to 2.2.7
---
.../wireshark/{wireshark_2.2.6.bb => wireshark_2.2.7.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-support/wireshark/{wireshark_2.2.6.bb => wireshark_2.2.7.bb} (95%)meta-networking/recipes-support/wireshark/wireshark_2.2.7.bb renamed from meta-networking/recipes-support/wireshark/wireshark_2.2.6.bb +2 -2
@@ -10,8 +10,8 @@ SRC_URI = "https://2.na.dl.wireshark.org/src/all-versions/${BP}.tar.bz2" PE = "1" -SRC_URI[md5sum] = "2cd9a35c2df8c32668c1776784f074df" -SRC_URI[sha256sum] = "f627d51eda85f5ae5f5c8c9fc1f6539ffc2a270dd7500dc7f67490a8534ca849" +SRC_URI[md5sum] = "a4d880554c7f925dafef60fa313b580d" +SRC_URI[sha256sum] = "689ddf62221b152779d8846ab5b2063cc7fd41ec1a9f04eefab09b5d5486dbb5" inherit autotools pkgconfig perlnative
Signature · 1 line
2.7.4
PATCH 10/15 wireshark: 2.2.7 -> 2.2.8
In reply to Armin KusterFrom: Kai Kang <[email protected]>
---
.../wireshark/{wireshark_2.2.7.bb => wireshark_2.2.8.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-support/wireshark/{wireshark_2.2.7.bb => wireshark_2.2.8.bb} (95%)meta-networking/recipes-support/wireshark/wireshark_2.2.8.bb renamed from meta-networking/recipes-support/wireshark/wireshark_2.2.7.bb +2 -2
@@ -10,8 +10,8 @@ SRC_URI = "https://2.na.dl.wireshark.org/src/all-versions/${BP}.tar.bz2" PE = "1" -SRC_URI[md5sum] = "a4d880554c7f925dafef60fa313b580d" -SRC_URI[sha256sum] = "689ddf62221b152779d8846ab5b2063cc7fd41ec1a9f04eefab09b5d5486dbb5" +SRC_URI[md5sum] = "bb81d0ecf3a8ed46bedfaeae6fd318a8" +SRC_URI[sha256sum] = "ecf02c148c9ab6e809026ad5743fe9be1739a9840ef6fece6837a7ddfbdf7edc" inherit autotools pkgconfig perlnative
Signature · 1 line
2.7.4
PATCH 11/15 wireshark: update to 2.2.9
In reply to Armin KusterChange LIC_FILES_CHKSUM from README.linux to COPYING as COPYING contains the license info
2.2.9 security fixes:
wnpa-sec-2017-38
MSDP dissector infinite loop (Bug 13933) CVE-2017-13767
wnpa-sec-2017-39
Profinet I/O buffer overrun (Bug 13847) CVE-2017-13766
wnpa-sec-2017-41
IrCOMM dissector buffer overrun (Bug 13929) CVE-2017-13765---
.../wireshark/{wireshark_2.2.8.bb => wireshark_2.2.9.bb} | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
rename meta-networking/recipes-support/wireshark/{wireshark_2.2.8.bb => wireshark_2.2.9.bb} (93%)meta-networking/recipes-support/wireshark/wireshark_2.2.9.bb renamed from meta-networking/recipes-support/wireshark/wireshark_2.2.8.bb +3 -3
@@ -2,7 +2,7 @@ DESCRIPTION = "wireshark - a popular network protocol analyzer" HOMEPAGE = "http://www.wireshark.org" SECTION = "net" LICENSE = "GPL-2.0" -LIC_FILES_CHKSUM = "file://README.linux;md5=631e077455b7972172eb149195e065b0" +LIC_FILES_CHKSUM = "file://COPYING;md5=6e271234ba1a13c6e512e76b94ac2f77" DEPENDS = "pcre expat glib-2.0 glib-2.0-native"
@@ -10,8 +10,8 @@ SRC_URI = "https://2.na.dl.wireshark.org/src/all-versions/${BP}.tar.bz2" PE = "1" -SRC_URI[md5sum] = "bb81d0ecf3a8ed46bedfaeae6fd318a8" -SRC_URI[sha256sum] = "ecf02c148c9ab6e809026ad5743fe9be1739a9840ef6fece6837a7ddfbdf7edc" +SRC_URI[md5sum] = "7d5e65efd0714bd6248aa5b36c28320d" +SRC_URI[sha256sum] = "c8b32c0e7d44a277e737c53d9d142ad3fe4265338f25a7fd8c891f58a7633fc2" inherit autotools pkgconfig perlnative
Signature · 1 line
2.7.4
PATCH 12/15 wireshark: update to 2.2.10
In reply to Armin KusterThe following vulnerabilities have been fixed:
* [1]wnpa-sec-2017-42
BT ATT dissector crash ([2]Bug 14049) [3]CVE-2017-15192
* [4]wnpa-sec-2017-43
MBIM dissector crash ([5]Bug 14056) [6]CVE-2017-15193
* [7]wnpa-sec-2017-44
DMP dissector crash ([8]Bug 14068) [9]CVE-2017-15191
---
.../wireshark/{wireshark_2.2.9.bb => wireshark_2.2.10.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-support/wireshark/{wireshark_2.2.9.bb => wireshark_2.2.10.bb} (95%)meta-networking/recipes-support/wireshark/wireshark_2.2.10.bb renamed from meta-networking/recipes-support/wireshark/wireshark_2.2.9.bb +2 -2
@@ -10,8 +10,8 @@ SRC_URI = "https://2.na.dl.wireshark.org/src/all-versions/${BP}.tar.bz2" PE = "1" -SRC_URI[md5sum] = "7d5e65efd0714bd6248aa5b36c28320d" -SRC_URI[sha256sum] = "c8b32c0e7d44a277e737c53d9d142ad3fe4265338f25a7fd8c891f58a7633fc2" +SRC_URI[md5sum] = "ae3a1a43a6e3687f44a738fd15d78021" +SRC_URI[sha256sum] = "8574a5e1fdec7affae640924bd46c1aed1bd866e02632fa5625e1450e4a50707" inherit autotools pkgconfig perlnative
Signature · 1 line
2.7.4
PATCH 13/15 wireshark: Update to 2.2.11
In reply to Armin KusterFrom: Armin Kuster <[email protected]>
changed --with-ssh to --with-libssh=DIR
includes:
wnpa-sec-2017-47 : CVE-2017-17084
The IWARP_MPA dissector could crash. (Bug 14236)
wnpa-sec-2017-48 : CVE-2017-17083
The NetBIOS dissector could crash. (Bug 14249)
wnpa-sec-2017-49 : CVE-2017-17085
The CIP Safety dissector could crash. (Bug 14250)
release notes:
https://www.wireshark.org/docs/relnotes/wireshark-2.2.11.html
---
.../wireshark/{wireshark_2.2.10.bb => wireshark_2.2.11.bb} | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
rename meta-networking/recipes-support/wireshark/{wireshark_2.2.10.bb => wireshark_2.2.11.bb} (92%)meta-networking/recipes-support/wireshark/wireshark_2.2.11.bb renamed from meta-networking/recipes-support/wireshark/wireshark_2.2.10.bb +3 -3
@@ -10,8 +10,8 @@ SRC_URI = "https://2.na.dl.wireshark.org/src/all-versions/${BP}.tar.bz2" PE = "1" -SRC_URI[md5sum] = "ae3a1a43a6e3687f44a738fd15d78021" -SRC_URI[sha256sum] = "8574a5e1fdec7affae640924bd46c1aed1bd866e02632fa5625e1450e4a50707" +SRC_URI[md5sum] = "a79ba6cda83be2a91bde4110fe194788" +SRC_URI[sha256sum] = "a9f11621e85d7e1d72259157edd94825e72af3fd72e184b8474459f92ad5fc40" inherit autotools pkgconfig perlnative
@@ -39,7 +39,7 @@ PACKAGECONFIG[geoip] = "--with-geoip=yes, --with-geoip=no, geoip" PACKAGECONFIG[plugins] = "--with-plugins=yes, --with-plugins=no" PACKAGECONFIG[sbc] = "--with-sbc=yes, --with-sbc=no, sbc" -PACKAGECONFIG[libssh] = "--with-ssh=yes, --with-ssh=no, libssh2" +PACKAGECONFIG[libssh] = "--with-libssh=${STAGING_LIBDIR}, --with-libssh=no, libssh2" # these next two options require addional layers
Signature · 1 line
2.7.4
PATCH 14/15 wireshark: Update Package to 2.2.12
In reply to Armin KusterIncludes:
wnpa-sec-2018-01, Multiple dissectors could crash. (Bug 14253) CVE-2018-5336 wnpa-sec-2018-02, The MRDISC dissector could crash. (Bug 14299, Bug 13707) CVE-2017-17997 wnpa-sec-2018-03, The IxVeriWave file parser could crash. (Bug 14297) CVE-2018-5334 wnpa-sec-2018-04, The WCP dissector could crash. (Bug 14251) CVE-2018-5335
Full release notes: https://www.wireshark.org/docs/relnotes/wireshark-2.2.12.html
---
.../wireshark/{wireshark_2.2.11.bb => wireshark_2.2.12.bb} | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
rename meta-networking/recipes-support/wireshark/{wireshark_2.2.11.bb => wireshark_2.2.12.bb} (95%)meta-networking/recipes-support/wireshark/wireshark_2.2.12.bb renamed from meta-networking/recipes-support/wireshark/wireshark_2.2.11.bb +2 -2
@@ -10,8 +10,8 @@ SRC_URI = "https://2.na.dl.wireshark.org/src/all-versions/${BP}.tar.bz2" PE = "1" -SRC_URI[md5sum] = "a79ba6cda83be2a91bde4110fe194788" -SRC_URI[sha256sum] = "a9f11621e85d7e1d72259157edd94825e72af3fd72e184b8474459f92ad5fc40" +SRC_URI[md5sum] = "ebf3d4230d7a13408758cdf037c42d66" +SRC_URI[sha256sum] = "3274458d1bb1658a5001465ecb07c7cbfc709571ef36bd062897570d4bab3ebc" inherit autotools pkgconfig perlnative
Signature · 1 line
2.7.4
PATCH 15/15 dnsmasq: backport CVE fixes from dnsmasq 2.78
In reply to Armin KusterFrom: Zhang Xiao <[email protected]>
CVE-2017-1449{1-6}
--- .../dnsmasq/dnsmasq-CVE-2017-14491-02.patch | 75 ++++++ .../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14491.patch | 268 +++++++++++++++++++++ .../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14492.patch | 37 +++ .../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14493.patch | 37 +++ .../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14494.patch | 37 +++ .../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14495.patch | 48 ++++ .../dnsmasq/dnsmasq/dnsmasq-CVE-2017-14496.patch | 73 ++++++ .../recipes-support/dnsmasq/dnsmasq_2.76.bb | 7 + 8 files changed, 582 insertions(+) create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14491-02.patch create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14491.patch create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14492.patch create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14493.patch create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14494.patch create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14495.patch create mode 100644 meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14496.patch
meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14491-02.patch new file +75 -0
@@ -0,0 +1,75 @@ +From e441ac5247cf8252ac8db08d53862af4065d9586 Mon Sep 17 00:00:00 2001 +From: Simon Kelley <[email protected]> +Date: Tue, 26 Sep 2017 22:00:11 +0100 +Subject: [PATCH 7/7] Security fix, CVE-2017-14491, DNS heap buffer overflow. + +commit 62cb936cb7ad5f219715515ae7d32dd281a5aa1f upstream +git://thekelleys.org.uk/dnsmasq + +Further fix to 0549c73b7ea6b22a3c49beb4d432f185a81efcbc +Handles case when RR name is not a pointer to the question, +only occurs for some auth-mode replies, therefore not +detected by fuzzing (?) + +Upstream-Status: Backport + +Signed-off-by: Zhang Xiao <[email protected]> +--- + src/rfc1035.c | 27 +++++++++++++++------------ + 1 file changed, 15 insertions(+), 12 deletions(-) + +diff --git a/src/rfc1035.c b/src/rfc1035.c +index 78410d6..e5628ba 100644 +--- a/src/rfc1035.c ++++ b/src/rfc1035.c +@@ -1071,32 +1071,35 @@ int add_resource_record(struct dns_header *header, char *limit, int *truncp, int + + va_start(ap, format); /* make ap point to 1st unamed argument */ + +- /* nameoffset (1 or 2) + type (2) + class (2) + ttl (4) + 0 (2) */ +- CHECK_LIMIT(12); +- + if (nameoffset > 0) + { ++ CHECK_LIMIT(2); + PUTSHORT(nameoffset | 0xc000, p); + } + else + { + char *name = va_arg(ap, char *); +- if (name) +- p = do_rfc1035_name(p, name, limit); +- if (!p) +- { +- va_end(ap); +- goto truncated; +- } +- ++ if (name && !(p = do_rfc1035_name(p, name, limit))) ++ { ++ va_end(ap); ++ goto truncated; ++ } ++ + if (nameoffset < 0) + { ++ CHECK_LIMIT(2); + PUTSHORT(-nameoffset | 0xc000, p); + } + else +- *p++ = 0; ++ { ++ CHECK_LIMIT(1); ++ *p++ = 0; ++ } + } + ++ /* type (2) + class (2) + ttl (4) + rdlen (2) */ ++ CHECK_LIMIT(10); ++ + PUTSHORT(type, p); + PUTSHORT(class, p); + PUTLONG(ttl, p); /* TTL */ +-- +2.11.0 +
meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14491.patch new file +268 -0
268 lines not on this page · raw message
meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14492.patch new file +37 -0
@@ -0,0 +1,37 @@ +From 6a0e7dbac67a8393e4505e593e5c46544c53eae0 Mon Sep 17 00:00:00 2001 +From: Simon Kelley <[email protected]> +Date: Mon, 25 Sep 2017 18:47:15 +0100 +Subject: [PATCH 2/7] Security fix, CVE-2017-14492, DHCPv6 RA heap overflow. + +commit 24036ea507862c7b7898b68289c8130f85599c10 upstream +git://thekelleys.org.uk/dnsmasq + +Fix heap overflow in IPv6 router advertisement code. +This is a potentially serious security hole, as a +crafted RA request can overflow a buffer and crash or +control dnsmasq. Attacker must be on the local network. + +Upstream-Status: Backport + +Signed-off-by: Zhang Xiao <[email protected]> +--- + src/radv.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/radv.c b/src/radv.c +index 749b666..d09fe0e 100644 +--- a/src/radv.c ++++ b/src/radv.c +@@ -198,6 +198,9 @@ void icmp6_packet(time_t now) + /* look for link-layer address option for logging */ + if (sz >= 16 && packet[8] == ICMP6_OPT_SOURCE_MAC && (packet[9] * 8) + 8 <= sz) + { ++ if ((packet[9] * 8 - 2) * 3 - 1 >= MAXDNAME) { ++ return; ++ } + print_mac(daemon->namebuff, &packet[10], (packet[9] * 8) - 2); + mac = daemon->namebuff; + } +-- +2.11.0 +
meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14493.patch new file +37 -0
@@ -0,0 +1,37 @@ +From f23f4be3cb72d307806e3d3ca14779f69ac5494c Mon Sep 17 00:00:00 2001 +From: Simon Kelley <[email protected]> +Date: Mon, 25 Sep 2017 18:52:50 +0100 +Subject: [PATCH 3/7] Security fix, CVE-2017-14493, DHCPv6 - Stack buffer + overflow. + +commit 3d4ff1ba8419546490b464418223132529514033 upstream +git://thekelleys.org.uk/dnsmasq + +Fix stack overflow in DHCPv6 code. An attacker who can send +a DHCPv6 request to dnsmasq can overflow the stack frame and +crash or control dnsmasq. + +Upstream-Status: Backport + +Signed-off-by: Zhang Xiao <[email protected]> +--- + src/rfc3315.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/rfc3315.c b/src/rfc3315.c +index 73bdee4..8d18a28 100644 +--- a/src/rfc3315.c ++++ b/src/rfc3315.c +@@ -206,6 +206,9 @@ static int dhcp6_maybe_relay(struct state *state, void *inbuff, size_t sz, + /* RFC-6939 */ + if ((opt = opt6_find(opts, end, OPTION6_CLIENT_MAC, 3))) + { ++ if (opt6_len(opt) - 2 > DHCP_CHADDR_MAX) { ++ return 0; ++ } + state->mac_type = opt6_uint(opt, 0, 2); + state->mac_len = opt6_len(opt) - 2; + memcpy(&state->mac[0], opt6_ptr(opt, 2), state->mac_len); +-- +2.11.0 +
meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14494.patch new file +37 -0
@@ -0,0 +1,37 @@ +From aba3f8df87d104d599920ea44e96191601638961 Mon Sep 17 00:00:00 2001 +From: Simon Kelley <[email protected]> +Date: Mon, 25 Sep 2017 20:05:11 +0100 +Subject: [PATCH 4/7] Security fix, CVE-2017-14494, Infoleak handling DHCPv6 + forwarded requests. + +commit 33e3f1029c9ec6c63e430ff51063a6301d4b2262 upstream +git://thekelleys.org.uk/dnsmasq + +Fix information leak in DHCPv6. A crafted DHCPv6 packet can +cause dnsmasq to forward memory from outside the packet +buffer to a DHCPv6 server when acting as a relay. + +Upstream-Status: Backport + +Signed-off-by: Zhang Xiao <[email protected]> +--- + src/rfc3315.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/rfc3315.c b/src/rfc3315.c +index 8d18a28..03b3f84 100644 +--- a/src/rfc3315.c ++++ b/src/rfc3315.c +@@ -216,6 +216,9 @@ static int dhcp6_maybe_relay(struct state *state, void *inbuff, size_t sz, + + for (opt = opts; opt; opt = opt6_next(opt, end)) + { ++ if (opt6_ptr(opt, 0) + opt6_len(opt) >= end) { ++ return 0; ++ } + int o = new_opt6(opt6_type(opt)); + if (opt6_type(opt) == OPTION6_RELAY_MSG) + { +-- +2.11.0 +
meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14495.patch new file +48 -0
48 lines not on this page · raw message
meta-networking/recipes-support/dnsmasq/dnsmasq/dnsmasq-CVE-2017-14496.patch new file +73 -0
73 lines not on this page · raw message
meta-networking/recipes-support/dnsmasq/dnsmasq_2.76.bb +7 -0
@@ -2,6 +2,13 @@ require dnsmasq.inc SRC_URI += "\ file://lua.patch \ + file://dnsmasq-CVE-2017-14491.patch \ + file://dnsmasq-CVE-2017-14492.patch \ + file://dnsmasq-CVE-2017-14493.patch \ + file://dnsmasq-CVE-2017-14494.patch \ + file://dnsmasq-CVE-2017-14496.patch \ + file://dnsmasq-CVE-2017-14495.patch \ + file://dnsmasq-CVE-2017-14491-02.patch \ " SRC_URI[dnsmasq-2.76.md5sum] = "6610f8233ca89b15a1bb47c788ffb84f"
Signature · 1 line
2.7.4