{"id":25670,"date":"2025-11-11T10:45:42","date_gmt":"2025-11-11T10:45:42","guid":{"rendered":"http:\/\/localhost\/?p=25670"},"modified":"2025-11-11T10:45:42","modified_gmt":"2025-11-11T10:45:42","slug":"curl-libcurl-ftp-path-normalization-flaw-allows-decoded-2e2e-cwd-and-directory-escape-path-traversal","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=25670","title":{"rendered":"curl: libcurl FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2025-11-11T16:25:46&#8243;,&#8221;description&#8221;:&#8221;ftp_parse_url_path in lib\/ftp.c URL-decodes FTP path segments (e.g. %2e%2e) and then splits the decoded path into components using an ad-hoc loop that skips empty components produced by \/\/. The code does not perform canonical path normalization (no stack-based handling of . or ..). As a result, encoded traversal sequences such as %2e%2e decode to .. and may become normal path components that cause libcurl to issue CWD .. commands to the remote FTP server. This enables client-driven directory traversal in contexts where an attacker can supply an FTP URL to an application using libcurl.\\n\\nAI usage statement: I used an AI assistant to help draft and structure this report. All technical claims, tests and trace excerpts were executed and verified manually by me in a local test environment. I did not use AI to generate exploit code.\\n\\nAffected version\\n\\nPlease include the exact output of curl -V here when submitting.\\n(Example placeholder \u2014 replace with your exact output):\\n\\ncurl 8.4.0 (x86_64-pc-linux-gnu) libcurl\/8.4.0 OpenSSL\/1.1.1k zlib\/1.2.11\\n\\n\\nTest environment used for verification: Debian-based VM (local build or system curl), pyftpdlib test FTP server (pyftpdlib 2.1.0 used in my tests).\\n\\nSteps To Reproduce:\\n\\nOnly run these steps in an environment you control.\\n\\nPrepare local test directories and files:\\n\\nmkdir -p ~\/curl-test\/dir ~\/curl-test\/testdir\\necho \\&#8221;INSIDE\\&#8221; \\u003e ~\/curl-test\/dir\/inside.txt\\necho \\&#8221;OUTSIDE\\&#8221; \\u003e ~\/curl-test\/testdir\/outside.txt\\ncd ~\/curl-test\\n\\n\\nStart a simple local FTP server in that directory (example):\\n\\n# If not installed: python3 -m pip install pyftpdlib\\npython3 -m pyftpdlib -w\\n# Server serves current directory on 127.0.0.1:2121 (or default FTP port)\\n\\n\\nRun curl with trace enabled using an URL that contains an encoded traversal adjacent to repeated slashes:\\n\\ncurl &#8211;trace-ascii curl_trace.txt -v \\&#8221;ftp:\/\/127.0.0.1:2121\/dir\/\/%2e%2e\/testdir\\&#8221; 2\\u003e\\u00261 | tee curl_stdout.txt\\n\\n\\nInspect curl_trace.txt for the CWD commands. Example trace excerpt (observed locally):\\n\\n\\u003e CWD dir\\n\\u003c 250 \\&#8221;\/dir\\&#8221; is the current directory.\\n\\u003e CWD ..\\n\\u003c 250 \\&#8221;\/\\&#8221; is the current directory.\\n\\n\\nThis shows that %2e%2e was decoded to .. and libcurl attempted CWD &#8230;\\n\\nSupporting Material\/References:\\n\\nAll evidence provided inline as text (no attachments).\\n\\nTrace excerpt (text-only):\\n\\n\\u003e CWD dir\\n\\u003c 250 \\&#8221;\/dir\\&#8221; is the current directory.\\n\\u003e CWD ..\\n\\u003c 250 \\&#8221;\/\\&#8221; is the current directory.\\n\\n\\nRelevant local code pointers (text-only):\\n\\n\/* url-decode ftp path before further evaluation *\/\\nresult = Curl_urldecode(ftp-\\u003epath, 0, \\u0026ftpc-\\u003erawpath, \\u0026pathLen, REJECT_CTRL);\\n\\n\/* parse the URL path into separate path components *\/\\nwhile(dirAlloc&#8211;) {\\n  const char *spos = strchr(curPos, &#8216;\/&#8217;);\\n  size_t clen = spos &#8211; curPos;\\n  if(!clen \\u0026\\u0026 (ftpc-\\u003edirdepth == 0))\\n    ++clen;\\n  \/* we skip empty path components, like \\&#8221;x\/\/y\\&#8221; &#8230; *\/\\n  if(clen) {\\n    ftpc-\\u003edirs[ftpc-\\u003edirdepth].start = (int)(curPos &#8211; rawPath);\\n    ftpc-\\u003edirs[ftpc-\\u003edirdepth].len = (int)clen;\\n    ftpc-\\u003edirdepth++;\\n  }\\n  curPos = spos + 1;\\n}\\n\\n\/* sink: later used to send CWD *\/\\nresult = Curl_pp_sendf(data, \\u0026ftpc-\\u003epp, \\&#8221;CWD %s\\&#8221;, ftpc-\\u003eentrypath);\\n\\n## Impact\\n\\nPath Traversal (CWE-22) \u2014 Improper Input Validation (CWE-20)\\n\\nOverview:\\nBecause libcurl decodes URL-encoded path segments before canonicalization and then accepts decoded .. components as valid path elements, an attacker who controls an FTP URL may cause libcurl to issue CWD .. commands. This client-side behavior can be leveraged in realistic attack scenarios where libcurl is used by applications for automated FTP fetches.\\n\\nRealistic attack scenarios \\u0026 consequences:\\n\\nRemote file disclosure (Confidentiality): An attacker can craft a URL that causes libcurl to traverse to parent directories and attempt RETR on files outside the intended directory. In automated downloaders, update fetchers, backup\/restore scripts, or content importers that accept external FTP URLs, this may expose sensitive configuration files, credentials, or private data.\\n\\nExample: ftp:\/\/victim-server\/uploads\/%2e%2e\/private\/secret.cfg may lead the client to CWD uploads \u2192 CWD .. \u2192 RETR private\/secret.cfg depending on server behavior and client usage.\\n\\nBypass of client-side filters (Integrity\/Authorization): Applications that perform naive sanitization (e.g., simply searching for literal ..) can be bypassed by sending encoded equivalents (%2e%2e) because decoding occurs before canonicalization.\\n\\nSupply chain \\u0026 automation abuse: Software that automatically processes FTP URLs (e.g., CI\/CD, synchronization tools) could be tricked into fetching or overwriting files outside the permitted area, leading to broader system compromise or corruption.\\n\\nVariance by server implementation: The concrete impact depends on the FTP server\u2019s path handling. Some servers may ignore .., some may enforce chroot-like restrictions, and some may honor CWD &#8230; If the server honors CWD .. and the client has permissions to access files above the target directory, the impact is higher.\\n\\nExploitability \/ Preconditions:\\n\\nAttacker must be able to supply an FTP URL that is processed by an application using libcurl (this is common in automated workflows or user-provided URL features).\\n\\nNo special authentication is required in the core logic: if the client is unauthenticated and the server allows directory changes, it may be exploitable unauthenticated; otherwise, impact is limited by authentication and server configuration.\\n\\nSeverity \\u0026 CVSS guidance (estimate):\\n\\nSuggested severity: High.\\n\\nCVSS example vector (estimate for remote readability, no privileges, no user interaction):\\nAV:N\/AC:L\/PR:N\/UI:N\/S:U\/C:H\/I:L\/A:N \u2192 CVSS ~7.x\\n(Adjust upward if unauthenticated access to highly sensitive data is possible.)\\n\\nWhy this is significant:\\nThis is not merely a formatting bug \u2014 it is a parsing\/normalization logic gap that can be reliably triggered by encoded input. Many applications implicitly trust libcurl for correct path handling; if libcurl issues unintended CWD\/RETR commands based on crafted URLs, confidential files could be exposed or automation workflows abused.\\n\\nSuggested remediation summary (recap):\\n\\nPerform canonical path normalization after URL-decoding and before splitting into path components (stack-based . \/ .. handling, collapse \/\/).\\n\\nReject paths that attempt to traverse above the allowed root for absolute paths (return an error instead of sending CWD).\\n\\nAdd unit tests for encoded traversal cases and mixed permutations.&#8221;,&#8221;published&#8221;:&#8221;2025-11-10T19:43:52&#8243;,&#8221;modified&#8221;:&#8221;2025-11-11T16:16:19&#8243;,&#8221;type&#8221;:&#8221;hackerone&#8221;,&#8221;title&#8221;:&#8221;curl: libcurl FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;H1:3418861&#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\/3418861&#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;2025-11-11T16:25:46&#8243;,&#8221;description&#8221;:&#8221;ftp_parse_url_path in lib\/ftp.c URL-decodes FTP path segments (e.g. %2e%2e) and then splits the decoded path into components using an ad-hoc loop that skips empty components&#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-25670","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 FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861 - 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=25670\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"curl: libcurl FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2025-11-11T16:25:46&#8243;,&#8221;description&#8221;:&#8221;ftp_parse_url_path in lib\/ftp.c URL-decodes FTP path segments (e.g. %2e%2e) and then splits the decoded path into components using an ad-hoc loop that skips empty components...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=25670\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-11T10:45:42+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=25670#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=25670\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"curl: libcurl FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861\",\"datePublished\":\"2025-11-11T10:45:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=25670\"},\"wordCount\":1163,\"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=25670#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=25670\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=25670\",\"name\":\"curl: libcurl FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2025-11-11T10:45:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=25670#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=25670\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=25670#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"curl: libcurl FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861\"}]},{\"@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 FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861 - 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=25670","og_locale":"en_US","og_type":"article","og_title":"curl: libcurl FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2025-11-11T16:25:46&#8243;,&#8221;description&#8221;:&#8221;ftp_parse_url_path in lib\/ftp.c URL-decodes FTP path segments (e.g. %2e%2e) and then splits the decoded path into components using an ad-hoc loop that skips empty components...","og_url":"https:\/\/zero.redgem.net\/?p=25670","og_site_name":"zero redgem","article_published_time":"2025-11-11T10:45:42+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=25670#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=25670"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"curl: libcurl FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861","datePublished":"2025-11-11T10:45:42+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=25670"},"wordCount":1163,"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=25670#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=25670","url":"https:\/\/zero.redgem.net\/?p=25670","name":"curl: libcurl FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2025-11-11T10:45:42+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=25670#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=25670"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=25670#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"curl: libcurl FTP path normalization flaw allows decoded %2e%2e \u2192 CWD .. and directory escape (Path Traversal, CWE-22)_H1:3418861"}]},{"@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\/25670","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=25670"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/25670\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}