<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 13 November 2015 at 13:08, Hongxu Jia <span dir="ltr">&lt;<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Backport patch from <a href="http://w1.fi/security/2015-5/" rel="noreferrer" target="_blank">http://w1.fi/security/2015-5/</a><br>
and rebase for wpa-supplicant 2.4</blockquote><div><br></div><div>There&#39;s a thread about upgrading master to 2.5 (which should fix this) already.</div><div> </div><div>The patch probably still makes sense for jethro though.</div><div><br></div><div> - Jussi</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Signed-off-by: Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com">hongxu.jia@windriver.com</a>&gt;<br>
---<br>
<span class=""> ...load-length-validation-in-NDEF-record-par.patch | 64 ++++++++++++++++++++++<br>
 .../wpa-supplicant/<a href="http://wpa-supplicant_2.4.bb" rel="noreferrer" target="_blank">wpa-supplicant_2.4.bb</a>           |  1 +<br>
 2 files changed, 65 insertions(+)<br>
 create mode 100644 meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-NFC-Fix-payload-length-validation-in-NDEF-record-par.patch<br>
<br>
</span>diff --git a/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-NFC-Fix-payload-length-validation-in-NDEF-record-par.patch b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-NFC-Fix-payload-length-validation-in-NDEF-record-par.patch<br>
new file mode 100644<br>
index 0000000..bc1d1e5<br>
--- /dev/null<br>
+++ b/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant/0001-NFC-Fix-payload-length-validation-in-NDEF-record-par.patch<br>
@@ -0,0 +1,64 @@<br>
+From c13401c723a039971bcd91b3856d76c6041b15f2 Mon Sep 17 00:00:00 2001<br>
+From: Jouni Malinen &lt;<a href="mailto:j@w1.fi">j@w1.fi</a>&gt;<br>
+Date: Fri, 13 Nov 2015 05:54:18 -0500<br>
+Subject: [PATCH] NFC: Fix payload length validation in NDEF record parser<br>
+<br>
+It was possible for the 32-bit record-&gt;total_length value to end up<br>
+wrapping around due to integer overflow if the longer form of payload<br>
+length field is used and record-&gt;payload_length gets a value close to<br>
+2^32. This could result in ndef_parse_record() accepting a too large<br>
+payload length value and the record type filter reading up to about 20<br>
+bytes beyond the end of the buffer and potentially killing the process.<br>
+This could also result in an attempt to allocate close to 2^32 bytes of<br>
+heap memory and if that were to succeed, a buffer read overflow of the<br>
+same length which would most likely result in the process termination.<br>
+In case of record-&gt;total_length ending up getting the value 0, there<br>
+would be no buffer read overflow, but record parsing would result in an<br>
+infinite loop in ndef_parse_records().<br>
+<br>
+Any of these error cases could potentially be used for denial of service<br>
+attacks over NFC by using a malformed NDEF record on an NFC Tag or<br>
+sending them during NFC connection handover if the application providing<br>
+the NDEF message to hostapd/wpa_supplicant did no validation of the<br>
+received records. While such validation is likely done in the NFC stack<br>
+that needs to parse the NFC messages before further processing,<br>
+hostapd/wpa_supplicant better be prepared for any data being included<br>
+here.<br>
+<br>
+Fix this by validating record-&gt;payload_length value in a way that<br>
+detects integer overflow. (CID 122668)<br>
+<br>
+Signed-off-by: Jouni Malinen &lt;<a href="mailto:j@w1.fi">j@w1.fi</a>&gt;<br>
+<br>
+Upstream-Status: Backport [from <a href="http://w1.fi/security/2015-5/" rel="noreferrer" target="_blank">http://w1.fi/security/2015-5/</a>]<br>
+Signed-off-by: Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com">hongxu.jia@windriver.com</a>&gt;<br>
+---<br>
+ src/wps/ndef.c | 5 ++++-<br>
+ 1 file changed, 4 insertions(+), 1 deletion(-)<br>
+<br>
+diff --git a/src/wps/ndef.c b/src/wps/ndef.c<br>
+index d45dfc8..f7f729b 100644<br>
+--- a/src/wps/ndef.c<br>
++++ b/src/wps/ndef.c<br>
+@@ -48,6 +48,8 @@ static int ndef_parse_record(const u8 *data, u32 size,<br>
+               if (size &lt; 6)<br>
+                       return -1;<br>
+               record-&gt;payload_length = ntohl(*(u32 *)pos);<br>
++                if (record-&gt;payload_length &gt; size - 6)<br>
++                       return -1;<br>
+               pos += sizeof(u32);<br>
+       }<br>
+<br>
+@@ -68,7 +70,8 @@ static int ndef_parse_record(const u8 *data, u32 size,<br>
+       pos += record-&gt;payload_length;<br>
+<br>
+       record-&gt;total_length = pos - data;<br>
+-      if (record-&gt;total_length &gt; size)<br>
++      if (record-&gt;total_length &gt; size ||<br>
++          record-&gt;total_length &lt; record-&gt;payload_length)<br>
+               return -1;<br>
+       return 0;<br>
+ }<br>
+--<br>
+1.9.1<br>
+<br>
diff --git a/meta/recipes-connectivity/wpa-supplicant/<a href="http://wpa-supplicant_2.4.bb" rel="noreferrer" target="_blank">wpa-supplicant_2.4.bb</a> b/meta/recipes-connectivity/wpa-supplicant/<a href="http://wpa-supplicant_2.4.bb" rel="noreferrer" target="_blank">wpa-supplicant_2.4.bb</a><br>
index a124cf2..6e4d028 100644<br>
--- a/meta/recipes-connectivity/wpa-supplicant/<a href="http://wpa-supplicant_2.4.bb" rel="noreferrer" target="_blank">wpa-supplicant_2.4.bb</a><br>
+++ b/meta/recipes-connectivity/wpa-supplicant/<a href="http://wpa-supplicant_2.4.bb" rel="noreferrer" target="_blank">wpa-supplicant_2.4.bb</a><br>
@@ -32,6 +32,7 @@ SRC_URI = &quot;<a href="http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz" rel="noreferrer" target="_blank">http://hostap.epitest.fi/releases/wpa_supplicant-${PV}.tar.gz</a> \<br>
            file://0003-EAP-pwd-peer-Fix-Total-Length-parsing-for-fragment-r.patch \<br>
            file://0004-EAP-pwd-server-Fix-Total-Length-parsing-for-fragment.patch \<br>
            file://0005-EAP-pwd-peer-Fix-asymmetric-fragmentation-behavior.patch \<br>
+           file://0001-NFC-Fix-payload-length-validation-in-NDEF-record-par.patch \<br>
           &quot;<br>
 SRC_URI[md5sum] = &quot;f0037dbe03897dcaf2ad2722e659095d&quot;<br>
 SRC_URI[sha256sum] = &quot;058dc832c096139a059e6df814080f50251a8d313c21b13364c54a1e70109122&quot;<br>
<div class="HOEnZb"><div class="h5">--<br>
1.9.1<br>
<br>
--<br>
_______________________________________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/mailman/listinfo/openembedded-core</a><br>
</div></div></blockquote></div><br></div></div>