{
    "summary": {
        "snap": {
            "added": [],
            "removed": [],
            "diff": []
        },
        "deb": {
            "added": [
                "linux-headers-5.15.0-1096-kvm",
                "linux-image-5.15.0-1096-kvm",
                "linux-kvm-headers-5.15.0-1096",
                "linux-modules-5.15.0-1096-kvm"
            ],
            "removed": [
                "linux-headers-5.15.0-1095-kvm",
                "linux-image-5.15.0-1095-kvm",
                "linux-kvm-headers-5.15.0-1095",
                "linux-modules-5.15.0-1095-kvm"
            ],
            "diff": [
                "libnss-systemd",
                "libpam-systemd",
                "libssl3",
                "libsystemd0",
                "libudev1",
                "linux-headers-kvm",
                "linux-image-kvm",
                "linux-kvm",
                "openssl",
                "systemd",
                "systemd-sysv",
                "systemd-timesyncd",
                "udev"
            ]
        }
    },
    "diff": {
        "deb": [
            {
                "name": "libnss-systemd",
                "from_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.19",
                    "version": "249.11-0ubuntu3.19"
                },
                "to_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.20",
                    "version": "249.11-0ubuntu3.20"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2134334,
                    2133220
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * net_id: depending on new udev prop, include/exclude PCI domain from netif names",
                            "    (LP: #2134334)",
                            "  * network: support ID_NET_MANAGED_BY udev property",
                            "    (LP: #2133220)",
                            ""
                        ],
                        "package": "systemd",
                        "version": "249.11-0ubuntu3.20",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2134334,
                            2133220
                        ],
                        "author": "Robert Malz <robert.malz@canonical.com>",
                        "date": "Tue, 24 Mar 2026 09:52:29 -0400"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "libpam-systemd",
                "from_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.19",
                    "version": "249.11-0ubuntu3.19"
                },
                "to_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.20",
                    "version": "249.11-0ubuntu3.20"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2134334,
                    2133220
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * net_id: depending on new udev prop, include/exclude PCI domain from netif names",
                            "    (LP: #2134334)",
                            "  * network: support ID_NET_MANAGED_BY udev property",
                            "    (LP: #2133220)",
                            ""
                        ],
                        "package": "systemd",
                        "version": "249.11-0ubuntu3.20",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2134334,
                            2133220
                        ],
                        "author": "Robert Malz <robert.malz@canonical.com>",
                        "date": "Tue, 24 Mar 2026 09:52:29 -0400"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "libssl3",
                "from_version": {
                    "source_package_name": "openssl",
                    "source_package_version": "3.0.2-0ubuntu1.21",
                    "version": "3.0.2-0ubuntu1.21"
                },
                "to_version": {
                    "source_package_name": "openssl",
                    "source_package_version": "3.0.2-0ubuntu1.23",
                    "version": "3.0.2-0ubuntu1.23"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-28387",
                        "url": "https://ubuntu.com/security/CVE-2026-28387",
                        "cve_description": "Issue summary: An uncommon configuration of clients performing DANE TLSA-based server authentication, when paired with uncommon server DANE TLSA records, may result in a use-after-free and/or double-free on the client side.  Impact summary: A use after free can have a range of potential consequences such as the corruption of valid data, crashes or execution of arbitrary code.  However, the issue only affects clients that make use of TLSA records with both the PKIX-TA(0/PKIX-EE(1) certificate usages and the DANE-TA(2) certificate usage.  By far the most common deployment of DANE is in SMTP MTAs for which RFC7672 recommends that clients treat as 'unusable' any TLSA records that have the PKIX certificate usages.  These SMTP (or other similar) clients are not vulnerable to this issue.  Conversely, any clients that support only the PKIX usages, and ignore the DANE-TA(2) usage are also not vulnerable.  The client would also need to be communicating with a server that publishes a TLSA RRset with both types of TLSA records.  No FIPS modules are affected by this issue, the problem code is outside the FIPS module boundary.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-28388",
                        "url": "https://ubuntu.com/security/CVE-2026-28388",
                        "cve_description": "Issue summary: When a delta CRL that contains a Delta CRL Indicator extension is processed a NULL pointer dereference might happen if the required CRL Number extension is missing.  Impact summary: A NULL pointer dereference can trigger a crash which leads to a Denial of Service for an application.  When CRL processing and delta CRL processing is enabled during X.509 certificate verification, the delta CRL processing does not check whether the CRL Number extension is NULL before dereferencing it. When a malformed delta CRL file is being processed, this parameter can be NULL, causing a NULL pointer dereference.  Exploiting this issue requires the X509_V_FLAG_USE_DELTAS flag to be enabled in the verification context, the certificate being verified to contain a freshestCRL extension or the base CRL to have the EXFLAG_FRESHEST flag set, and an attacker to provide a malformed CRL to an application that processes it.  The vulnerability is limited to Denial of Service and cannot be escalated to achieve code execution or memory disclosure. For that reason the issue was assessed as Low severity according to our Security Policy.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-28389",
                        "url": "https://ubuntu.com/security/CVE-2026-28389",
                        "cve_description": "Issue summary: During processing of a crafted CMS EnvelopedData message with KeyAgreeRecipientInfo a NULL pointer dereference can happen.  Impact summary: Applications that process attacker-controlled CMS data may crash before authentication or cryptographic operations occur resulting in Denial of Service.  When a CMS EnvelopedData message that uses KeyAgreeRecipientInfo is processed, the optional parameters field of KeyEncryptionAlgorithmIdentifier is examined without checking for its presence. This results in a NULL pointer dereference if the field is missing.  Applications and services that call CMS_decrypt() on untrusted input (e.g., S/MIME processing or CMS-based protocols) are vulnerable.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-28390",
                        "url": "https://ubuntu.com/security/CVE-2026-28390",
                        "cve_description": "Issue summary: During processing of a crafted CMS EnvelopedData message with KeyTransportRecipientInfo a NULL pointer dereference can happen.  Impact summary: Applications that process attacker-controlled CMS data may crash before authentication or cryptographic operations occur resulting in Denial of Service.  When a CMS EnvelopedData message that uses KeyTransportRecipientInfo with RSA-OAEP encryption is processed, the optional parameters field of RSA-OAEP SourceFunc algorithm identifier is examined without checking for its presence. This results in a NULL pointer dereference if the field is missing.  Applications and services that call CMS_decrypt() on untrusted input (e.g., S/MIME processing or CMS-based protocols) are vulnerable.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31789",
                        "url": "https://ubuntu.com/security/CVE-2026-31789",
                        "cve_description": "Issue summary: Converting an excessively large OCTET STRING value to a hexadecimal string leads to a heap buffer overflow on 32 bit platforms.  Impact summary: A heap buffer overflow may lead to a crash or possibly an attacker controlled code execution or other undefined behavior.  If an attacker can supply a crafted X.509 certificate with an excessively large OCTET STRING value in extensions such as the Subject Key Identifier (SKID) or Authority Key Identifier (AKID) which are being converted to hex, the size of the buffer needed for the result is calculated as multiplication of the input length by 3. On 32 bit platforms, this multiplication may overflow resulting in the allocation of a smaller buffer and a heap buffer overflow.  Applications and services that print or log contents of untrusted X.509 certificates are vulnerable to this issue. As the certificates would have to have sizes of over 1 Gigabyte, printing or logging such certificates is a fairly unlikely operation and only 32 bit platforms are affected, this issue was assigned Low severity.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31790",
                        "url": "https://ubuntu.com/security/CVE-2026-31790",
                        "cve_description": "Issue summary: Applications using RSASVE key encapsulation to establish a secret encryption key can send contents of an uninitialized memory buffer to a malicious peer.  Impact summary: The uninitialized buffer might contain sensitive data from the previous execution of the application process which leads to sensitive data leakage to an attacker.  RSA_public_encrypt() returns the number of bytes written on success and -1 on error. The affected code tests only whether the return value is non-zero. As a result, if RSA encryption fails, encapsulation can still return success to the caller, set the output lengths, and leave the caller to use the contents of the ciphertext buffer as if a valid KEM ciphertext had been produced.  If applications use EVP_PKEY_encapsulate() with RSA/RSASVE on an attacker-supplied invalid RSA public key without first validating that key, then this may cause stale or uninitialized contents of the caller-provided ciphertext buffer to be disclosed to the attacker in place of the KEM ciphertext.  As a workaround calling EVP_PKEY_public_check() or EVP_PKEY_public_check_quick() before EVP_PKEY_encapsulate() will mitigate the issue.  The FIPS modules in 3.6, 3.5, 3.4, 3.3, 3.1 and 3.0 are affected by this issue.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-28387",
                                "url": "https://ubuntu.com/security/CVE-2026-28387",
                                "cve_description": "Issue summary: An uncommon configuration of clients performing DANE TLSA-based server authentication, when paired with uncommon server DANE TLSA records, may result in a use-after-free and/or double-free on the client side.  Impact summary: A use after free can have a range of potential consequences such as the corruption of valid data, crashes or execution of arbitrary code.  However, the issue only affects clients that make use of TLSA records with both the PKIX-TA(0/PKIX-EE(1) certificate usages and the DANE-TA(2) certificate usage.  By far the most common deployment of DANE is in SMTP MTAs for which RFC7672 recommends that clients treat as 'unusable' any TLSA records that have the PKIX certificate usages.  These SMTP (or other similar) clients are not vulnerable to this issue.  Conversely, any clients that support only the PKIX usages, and ignore the DANE-TA(2) usage are also not vulnerable.  The client would also need to be communicating with a server that publishes a TLSA RRset with both types of TLSA records.  No FIPS modules are affected by this issue, the problem code is outside the FIPS module boundary.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-28388",
                                "url": "https://ubuntu.com/security/CVE-2026-28388",
                                "cve_description": "Issue summary: When a delta CRL that contains a Delta CRL Indicator extension is processed a NULL pointer dereference might happen if the required CRL Number extension is missing.  Impact summary: A NULL pointer dereference can trigger a crash which leads to a Denial of Service for an application.  When CRL processing and delta CRL processing is enabled during X.509 certificate verification, the delta CRL processing does not check whether the CRL Number extension is NULL before dereferencing it. When a malformed delta CRL file is being processed, this parameter can be NULL, causing a NULL pointer dereference.  Exploiting this issue requires the X509_V_FLAG_USE_DELTAS flag to be enabled in the verification context, the certificate being verified to contain a freshestCRL extension or the base CRL to have the EXFLAG_FRESHEST flag set, and an attacker to provide a malformed CRL to an application that processes it.  The vulnerability is limited to Denial of Service and cannot be escalated to achieve code execution or memory disclosure. For that reason the issue was assessed as Low severity according to our Security Policy.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-28389",
                                "url": "https://ubuntu.com/security/CVE-2026-28389",
                                "cve_description": "Issue summary: During processing of a crafted CMS EnvelopedData message with KeyAgreeRecipientInfo a NULL pointer dereference can happen.  Impact summary: Applications that process attacker-controlled CMS data may crash before authentication or cryptographic operations occur resulting in Denial of Service.  When a CMS EnvelopedData message that uses KeyAgreeRecipientInfo is processed, the optional parameters field of KeyEncryptionAlgorithmIdentifier is examined without checking for its presence. This results in a NULL pointer dereference if the field is missing.  Applications and services that call CMS_decrypt() on untrusted input (e.g., S/MIME processing or CMS-based protocols) are vulnerable.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-28390",
                                "url": "https://ubuntu.com/security/CVE-2026-28390",
                                "cve_description": "Issue summary: During processing of a crafted CMS EnvelopedData message with KeyTransportRecipientInfo a NULL pointer dereference can happen.  Impact summary: Applications that process attacker-controlled CMS data may crash before authentication or cryptographic operations occur resulting in Denial of Service.  When a CMS EnvelopedData message that uses KeyTransportRecipientInfo with RSA-OAEP encryption is processed, the optional parameters field of RSA-OAEP SourceFunc algorithm identifier is examined without checking for its presence. This results in a NULL pointer dereference if the field is missing.  Applications and services that call CMS_decrypt() on untrusted input (e.g., S/MIME processing or CMS-based protocols) are vulnerable.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31789",
                                "url": "https://ubuntu.com/security/CVE-2026-31789",
                                "cve_description": "Issue summary: Converting an excessively large OCTET STRING value to a hexadecimal string leads to a heap buffer overflow on 32 bit platforms.  Impact summary: A heap buffer overflow may lead to a crash or possibly an attacker controlled code execution or other undefined behavior.  If an attacker can supply a crafted X.509 certificate with an excessively large OCTET STRING value in extensions such as the Subject Key Identifier (SKID) or Authority Key Identifier (AKID) which are being converted to hex, the size of the buffer needed for the result is calculated as multiplication of the input length by 3. On 32 bit platforms, this multiplication may overflow resulting in the allocation of a smaller buffer and a heap buffer overflow.  Applications and services that print or log contents of untrusted X.509 certificates are vulnerable to this issue. As the certificates would have to have sizes of over 1 Gigabyte, printing or logging such certificates is a fairly unlikely operation and only 32 bit platforms are affected, this issue was assigned Low severity.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31790",
                                "url": "https://ubuntu.com/security/CVE-2026-31790",
                                "cve_description": "Issue summary: Applications using RSASVE key encapsulation to establish a secret encryption key can send contents of an uninitialized memory buffer to a malicious peer.  Impact summary: The uninitialized buffer might contain sensitive data from the previous execution of the application process which leads to sensitive data leakage to an attacker.  RSA_public_encrypt() returns the number of bytes written on success and -1 on error. The affected code tests only whether the return value is non-zero. As a result, if RSA encryption fails, encapsulation can still return success to the caller, set the output lengths, and leave the caller to use the contents of the ciphertext buffer as if a valid KEM ciphertext had been produced.  If applications use EVP_PKEY_encapsulate() with RSA/RSASVE on an attacker-supplied invalid RSA public key without first validating that key, then this may cause stale or uninitialized contents of the caller-provided ciphertext buffer to be disclosed to the attacker in place of the KEM ciphertext.  As a workaround calling EVP_PKEY_public_check() or EVP_PKEY_public_check_quick() before EVP_PKEY_encapsulate() will mitigate the issue.  The FIPS modules in 3.6, 3.5, 3.4, 3.3, 3.1 and 3.0 are affected by this issue.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: NULL pointer dereference when processing an OCSP",
                            "    response",
                            "    - debian/patches/CVE-2026-28387.patch: dane_match_cert() should",
                            "      X509_free() on ->mcert instead of OPENSSL_free() in",
                            "      crypto/x509/x509_vfy.c.",
                            "    - CVE-2026-28387",
                            "  * SECURITY UPDATE: NULL Pointer Dereference When Processing a Delta CRL",
                            "    - debian/patches/CVE-2026-28388-1.patch: fix NULL Dereference When",
                            "      Delta CRL Lacks CRL Number Extension in crypto/x509/x509_vfy.c.",
                            "    - debian/patches/CVE-2026-28388-2.patch: Added test in test/*.",
                            "    - CVE-2026-28388",
                            "  * SECURITY UPDATE: Possible NULL dereference when processing CMS",
                            "    KeyAgreeRecipientInfo",
                            "    - debian/patches/CVE-2026-28389.patch: Fix NULL deref in",
                            "      [ec]dh_cms_set_shared_info in crypto/cms/cms_dh.c,",
                            "      crypto/cms/cms_ec.c.",
                            "    - CVE-2026-28389",
                            "  * SECURITY UPDATE: Possible NULL Dereference When Processing CMS",
                            "    KeyTransportRecipientInfo",
                            "    - debian/patches/CVE-2026-28390.patch: Fix NULL deref in",
                            "      rsa_cms_decrypt in crypto/cms/cms_rsa.c.",
                            "    - CVE-2026-28390",
                            "  * SECURITY UPDATE: Heap buffer overflow in hexadecimal conversion",
                            "    - debian/patches/CVE-2026-31789.patch: avoid possible buffer overflow",
                            "      in buf2hex conversion in crypto/o_str.c.",
                            "    - CVE-2026-31789",
                            "  * SECURITY UPDATE: Incorrect failure handling in RSA KEM RSASVE",
                            "    encapsulation",
                            "    - debian/patches/CVE-2026-31790-1.patch: validate RSA_public_encrypt()",
                            "      result in RSASVE in providers/implementations/kem/rsa_kem.c.",
                            "    - debian/patches/CVE-2026-31790-2.patch: test RSA_public_encrypt()",
                            "      result in RSASVE in test/evp_extra_test.c.",
                            "    - CVE-2026-31790",
                            ""
                        ],
                        "package": "openssl",
                        "version": "3.0.2-0ubuntu1.23",
                        "urgency": "medium",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Marc Deslauriers <marc.deslauriers@ubuntu.com>",
                        "date": "Tue, 07 Apr 2026 08:05:56 -0400"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "libsystemd0",
                "from_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.19",
                    "version": "249.11-0ubuntu3.19"
                },
                "to_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.20",
                    "version": "249.11-0ubuntu3.20"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2134334,
                    2133220
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * net_id: depending on new udev prop, include/exclude PCI domain from netif names",
                            "    (LP: #2134334)",
                            "  * network: support ID_NET_MANAGED_BY udev property",
                            "    (LP: #2133220)",
                            ""
                        ],
                        "package": "systemd",
                        "version": "249.11-0ubuntu3.20",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2134334,
                            2133220
                        ],
                        "author": "Robert Malz <robert.malz@canonical.com>",
                        "date": "Tue, 24 Mar 2026 09:52:29 -0400"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "libudev1",
                "from_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.19",
                    "version": "249.11-0ubuntu3.19"
                },
                "to_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.20",
                    "version": "249.11-0ubuntu3.20"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2134334,
                    2133220
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * net_id: depending on new udev prop, include/exclude PCI domain from netif names",
                            "    (LP: #2134334)",
                            "  * network: support ID_NET_MANAGED_BY udev property",
                            "    (LP: #2133220)",
                            ""
                        ],
                        "package": "systemd",
                        "version": "249.11-0ubuntu3.20",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2134334,
                            2133220
                        ],
                        "author": "Robert Malz <robert.malz@canonical.com>",
                        "date": "Tue, 24 Mar 2026 09:52:29 -0400"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-headers-kvm",
                "from_version": {
                    "source_package_name": "linux-meta-kvm",
                    "source_package_version": "5.15.0.1095.91",
                    "version": "5.15.0.1095.91"
                },
                "to_version": {
                    "source_package_name": "linux-meta-kvm",
                    "source_package_version": "5.15.0.1096.92",
                    "version": "5.15.0.1096.92"
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-1096",
                            ""
                        ],
                        "package": "linux-meta-kvm",
                        "version": "5.15.0.1096.92",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Stewart Hore <stewart.hore@canonical.com>",
                        "date": "Tue, 24 Mar 2026 12:33:03 +1100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-image-kvm",
                "from_version": {
                    "source_package_name": "linux-meta-kvm",
                    "source_package_version": "5.15.0.1095.91",
                    "version": "5.15.0.1095.91"
                },
                "to_version": {
                    "source_package_name": "linux-meta-kvm",
                    "source_package_version": "5.15.0.1096.92",
                    "version": "5.15.0.1096.92"
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-1096",
                            ""
                        ],
                        "package": "linux-meta-kvm",
                        "version": "5.15.0.1096.92",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Stewart Hore <stewart.hore@canonical.com>",
                        "date": "Tue, 24 Mar 2026 12:33:03 +1100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-kvm",
                "from_version": {
                    "source_package_name": "linux-meta-kvm",
                    "source_package_version": "5.15.0.1095.91",
                    "version": "5.15.0.1095.91"
                },
                "to_version": {
                    "source_package_name": "linux-meta-kvm",
                    "source_package_version": "5.15.0.1096.92",
                    "version": "5.15.0.1096.92"
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Bump ABI 5.15.0-1096",
                            ""
                        ],
                        "package": "linux-meta-kvm",
                        "version": "5.15.0.1096.92",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [],
                        "author": "Stewart Hore <stewart.hore@canonical.com>",
                        "date": "Tue, 24 Mar 2026 12:33:03 +1100"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "openssl",
                "from_version": {
                    "source_package_name": "openssl",
                    "source_package_version": "3.0.2-0ubuntu1.21",
                    "version": "3.0.2-0ubuntu1.21"
                },
                "to_version": {
                    "source_package_name": "openssl",
                    "source_package_version": "3.0.2-0ubuntu1.23",
                    "version": "3.0.2-0ubuntu1.23"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-28387",
                        "url": "https://ubuntu.com/security/CVE-2026-28387",
                        "cve_description": "Issue summary: An uncommon configuration of clients performing DANE TLSA-based server authentication, when paired with uncommon server DANE TLSA records, may result in a use-after-free and/or double-free on the client side.  Impact summary: A use after free can have a range of potential consequences such as the corruption of valid data, crashes or execution of arbitrary code.  However, the issue only affects clients that make use of TLSA records with both the PKIX-TA(0/PKIX-EE(1) certificate usages and the DANE-TA(2) certificate usage.  By far the most common deployment of DANE is in SMTP MTAs for which RFC7672 recommends that clients treat as 'unusable' any TLSA records that have the PKIX certificate usages.  These SMTP (or other similar) clients are not vulnerable to this issue.  Conversely, any clients that support only the PKIX usages, and ignore the DANE-TA(2) usage are also not vulnerable.  The client would also need to be communicating with a server that publishes a TLSA RRset with both types of TLSA records.  No FIPS modules are affected by this issue, the problem code is outside the FIPS module boundary.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-28388",
                        "url": "https://ubuntu.com/security/CVE-2026-28388",
                        "cve_description": "Issue summary: When a delta CRL that contains a Delta CRL Indicator extension is processed a NULL pointer dereference might happen if the required CRL Number extension is missing.  Impact summary: A NULL pointer dereference can trigger a crash which leads to a Denial of Service for an application.  When CRL processing and delta CRL processing is enabled during X.509 certificate verification, the delta CRL processing does not check whether the CRL Number extension is NULL before dereferencing it. When a malformed delta CRL file is being processed, this parameter can be NULL, causing a NULL pointer dereference.  Exploiting this issue requires the X509_V_FLAG_USE_DELTAS flag to be enabled in the verification context, the certificate being verified to contain a freshestCRL extension or the base CRL to have the EXFLAG_FRESHEST flag set, and an attacker to provide a malformed CRL to an application that processes it.  The vulnerability is limited to Denial of Service and cannot be escalated to achieve code execution or memory disclosure. For that reason the issue was assessed as Low severity according to our Security Policy.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-28389",
                        "url": "https://ubuntu.com/security/CVE-2026-28389",
                        "cve_description": "Issue summary: During processing of a crafted CMS EnvelopedData message with KeyAgreeRecipientInfo a NULL pointer dereference can happen.  Impact summary: Applications that process attacker-controlled CMS data may crash before authentication or cryptographic operations occur resulting in Denial of Service.  When a CMS EnvelopedData message that uses KeyAgreeRecipientInfo is processed, the optional parameters field of KeyEncryptionAlgorithmIdentifier is examined without checking for its presence. This results in a NULL pointer dereference if the field is missing.  Applications and services that call CMS_decrypt() on untrusted input (e.g., S/MIME processing or CMS-based protocols) are vulnerable.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-28390",
                        "url": "https://ubuntu.com/security/CVE-2026-28390",
                        "cve_description": "Issue summary: During processing of a crafted CMS EnvelopedData message with KeyTransportRecipientInfo a NULL pointer dereference can happen.  Impact summary: Applications that process attacker-controlled CMS data may crash before authentication or cryptographic operations occur resulting in Denial of Service.  When a CMS EnvelopedData message that uses KeyTransportRecipientInfo with RSA-OAEP encryption is processed, the optional parameters field of RSA-OAEP SourceFunc algorithm identifier is examined without checking for its presence. This results in a NULL pointer dereference if the field is missing.  Applications and services that call CMS_decrypt() on untrusted input (e.g., S/MIME processing or CMS-based protocols) are vulnerable.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31789",
                        "url": "https://ubuntu.com/security/CVE-2026-31789",
                        "cve_description": "Issue summary: Converting an excessively large OCTET STRING value to a hexadecimal string leads to a heap buffer overflow on 32 bit platforms.  Impact summary: A heap buffer overflow may lead to a crash or possibly an attacker controlled code execution or other undefined behavior.  If an attacker can supply a crafted X.509 certificate with an excessively large OCTET STRING value in extensions such as the Subject Key Identifier (SKID) or Authority Key Identifier (AKID) which are being converted to hex, the size of the buffer needed for the result is calculated as multiplication of the input length by 3. On 32 bit platforms, this multiplication may overflow resulting in the allocation of a smaller buffer and a heap buffer overflow.  Applications and services that print or log contents of untrusted X.509 certificates are vulnerable to this issue. As the certificates would have to have sizes of over 1 Gigabyte, printing or logging such certificates is a fairly unlikely operation and only 32 bit platforms are affected, this issue was assigned Low severity.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                        "cve_priority": "low",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-31790",
                        "url": "https://ubuntu.com/security/CVE-2026-31790",
                        "cve_description": "Issue summary: Applications using RSASVE key encapsulation to establish a secret encryption key can send contents of an uninitialized memory buffer to a malicious peer.  Impact summary: The uninitialized buffer might contain sensitive data from the previous execution of the application process which leads to sensitive data leakage to an attacker.  RSA_public_encrypt() returns the number of bytes written on success and -1 on error. The affected code tests only whether the return value is non-zero. As a result, if RSA encryption fails, encapsulation can still return success to the caller, set the output lengths, and leave the caller to use the contents of the ciphertext buffer as if a valid KEM ciphertext had been produced.  If applications use EVP_PKEY_encapsulate() with RSA/RSASVE on an attacker-supplied invalid RSA public key without first validating that key, then this may cause stale or uninitialized contents of the caller-provided ciphertext buffer to be disclosed to the attacker in place of the KEM ciphertext.  As a workaround calling EVP_PKEY_public_check() or EVP_PKEY_public_check_quick() before EVP_PKEY_encapsulate() will mitigate the issue.  The FIPS modules in 3.6, 3.5, 3.4, 3.3, 3.1 and 3.0 are affected by this issue.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-04-07 22:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-28387",
                                "url": "https://ubuntu.com/security/CVE-2026-28387",
                                "cve_description": "Issue summary: An uncommon configuration of clients performing DANE TLSA-based server authentication, when paired with uncommon server DANE TLSA records, may result in a use-after-free and/or double-free on the client side.  Impact summary: A use after free can have a range of potential consequences such as the corruption of valid data, crashes or execution of arbitrary code.  However, the issue only affects clients that make use of TLSA records with both the PKIX-TA(0/PKIX-EE(1) certificate usages and the DANE-TA(2) certificate usage.  By far the most common deployment of DANE is in SMTP MTAs for which RFC7672 recommends that clients treat as 'unusable' any TLSA records that have the PKIX certificate usages.  These SMTP (or other similar) clients are not vulnerable to this issue.  Conversely, any clients that support only the PKIX usages, and ignore the DANE-TA(2) usage are also not vulnerable.  The client would also need to be communicating with a server that publishes a TLSA RRset with both types of TLSA records.  No FIPS modules are affected by this issue, the problem code is outside the FIPS module boundary.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-28388",
                                "url": "https://ubuntu.com/security/CVE-2026-28388",
                                "cve_description": "Issue summary: When a delta CRL that contains a Delta CRL Indicator extension is processed a NULL pointer dereference might happen if the required CRL Number extension is missing.  Impact summary: A NULL pointer dereference can trigger a crash which leads to a Denial of Service for an application.  When CRL processing and delta CRL processing is enabled during X.509 certificate verification, the delta CRL processing does not check whether the CRL Number extension is NULL before dereferencing it. When a malformed delta CRL file is being processed, this parameter can be NULL, causing a NULL pointer dereference.  Exploiting this issue requires the X509_V_FLAG_USE_DELTAS flag to be enabled in the verification context, the certificate being verified to contain a freshestCRL extension or the base CRL to have the EXFLAG_FRESHEST flag set, and an attacker to provide a malformed CRL to an application that processes it.  The vulnerability is limited to Denial of Service and cannot be escalated to achieve code execution or memory disclosure. For that reason the issue was assessed as Low severity according to our Security Policy.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-28389",
                                "url": "https://ubuntu.com/security/CVE-2026-28389",
                                "cve_description": "Issue summary: During processing of a crafted CMS EnvelopedData message with KeyAgreeRecipientInfo a NULL pointer dereference can happen.  Impact summary: Applications that process attacker-controlled CMS data may crash before authentication or cryptographic operations occur resulting in Denial of Service.  When a CMS EnvelopedData message that uses KeyAgreeRecipientInfo is processed, the optional parameters field of KeyEncryptionAlgorithmIdentifier is examined without checking for its presence. This results in a NULL pointer dereference if the field is missing.  Applications and services that call CMS_decrypt() on untrusted input (e.g., S/MIME processing or CMS-based protocols) are vulnerable.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-28390",
                                "url": "https://ubuntu.com/security/CVE-2026-28390",
                                "cve_description": "Issue summary: During processing of a crafted CMS EnvelopedData message with KeyTransportRecipientInfo a NULL pointer dereference can happen.  Impact summary: Applications that process attacker-controlled CMS data may crash before authentication or cryptographic operations occur resulting in Denial of Service.  When a CMS EnvelopedData message that uses KeyTransportRecipientInfo with RSA-OAEP encryption is processed, the optional parameters field of RSA-OAEP SourceFunc algorithm identifier is examined without checking for its presence. This results in a NULL pointer dereference if the field is missing.  Applications and services that call CMS_decrypt() on untrusted input (e.g., S/MIME processing or CMS-based protocols) are vulnerable.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31789",
                                "url": "https://ubuntu.com/security/CVE-2026-31789",
                                "cve_description": "Issue summary: Converting an excessively large OCTET STRING value to a hexadecimal string leads to a heap buffer overflow on 32 bit platforms.  Impact summary: A heap buffer overflow may lead to a crash or possibly an attacker controlled code execution or other undefined behavior.  If an attacker can supply a crafted X.509 certificate with an excessively large OCTET STRING value in extensions such as the Subject Key Identifier (SKID) or Authority Key Identifier (AKID) which are being converted to hex, the size of the buffer needed for the result is calculated as multiplication of the input length by 3. On 32 bit platforms, this multiplication may overflow resulting in the allocation of a smaller buffer and a heap buffer overflow.  Applications and services that print or log contents of untrusted X.509 certificates are vulnerable to this issue. As the certificates would have to have sizes of over 1 Gigabyte, printing or logging such certificates is a fairly unlikely operation and only 32 bit platforms are affected, this issue was assigned Low severity.  The FIPS modules in 3.6, 3.5, 3.4, 3.3 and 3.0 are not affected by this issue, as the affected code is outside the OpenSSL FIPS module boundary.",
                                "cve_priority": "low",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-31790",
                                "url": "https://ubuntu.com/security/CVE-2026-31790",
                                "cve_description": "Issue summary: Applications using RSASVE key encapsulation to establish a secret encryption key can send contents of an uninitialized memory buffer to a malicious peer.  Impact summary: The uninitialized buffer might contain sensitive data from the previous execution of the application process which leads to sensitive data leakage to an attacker.  RSA_public_encrypt() returns the number of bytes written on success and -1 on error. The affected code tests only whether the return value is non-zero. As a result, if RSA encryption fails, encapsulation can still return success to the caller, set the output lengths, and leave the caller to use the contents of the ciphertext buffer as if a valid KEM ciphertext had been produced.  If applications use EVP_PKEY_encapsulate() with RSA/RSASVE on an attacker-supplied invalid RSA public key without first validating that key, then this may cause stale or uninitialized contents of the caller-provided ciphertext buffer to be disclosed to the attacker in place of the KEM ciphertext.  As a workaround calling EVP_PKEY_public_check() or EVP_PKEY_public_check_quick() before EVP_PKEY_encapsulate() will mitigate the issue.  The FIPS modules in 3.6, 3.5, 3.4, 3.3, 3.1 and 3.0 are affected by this issue.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-04-07 22:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * SECURITY UPDATE: NULL pointer dereference when processing an OCSP",
                            "    response",
                            "    - debian/patches/CVE-2026-28387.patch: dane_match_cert() should",
                            "      X509_free() on ->mcert instead of OPENSSL_free() in",
                            "      crypto/x509/x509_vfy.c.",
                            "    - CVE-2026-28387",
                            "  * SECURITY UPDATE: NULL Pointer Dereference When Processing a Delta CRL",
                            "    - debian/patches/CVE-2026-28388-1.patch: fix NULL Dereference When",
                            "      Delta CRL Lacks CRL Number Extension in crypto/x509/x509_vfy.c.",
                            "    - debian/patches/CVE-2026-28388-2.patch: Added test in test/*.",
                            "    - CVE-2026-28388",
                            "  * SECURITY UPDATE: Possible NULL dereference when processing CMS",
                            "    KeyAgreeRecipientInfo",
                            "    - debian/patches/CVE-2026-28389.patch: Fix NULL deref in",
                            "      [ec]dh_cms_set_shared_info in crypto/cms/cms_dh.c,",
                            "      crypto/cms/cms_ec.c.",
                            "    - CVE-2026-28389",
                            "  * SECURITY UPDATE: Possible NULL Dereference When Processing CMS",
                            "    KeyTransportRecipientInfo",
                            "    - debian/patches/CVE-2026-28390.patch: Fix NULL deref in",
                            "      rsa_cms_decrypt in crypto/cms/cms_rsa.c.",
                            "    - CVE-2026-28390",
                            "  * SECURITY UPDATE: Heap buffer overflow in hexadecimal conversion",
                            "    - debian/patches/CVE-2026-31789.patch: avoid possible buffer overflow",
                            "      in buf2hex conversion in crypto/o_str.c.",
                            "    - CVE-2026-31789",
                            "  * SECURITY UPDATE: Incorrect failure handling in RSA KEM RSASVE",
                            "    encapsulation",
                            "    - debian/patches/CVE-2026-31790-1.patch: validate RSA_public_encrypt()",
                            "      result in RSASVE in providers/implementations/kem/rsa_kem.c.",
                            "    - debian/patches/CVE-2026-31790-2.patch: test RSA_public_encrypt()",
                            "      result in RSASVE in test/evp_extra_test.c.",
                            "    - CVE-2026-31790",
                            ""
                        ],
                        "package": "openssl",
                        "version": "3.0.2-0ubuntu1.23",
                        "urgency": "medium",
                        "distributions": "jammy-security",
                        "launchpad_bugs_fixed": [],
                        "author": "Marc Deslauriers <marc.deslauriers@ubuntu.com>",
                        "date": "Tue, 07 Apr 2026 08:05:56 -0400"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "systemd",
                "from_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.19",
                    "version": "249.11-0ubuntu3.19"
                },
                "to_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.20",
                    "version": "249.11-0ubuntu3.20"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2134334,
                    2133220
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * net_id: depending on new udev prop, include/exclude PCI domain from netif names",
                            "    (LP: #2134334)",
                            "  * network: support ID_NET_MANAGED_BY udev property",
                            "    (LP: #2133220)",
                            ""
                        ],
                        "package": "systemd",
                        "version": "249.11-0ubuntu3.20",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2134334,
                            2133220
                        ],
                        "author": "Robert Malz <robert.malz@canonical.com>",
                        "date": "Tue, 24 Mar 2026 09:52:29 -0400"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "systemd-sysv",
                "from_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.19",
                    "version": "249.11-0ubuntu3.19"
                },
                "to_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.20",
                    "version": "249.11-0ubuntu3.20"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2134334,
                    2133220
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * net_id: depending on new udev prop, include/exclude PCI domain from netif names",
                            "    (LP: #2134334)",
                            "  * network: support ID_NET_MANAGED_BY udev property",
                            "    (LP: #2133220)",
                            ""
                        ],
                        "package": "systemd",
                        "version": "249.11-0ubuntu3.20",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2134334,
                            2133220
                        ],
                        "author": "Robert Malz <robert.malz@canonical.com>",
                        "date": "Tue, 24 Mar 2026 09:52:29 -0400"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "systemd-timesyncd",
                "from_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.19",
                    "version": "249.11-0ubuntu3.19"
                },
                "to_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.20",
                    "version": "249.11-0ubuntu3.20"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2134334,
                    2133220
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * net_id: depending on new udev prop, include/exclude PCI domain from netif names",
                            "    (LP: #2134334)",
                            "  * network: support ID_NET_MANAGED_BY udev property",
                            "    (LP: #2133220)",
                            ""
                        ],
                        "package": "systemd",
                        "version": "249.11-0ubuntu3.20",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2134334,
                            2133220
                        ],
                        "author": "Robert Malz <robert.malz@canonical.com>",
                        "date": "Tue, 24 Mar 2026 09:52:29 -0400"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "udev",
                "from_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.19",
                    "version": "249.11-0ubuntu3.19"
                },
                "to_version": {
                    "source_package_name": "systemd",
                    "source_package_version": "249.11-0ubuntu3.20",
                    "version": "249.11-0ubuntu3.20"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    2134334,
                    2133220
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * net_id: depending on new udev prop, include/exclude PCI domain from netif names",
                            "    (LP: #2134334)",
                            "  * network: support ID_NET_MANAGED_BY udev property",
                            "    (LP: #2133220)",
                            ""
                        ],
                        "package": "systemd",
                        "version": "249.11-0ubuntu3.20",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2134334,
                            2133220
                        ],
                        "author": "Robert Malz <robert.malz@canonical.com>",
                        "date": "Tue, 24 Mar 2026 09:52:29 -0400"
                    }
                ],
                "notes": null,
                "is_version_downgrade": false
            }
        ],
        "snap": []
    },
    "added": {
        "deb": [
            {
                "name": "linux-headers-5.15.0-1096-kvm",
                "from_version": {
                    "source_package_name": "linux-kvm",
                    "source_package_version": "5.15.0-1095.100",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux-kvm",
                    "source_package_version": "5.15.0-1096.101",
                    "version": "5.15.0-1096.101"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-23074",
                        "url": "https://ubuntu.com/security/CVE-2026-23074",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/sched: Enforce that teql can only be used as root qdisc  Design intent of teql is that it is only supposed to be used as root qdisc. We need to check for that constraint.  Although not important, I will describe the scenario that unearthed this issue for the curious.  GangMin Kim <km.kim1503@gmail.com> managed to concot a scenario as follows:  ROOT qdisc 1:0 (QFQ)   ├── class 1:1 (weight=15, lmax=16384) netem with delay 6.4s   └── class 1:2 (weight=1, lmax=1514) teql  GangMin sends a packet which is enqueued to 1:1 (netem). Any invocation of dequeue by QFQ from this class will not return a packet until after 6.4s. In the meantime, a second packet is sent and it lands on 1:2. teql's enqueue will return success and this will activate class 1:2. Main issue is that teql only updates the parent visible qlen (sch->q.qlen) at dequeue. Since QFQ will only call dequeue if peek succeeds (and teql's peek always returns NULL), dequeue will never be called and thus the qlen will remain as 0. With that in mind, when GangMin updates 1:2's lmax value, the qfq_change_class calls qfq_deact_rm_from_agg. Since the child qdisc's qlen was not incremented, qfq fails to deactivate the class, but still frees its pointers from the aggregate. So when the first packet is rescheduled after 6.4 seconds (netem's delay), a dangling pointer is accessed causing GangMin's causing a UAF.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-04 17:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23060",
                        "url": "https://ubuntu.com/security/CVE-2026-23060",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec  authencesn assumes an ESP/ESN-formatted AAD. When assoclen is shorter than the minimum expected length, crypto_authenc_esn_decrypt() can advance past the end of the destination scatterlist and trigger a NULL pointer dereference in scatterwalk_map_and_copy(), leading to a kernel panic (DoS).  Add a minimum AAD length check to fail fast on invalid inputs.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-04 17:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23111",
                        "url": "https://ubuntu.com/security/CVE-2026-23111",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-02-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37849",
                        "url": "https://ubuntu.com/security/CVE-2025-37849",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: arm64: Tear down vGIC on failed vCPU creation  If kvm_arch_vcpu_create() fails to share the vCPU page with the hypervisor, we propagate the error back to the ioctl but leave the vGIC vCPU data initialised. Note only does this leak the corresponding memory when the vCPU is destroyed but it can also lead to use-after-free if the redistributor device handling tries to walk into the vCPU.  Add the missing cleanup to kvm_arch_vcpu_create(), ensuring that the vGIC vCPU structures are destroyed on error.",
                        "cve_priority": "high",
                        "cve_public_date": "2025-05-09 07:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2144203,
                    2144218
                ],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-23074",
                                "url": "https://ubuntu.com/security/CVE-2026-23074",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/sched: Enforce that teql can only be used as root qdisc  Design intent of teql is that it is only supposed to be used as root qdisc. We need to check for that constraint.  Although not important, I will describe the scenario that unearthed this issue for the curious.  GangMin Kim <km.kim1503@gmail.com> managed to concot a scenario as follows:  ROOT qdisc 1:0 (QFQ)   ├── class 1:1 (weight=15, lmax=16384) netem with delay 6.4s   └── class 1:2 (weight=1, lmax=1514) teql  GangMin sends a packet which is enqueued to 1:1 (netem). Any invocation of dequeue by QFQ from this class will not return a packet until after 6.4s. In the meantime, a second packet is sent and it lands on 1:2. teql's enqueue will return success and this will activate class 1:2. Main issue is that teql only updates the parent visible qlen (sch->q.qlen) at dequeue. Since QFQ will only call dequeue if peek succeeds (and teql's peek always returns NULL), dequeue will never be called and thus the qlen will remain as 0. With that in mind, when GangMin updates 1:2's lmax value, the qfq_change_class calls qfq_deact_rm_from_agg. Since the child qdisc's qlen was not incremented, qfq fails to deactivate the class, but still frees its pointers from the aggregate. So when the first packet is rescheduled after 6.4 seconds (netem's delay), a dangling pointer is accessed causing GangMin's causing a UAF.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-04 17:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23060",
                                "url": "https://ubuntu.com/security/CVE-2026-23060",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec  authencesn assumes an ESP/ESN-formatted AAD. When assoclen is shorter than the minimum expected length, crypto_authenc_esn_decrypt() can advance past the end of the destination scatterlist and trigger a NULL pointer dereference in scatterwalk_map_and_copy(), leading to a kernel panic (DoS).  Add a minimum AAD length check to fail fast on invalid inputs.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-04 17:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23111",
                                "url": "https://ubuntu.com/security/CVE-2026-23111",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-02-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37849",
                                "url": "https://ubuntu.com/security/CVE-2025-37849",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: arm64: Tear down vGIC on failed vCPU creation  If kvm_arch_vcpu_create() fails to share the vCPU page with the hypervisor, we propagate the error back to the ioctl but leave the vGIC vCPU data initialised. Note only does this leak the corresponding memory when the vCPU is destroyed but it can also lead to use-after-free if the redistributor device handling tries to walk into the vCPU.  Add the missing cleanup to kvm_arch_vcpu_create(), ensuring that the vGIC vCPU structures are destroyed on error.",
                                "cve_priority": "high",
                                "cve_public_date": "2025-05-09 07:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * jammy/linux-kvm: 5.15.0-1096.101 -proposed tracker (LP: #2144203)",
                            "",
                            "  [ Ubuntu: 5.15.0-174.184 ]",
                            "",
                            "  * jammy/linux: 5.15.0-174.184 -proposed tracker (LP: #2144218)",
                            "  * CVE-2026-23074",
                            "    - net/sched: Enforce that teql can only be used as root qdisc",
                            "  * CVE-2026-23060",
                            "    - crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN",
                            "      spec",
                            "  * CVE-2026-23111",
                            "    - netfilter: nf_tables: fix inverted genmask check in",
                            "      nft_map_catchall_activate()",
                            "  * CVE-2025-37849",
                            "    - KVM: arm64: vgic: Add a non-locking primitive for",
                            "      kvm_vgic_vcpu_destroy()",
                            "    - KVM: arm64: Tear down vGIC on failed vCPU creation",
                            ""
                        ],
                        "package": "linux-kvm",
                        "version": "5.15.0-1096.101",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2144203,
                            2144218
                        ],
                        "author": "Stewart Hore <stewart.hore@canonical.com>",
                        "date": "Tue, 24 Mar 2026 11:14:12 +1100"
                    }
                ],
                "notes": "linux-headers-5.15.0-1096-kvm version '5.15.0-1096.101' (source package linux-kvm version '5.15.0-1096.101') was added. linux-headers-5.15.0-1096-kvm version '5.15.0-1096.101' has the same source package name, linux-kvm, as removed package linux-headers-5.15.0-1095-kvm. As such we can use the source package version of the removed package, '5.15.0-1095.100', as the starting point in our changelog diff. Kernel packages are an example of where the binary package name changes for the same source package. Using the removed package source package version as our starting point means we can still get meaningful changelog diffs even for what appears to be a new package.",
                "is_version_downgrade": false
            },
            {
                "name": "linux-image-5.15.0-1096-kvm",
                "from_version": {
                    "source_package_name": "linux-signed-kvm",
                    "source_package_version": "5.15.0-1095.100",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux-signed-kvm",
                    "source_package_version": "5.15.0-1096.101",
                    "version": "5.15.0-1096.101"
                },
                "cves": [],
                "launchpad_bugs_fixed": [
                    1786013
                ],
                "changes": [
                    {
                        "cves": [],
                        "log": [
                            "",
                            "  * Main version: 5.15.0-1096.101",
                            "",
                            "  * Packaging resync (LP: #1786013)",
                            "    - [Packaging] debian/tracking-bug -- resync from main package",
                            ""
                        ],
                        "package": "linux-signed-kvm",
                        "version": "5.15.0-1096.101",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            1786013
                        ],
                        "author": "Stewart Hore <stewart.hore@canonical.com>",
                        "date": "Tue, 24 Mar 2026 12:33:23 +1100"
                    }
                ],
                "notes": "linux-image-5.15.0-1096-kvm version '5.15.0-1096.101' (source package linux-signed-kvm version '5.15.0-1096.101') was added. linux-image-5.15.0-1096-kvm version '5.15.0-1096.101' has the same source package name, linux-signed-kvm, as removed package linux-image-5.15.0-1095-kvm. As such we can use the source package version of the removed package, '5.15.0-1095.100', as the starting point in our changelog diff. Kernel packages are an example of where the binary package name changes for the same source package. Using the removed package source package version as our starting point means we can still get meaningful changelog diffs even for what appears to be a new package.",
                "is_version_downgrade": false
            },
            {
                "name": "linux-kvm-headers-5.15.0-1096",
                "from_version": {
                    "source_package_name": "linux-kvm",
                    "source_package_version": "5.15.0-1095.100",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux-kvm",
                    "source_package_version": "5.15.0-1096.101",
                    "version": "5.15.0-1096.101"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-23074",
                        "url": "https://ubuntu.com/security/CVE-2026-23074",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/sched: Enforce that teql can only be used as root qdisc  Design intent of teql is that it is only supposed to be used as root qdisc. We need to check for that constraint.  Although not important, I will describe the scenario that unearthed this issue for the curious.  GangMin Kim <km.kim1503@gmail.com> managed to concot a scenario as follows:  ROOT qdisc 1:0 (QFQ)   ├── class 1:1 (weight=15, lmax=16384) netem with delay 6.4s   └── class 1:2 (weight=1, lmax=1514) teql  GangMin sends a packet which is enqueued to 1:1 (netem). Any invocation of dequeue by QFQ from this class will not return a packet until after 6.4s. In the meantime, a second packet is sent and it lands on 1:2. teql's enqueue will return success and this will activate class 1:2. Main issue is that teql only updates the parent visible qlen (sch->q.qlen) at dequeue. Since QFQ will only call dequeue if peek succeeds (and teql's peek always returns NULL), dequeue will never be called and thus the qlen will remain as 0. With that in mind, when GangMin updates 1:2's lmax value, the qfq_change_class calls qfq_deact_rm_from_agg. Since the child qdisc's qlen was not incremented, qfq fails to deactivate the class, but still frees its pointers from the aggregate. So when the first packet is rescheduled after 6.4 seconds (netem's delay), a dangling pointer is accessed causing GangMin's causing a UAF.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-04 17:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23060",
                        "url": "https://ubuntu.com/security/CVE-2026-23060",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec  authencesn assumes an ESP/ESN-formatted AAD. When assoclen is shorter than the minimum expected length, crypto_authenc_esn_decrypt() can advance past the end of the destination scatterlist and trigger a NULL pointer dereference in scatterwalk_map_and_copy(), leading to a kernel panic (DoS).  Add a minimum AAD length check to fail fast on invalid inputs.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-04 17:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23111",
                        "url": "https://ubuntu.com/security/CVE-2026-23111",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-02-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37849",
                        "url": "https://ubuntu.com/security/CVE-2025-37849",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: arm64: Tear down vGIC on failed vCPU creation  If kvm_arch_vcpu_create() fails to share the vCPU page with the hypervisor, we propagate the error back to the ioctl but leave the vGIC vCPU data initialised. Note only does this leak the corresponding memory when the vCPU is destroyed but it can also lead to use-after-free if the redistributor device handling tries to walk into the vCPU.  Add the missing cleanup to kvm_arch_vcpu_create(), ensuring that the vGIC vCPU structures are destroyed on error.",
                        "cve_priority": "high",
                        "cve_public_date": "2025-05-09 07:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2144203,
                    2144218
                ],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-23074",
                                "url": "https://ubuntu.com/security/CVE-2026-23074",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/sched: Enforce that teql can only be used as root qdisc  Design intent of teql is that it is only supposed to be used as root qdisc. We need to check for that constraint.  Although not important, I will describe the scenario that unearthed this issue for the curious.  GangMin Kim <km.kim1503@gmail.com> managed to concot a scenario as follows:  ROOT qdisc 1:0 (QFQ)   ├── class 1:1 (weight=15, lmax=16384) netem with delay 6.4s   └── class 1:2 (weight=1, lmax=1514) teql  GangMin sends a packet which is enqueued to 1:1 (netem). Any invocation of dequeue by QFQ from this class will not return a packet until after 6.4s. In the meantime, a second packet is sent and it lands on 1:2. teql's enqueue will return success and this will activate class 1:2. Main issue is that teql only updates the parent visible qlen (sch->q.qlen) at dequeue. Since QFQ will only call dequeue if peek succeeds (and teql's peek always returns NULL), dequeue will never be called and thus the qlen will remain as 0. With that in mind, when GangMin updates 1:2's lmax value, the qfq_change_class calls qfq_deact_rm_from_agg. Since the child qdisc's qlen was not incremented, qfq fails to deactivate the class, but still frees its pointers from the aggregate. So when the first packet is rescheduled after 6.4 seconds (netem's delay), a dangling pointer is accessed causing GangMin's causing a UAF.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-04 17:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23060",
                                "url": "https://ubuntu.com/security/CVE-2026-23060",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec  authencesn assumes an ESP/ESN-formatted AAD. When assoclen is shorter than the minimum expected length, crypto_authenc_esn_decrypt() can advance past the end of the destination scatterlist and trigger a NULL pointer dereference in scatterwalk_map_and_copy(), leading to a kernel panic (DoS).  Add a minimum AAD length check to fail fast on invalid inputs.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-04 17:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23111",
                                "url": "https://ubuntu.com/security/CVE-2026-23111",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-02-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37849",
                                "url": "https://ubuntu.com/security/CVE-2025-37849",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: arm64: Tear down vGIC on failed vCPU creation  If kvm_arch_vcpu_create() fails to share the vCPU page with the hypervisor, we propagate the error back to the ioctl but leave the vGIC vCPU data initialised. Note only does this leak the corresponding memory when the vCPU is destroyed but it can also lead to use-after-free if the redistributor device handling tries to walk into the vCPU.  Add the missing cleanup to kvm_arch_vcpu_create(), ensuring that the vGIC vCPU structures are destroyed on error.",
                                "cve_priority": "high",
                                "cve_public_date": "2025-05-09 07:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * jammy/linux-kvm: 5.15.0-1096.101 -proposed tracker (LP: #2144203)",
                            "",
                            "  [ Ubuntu: 5.15.0-174.184 ]",
                            "",
                            "  * jammy/linux: 5.15.0-174.184 -proposed tracker (LP: #2144218)",
                            "  * CVE-2026-23074",
                            "    - net/sched: Enforce that teql can only be used as root qdisc",
                            "  * CVE-2026-23060",
                            "    - crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN",
                            "      spec",
                            "  * CVE-2026-23111",
                            "    - netfilter: nf_tables: fix inverted genmask check in",
                            "      nft_map_catchall_activate()",
                            "  * CVE-2025-37849",
                            "    - KVM: arm64: vgic: Add a non-locking primitive for",
                            "      kvm_vgic_vcpu_destroy()",
                            "    - KVM: arm64: Tear down vGIC on failed vCPU creation",
                            ""
                        ],
                        "package": "linux-kvm",
                        "version": "5.15.0-1096.101",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2144203,
                            2144218
                        ],
                        "author": "Stewart Hore <stewart.hore@canonical.com>",
                        "date": "Tue, 24 Mar 2026 11:14:12 +1100"
                    }
                ],
                "notes": "linux-kvm-headers-5.15.0-1096 version '5.15.0-1096.101' (source package linux-kvm version '5.15.0-1096.101') was added. linux-kvm-headers-5.15.0-1096 version '5.15.0-1096.101' has the same source package name, linux-kvm, as removed package linux-headers-5.15.0-1095-kvm. As such we can use the source package version of the removed package, '5.15.0-1095.100', as the starting point in our changelog diff. Kernel packages are an example of where the binary package name changes for the same source package. Using the removed package source package version as our starting point means we can still get meaningful changelog diffs even for what appears to be a new package.",
                "is_version_downgrade": false
            },
            {
                "name": "linux-modules-5.15.0-1096-kvm",
                "from_version": {
                    "source_package_name": "linux-kvm",
                    "source_package_version": "5.15.0-1095.100",
                    "version": null
                },
                "to_version": {
                    "source_package_name": "linux-kvm",
                    "source_package_version": "5.15.0-1096.101",
                    "version": "5.15.0-1096.101"
                },
                "cves": [
                    {
                        "cve": "CVE-2026-23074",
                        "url": "https://ubuntu.com/security/CVE-2026-23074",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/sched: Enforce that teql can only be used as root qdisc  Design intent of teql is that it is only supposed to be used as root qdisc. We need to check for that constraint.  Although not important, I will describe the scenario that unearthed this issue for the curious.  GangMin Kim <km.kim1503@gmail.com> managed to concot a scenario as follows:  ROOT qdisc 1:0 (QFQ)   ├── class 1:1 (weight=15, lmax=16384) netem with delay 6.4s   └── class 1:2 (weight=1, lmax=1514) teql  GangMin sends a packet which is enqueued to 1:1 (netem). Any invocation of dequeue by QFQ from this class will not return a packet until after 6.4s. In the meantime, a second packet is sent and it lands on 1:2. teql's enqueue will return success and this will activate class 1:2. Main issue is that teql only updates the parent visible qlen (sch->q.qlen) at dequeue. Since QFQ will only call dequeue if peek succeeds (and teql's peek always returns NULL), dequeue will never be called and thus the qlen will remain as 0. With that in mind, when GangMin updates 1:2's lmax value, the qfq_change_class calls qfq_deact_rm_from_agg. Since the child qdisc's qlen was not incremented, qfq fails to deactivate the class, but still frees its pointers from the aggregate. So when the first packet is rescheduled after 6.4 seconds (netem's delay), a dangling pointer is accessed causing GangMin's causing a UAF.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-04 17:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23060",
                        "url": "https://ubuntu.com/security/CVE-2026-23060",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec  authencesn assumes an ESP/ESN-formatted AAD. When assoclen is shorter than the minimum expected length, crypto_authenc_esn_decrypt() can advance past the end of the destination scatterlist and trigger a NULL pointer dereference in scatterwalk_map_and_copy(), leading to a kernel panic (DoS).  Add a minimum AAD length check to fail fast on invalid inputs.",
                        "cve_priority": "medium",
                        "cve_public_date": "2026-02-04 17:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2026-23111",
                        "url": "https://ubuntu.com/security/CVE-2026-23111",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                        "cve_priority": "high",
                        "cve_public_date": "2026-02-13 14:16:00 UTC"
                    },
                    {
                        "cve": "CVE-2025-37849",
                        "url": "https://ubuntu.com/security/CVE-2025-37849",
                        "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: arm64: Tear down vGIC on failed vCPU creation  If kvm_arch_vcpu_create() fails to share the vCPU page with the hypervisor, we propagate the error back to the ioctl but leave the vGIC vCPU data initialised. Note only does this leak the corresponding memory when the vCPU is destroyed but it can also lead to use-after-free if the redistributor device handling tries to walk into the vCPU.  Add the missing cleanup to kvm_arch_vcpu_create(), ensuring that the vGIC vCPU structures are destroyed on error.",
                        "cve_priority": "high",
                        "cve_public_date": "2025-05-09 07:16:00 UTC"
                    }
                ],
                "launchpad_bugs_fixed": [
                    2144203,
                    2144218
                ],
                "changes": [
                    {
                        "cves": [
                            {
                                "cve": "CVE-2026-23074",
                                "url": "https://ubuntu.com/security/CVE-2026-23074",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  net/sched: Enforce that teql can only be used as root qdisc  Design intent of teql is that it is only supposed to be used as root qdisc. We need to check for that constraint.  Although not important, I will describe the scenario that unearthed this issue for the curious.  GangMin Kim <km.kim1503@gmail.com> managed to concot a scenario as follows:  ROOT qdisc 1:0 (QFQ)   ├── class 1:1 (weight=15, lmax=16384) netem with delay 6.4s   └── class 1:2 (weight=1, lmax=1514) teql  GangMin sends a packet which is enqueued to 1:1 (netem). Any invocation of dequeue by QFQ from this class will not return a packet until after 6.4s. In the meantime, a second packet is sent and it lands on 1:2. teql's enqueue will return success and this will activate class 1:2. Main issue is that teql only updates the parent visible qlen (sch->q.qlen) at dequeue. Since QFQ will only call dequeue if peek succeeds (and teql's peek always returns NULL), dequeue will never be called and thus the qlen will remain as 0. With that in mind, when GangMin updates 1:2's lmax value, the qfq_change_class calls qfq_deact_rm_from_agg. Since the child qdisc's qlen was not incremented, qfq fails to deactivate the class, but still frees its pointers from the aggregate. So when the first packet is rescheduled after 6.4 seconds (netem's delay), a dangling pointer is accessed causing GangMin's causing a UAF.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-04 17:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23060",
                                "url": "https://ubuntu.com/security/CVE-2026-23060",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN spec  authencesn assumes an ESP/ESN-formatted AAD. When assoclen is shorter than the minimum expected length, crypto_authenc_esn_decrypt() can advance past the end of the destination scatterlist and trigger a NULL pointer dereference in scatterwalk_map_and_copy(), leading to a kernel panic (DoS).  Add a minimum AAD length check to fail fast on invalid inputs.",
                                "cve_priority": "medium",
                                "cve_public_date": "2026-02-04 17:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2026-23111",
                                "url": "https://ubuntu.com/security/CVE-2026-23111",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  netfilter: nf_tables: fix inverted genmask check in nft_map_catchall_activate()  nft_map_catchall_activate() has an inverted element activity check compared to its non-catchall counterpart nft_mapelem_activate() and compared to what is logically required.  nft_map_catchall_activate() is called from the abort path to re-activate catchall map elements that were deactivated during a failed transaction. It should skip elements that are already active (they don't need re-activation) and process elements that are inactive (they need to be restored). Instead, the current code does the opposite: it skips inactive elements and processes active ones.  Compare the non-catchall activate callback, which is correct:    nft_mapelem_activate():     if (nft_set_elem_active(ext, iter->genmask))         return 0;   /* skip active, process inactive */  With the buggy catchall version:    nft_map_catchall_activate():     if (!nft_set_elem_active(ext, genmask))         continue;   /* skip inactive, process active */  The consequence is that when a DELSET operation is aborted, nft_setelem_data_activate() is never called for the catchall element. For NFT_GOTO verdict elements, this means nft_data_hold() is never called to restore the chain->use reference count. Each abort cycle permanently decrements chain->use. Once chain->use reaches zero, DELCHAIN succeeds and frees the chain while catchall verdict elements still reference it, resulting in a use-after-free.  This is exploitable for local privilege escalation from an unprivileged user via user namespaces + nftables on distributions that enable CONFIG_USER_NS and CONFIG_NF_TABLES.  Fix by removing the negation so the check matches nft_mapelem_activate(): skip active elements, process inactive ones.",
                                "cve_priority": "high",
                                "cve_public_date": "2026-02-13 14:16:00 UTC"
                            },
                            {
                                "cve": "CVE-2025-37849",
                                "url": "https://ubuntu.com/security/CVE-2025-37849",
                                "cve_description": "In the Linux kernel, the following vulnerability has been resolved:  KVM: arm64: Tear down vGIC on failed vCPU creation  If kvm_arch_vcpu_create() fails to share the vCPU page with the hypervisor, we propagate the error back to the ioctl but leave the vGIC vCPU data initialised. Note only does this leak the corresponding memory when the vCPU is destroyed but it can also lead to use-after-free if the redistributor device handling tries to walk into the vCPU.  Add the missing cleanup to kvm_arch_vcpu_create(), ensuring that the vGIC vCPU structures are destroyed on error.",
                                "cve_priority": "high",
                                "cve_public_date": "2025-05-09 07:16:00 UTC"
                            }
                        ],
                        "log": [
                            "",
                            "  * jammy/linux-kvm: 5.15.0-1096.101 -proposed tracker (LP: #2144203)",
                            "",
                            "  [ Ubuntu: 5.15.0-174.184 ]",
                            "",
                            "  * jammy/linux: 5.15.0-174.184 -proposed tracker (LP: #2144218)",
                            "  * CVE-2026-23074",
                            "    - net/sched: Enforce that teql can only be used as root qdisc",
                            "  * CVE-2026-23060",
                            "    - crypto: authencesn - reject too-short AAD (assoclen<8) to match ESP/ESN",
                            "      spec",
                            "  * CVE-2026-23111",
                            "    - netfilter: nf_tables: fix inverted genmask check in",
                            "      nft_map_catchall_activate()",
                            "  * CVE-2025-37849",
                            "    - KVM: arm64: vgic: Add a non-locking primitive for",
                            "      kvm_vgic_vcpu_destroy()",
                            "    - KVM: arm64: Tear down vGIC on failed vCPU creation",
                            ""
                        ],
                        "package": "linux-kvm",
                        "version": "5.15.0-1096.101",
                        "urgency": "medium",
                        "distributions": "jammy",
                        "launchpad_bugs_fixed": [
                            2144203,
                            2144218
                        ],
                        "author": "Stewart Hore <stewart.hore@canonical.com>",
                        "date": "Tue, 24 Mar 2026 11:14:12 +1100"
                    }
                ],
                "notes": "linux-modules-5.15.0-1096-kvm version '5.15.0-1096.101' (source package linux-kvm version '5.15.0-1096.101') was added. linux-modules-5.15.0-1096-kvm version '5.15.0-1096.101' has the same source package name, linux-kvm, as removed package linux-headers-5.15.0-1095-kvm. As such we can use the source package version of the removed package, '5.15.0-1095.100', as the starting point in our changelog diff. Kernel packages are an example of where the binary package name changes for the same source package. Using the removed package source package version as our starting point means we can still get meaningful changelog diffs even for what appears to be a new package.",
                "is_version_downgrade": false
            }
        ],
        "snap": []
    },
    "removed": {
        "deb": [
            {
                "name": "linux-headers-5.15.0-1095-kvm",
                "from_version": {
                    "source_package_name": "linux-kvm",
                    "source_package_version": "5.15.0-1095.100",
                    "version": "5.15.0-1095.100"
                },
                "to_version": {
                    "source_package_name": null,
                    "source_package_version": null,
                    "version": null
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-image-5.15.0-1095-kvm",
                "from_version": {
                    "source_package_name": "linux-signed-kvm",
                    "source_package_version": "5.15.0-1095.100",
                    "version": "5.15.0-1095.100"
                },
                "to_version": {
                    "source_package_name": null,
                    "source_package_version": null,
                    "version": null
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-kvm-headers-5.15.0-1095",
                "from_version": {
                    "source_package_name": "linux-kvm",
                    "source_package_version": "5.15.0-1095.100",
                    "version": "5.15.0-1095.100"
                },
                "to_version": {
                    "source_package_name": null,
                    "source_package_version": null,
                    "version": null
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [],
                "notes": null,
                "is_version_downgrade": false
            },
            {
                "name": "linux-modules-5.15.0-1095-kvm",
                "from_version": {
                    "source_package_name": "linux-kvm",
                    "source_package_version": "5.15.0-1095.100",
                    "version": "5.15.0-1095.100"
                },
                "to_version": {
                    "source_package_name": null,
                    "source_package_version": null,
                    "version": null
                },
                "cves": [],
                "launchpad_bugs_fixed": [],
                "changes": [],
                "notes": null,
                "is_version_downgrade": false
            }
        ],
        "snap": []
    },
    "notes": "Changelog diff for Ubuntu 22.04 jammy image from daily image serial 20260402 to 20260408",
    "from_series": "jammy",
    "to_series": "jammy",
    "from_serial": "20260402",
    "to_serial": "20260408",
    "from_manifest_filename": "daily_manifest.previous",
    "to_manifest_filename": "manifest.current"
}