On Fri, Apr 27, 2018 at 05:08:52PM +0200, Peter Hessler wrote:
> On 2018 Apr 27 (Fri) at 17:45:44 +0300 (+0300), Paul Irofti wrote:
> :On Fri, Apr 27, 2018 at 04:30:50PM +0200, Stefan Sperling wrote:
> :> We just found out that WEP has been broken since August 2017.
> :> Apparently not many people noticed. The commit which broke
> :> it was:
> :> 
> :> [[[
> :>     CVSROOT:       /cvs
> :>     Module name:   src
> :>     Changes by:    [email protected]    2017/08/18 11:30:12
> :>     
> :>     Modified files:
> :>            sys/net80211   : ieee80211_crypto.c ieee80211_crypto.h 
> :>                             ieee80211_proto.c 
> :>     
> :>     Log message:
> :>     Clear WPA group keys from memory before initiating a key exchange
> :>     with an access point. Prevents false positive 'reused group key'
> :>     warnings in dmesg when re-associating to the same access point.
> :>     Problem reported by tb@
> :>     ok tb@
> :> ]]]
> :> 
> :> Clear group keys in iee80211_newstate only if we're doing WPA.
> :> Otherwise, ieee80211_crypto_clear_groupkeys() will clear WEP
> :> keys configured by userland before associating.
> :> (All WEP keys are group keys.)
> :
> :Hahahahha, isn't IEEE80211_F_WEPON a better flag to test?
> :
> 
> As I understand it, we want to clear the group keys for WPA* (RSN).  So
> it's better to check for the reason why.

Are you saying this change also broke WPA1?

> 
> :If not, OK.
> :
> :> 
> :> Index: ieee80211_proto.c
> :> ===================================================================
> :> RCS file: /cvs/src/sys/net80211/ieee80211_proto.c,v
> :> retrieving revision 1.83
> :> diff -u -p -r1.83 ieee80211_proto.c
> :> --- ieee80211_proto.c      6 Feb 2018 22:14:52 -0000       1.83
> :> +++ ieee80211_proto.c      27 Apr 2018 14:00:22 -0000
> :> @@ -948,7 +948,8 @@ justcleanup:
> :>                    break;
> :>            }
> :>            ni->ni_rsn_supp_state = RSNA_SUPP_INITIALIZE;
> :> -          ieee80211_crypto_clear_groupkeys(ic);
> :> +          if (ic->ic_flags & IEEE80211_F_RSNON)
> :> +                  ieee80211_crypto_clear_groupkeys(ic);
> :>            break;
> :>    case IEEE80211_S_SCAN:
> :>            ic->ic_flags &= ~IEEE80211_F_SIBSS;
> :> @@ -960,7 +961,8 @@ justcleanup:
> :>            ni->ni_associd = 0;
> :>            ni->ni_rstamp = 0;
> :>            ni->ni_rsn_supp_state = RSNA_SUPP_INITIALIZE;
> :> -          ieee80211_crypto_clear_groupkeys(ic);
> :> +          if (ic->ic_flags & IEEE80211_F_RSNON)
> :> +                  ieee80211_crypto_clear_groupkeys(ic);
> :>            switch (ostate) {
> :>            case IEEE80211_S_INIT:
> :>  #ifndef IEEE80211_STA_ONLY
> :> @@ -1006,7 +1008,8 @@ justcleanup:
> :>            break;
> :>    case IEEE80211_S_AUTH:
> :>            ni->ni_rsn_supp_state = RSNA_SUPP_INITIALIZE;
> :> -          ieee80211_crypto_clear_groupkeys(ic);
> :> +          if (ic->ic_flags & IEEE80211_F_RSNON)
> :> +                  ieee80211_crypto_clear_groupkeys(ic);
> :>            switch (ostate) {
> :>            case IEEE80211_S_INIT:
> :>                    if (ifp->if_flags & IFF_DEBUG)
> :
> 
> -- 
> Thou shalt not omit adultery.

Reply via email to