Sorry, I thought that a fixed CVE would be incorrectly marked as "has no known
resolution" if (last_affected == version) unless the following patch is applied,
but this was a misunderstanding.

--- a/meta/recipes-kernel/linux/generate-cve-exclusions.py
+++ b/meta/recipes-kernel/linux/generate-cve-exclusions.py
@@ -70,7 +70,7 @@ do_cve_check[prefuncs] += "check_kernel_cve_status_version"
             print(f"# {cve} has no known resolution")
         elif first_affected and version < first_affected:
             print(f'CVE_STATUS[{cve}] = "fixed-version: only affects 
{first_affected} onwards"')
-        elif last_affected < version:
+        elif last_affected <= version:
             print(
                 f'CVE_STATUS[{cve}] = "fixed-version: Fixed after version 
{last_affected}"'
             )

Comparing the output for version 6.1 before and after applying above patch, the
following results were obtained:

--- 6.1.0_unpatched.inc 2023-09-05 09:59:54.166291339 +0900
+++ 6.1.0_patched.inc   2023-09-05 09:58:28.179817233 +0900
(... snip ...)
@@ -4422,7 +4422,7 @@

 # CVE-2022-3642 has no known resolution

-CVE_STATUS[CVE-2022-3643] = "cpe-stable-backport: Backported in 6.1"
+CVE_STATUS[CVE-2022-3643] = "fixed-version: Fixed after version 6.1"

 CVE_STATUS[CVE-2022-3646] = "fixed-version: Fixed after version 6.1rc1"


If the range check for affected_versions is not hit, the script checks for
backports to the stable version, so the result is not "has no known resolution".
Since I didn't read the last part of the script properly, I missed it...


On the other hand, there still seems to be an issue that the meaning of
CVE_STATUS seems to be incorrect, so I will try to write a patch.

* I think "fixed-version: Fixed after version {last_affected}" is exactly
  "fixed-version: Fixed *from* version {last_affected}".
  (i.e., {last_affected} should have already be fixed)

* Since the backported patches are not included in version X.Y,
  "cpe-stable-backport: Backported in X.Y" should be
  "fixed-version: Fixed from version X.Y".


Regards,

Yuta Hayama

On 2023/09/01 15:03, Yuta Hayama via lists.openembedded.org wrote:
> Hi,
> 
> I have been trying Linux Kernel CVEs for a while now and found a weird part in
> generate-cve-exclusions.py.
> 
> https://git.openembedded.org/openembedded-core/tree/meta/recipes-kernel/linux/generate-cve-exclusions.py#n64
> 
>>        affected = data["affected_versions"]
>>        first_affected, last_affected = re.search(r"(.+) to (.+)", 
>> affected).groups()
>>        first_affected = parse_version(first_affected)
>>        last_affected = parse_version(last_affected)
>>
>>        if not last_affected:
>>            print(f"# {cve} has no known resolution")
>>        elif first_affected and version < first_affected:
>>            print(f'CVE_STATUS[{cve}] = "fixed-version: only affects 
>> {first_affected} onwards"')
>>        elif last_affected < version:
>>            print(
>>                f'CVE_STATUS[{cve}] = "fixed-version: Fixed after version 
>> {last_affected}"'
> 
> generate-cve-exclusions.py interprets "affected_versions" in kernel_cves.json
> literally as "first affected version" to "last affected version". However,
> "affected_versions" may actually mean "first affected version" to "fixed 
> version".
> 
> I honestly don't know what's going on here, as I can't find any documentation
> for Linux Kernel CVEs. But, picking up a random CVE and checking it in detail,
> I think the second element in "affected_versions" is actually a "fixed 
> version".
> 
> Some examples.
> 
> [CVE-2023-28327]
> * In kernel_cves.json, "affected_versions" is described as "v5.3-rc1 to v6.1"
> * the patch is 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b3abe42e94900bdd045c472f9c9be620ba5ce553
> * v6.1-rc8 source is 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/unix/diag.c?h=v6.1-rc8#n117
> * v6.1 source is 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/unix/diag.c?h=v6.1#n117
> * It seems to be fixed in 6.1 (not after 6.1).
> 
> [CVE-2021-3772]
> * In kernel_cves.json, "affected_versions" is described as "v2.6.12-rc2 to 
> v5.15"
> * the patch is 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f7019c7eb33967eb87766e0e4602b5576873680
> * v5.15-rc7 source is 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sctp/sm_statefuns.c?h=v5.15-rc7#n6350
> * v5.15 source is 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sctp/sm_statefuns.c?h=v5.15#n6380
> * It seems to be fixed in 5.15 (not after 5.15).
> 
> [CVE-2022-39190]
> * In kernel_cves.json, "affected_versions" is described as "v5.9-rc1 to 
> v6.0-rc3"
> * the patch is 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e02f0d3970404bfea385b6edb86f2d936db0ea2b
> * v6.0-rc2 source is 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/netfilter/nf_tables_api.c?h=v6.0-rc2#n9708
> * v6.0-rc3 source is 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/netfilter/nf_tables_api.c?h=v6.0-rc3#n9712
> * It seems to be fixed in v6.0-rc3 (not after v6.0-rc3).
> 
> If the assumption is correct, I will try to write a patch.
> 
> Note that in reality, I think there are very few cases of error.
> 
>>        elif last_affected < version:
>>            print(
>>                f'CVE_STATUS[{cve}] = "fixed-version: Fixed after version 
>> {last_affected}"'
> 
> The last_affected here is the major version (in short, the last_affected is 
> x.y,
> not x.y.z), so there is a possibility of error only if version is the major
> version. But actually, in most cases, version is x.y.z.
> 
> Regards,
> 
> Yuta Hayama
> 
> 
> 
> 
> 
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#187196): 
https://lists.openembedded.org/g/openembedded-core/message/187196
Mute This Topic: https://lists.openembedded.org/mt/101089426/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to