Commit Graph

144 Commits

Author SHA1 Message Date
christos 74cc861970 https://www.phoronix.com/news/IWD-WPA-WiFi-Auth-Vulns
https://www.top10vpn.com/research/wifi-vulnerabilities/

PEAP client: Update Phase 2 authentication requirements

The previous PEAP client behavior allowed the server to skip Phase 2
authentication with the expectation that the server was authenticated
during Phase 1 through TLS server certificate validation. Various PEAP
specifications are not exactly clear on what the behavior on this front
is supposed to be and as such, this ended up being more flexible than
the TTLS/FAST/TEAP cases. However, this is not really ideal when
unfortunately common misconfiguration of PEAP is used in deployed
devices where the server trust root (ca_cert) is not configured or the
user has an easy option for allowing this validation step to be skipped.

Change the default PEAP client behavior to be to require Phase 2
authentication to be successfully completed for cases where TLS session
resumption is not used and the client certificate has not been
configured. Those two exceptions are the main cases where a deployed
authentication server might skip Phase 2 and as such, where a more
strict default behavior could result in undesired interoperability
issues. Requiring Phase 2 authentication will end up disabling TLS
session resumption automatically to avoid interoperability issues.

Allow Phase 2 authentication behavior to be configured with a new phase1
configuration parameter option:
'phase2_auth' option can be used to control Phase 2 (i.e., within TLS
tunnel) behavior for PEAP:
 * 0 = do not require Phase 2 authentication
 * 1 = require Phase 2 authentication when client certificate
   (private_key/client_cert) is no used and TLS session resumption was
   not used (default)
 * 2 = require Phase 2 authentication in all cases
2024-02-13 18:43:45 +00:00
lukem f937c412f3 bsd.own.mk: rename to CC_WNO_ADDRESS_OF_PACKED_MEMBER
Provide a single variable
	CC_WNO_ADDRESS_OF_PACKED_MEMBER
with options for both clang and gcc, to replace
	CLANG_NO_ADDR_OF_PACKED_MEMBER
	CC_NO_ADDR_OF_PACKED_MEMBER
	GCC_NO_ADDR_OF_PACKED_MEMBER

Using the convention CC_compilerflag, where compilerflag
is based on the full compiler flag name.
2023-06-03 08:52:53 +00:00
christos b3ddc61d04 Handle OpenSSL-3.x 2023-05-09 20:55:39 +00:00
rillig e2d76f46e0 wpa_supplicant.8: fix typo 2022-09-10 12:39:06 +00:00
rillig ca8378a5d8 wpa: fix Clang build
src/external/bsd/wpa/bin/hostapd/../../dist/src/common/dpp.c:5377:7:
error: format specifies type 'unsigned long' but the argument has type
'os_time_t' (aka 'long long') [-Werror,-Wformat]
2021-05-15 19:19:55 +00:00
christos 4d54fa901b Enable more options. 2021-03-01 03:42:57 +00:00
christos 460bb4fcf6 Merge local changes from v2.7 -> v2.9 for wpa_supplicant and hostapd 2021-03-01 01:40:13 +00:00
christos 3d6c0713cb ChangeLog for wpa_supplicant
2019-08-07 - v2.9
	* SAE changes
	  - disable use of groups using Brainpool curves
	  - improved protection against side channel attacks
	  [https://w1.fi/security/2019-6/]
	* EAP-pwd changes
	  - disable use of groups using Brainpool curves
	  - improved protection against side channel attacks
	  [https://w1.fi/security/2019-6/]
	* fixed FT-EAP initial mobility domain association using PMKSA caching
	* added configuration of airtime policy
	* fixed FILS to and RSNE into (Re)Association Response frames
	* fixed DPP bootstrapping URI parser of channel list
	* added support for regulatory WMM limitation (for ETSI)
	* added support for MACsec Key Agreement using IEEE 802.1X/PSK
	* added experimental support for EAP-TEAP server (RFC 7170)
	* added experimental support for EAP-TLS server with TLS v1.3
	* added support for two server certificates/keys (RSA/ECC)
	* added AKMSuiteSelector into "STA <addr>" control interface data to
	  determine with AKM was used for an association
	* added eap_sim_id parameter to allow EAP-SIM/AKA server pseudonym and
	  fast reauthentication use to be disabled
	* fixed an ECDH operation corner case with OpenSSL

2019-04-21 - v2.8
	* SAE changes
	  - added support for SAE Password Identifier
	  - changed default configuration to enable only group 19
	    (i.e., disable groups 20, 21, 25, 26 from default configuration) and
	    disable all unsuitable groups completely based on REVmd changes
	  - improved anti-clogging token mechanism and SAE authentication
	    frame processing during heavy CPU load; this mitigates some issues
	    with potential DoS attacks trying to flood an AP with large number
	    of SAE messages
	  - added Finite Cyclic Group field in status code 77 responses
	  - reject use of unsuitable groups based on new implementation guidance
	    in REVmd (allow only FFC groups with prime >= 3072 bits and ECC
	    groups with prime >= 256)
	  - minimize timing and memory use differences in PWE derivation
	    [https://w1.fi/security/2019-1/] (CVE-2019-9494)
	  - fixed confirm message validation in error cases
	    [https://w1.fi/security/2019-3/] (CVE-2019-9496)
	* EAP-pwd changes
	  - minimize timing and memory use differences in PWE derivation
	    [https://w1.fi/security/2019-2/] (CVE-2019-9495)
	  - verify peer scalar/element
	    [https://w1.fi/security/2019-4/] (CVE-2019-9497 and CVE-2019-9498)
	  - fix message reassembly issue with unexpected fragment
	    [https://w1.fi/security/2019-5/]
	  - enforce rand,mask generation rules more strictly
	  - fix a memory leak in PWE derivation
	  - disallow ECC groups with a prime under 256 bits (groups 25, 26, and
	    27)
	* Hotspot 2.0 changes
	  - added support for release number 3
	  - reject release 2 or newer association without PMF
	* added support for RSN operating channel validation
	  (CONFIG_OCV=y and configuration parameter ocv=1)
	* added Multi-AP protocol support
	* added FTM responder configuration
	* fixed build with LibreSSL
	* added FT/RRB workaround for short Ethernet frame padding
	* fixed KEK2 derivation for FILS+FT
	* added RSSI-based association rejection from OCE
	* extended beacon reporting functionality
	* VLAN changes
	  - allow local VLAN management with remote RADIUS authentication
	  - add WPA/WPA2 passphrase/PSK -based VLAN assignment
	* OpenSSL: allow systemwide policies to be overridden
	* extended PEAP to derive EMSK to enable use with ERP/FILS
	* extended WPS to allow SAE configuration to be added automatically
	  for PSK (wps_cred_add_sae=1)
	* fixed FT and SA Query Action frame with AP-MLME-in-driver cases
	* OWE: allow Diffie-Hellman Parameter element to be included with DPP
	  in preparation for DPP protocol extension
	* RADIUS server: started to accept ERP keyName-NAI as user identity
	  automatically without matching EAP database entry
	* fixed PTK rekeying with FILS and FT

ChangeLog for hostapd

2019-08-07 - v2.9
	* SAE changes
	  - disable use of groups using Brainpool curves
	  - improved protection against side channel attacks
	  [https://w1.fi/security/2019-6/]
	* EAP-pwd changes
	  - disable use of groups using Brainpool curves
	  - allow the set of groups to be configured (eap_pwd_groups)
	  - improved protection against side channel attacks
	  [https://w1.fi/security/2019-6/]
	* fixed FT-EAP initial mobility domain association using PMKSA caching
	  (disabled by default for backwards compatibility; can be enabled
	  with ft_eap_pmksa_caching=1)
	* fixed a regression in OpenSSL 1.1+ engine loading
	* added validation of RSNE in (Re)Association Response frames
	* fixed DPP bootstrapping URI parser of channel list
	* extended EAP-SIM/AKA fast re-authentication to allow use with FILS
	* extended ca_cert_blob to support PEM format
	* improved robustness of P2P Action frame scheduling
	* added support for EAP-SIM/AKA using anonymous@realm identity
	* fixed Hotspot 2.0 credential selection based on roaming consortium
	  to ignore credentials without a specific EAP method
	* added experimental support for EAP-TEAP peer (RFC 7170)
	* added experimental support for EAP-TLS peer with TLS v1.3
	* fixed a regression in WMM parameter configuration for a TDLS peer
	* fixed a regression in operation with drivers that offload 802.1X
	  4-way handshake
	* fixed an ECDH operation corner case with OpenSSL

2019-04-21 - v2.8
	* SAE changes
	  - added support for SAE Password Identifier
	  - changed default configuration to enable only groups 19, 20, 21
	    (i.e., disable groups 25 and 26) and disable all unsuitable groups
	    completely based on REVmd changes
	  - do not regenerate PWE unnecessarily when the AP uses the
	    anti-clogging token mechanisms
	  - fixed some association cases where both SAE and FT-SAE were enabled
	    on both the station and the selected AP
	  - started to prefer FT-SAE over SAE AKM if both are enabled
	  - started to prefer FT-SAE over FT-PSK if both are enabled
	  - fixed FT-SAE when SAE PMKSA caching is used
	  - reject use of unsuitable groups based on new implementation guidance
	    in REVmd (allow only FFC groups with prime >= 3072 bits and ECC
	    groups with prime >= 256)
	  - minimize timing and memory use differences in PWE derivation
	    [https://w1.fi/security/2019-1/] (CVE-2019-9494)
	* EAP-pwd changes
	  - minimize timing and memory use differences in PWE derivation
	    [https://w1.fi/security/2019-2/] (CVE-2019-9495)
	  - verify server scalar/element
	    [https://w1.fi/security/2019-4/] (CVE-2019-9499)
	  - fix message reassembly issue with unexpected fragment
	    [https://w1.fi/security/2019-5/]
	  - enforce rand,mask generation rules more strictly
	  - fix a memory leak in PWE derivation
	  - disallow ECC groups with a prime under 256 bits (groups 25, 26, and
	    27)
	* fixed CONFIG_IEEE80211R=y (FT) build without CONFIG_FILS=y
	* Hotspot 2.0 changes
	  - do not indicate release number that is higher than the one
	    AP supports
	  - added support for release number 3
	  - enable PMF automatically for network profiles created from
	    credentials
	* fixed OWE network profile saving
	* fixed DPP network profile saving
	* added support for RSN operating channel validation
	  (CONFIG_OCV=y and network profile parameter ocv=1)
	* added Multi-AP backhaul STA support
	* fixed build with LibreSSL
	* number of MKA/MACsec fixes and extensions
	* extended domain_match and domain_suffix_match to allow list of values
	* fixed dNSName matching in domain_match and domain_suffix_match when
	  using wolfSSL
	* started to prefer FT-EAP-SHA384 over WPA-EAP-SUITE-B-192 AKM if both
	  are enabled
	* extended nl80211 Connect and external authentication to support
	  SAE, FT-SAE, FT-EAP-SHA384
	* fixed KEK2 derivation for FILS+FT
	* extended client_cert file to allow loading of a chain of PEM
	  encoded certificates
	* extended beacon reporting functionality
	* extended D-Bus interface with number of new properties
	* fixed a regression in FT-over-DS with mac80211-based drivers
	* OpenSSL: allow systemwide policies to be overridden
	* extended driver flags indication for separate 802.1X and PSK
	  4-way handshake offload capability
	* added support for random P2P Device/Interface Address use
	* extended PEAP to derive EMSK to enable use with ERP/FILS
	* extended WPS to allow SAE configuration to be added automatically
	  for PSK (wps_cred_add_sae=1)
	* removed support for the old D-Bus interface (CONFIG_CTRL_IFACE_DBUS)
	* extended domain_match and domain_suffix_match to allow list of values
	* added a RSN workaround for misbehaving PMF APs that advertise
	  IGTK/BIP KeyID using incorrect byte order
	* fixed PTK rekeying with FILS and FT
2021-03-01 01:37:49 +00:00
roy ec176a5418 wpa: If route socket overflows, sync drivers to system interfaces
Messages such as RTM_IFNFO or RTM_IFANNOUNCE could have been lost.
As such, sync the state of our internal driver to the state of the
system interfaces as reported by getifaddrs(2).

This change requires the routing socket be placed in non-blocking
mode. While here, set the routing and inet sockets to close on exec.
2021-01-01 14:57:14 +00:00
mrg cb93b81028 add support for new GCC 9 warnings that may be too much to fix
right now.  new address-of-packed-member and format-overflow
warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd
GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.

apply to a bunch of the tree.  mostly, these are real bugs that
should be fixed, but in many cases, only by removing the 'packed'
attribute from some structure that doesn't really need it.  (i
looked at many different ones, and while perhaps 60-80% were
already properly aligned, it wasn't clear to me that the uses
were always coming from sane data vs network alignment, so it
doesn't seem safe to remove packed without careful research for
each affect struct.)  clang already warned (and was not erroring)
for many of these cases, but gcc picked up dozens more.
2020-09-06 07:20:26 +00:00
roy 95ed12b952 wpa_supplicant: Matching unspecified interfaces should not log driver fails
If there is no matching interface given, but interface matching is enabled
then all interfaces on the system will try to be initialized.

Non wireless interfaces will fail and the loopback device will be one
of these, so just log a diagnostic rather than an error.
2020-07-21 13:18:58 +00:00
roy c22eef219f wpa_supplicant: Don't report an error when there are no op classes to add
Instead, log a diagnostic so that noise to the user is reduced.
2020-07-21 12:19:52 +00:00
roy dad129c1ca wpa_supplicant: don't log SIOCG80211 errors during interface setup
Unless debugging.
wpa_supplicant will log it failed to initialized the driver for the
interface anyway so this just silences some noise for users.
2020-07-21 10:34:16 +00:00
joerg ce578dfc2b Explicitly cast pointers to uintptr_t before casting to enums. They are
not necessarily the same size. Don't cast pointers to bool, check for
NULL instead.
2020-02-21 00:26:21 +00:00
roy ce63da2fc1 Enable syslog support for hostapd 2020-02-03 09:10:47 +00:00
roy 7e3fe3ae49 wpa: reduce diff with upstream 2020-01-29 12:05:08 +00:00
roy 7f802f6689 wpa: Fix the maximum size of a route(4) msg to 2048
This mirrors other programs which parse route(4) messages and will
match upstream.
2020-01-29 11:57:36 +00:00
roy f4b2e0ff3a wpa: Remove an outdated comment
With interface matching support, wpa_supplicant can wait for an
interface to appear.
2020-01-29 11:46:47 +00:00
roy 921753c4a7 wpa: Don't set or remove IFF_UP
Now that both hostapd and wpa_supplicant react to interface flag
changes, there is no need to set or remove IFF_UP.

It should be an administrative flag only.
2020-01-29 11:45:54 +00:00
roy aa4ef28151 wpa: Share route(4) processing with hostapd and wpa_supplicant.
There is little point in having both and it brings interface
addition/removal and IFF_UP notifications to hostapd.
2020-01-29 11:44:43 +00:00
roy 289963fd75 wpa: Driver does not need to know about both wpa and hostap contexts
It will either be one or the other.
Fold hapd into ctx to match other drivers.
2020-01-29 11:31:40 +00:00
christos 234c760a30 [PATCH] AP: Silently ignore management frame from unexpected source address
Do not process any received Management frames with unexpected/invalid SA
so that we do not add any state for unexpected STA addresses or end up
sending out frames to unexpected destination. This prevents unexpected
sequences where an unprotected frame might end up causing the AP to send
out a response to another device and that other device processing the
unexpected response.

In particular, this prevents some potential denial of service cases
where the unexpected response frame from the AP might result in a
connected station dropping its association.

Signed-off-by: Jouni Malinen <j@w1.fi>
2019-09-12 23:46:11 +00:00
christos 9d114cac36 EAP-pwd: Run through prf result processing even if it >= prime
This reduces differences in timing and memory access within the
hunting-and-pecking loop for ECC groups that have a prime that is not
close to a power of two (e.g., Brainpool curves).

Signed-off-by: Jouni Malinen <j@w1.fi>
(cherry picked from commit cd803299ca485eb857e37c88f973fccfbb8600e5)
2019-08-08 09:56:41 +00:00
christos 8abbfe70af SAE: Run through prf result processing even if it >= prime
This reduces differences in timing and memory access within the
hunting-and-pecking loop for ECC groups that have a prime that is not
close to a power of two (e.g., Brainpool curves).

Signed-off-by: Jouni Malinen <j@w1.fi>
(cherry picked from commit 147bf7b88a9c231322b5b574263071ca6dbb0503)
2019-08-08 09:56:10 +00:00
christos a09fcc42de OpenSSL: Use BN_bn2binpad() or BN_bn2bin_padded() if available
This converts crypto_bignum_to_bin() to use the OpenSSL/BoringSSL
functions BN_bn2binpad()/BN_bn2bin_padded(), when available, to avoid
differences in runtime and memory access patterns depending on the
leading bytes of the BIGNUM value.

OpenSSL 1.0.2 and LibreSSL do not include such functions, so those cases
are still using the previous implementation where the BN_num_bytes()
call may result in different memory access pattern.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
(cherry picked from commit 1e237903f5b5d3117342daf006c5878cdb45e3d3)
2019-08-08 09:55:32 +00:00
christos 5323904d5b EAP-pwd: Use const_time_memcmp() for pwd_value >= prime comparison
This reduces timing and memory access pattern differences for an
operation that could depend on the used password.
2019-08-08 08:58:40 +00:00
christos c1a8266bfa SAE: Use const_time_memcmp() for pwd_value >= prime comparison
This reduces timing and memory access pattern differences for an
operation that could depend on the used password.
2019-08-08 08:55:48 +00:00
gutteridge a5eac202d5 wpa_supplicant.8: add xref to wpa_passphrase.8 2019-06-19 03:27:38 +00:00
gutteridge b5957b94c2 wpa_cli.8: add xref to wpa_passphrase.8 2019-06-19 03:23:56 +00:00
maya db85bc906d Add more information about commands. Add a working, annotated example. 2019-06-18 14:28:40 +00:00
christos 3214df8653 Try to avoid showing externally visible timing or memory access
differences regardless of whether the derived pwd-value is smaller than
the group prime.

This is related to CVE-2019-9494.
2019-04-10 18:01:08 +00:00
christos a1e04891bb This is an initial step towards making the FFC case use strictly
constant time operations similarly to the ECC case.
sae_test_pwd_seed_ffc() does not yet have constant time behavior,
though.
2019-04-10 18:00:45 +00:00
christos 64e3f4ec46 These groups have significant probability of coming up with pwd-value
that is equal or greater than the prime and as such, need for going
through the PWE derivation loop multiple times. This can result in
sufficient timing different to allow an external observer to determine
how many rounds are needed and that can leak information about the used
password.

Force at least 40 loop rounds for these MODP groups similarly to the ECC
group design to mask timing. This behavior is not described in IEEE Std
802.11-2016 for SAE, but it does not result in different values (i.e.,
only different timing), so such implementation specific countermeasures
can be done without breaking interoperability with other implementation.

Note: These MODP groups 22, 23, and 24 are not considered sufficiently
strong to be used with SAE (or more or less anything else). As such,
they should never be enabled in runtime configuration for any production
use cases. These changes to introduce additional protection to mask
timing is only for completeness of implementation and not an indication
that these groups should be used.

This is related to CVE-2019-9494.
2019-04-10 18:00:21 +00:00
christos 058fe5fa7e Make the non-failure path in the function proceed without branches based
on r_odd and in constant time to minimize risk of observable differences
in timing or cache use. (CVE-2019-9494)
2019-04-10 17:59:35 +00:00
christos 5f2ccbb7ce The QR test result can provide information about the password to an
attacker, so try to minimize differences in how the
sae_test_pwd_seed_ecc() result is used. (CVE-2019-9494)

Use heap memory for the dummy password to allow the same password length
to be used even with long passwords.

Use constant time selection functions to track the real vs. dummy
variables so that the exact same operations can be performed for both QR
test results.
2019-04-10 17:59:07 +00:00
christos fa9eb5850c This algorithm could leak information to external observers in form of
timing differences or memory access patterns (cache use). While the
previous implementation had protection against the most visible timing
differences (looping 40 rounds and masking the legendre operation), it
did not protect against memory access patterns between the two possible
code paths in the masking operations. That might be sufficient to allow
an unprivileged process running on the same device to be able to
determine which path is being executed through a cache attack and based
on that, determine information about the used password.

Convert the PWE finding loop to use constant time functions and
identical memory access path without different branches for the QR/QNR
cases to minimize possible side-channel information similarly to the
changes done for SAE authentication. (CVE-2019-9495)
2019-04-10 17:57:15 +00:00
christos cdc62bfef8 Get rid of the branches that depend on the result of the Legendre
operation. This is needed to avoid leaking information about different
temporary results in blinding mechanisms.

This is related to CVE-2019-9494 and CVE-2019-9495.
2019-04-10 17:56:43 +00:00
christos b2272152c1 These functions can be used to help implement constant time operations
for various cryptographic operations that must minimize externally
observable differences in processing (both in timing and also in
internal cache use, etc.).

This is related to CVE-2019-9494 and CVE-2019-9495.
2019-04-10 17:56:13 +00:00
christos e070c9e1bb This helps in reducing measurable timing differences in operations
involving private information. BoringSSL has removed BN_FLG_CONSTTIME
and expects specific constant time functions to be called instead, so a
bit different approach is needed depending on which library is used.

The main operation that needs protection against side channel attacks is
BN_mod_exp() that depends on private keys (the public key validation
step in crypto_dh_derive_secret() is an exception that can use the
faster version since it does not depend on private keys).

crypto_bignum_div() is currently used only in SAE FFC case with not
safe-prime groups and only with values that do not depend on private
keys, so it is not critical to protect it.

crypto_bignum_inverse() is currently used only in SAE FFC PWE
derivation. The additional protection here is targeting only OpenSSL.
BoringSSL may need conversion to using BN_mod_inverse_blinded().

This is related to CVE-2019-9494 and CVE-2019-9495.
2019-04-10 17:55:31 +00:00
christos e6520c418d Explicitly verify that own and peer commit scalar/element are available
when trying to check SAE confirm message. It could have been possible to
hit a NULL pointer dereference if the peer element could not have been
parsed. (CVE-2019-9496)
2019-04-10 17:52:46 +00:00
christos 924a752579 This adds an explicit check for 0 < x,y < prime based on RFC 5931,
2.8.5.2.2 requirement. The earlier checks might have covered this
implicitly, but it is safer to avoid any dependency on implicit checks
and specific crypto library behavior. (CVE-2019-9498 and CVE-2019-9499)

Furthermore, this moves the EAP-pwd element and scalar parsing and
validation steps into shared helper functions so that there is no need
to maintain two separate copies of this common functionality between the
server and peer implementations.
2019-04-10 17:50:27 +00:00
christos c2cadbd97b When processing an EAP-pwd Commit frame, the server's scalar and element
(elliptic curve point) were not validated. This allowed an adversary to
bypass authentication, and act as a rogue Access Point (AP) if the
crypto implementation did not verify the validity of the EC point.

Fix this vulnerability by assuring the received scalar lies within the
valid range, and by checking that the received element is not the point
at infinity and lies on the elliptic curve being used. (CVE-2019-9499)

The vulnerability is only exploitable if OpenSSL version 1.0.2 or lower
is used, or if LibreSSL or wolfssl is used. Newer versions of OpenSSL
(and also BoringSSL) implicitly validate the elliptic curve point in
EC_POINT_set_affine_coordinates_GFp(), preventing the attack.
2019-04-10 17:49:59 +00:00
christos 9ea1d486ef When processing an EAP-pwd Commit frame, verify that the peer's scalar
and elliptic curve element differ from the one sent by the server. This
prevents reflection attacks where the adversary reflects the scalar and
element sent by the server. (CVE-2019-9497)

The vulnerability allows an adversary to complete the EAP-pwd handshake
as any user. However, the adversary does not learn the negotiated
session key, meaning the subsequent 4-way handshake would fail. As a
result, this cannot be abused to bypass authentication unless EAP-pwd is
used in non-WLAN cases without any following key exchange that would
require the attacker to learn the MSK.
2019-04-10 17:49:26 +00:00
christos 6f7a369434 CVE-2019-9498 (EAP-pwd server missing commit validation for scalar/element)
When processing an EAP-pwd Commit frame, the peer's scalar and element
(elliptic curve point) were not validated. This allowed an adversary to
bypass authentication, and impersonate any user if the crypto
implementation did not verify the validity of the EC point.

Fix this vulnerability by assuring the received scalar lies within the
valid range, and by checking that the received element is not the point
at infinity and lies on the elliptic curve being used. (CVE-2019-9498)

The vulnerability is only exploitable if OpenSSL version 1.0.2 or lower
is used, or if LibreSSL or wolfssl is used. Newer versions of OpenSSL
(and also BoringSSL) implicitly validate the elliptic curve point in
EC_POINT_set_affine_coordinates_GFp(), preventing the attack.
2019-04-10 17:48:07 +00:00
christos eea1280b00 include common path in the rest of the Makefiles 2019-01-05 05:40:00 +00:00
christos be6b3c4d47 merge conflicts. 2019-01-04 21:22:20 +00:00
christos 0a73ee0a32 2018-12-02 - v2.7
* fixed WPA packet number reuse with replayed messages and key
  reinstallation
  [https://w1.fi/security/2017-1/] (CVE-2017-13077, CVE-2017-13078,
  CVE-2017-13079, CVE-2017-13080, CVE-2017-13081, CVE-2017-13082,
  CVE-2017-13086, CVE-2017-13087, CVE-2017-13088)
* fixed unauthenticated EAPOL-Key decryption in wpa_supplicant
  [https://w1.fi/security/2018-1/] (CVE-2018-14526)
* added support for FILS (IEEE 802.11ai) shared key authentication
* added support for OWE (Opportunistic Wireless Encryption, RFC 8110;
  and transition mode defined by WFA)
* added support for DPP (Wi-Fi Device Provisioning Protocol)
* added support for RSA 3k key case with Suite B 192-bit level
* fixed Suite B PMKSA caching not to update PMKID during each 4-way
  handshake
* fixed EAP-pwd pre-processing with PasswordHashHash
* added EAP-pwd client support for salted passwords
* fixed a regression in TDLS prohibited bit validation
* started to use estimated throughput to avoid undesired signal
  strength based roaming decision
* MACsec/MKA:
  - new macsec_linux driver interface support for the Linux
    kernel macsec module
  - number of fixes and extensions
* added support for external persistent storage of PMKSA cache
  (PMKSA_GET/PMKSA_ADD control interface commands; and
   MESH_PMKSA_GET/MESH_PMKSA_SET for the mesh case)
* fixed mesh channel configuration pri/sec switch case
* added support for beacon report
* large number of other fixes, cleanup, and extensions
* added support for randomizing local address for GAS queries
  (gas_rand_mac_addr parameter)
* fixed EAP-SIM/AKA/AKA' ext auth cases within TLS tunnel
* added option for using random WPS UUID (auto_uuid=1)
* added SHA256-hash support for OCSP certificate matching
* fixed EAP-AKA' to add AT_KDF into Synchronization-Failure
* fixed a regression in RSN pre-authentication candidate selection
* added option to configure allowed group management cipher suites
  (group_mgmt network profile parameter)
* removed all PeerKey functionality
* fixed nl80211 AP and mesh mode configuration regression with
  Linux 4.15 and newer
* added ap_isolate configuration option for AP mode
* added support for nl80211 to offload 4-way handshake into the driver
* added support for using wolfSSL cryptographic library
* SAE
  - added support for configuring SAE password separately of the
    WPA2 PSK/passphrase
  - fixed PTK and EAPOL-Key integrity and key-wrap algorithm selection
    for SAE;
    note: this is not backwards compatible, i.e., both the AP and
    station side implementations will need to be update at the same
    time to maintain interoperability
  - added support for Password Identifier
  - fixed FT-SAE PMKID matching
* Hotspot 2.0
  - added support for fetching of Operator Icon Metadata ANQP-element
  - added support for Roaming Consortium Selection element
  - added support for Terms and Conditions
  - added support for OSEN connection in a shared RSN BSS
  - added support for fetching Venue URL information
* added support for using OpenSSL 1.1.1
* FT
  - disabled PMKSA caching with FT since it is not fully functional
  - added support for SHA384 based AKM
  - added support for BIP ciphers BIP-CMAC-256, BIP-GMAC-128,
    BIP-GMAC-256 in addition to previously supported BIP-CMAC-128
  - fixed additional IE inclusion in Reassociation Request frame when
    using FT protocol
2019-01-04 19:29:14 +00:00
christos 355746e494 From FreeBSD:
When using WPA2, EAPOL-Key frames with the Encrypted flag and without the MIC
flag set, the data field was decrypted first without verifying the MIC.  When
the dta field was encrypted using RC4, for example, when negotiating TKIP as
a pairwise cipher, the unauthenticated but decrypted data was subsequently
processed.  This opened wpa_supplicant(8) to abuse by decryption and recovery
of sensitive information contained in EAPOL-Key messages.

See https://w1.fi/security/2018-1/unauthenticated-eapol-key-decryption.txt
for a detailed description of the bug.

XXX: pullup-8
2018-08-16 11:34:41 +00:00
christos 2ff51f0c66 Add the NONE/WIRED drivers. 2018-01-14 03:05:06 +00:00
spz f48fb7bb9f apply patches from upstream, namely from https://w1.fi/security/2017-1/ :
rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch	02-Oct-2017 16:19 	6.1K
rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch	02-Oct-2017 16:19 	7.7K
rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch	02-Oct-2017 16:19 	6.7K
rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch
02-Oct-2017 16:19 	2.5K
rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch
02-Oct-2017 16:19 	1.9K
rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch
02-Oct-2017 16:19 	4.2K
rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch	02-Oct-2017 16:19 	1.6K
rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch	02-Oct-2017 16:19 	2.7K

for CVE-2017-13077 CVE-2017-13078 CVE-2017-13079 CVE-2017-13080
 CVE-2017-13081 CVE-2017-13082 CVE-2017-13086 CVE-2017-13087 CVE-2017-13088

(see
https://w1.fi/security/2017-1/wpa-packet-number-reuse-with-replayed-messages.txt
for details)
2017-10-16 17:36:16 +00:00