lib/krb5: use check_fast() in _krb5_fast_unwrap_error()
At least Windows KDCs return KRB5KRB_AP_ERR_SKEW without edata in response to TGS-REQ. This ensures the callers see the KRB5KRB_AP_ERR_SKEW error and not KRB5_KDCREP_MODIFIED "FAST fast response is missing FX-FAST". For the response to an amored AS-REQ, we'll now return KRB5KRB_AP_ERR_MODIFIED instead of KRB5_KDCREP_MODIFIED, but if there's an attack the exact error code doesn't matter. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15676 Pair-Programmed-With: Stefan Metzmacher <metze@samba.org> Signed-off-by: Ralph Boehme <slow@samba.org> Signed-off-by: Stefan Metzmacher <metze@samba.org>
This commit is contained in:

committed by
Jeffrey Altman

parent
2f7a9d9530
commit
c2e68593a5
@@ -694,10 +694,14 @@ _krb5_fast_unwrap_error(krb5_context context,
|
||||
idx = 0;
|
||||
pa = krb5_find_padata(md->val, md->len, KRB5_PADATA_FX_FAST, &idx);
|
||||
if (pa == NULL) {
|
||||
ret = KRB5_KDCREP_MODIFIED;
|
||||
krb5_set_error_message(context, ret,
|
||||
N_("FAST fast response is missing FX-FAST", ""));
|
||||
goto out;
|
||||
/*
|
||||
* Typically _krb5_fast_wrap_req() has set KRB5_FAST_EXPECTED, which
|
||||
* means check_fast() will complain and return KRB5KRB_AP_ERR_MODIFIED.
|
||||
*
|
||||
* But for TGS-REP init_tgs_req() clears KRB5_FAST_EXPECTED and we'll
|
||||
* ignore a missing KRB5_PADATA_FX_FAST.
|
||||
*/
|
||||
return check_fast(context, state);
|
||||
}
|
||||
|
||||
ret = unwrap_fast_rep(context, state, pa, &fastrep);
|
||||
|
Reference in New Issue
Block a user