| Reporter | Title | Published | Views | Family All 2518 |
|---|---|---|---|---|
| curl security update | 25 Aug 202200:00 | – | oraclelinux | |
| curl security update | 24 Aug 202200:00 | – | oraclelinux | |
| curl security update | 22 Nov 202200:00 | – | oraclelinux | |
| curl security update | 24 Jan 202300:00 | – | oraclelinux | |
| curl security update | 7 Mar 202300:00 | – | oraclelinux | |
| curl security update | 11 Apr 202300:00 | – | oraclelinux | |
| curl security update | 15 May 202300:00 | – | oraclelinux | |
| curl security update | 17 May 202300:00 | – | oraclelinux | |
| curl security and bug fix update | 24 May 202300:00 | – | oraclelinux | |
| curl security and bug fix update | 25 May 202300:00 | – | oraclelinux |
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from Tencent Linux Security Advisory TSSA-2024:0356.
##
include('deprecated_nasl_level.inc');
include('compat.inc');
if (description)
{
script_id(239530);
script_version("1.3");
script_set_attribute(attribute:"plugin_modification_date", value:"2025/11/22");
script_cve_id(
"CVE-2022-32205",
"CVE-2022-32206",
"CVE-2022-32207",
"CVE-2022-32208",
"CVE-2022-32221",
"CVE-2022-35252",
"CVE-2022-42915",
"CVE-2022-42916",
"CVE-2022-43551",
"CVE-2022-43552",
"CVE-2023-23914",
"CVE-2023-23915",
"CVE-2023-23916",
"CVE-2023-27533",
"CVE-2023-27534",
"CVE-2023-27535",
"CVE-2023-27536",
"CVE-2023-27538",
"CVE-2023-28319",
"CVE-2023-28320",
"CVE-2023-28321",
"CVE-2023-28322",
"CVE-2023-38545",
"CVE-2023-38546"
);
script_xref(name:"CEA-ID", value:"CEA-2023-0052");
script_name(english:"TencentOS Server 4: curl (TSSA-2024:0356)");
script_set_attribute(attribute:"synopsis", value:
"The remote TencentOS Server 4 host is missing one or more security updates.");
script_set_attribute(attribute:"description", value:
"The version of Tencent Linux installed on the remote TencentOS Server 4 host is prior to tested version. It is,
therefore, affected by multiple vulnerabilities as referenced in the TSSA-2024:0356 advisory.
Package updates are available for TencentOS Server 4 that fix the following vulnerabilities:
CVE-2023-28322:
An information disclosure vulnerability exists in curl <v8.1.0 when doing HTTP(S) transfers, libcurl might
erroneously use the read callback (`CURLOPT_READFUNCTION`) to ask for data to send, even when the
`CURLOPT_POSTFIELDS` option has been set, if the same handle previously wasused to issue a `PUT` request
which used that callback. This flaw may surprise the application and cause it to misbehave and either send
off the wrong data or use memory after free or similar in the second transfer. The problem exists in the
logic for a reused handle when it is (expected to be) changed from a PUT to a POST.
CVE-2023-28321:
An improper certificate validation vulnerability exists in curl <v8.1.0 in the way it supports matching of
wildcard patterns when listed as Subject Alternative Name in TLS server certificates. curl can be built
to use its own name matching function for TLS rather than one provided by a TLS library. This private
wildcard matching function would match IDN (International Domain Name) hosts incorrectly and could as a
result accept patterns that otherwise should mismatch. IDN hostnames are converted to puny code before
used for certificate checks. Puny coded names always start with `xn--` and should not be allowed to
pattern match, but the wildcard check in curl could still check for `x*`, which would match even though
the IDN name most likely contained nothing even resembling an `x`.
CVE-2023-28320:
A denial of service vulnerability exists in curl <v8.1.0 in the way libcurl provides several different
backends for resolving host names, selected at build time. If it is built to use the synchronous resolver,
it allows name resolves to time-out slow operations using `alarm()` and `siglongjmp()`. When doing this,
libcurl used a global buffer that was not mutex protected and a multi-threaded application might therefore
crash or otherwise misbehave.
CVE-2023-28319:
A use after free vulnerability exists in curl <v8.1.0 in the way libcurl offers a feature to verify an SSH
server's public key using a SHA 256 hash. When this check fails, libcurl would free the memory for the
fingerprint before it returns an error message containing the (now freed) hash. This flaw risks inserting
sensitive heap-based data into the error message that might be shown to users or otherwise get leaked and
revealed.
CVE-2023-27538:
An authentication bypass vulnerability exists in libcurl prior to v8.0.0 where it reuses a previously
established SSH connection despite the fact that an SSH option was modified, which should have prevented
reuse. libcurl maintains a pool of previously used connections to reuse them for subsequent transfers if
the configurations match. However, two SSH settings were omitted from the configuration check, allowing
them to match easily, potentially leading to the reuse of an inappropriate connection.
CVE-2023-27536:
An authentication bypass vulnerability exists libcurl <8.0.0 in the connection reuse feature which can
reuse previously established connections with incorrect user permissions due to a failure to check for
changes in the CURLOPT_GSSAPI_DELEGATION option. This vulnerability affects krb5/kerberos/negotiate/GSSAPI
transfers and could potentially result in unauthorized access to sensitive information. The safest option
is to not reuse connections if the CURLOPT_GSSAPI_DELEGATION option has been changed.
CVE-2023-27535:
An authentication bypass vulnerability exists in libcurl <8.0.0 in the FTP connection reuse feature that
can result in wrong credentials being used during subsequent transfers. Previously created connections are
kept in a connection pool for reuse if they match the current setup. However, certain FTP settings such as
CURLOPT_FTP_ACCOUNT, CURLOPT_FTP_ALTERNATIVE_TO_USER, CURLOPT_FTP_SSL_CCC, and CURLOPT_USE_SSL were not
included in the configuration match checks, causing them to match too easily. This could lead to libcurl
using the wrong credentials when performing a transfer, potentially allowing unauthorized access to
sensitive information.
CVE-2023-27534:
A path traversal vulnerability exists in curl <8.0.0 SFTP implementation causes the tilde (~) character to
be wrongly replaced when used as a prefix in the first path element, in addition to its intended use as
the first element to indicate a path relative to the user's home directory. Attackers can exploit this
flaw to bypass filtering or execute arbitrary code by crafting a path like /~2/foo while accessing a
server with a specific user.
CVE-2023-27533:
A vulnerability in input validation exists in curl <8.0 during communication using the TELNET protocol may
allow an attacker to pass on maliciously crafted user name and telnet options during server negotiation.
The lack of proper input scrubbing allows an attacker to send content or perform option negotiation
without the application's intent. This vulnerability could be exploited if an application allows user
input, thereby enabling attackers to execute arbitrary code on the system.
CVE-2023-23916:
An allocation of resources without limits or throttling vulnerability exists in curl <v7.88.0 based on the
chained HTTP compression algorithms, meaning that a server response can be compressed multiple times and
potentially with differentalgorithms. The number of acceptable links in this decompression chain
wascapped, but the cap was implemented on a per-header basis allowing a maliciousserver to insert a
virtually unlimited number of compression steps simply byusing many headers. The use of such a
decompression chain could result in a malloc bomb, making curl end up spending enormous amounts of
allocated heap memory, or trying to and returning out of memory errors.
CVE-2023-23915:
A cleartext transmission of sensitive information vulnerability exists in curl <v7.88.0 that could cause
HSTS functionality to behave incorrectly when multiple URLs are requested in parallel. Using its HSTS
support, curl can be instructed to use HTTPS instead of using an insecure clear-text HTTP step even when
HTTP is provided in the URL. This HSTS mechanism would however surprisingly fail when multiple transfers
are done in parallel as the HSTS cache file gets overwritten by the most recentlycompleted transfer. A
later HTTP-only transfer to the earlier host name would then *not* get upgraded properly to HSTS.
CVE-2023-23914:
A cleartext transmission of sensitive information vulnerability exists in curl <v7.88.0 that could cause
HSTS functionality fail when multiple URLs are requested serially. Using its HSTS support, curl can be
instructed to use HTTPS instead of usingan insecure clear-text HTTP step even when HTTP is provided in the
URL. ThisHSTS mechanism would however surprisingly be ignored by subsequent transferswhen done on the same
command line because the state would not be properlycarried on.
CVE-2022-43552:
A use after free vulnerability exists in curl <7.87.0. Curl can be asked to *tunnel* virtually all
protocols it supports through an HTTP proxy. HTTP proxies can (and often do) deny such tunnel operations.
When getting denied to tunnel the specific protocols SMB or TELNET, curl would use a heap-allocated struct
after it had been freed, in its transfer shutdown code path.
CVE-2022-43551:
A vulnerability exists in curl <7.87.0 HSTS check that could be bypassed to trick it to keep using HTTP.
Using its HSTS support, curl can be instructed to use HTTPS instead of using an insecure clear-text HTTP
step even when HTTP is provided in the URL. However, the HSTS mechanism could be bypassed if the host name
in the given URL first uses IDN characters that get replaced to ASCII counterparts as part of the IDN
conversion. Like using the character UTF-8 U+3002 (IDEOGRAPHIC FULL STOP) instead of the common ASCII full
stop (U+002E) `.`. Then in a subsequent request, it does not detect the HSTS state and makes a clear text
transfer. Because it would store the info IDN encoded but look for it IDN decoded.
CVE-2022-42916:
In curl before 7.86.0, the HSTS check could be bypassed to trick it into staying with HTTP. Using its HSTS
support, curl can be instructed to use HTTPS directly (instead of using an insecure cleartext HTTP step)
even when HTTP is provided in the URL. This mechanism could be bypassed if the host name in the given URL
uses IDN characters that get replaced with ASCII counterparts as part of the IDN conversion, e.g., using
the character UTF-8 U+3002 (IDEOGRAPHIC FULL STOP) instead of the common ASCII full stop of U+002E (.).
The earliest affected version is 7.77.0 2021-05-26.
CVE-2022-42915:
curl before 7.86.0 has a double free. If curl is told to use an HTTP proxy for a transfer with a non-
HTTP(S) URL, it sets up the connection to the remote server by issuing a CONNECT request to the proxy, and
then tunnels the rest of the protocol through. An HTTP proxy might refuse this request (HTTP proxies often
only allow outgoing connections to specific port numbers, like 443 for HTTPS) and instead return a non-200
status code to the client. Due to flaws in the error/cleanup handling, this could trigger a double free in
curl if one of the following schemes were used in the URL for the transfer: dict, gopher, gophers, ldap,
ldaps, rtmp, rtmps, or telnet. The earliest affected version is 7.77.0.
CVE-2022-35252:
When curl is used to retrieve and parse cookies from a HTTP(S) server, itaccepts cookies using control
codes that when later are sent back to a HTTPserver might make the server return 400 responses.
Effectively allowing asister site to deny service to all siblings.
CVE-2022-32221:
When doing HTTP(S) transfers, libcurl might erroneously use the read callback (`CURLOPT_READFUNCTION`) to
ask for data to send, even when the `CURLOPT_POSTFIELDS` option has been set, if the same handle
previously was used to issue a `PUT` request which used that callback. This flaw may surprise the
application and cause it to misbehave and either send off the wrong data or use memory after free or
similar in the subsequent `POST` request. The problem exists in the logic for a reused handle when it is
changed from a PUT to a POST.
CVE-2022-32208:
When curl < 7.84.0 does FTP transfers secured by krb5, it handles message verification failures wrongly.
This flaw makes it possible for a Man-In-The-Middle attack to go unnoticed and even allows it to inject
data to the client.
CVE-2022-32207:
When curl < 7.84.0 saves cookies, alt-svc and hsts data to local files, it makes the operation atomic by
finalizing the operation with a rename from a temporary name to the final target file name.In that rename
operation, it might accidentally *widen* the permissions for the target file, leaving the updated file
accessible to more users than intended.
CVE-2022-32206:
curl < 7.84.0 supports chained HTTP compression algorithms, meaning that a serverresponse can be
compressed multiple times and potentially with different algorithms. The number of acceptable links in
this decompression chain was unbounded, allowing a malicious server to insert a virtually unlimited
number of compression steps.The use of such a decompression chain could result in a malloc bomb,
makingcurl end up spending enormous amounts of allocated heap memory, or trying toand returning out of
memory errors.
CVE-2022-32205:
A malicious server can serve excessive amounts of `Set-Cookie:` headers in a HTTP response to curl and
curl < 7.84.0 stores all of them. A sufficiently large amount of (big) cookies make subsequent HTTP
requests to this, or other servers to which the cookies match, create requests that become larger than the
threshold that curl uses internally to avoid sending crazy large requests (1048576 bytes) and instead
returns an error.This denial state might remain for as long as the same cookies are kept, match and
haven't expired. Due to cookie matching rules, a server on `foo.example.com` can set cookies that also
would match for `bar.example.com`, making it it possible for a sister server to effectively cause a
denial of service for a sibling site on the same second level domain using this method.
CVE-2023-38545:
This flaw makes curl overflow a heap based buffer in the SOCKS5 proxy
handshake.
When curl is asked to pass along the host name to the SOCKS5 proxy to allow
that to resolve the address instead of it getting done by curl itself, the
maximum length that host name can be is 255 bytes.
If the host name is detected to be longer, curl switches to local name
resolving and instead passes on the resolved address only. Due to this bug,
the local variable that means let the host resolve the name could get the
wrong value during a slow SOCKS5 handshake, and contrary to the intention,
copy the too long host name to the target buffer instead of copying just the
resolved address there.
The target buffer being a heap based buffer, and the host name coming from the
URL that curl has been told to operate with.
CVE-2023-38546:
This flaw allows an attacker to insert cookies at will into a running program
using libcurl, if the specific series of conditions are met.
libcurl performs transfers. In its API, an application creates easy handles
that are the individual handles for single transfers.
libcurl provides a function call that duplicates en easy handle called
[curl_easy_duphandle](https://curl.se/libcurl/c/curl_easy_duphandle.html).
If a transfer has cookies enabled when the handle is duplicated, the
cookie-enable state is also cloned - but without cloning the actual
cookies. If the source handle did not read any cookies from a specific file on
disk, the cloned version of the handle would instead store the file name as
`none` (using the four ASCII letters, no quotes).
Subsequent use of the cloned handle that does not explicitly set a source to
load cookies from would then inadvertently load cookies from a file named
`none` - if such a file exists and is readable in the current directory of the
program using libcurl. And if using the correct file format of course.
Tenable has extracted the preceding description block directly from the Tencent Linux security advisory.
Note that Nessus has not tested for these issues but has instead relied only on the application's self-reported version
number.");
script_set_attribute(attribute:"see_also", value:"https://mirrors.tencent.com/tlinux/errata/tssa-20240356.xml");
script_set_attribute(attribute:"solution", value:
"Update the affected packages.");
script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P");
script_set_cvss_temporal_vector("CVSS2#E:H/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:H/RL:O/RC:C");
script_set_attribute(attribute:"cvss_score_source", value:"CVE-2022-32207");
script_set_attribute(attribute:"cvss3_score_source", value:"CVE-2023-38545");
script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
script_set_attribute(attribute:"exploit_available", value:"true");
script_set_attribute(attribute:"vuln_publication_date", value:"2025/01/22");
script_set_attribute(attribute:"patch_publication_date", value:"2025/01/22");
script_set_attribute(attribute:"plugin_publication_date", value:"2025/06/16");
script_set_attribute(attribute:"plugin_type", value:"local");
script_set_attribute(attribute:"cpe", value:"cpe:/o:tencent:tencentos_server:4");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:tencent:tencentos_server:curl");
script_set_attribute(attribute:"generated_plugin", value:"current");
script_end_attributes();
script_category(ACT_GATHER_INFO);
script_family(english:"Tencent Local Security Checks");
script_copyright(english:"This script is Copyright (C) 2025 and is owned by Tenable, Inc. or an Affiliate thereof.");
script_dependencies("ssh_get_info2.nasl");
script_require_keys("Host/local_checks_enabled", "Host/etc/os-release", "Host/TencentOS/rpm-list", "Host/cpu");
exit(0);
}
include('rpm2.inc');
if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_product = get_kb_item('installed_os/local/SSH/0/product');
if (isnull(os_product) || 'TencentOS' >!< os_product) audit(AUDIT_OS_NOT, 'TencentOS');
var os_version = get_kb_item('installed_os/local/SSH/0/version');
if (isnull(os_version)) audit(AUDIT_UNKNOWN_APP_VER, 'TencentOS');
if (! preg(pattern:"^4([^0-9]|$)", string:os_version)) audit(AUDIT_OS_NOT, 'TencentOS 4.x', 'TencentOS ' + os_version);
if (!get_kb_item('Host/TencentOS/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) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, 'TencentOS', cpu);
var constraints = [
{
'release': '4',
'pkgs': [
{'reference':'curl-8.4.0-3.tl4', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'curl-8.4.0-3.tl4', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'curl-debuginfo-8.4.0-3.tl4', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'curl-debuginfo-8.4.0-3.tl4', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'curl-debugsource-8.4.0-3.tl4', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'curl-debugsource-8.4.0-3.tl4', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'libcurl-8.4.0-3.tl4', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'libcurl-8.4.0-3.tl4', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'libcurl-debuginfo-8.4.0-3.tl4', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'libcurl-debuginfo-8.4.0-3.tl4', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'libcurl-devel-8.4.0-3.tl4', 'cpu':'aarch64', 'rpm_spec_vers_cmp':TRUE},
{'reference':'libcurl-devel-8.4.0-3.tl4', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE}
]
}
];
var os_release = get_one_kb_item('installed_os/local/SSH/0/release');
var os_sp = get_one_kb_item('Host/*/minor_release');
var flag = 0;
var reference;
var sp;
var _cpu;
var el_string;
var rpm_spec_vers_cmp;
var epoch;
var allowmaj;
var exists_check;
var cves;
foreach var constraint ( constraints ) {
# Check that the target release is equal to the affected release
if (!empty_or_null(constraint['release'])){
if (constraint['release'] != os_release) continue;
}
if (!empty_or_null(constraint['sp'])){
if (constraint['sp'] != os_sp) continue;
}
foreach var pkg ( constraint['pkgs'] ) {
reference = NULL;
sp = NULL;
_cpu = NULL;
el_string = NULL;
rpm_spec_vers_cmp = NULL;
epoch = NULL;
allowmaj = NULL;
exists_check = NULL;
cves = NULL;
if (!empty_or_null(pkg['reference'])) reference = pkg['reference'];
if (!empty_or_null(pkg['sp'])) sp = pkg['sp'];
if (!empty_or_null(pkg['cpu'])) _cpu = pkg['cpu'];
if (!empty_or_null(pkg['el_string'])) el_string = pkg['el_string'];
if (!empty_or_null(pkg['rpm_spec_vers_cmp'])) rpm_spec_vers_cmp = pkg['rpm_spec_vers_cmp'];
if (!empty_or_null(pkg['epoch'])) epoch = pkg['epoch'];
if (!empty_or_null(pkg['allowmaj'])) allowmaj = pkg['allowmaj'];
if (!empty_or_null(pkg['exists_check'])) exists_check = pkg['exists_check'];
if (!empty_or_null(pkg['cves'])) cves = pkg['cves'];
if (reference &&
## (no known rpm to check OR known rpm_exists)
(!exists_check || rpm_exists(rpm:exists_check)) &&
rpm_check(sp:sp, cpu:_cpu, reference:reference, epoch:epoch, el_string:el_string, rpm_spec_vers_cmp:rpm_spec_vers_cmp, allowmaj:allowmaj, cves:cves)) 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, 'curl / curl-debuginfo / curl-debugsource / etc');
}
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