Commit Graph

73 Commits

Author SHA1 Message Date
roy
51cc62e4dc Fix is defined in wpa_common.h which the driver already pulls in. 2016-02-05 15:05:29 +00:00
christos
b06fa2e70f use 0 for udata for portability (FreeBSD has a pointer, we have uintptr_t) 2016-01-24 19:15:56 +00:00
christos
b7405849a6 the eloop hack should not be needed anymore. 2016-01-24 18:49:05 +00:00
roy
98c42a5b41 Remove unused var 2016-01-22 20:21:04 +00:00
roy
fbb8252e94 Size the kevent receive buffer correctly. 2016-01-22 18:01:05 +00:00
roy
0e46e78071 Fix build for clang and kqueue 2016-01-22 17:56:20 +00:00
roy
d2b81c07d7 Re-queue kqueue events after forking. 2016-01-20 17:03:35 +00:00
roy
042b6b4776 Sync upstream changes for eloop 2016-01-20 15:26:13 +00:00
roy
96193774ca Build with kqueue(2) support 2016-01-20 15:08:44 +00:00
roy
6da92e7fec Add kqueue(2) support. 2016-01-20 15:07:52 +00:00
roy
19aa8ba08a If an interface is removed, zero the remembered ifindex.
Don't try to set properties on the interface when it is removed.
2016-01-20 14:43:40 +00:00
roy
24a4d098ea wpa_supplicant dropped the -w option a long time ago, lets not pretend
it still works.
2016-01-19 18:09:09 +00:00
roy
e2e73853a3 Downing the interface now disables it instead of removing it. 2016-01-19 17:22:57 +00:00
roy
b34fd366ac Use the interface index from the correc structure according to the message
to find the driver instead of assuming that rtm_index is corect.
2016-01-19 16:47:44 +00:00
roy
05166036b2 Syntax (no functional change) 2016-01-19 15:49:07 +00:00
roy
a580913301 Revert an older change as upstream now calculates level from rssi and noise. 2016-01-19 15:45:00 +00:00
roy
540fe73fe8 Remove pointless check 2016-01-19 15:27:57 +00:00
roy
a0af6c43af Remove added debug to sync more with upstream. 2016-01-19 15:18:20 +00:00
roy
11ef54a957 Don't log RTM messages we aren't interested in at all. 2016-01-19 15:08:29 +00:00
roy
7afa5a975d Sort options and reduce printf calls. 2016-01-15 20:34:35 +00:00
roy
9ff00cbafe Create global init to handle socket calls and route messages.
Register each interface inside the global driver so that
routing messages can find the interface based on rtm_ifindex.
2016-01-14 21:19:41 +00:00
wiz
a329a2c2fe Add arguments to options in description.
Replace manual xref with Xr.
2016-01-10 20:31:13 +00:00
roy
af11e5ab0d Fixup SYNOPSIS some more. 2016-01-10 15:52:36 +00:00
roy
5533690441 Update wpa_supplicant(8) to what it actually does. 2016-01-08 23:37:58 +00:00
roy
9c5968fe21 Enable syslog support 2016-01-08 23:31:29 +00:00
christos
f16c72ecb3 Apply patch by Jouni Malinen. We don't have CONFIG_EAP_PWD enabled so we are
not affected:

EAP-pwd peer error path failure on unexpected Confirm message

Published: November 10, 2015
Identifier: CVE-2015-5316
Latest version available from: http://w1.fi/security/2015-8/

Vulnerability

A vulnerability was found in EAP-pwd peer implementation used in
wpa_supplicant. If an EAP-pwd Confirm message is received unexpectedly
before the Identity exchange, the error path processing ended up
dereferencing a NULL pointer and terminating the process.

For wpa_supplicant with EAP-pwd enabled in a network configuration
profile, this could allow a denial of service attack by an attacker
within radio range.

Vulnerable versions/configurations

wpa_supplicant v2.3-v2.5 with CONFIG_EAP_PWD=y in the build
configuration (wpa_supplicant/.config) and EAP-pwd enabled in a network
profile at runtime.

Possible mitigation steps

- Merge the following commits and rebuild wpa_supplicant:

  EAP-pwd peer: Fix error path for unexpected Confirm message

  This patch is available from http://w1.fi/security/2015-8/

- Update to wpa_supplicant v2.6 or newer, once available

- Remove CONFIG_EAP_PWD=y from build configuration

- Disable EAP-pwd in runtime configuration
2015-11-10 18:39:40 +00:00
joerg
b5b69f0009 Simplify. 2015-08-28 13:04:48 +00:00
christos
430343a0c6 The L (Length) and M (More) flags needs to be cleared before deciding
whether the locally generated response requires fragmentation. This
fixes an issue where these flags from the server could have been invalid
for the following message. In some cases, this could have resulted in
triggering the wpabuf security check that would terminate the process
due to invalid buffer allocation.

XXX: pullup-7
2015-05-09 19:51:43 +00:00
christos
38d77090f3 The remaining number of bytes in the message could be smaller than the
Total-Length field size, so the length needs to be explicitly checked
prior to reading the field and decrementing the len variable. This could
have resulted in the remaining length becoming negative and interpreted
as a huge positive integer.

In addition, check that there is no already started fragment in progress
before allocating a new buffer for reassembling fragments. This avoid a
potential memory leak when processing invalid message.

XXX: pullup-7
2015-05-09 19:49:28 +00:00
christos
11ce78e57f The length of the received Commit and Confirm message payloads was not
checked before reading them. This could result in a buffer read
overflow when processing an invalid message.

Fix this by verifying that the payload is of expected length before
processing it. In addition, enforce correct state transition sequence to
make sure there is no unexpected behavior if receiving a Commit/Confirm
message before the previous exchanges have been completed.

Thanks to Kostya Kortchinsky of Google security team for discovering and
reporting this issue.

XXX: pullup-7
2015-05-09 19:46:01 +00:00
christos
c23d0f7f66 The length of the WMM Action frame was not properly validated and the
length of the information elements (int left) could end up being
negative. This would result in reading significantly past the stack
buffer while parsing the IEs in ieee802_11_parse_elems() and while doing
so, resulting in segmentation fault.

This can result in an invalid frame being used for a denial of service
attack (hostapd process killed) against an AP with a driver that uses
hostapd for management frame processing (e.g., all mac80211-based
drivers).

Thanks to Kostya Kortchinsky of Google security team for discovering and
reporting this issue.

XXX: pullup-7
2015-05-09 19:35:15 +00:00
christos
e4bfca3a3e strtoul() return value may end up overflowing the int h->chunk_size and
resulting in a negative value to be stored as the chunk_size. This could
result in the following memcpy operation using a very large length
argument which would result in a buffer overflow and segmentation fault.

This could have been used to cause a denial service by any device that
has been authorized for network access (either wireless or wired). This
would affect both the WPS UPnP functionality in a WPS AP (hostapd with
upnp_iface parameter set in the configuration) and WPS ER
(wpa_supplicant with WPS_ER_START control interface command used).

Validate the parsed chunk length value to avoid this. In addition to
rejecting negative values, we can also reject chunk size that would be
larger than the maximum configured body length.

Thanks to Kostya Kortchinsky of Google security team for discovering and
reporting this issue.

XXX: pullup-7
2015-05-09 19:33:47 +00:00
christos
8e17dc8ada Fix potential buffer overflow:
http://w1.fi/security/2015-1/0001-P2P-Validate-SSID-element-length-before-copying-it-C.patch

XXX: pullup-[67]
2015-04-22 20:24:20 +00:00
joerg
401f422fcf Cast enum. 2015-04-11 21:14:13 +00:00
christos
299bbf2463 merge conflicts. 2015-04-01 19:45:14 +00:00
christos
bb610346a8 2015-03-15 - v2.4
* allow OpenSSL cipher configuration to be set for internal EAP server
  (openssl_ciphers parameter)
* fixed number of small issues based on hwsim test case failures and
  static analyzer reports
* P2P:
  - add new=<0/1> flag to P2P-DEVICE-FOUND events
  - add passive channels in invitation response from P2P Client
  - enable nl80211 P2P_DEVICE support by default
  - fix regresssion in disallow_freq preventing search on social
    channels
  - fix regressions in P2P SD query processing
  - try to re-invite with social operating channel if no common channels
    in invitation
  - allow cross connection on parent interface (this fixes number of
    use cases with nl80211)
  - add support for P2P services (P2PS)
  - add p2p_go_ctwindow configuration parameter to allow GO CTWindow to
    be configured
* increase postponing of EAPOL-Start by one second with AP/GO that
  supports WPS 2.0 (this makes it less likely to trigger extra roundtrip
  of identity frames)
* add support for PMKSA caching with SAE
* add support for control mesh BSS (IEEE 802.11s) operations
* fixed number of issues with D-Bus P2P commands
* fixed regression in ap_scan=2 special case for WPS
* fixed macsec_validate configuration
* add a workaround for incorrectly behaving APs that try to use
  EAPOL-Key descriptor version 3 when the station supports PMF even if
  PMF is not enabled on the AP
* allow TLS v1.1 and v1.2 to be negotiated by default; previous behavior
  of disabling these can be configured to work around issues with broken
  servers with phase1="tls_disable_tlsv1_1=1 tls_disable_tlsv1_2=1"
* add support for Suite B (128-bit and 192-bit level) key management and
  cipher suites
* add WMM-AC support (WMM_AC_ADDTS/WMM_AC_DELTS)
* improved BSS Transition Management processing
* add support for neighbor report
* add support for link measurement
* fixed expiration of BSS entry with all-zeros BSSID
* add optional LAST_ID=x argument to LIST_NETWORK to allow all
  configured networks to be listed even with huge number of network
  profiles
* add support for EAP Re-Authentication Protocol (ERP)
* fixed EAP-IKEv2 fragmentation reassembly
* improved PKCS#11 configuration for OpenSSL
* set stdout to be line-buffered
* add TDLS channel switch configuration
* add support for MAC address randomization in scans with nl80211
* enable HT for IBSS if supported by the driver
* add BSSID black and white lists (bssid_blacklist, bssid_whitelist)
* add support for domain_suffix_match with GnuTLS
* add OCSP stapling client support with GnuTLS
* include peer certificate in EAP events even without a separate probe
  operation; old behavior can be restored with cert_in_cb=0
* add peer ceritficate alt subject name to EAP events
  (CTRL-EVENT-EAP-PEER-ALT)
* add domain_match network profile parameter (similar to
  domain_suffix_match, but full match is required)
* enable AP/GO mode HT Tx STBC automatically based on driver support
* add ANQP-QUERY-DONE event to provide information on ANQP parsing
  status
* allow passive scanning to be forced with passive_scan=1
* add a workaround for Linux packet socket behavior when interface is in
  bridge
* increase 5 GHz band preference in BSS selection (estimate SNR, if info
  not available from driver; estimate maximum throughput based on common
  HT/VHT/specific TX rate support)
* add INTERWORKING_ADD_NETWORK ctrl_iface command; this can be used to
  implement Interworking network selection behavior in upper layers
  software components
* add optional reassoc_same_bss_optim=1 (disabled by default)
  optimization to avoid unnecessary Authentication frame exchange
* extend TDLS frame padding workaround to cover all packets
* allow wpa_supplicant to recover nl80211 functionality if the cfg80211
  module gets removed and reloaded without restarting wpa_supplicant
* allow hostapd DFS implementation to be used in wpa_supplicant AP mode
2015-04-01 19:24:35 +00:00
christos
b5f88169da prevent coredump from the distributed config file.
XXX: pullup-7
2015-03-07 22:31:24 +00:00
christos
dfb7f9f0b8 move crypto file to the right group 2015-01-23 02:57:34 +00:00
joerg
8fd693ea05 Fix format strings to match argument types. 2014-10-19 14:13:01 +00:00
christos
fe1a092fc9 avoid variable array allocation that gcc can't figure out. 2014-10-17 02:57:42 +00:00
christos
3c5783d32c merge conflicts. 2014-10-16 19:29:29 +00:00
christos
3c260e6046 Import wpa_supplicant and hostapd 2014-10-16 19:16:01 +00:00
jakllsch
98128fa573 Pass the scan result RSSI to the WPA code in a way that it understands. 2014-06-29 23:10:48 +00:00
christos
2ef91ead3c CID 272959: NULL deref 2014-05-28 14:36:41 +00:00
riastradh
6cb10275d0 Merge riastradh-drm2 to HEAD. 2014-03-18 18:20:35 +00:00
joerg
937ce279d6 Timestamps can be quite large, so use llabs. 2014-02-27 17:42:23 +00:00
christos
6e605f060f move crypto_openssl.c back into the right room. 2014-01-03 02:15:43 +00:00
christos
316ee51248 merge conflicts 2014-01-03 02:08:16 +00:00
christos
d9bedca71a update for 2.0 2014-01-03 02:07:31 +00:00
christos
e604d8611d import v2_0:
2013-01-12 - v2.0
	* removed Qt3-based wpa_gui (obsoleted by wpa_qui-qt4)
	* removed unmaintained driver wrappers broadcom, iphone, osx, ralink,
	  hostap, madwifi (hostap and madwifi remain available for hostapd;
	  their wpa_supplicant functionality is obsoleted by wext)
	* improved debug logging (human readable event names, interface name
	  included in more entries)
	* changed AP mode behavior to enable WPS only for open and
	  WPA/WPA2-Personal configuration
	* improved P2P concurrency operations
	  - better coordination of concurrent scan and P2P search operations
	  - avoid concurrent remain-on-channel operation requests by canceling
	    previous operations prior to starting a new one
	  - reject operations that would require multi-channel concurrency if
	    the driver does not support it
	  - add parameter to select whether STA or P2P connection is preferred
	    if the driver cannot support both at the same time
	  - allow driver to indicate channel changes
	  - added optional delay=<search delay in milliseconds> parameter for
	    p2p_find to avoid taking all radio resources
	  - use 500 ms p2p_find search delay by default during concurrent
	    operations
	  - allow all channels in GO Negotiation if the driver supports
	    multi-channel concurrency
	* added number of small changes to make it easier for static analyzers
	  to understand the implementation
	* fixed number of small bugs (see git logs for more details)
	* nl80211: number of updates to use new cfg80211/nl80211 functionality
	  - replace monitor interface with nl80211 commands for AP mode
	  - additional information for driver-based AP SME
	  - STA entry authorization in RSN IBSS
	* EAP-pwd:
	  - fixed KDF for group 21 and zero-padding
	  - added support for fragmentation
	  - increased maximum number of hunting-and-pecking iterations
	* avoid excessive Probe Response retries for broadcast Probe Request
	  frames (only with drivers using wpa_supplicant AP mode SME/MLME)
	* added "GET country" ctrl_iface command
	* do not save an invalid network block in wpa_supplicant.conf to avoid
	  problems reading the file on next start
	* send STA connected/disconnected ctrl_iface events to both the P2P
	  group and parent interfaces
	* added preliminary support for using TLS v1.2 (CONFIG_TLSV12=y)
	* added "SET pno <1/0>" ctrl_iface command to start/stop preferred
	  network offload with sched_scan driver command
	* merged in number of changes from Android repository for P2P, nl80211,
	  and build parameters
	* changed P2P GO mode configuration to use driver capabilities to
	  automatically enable HT operations when supported
	* added "wpa_cli status wps" command to fetch WPA2-Personal passhrase
	  for WPS use cases in AP mode
	* EAP-AKA: keep pseudonym identity across EAP exchanges to match EAP-SIM
	  behavior
	* improved reassociation behavior in cases where association is rejected
	  or when an AP disconnects us to handle common load balancing
	  mechanisms
	  - try to avoid extra scans when the needed information is available
	* added optional "join" argument for p2p_prov_disc ctrl_iface command
	* added group ifname to P2P-PROV-DISC-* events
	* added P2P Device Address to AP-STA-DISCONNECTED event and use
	  p2p_dev_addr parameter name with AP-STA-CONNECTED
	* added workarounds for WPS PBC overlap detection for some P2P use cases
	  where deployed stations work incorrectly
	* optimize WPS connection speed by disconnecting prior to WPS scan and
	  by using single channel scans when AP channel is known
	* PCSC and SIM/USIM improvements:
	  - accept 0x67 (Wrong length) as a response to READ RECORD to fix
	    issues with some USIM cards
	  - try to read MNC length from SIM/USIM
	  - build realm according to 3GPP TS 23.003 with identity from the SIM
	  - allow T1 protocol to be enabled
	* added more WPS and P2P information available through D-Bus
	* improve P2P negotiation robustness
	  - extra waits to get ACK frames through
	  - longer timeouts for cases where deployed devices have been
	    identified have issues meeting the specification requirements
	  - more retries for some P2P frames
	  - handle race conditions in GO Negotiation start by both devices
	  - ignore unexpected GO Negotiation Response frame
	* added support for libnl 3.2 and newer
	* added P2P persistent group info to P2P_PEER data
	* maintain a list of P2P Clients for persistent group on GO
	* AP: increased initial group key handshake retransmit timeout to 500 ms
	* added optional dev_id parameter for p2p_find
	* added P2P-FIND-STOPPED ctrl_iface event
	* fixed issues in WPA/RSN element validation when roaming with ap_scan=1
	  and driver-based BSS selection
	* do not expire P2P peer entries while connected with the peer in a
	  group
	* fixed WSC element inclusion in cases where P2P is disabled
	* AP: added a WPS workaround for mixed mode AP Settings with Windows 7
	* EAP-SIM: fixed AT_COUNTER_TOO_SMALL use
	* EAP-SIM/AKA: append realm to pseudonym identity
	* EAP-SIM/AKA: store pseudonym identity in network configuration to
	  allow it to persist over multiple EAP sessions and wpa_supplicant
	  restarts
	* EAP-AKA': updated to RFC 5448 (username prefixes changed); note: this
	  breaks interoperability with older versions
	* added support for WFA Hotspot 2.0
	  - GAS/ANQP to fetch network information
	  - credential configuration and automatic network selections based on
	    credential match with ANQP information
	* limited PMKSA cache entries to be used only with the network context
	  that was used to create them
	* improved PMKSA cache expiration to avoid unnecessary disconnections
	* adjusted bgscan_simple fast-scan backoff to avoid too frequent
	  background scans
	* removed ctrl_iface event on P2P PD Response in join-group case
	* added option to fetch BSS table entry based on P2P Device Address
	  ("BSS p2p_dev_addr=<P2P Device Address>")
	* added BSS entry age to ctrl_iface BSS command output
	* added optional MASK=0xH option for ctrl_iface BSS command to select
	  which fields are included in the response
	* added optional RANGE=ALL|N1-N2 option for ctrl_iface BSS command to
	  fetch information about several BSSes in one call
	* simplified licensing terms by selecting the BSD license as the only
	  alternative
	* added "P2P_SET disallow_freq <freq list>" ctrl_iface command to
	  disable channels from P2P use
	* added p2p_pref_chan configuration parameter to allow preferred P2P
	  channels to be specified
	* added support for advertising immediate availability of a WPS
	  credential for P2P use cases
	* optimized scan operations for P2P use cases (use single channel scan
	  for a specific SSID when possible)
	* EAP-TTLS: fixed peer challenge generation for MSCHAPv2
	* SME: do not use reassociation after explicit disconnection request
	  (local or a notification from an AP)
	* added support for sending debug info to Linux tracing (-T on command
	  line)
	* added support for using Deauthentication reason code 3 as an
	  indication of P2P group termination
	* added wps_vendor_ext_m1 configuration parameter to allow vendor
	  specific attributes to be added to WPS M1
	* started using separate TLS library context for tunneled TLS
	  (EAP-PEAP/TLS, EAP-TTLS/TLS, EAP-FAST/TLS) to support different CA
	  certificate configuration between Phase 1 and Phase 2
	* added optional "auto" parameter for p2p_connect to request automatic
	  GO Negotiation vs. join-a-group selection
	* added disabled_scan_offload parameter to disable automatic scan
	  offloading (sched_scan)
	* added optional persistent=<network id> parameter for p2p_connect to
	  allow forcing of a specific SSID/passphrase for GO Negotiation
	* added support for OBSS scan requests and 20/40 BSS coexistence reports
	* reject PD Request for unknown group
	* removed scripts and notes related to Windows binary releases (which
	  have not been used starting from 1.x)
	* added initial support for WNM operations
	  - Keep-alive based on BSS max idle period
	  - WNM-Sleep Mode
	  - minimal BSS Transition Management processing
	* added autoscan module to control scanning behavior while not connected
	  - autoscan_periodic and autoscan_exponential modules
	* added new WPS NFC ctrl_iface mechanism
	  - added initial support NFC connection handover
	  - removed obsoleted WPS_OOB command (including support for deprecated
	    UFD config_method)
	* added optional framework for external password storage ("ext:<name>")
	* wpa_cli: added optional support for controlling wpa_supplicant
	  remotely over UDP (CONFIG_CTRL_IFACE=udp-remote) for testing purposes
	* wpa_cli: extended tab completion to more commands
	* changed SSID output to use printf-escaped strings instead of masking
	  of non-ASCII characters
	  - SSID can now be configured in the same format: ssid=P"abc\x00test"
	* removed default ACM=1 from AC_VO and AC_VI
	* added optional "ht40" argument for P2P ctrl_iface commands to allow
	  40 MHz channels to be requested on the 5 GHz band
	* added optional parameters for p2p_invite command to specify channel
	  when reinvoking a persistent group as the GO
	* improved FIPS mode builds with OpenSSL
	  - "make fips" with CONFIG_FIPS=y to build wpa_supplicant with the
	    OpenSSL FIPS object module
	  - replace low level OpenSSL AES API calls to use EVP
	  - use OpenSSL keying material exporter when possible
	  - do not export TLS keys in FIPS mode
	  - remove MD5 from CONFIG_FIPS=y builds
	  - use OpenSSL function for PKBDF2 passphrase-to-PSK
	  - use OpenSSL HMAC implementation
	  - mix RAND_bytes() output into random_get_bytes() to force OpenSSL
	    DRBG to be used in FIPS mode
	  - use OpenSSL CMAC implementation
	* added mechanism to disable TLS Session Ticket extension
	  - a workaround for servers that do not support TLS extensions that
	    was enabled by default in recent OpenSSL versions
	  - tls_disable_session_ticket=1
	  - automatically disable TLS Session Ticket extension by default when
	    using EAP-TLS/PEAP/TTLS (i.e., only use it with EAP-FAST)
	* changed VENDOR-TEST EAP method to use proper private enterprise number
	  (this will not interoperate with older versions)
	* disable network block temporarily on authentication failures
	* improved WPS AP selection during WPS PIN iteration
	* added support for configuring GCMP cipher for IEEE 802.11ad
	* added support for Wi-Fi Display extensions
	  - WFD_SUBELEMENT_SET ctrl_iface command to configure WFD subelements
	  - SET wifi_display <0/1> to disable/enable WFD support
	  - WFD service discovery
	  - an external program is needed to manage the audio/video streaming
	    and codecs
	* optimized scan result use for network selection
	  - use the internal BSS table instead of raw scan results
	  - allow unnecessary scans to be skipped if fresh information is
	    available (e.g., after GAS/ANQP round for Interworking)
	* added support for 256-bit AES with internal TLS implementation
	* allow peer to propose channel in P2P invitation process for a
	  persistent group
	* added disallow_aps parameter to allow BSSIDs/SSIDs to be disallowed
	  from network selection
	* re-enable the networks disabled during WPS operations
	* allow P2P functionality to be disabled per interface (p2p_disabled=1)
	* added secondary device types into P2P_PEER output
	* added an option to disable use of a separate P2P group interface
	  (p2p_no_group_iface=1)
	* fixed P2P Bonjour SD to match entries with both compressed and not
	  compressed domain name format and support multiple Bonjour PTR matches
	  for the same key
	* use deauthentication instead of disassociation for all disconnection
	  operations; this removes the now unused disassociate() wpa_driver_ops
	  callback
	* optimized PSK generation on P2P GO by caching results to avoid
	  multiple PBKDF2 operations
	* added okc=1 global configuration parameter to allow OKC to be enabled
	  by default for all network blocks
	* added a workaround for WPS PBC session overlap detection to avoid
	  interop issues with deployed station implementations that do not
	  remove active PBC indication from Probe Request frames properly
	* added basic support for 60 GHz band
	* extend EAPOL frames processing workaround for roaming cases
	  (postpone processing of unexpected EAPOL frame until association
	  event to handle reordered events)
2014-01-03 02:04:55 +00:00