EulerOS 2.0 SP15 : openssl (EulerOS-SA-2026-3787)
10
10
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##
include('compat.inc');
if (description)
{
script_id(346764);
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-3787)");
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-3787
script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?252fefe0");
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 ("x86_64" >!< cpu && cpu !~ "^i[3-6]86$" && "x86" >!< cpu) audit(AUDIT_ARCH_NOT, "i686 / x86_64", 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