#17829 closed enhancement (fixed)
curl-8.0.1
Reported by: | Xi Ruoyao | Owned by: | Douglas R. Reno |
---|---|---|---|
Priority: | elevated | Milestone: | 12.0 |
Component: | BOOK | Version: | git |
Severity: | normal | Keywords: | |
Cc: |
Description ¶
New "major" version.
"major" quoted because the major version number seems only bumped as a celebration.
Change History (10)
comment:1 by , 2 years ago
comment:2 by , 2 years ago
curl and libcurl 8.0.0
- Public curl releases: 215
- Command line options: 250
- curl_easy_setopt() options: 302
- Public functions in libcurl: 91
- Contributors: 2841
This release includes the following changes:
- build: remove support for curl_off_t < 8 bytes [19]
This release includes the following bugfixes:
- .cirrus.yml: Bump to FreeBSD 13.2 [9]
- aws_sigv4: fall back to UNSIGNED-PAYLOAD for sign_as_s3 [112]
- BINDINGS: add Fortran binding [33]
- build: drop the use of XC_AMEND_DISTCLEAN [62]
- build: fix stdint/inttypes detection with non-autotools [120]
- cf-socket: fix handling of remote addr for accepted tcp sockets [17]
- cf-socket: if socket is already connected, return CURLE_OK [69]
- cf-socket: use port 80 when resolving name for local bind [109]
- CI: don't run CI jobs if only another CI was changed [92]
- CI: update ngtcp2 and nghttp2 for pytest [13]
- cmake: delete unused HAVESTRTOI64 [117]
- cmake: fix enabling LDAPS on Windows [55]
- cmake: skip CA-path/bundle auto-detection in cross-builds [57]
- connect: fix time_connect and time_appconnect timer statistics [90]
- cookie: don't load cookies again when flushing [91]
- cookie: parse without sscanf()
- curl.h: require gcc 12.1 for the deprecation magic [110]
- curl: make -w's %{stderr} use the file set with --stderr [30]
- curl_path: create the new path with dynbuf [99]
- CURLOPT_PIPEWAIT: allow waited reuse also for subsequent connections [10]
- CURLOPT_PROXY.3: curl+NSS does not handle HTTPS over unix domain socket [102]
- CURLSHOPT_SHARE.3: HSTS sharing is not thread-safe [103]
- DEPRECATE: the original legacy mingw version 1 [43]
- doc: fix compiler warning in libcurl.m4 [82]
- docs/cmdline-opts: mark all global options [6]
- docs/SECURITY-PROCESS.md: updates [67]
- docs: extend the URL API descriptions [85]
- docs: note '--data-urlencode' option [7]
- DYNBUF.md: note Curl_dyn_add* calls Curl_dyn_free on failure [70]
- easy: remove infof() debug leftover from curl_easy_recv [44]
- examples/http3.c: use CURL_HTTP_VERSION_3 [46]
- ftp: active mode with SSL, add the filter [84]
- ftp: add more conditions for connection reuse [74]
- ftp: allocate the wildcard struct on demand [59]
- ftp: make the EPSV response parser not use sscanf [25]
- ftp: replace sscanf for MDTM 213 response parsing [23]
- ftp: replace sscanf for PASV parsing [24]
- gssapi: align
gss_OID_desc
to silence ld warnings on macOS ventura [58] - headers: make curl_easy_header and nextheader return different buffers [77]
- hostip: avoid sscanf and extra buffer copies [42]
- http2: fix error handling during parallel operations [96]
- http2: fix for http2-prior-knowledge when reusing connections [14]
- http2: fix handling of RST and GOAWAY to recognize partial transfers [88]
- http2: fix upload busy loop [71]
- http: don't send 100-continue for short PUT requests [93]
- http: fix unix domain socket use in https connects [28]
- http: rewrite the status line parser without sscanf [29]
- http_proxy: parse the status line without sscanf [16]
- idn: return error if the conversion ends up with a blank host [45]
- krb5: avoid sscanf for parsing [18]
- lib1560: test parsing URLs with ridiculously large fields [60]
- lib2305: deal with CURLE_AGAIN [122]
- lib517: verify time stamps without leading zeroes plus some more
- lib: silence clang/gcc -Wvla warnings in brotli headers [98]
- lib: skip Curl_llist_destroy calls [108]
- libcurl-errors.3: add the CURLHcode errors from curl_easy_header.3 [39]
- libssh2: only set the memory callbacks when debugging [65]
- libssh2: remove unused variable from libssh2's struct [124]
- libssh: use dynbuf instead of realloc [121]
- Makefile.mk: delete redundant
HAVE_LDAP_SSL
macro [56] - Makefile.mk: fix -g option in debug mode [81]
- mqtt: on send error, return error [40]
- multi: make multi_perform ignore/unignore signals less often [116]
- multi: remove PENDING + MSGSENT handles from the main linked list [105]
- ngtcp2-gnutls.yml: bump to gnutls 3.8.0 [11]
- ngtcp2: fix unwanted close of file descriptor 0 [26]
- page-footer: add explanation for three missing exit codes [37]
- parsedate: parse strings without using sscanf() [2]
- parsedate: replace sscanf( for time stamp parsing [1]
- quic/schannel: fix compiler warnings [36]
- rand: use arc4random as fallback when available [48]
- rate.d: single URLs make no sense in --rate example [38]
- RELEASE-PROCEDURE.md: update coming release dates
- rtsp: avoid sscanf for parsing [15]
- runtests: use a hash table for server port numbers [51]
- sectransp: fix compiler warning c89 mixed code/declaration [32]
- sectransp: make read_cert() use a dynbuf when loading [72]
- secure-transport: fix recv return code handling [114]
- select: stop treating POLLRDBAND as an error [27]
- setopt: move the CURLOPT_CHUNK_DATA pointer to the set struct [35]
- socket: detect "dead" connections better, e.g. not fit for reuse [66]
- src: silence wmain() warning for all build methods [95]
- telnet: only accept option arguments in ascii [104]
- telnet: parse NEW_ENVIRON without sscanf [20]
- telnet: parse telnet options without sscanf [22]
- telnet: parse the WS= argument without sscanf [21]
- test1470: test socks proxy using unix sockets and connect to https [63]
- test1960: verify CURL_SOCKOPT_ALREADY_CONNECTED [64]
- test2600: detect when ALARM_TIMEOUT is in use and adjust [34]
- test422: verify --next used without a prior URL [115]
- tests/http: add pytest to GHA and improve tests [118]
- tests: add
cookies
features [68] - tests: add timeout, SLOWDOWN and DELAY keywords to tests
- tests: fix gnutls-serv check [53]
- tests: fix MSVC unreachable code warnings in unit tests
- tests: hack to build most unit tests under cmake [94]
- tests: HTTP server fixups [3]
- tests: keep cmake unit tests names in sync
- tests: make CPPFLAGS common to all unit tests
- tests: make first.c the same for both lib tests and unit tests [75]
- tests: support for imaps/pop3s/smtps protocols [50]
- tests: sync option lists in runtests.pl & its man page
- tests: test secure mail protocols with explicit SSL requests [49]
- tests: use AM_CPPFILES to modify flags in unit tests
- tests: use dynamic ports numbers in pytest suite [89]
- tool: dump headers even if file is write-only [52]
- tool: improve --stderr handling [83]
- tool_getparam: don't add a new node for just --no-remote-name [5]
- tool_getparam: error if --next is used without a prior URL [119]
- tool_operate: avoid fclose(NULL) on bad header dump file [12]
- tool_operate: propagate error codes for missing URL after --next [4]
- tool_progress: shut off progress meter for --silent in parallel [8]
- tool_writeout_json. fix the output for duplicate header names [76]
- transfer: limit Windows SO_SNDBUF updates to once a second [73]
- url: fix cookielist memleak when curl_easy_reset [106]
- url: fix logic in connection reuse to deny reuse on "unclean" connections [86]
- url: fix the SSH connection reuse check [101]
- url: only reuse connections with same GSS delegation [97]
- url: remove dummy protocol handler [100]
- urlapi: '%' is illegal in host names [80]
- urlapi: avoid mutating internals in getter routine [79]
- urlapi: parse IPv6 literals without ENABLE_IPV6 [61]
- urlapi: take const args in _dup and _get functions [78]
- wildcard: remove files and move functions into ftplistparser.c
- winbuild: fix makefile clean [31]
- wolfssl: add quic/ngtcp2 detection in cmake, and fix builds [113]
- wolfSSL: ressurect the BIO
io_result
[54] - ws: keep the socket non-blocking [41]
- x509asn1.c: use correct format specifier for infof() call [47]
- x509asn1: use plain %x, not %lx, when the arg is an int [87]
This release includes the following known bugs:
- see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)
Planned upcoming removals include:
- gskit
- NSS
- support for space-separated NOPROXY patterns
- support for the original legacy mingw version 1
comment:4 by , 2 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:5 by , 2 years ago
Priority: | normal → elevated |
---|
comment:7 by , 2 years ago
8.0.1:
This release includes the following bugfixes:
- Revert "multi: remove PENDING + MSGSENT handles"
comment:8 by , 2 years ago
CVE-2023-27538
CVE-2023-27538: SSH connection too eager reuse still Project curl Security Advisory, March 20th 2023 VULNERABILITY libcurl would reuse a previously created connection even when an SSH related option had been changed that should have prohibited reuse. libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse if one of them matches the setup. However, two SSH settings were left out from the configuration match checks, making them match too easily. We are not aware of any exploit of this flaw. INFO These are the options that were not considered in the check, so curl would reuse a connection even if the subsequent transfer would have changed one or more of these options. CURLOPT_SSH_PUBLIC_KEYFILE CURLOPT_SSH_PRIVATE_KEYFILE This flaw was initially introduced in curl 7.16.1. The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2023-27538 to this issue. This vulnerability is partially identical to CVE-2022-27782 since the fix for that previous issue was bad and did not actually correct the problem for these SSH options. CWE-305: Authentication Bypass by Primary Weakness The previos flaw CVE-2022-27782 was set to severity Medium, but since this is a partial of that and affects only two options that rarely will change with the expectation that the user will be different, this time we set it severity Low. Severity: Low AFFECTED VERSIONS Affected versions: curl 7.16.1 to and including 7.88.1 Not affected versions: curl < 7.16.1 and curl >= 8.0.0 libcurl is used by many applications, but not always advertised as such! THE SOLUTION The fix for CVE-2023-27538 RECOMMENDATIONS A - Upgrade curl to version 8.0.0 B - Apply the patch to your local version C - Avoid SCP and SFTP transfers TIMELINE This issue was reported to the curl project on March 9 2023. We contacted distros@openwall on March 13, 2023. curl 8.0.0 was released on March 20 2023, coordinated with the publication of this advisory.
CVE-2023-23757
CVE-2023-27537: HSTS double-free Project curl Security Advisory, March 20th 2023 VULNERABILITY libcurl supports sharing HSTS data between separate "handles". This sharing was introduced without considerations for do this sharing across separate threads but there was no indication of this fact in the documentation. Due to missing mutexes or thread locks, two threads sharing the same HSTS data could end up doing a double-free or use-after-free. We are not aware of any exploit of this flaw. INFO This feature was not implemented to support sharing between threads. That is still left for future improvements. The fix for this issue is therefore a documentation update clarifying that sharing HSTS between threads is not expected to work. CVE-2023-27537 was introduced in commit 076a2f629119222a, shipped in curl 7.88.0. CWE-415: Double Free Severity: Low Severity is set to Low because Not widely used functionality The timing necessary to trigger this has to match fairly exact Exploitation this for anything but denial of service is difficult AFFECTED VERSIONS Affected versions: curl 7.88.0 to and including 7.88.1 Not affected versions: curl < 7.88.0 and curl >= 8.0.0 libcurl is used by many applications, but not always advertised as such! THE SOLUTION A fix for CVE-2023-27537 RECOMMENDATIONS A - Do not share HSTS data between threads TIMELINE This issue was reported to the curl project on March 8 2023. We contacted distros@openwall on March 13, 2023. curl 8.0.0 was released on March 20 2023, coordinated with the publication of this advisory.
CVE-2023-27536
CVE-2023-27536: GSS delegation too eager connection re-use Project curl Security Advisory, March 20th 2023 VULNERABILITY libcurl would reuse a previously created connection even when the GSS delegation (CURLOPT_GSSAPI_DELEGATION) option had been changed that could have changed the user's permissions in a second transfer. libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse if one of them matches the setup. However, this GSS delegation setting was left out from the configuration match checks, making them match too easily, affecting krb5/kerberos/negotiate/GSSAPI transfers. We are not aware of any exploit of this flaw. INFO CVE-2023-27536 was introduced in commit ebf42c4be76df4, shipped in curl 7.22.0. CWE-305: Authentication Bypass by Primary Weakness Severity: Low AFFECTED VERSIONS Affected versions: curl 7.22.0 to and including 7.88.1 Not affected versions: curl < 7.22.0 and curl >= 8.0.0 libcurl is used by many applications, but not always advertised as such! THE SOLUTION A fix for CVE-2023-27536 RECOMMENDATIONS A - Upgrade curl to version 8.0.0 B - Apply the patch to your local version C - Do not use the CURLOPT_GSSAPI_DELEGATION option TIMELINE This issue was reported to the curl project on March 7, 2023. We contacted distros@openwall on March 13, 2023. curl 8.0.0 was released on March 20 2023, coordinated with the publication of this advisory.
CVE-2023-27535
CVE-2023-27535: FTP too eager connection reuse Project curl Security Advisory, March 20th 2023 VULNERABILITY libcurl would reuse a previously created FTP connection even when one or more options had been changed that could have made the effective user a very different one, thus leading to the doing the second transfer with wrong credentials. libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse if one of them matches the setup. However, several FTP settings were left out from the configuration match checks, making them match too easily. The settings in questions are CURLOPT_FTP_ACCOUNT, CURLOPT_FTP_ALTERNATIVE_TO_USER, CURLOPT_FTP_SSL_CCC and CURLOPT_USE_SSL level. We are not aware of any exploit of this flaw. INFO CVE-2023-27535 was introduced in commit 177dbc7be07125582, shipped in curl 7.13.0. CWE-305: Authentication Bypass by Primary Weakness Severity: Medium AFFECTED VERSIONS Affected versions: curl 7.13.0 to and including 7.88.1 Not affected versions: curl < 7.13.0 and curl >= 8.0.0 libcurl is used by many applications, but not always advertised as such! THE SOLUTION A fix for CVE-2023-27535 RECOMMENDATIONS A - Upgrade curl to version 8.0.0 B - Apply the patch to your local version TIMELINE This issue was reported to the curl project on March 5, 2023. We contacted distros@openwall on March 13, 2023. curl 8.0.0 was released on March 20 2023, coordinated with the publication of this advisory.
CVE-2023-27534
CVE-2023-27534: SFTP path ~ resolving discrepancy Project curl Security Advisory, March 20th 2023 VULNERABILITY curl supports SFTP transfers. curl's SFTP implementation offers a special feature in the path component of URLs: a tilde (~) character as the first path element in the path to denotes a path relative to the user's home directory. This is supported because of wording in the once proposed to-become RFC draft that was to dictate how SFTP URLs work. Due to a bug, the handling of the tilde in SFTP path did however not only replace it when it is used stand-alone as the first path element but also wrongly when used as a mere prefix in the first element. Using a path like /~2/foo when accessing a server using the user dan (with home directory /home/dan) would then quite surprisingly access the file /home/dan2/foo. This can be taken advantage of to circumvent filtering or worse. We are not aware of any exploit of this flaw. INFO CVE-2023-27534 was introduced in commit ba6f20a244, shipped in curl 7.18.0. CWE-22: Improper Limitation of a Pathname to a Restricted Directory Severity: Low AFFECTED VERSIONS Affected versions: curl 7.18.0 to and including 7.88.1 Not affected versions: curl < 7.18.0 and curl >= 8.0.0 libcurl is used by many applications, but not always advertised as such! THE SOLUTION A fix for CVE-2023-27534 RECOMMENDATIONS A - Upgrade curl to version 8.0.0 B - Apply the patch to your local version C - Avoid using tilde in SFTP URL paths. TIMELINE This issue was reported to the curl project on March 5, 2023. We contacted distros@openwall on March 13, 2023. curl 8.0.0 was released on March 20 2023, coordinated with the publication of this advisory.
CVE-2023-27533
CVE-2023-27533: TELNET option IAC injection Project curl Security Advisory, March 20th 2023 VULNERABILITY curl supports communicating using the TELNET protocol and as a part of this it offers users to pass on user name and "telnet options" for the server negotiation. Due to lack of proper input scrubbing and without it being the documented functionality, curl would pass on user name and telnet options to the server as provided. This could allow users to pass in carefully crafted content that pass on content or do option negotiation without the application intending to do so. In particular if an application for example allows users to provide the data or parts of the data. We are not aware of any exploit of this flaw. INFO CVE-2023-27533 was introduced in commit a1d6ad26100bc493c7, shipped in curl 7.7. CWE-75: Failure to Sanitize Special Elements into a Different Plane Severity: Low AFFECTED VERSIONS Affected versions: curl 7.7 to and including 7.88.1 Not affected versions: curl < 7.7 and curl >= 8.0.0 libcurl is used by many applications, but not always advertised as such! THE SOLUTION Only accept ASCII user name and telnet options. A fix for CVE-2023-27533 RECOMMENDATIONS A - Upgrade curl to version 8.0.0 B - Apply the patch to your local version C - Do your own TELNET user name or option input filtering TIMELINE This issue was reported to the curl project on March 3, 2023. We contacted distros@openwall on March 13, 2023. curl 8.0.0 was released on March 20 2023, coordinated with the publication of this advisory.
comment:9 by , 2 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Fixed at 1f0e7ec432bb9b31a1ae6286fa6f54fece9507b0
Issued SA-11.3-007
Note:
See TracTickets
for help on using tickets.
With gssapi and libssh2 enabled: