]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MEDIUM: jwt: fix base64 decoding error detection
authorWilly Tarreau <w@1wt.eu>
Fri, 15 Oct 2021 09:41:16 +0000 (11:41 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 15 Oct 2021 09:41:16 +0000 (11:41 +0200)
commit468c000db0ddb93540948a1c12c9f9e129f76470
treec122739bf6872de87fa2ef4f0453c05b6a4e3752
parent7b232f132dc9a0a6ee6fa3fabfa6e50196af9240
BUG/MEDIUM: jwt: fix base64 decoding error detection

Tim reported that a decoding error from the base64 function wouldn't
be matched in case of bad input, and could possibly cause trouble
with -1 being passed in decoded_sig->data. In the case of HMAC+SHA
it is harmless as the comparison is made using memcmp() after checking
for length equality, but in the case of RSA/ECDSA this result is passed
as a size_t to EVP_DigetVerifyFinal() and may depend on the lib's mood.

The fix simply consists in checking the intermediary result before
storing it.

That's precisely what happens with one of the regtests which returned
0 instead of 4 on the intentionally defective token, so the regtest
was fixed as well.

No backport is needed as this is new in this release.
reg-tests/jwt/jws_verify.vtc
src/jwt.c