The remote Redhat Enterprise Linux 6 host has one or more packages installed that are affected by multiple vulnerabilities that have been acknowledged by the vendor but will not be patched.
openssl: the c_rehash script allows command injection (CVE-2022-2068)
Integer overflow in the EVP_EncodeUpdate function in crypto/evp/encode.c in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h allows remote attackers to cause a denial of service (heap memory corruption) via a large amount of binary data. (CVE-2016-2105)
Integer overflow in the EVP_EncryptUpdate function in crypto/evp/evp_enc.c in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h allows remote attackers to cause a denial of service (heap memory corruption) via a large amount of data. (CVE-2016-2106)
The ASN.1 implementation in OpenSSL before 1.0.1o and 1.0.2 before 1.0.2c allows remote attackers to execute arbitrary code or cause a denial of service (buffer underflow and memory corruption) via an ANY field in crafted serialized data, aka the negative zero issue. (CVE-2016-2108)
The asn1_d2i_read_bio function in crypto/asn1/a_d2i_fp.c in the ASN.1 BIO implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h allows remote attackers to cause a denial of service (memory consumption) via a short invalid encoding. (CVE-2016-2109)
OpenSSL through 1.0.2h incorrectly uses pointer arithmetic for heap-buffer boundary checks, which might allow remote attackers to cause a denial of service (integer overflow and application crash) or possibly have unspecified other impact by leveraging unexpected malloc behavior, related to s3_srvr.c, ssl_sess.c, and t1_lib.c. (CVE-2016-2177)
The dsa_sign_setup function in crypto/dsa/dsa_ossl.c in OpenSSL through 1.0.2h does not properly ensure the use of constant-time operations, which makes it easier for local users to discover a DSA private key via a timing side-channel attack. (CVE-2016-2178)
The DTLS implementation in OpenSSL before 1.1.0 does not properly restrict the lifetime of queue entries associated with unused out-of-order messages, which allows remote attackers to cause a denial of service (memory consumption) by maintaining many crafted DTLS sessions simultaneously, related to d1_lib.c, statem_dtls.c, statem_lib.c, and statem_srvr.c. (CVE-2016-2179)
The Anti-Replay feature in the DTLS implementation in OpenSSL before 1.1.0 mishandles early use of a new epoch number in conjunction with a large sequence number, which allows remote attackers to cause a denial of service (false-positive packet drops) via spoofed DTLS records, related to rec_layer_d1.c and ssl3_record.c. (CVE-2016-2181)
The BN_bn2dec function in crypto/bn/bn_print.c in OpenSSL before 1.1.0 does not properly validate division results, which allows remote attackers to cause a denial of service (out-of-bounds write and application crash) or possibly have unspecified other impact via unknown vectors. (CVE-2016-2182)
The doapr_outch function in crypto/bio/b_print.c in OpenSSL 1.0.1 before 1.0.1s and 1.0.2 before 1.0.2g does not verify that a certain memory allocation succeeds, which allows remote attackers to cause a denial of service (out-of-bounds write or memory consumption) or possibly have unspecified other impact via a long string, as demonstrated by a large amount of ASN.1 data, a different vulnerability than CVE-2016-0799. (CVE-2016-2842)
The certificate parser in OpenSSL before 1.0.1u and 1.0.2 before 1.0.2i might allow remote attackers to cause a denial of service (out-of-bounds read) via crafted certificate operations, related to s3_clnt.c and s3_srvr.c. (CVE-2016-6306)
A timing attack flaw was found in OpenSSL 1.0.1u and before that could allow a malicious user with local access to recover ECDSA P-256 private keys. (CVE-2016-7056)
While parsing an IPAddressFamily extension in an X.509 certificate, it is possible to do a one-byte overread. This would result in an incorrect text display of the certificate. This bug has been present since 2006 and is present in all versions of OpenSSL before 1.0.2m and 1.1.0g. (CVE-2017-3735)
The OpenSSL DSA signature algorithm has been shown to be vulnerable to a timing side channel attack. An attacker could use variations in the signing algorithm to recover the private key. Fixed in OpenSSL 1.1.1a (Affected 1.1.1). Fixed in OpenSSL 1.1.0j (Affected 1.1.0-1.1.0i). Fixed in OpenSSL 1.0.2q (Affected 1.0.2-1.0.2p). (CVE-2018-0734)
The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a timing side channel attack. An attacker could use variations in the signing algorithm to recover the private key. Fixed in OpenSSL 1.1.0j (Affected 1.1.0-1.1.0i). Fixed in OpenSSL 1.1.1a (Affected 1.1.1). (CVE-2018-0735)
The OpenSSL RSA Key generation algorithm has been shown to be vulnerable to a cache timing side channel attack. An attacker with sufficient access to mount cache timing attacks during the RSA key generation process could recover the private key. Fixed in OpenSSL 1.1.0i-dev (Affected 1.1.0-1.1.0h). Fixed in OpenSSL 1.0.2p-dev (Affected 1.0.2b-1.0.2o). (CVE-2018-0737)
Simultaneous Multi-threading (SMT) in processors can enable local users to exploit software vulnerable to timing attacks via a side-channel timing attack on ‘port contention’. (CVE-2018-5407)
Normally in OpenSSL EC groups always have a co-factor present and this is used in side channel resistant code paths. However, in some cases, it is possible to construct a group using explicit parameters (instead of using a named curve). In those cases it is possible that such a group does not have the cofactor present. This can occur even where all the parameters match a known named curve. If such a curve is used then OpenSSL falls back to non-side channel resistant code paths which may result in full key recovery during an ECDSA signature operation. In order to be vulnerable an attacker would have to have the ability to time the creation of a large number of signatures where explicit parameters with no co-factor present are in use by an application using libcrypto. For the avoidance of doubt libssl is not vulnerable because explicit parameters are never used. Fixed in OpenSSL 1.1.1d (Affected 1.1.1-1.1.1c). Fixed in OpenSSL 1.1.0l (Affected 1.1.0-1.1.0k). Fixed in OpenSSL 1.0.2t (Affected 1.0.2-1.0.2s). (CVE-2019-1547)
In situations where an attacker receives automated notification of the success or failure of a decryption attempt an attacker, after sending a very large number of messages to be decrypted, can recover a CMS/PKCS7 transported encryption key or decrypt any RSA encrypted message that was encrypted with the public RSA key, using a Bleichenbacher padding oracle attack. Applications are not affected if they use a certificate together with the private RSA key to the CMS_decrypt or PKCS7_decrypt functions to select the correct recipient info to decrypt. Fixed in OpenSSL 1.1.1d (Affected 1.1.1-1.1.1c). Fixed in OpenSSL 1.1.0l (Affected 1.1.0-1.1.0k). Fixed in OpenSSL 1.0.2t (Affected 1.0.2-1.0.2s). (CVE-2019-1563)
The Raccoon attack exploits a flaw in the TLS specification which can lead to an attacker being able to compute the pre-master secret in connections which have used a Diffie-Hellman (DH) based ciphersuite. In such a case this would result in the attacker being able to eavesdrop on all encrypted communications sent over that TLS connection. The attack can only be exploited if an implementation re-uses a DH secret across multiple TLS connections. Note that this issue only impacts DH ciphersuites and not ECDH ciphersuites.
This issue affects OpenSSL 1.0.2 which is out of support and no longer receiving public updates. OpenSSL 1.1.1 is not vulnerable to this issue. Fixed in OpenSSL 1.0.2w (Affected 1.0.2-1.0.2v). (CVE-2020-1968)
OpenSSL 1.0.2 supports SSLv2. If a client attempts to negotiate SSLv2 with a server that is configured to support both SSLv2 and more recent SSL and TLS versions then a check is made for a version rollback attack when unpadding an RSA signature. Clients that support SSL or TLS versions greater than SSLv2 are supposed to use a special form of padding. A server that supports greater than SSLv2 is supposed to reject connection attempts from a client where this special form of padding is present, because this indicates that a version rollback has occurred (i.e. both client and server support greater than SSLv2, and yet this is the version that is being requested). The implementation of this padding check inverted the logic so that the connection attempt is accepted if the padding is present, and rejected if it is absent. This means that such as server will accept a connection if a version rollback attack has occurred. Further the server will erroneously reject a connection if a normal SSLv2 connection attempt is made. Only OpenSSL 1.0.2 servers from version 1.0.2s to 1.0.2x are affected by this issue. In order to be vulnerable a 1.0.2 server must: 1) have configured SSLv2 support at compile time (this is off by default), 2) have configured SSLv2 support at runtime (this is off by default), 3) have configured SSLv2 ciphersuites (these are not in the default ciphersuite list) OpenSSL 1.1.1 does not have SSLv2 support and therefore is not vulnerable to this issue. The underlying error is in the implementation of the RSA_padding_check_SSLv23() function. This also affects the RSA_SSLV23_PADDING padding mode used by various other functions. Although 1.1.1 does not support SSLv2 the RSA_padding_check_SSLv23() function still exists, as does the RSA_SSLV23_PADDING padding mode. Applications that directly call that function or use that padding mode will encounter this issue.
However since there is no support for the SSLv2 protocol in 1.1.1 this is considered a bug and not a security issue in that version. OpenSSL 1.0.2 is out of support and no longer receiving public updates.
Premium support customers of OpenSSL 1.0.2 should upgrade to 1.0.2y. Other users should upgrade to 1.1.1j.
Fixed in OpenSSL 1.0.2y (Affected 1.0.2s-1.0.2x). (CVE-2021-23839)
The OpenSSL public API function X509_issuer_and_serial_hash() attempts to create a unique hash value based on the issuer and serial number data contained within an X509 certificate. However it fails to correctly handle any errors that may occur while parsing the issuer field (which might occur if the issuer field is maliciously constructed). This may subsequently result in a NULL pointer deref and a crash leading to a potential denial of service attack. The function X509_issuer_and_serial_hash() is never directly called by OpenSSL itself so applications are only vulnerable if they use this function directly and they use it on certificates that may have been obtained from untrusted sources. OpenSSL versions 1.1.1i and below are affected by this issue. Users of these versions should upgrade to OpenSSL 1.1.1j. OpenSSL versions 1.0.2x and below are affected by this issue. However OpenSSL 1.0.2 is out of support and no longer receiving public updates. Premium support customers of OpenSSL 1.0.2 should upgrade to 1.0.2y. Other users should upgrade to 1.1.1j. Fixed in OpenSSL 1.1.1j (Affected 1.1.1-1.1.1i). Fixed in OpenSSL 1.0.2y (Affected 1.0.2-1.0.2x). (CVE-2021-23841)
Rejected reason: DO NOT USE THIS CANDIDATE NUMBER. ConsultIDs: none. Reason: This candidate was withdrawn by its CNA. OpenSSL does not class this issue as a security vulnerability. The trusted CA store should not contain anything that the user does not trust to issue other certificates. Notes:
https://github.com/openssl/openssl/issues/5236#issuecomment-119646061 (CVE-2021-3601)
ASN.1 strings are represented internally within OpenSSL as an ASN1_STRING structure which contains a buffer holding the string data and a field holding the buffer length. This contrasts with normal C strings which are repesented as a buffer for the string data which is terminated with a NUL (0) byte. Although not a strict requirement, ASN.1 strings that are parsed using OpenSSL’s own d2i functions (and other similar parsing functions) as well as any string whose value has been set with the ASN1_STRING_set() function will additionally NUL terminate the byte array in the ASN1_STRING structure. However, it is possible for applications to directly construct valid ASN1_STRING structures which do not NUL terminate the byte array by directly setting the data and length fields in the ASN1_STRING array. This can also happen by using the ASN1_STRING_set0() function. Numerous OpenSSL functions that print ASN.1 data have been found to assume that the ASN1_STRING byte array will be NUL terminated, even though this is not guaranteed for strings that have been directly constructed. Where an application requests an ASN.1 structure to be printed, and where that ASN.1 structure contains ASN1_STRINGs that have been directly constructed by the application without NUL terminating the data field, then a read buffer overrun can occur. The same thing can also occur during name constraints processing of certificates (for example if a certificate has been directly constructed by the application instead of loading it via the OpenSSL parsing functions, and the certificate contains non NUL terminated ASN1_STRING structures). It can also occur in the X509_get1_email(), X509_REQ_get1_email() and X509_get1_ocsp() functions. If a malicious actor can cause an application to directly construct an ASN1_STRING and then process it through one of the affected OpenSSL functions then this issue could be hit. This might result in a crash (causing a Denial of Service attack).
It could also result in the disclosure of private memory contents (such as private keys, or sensitive plaintext). Fixed in OpenSSL 1.1.1l (Affected 1.1.1-1.1.1k). Fixed in OpenSSL 1.0.2za (Affected 1.0.2-1.0.2y). (CVE-2021-3712)
The c_rehash script does not properly sanitise shell metacharacters to prevent command injection. This script is distributed by some operating systems in a manner where it is automatically executed. On such operating systems, an attacker could execute arbitrary commands with the privileges of the script. Use of the c_rehash script is considered obsolete and should be replaced by the OpenSSL rehash command line tool.
Fixed in OpenSSL 3.0.3 (Affected 3.0.0,3.0.1,3.0.2). Fixed in OpenSSL 1.1.1o (Affected 1.1.1-1.1.1n).
Fixed in OpenSSL 1.0.2ze (Affected 1.0.2-1.0.2zd). (CVE-2022-1292)
OpenSSL supports creating a custom cipher via the legacy EVP_CIPHER_meth_new() function and associated function calls. This function was deprecated in OpenSSL 3.0 and application authors are instead encouraged to use the new provider mechanism in order to implement custom ciphers. OpenSSL versions 3.0.0 to 3.0.5 incorrectly handle legacy custom ciphers passed to the EVP_EncryptInit_ex2(), EVP_DecryptInit_ex2() and EVP_CipherInit_ex2() functions (as well as other similarly named encryption and decryption initialisation functions). Instead of using the custom cipher directly it incorrectly tries to fetch an equivalent cipher from the available providers. An equivalent cipher is found based on the NID passed to EVP_CIPHER_meth_new(). This NID is supposed to represent the unique NID for a given cipher. However it is possible for an application to incorrectly pass NID_undef as this value in the call to EVP_CIPHER_meth_new(). When NID_undef is used in this way the OpenSSL encryption/decryption initialisation function will match the NULL cipher as being equivalent and will fetch this from the available providers.
This will succeed if the default provider has been loaded (or if a third party provider has been loaded that offers this cipher). Using the NULL cipher means that the plaintext is emitted as the ciphertext.
Applications are only affected by this issue if they call EVP_CIPHER_meth_new() using NID_undef and subsequently use it in a call to an encryption/decryption initialisation function. Applications that only use SSL/TLS are not impacted by this issue. Fixed in OpenSSL 3.0.6 (Affected 3.0.0-3.0.5). (CVE-2022-3358)
The public API function BIO_new_NDEF is a helper function used for streaming ASN.1 data via a BIO. It is primarily used internally to OpenSSL to support the SMIME, CMS and PKCS7 streaming capabilities, but may also be called directly by end user applications. The function receives a BIO from the caller, prepends a new BIO_f_asn1 filter BIO onto the front of it to form a BIO chain, and then returns the new head of the BIO chain to the caller. Under certain conditions, for example if a CMS recipient public key is invalid, the new filter BIO is freed and the function returns a NULL result indicating a failure. However, in this case, the BIO chain is not properly cleaned up and the BIO passed by the caller still retains internal pointers to the previously freed filter BIO. If the caller then goes on to call BIO_pop() on the BIO then a use-after-free will occur. This will most likely result in a crash. This scenario occurs directly in the internal function B64_write_ASN1() which may cause BIO_new_NDEF() to be called and will subsequently call BIO_pop() on the BIO. This internal function is in turn called by the public API functions PEM_write_bio_ASN1_stream, PEM_write_bio_CMS_stream, PEM_write_bio_PKCS7_stream, SMIME_write_ASN1, SMIME_write_CMS and SMIME_write_PKCS7. Other public API functions that may be impacted by this include i2d_ASN1_bio_stream, BIO_new_CMS, BIO_new_PKCS7, i2d_CMS_bio_stream and i2d_PKCS7_bio_stream. The OpenSSL cms and smime command line applications are similarly affected. (CVE-2023-0215)
A security vulnerability has been identified in all supported versions of OpenSSL related to the verification of X.509 certificate chains that include policy constraints. Attackers may be able to exploit this vulnerability by creating a malicious certificate chain that triggers exponential use of computational resources, leading to a denial-of-service (DoS) attack on affected systems. Policy processing is disabled by default but can be enabled by passing the -policy' argument to the command line utilities or by calling the
X509_VERIFY_PARAM_set1_policies()’ function. (CVE-2023-0464)
Applications that use a non-default option when verifying certificates may be vulnerable to an attack from a malicious CA to circumvent certain checks. Invalid certificate policies in leaf certificates are silently ignored by OpenSSL and other certificate policy checks are skipped for that certificate. A malicious CA could use this to deliberately assert invalid certificate policies in order to circumvent policy checking on the certificate altogether. Policy processing is disabled by default but can be enabled by passing the -policy' argument to the command line utilities or by calling the
X509_VERIFY_PARAM_set1_policies()’ function. (CVE-2023-0465)
The function X509_VERIFY_PARAM_add0_policy() is documented to implicitly enable the certificate policy check when doing certificate verification. However the implementation of the function does not enable the check which allows certificates with invalid or incorrect policies to pass the certificate verification.
As suddenly enabling the policy check could break existing deployments it was decided to keep the existing behavior of the X509_VERIFY_PARAM_add0_policy() function. Instead the applications that require OpenSSL to perform certificate policy check need to use X509_VERIFY_PARAM_set1_policies() or explicitly enable the policy check by calling X509_VERIFY_PARAM_set_flags() with the X509_V_FLAG_POLICY_CHECK flag argument.
Certificate policy checks are disabled by default in OpenSSL and are not commonly used by applications.
(CVE-2023-0466)
Issue summary: Processing some specially crafted ASN.1 object identifiers or data containing them may be very slow. Impact summary: Applications that use OBJ_obj2txt() directly, or use any of the OpenSSL subsystems OCSP, PKCS7/SMIME, CMS, CMP/CRMF or TS with no message size limit may experience notable to very long delays when processing those messages, which may lead to a Denial of Service. An OBJECT IDENTIFIER is composed of a series of numbers - sub-identifiers - most of which have no size limit.
OBJ_obj2txt() may be used to translate an ASN.1 OBJECT IDENTIFIER given in DER encoding form (using the OpenSSL type ASN1_OBJECT) to its canonical numeric text form, which are the sub-identifiers of the OBJECT IDENTIFIER in decimal form, separated by periods. When one of the sub-identifiers in the OBJECT IDENTIFIER is very large (these are sizes that are seen as absurdly large, taking up tens or hundreds of KiBs), the translation to a decimal number in text may take a very long time. The time complexity is O(n^2) with ‘n’ being the size of the sub-identifiers in bytes (*). With OpenSSL 3.0, support to fetch cryptographic algorithms using names / identifiers in string form was introduced. This includes using OBJECT IDENTIFIERs in canonical numeric text form as identifiers for fetching algorithms. Such OBJECT IDENTIFIERs may be received through the ASN.1 structure AlgorithmIdentifier, which is commonly used in multiple protocols to specify what cryptographic algorithm should be used to sign or verify, encrypt or decrypt, or digest passed data. Applications that call OBJ_obj2txt() directly with untrusted data are affected, with any version of OpenSSL. If the use is for the mere purpose of display, the severity is considered low. In OpenSSL 3.0 and newer, this affects the subsystems OCSP, PKCS7/SMIME, CMS, CMP/CRMF or TS. It also impacts anything that processes X.509 certificates, including simple things like verifying its signature. The impact on TLS is relatively low, because all versions of OpenSSL have a 100KiB limit on the peer’s certificate chain. Additionally, this only impacts clients, or servers that have explicitly enabled client authentication. In OpenSSL 1.1.1 and 1.0.2, this only affects displaying diverse objects, such as X.509 certificates. This is assumed to not happen in such a way that it would cause a Denial of Service, so these versions are considered not affected by this issue in such a way that it would be cause for concern, and the severity is therefore considered low. (CVE-2023-2650)
Issue summary: Checking excessively long DH keys or parameters may be very slow. Impact summary:
Applications that use the functions DH_check(), DH_check_ex() or EVP_PKEY_param_check() to check a DH key or DH parameters may experience long delays. Where the key or parameters that are being checked have been obtained from an untrusted source this may lead to a Denial of Service. The function DH_check() performs various checks on DH parameters. One of those checks confirms that the modulus (‘p’ parameter) is not too large. Trying to use a very large modulus is slow and OpenSSL will not normally use a modulus which is over 10,000 bits in length. However the DH_check() function checks numerous aspects of the key or parameters that have been supplied. Some of those checks use the supplied modulus value even if it has already been found to be too large. An application that calls DH_check() and supplies a key or parameters obtained from an untrusted source could be vulernable to a Denial of Service attack. The function DH_check() is itself called by a number of other OpenSSL functions. An application calling any of those other functions may similarly be affected. The other functions affected by this are DH_check_ex() and EVP_PKEY_param_check(). Also vulnerable are the OpenSSL dhparam and pkeyparam command line applications when using the ‘-check’ option. The OpenSSL SSL/TLS implementation is not affected by this issue. The OpenSSL 3.0 and 3.1 FIPS providers are not affected by this issue. (CVE-2023-3446)
Issue summary: Checking excessively long DH keys or parameters may be very slow. Impact summary:
Applications that use the functions DH_check(), DH_check_ex() or EVP_PKEY_param_check() to check a DH key or DH parameters may experience long delays. Where the key or parameters that are being checked have been obtained from an untrusted source this may lead to a Denial of Service. The function DH_check() performs various checks on DH parameters. After fixing CVE-2023-3446 it was discovered that a large q parameter value can also trigger an overly long computation during some of these checks. A correct q value, if present, cannot be larger than the modulus p parameter, thus it is unnecessary to perform these checks if q is larger than p. An application that calls DH_check() and supplies a key or parameters obtained from an untrusted source could be vulnerable to a Denial of Service attack. The function DH_check() is itself called by a number of other OpenSSL functions. An application calling any of those other functions may similarly be affected. The other functions affected by this are DH_check_ex() and EVP_PKEY_param_check().
Also vulnerable are the OpenSSL dhparam and pkeyparam command line applications when using the -check option. The OpenSSL SSL/TLS implementation is not affected by this issue. The OpenSSL 3.0 and 3.1 FIPS providers are not affected by this issue. (CVE-2023-3817)
Issue summary: Generating excessively long X9.42 DH keys or checking excessively long X9.42 DH keys or parameters may be very slow. Impact summary: Applications that use the functions DH_generate_key() to generate an X9.42 DH key may experience long delays. Likewise, applications that use DH_check_pub_key(), DH_check_pub_key_ex() or EVP_PKEY_public_check() to check an X9.42 DH key or X9.42 DH parameters may experience long delays. Where the key or parameters that are being checked have been obtained from an untrusted source this may lead to a Denial of Service. While DH_check() performs all the necessary checks (as of CVE-2023-3817), DH_check_pub_key() doesn’t make any of these checks, and is therefore vulnerable for excessively large P and Q parameters. Likewise, while DH_generate_key() performs a check for an excessively large P, it doesn’t check for an excessively large Q. An application that calls DH_generate_key() or DH_check_pub_key() and supplies a key or parameters obtained from an untrusted source could be vulnerable to a Denial of Service attack. DH_generate_key() and DH_check_pub_key() are also called by a number of other OpenSSL functions. An application calling any of those other functions may similarly be affected. The other functions affected by this are DH_check_pub_key_ex(), EVP_PKEY_public_check(), and EVP_PKEY_generate(). Also vulnerable are the OpenSSL pkey command line application when using the -pubcheck option, as well as the OpenSSL genpkey command line application.
The OpenSSL SSL/TLS implementation is not affected by this issue. The OpenSSL 3.0 and 3.1 FIPS providers are not affected by this issue. (CVE-2023-5678)
Issue summary: Processing a maliciously formatted PKCS12 file may lead OpenSSL to crash leading to a potential Denial of Service attack Impact summary: Applications loading files in the PKCS12 format from untrusted sources might terminate abruptly. A file in PKCS12 format can contain certificates and keys and may come from an untrusted source. The PKCS12 specification allows certain fields to be NULL, but OpenSSL does not correctly check for this case. This can lead to a NULL pointer dereference that results in OpenSSL crashing. If an application processes PKCS12 files from an untrusted source using the OpenSSL APIs then that application will be vulnerable to this issue. OpenSSL APIs that are vulnerable to this are:
PKCS12_parse(), PKCS12_unpack_p7data(), PKCS12_unpack_p7encdata(), PKCS12_unpack_authsafes() and PKCS12_newpass(). We have also fixed a similar issue in SMIME_write_PKCS7(). However since this function is related to writing data we do not consider it security significant. The FIPS modules in 3.2, 3.1 and 3.0 are not affected by this issue. (CVE-2024-0727)
Issue summary: Some non-default TLS server configurations can cause unbounded memory growth when processing TLSv1.3 sessions Impact summary: An attacker may exploit certain server configurations to trigger unbounded memory growth that would lead to a Denial of Service This problem can occur in TLSv1.3 if the non-default SSL_OP_NO_TICKET option is being used (but not if early_data support is also configured and the default anti-replay protection is in use). In this case, under certain conditions, the session cache can get into an incorrect state and it will fail to flush properly as it fills. The session cache will continue to grow in an unbounded manner. A malicious client could deliberately create the scenario for this failure to force a Denial of Service. It may also happen by accident in normal operation. This issue only affects TLS servers supporting TLSv1.3. It does not affect TLS clients. The FIPS modules in 3.2, 3.1 and 3.0 are not affected by this issue. OpenSSL 1.0.2 is also not affected by this issue.
(CVE-2024-2511)
Note that Nessus has not tested for these issues but has instead relied on the package manager’s report that the package is installed.
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from Red Hat Security Advisory openssl. The text
# itself is copyright (C) Red Hat, Inc.
##
include('compat.inc');
if (description)
{
script_id(195497);
script_version("1.1");
script_set_attribute(attribute:"plugin_modification_date", value:"2024/05/11");
script_cve_id(
"CVE-2016-2105",
"CVE-2016-2106",
"CVE-2016-2108",
"CVE-2016-2109",
"CVE-2016-2177",
"CVE-2016-2178",
"CVE-2016-2179",
"CVE-2016-2181",
"CVE-2016-2182",
"CVE-2016-2842",
"CVE-2016-6306",
"CVE-2016-7056",
"CVE-2017-3735",
"CVE-2018-0734",
"CVE-2018-0735",
"CVE-2018-0737",
"CVE-2018-5407",
"CVE-2019-1547",
"CVE-2019-1563",
"CVE-2020-1968",
"CVE-2021-3601",
"CVE-2021-3712",
"CVE-2021-23839",
"CVE-2021-23841",
"CVE-2022-1292",
"CVE-2022-2068",
"CVE-2022-3358",
"CVE-2023-0215",
"CVE-2023-0464",
"CVE-2023-0465",
"CVE-2023-0466",
"CVE-2023-2650",
"CVE-2023-3446",
"CVE-2023-3817",
"CVE-2023-5678",
"CVE-2024-0727",
"CVE-2024-2511"
);
script_xref(name:"CEA-ID", value:"CEA-2021-0025");
script_xref(name:"CEA-ID", value:"CEA-2021-0004");
script_name(english:"RHEL 6 : openssl (Unpatched Vulnerability)");
script_set_attribute(attribute:"synopsis", value:
"The remote Red Hat 6 host is affected by multiple vulnerabilities that will not be patched.");
script_set_attribute(attribute:"description", value:
"The remote Redhat Enterprise Linux 6 host has one or more packages installed that are affected by multiple
vulnerabilities that have been acknowledged by the vendor but will not be patched.
- openssl: the c_rehash script allows command injection (CVE-2022-2068)
- Integer overflow in the EVP_EncodeUpdate function in crypto/evp/encode.c in OpenSSL before 1.0.1t and
1.0.2 before 1.0.2h allows remote attackers to cause a denial of service (heap memory corruption) via a
large amount of binary data. (CVE-2016-2105)
- Integer overflow in the EVP_EncryptUpdate function in crypto/evp/evp_enc.c in OpenSSL before 1.0.1t and
1.0.2 before 1.0.2h allows remote attackers to cause a denial of service (heap memory corruption) via a
large amount of data. (CVE-2016-2106)
- The ASN.1 implementation in OpenSSL before 1.0.1o and 1.0.2 before 1.0.2c allows remote attackers to
execute arbitrary code or cause a denial of service (buffer underflow and memory corruption) via an ANY
field in crafted serialized data, aka the negative zero issue. (CVE-2016-2108)
- The asn1_d2i_read_bio function in crypto/asn1/a_d2i_fp.c in the ASN.1 BIO implementation in OpenSSL before
1.0.1t and 1.0.2 before 1.0.2h allows remote attackers to cause a denial of service (memory consumption)
via a short invalid encoding. (CVE-2016-2109)
- OpenSSL through 1.0.2h incorrectly uses pointer arithmetic for heap-buffer boundary checks, which might
allow remote attackers to cause a denial of service (integer overflow and application crash) or possibly
have unspecified other impact by leveraging unexpected malloc behavior, related to s3_srvr.c, ssl_sess.c,
and t1_lib.c. (CVE-2016-2177)
- The dsa_sign_setup function in crypto/dsa/dsa_ossl.c in OpenSSL through 1.0.2h does not properly ensure
the use of constant-time operations, which makes it easier for local users to discover a DSA private key
via a timing side-channel attack. (CVE-2016-2178)
- The DTLS implementation in OpenSSL before 1.1.0 does not properly restrict the lifetime of queue entries
associated with unused out-of-order messages, which allows remote attackers to cause a denial of service
(memory consumption) by maintaining many crafted DTLS sessions simultaneously, related to d1_lib.c,
statem_dtls.c, statem_lib.c, and statem_srvr.c. (CVE-2016-2179)
- The Anti-Replay feature in the DTLS implementation in OpenSSL before 1.1.0 mishandles early use of a new
epoch number in conjunction with a large sequence number, which allows remote attackers to cause a denial
of service (false-positive packet drops) via spoofed DTLS records, related to rec_layer_d1.c and
ssl3_record.c. (CVE-2016-2181)
- The BN_bn2dec function in crypto/bn/bn_print.c in OpenSSL before 1.1.0 does not properly validate division
results, which allows remote attackers to cause a denial of service (out-of-bounds write and application
crash) or possibly have unspecified other impact via unknown vectors. (CVE-2016-2182)
- The doapr_outch function in crypto/bio/b_print.c in OpenSSL 1.0.1 before 1.0.1s and 1.0.2 before 1.0.2g
does not verify that a certain memory allocation succeeds, which allows remote attackers to cause a denial
of service (out-of-bounds write or memory consumption) or possibly have unspecified other impact via a
long string, as demonstrated by a large amount of ASN.1 data, a different vulnerability than
CVE-2016-0799. (CVE-2016-2842)
- The certificate parser in OpenSSL before 1.0.1u and 1.0.2 before 1.0.2i might allow remote attackers to
cause a denial of service (out-of-bounds read) via crafted certificate operations, related to s3_clnt.c
and s3_srvr.c. (CVE-2016-6306)
- A timing attack flaw was found in OpenSSL 1.0.1u and before that could allow a malicious user with local
access to recover ECDSA P-256 private keys. (CVE-2016-7056)
- While parsing an IPAddressFamily extension in an X.509 certificate, it is possible to do a one-byte
overread. This would result in an incorrect text display of the certificate. This bug has been present
since 2006 and is present in all versions of OpenSSL before 1.0.2m and 1.1.0g. (CVE-2017-3735)
- The OpenSSL DSA signature algorithm has been shown to be vulnerable to a timing side channel attack. An
attacker could use variations in the signing algorithm to recover the private key. Fixed in OpenSSL 1.1.1a
(Affected 1.1.1). Fixed in OpenSSL 1.1.0j (Affected 1.1.0-1.1.0i). Fixed in OpenSSL 1.0.2q (Affected
1.0.2-1.0.2p). (CVE-2018-0734)
- The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a timing side channel attack. An
attacker could use variations in the signing algorithm to recover the private key. Fixed in OpenSSL 1.1.0j
(Affected 1.1.0-1.1.0i). Fixed in OpenSSL 1.1.1a (Affected 1.1.1). (CVE-2018-0735)
- The OpenSSL RSA Key generation algorithm has been shown to be vulnerable to a cache timing side channel
attack. An attacker with sufficient access to mount cache timing attacks during the RSA key generation
process could recover the private key. Fixed in OpenSSL 1.1.0i-dev (Affected 1.1.0-1.1.0h). Fixed in
OpenSSL 1.0.2p-dev (Affected 1.0.2b-1.0.2o). (CVE-2018-0737)
- Simultaneous Multi-threading (SMT) in processors can enable local users to exploit software vulnerable to
timing attacks via a side-channel timing attack on 'port contention'. (CVE-2018-5407)
- Normally in OpenSSL EC groups always have a co-factor present and this is used in side channel resistant
code paths. However, in some cases, it is possible to construct a group using explicit parameters (instead
of using a named curve). In those cases it is possible that such a group does not have the cofactor
present. This can occur even where all the parameters match a known named curve. If such a curve is used
then OpenSSL falls back to non-side channel resistant code paths which may result in full key recovery
during an ECDSA signature operation. In order to be vulnerable an attacker would have to have the ability
to time the creation of a large number of signatures where explicit parameters with no co-factor present
are in use by an application using libcrypto. For the avoidance of doubt libssl is not vulnerable because
explicit parameters are never used. Fixed in OpenSSL 1.1.1d (Affected 1.1.1-1.1.1c). Fixed in OpenSSL
1.1.0l (Affected 1.1.0-1.1.0k). Fixed in OpenSSL 1.0.2t (Affected 1.0.2-1.0.2s). (CVE-2019-1547)
- In situations where an attacker receives automated notification of the success or failure of a decryption
attempt an attacker, after sending a very large number of messages to be decrypted, can recover a
CMS/PKCS7 transported encryption key or decrypt any RSA encrypted message that was encrypted with the
public RSA key, using a Bleichenbacher padding oracle attack. Applications are not affected if they use a
certificate together with the private RSA key to the CMS_decrypt or PKCS7_decrypt functions to select the
correct recipient info to decrypt. Fixed in OpenSSL 1.1.1d (Affected 1.1.1-1.1.1c). Fixed in OpenSSL
1.1.0l (Affected 1.1.0-1.1.0k). Fixed in OpenSSL 1.0.2t (Affected 1.0.2-1.0.2s). (CVE-2019-1563)
- The Raccoon attack exploits a flaw in the TLS specification which can lead to an attacker being able to
compute the pre-master secret in connections which have used a Diffie-Hellman (DH) based ciphersuite. In
such a case this would result in the attacker being able to eavesdrop on all encrypted communications sent
over that TLS connection. The attack can only be exploited if an implementation re-uses a DH secret across
multiple TLS connections. Note that this issue only impacts DH ciphersuites and not ECDH ciphersuites.
This issue affects OpenSSL 1.0.2 which is out of support and no longer receiving public updates. OpenSSL
1.1.1 is not vulnerable to this issue. Fixed in OpenSSL 1.0.2w (Affected 1.0.2-1.0.2v). (CVE-2020-1968)
- OpenSSL 1.0.2 supports SSLv2. If a client attempts to negotiate SSLv2 with a server that is configured to
support both SSLv2 and more recent SSL and TLS versions then a check is made for a version rollback attack
when unpadding an RSA signature. Clients that support SSL or TLS versions greater than SSLv2 are supposed
to use a special form of padding. A server that supports greater than SSLv2 is supposed to reject
connection attempts from a client where this special form of padding is present, because this indicates
that a version rollback has occurred (i.e. both client and server support greater than SSLv2, and yet this
is the version that is being requested). The implementation of this padding check inverted the logic so
that the connection attempt is accepted if the padding is present, and rejected if it is absent. This
means that such as server will accept a connection if a version rollback attack has occurred. Further the
server will erroneously reject a connection if a normal SSLv2 connection attempt is made. Only OpenSSL
1.0.2 servers from version 1.0.2s to 1.0.2x are affected by this issue. In order to be vulnerable a 1.0.2
server must: 1) have configured SSLv2 support at compile time (this is off by default), 2) have configured
SSLv2 support at runtime (this is off by default), 3) have configured SSLv2 ciphersuites (these are not in
the default ciphersuite list) OpenSSL 1.1.1 does not have SSLv2 support and therefore is not vulnerable to
this issue. The underlying error is in the implementation of the RSA_padding_check_SSLv23() function. This
also affects the RSA_SSLV23_PADDING padding mode used by various other functions. Although 1.1.1 does not
support SSLv2 the RSA_padding_check_SSLv23() function still exists, as does the RSA_SSLV23_PADDING padding
mode. Applications that directly call that function or use that padding mode will encounter this issue.
However since there is no support for the SSLv2 protocol in 1.1.1 this is considered a bug and not a
security issue in that version. OpenSSL 1.0.2 is out of support and no longer receiving public updates.
Premium support customers of OpenSSL 1.0.2 should upgrade to 1.0.2y. Other users should upgrade to 1.1.1j.
Fixed in OpenSSL 1.0.2y (Affected 1.0.2s-1.0.2x). (CVE-2021-23839)
- The OpenSSL public API function X509_issuer_and_serial_hash() attempts to create a unique hash value based
on the issuer and serial number data contained within an X509 certificate. However it fails to correctly
handle any errors that may occur while parsing the issuer field (which might occur if the issuer field is
maliciously constructed). This may subsequently result in a NULL pointer deref and a crash leading to a
potential denial of service attack. The function X509_issuer_and_serial_hash() is never directly called by
OpenSSL itself so applications are only vulnerable if they use this function directly and they use it on
certificates that may have been obtained from untrusted sources. OpenSSL versions 1.1.1i and below are
affected by this issue. Users of these versions should upgrade to OpenSSL 1.1.1j. OpenSSL versions 1.0.2x
and below are affected by this issue. However OpenSSL 1.0.2 is out of support and no longer receiving
public updates. Premium support customers of OpenSSL 1.0.2 should upgrade to 1.0.2y. Other users should
upgrade to 1.1.1j. Fixed in OpenSSL 1.1.1j (Affected 1.1.1-1.1.1i). Fixed in OpenSSL 1.0.2y (Affected
1.0.2-1.0.2x). (CVE-2021-23841)
- Rejected reason: DO NOT USE THIS CANDIDATE NUMBER. ConsultIDs: none. Reason: This candidate was withdrawn
by its CNA. OpenSSL does not class this issue as a security vulnerability. The trusted CA store should not
contain anything that the user does not trust to issue other certificates. Notes:
https://github.com/openssl/openssl/issues/5236#issuecomment-119646061 (CVE-2021-3601)
- ASN.1 strings are represented internally within OpenSSL as an ASN1_STRING structure which contains a
buffer holding the string data and a field holding the buffer length. This contrasts with normal C strings
which are repesented as a buffer for the string data which is terminated with a NUL (0) byte. Although not
a strict requirement, ASN.1 strings that are parsed using OpenSSL's own d2i functions (and other similar
parsing functions) as well as any string whose value has been set with the ASN1_STRING_set() function will
additionally NUL terminate the byte array in the ASN1_STRING structure. However, it is possible for
applications to directly construct valid ASN1_STRING structures which do not NUL terminate the byte array
by directly setting the data and length fields in the ASN1_STRING array. This can also happen by using
the ASN1_STRING_set0() function. Numerous OpenSSL functions that print ASN.1 data have been found to
assume that the ASN1_STRING byte array will be NUL terminated, even though this is not guaranteed for
strings that have been directly constructed. Where an application requests an ASN.1 structure to be
printed, and where that ASN.1 structure contains ASN1_STRINGs that have been directly constructed by the
application without NUL terminating the data field, then a read buffer overrun can occur. The same thing
can also occur during name constraints processing of certificates (for example if a certificate has been
directly constructed by the application instead of loading it via the OpenSSL parsing functions, and the
certificate contains non NUL terminated ASN1_STRING structures). It can also occur in the
X509_get1_email(), X509_REQ_get1_email() and X509_get1_ocsp() functions. If a malicious actor can cause an
application to directly construct an ASN1_STRING and then process it through one of the affected OpenSSL
functions then this issue could be hit. This might result in a crash (causing a Denial of Service attack).
It could also result in the disclosure of private memory contents (such as private keys, or sensitive
plaintext). Fixed in OpenSSL 1.1.1l (Affected 1.1.1-1.1.1k). Fixed in OpenSSL 1.0.2za (Affected
1.0.2-1.0.2y). (CVE-2021-3712)
- The c_rehash script does not properly sanitise shell metacharacters to prevent command injection. This
script is distributed by some operating systems in a manner where it is automatically executed. On such
operating systems, an attacker could execute arbitrary commands with the privileges of the script. Use of
the c_rehash script is considered obsolete and should be replaced by the OpenSSL rehash command line tool.
Fixed in OpenSSL 3.0.3 (Affected 3.0.0,3.0.1,3.0.2). Fixed in OpenSSL 1.1.1o (Affected 1.1.1-1.1.1n).
Fixed in OpenSSL 1.0.2ze (Affected 1.0.2-1.0.2zd). (CVE-2022-1292)
- OpenSSL supports creating a custom cipher via the legacy EVP_CIPHER_meth_new() function and associated
function calls. This function was deprecated in OpenSSL 3.0 and application authors are instead encouraged
to use the new provider mechanism in order to implement custom ciphers. OpenSSL versions 3.0.0 to 3.0.5
incorrectly handle legacy custom ciphers passed to the EVP_EncryptInit_ex2(), EVP_DecryptInit_ex2() and
EVP_CipherInit_ex2() functions (as well as other similarly named encryption and decryption initialisation
functions). Instead of using the custom cipher directly it incorrectly tries to fetch an equivalent cipher
from the available providers. An equivalent cipher is found based on the NID passed to
EVP_CIPHER_meth_new(). This NID is supposed to represent the unique NID for a given cipher. However it is
possible for an application to incorrectly pass NID_undef as this value in the call to
EVP_CIPHER_meth_new(). When NID_undef is used in this way the OpenSSL encryption/decryption initialisation
function will match the NULL cipher as being equivalent and will fetch this from the available providers.
This will succeed if the default provider has been loaded (or if a third party provider has been loaded
that offers this cipher). Using the NULL cipher means that the plaintext is emitted as the ciphertext.
Applications are only affected by this issue if they call EVP_CIPHER_meth_new() using NID_undef and
subsequently use it in a call to an encryption/decryption initialisation function. Applications that only
use SSL/TLS are not impacted by this issue. Fixed in OpenSSL 3.0.6 (Affected 3.0.0-3.0.5). (CVE-2022-3358)
- The public API function BIO_new_NDEF is a helper function used for streaming ASN.1 data via a BIO. It is
primarily used internally to OpenSSL to support the SMIME, CMS and PKCS7 streaming capabilities, but may
also be called directly by end user applications. The function receives a BIO from the caller, prepends a
new BIO_f_asn1 filter BIO onto the front of it to form a BIO chain, and then returns the new head of the
BIO chain to the caller. Under certain conditions, for example if a CMS recipient public key is invalid,
the new filter BIO is freed and the function returns a NULL result indicating a failure. However, in this
case, the BIO chain is not properly cleaned up and the BIO passed by the caller still retains internal
pointers to the previously freed filter BIO. If the caller then goes on to call BIO_pop() on the BIO then
a use-after-free will occur. This will most likely result in a crash. This scenario occurs directly in the
internal function B64_write_ASN1() which may cause BIO_new_NDEF() to be called and will subsequently call
BIO_pop() on the BIO. This internal function is in turn called by the public API functions
PEM_write_bio_ASN1_stream, PEM_write_bio_CMS_stream, PEM_write_bio_PKCS7_stream, SMIME_write_ASN1,
SMIME_write_CMS and SMIME_write_PKCS7. Other public API functions that may be impacted by this include
i2d_ASN1_bio_stream, BIO_new_CMS, BIO_new_PKCS7, i2d_CMS_bio_stream and i2d_PKCS7_bio_stream. The OpenSSL
cms and smime command line applications are similarly affected. (CVE-2023-0215)
- A security vulnerability has been identified in all supported versions of OpenSSL related to the
verification of X.509 certificate chains that include policy constraints. Attackers may be able to exploit
this vulnerability by creating a malicious certificate chain that triggers exponential use of
computational resources, leading to a denial-of-service (DoS) attack on affected systems. Policy
processing is disabled by default but can be enabled by passing the `-policy' argument to the command line
utilities or by calling the `X509_VERIFY_PARAM_set1_policies()' function. (CVE-2023-0464)
- Applications that use a non-default option when verifying certificates may be vulnerable to an attack from
a malicious CA to circumvent certain checks. Invalid certificate policies in leaf certificates are
silently ignored by OpenSSL and other certificate policy checks are skipped for that certificate. A
malicious CA could use this to deliberately assert invalid certificate policies in order to circumvent
policy checking on the certificate altogether. Policy processing is disabled by default but can be enabled
by passing the `-policy' argument to the command line utilities or by calling the
`X509_VERIFY_PARAM_set1_policies()' function. (CVE-2023-0465)
- The function X509_VERIFY_PARAM_add0_policy() is documented to implicitly enable the certificate policy
check when doing certificate verification. However the implementation of the function does not enable the
check which allows certificates with invalid or incorrect policies to pass the certificate verification.
As suddenly enabling the policy check could break existing deployments it was decided to keep the existing
behavior of the X509_VERIFY_PARAM_add0_policy() function. Instead the applications that require OpenSSL to
perform certificate policy check need to use X509_VERIFY_PARAM_set1_policies() or explicitly enable the
policy check by calling X509_VERIFY_PARAM_set_flags() with the X509_V_FLAG_POLICY_CHECK flag argument.
Certificate policy checks are disabled by default in OpenSSL and are not commonly used by applications.
(CVE-2023-0466)
- Issue summary: Processing some specially crafted ASN.1 object identifiers or data containing them may be
very slow. Impact summary: Applications that use OBJ_obj2txt() directly, or use any of the OpenSSL
subsystems OCSP, PKCS7/SMIME, CMS, CMP/CRMF or TS with no message size limit may experience notable to
very long delays when processing those messages, which may lead to a Denial of Service. An OBJECT
IDENTIFIER is composed of a series of numbers - sub-identifiers - most of which have no size limit.
OBJ_obj2txt() may be used to translate an ASN.1 OBJECT IDENTIFIER given in DER encoding form (using the
OpenSSL type ASN1_OBJECT) to its canonical numeric text form, which are the sub-identifiers of the OBJECT
IDENTIFIER in decimal form, separated by periods. When one of the sub-identifiers in the OBJECT IDENTIFIER
is very large (these are sizes that are seen as absurdly large, taking up tens or hundreds of KiBs), the
translation to a decimal number in text may take a very long time. The time complexity is O(n^2) with 'n'
being the size of the sub-identifiers in bytes (*). With OpenSSL 3.0, support to fetch cryptographic
algorithms using names / identifiers in string form was introduced. This includes using OBJECT IDENTIFIERs
in canonical numeric text form as identifiers for fetching algorithms. Such OBJECT IDENTIFIERs may be
received through the ASN.1 structure AlgorithmIdentifier, which is commonly used in multiple protocols to
specify what cryptographic algorithm should be used to sign or verify, encrypt or decrypt, or digest
passed data. Applications that call OBJ_obj2txt() directly with untrusted data are affected, with any
version of OpenSSL. If the use is for the mere purpose of display, the severity is considered low. In
OpenSSL 3.0 and newer, this affects the subsystems OCSP, PKCS7/SMIME, CMS, CMP/CRMF or TS. It also impacts
anything that processes X.509 certificates, including simple things like verifying its signature. The
impact on TLS is relatively low, because all versions of OpenSSL have a 100KiB limit on the peer's
certificate chain. Additionally, this only impacts clients, or servers that have explicitly enabled client
authentication. In OpenSSL 1.1.1 and 1.0.2, this only affects displaying diverse objects, such as X.509
certificates. This is assumed to not happen in such a way that it would cause a Denial of Service, so
these versions are considered not affected by this issue in such a way that it would be cause for concern,
and the severity is therefore considered low. (CVE-2023-2650)
- Issue summary: Checking excessively long DH keys or parameters may be very slow. Impact summary:
Applications that use the functions DH_check(), DH_check_ex() or EVP_PKEY_param_check() to check a DH key
or DH parameters may experience long delays. Where the key or parameters that are being checked have been
obtained from an untrusted source this may lead to a Denial of Service. The function DH_check() performs
various checks on DH parameters. One of those checks confirms that the modulus ('p' parameter) is not too
large. Trying to use a very large modulus is slow and OpenSSL will not normally use a modulus which is
over 10,000 bits in length. However the DH_check() function checks numerous aspects of the key or
parameters that have been supplied. Some of those checks use the supplied modulus value even if it has
already been found to be too large. An application that calls DH_check() and supplies a key or parameters
obtained from an untrusted source could be vulernable to a Denial of Service attack. The function
DH_check() is itself called by a number of other OpenSSL functions. An application calling any of those
other functions may similarly be affected. The other functions affected by this are DH_check_ex() and
EVP_PKEY_param_check(). Also vulnerable are the OpenSSL dhparam and pkeyparam command line applications
when using the '-check' option. The OpenSSL SSL/TLS implementation is not affected by this issue. The
OpenSSL 3.0 and 3.1 FIPS providers are not affected by this issue. (CVE-2023-3446)
- Issue summary: Checking excessively long DH keys or parameters may be very slow. Impact summary:
Applications that use the functions DH_check(), DH_check_ex() or EVP_PKEY_param_check() to check a DH key
or DH parameters may experience long delays. Where the key or parameters that are being checked have been
obtained from an untrusted source this may lead to a Denial of Service. The function DH_check() performs
various checks on DH parameters. After fixing CVE-2023-3446 it was discovered that a large q parameter
value can also trigger an overly long computation during some of these checks. A correct q value, if
present, cannot be larger than the modulus p parameter, thus it is unnecessary to perform these checks if
q is larger than p. An application that calls DH_check() and supplies a key or parameters obtained from an
untrusted source could be vulnerable to a Denial of Service attack. The function DH_check() is itself
called by a number of other OpenSSL functions. An application calling any of those other functions may
similarly be affected. The other functions affected by this are DH_check_ex() and EVP_PKEY_param_check().
Also vulnerable are the OpenSSL dhparam and pkeyparam command line applications when using the -check
option. The OpenSSL SSL/TLS implementation is not affected by this issue. The OpenSSL 3.0 and 3.1 FIPS
providers are not affected by this issue. (CVE-2023-3817)
- Issue summary: Generating excessively long X9.42 DH keys or checking excessively long X9.42 DH keys or
parameters may be very slow. Impact summary: Applications that use the functions DH_generate_key() to
generate an X9.42 DH key may experience long delays. Likewise, applications that use DH_check_pub_key(),
DH_check_pub_key_ex() or EVP_PKEY_public_check() to check an X9.42 DH key or X9.42 DH parameters may
experience long delays. Where the key or parameters that are being checked have been obtained from an
untrusted source this may lead to a Denial of Service. While DH_check() performs all the necessary checks
(as of CVE-2023-3817), DH_check_pub_key() doesn't make any of these checks, and is therefore vulnerable
for excessively large P and Q parameters. Likewise, while DH_generate_key() performs a check for an
excessively large P, it doesn't check for an excessively large Q. An application that calls
DH_generate_key() or DH_check_pub_key() and supplies a key or parameters obtained from an untrusted source
could be vulnerable to a Denial of Service attack. DH_generate_key() and DH_check_pub_key() are also
called by a number of other OpenSSL functions. An application calling any of those other functions may
similarly be affected. The other functions affected by this are DH_check_pub_key_ex(),
EVP_PKEY_public_check(), and EVP_PKEY_generate(). Also vulnerable are the OpenSSL pkey command line
application when using the -pubcheck option, as well as the OpenSSL genpkey command line application.
The OpenSSL SSL/TLS implementation is not affected by this issue. The OpenSSL 3.0 and 3.1 FIPS providers
are not affected by this issue. (CVE-2023-5678)
- Issue summary: Processing a maliciously formatted PKCS12 file may lead OpenSSL to crash leading to a
potential Denial of Service attack Impact summary: Applications loading files in the PKCS12 format from
untrusted sources might terminate abruptly. A file in PKCS12 format can contain certificates and keys and
may come from an untrusted source. The PKCS12 specification allows certain fields to be NULL, but OpenSSL
does not correctly check for this case. This can lead to a NULL pointer dereference that results in
OpenSSL crashing. If an application processes PKCS12 files from an untrusted source using the OpenSSL APIs
then that application will be vulnerable to this issue. OpenSSL APIs that are vulnerable to this are:
PKCS12_parse(), PKCS12_unpack_p7data(), PKCS12_unpack_p7encdata(), PKCS12_unpack_authsafes() and
PKCS12_newpass(). We have also fixed a similar issue in SMIME_write_PKCS7(). However since this function
is related to writing data we do not consider it security significant. The FIPS modules in 3.2, 3.1 and
3.0 are not affected by this issue. (CVE-2024-0727)
- Issue summary: Some non-default TLS server configurations can cause unbounded memory growth when
processing TLSv1.3 sessions Impact summary: An attacker may exploit certain server configurations to
trigger unbounded memory growth that would lead to a Denial of Service This problem can occur in TLSv1.3
if the non-default SSL_OP_NO_TICKET option is being used (but not if early_data support is also configured
and the default anti-replay protection is in use). In this case, under certain conditions, the session
cache can get into an incorrect state and it will fail to flush properly as it fills. The session cache
will continue to grow in an unbounded manner. A malicious client could deliberately create the scenario
for this failure to force a Denial of Service. It may also happen by accident in normal operation. This
issue only affects TLS servers supporting TLSv1.3. It does not affect TLS clients. The FIPS modules in
3.2, 3.1 and 3.0 are not affected by this issue. OpenSSL 1.0.2 is also not affected by this issue.
(CVE-2024-2511)
Note that Nessus has not tested for these issues but has instead relied on the package manager's report that the package
is installed.");
script_set_attribute(attribute:"solution", value:
"The vendor has acknowledged the vulnerabilities but no solution has been provided. Refer to the vendor for remediation
guidance.");
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:POC/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:H");
script_set_cvss3_temporal_vector("CVSS:3.0/E:P/RL:O/RC:C");
script_set_attribute(attribute:"cvss_score_source", value:"CVE-2022-2068");
script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
script_set_attribute(attribute:"exploit_available", value:"true");
script_set_attribute(attribute:"vendor_unpatched", value:"true");
script_set_attribute(attribute:"vuln_publication_date", value:"2016/03/02");
script_set_attribute(attribute:"plugin_publication_date", value:"2024/05/11");
script_set_attribute(attribute:"plugin_type", value:"local");
script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:4");
script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:5");
script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:6");
script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:7");
script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:8");
script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:9");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:OVMF");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:compat-openssl10");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:compat-openssl11");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:mingw-openssl");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:mingw-virt-viewer");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:openssl");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:openssl096b");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:openssl097a");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:openssl098e");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:ovmf");
script_set_attribute(attribute:"generated_plugin", value:"current");
script_end_attributes();
script_category(ACT_GATHER_INFO);
script_family(english:"Red Hat Local Security Checks");
script_copyright(english:"This script is Copyright (C) 2024 and is owned by Tenable, Inc. or an Affiliate thereof.");
script_dependencies("ssh_get_info.nasl", "redhat_repos.nasl");
script_require_keys("Host/local_checks_enabled", "Host/RedHat/release", "Host/RedHat/rpm-list", "Host/cpu");
exit(0);
}
include('rpm.inc');
include('rhel.inc');
if (!get_kb_item("global_settings/vendor_unpatched"))
exit(0, "Unpatched Vulnerabilities Detection not active.");
if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_release = get_kb_item('Host/RedHat/release');
if (isnull(os_release) || 'Red Hat' >!< os_release) audit(AUDIT_OS_NOT, 'Red Hat');
var os_ver = pregmatch(pattern: "Red Hat Enterprise Linux.*release ([0-9]+(\.[0-9]+)?)", string:os_release);
if (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, 'Red Hat');
os_ver = os_ver[1];
if (!rhel_check_release(operator: 'ge', os_version: os_ver, rhel_version: '6')) audit(AUDIT_OS_NOT, 'Red Hat 6.x', 'Red Hat ' + os_ver);
if (!get_kb_item('Host/RedHat/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$" && 's390' >!< cpu && 'aarch64' >!< cpu && 'ppc' >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, 'Red Hat', cpu);
var constraints = [
{
'pkgs': [
{'reference':'openssl', 'release':'6', 'rpm_spec_vers_cmp':TRUE, 'unpatched_pkg':'openssl', 'cves':['CVE-2016-7056', 'CVE-2017-3735', 'CVE-2018-0734', 'CVE-2018-0735', 'CVE-2018-0737', 'CVE-2018-5407', 'CVE-2019-1547', 'CVE-2019-1563', 'CVE-2020-1968', 'CVE-2021-3601', 'CVE-2021-3712', 'CVE-2021-23839', 'CVE-2021-23841', 'CVE-2022-1292', 'CVE-2022-2068', 'CVE-2022-3358', 'CVE-2023-0215', 'CVE-2023-0464', 'CVE-2023-0465', 'CVE-2023-0466', 'CVE-2023-2650', 'CVE-2023-3446', 'CVE-2023-3817', 'CVE-2023-5678', 'CVE-2024-0727', 'CVE-2024-2511']},
{'reference':'openssl098e', 'release':'6', 'rpm_spec_vers_cmp':TRUE, 'unpatched_pkg':'openssl098e', 'cves':['CVE-2016-2105', 'CVE-2016-2106', 'CVE-2016-2108', 'CVE-2016-2109', 'CVE-2016-2177', 'CVE-2016-2178', 'CVE-2016-2179', 'CVE-2016-2181', 'CVE-2016-2182', 'CVE-2016-2842', 'CVE-2016-6306', 'CVE-2017-3735', 'CVE-2018-0734', 'CVE-2018-0737', 'CVE-2018-5407', 'CVE-2020-1968', 'CVE-2021-3712', 'CVE-2021-23841', 'CVE-2022-1292', 'CVE-2022-2068']}
]
}
];
var flag = 0;
foreach var constraint_array ( constraints ) {
var repo_relative_urls = NULL;
var enterprise_linux_flag = rhel_repo_urls_has_content_dist_rhel(repo_urls:repo_relative_urls);
foreach var pkg ( constraint_array['pkgs'] ) {
var unpatched_pkg = NULL;
var _release = NULL;
var sp = NULL;
var el_string = NULL;
var rpm_spec_vers_cmp = NULL;
var exists_check = NULL;
var cves = NULL;
if (!empty_or_null(pkg['unpatched_pkg'])) unpatched_pkg = pkg['unpatched_pkg'];
if (!empty_or_null(pkg['release'])) _release = 'RHEL' + pkg['release'];
if (!empty_or_null(pkg['sp'])) sp = pkg['sp'];
if (!empty_or_null(pkg['rpm_spec_vers_cmp'])) rpm_spec_vers_cmp = pkg['rpm_spec_vers_cmp'];
if (!empty_or_null(pkg['exists_check'])) exists_check = pkg['exists_check'];
if (!empty_or_null(pkg['cves'])) cves = pkg['cves'];
if (unpatched_pkg &&
_release &&
(!exists_check || rpm_exists(release:_release, rpm:exists_check)) &&
unpatched_package_exists(release:_release, package:unpatched_pkg, cves: cves)) flag++;
}
}
if (flag)
{
var extra = NULL;
security_report_v4(
port : 0,
severity : SECURITY_HOLE,
extra : unpatched_packages_report()
);
exit(0);
}
else
{
var tested = pkg_tests_get();
if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
else audit(AUDIT_PACKAGE_NOT_INSTALLED, 'openssl / openssl098e');
}
Vendor | Product | Version | CPE |
---|---|---|---|
redhat | enterprise_linux | openssl097a | p-cpe:/a:redhat:enterprise_linux:openssl097a |
redhat | enterprise_linux | 5 | cpe:/o:redhat:enterprise_linux:5 |
redhat | enterprise_linux | ovmf | p-cpe:/a:redhat:enterprise_linux:ovmf |
redhat | enterprise_linux | openssl | p-cpe:/a:redhat:enterprise_linux:openssl |
redhat | enterprise_linux | mingw-openssl | p-cpe:/a:redhat:enterprise_linux:mingw-openssl |
redhat | enterprise_linux | 4 | cpe:/o:redhat:enterprise_linux:4 |
redhat | enterprise_linux | compat-openssl11 | p-cpe:/a:redhat:enterprise_linux:compat-openssl11 |
redhat | enterprise_linux | openssl096b | p-cpe:/a:redhat:enterprise_linux:openssl096b |
redhat | enterprise_linux | mingw-virt-viewer | p-cpe:/a:redhat:enterprise_linux:mingw-virt-viewer |
redhat | enterprise_linux | 8 | cpe:/o:redhat:enterprise_linux:8 |
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2105
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2106
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2108
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2109
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2177
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2178
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2179
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2181
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2182
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2842
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6306
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7056
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-3735
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-0734
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-0735
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-0737
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5407
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-1547
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-1563
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1968
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23839
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-23841
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3601
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3712
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-1292
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-2068
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-3358
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0215
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0464
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0465
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-0466
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-2650
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-3446
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-3817
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-5678
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-0727
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-2511