[Bug 1994165] Re: CMS_final: do not ignore CMS_dataFinal result
Andreas Hasenack
1994165 at bugs.launchpad.net
Thu Nov 23 19:03:25 UTC 2023
There are two changes here:
a) The original bug: CMS_final() was not taking into account the result
of CMS_dataFinal() when returning its return code. It might be that
CMS_dataFinal() failed, in which case an error would even be raised, but
the return code of CMS_final() would be that of SMIME_crlf_copy().
b) While fixing (a), it was noticed that tons of other places in the
code were not checking the result code of SMIME_crlf_copy(). It looks
like this function returns a failure (0) when BIO_new() fails, so, a
memory allocation.
I checked an openssl build log[1], and there are tests for CMS, and none
of them failed.
The failure case is explained in [2]:
"""
It means some broken message that will later fail parsing/decryption/signature verification can be produced.
"""
So, my ponderings:
- for (a), was there perhaps a test case added to the openssl case to cover for that mistake? If not, could we come up with one in the test suite?
- the fix for (b) was a drive-by fix, and seems correct, but it is
touching more code. What do you think about isolating the fix in this
SRU to just the CMS_final() function? Pros and cons? So we fix the
CMS_final() function, in the sense that we will keep checking both the
return code of SMIME_crlf_copy() and CMS_dataFinal().
1. https://launchpadlibrarian.net/692262295/buildlog_ubuntu-jammy-amd64.openssl_3.0.2-0ubuntu1.12_BUILDING.txt.gz
2. https://github.com/openssl/openssl/pull/18876#issuecomment-1323830916
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to openssl in Ubuntu.
https://bugs.launchpad.net/bugs/1994165
Title:
CMS_final: do not ignore CMS_dataFinal result
Status in openssl package in Ubuntu:
Fix Released
Status in openssl source package in Jammy:
In Progress
Status in openssl source package in Kinetic:
Won't Fix
Status in openssl source package in Lunar:
Fix Released
Bug description:
=== SRU information ===
[Meta]
This bug is part of a series of three bugs for a single SRU.
The "central" bug with the global information and debdiff is http://pad.lv/2033422
[Impact]
S/MIME signature can fail silently
The commit by upstream propagates the return code of some functions rather than ignore it.
[Test plan]
This issue is not very simple to reproduce because "openssl cms" cannot be used to do so. This has to be done with the openssl API instead.
At least the bug reportere here and the one on openssl's bug tracker have confirmed the patch solves the issue. Additionally, the bug reporter here has tested the PPA that contains the patche and validated it. Finally, I read through the patch attentively.
[Where problems could occur]
At this point it is unlikely an error would appear. The openssl bug tracker mentions nothing related to this patch which landed more than a year ago. The patch is simple and doesn't change the code logic.
[Patches]
The patches come directly from upstream and apply cleanly.
https://github.com/openssl/openssl/pull/18876
* https://git.launchpad.net/~adrien-n/ubuntu/+source/openssl/tree/debian/patches/jammy-sru-0001-REGRESSION-CMS_final-do-not-ignore-CMS_dataFinal-res.patch?h=jammy-sru&id=04ef023920ab08fba214817523fba897527dfff0
* https://git.launchpad.net/~adrien-n/ubuntu/+source/openssl/tree/debian/patches/jammy-sru-0002-Handle-SMIME_crlf_copy-return-code.patch?h=jammy-sru&id=04ef023920ab08fba214817523fba897527dfff0
=== Original description ===
https://github.com/openssl/openssl/pull/18876
The CMS_dataFinal result is important as signature may fail, however, it
is ignored while returning success from CMS_final.
Please add this fix to The openssl 3.0.2 "Jammy Jellyfish (supported)"
Thanks
Upstream commit:
```
commit 67c0460b89cc1b0644a1a59af78284dfd8d720af
Author: Alon Bar-Lev <alon.barlev at gmail.com>
Date: Tue Jul 26 15:17:06 2022 +0300
Handle SMIME_crlf_copy return code
Currently the SMIME_crlf_copy result is ignored in all usages. It does
return failure when memory allocation fails.
This patch handles the SMIME_crlf_copy return code in all
occurrences.
Signed-off-by: Alon Bar-Lev <alon.barlev at gmail.com>
Reviewed-by: Tomas Mraz <tomas at openssl.org>
Reviewed-by: Paul Dale <pauli at openssl.org>
Reviewed-by: Hugo Landau <hlandau at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18876)
```
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/1994165/+subscriptions
More information about the foundations-bugs
mailing list