<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Peakhour.IO - Email Security</title><link href="https://www.peakhour.io/" rel="alternate"></link><link href="https://www.peakhour.io/feeds/tag/email-security.atom.xml" rel="self"></link><id>https://www.peakhour.io/</id><updated>2026-10-22T00:00:00+11:00</updated><entry><title>From an exposed .env file to an SMTP login in 22 seconds</title><link href="https://www.peakhour.io/blog/env-file-smtp-credential-reuse/" rel="alternate"></link><published>2026-10-22T00:00:00+11:00</published><updated>2026-10-22T00:00:00+11:00</updated><author><name>AC</name></author><id>tag:www.peakhour.io,2026-10-22:/blog/env-file-smtp-credential-reuse/</id><summary type="html">&lt;p&gt;One source fetched three exposed .env decoys, then presented each exact password to SMTP within 22 seconds. Here is the evidence and what to protect.&lt;/p&gt;</summary><content type="html">&lt;p&gt;A web request for &lt;code&gt;/.env&lt;/code&gt; can expose credentials an application uses to connect to other services. One of our honeypots recorded a clear example on 19 October 2026. Source &lt;code&gt;45.138.12.68&lt;/code&gt; requested three environment-file paths, then presented the matching decoy passwords to our SMTP service. It used the password from &lt;code&gt;/.env&lt;/code&gt; 21.58 seconds after requesting that file.&lt;/p&gt;
&lt;h2&gt;Three disclosures, three SMTP attempts&lt;/h2&gt;
&lt;p&gt;Each file contained a different decoy SMTP password. The client then used each password in a separate SMTP login attempt. All times below are UTC on 19 October 2026, corresponding to 02:32 AEDT on 20 October.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/.env&lt;/code&gt; at 15:32:19.841 → SMTP AUTH at 15:32:41.421, 21.58 seconds later.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/.env.backup&lt;/code&gt; at 15:32:27.878 → SMTP AUTH at 15:32:44.928, 17.05 seconds later.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/.env.bak&lt;/code&gt; at 15:32:28.569 → SMTP AUTH at 15:32:46.176, 17.61 seconds later.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The exact password matches connected each file request to the later SMTP authentication. Our SMTP honeypot simulated successful authentication. The client sent EHLO, upgraded the connection with STARTTLS, sent EHLO again, then used AUTH to test the credentials. It followed with MAIL to begin a mail transaction. RSET was the last recorded command, resetting that transaction. We recorded no recipient or message data.&lt;/p&gt;
&lt;p&gt;The sequence is consistent with an automated credential validator: find configuration files, extract credentials and check them against another service. During the same burst, the source also requested &lt;code&gt;/.env.anthropic&lt;/code&gt;, &lt;code&gt;/.env.openai&lt;/code&gt; and &lt;code&gt;/.git/config&lt;/code&gt;, extending its search to AI-service configuration and repository metadata.&lt;/p&gt;
&lt;p&gt;An exposed environment file can matter even when the site itself has no login page. Configuration often contains credentials for databases, mail systems, APIs or deployment tools. A successful file response can give a scanner material to test against services that are reachable separately.&lt;/p&gt;
&lt;h2&gt;Fingerprints across web and mail&lt;/h2&gt;
&lt;p&gt;The observed HTTP connection used TCP signature &lt;code&gt;1460|7|1|1|64240|0x02&lt;/code&gt; and TLS JA3 &lt;code&gt;a15e24f40a90d5cba676dfe012ff2d4a&lt;/code&gt;. The HTTP user-agent claimed Chrome 124 on Windows. The three SMTP connections had the same TCP signature and a different JA3, &lt;code&gt;d39e1be3241d516b1f714bd47c2bc968&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The different TLS profiles make sense across separate protocols. The exact credential matches and issuer links establish the web-to-mail sequence; the fingerprints add context about each connection. Our guide to &lt;a href="/blog/fingerprint-is-a-cohort-not-a-client/"&gt;grouping traffic with network fingerprints&lt;/a&gt; explains how to use these values alongside other evidence. For broader patterns, see &lt;a href="/blog/recognising-vulnerability-scanners/"&gt;how to recognise vulnerability scanners across changing IP addresses&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Reduce exposure and improve detection&lt;/h2&gt;
&lt;p&gt;Keep secrets outside web-accessible directories. Use origin access rules and WAF rules to block requests for environment files, backup copies and repository metadata. OWASP's guide to &lt;a href="https://wstg.owasp.org/v4.2/4-Web_Application_Security_Testing/02-Configuration_and_Deployment_Management_Testing/04-Review_Old_Backup_and_Unreferenced_Files_for_Sensitive_Information/"&gt;reviewing old and unreferenced files&lt;/a&gt; describes how backup copies can expose credentials and source. Check the origin as well as the edge, since a request can reach the application through a different route than expected. Review access logs for repeated requests to common secret-file paths and correlate them with authentication events on services that use those credentials.&lt;/p&gt;
&lt;p&gt;When a real secret may have been exposed, revoke or rotate it and review its use across every service where it was valid. OWASP's &lt;a href="https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html"&gt;Secrets Management Cheat Sheet&lt;/a&gt; recommends removing exposed secrets and rotating them. For mail, correlate the affected account, source IP, AUTH and MAIL results, connection timing and follow-up commands. Keep password values out of production logs. Preserve recipient, message-submission and delivery records so you can establish how far each mail session progressed. Our guide to &lt;a href="/blog/how-to-tune-your-waf/"&gt;tuning a WAF&lt;/a&gt; covers practical request controls and review.&lt;/p&gt;</content><category term="Security"></category><category term="Credential Exposure"></category><category term="Email Security"></category><category term="Threat Detection"></category><category term="WAF"></category></entry></feed>