Lucene search
+L

EulerOS 2.0 SP15 : openssl (EulerOS-SA-2026-3812)

🗓️ 17 Sep 2026 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 4 Views

Integer overflow in ASN1_mbstring_ncopy() in openssl on EulerOS 2.0 SP15, heap buffer overflow.

Related
Refs
Code
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

if (description)
{
  script_id(346784);
  script_version("1.1");
  script_set_attribute(attribute:"plugin_modification_date", value:"2026/09/17");

  script_cve_id(
    "CVE-2026-7383",
    "CVE-2026-9076",
    "CVE-2026-34180",
    "CVE-2026-34182",
    "CVE-2026-42766",
    "CVE-2026-42767",
    "CVE-2026-42770",
    "CVE-2026-45445",
    "CVE-2026-45446",
    "CVE-2026-45447"
  );

  script_name(english:"EulerOS 2.0 SP15 : openssl (EulerOS-SA-2026-3812)");

  script_set_attribute(attribute:"synopsis", value:
"The remote EulerOS host is missing multiple security updates.");
  script_set_attribute(attribute:"description", value:
"According to the versions of the openssl packages installed, the EulerOS installation on the remote host is affected by
the following vulnerabilities :

    Issue summary: A signed integer overflow when sizing the destination_x000D_
    buffer for Unicode output in ASN1_mbstring_ncopy() can lead to a heap_x000D_
    buffer overflow._x000D_
    _x000D_
    Impact summary: A heap buffer overflow may lead to a crash or possibly_x000D_
    attacker controlled code execution or other undefined behaviour._x000D_
    _x000D_
    In ASN1_mbstring_copy() and ASN1_mbstring_ncopy() the destination_x000D_
    size for Unicode output is computed in a signed int: by left shift_x000D_
    of the input character count for BMPSTRING (UTF-16) and_x000D_
    UNIVERSALSTRING (UTF-32), and by summing per-character byte counts_x000D_
    for UTF8STRING. The calculation overflows when the input reaches_x000D_
    around 2^30 characters. In the worst case (UNIVERSALSTRING at 2^30_x000D_
    characters) the size wraps to zero, OPENSSL_malloc(1) is called, and_x000D_
    the subsequent character copy writes several gigabytes past the_x000D_
    one-byte allocation._x000D_
    _x000D_
    X.509 certificate processing routes through ASN1_STRING_set_by_NID(),_x000D_
    whose DIRSTRING_TYPE mask excludes UNIVERSALSTRING and whose per-NID_x000D_
    size limits cap the input length; no network protocol or_x000D_
    certificate-handling path in OpenSSL exercises the overflow._x000D_
    Triggering the bug requires an application that calls_x000D_
    ASN1_mbstring_copy() or ASN1_mbstring_ncopy() directly, or registers_x000D_
    a custom string type via ASN1_STRING_TABLE_add(), with_x000D_
    attacker-controlled input on the order of half a gigabyte or more._x000D_
    For these reasons this issue was assigned Low severity._x000D_
    _x000D_
    The FIPS modules in 4.0, 3.6, 3.5, 3.4 and 3.0 are not affected by_x000D_
    this issue, as the affected code is outside the OpenSSL FIPS module_x000D_
    boundary.(CVE-2026-7383)

    Issue summary: When EVP_PKEY_derive_set_peer() is called with a DHX (X9.42) peer key, the peer key is not
    properly checked for the subgroup membership. Impact summary: A malicious peer which presents an X9.42 key
    carrying the victim's p and g parameters, a forged q = r (a small prime factor of the cofactor
    (p-1)/q_local), and a public value Y of order r can recover the victim's private key after a small number
    of key exchange attempts. When EVP_PKEY_derive_set_peer() is called with a DHX (X9.42) peer key, the
    subgroup membership check Y^q ? 1 (mod p) is performed using the peer's own q parameter, not the local
    key's q. The peer's domain parameters are then matched against the domain parameters of the private key,
    but the value of q is not compared. A malicious peer who presents an X9.42 key carrying the victim's p, g,
    a forged q = r (a small prime factor of the cofactor), and a public value Y of order r passes all checks.
    The shared secret then takes only r distinct values, leaking priv mod r. Repeating for each small-prime
    factor of the cofactor and combining via CRT recovers the full private key (Lim-Lee / small-subgroup-
    confinement attack). The realistic attack surface is narrow: principally CMP deployments with long-lived
    RA/CA DHX keys and bespoke enterprise or government applications using X9.42 DHX static keys with
    interactive protocols and therefore this issue was assigned Low severity. The FIPS modules in 4.0, 3.6,
    3.5, 3.4, and 3.0 are affected by this issue.(CVE-2026-42770)

    Issue summary: When CMS password-based decryption (RFC 3211 / PWRI key unwrap)_x000D_
    processes attacker-supplied CMS data, an attacker-chosen stream-mode KEK_x000D_
    cipher can trigger a heap out-of-bounds read in kek_unwrap_key()._x000D_
    _x000D_
    Impact summary: A heap buffer over-read may trigger a crash which leads to_x000D_
    Denial of Service for an application if the input buffer ends at a memory_x000D_
    page boundary and the following page is unmapped. There is no information_x000D_
    disclosure as the over-read bytes are not revealed to the attacker._x000D_
    _x000D_
    The key unwrapping function performs a check-byte test as specified in the_x000D_
    RFC that reads 7 bytes from a heap allocation that is based on the wrapped_x000D_
    key length from the message. There is a minimum length check based on the_x000D_
    block length of the wrapping cipher. However the cipher is selected from_x000D_
    an OID carried in the attacker's PWRI keyEncryptionAlgorithm with no_x000D_
    requirement that the cipher be a block cipher. When an attacker selects_x000D_
    a stream-mode cipher the guard will be ineffective and the allocated buffer_x000D_
    containing the unwrapped key can be too small to fit the check-bytes_x000D_
    specified in the RFC and a buffer over-read can happen._x000D_
    _x000D_
    Applications calling CMS_decrypt() or CMS_decrypt_set1_password()_x000D_
    (equivalently openssl cms -decrypt -pwri_password ...) on untrusted CMS_x000D_
    data are vulnerable to this issue. No password knowledge is required: the_x000D_
    over-read happens during the unwrap attempt before any authentication_x000D_
    succeeds._x000D_
    _x000D_
    The over-read is limited to a few bytes and is not written to output, so_x000D_
    there is no information disclosure. Triggering a crash requires the_x000D_
    allocation to border unmapped memory, which is unlikely with the normal_x000D_
    allocator._x000D_
    _x000D_
    The FIPS modules are not affected by this issue.(CVE-2026-9076)

    Issue summary: When an application drives an AES-OCB context through the_x000D_
    public EVP_Cipher() one-shot interface, the application-supplied_x000D_
    initialisation vector (IV) is silently discarded._x000D_
    _x000D_
    Impact summary: Every message encrypted under the same key uses the_x000D_
    same effective nonce regardless of the IV supplied by the caller,_x000D_
    resulting in (key, nonce) reuse and loss of confidentiality.  If the_x000D_
    same code path is used to compute the authentication tag, the tag_x000D_
    depends only on the (key, IV) pair and not on the plaintext or_x000D_
    ciphertext, allowing universal forgery of arbitrary ciphertext from a_x000D_
    single captured message._x000D_
    _x000D_
    OpenSSL provides two ways to drive a cipher: the documented streaming_x000D_
    interface (EVP_CipherUpdate / EVP_CipherFinal_ex) and a lower-level_x000D_
    one-shot, EVP_Cipher(), whose documentation explicitly recommends_x000D_
    against use by applications in favour of EVP_CipherUpdate() and_x000D_
    EVP_CipherFinal_ex().  The OCB provider's streaming handler flushes_x000D_
    the application-supplied IV into the OCB context before processing_x000D_
    data; the one-shot handler did not.  Every call to EVP_Cipher() on an_x000D_
    AES-OCB context therefore ran with the all-zero key-derived offset_x000D_
    state left by cipher initialisation, regardless of the caller's IV._x000D_
    _x000D_
    If EVP_EncryptFinal_ex() is subsequently used to obtain the_x000D_
    authentication tag, the deferred IV setup runs at that point and_x000D_
    clears the running checksum that should have been accumulated over the_x000D_
    plaintext.  The resulting tag is a function of (key, IV) only and_x000D_
    verifies against any ciphertext produced under the same (key, IV)_x000D_
    pair._x000D_
    _x000D_
    The OpenSSL SSL/TLS implementation is not affected: AES-OCB is not a_x000D_
    TLS cipher suite, and libssl does not call EVP_Cipher() in any case._x000D_
    Applications that drive AES-OCB through the documented streaming AEAD_x000D_
    API (EVP_CipherUpdate / EVP_CipherFinal_ex) are not affected.  Only_x000D_
    applications that combine the AES-OCB cipher with the EVP_Cipher()_x000D_
    one-shot API are vulnerable._x000D_
    _x000D_
    The FIPS modules in 4.0, 3.6, 3.5, 3.4 and 3.0 are not affected by_x000D_
    this issue, as AES-OCB is outside the OpenSSL FIPS module boundary.(CVE-2026-45445)

    Issue summary: An attacker-controlled CMP (Certificate Management Protocol)_x000D_
    server could trigger a NULL pointer dereference in a CMP client application._x000D_
    _x000D_
    Impact summary: A NULL pointer dereference causes a crash of the_x000D_
    application and a Denial of Service._x000D_
    _x000D_
    An attacker controlling a CMP server (or acting as a man-in-the-middle) could_x000D_
    craft a CMP response containing a CRMF (Certificate Request Message Format)_x000D_
    CertRepMessage with an EncryptedValue structure where the symmAlg field_x000D_
    has an algorithm OID but no parameters field. When the OpenSSL CMP client_x000D_
    processes this response, the NULL dereference occurs, causing a crash of_x000D_
    the CMP client._x000D_
    _x000D_
    Applications that process untrusted CMP/CRMF messages may be affected._x000D_
    _x000D_
    The FIPS modules in 4.0, 3.6, 3.5, 3.4, and 3.0 are not affected by this_x000D_
    issue, as the affected code is outside the OpenSSL FIPS module boundary.(CVE-2026-42767)

    Issue summary: The implementations of AES-SIV (RFC 5297) and AES-GCM-SIV_x000D_
    (RFC 8452) mishandle the authentication of AAD (Additional Authenticated_x000D_
    Data) with an empty ciphertext allowing a forgery of such messages._x000D_
    _x000D_
    Impact summary: An attacker can forge empty messages with arbitrary AAD_x000D_
    to the victim's application using these ciphers._x000D_
    _x000D_
    AES-SIV (RFC 5297) and AES-GCM-SIV (RFC 8452) are nonce-misuse-resistant AEAD_x000D_
    modes: they accept a key, nonce, optional AAD (bytes that are authenticated_x000D_
    but not encrypted), and plaintext, and produces ciphertext plus a 16-byte_x000D_
    tag. On decrypt, `EVP_DecryptFinal_ex()` is documented to return success only_x000D_
    if the tag is verified succesfully._x000D_
    _x000D_
    In OpenSSL's provider implementation of these ciphers, the expected tag is_x000D_
    computed only when decryption function is invoked with non-empty data._x000D_
    If the caller supplies AAD and then calls `EVP_DecryptFinal_ex()` without_x000D_
    invocation of the ciphertext update, which can happen when the received_x000D_
    ciphertext length is zero, the tag is never recalculated and still holds its_x000D_
    all-zeros value._x000D_
    _x000D_
    When AES-GCM-SIV is used, an attacker who sends arbitrary AAD, empty_x000D_
    ciphertext, and all-zeros tag passes authentication under any key they do not_x000D_
    know, single-shot. When AES-SIV is used, for mounting the attack it's_x000D_
    necessary for the application to reuse the decryption context without_x000D_
    resetting the key._x000D_
    _x000D_
    AES-SIV is implemented since OpenSSL 3.0. AES-GCM-SIV is implemented since_x000D_
    OpenSSL 3.2._x000D_
    _x000D_
    No protocols implemented in OpenSSL itself (TLS/CMS/PKCS7/HPKE/QUIC) support_x000D_
    either AES-GCM-SIV or AES-SIV. To mount an attack, the applications must_x000D_
    implement their own protocol and use the EVP interface. Also they must skip the_x000D_
    ciphertext update when a message with an empty ciphertext arrives._x000D_
    _x000D_
    The FIPS modules in 4.0, 3.6, 3.5, 3.4, and 3.0 are not affected by this_x000D_
    issue, as these algorithms are not FIPS approved and the affected code is_x000D_
    outside the OpenSSL FIPS module boundary.(CVE-2026-45446)

    Issue summary: Parsing a crafted DER-encoded ASN.1 structure with a primitive_x000D_
    element whose content exceeds 2 gigabytes in length may cause a heap buffer_x000D_
    over-read on 64-bit Unix and Unix-like platforms._x000D_
    _x000D_
    Impact summary: The heap buffer over-read may crash the application (Denial of_x000D_
    Service) or to load into the decoded ASN.1 object contents of memory beyond the_x000D_
    end of the input buffer.  More typically such ASN.1 elements would instead be_x000D_
    truncated._x000D_
    _x000D_
    An integer truncation in OpenSSL's ASN.1 decoder causes the content length of_x000D_
    an ASN.1 primitive element to be mishandled when it exceeds 2 gigabytes. In the_x000D_
    worst case the truncated length is treated as a request to scan the binary_x000D_
    content for a terminating zero byte, possibly causing OpenSSL to read either_x000D_
    less than or beyond the end of the allocated buffer._x000D_
    _x000D_
    Applications that pass attacker-supplied data to d2i_X509(), d2i_PKCS7(), or_x000D_
    any other d2i_* decoding function are affected. OpenSSL's own command-line_x000D_
    tools are not vulnerable, as data read through the BIO layer is checked before_x000D_
    it reaches the affected code. The issue only affects 64-bit Unix and Unix-like_x000D_
    platforms; 32-bit platforms and 64-bit Windows are not affected._x000D_
    _x000D_
    The FIPS modules in 4.0, 3.6, 3.5, 3.4 and 3.0 are not affected by this issue,_x000D_
    as the affected code is outside the OpenSSL FIPS module boundary.(CVE-2026-34180)

    Issue summary: A specially crafted password-encrypted CMS message_x000D_
    can trigger a NULL pointer dereference during CMS decryption._x000D_
    _x000D_
    Impact summary: This NULL pointer dereference leads to an application crash_x000D_
    and a Denial of Service._x000D_
    _x000D_
    The CMS PasswordRecipientInfo.keyDerivationAlgorithm field is defined as_x000D_
    OPTIONAL in the ASN.1 specification and may therefore be absent in specially_x000D_
    crafted inputs. During the password-based CMS decryption the OpenSSL_x000D_
    CMS implementation dereferences this field without first checking whether it_x000D_
    was present._x000D_
    _x000D_
    An attacker who supplies such a CMS message to an application performing_x000D_
    password-based CMS decryption can trigger an application crash, leading to_x000D_
    a Denial of Service._x000D_
    _x000D_
    Applications that process password-encrypted CMS messages may be affected._x000D_
    _x000D_
    The FIPS modules in 4.0, 3.6, 3.5, 3.4, and 3.0 are not affected by this_x000D_
    issue, as the affected code is outside the OpenSSL FIPS module boundary.(CVE-2026-42766)

    Issue summary: A specially crafted PKCS#7 or S/MIME signed message could_x000D_
    trigger a use-after-free during PKCS#7 signature verification._x000D_
    _x000D_
    Impact summary: A use-after-free may result in process crashes, heap_x000D_
    corruption, or potentially remote code execution._x000D_
    _x000D_
    When processing a PKCS#7 or S/MIME signed message, if the SignedData_x000D_
    digestAlgorithms field is present as an empty ASN.1 SET, OpenSSL may_x000D_
    incorrectly free a caller-owned BIO during PKCS7_verify(). A subsequent_x000D_
    use of the BIO by the calling application results in a use-after-free_x000D_
    condition._x000D_
    _x000D_
    In the common case this occurs when the application later calls_x000D_
    BIO_free() on the BIO originally passed to PKCS7_verify(). Depending_x000D_
    on allocator behavior and application-specific BIO usage patterns, this_x000D_
    may result in a crash or other memory corruption. In some application_x000D_
    contexts this may potentially be exploitable for remote code execution._x000D_
    _x000D_
    Applications that process PKCS#7 or S/MIME signed messages using OpenSSL_x000D_
    PKCS#7 APIs may be affected. Applications using the CMS APIs for this_x000D_
    processing are not affected._x000D_
    _x000D_
    The FIPS modules in 4.0, 3.6, 3.5, 3.4, and 3.0 are not affected by this_x000D_
    issue, as the affected code is outside the OpenSSL FIPS module boundary.(CVE-2026-45447)

    Issue Summary: Cryptographic Message Services (CMS) processing fails to perform_x000D_
    sufficient input validation on the cipher and tag length fields of_x000D_
    AuthEnvelopedData containers, leading to various potential compromises._x000D_
    _x000D_
    Impact Summary: Attackers making use of these vulnerabilities may achieve_x000D_
    key-equivalent functionality for a given CMS recipient and/or bypass integrity_x000D_
    validation for a given message._x000D_
    _x000D_
    In one use case, an attacker may send a CMS message containing_x000D_
    AuthEnvelopedData with the cipher specified as a non-AEAD cipher.  OpenSSL_x000D_
    erroneously allows this selection, and attempts to decrypt and validate the_x000D_
    message._x000D_
    _x000D_
    An on-path attacker who captures one legitimate AES-GCM AuthEnvelopedData_x000D_
    addressed to the victim can re-emit it with the recipientInfos set left_x000D_
    byte-for-byte intact, so the victim's private key still unwraps the genuine CEK_x000D_
    (the content-encryption key), but with the inner OID rewritten to AES-256-OFB_x000D_
    (Output Feedback Mode, an unauthenticated keystream mode) and with an_x000D_
    attacker-chosen IV and ciphertext. The victim initializes AES-256-OFB under the_x000D_
    real CEK, never consults the MAC field, and CMS_decrypt() returns success._x000D_
    _x000D_
    If the application under attack responds to the attacker with any indicator_x000D_
    showing success or failure of the decryption effort, it is possible for the_x000D_
    attacker to use this as an oracle to obtain key equivalent functionality for the_x000D_
    CEK used for the chosen recipient of the message._x000D_
    _x000D_
    In another use case, an attacker can reduce the tag length of the chosen AEAD_x000D_
    cipher for a given AuthEnvelopedData container to be a single byte long,_x000D_
    allowing an attacker to brute force CMS decryption, producing an integrity_x000D_
    bypass for applications that trust CMS_decrypt() to reject modified content._x000D_
    _x000D_
    The FIPS modules are not affected by this issue.(CVE-2026-34182)

Tenable has extracted the preceding description block directly from the EulerOS openssl security advisory.

Note that Nessus has not tested for these issues but has instead relied only on the application's self-reported version
number.");
  # https://developer.huaweicloud.com/ict/en/site-euleros/euleros/security-advisories/EulerOS-SA-2026-3812
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?0a7bd9dd");
  script_set_attribute(attribute:"solution", value:
"Update the affected openssl packages.");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C");
  script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2026-45447");
  script_set_attribute(attribute:"cvss3_score_source", value:"CVE-2026-34182");

  script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
  script_set_attribute(attribute:"exploit_available", value:"false");

  script_set_attribute(attribute:"vuln_publication_date", value:"2026/06/09");
  script_set_attribute(attribute:"patch_publication_date", value:"2026/09/17");
  script_set_attribute(attribute:"plugin_publication_date", value:"2026/09/17");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:openssl");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:openssl-devel");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:openssl-help");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:openssl-libs");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:openssl-perl");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:huawei:euleros:2.0");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Huawei Local Security Checks");

  script_copyright(english:"This script is Copyright (C) 2026 and is owned by Tenable, Inc. or an Affiliate thereof.");

  script_dependencies("ssh_get_info.nasl");
  script_require_keys("Host/local_checks_enabled", "Host/cpu", "Host/EulerOS/release", "Host/EulerOS/rpm-list", "Host/EulerOS/sp");
  script_exclude_keys("Host/EulerOS/uvp_version");

  exit(0);
}

include("rpm.inc");

if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);

var _release = get_kb_item("Host/EulerOS/release");
if (isnull(_release) || _release !~ "^EulerOS") audit(AUDIT_OS_NOT, "EulerOS");
var uvp = get_kb_item("Host/EulerOS/uvp_version");
if (_release !~ "^EulerOS release 2\.0(\D|$)") audit(AUDIT_OS_NOT, "EulerOS 2.0 SP15");

var sp = get_kb_item("Host/EulerOS/sp");
if (isnull(sp) || sp !~ "^(15)$") audit(AUDIT_OS_NOT, "EulerOS 2.0 SP15");

if (!empty_or_null(uvp)) audit(AUDIT_OS_NOT, "EulerOS 2.0 SP15", "EulerOS UVP " + uvp);

if (!get_kb_item("Host/EulerOS/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING);

var cpu = get_kb_item("Host/cpu");
if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);
if ("x86_64" >!< cpu && cpu !~ "^i[3-6]86$" && "aarch64" >!< cpu && "x86" >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "EulerOS", cpu);
if ("aarch64" >!< cpu) audit(AUDIT_ARCH_NOT, "aarch64", cpu);

var flag = 0;

var pkgs = [
  "openssl-3.0.12-15.h21510.22.eulerosv2r15",
  "openssl-devel-3.0.12-15.h21510.22.eulerosv2r15",
  "openssl-help-3.0.12-15.h21510.22.eulerosv2r15",
  "openssl-libs-3.0.12-15.h21510.22.eulerosv2r15",
  "openssl-perl-3.0.12-15.h21510.22.eulerosv2r15"
];

foreach (var pkg in pkgs)
  if (rpm_check(release:"EulerOS-2.0", sp:"15", reference:pkg)) flag++;

if (flag)
{
  security_report_v4(
    port       : 0,
    severity   : SECURITY_HOLE,
    extra      : rpm_report_get()
  );
  exit(0);
}
else
{
  var tested = pkg_tests_get();
  if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
  else audit(AUDIT_PACKAGE_NOT_INSTALLED, "openssl");
}

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

17 Sep 2026 00:00Current
CVSS 3.19.1
EPSS0.03566
SSVC
4