release 0.6.2.7
·
30 commits
to version-0.6.2.x
since this release
Security
- Additional hardening from a security audit of
concatkdf.c/jwk.c/jws.c/jwe.c:- Avoid a NULL dereference of the optional
cjose_errin ECDH-ES ConcatKDF otherinfo creation; adds a regression test - Check the per-block hash allocation in
cjose_concatkdf_derive - NUL-terminate the JWK
kidwithout over-reading the source buffer - Cleanse the JWS HMAC digest buffer before reallocation
- Make the JWE content-cipher (
enc) dispatch mutually exclusive - Cleanse the per-iteration digest buffer (derived key material) in
cjose_concatkdf_derive - Cleanse the base64url-encoded private key material on the EC and oct JWK export paths
- Cleanse the decrypted JWE plaintext buffer on release and reuse (incl. unauthenticated plaintext left behind by a failed AES-GCM tag check)
- Validate the caller-supplied IV length on the JWE encrypt path (12 bytes for AES-GCM, 16 for AES-CBC-HMAC), mirroring the decrypt-side checks; adds a regression test
- Require the RSA-decrypted CEK length to match the
enckeysize and the encrypted key segment to be exactly the modulus size; adds a regression test - Use
size_tfor the dot-scan offsets incjose_jws_import(truncated for >2GiB input) - Check the result of
json_object_set_newincjose_header_set/cjose_header_set_raw - Bounds-check the error-message table in
cjose_err_messageand render OpenSSL error strings into a thread-local buffer instead of the shared static one - Validate the JWS ECDSA signature length against the key's curve before splitting it into R || S, rejecting non-canonical (e.g. trailing-byte-padded) signatures that the
sig_len / 2split would otherwise accept (RFC 7518 section 3.4); adds a regression test - Avoid an unsigned underflow of the remaining-bytes counter on the final block of
cjose_concatkdf_derive - Make the JWE CEK key-size (
enc) selection mutually exclusive and reject an unrecognizedencinstead of deriving a zero-length CEK
- Avoid a NULL dereference of the optional
The RPM packages below are signed with the following RSA PGP key:
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBGh53lgBCADCyoOkfnE5h5rBLlf02oFpI/z2vUXK5W4T56xnNPu0/iIOxbBk
YX9rSypZFhfjv28lhGgelWEg28Ab/Yxs6l0obCgDEuFUDQ5Dv+N+YSMy67vtLwYW
9LM5p9fMN9bXOa62PwvtzRzh+xRyRBcIfMacGJC+SqUK6QhzC0lNwCsr1OaWjzon
mkaodwrloNMxEZVvFn63PvuQDZ3wwQty+0XpYiiChMssGBn6nmPDQJ7pDtQDkhfD
Z5FKY6K7AQJ4fneiVCLGngPBwTXBGcfWa+Y0HCS2ghQwDO6jYXd5GjowVDTjfMK3
QJ3e26Ox9X3V0Fl04R1i5EthEkAWGfy1lksvABEBAAG0HU9wZW5JREMgPHN1cHBv
cnRAb3BlbmlkYy5jb20+iQFRBBMBCgA7FiEEFdjWJA1IGDkAITSxnyZY1L0OSOMF
Amh53lgCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQnyZY1L0OSONG
Jgf+II0wG96R0g28Kp+R4AYzSdX0CEqr6OhwHHw4cFpLsHxZNhojo7I4OnLKEdfc
lFl37rE+hG3QpzD/b4S/fpPjd4hcLkguBQxtdxqZZVAIT8HWbveHRkI8MNnjOPwv
Hy6jBncMs1IT/URV2si/Q34+PLo8tvo/lXNa16svVl2DoYXO8MCszgCE1bx055EF
XPh4Teu5Y4OLHECSicMxrmN746dAD121zy4bLLx9mZ0erhLjvkj1vkFmlHFKyvwY
/pbSqXs9hW/wweW1oQ/xEIJWWS71PeoutUBjr0WC4sILnR5PBPZplgNh297Qex6g
qaW3io0tCH9KxU1tXYn/iL/hbQ==
=mlOy
-----END PGP PUBLIC KEY BLOCK-----