mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-14 10:09:48 +00:00
Mitigate providing a timing signal if the COOKIE or AUTH
validation fails. Thanks to jmg@ for reporting the issue, which was discussed in https://admbugs.freebsd.org/show_bug.cgi?id=878 Approved by: re (TBD@) MFC after: 1 week
This commit is contained in:
parent
6e4fdb5c9d
commit
15a087e551
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=339042
@ -1706,7 +1706,7 @@ sctp_handle_auth(struct sctp_tcb *stcb, struct sctp_auth_chunk *auth,
|
||||
m, offset, computed_digest);
|
||||
|
||||
/* compare the computed digest with the one in the AUTH chunk */
|
||||
if (memcmp(digest, computed_digest, digestlen) != 0) {
|
||||
if (timingsafe_bcmp(digest, computed_digest, digestlen) != 0) {
|
||||
SCTP_STAT_INCR(sctps_recvauthfailed);
|
||||
SCTPDBG(SCTP_DEBUG_AUTH1,
|
||||
"SCTP Auth: HMAC digest check failed\n");
|
||||
|
@ -2554,7 +2554,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset,
|
||||
return (NULL);
|
||||
}
|
||||
/* compare the received digest with the computed digest */
|
||||
if (memcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) != 0) {
|
||||
if (timingsafe_bcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) != 0) {
|
||||
/* try the old cookie? */
|
||||
if ((cookie->time_entered.tv_sec == (long)ep->time_of_secret_change) &&
|
||||
(ep->current_secret_number != ep->last_secret_number)) {
|
||||
@ -2563,7 +2563,7 @@ sctp_handle_cookie_echo(struct mbuf *m, int iphlen, int offset,
|
||||
(uint8_t *)ep->secret_key[(int)ep->last_secret_number],
|
||||
SCTP_SECRET_SIZE, m, cookie_offset, calc_sig, 0);
|
||||
/* compare */
|
||||
if (memcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) == 0)
|
||||
if (timingsafe_bcmp(calc_sig, sig, SCTP_SIGNATURE_SIZE) == 0)
|
||||
cookie_ok = 1;
|
||||
}
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user