15533 matches found
Ruby on Rails: Action Text to_markdown: <code>/<pre> content escapes its delimiter, letting a stored body inject arbitrary Markdown
Summary ActionText::Contenttomarkdown escapes text nodes so that a stored rich text body cannot turn into Markdown syntax. Text whose immediate parent is or is exempt from that escaping MarkdownConversion::SKIPESCAPINGPARENTS and is instead kept inert by the delimiter its visitor wraps around it...
curl: HTTP Digest nonce reused across an https→http scheme change on the same handle
Hi all, Last one from my side. Looks like https://hackerone.com/reports/3793260 was not patched completely correctly, and libcurl emit a live Authorization: Digest response computed from a nonce/realm it only ever received over TLS preemptively over plaintext HTTP, on a reused easy handle that...
curl: Apple SecTrust fallback ignores CURLOPT_CRLFILE, letting a revoked cert pass
When libcurl is built with USEAPPLESECTRUST and the native Apple trust store is in use, a certificate that OpenSSL/GnuTLS rejects because it is on the operator's CURLOPTCRLFILE list is re-checked by Apple's SecTrust API instead, and SecTrust is never told about that CRL file at all. The bug...
curl: IMAP connection reuse runs requests in the wrong case-sensitive mailbox
When libcurl reuses an authenticated IMAP connection, lib/imap.c:2071-2089 uses curlstrequal to decide whether the requested mailbox is already selected. RFC 9051 section 5.1 requires clients to work with servers where non-INBOX mailbox names are case-sensitive, while only INBOX is guaranteed to ...
curl: 55: Heap-buffer-overflow read in `curl_formadd_ccsid()` with binary form data
Summary curlformaddccsid in projects/OS400/ccsidcurl.c performs a heap-buffer-overflow read when CURLFORMCONTENTTYPE appears before an explicit length CURLFORMCONTENTLEN / CURLFORMCONTENTSLENGTH for binary CURLFORMCOPYCONTENTS data containing embedded NUL bytes. The overread bytes are copied into...
curl: 50: CMake `HTTP_ONLY` does not disable SSH backends — SCP and SFTP remain usable
Summary The CMake HTTPONLY=ON option is documented as "Disable all protocols except HTTP" CMakeLists.txt:538, but the implementation CMakeLists.txt:541-557 only sets CURLDISABLE flags for non-SSH protocols. It does not disable CURLUSELIBSSH2 or CURLUSELIBSSH. Since CURLUSELIBSSH2 defaults to ON, ...
curl: 57: Heap out-of-bounds read in `curl_easy_escape_ccsid()` / `curl_easy_unescape_ccsid()`
Summary curleasyescapeccsid and curleasyunescapeccsid in projects/OS400/ccsidcurl.c discard the converted byte count returned by dynconvert and pass 0 to the downstream curleasyescape / curleasyunescape. When the caller supplies a positive explicit length with non-NUL-terminated input, dynconvert...
curl: 54: Rejected HTTP/2 push destroys MIME callback state still used by parent (use-after-free)
Summary pushpromise in lib/http2.c duplicates the parent easy handle before validating the pushed URL. When validation fails e.g. unsupported scheme, discardnewhandle destroys the duplicate. For callback-backed MIME uploads, Curlmimeduppart copies the same readfunc, freefunc, and arg pointer, so...
curl: 49: Cookie-jar save transfers group access to a different GID
Summary Curlfopen copies the old cookie jar's permission bits onto a newly created temp file, but the temp file may receive a different GID the process's primary group instead of the old file's group. After rename, group-permission bits that were intended for one group now authorize a different...
curl: 42: `VMS_STS` macro typo (`< 3` vs `<< 3`) turns curl failures into successful OpenVMS conditions
Summary VMSSTS in src/toolvms.h line 46 uses a comparison 3 where a left-shift 3 is intended. This causes VMSSTSHIDE to evaluate to 0x10000001 instead of 0x10000000, setting bit 0 the OpenVMS success bit. When curl runs under DCL with --silent and without --show-error, the mask is ORed into the...
curl: 41: `main_checkfds()` pipe reuse leaks proxy credentials into HTTPS upload body
Summary When curl is launched with stdin fd 0 and stderr fd 2 closed, maincheckfds in src/toolmain.c can assign opposite ends of the same pipe to fd 0 and fd 2. In verbose mode with a stdin-based upload through an authenticated proxy, the Proxy-Authorization header written to stderr becomes...
curl: 22: FTP wildcard matching decodes server-provided filenames, enabling directory traversal
Summary When CURLOPTWILDCARDMATCH is enabled, libcurl concatenates the server-provided LIST filename directly onto the wildcard path and then URL-decodes the combined string. A filename containing percent-encoded path separators e.g. %2e%2e%2fsecret.txt is decoded into ../secret.txt, causing...
curl: 18: Explicit IPv6 proxy zone ID silently ignored — proxy credentials sent to wrong interface
Explicit IPv6 proxy zone ID silently ignored — proxy credentials sent to wrong interface Summary When a proxy is configured with a literal link-local IPv6 address and an explicit zone ID e.g. http://fe80::1%25eth0:8080, curl parses and stores the zone correctly but never applies it to the socket...
curl: 11: `CURLOPT_FORBID_REUSE` silently lost on multiplexed HTTP/2 connection when the forbidding transfer finishes first
Summary When HTTP/2 transfers share a multiplexed connection, CURLOPTFORBIDREUSE set by a transfer that completes before the other active streams is silently discarded. The connection survives into the idle pool and can be reused by a subsequent transfer. This breaks the mitigation documented in...
curl: 08: CVE-2026-7009 fix incomplete for AWS-LC: `--cert-status` bypass on SecTrust path
Summary The fix for CVE-2026-7009 commit 51905671e0 does not cover AWS-LC. In osslappleverify in lib/vtls/openssl.c, a missing OCSP staple is detected only when SSLgettlsextstatusocspresp returns a negative length. OpenSSL returns -1 for absence, but AWS-LC returns 0 with a NULL output pointer. O...
curl: 07: GnuTLS 0-RTT early data bypasses file-backed public-key pin verification
GnuTLS 0-RTT early data bypasses file-backed public-key pin verification Summary When CURLSSLOPTEARLYDATA is enabled and CURLOPTPINNEDPUBLICKEY references a file path, replacing that file's contents between connections does not invalidate the TLS session cache. On the next connection, curl sends...
curl: 06: Incomplete fix for CVE-2026-7009: GCC/SecTrust builds silently discard stapled OCSP responses
Summary Curlvtlsappleverify in lib/vtls/apple.c passes the stapled OCSP response to SecTrustSetOCSPResponse only when both HAVEBUILTINAVAILABLE and SUPPORTSSecOCSP are defined. When HAVEBUILTINAVAILABLE is absent, the OCSP buffer is silently discarded. GCC does not support builtinavailable, so th...
curl: CVE-2026-82208: wolfSSL CA-cache hit overrides callback
Summary With the wolfSSL backend, when CA caching is enabled and an CURLOPTSSLCTXFUNCTION callback replaces the trust store, curl can silently reinstall the cached store after the callback returns. A certificate trusted by the cached store but rejected by the callback-selected store is then...
curl: CVE-2026-80255: secure cookie attribute bypass with tab
Summary A Set-Cookie header using HTAB horizontal tab instead of SPACE before the Secure attribute — e.g. Set-Cookie: sid=SECRET;\tSecure — causes curl to store the cookie without its Secure flag. The cookie is then sent over plaintext HTTP on subsequent requests to the same host. The...
curl: CVE-2026-82209: domain-scoped PSL domain cookie
Summary When libpsl is enabled and a response host is itself a public suffix e.g. github.io, a Set-Cookie header whose Domain attribute exactly equals that host is accepted by psliscookiedomainacceptable but stored with tailmatch = TRUE. RFC 6265 §5.3 requires this exact-match case to produce a...
curl: 12: SASL DIGEST-MD5 does not validate the server's `rspauth` proof
Summary curl never verifies the rspauth value the server sends during SASL DIGEST-MD5 authentication. In Curlsaslcontinue lib/curlsasl.c, the SASLDIGESTMD5RESP handler unconditionally sends an empty acknowledgment without reading or checking the server's continuation data. Authentication then...
curl: 46: `--libcurl` output carries `--insecure` across `--next` boundaries
Summary When --libcurl generates C source for a command that uses --next to separate multiple operations, local options from earlier operations leak into later ones. Specifically, if the first operation uses --insecure and the second does not, the generated program silently skips TLS certificate...
curl: 43: HTTP proxy CONNECT header chooses the `-OJ` filename after a redirect
Summary When curl follows an HTTPS redirect through an HTTP CONNECT proxy, a stale response code lets the proxy's CONNECT response Content-Disposition header control the local output filename. With --location --remote-name --remote-header-name, the proxy-provided filename is used for the...
curl: 34: `curl_mprintf` reads `double` for documented `long double` conversions — uninitialized value disclosure
Summary docs/libcurl/curlmprintf.md documents that the L length modifier makes floating-point conversions %f, %e, %E, %g, %G accept a long double argument. The implementation in lib/mprintf.c recognizes L and sets FLAGSLONGDOUBLE, but the conversion switch %f/%e/%E/%g/%G unconditionally selects...
curl: 36: HTTP upload resume offset consumed twice after early 307/308 redirect
Summary A read-backed HTTP POST using CURLOPTRESUMEFROMLARGE with a non-seekable source silently uploads the wrong data when the server returns a 307 or 308 redirect before the request body is sent. curleasyperform returns CURLEOK, so the caller cannot detect the substitution. The bug is in...
curl: 33: CONNECT_ONLY raw I/O selects wrong connection after CURLOPT_SHARE detach (incomplete fix for CVE-2020-8231)
Summary After a completed CURLOPTCONNECTONLY transfer, detaching the shared connection pool via curleasysetopteasy, CURLOPTSHARE, NULL causes curleasysend / curleasyrecv to silently operate on an unrelated connection from a different pool. Data intended for server B is sent to server A, and A's...
curl: 27: IMAP custom FETCH listing classification skips literal boundaries, enabling response desynchronization
Summary iscustomfetchlistingmatch in lib/imap.c classifies any custom FETCH whose sequence set contains : or , as a "listing." For that classification, imapstatelistsearchresp skips literal detection entirely. The ping-pong line parser then scans the server-declared literal body as IMAP protocol...
curl: 29: CURLOPT_ISSUERCERT accepts a different-key certificate when issuer metadata collides
Summary osslcheckissuer in lib/vtls/openssl.c uses X509checkissued to implement CURLOPTISSUERCERT. This OpenSSL function checks metadata subject/issuer names, key identifiers, algorithm compatibility, key usage but does not verify the certificate's cryptographic signature. A certificate with...
curl: 28: HTTP/3 UDP path ignores CURL_SOCKOPT_ALREADY_CONNECTED, reconnects callback-provided socket
Summary When CURLOPTSOCKOPTFUNCTION returns CURLSOCKOPTALREADYCONNECTED, the HTTP/3 QUIC UDP code path ignores it and calls connect anyway, silently reassociating the application-provided socket to a different peer. The TCP path has the correct check. This violates the documented callback contrac...
curl: Stacked --proto modifiers leave denied protocol enabled
Summary proto2num line 431–447 consumes only one leading modifier character via a switch statement. The documentation says entries may be "prefixed by zero or more modifiers." Before commit 86ac471d, a loop consumed all modifiers. The replacement switch reads only the first character. --proto...
curl: --etag-save - truncates append-redirected stdout
Summary saveetag line 267–273 calls fileno, fstat, ftruncatefd, 0 whenever the underlying fd is a regular file. It does not check OutStruct.regularfile, which is FALSE for stdout even when shell-redirected to a file. When --etag-save - is used with append redirection , an HTTP 2xx/3xx response...
curl: CVE-2026-80256: wcurl backslash bypass
A vulnerability was discovered in the wcurl script of the curl project. The vulnerability allowed an attacker-controlled URL to create a new file outside the directory chosen by a Windows user, subject to the user's filesystem permissions and the target not already existing. The vulnerability was...
curl: CVE-2026-80231: native CA store conn reuse
Summary nativecastore is in struct sslconfigdata line 73 of vtlsconfig.h, not sslprimaryconfig. matchsslprimaryconfig does not compare it. On macOS, Curlssleasyconfigcomplete line 258 auto-sets nativecastore = TRUE when no custom CA is configured — without modifying ssloptions. When CURLCABUNDLE ...
curl: CVE-2026-80230: OpenSSL pinning bypass
Summary Curlosslcheckpeercert line 4795 calls SSLget1peercertificate. When no peer certificate is available — as with anonymous cipher suites like AECDH-AES128-SHA — the function returns NULL. The subsequent guard at lines 4798–4799 checks !connconfig-verifypeer || connconfig-verifyhost; when bot...
curl: CVE-2026-80229: OpenSSL provider use-after-free
Summary When CURLOPTSSLENGINE is set e.g. "default" on OpenSSL 3.x, osslsetprovider line 1791 allocates a per-handle OSSLLIBCTX and stores it in data-state.libctx. During TLS connection setup, SSLCTXnewex line 3750 receives this library context and embeds a pointer to it inside the newly created...
curl: Unbound cross-peer HTTP Digest challenge state
Summary When libcurl parses an HTTP Digest WWW-Authenticate challenge, it stores the realm, nonce, algorithm, and qop into the easy handle's state.digest — but does not bind that state to the peer that sent it. If the challenge is parsed but never used for output e.g. because Basic or Bearer was...
curl: ARG_CLEAR credential scrubbing wipes only UTF-8 copies on Windows Unicode builds
cleanarg operates on char str, which is the UTF-8 copy allocated by converttchartoUTF8. It has no reference to the original wchart argv element. c / toolgetparam.c:632 / static void cleanargchar str / now that getstr has copied the contents of nextarg, wipe the next argument out so that the...
curl: curl_share TOCTOU > RCE via Curl_llist _dtor Function Pointer Hijack
Summary: CURLSH the curl share handle allows multiple easy handles to share state — cookies, DNS cache, SSL sessions, connection cache — across threads. The share is protected by optional user-supplied mutex callbacks CURLSHOPTLOCKFUNC / CURLSHOPTUNLOCKFUNC. When a caller invokes curlsharesetopts...
curl: TLS session cache case-folds CA paths and bypasses the active trust profile
curl 8.21.0 case-folds the entire TLS session-cache peer key, so two distinct CA files whose Unix paths differ only by case can share a TLS session ticket. At lib/vtls/vtlsscache.c:723, curlstrequal compares keys that include case-sensitive CA, CRL, and issuer paths, even though...
curl: wolfSSL backend disables hostname verification when CURLOPT_SSL_VERIFYPEER is 0
Summary When curl is built against wolfSSL, setting CURLOPTSSLVERIFYPEER=0 causes a hostname-mismatched certificate to be accepted even though CURLOPTSSLVERIFYHOST remains at its default enabled setting. I built wolfSSL from source, built curl against it, and connected to a TLS server presenting ...
curl: RTSP CRLF injection in libcurl allows CURLOPT_RTSP_* values to inject commands into independent sessions
Summary libcurl's RTSP code interpolates the values of CURLOPTRTSPSTREAMURI, CURLOPTRTSPTRANSPORT, and CURLOPTRTSPSESSIONID directly into the RTSP request text with no check for embedded CR/LF, so a value containing \r\n splits one intended RTSP operation into multiple independent RTSP requests o...
curl: libcurl Digest/NTLM authentication ignores an explicit Authorization header
Summary When an application sets an explicit Authorization header via CURLOPTHTTPHEADER while libcurl also has credentials configured and HTTP Digest or NTLM authentication is selected/challenged, libcurl does not honor the application's header as a replacement — it sends its own internally...
curl: Domainless COOKIEFILE cookie leaks to unrelated IP-literal hosts
When curl loads a cookie file written as raw HTTP Set-Cookie: header lines and a line has no Domain attribute, the cookie is stored with co-domain == NULL, because a file import has no request-host to scope it to. On the send side, Curlcookiegetlist accepts any cookie in the bucket whose domain i...
curl: libcurl cache updates follow symlinks and truncate their targets
Summary: When curl updates an HSTS, Alt-Svc, or cookie cache, it opens the supplied path with "w" before validating it, so a symlink path can truncate the file it targets. Root cause: Curlfopen calls curlxfopenfilename, "w" before checking the path or creating the safe temporary file, and fopen...
curl: Windows SSPI connection-pool probe can reuse a connection under the wrong user
Summary : A fresh transfer can reuse a keep-alive connection authenticated under another Windows user because the SSPI isolation check trusts a connection ID that a health probe can set. Root cause : Curlcpoolconnseemshealthy calls Curlattachconnection, which sets data-state.recentconnid, while...
WordPress: Author → arbitrary file deletion anywhere on disk (site takeover) via `POST /wp/v2/media/<id>/finalize` poisoning `_wp_attachment_metadata`
A vulnerability was discovered in the WordPress media processing functionality. This vulnerability allowed an authenticated author to delete arbitrary files on the server. The vulnerability was caused by insufficient input validation in the finalizeitem function, which allowed an attacker to...
WordPress: Author → stored XSS in wp-admin: unescaped sub-size filename from attachment metadata breaks out of the `src` attribute in `get_media_item()`
A vulnerability was discovered in the WordPress media upload and finalize endpoints. An author could upload a crafted image with a malicious filename, which was then stored verbatim by the endpoint and rendered without proper escaping in the WordPress admin media library. This could allow the...
Myndr: Myndr CORS Misconfiguration
The CORS configuration on admin.myndr.net allowed any .myndr.net subdomain to read authenticated admin panel responses, including CSRF nonces and session data. This vulnerability could have been exploited to take over admin accounts...
Myndr: CORS Misconfiguration / Broken Access Control
A CORS misconfiguration was discovered on the admin panel that allowed any website hosted on a subdomain of the target organization to read authenticated admin responses, including CSRF nonces and session data. This vulnerability could have enabled full admin account takeover through a CSRF attac...
curl: CVE-2026-19931: Negotiate ambient user conn reuse
Summary On Windows with SSPI/Negotiate, curl 8.21.0 can reuse a connection authenticated with ambient credentials for a later request using different explicit credentials. In urlmatchauthnego, the credential comparison is skipped when conn-creds == NULL. This allows a connection authenticated as...