<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Lenny Zeltser</title><description>Builder of security products and programs. Teacher of those who run them. Cybersecurity executive, SANS Faculty Fellow, and creator of REMnux.</description><link>https://zeltser.com</link><language>en-us</language><atom:link href="https://zeltser.com/rss.xml" rel="self" type="application/rss+xml"/><item><title>A Report Template for Malware Analysis</title><link>https://zeltser.com/malware-analysis-report</link><guid isPermaLink="true">https://zeltser.com/malware-analysis-report</guid><description>A malware report is only as useful as readers&apos; ability to find in it what they need. This customizable template organizes the findings into a coherent structure, so a responder, a manager, or a fellow researcher can benefit from the analysis.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;A malware report is only as useful as readers&apos; ability to find in it what they need. This customizable template organizes the findings into a coherent structure, so a responder, a manager, or a fellow researcher can benefit from the analysis.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://zeltser.com/assets/malware-analysis-report-template.CWSpHzCL.jpg&quot; alt=&quot;Article illustration&quot; /&gt;&lt;/p&gt;&lt;p&gt;Malware analysis produces many insights about a sample, its capabilities, and detection opportunities. But communicating those details so others can act on them isn&apos;t easy. The malware analysis report template helps with that. It gives analysts a structured way to present what they found, from defender-actionable findings to the supporting analysis behind them.&lt;/p&gt;
&lt;h2&gt;Download the Template&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Download the template and make it your own.&lt;/strong&gt; It&apos;s available as &lt;a href=&quot;https://zeltser.com/media/archive/malware-analysis-report-template.md&quot;&gt;Markdown&lt;/a&gt; and &lt;a href=&quot;https://zeltser.com/media/archive/malware-analysis-report-template.docx&quot;&gt;Word&lt;/a&gt; files.&lt;/p&gt;
&lt;p&gt;You can also &lt;strong&gt;use my MCP server with your AI agent&lt;/strong&gt; to generate or improve malware analysis reports using this template and my guidance. It&apos;s designed to offer insights without receiving your sensitive data. To use it, add &lt;code&gt;https://website-mcp.zeltser.com/mcp&lt;/code&gt; to your AI agent&apos;s config.&lt;/p&gt;
&lt;p&gt;If you&apos;d rather build your own tooling around my guidance, you can also download &lt;a href=&quot;https://zeltser.com/media/docs/malware-analysis-writing-guidelines.yaml&quot;&gt;my insights as a YAML file&lt;/a&gt;, which your AI tool can use in a way that fits your needs.&lt;/p&gt;
&lt;h2&gt;How the Report Is Organized&lt;/h2&gt;
&lt;p&gt;The report template organizes its content so readers can quickly find what they need. For authors, it offers placeholders and guidance to capture, explain, and share their findings. The template works for the analysis of a single file and a chain of related artifacts.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Executive Summary:&lt;/strong&gt; A paragraph explaining what the sample is, how it gets in, and what it does.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sample Snapshot:&lt;/strong&gt; A quick-reference profile covering the malware family and confidence, key capabilities, target platform, the primary artifact, and the infection vector.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Malware Family Identification:&lt;/strong&gt; A structured record of the family the sample belongs to, the basis for that call (such as a YARA rule, string overlap, or code reuse), and the confidence level.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Component Inventory:&lt;/strong&gt; One row per file or artifact in the sample set, capturing role, file name, type, and notes, with a short flow description for multi-component samples.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Runtime Requirements:&lt;/strong&gt; What the sample needs to run, including OS dependencies (DLLs, registry keys, runtime versions) and ecosystem dependencies (permissions, manifest declarations, marketplace identifiers, abused APIs, etc.).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt; Where the sample and supporting data came from, such as internal telemetry, OSINT, or partner sharing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Capabilities:&lt;/strong&gt; Observed behaviors mapped to the &lt;a href=&quot;https://github.com/MBCProject/mbc-markdown&quot;&gt;Malware Behavior Catalog&lt;/a&gt;, including anti-analysis behaviors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Indicators of Compromise:&lt;/strong&gt; Indicators in a structured table covering hashes, IP addresses, domain names, cloud resources, network artifacts, and host artifacts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Analysis Details:&lt;/strong&gt; The supporting evidence behind the key findings, with subsections for automated, static properties, behavioral, memory, and code analysis.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;What We Don&apos;t Know:&lt;/strong&gt; What the analysis couldn&apos;t resolve, couldn&apos;t trigger, or couldn&apos;t verify.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Infection Vector (Optional):&lt;/strong&gt; How the sample reached the target, referencing &lt;a href=&quot;https://attack.mitre.org&quot;&gt;MITRE ATT&amp;amp;CK&lt;/a&gt; Initial Access techniques where applicable, with the distribution URL or source path when known.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Detection Engineering (Optional):&lt;/strong&gt; Detection logic that generalizes beyond the listed indicators, such as a &lt;a href=&quot;https://virustotal.github.io/yara/&quot;&gt;YARA&lt;/a&gt; rule keyed to the family. &lt;a href=&quot;https://sigmahq.io/&quot;&gt;Sigma&lt;/a&gt; and other SIEM or EDR rules are optional.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;About this Report:&lt;/strong&gt; The report metadata, including title, authorship, classification, follow-up contact, and a changelog.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Appendix: Analysis Environment:&lt;/strong&gt; The environment used for the analysis, such as &lt;a href=&quot;https://remnux.org&quot;&gt;REMnux&lt;/a&gt; or &lt;a href=&quot;https://github.com/mandiant/flare-vm&quot;&gt;FLARE VM&lt;/a&gt;, plus the sandbox configuration, etc., so other analysts can reproduce the work.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Appendix: Analysis Scripts (Optional):&lt;/strong&gt; Links to any config extractors, deobfuscation scripts, or notebooks used, so others can reproduce the findings.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Frameworks Behind the Template&lt;/h2&gt;
&lt;p&gt;The template incorporates established frameworks where they fit:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/MBCProject/mbc-markdown&quot;&gt;Malware Behavior Catalog&lt;/a&gt; is the practitioner-facing taxonomy for what malware does, and the Capabilities section maps the sample&apos;s behaviors to it. &lt;a href=&quot;https://maecproject.github.io/&quot;&gt;MAEC&lt;/a&gt; is the machine-readable sibling specification.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://attack.mitre.org&quot;&gt;MITRE ATT&amp;amp;CK&lt;/a&gt; names adversary techniques. The Infection Vector section references its Initial Access techniques, and the Capabilities section cites an ATT&amp;amp;CK technique in its Notes column when a behavior has no fitting MBC entry.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;David Bianco&apos;s &lt;a href=&quot;https://detect-respond.blogspot.com/2013/03/the-pyramid-of-pain.html&quot;&gt;Pyramid of Pain&lt;/a&gt; is a ranking of indicators by cost to the adversary. Hashes are trivial to change. Behavioral artifacts cost the adversary more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.dni.gov/files/documents/ICD/ICD-203.pdf&quot;&gt;ICD-203&lt;/a&gt; defines the high, moderate, and low confidence levels the report uses to rate its malware family identification.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Related Cybersecurity Templates&lt;/h2&gt;
&lt;p&gt;A malware analysis report describes the sample and its artifacts. Other templates help you respond to incidents involving the malware, investigate the threat actor, and understand the exposure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://zeltser.com/incident-response-report-template&quot;&gt;Incident response report template&lt;/a&gt;:&lt;/strong&gt; Use it when handling the incident that involves the malware sample.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://zeltser.com/cyber-threat-intel-report-template&quot;&gt;Cyber threat intelligence report template&lt;/a&gt;:&lt;/strong&gt; Use it when shifting from the sample to the actor or campaign behind it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://zeltser.com/high-profile-vulnerabilities&quot;&gt;Vulnerability investigation brief template&lt;/a&gt;:&lt;/strong&gt; Use it when the sample arrived through a malicious dependency, such as a backdoored open-source package, or through an unpatched vulnerability.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Templates for Cybersecurity Executive Briefings</title><link>https://zeltser.com/cyber-brief-templates-for-decision-makers</link><guid isPermaLink="true">https://zeltser.com/cyber-brief-templates-for-decision-makers</guid><description>In an effective executive brief, you lead with the bottom line and what a finding means for your organization. Use these four customizable templates to do exactly that across threat intel, vulnerabilities, incidents, and assessments.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;In an effective executive brief, you lead with the bottom line and what a finding means for your organization. Use these four customizable templates to do exactly that across threat intel, vulnerabilities, incidents, and assessments.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://zeltser.com/assets/cyber-brief-templates-for-decision-makers.B3dBR0D_.jpg&quot; alt=&quot;Article illustration&quot; /&gt;&lt;/p&gt;&lt;p&gt;We often update decision-makers about threat actor campaigns, celebrity vulnerabilities, security incidents, and the findings of a security assessment. The following templates for executive briefings structure the narrative into a short document that captures the details executives want to see. Customize and use them to enable informed decisions.&lt;/p&gt;
&lt;h2&gt;Customize and Use the Templates&lt;/h2&gt;
&lt;p&gt;I prepared the following templates for cybersecurity briefs based on my experience as a CISO and hands-on practitioner. Adjust them to the way your organization prefers to capture and communicate such details.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Brief&lt;/th&gt;
&lt;th&gt;What it covers&lt;/th&gt;
&lt;th&gt;When to use&lt;/th&gt;
&lt;th&gt;Download&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cyber Threat Intelligence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Threat actor or campaign analysis&lt;/td&gt;
&lt;td&gt;Use it to distill a &lt;a href=&quot;https://zeltser.com/cyber-threat-intel-report-template&quot;&gt;full CTI report&lt;/a&gt; for leaders, or to synthesize vendor and government reporting on an emerging threat.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://zeltser.com/media/archive/cyber-threat-intel-brief-template.md&quot;&gt;Markdown&lt;/a&gt;,&lt;br /&gt;&lt;a href=&quot;https://zeltser.com/media/archive/cyber-threat-intel-brief-template.docx&quot;&gt;Word&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Vulnerability Investigation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Celebrity vulnerability assessment&lt;/td&gt;
&lt;td&gt;Use it when a vendor or government advisory discusses a vulnerability your organization needs to evaluate. Base it on the details available about the issue and your organization&apos;s exposure to it.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://zeltser.com/media/archive/vulnerability-investigation-brief-template.md&quot;&gt;Markdown&lt;/a&gt;,&lt;br /&gt;&lt;a href=&quot;https://zeltser.com/media/archive/vulnerability-investigation-brief-template.docx&quot;&gt;Word&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Incident Response&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cybersecurity incident update&lt;/td&gt;
&lt;td&gt;Use it during an incident, after containment, or for an incident too small for a full report. Distill from a &lt;a href=&quot;https://zeltser.com/incident-response-report-template&quot;&gt;full IR report&lt;/a&gt;, or use the brief as your working document.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://zeltser.com/media/archive/incident-response-brief-template.md&quot;&gt;Markdown&lt;/a&gt;,&lt;br /&gt;&lt;a href=&quot;https://zeltser.com/media/archive/incident-response-brief-template.docx&quot;&gt;Word&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cybersecurity Assessment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Findings from a security assessment&lt;/td&gt;
&lt;td&gt;Use it to distill a &lt;a href=&quot;https://zeltser.com/security-assessment-report-template&quot;&gt;full assessment report&lt;/a&gt; for leaders, after a penetration test, vulnerability assessment, or other findings-based engagement.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://zeltser.com/media/archive/security-assessment-brief-template.md&quot;&gt;Markdown&lt;/a&gt;,&lt;br /&gt;&lt;a href=&quot;https://zeltser.com/media/archive/security-assessment-brief-template.docx&quot;&gt;Word&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Design Criteria for the Briefs&lt;/h2&gt;
&lt;p&gt;I designed the templates to incorporate the key elements from the &lt;a href=&quot;https://zeltser.com/cybersecurity-writing-course&quot;&gt;Cybersecurity Writing course&lt;/a&gt; that I teach at SANS Institute. All four reflect content I&apos;ve produced and received as a security professional:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom line first.&lt;/strong&gt; Each brief opens with a paragraph that immediately captures the key takeaways important to the reader. State what happened, who&apos;s behind it or what&apos;s vulnerable, and the most important defensive action.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Organizational context.&lt;/strong&gt; Each brief includes a placeholder for interpreting findings in your organization&apos;s context. For vulnerabilities, that means a significance ranking adjusted for exposure, compensating controls, data sensitivity, and asset criticality. For threat intelligence, that means calibrated confidence in your assessment and your exposure to the campaign. For incidents, that means impact in terms your decision-makers care about. For an assessment, that means findings rated by risk to the organization.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Action informed by analysis.&lt;/strong&gt; Each brief includes a table for capturing and driving action informed by the analysis. The CTI and Vulnerability briefs call it Defensive Actions. The IR brief calls it Response Actions, drawn from the response phases of Identification, Containment, Eradication, and Recovery. The Security Assessment Brief calls it Recommended Actions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you don&apos;t know.&lt;/strong&gt; Most of these briefs include a &quot;What We Don&apos;t Know&quot; section listing the assessment gaps. Naming the gaps signals discipline and sets expectations for new information. Over time, that practice builds the executive trust that makes future briefs land faster.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Built for skimming.&lt;/strong&gt; Each brief uses tables for facts and actions, with headings that serve as landmarks. Readers can quickly find the details they need without reading the brief end to end.&lt;/p&gt;
&lt;h2&gt;Pair the Briefs with Longer Reports&lt;/h2&gt;
&lt;p&gt;Briefings for decision-makers generally draw on a longer source that captures the details of the analysis. I created the following resources to help you build such baseline materials:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://zeltser.com/cyber-threat-intel-report-template&quot;&gt;Cyber Threat Intelligence Report Template&lt;/a&gt; is the full methodology behind the CTI Brief.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://zeltser.com/vulnerability-management-hamster-wheel&quot;&gt;Escaping the Vulnerability Management Hamster Wheel&lt;/a&gt; is the context-adjusted significance discipline behind the Vulnerability Investigation Brief.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://zeltser.com/incident-response-report-template&quot;&gt;A Report Template for Cybersecurity and Privacy Incident Response&lt;/a&gt; is the full IR methodology behind the Incident Response Brief.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://zeltser.com/security-assessment-report-template&quot;&gt;A Report Template for Security Assessments&lt;/a&gt; is the full methodology behind the Security Assessment Brief.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use the briefs in your conversations with decision-makers. Reserve the long-form reports for when you need to back the brief with detail, share findings with technical audiences, and build institutional memory beyond the contents of the brief.&lt;/p&gt;
</content:encoded></item><item><title>Handling High-Profile Vulnerabilities</title><link>https://zeltser.com/high-profile-vulnerabilities</link><guid isPermaLink="true">https://zeltser.com/high-profile-vulnerabilities</guid><description>When a high-profile vulnerability surfaces, executives and customers want to know whether it affects you. With a one-page brief and a short process, you can capture the key details and reach the answer without scrambling.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;When a high-profile vulnerability surfaces, executives and customers want to know whether it affects you. With a one-page brief and a short process, you can capture the key details and reach the answer without scrambling.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://zeltser.com/assets/high-profile-vulnerabilities.D2GlNats.jpg&quot; alt=&quot;Article illustration&quot; /&gt;&lt;/p&gt;&lt;p&gt;As a CISO, I received the same question whenever a vulnerability became famous. Are we affected? A colleague shared the headline, wanting to know whether it affected the business. A customer&apos;s security team sent a questionnaire asking whether we&apos;d patched it. A repeatable process for investigating your exposure to a vulnerability lets you address these concerns without scrambling.&lt;/p&gt;
&lt;p&gt;First, a useful resource for you. Then, a discussion about what&apos;s behind it:&lt;/p&gt;
&lt;p&gt;I created a short Vulnerability Investigation Brief you can use to capture and share your analysis of an important vulnerability and your exposure to it. &lt;strong&gt;Download the template and make it your own&lt;/strong&gt;, as &lt;a href=&quot;https://zeltser.com/media/archive/vulnerability-investigation-brief-template.md&quot;&gt;Markdown&lt;/a&gt; and &lt;a href=&quot;https://zeltser.com/media/archive/vulnerability-investigation-brief-template.docx&quot;&gt;Word&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now you have the template. It&apos;s designed for high-profile vulnerabilities about which you need to communicate with stakeholders, for instance in &quot;celebrity&quot; vulnerability situations. Let&apos;s explore how to get the most out of the template.&lt;/p&gt;
&lt;h2&gt;A checklist for assessing your exposure.&lt;/h2&gt;
&lt;p&gt;You should &lt;a href=&quot;https://zeltser.com/vulnerability-management-hamster-wheel&quot;&gt;design your vulnerability management program&lt;/a&gt; so that routine vulnerabilities are handled routinely and automatically with minimal ad-hoc attention. But some vulnerabilities, including those that arise from third-party dependencies, require special attention.&lt;/p&gt;
&lt;p&gt;When a vulnerability of such significance surfaces, go through the following steps to understand your exposure:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Confirm you even run the affected product, version, and configuration. That takes &lt;a href=&quot;https://zeltser.com/ciso-mindset&quot;&gt;asset visibility&lt;/a&gt;, and you often find you don&apos;t, which closes the investigation.&lt;/li&gt;
&lt;li&gt;Check whether it&apos;s realistic for an attacker to reach the flaw. A disabled feature, a blocked port, or a segmented network can remove your exposure or buy you time.&lt;/li&gt;
&lt;li&gt;Re-rank the vendor&apos;s worst-case severity for your exposure, compensating controls, data sensitivity, and asset criticality.&lt;/li&gt;
&lt;li&gt;Convert the call into an action someone owns by a real date, or decide it needs none. An assessment nobody acts on is &lt;a href=&quot;https://zeltser.com/chief-opinion-officer-to-action-taker&quot;&gt;only an opinion&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These steps apply to a compromised dependency that you need to investigate, such as a backdoored software package. In this case, if you determine that you&apos;re affected, you&apos;ll shift to incident response mode (I have a &lt;a href=&quot;https://zeltser.com/incident-response-report-template&quot;&gt;template for IR&lt;/a&gt; too).&lt;/p&gt;
&lt;h2&gt;Communicating the vulnerability investigation.&lt;/h2&gt;
&lt;p&gt;The Vulnerability Investigation Brief is designed to address the questions that your colleagues, especially executives, want answered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bottom Line&lt;/strong&gt; explains what the vulnerability is and how it affects the organization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quick Facts&lt;/strong&gt; summarizes key details about the situation with placeholders to explain the significance of the vulnerability, affected resources, attack vectors, and more.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Are We Affected?&lt;/strong&gt; offers guidance for answering this critical question.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Defensive Actions&lt;/strong&gt; captures the work that needs to be done, complete with who will be doing what, why, and when, to move the situation forward.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What We Don&apos;t Know&lt;/strong&gt; lets you capture the gaps, which signals discipline and tells the reader when to expect more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The template is designed for the internal audience. But the details captured within it are the foundation for an outbound message you might need to draft for your customers and other external parties. Work with the right comms team or person for externally-facing content.&lt;/p&gt;
&lt;h2&gt;Don&apos;t let the hype take over.&lt;/h2&gt;
&lt;p&gt;Every so often, a vulnerability arrives with its own branding. I first saw the term &quot;celebrity&quot; vulnerabilities in &lt;a href=&quot;https://www.trustwave.com/hubfs/Web/Library/Documents_pdf/13167_2015-trustwave-global-security-report.pdf&quot;&gt;Trustwave&apos;s 2015 report&lt;/a&gt;, which defined it as vulnerabilities that &quot;receive memorable names, and sometimes logos, from their discoverers.&quot; Security expert &lt;a href=&quot;https://www.troyhunt.com/pragmatic-thoughts-on-cloudbleed/&quot;&gt;Troy Hunt later observed&lt;/a&gt; that such branding &quot;has a way of drumming up excitement and sensationalism in a way that isn&apos;t always commensurate with the actual risk.&quot;&lt;/p&gt;
&lt;p&gt;The celebrity vulnerability might be minor and you might not even be exposed to it. Yet, the media hype about the issue can draw outsized attention that distracts from more important work, as questions about it ricochet through the company and to its suppliers.&lt;/p&gt;
&lt;p&gt;Don&apos;t get distracted by the noise. Run the vulnerability through the checklist and template to address any concern calmly, celebrity or not.&lt;/p&gt;
</content:encoded></item><item><title>Securing API Keys on Your Workstation</title><link>https://zeltser.com/securing-api-keys-on-your-workstation</link><guid isPermaLink="true">https://zeltser.com/securing-api-keys-on-your-workstation</guid><description>Every dev tool you grant API access to, AI assistants included, can read the keys within its reach. No setup removes that risk entirely, so the goal is fewer secrets exposed and less damage when one leaks.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Every dev tool you grant API access to, AI assistants included, can read the keys within its reach. No setup removes that risk entirely, so the goal is fewer secrets exposed and less damage when one leaks.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://zeltser.com/assets/securing-api-keys-on-your-workstation.DZEN6qaS.jpg&quot; alt=&quot;Article illustration&quot; /&gt;&lt;/p&gt;&lt;p&gt;Developer workstations accumulate API keys and other secrets that malware can read from .env files, shell history, and saved CLI credentials. An infostealer only has to steal the key, and using it skips the second authentication factor a person would need. AI agents increase the risk, since they generally require broad access to be useful.&lt;/p&gt;
&lt;p&gt;For example, attackers behind the &lt;a href=&quot;https://blog.gitguardian.com/the-nx-s1ngularity-attack-inside-the-credential-leak/&quot;&gt;s1ngularity attack&lt;/a&gt; compromised &lt;em&gt;nx&lt;/em&gt;, a popular JavaScript build tool, and pulled API keys and SSH keys from over a thousand developer machines. The attackers also weaponized developers&apos; AI coding agents, &lt;a href=&quot;https://www.wiz.io/blog/s1ngularity-supply-chain-attack&quot;&gt;prompting installed CLIs&lt;/a&gt; to comb the filesystem for secrets.&lt;/p&gt;
&lt;p&gt;Several free open-source tools can help reduce the number of secrets you leave exposed and limit the damage when one of them leaks.&lt;/p&gt;
&lt;h2&gt;Start by seeing what&apos;s already exposed.&lt;/h2&gt;
&lt;p&gt;Before you change anything, scan your workstation to learn where secrets already live. A good starting point is &lt;a href=&quot;https://github.com/boostsecurityio/bagel&quot;&gt;bagel&lt;/a&gt;, which reports secrets and insecure settings across your system, including AI tool credential files, cloud keys, and unsafe Git or SSH configurations.&lt;/p&gt;
&lt;p&gt;For secrets already committed to Git, a verifying scanner such as &lt;a href=&quot;https://github.com/trufflesecurity/trufflehog&quot;&gt;TruffleHog&lt;/a&gt; can not only locate the access keys but also test them against the provider to determine whether they still work.&lt;/p&gt;
&lt;p&gt;Your first scan will probably find more secrets than you remember creating. Re-run it after each cleanup step to confirm the count drops.&lt;/p&gt;
&lt;h2&gt;Aim for four reachable wins.&lt;/h2&gt;
&lt;p&gt;Your tools need access to the API keys and tokens to do their job, so reduce both the chances they&apos;re abused and the damage when one leaks. To do that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keep secrets out of plaintext files.&lt;/li&gt;
&lt;li&gt;Stop them from spreading into Git and logs.&lt;/li&gt;
&lt;li&gt;Require your approval before a sensitive key gets used.&lt;/li&gt;
&lt;li&gt;Minimize the damage if a key leaks.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your exposure and convenience depend on where you put your secrets, so let&apos;s start there.&lt;/p&gt;
&lt;h2&gt;Weigh exposure against convenience.&lt;/h2&gt;
&lt;p&gt;You can keep a secret in several places, from a plaintext file to a vault that prompts you each time. More protection usually means less convenience, so the right store depends on the key&apos;s sensitivity, what you&apos;re defending against, and how much inconvenience you&apos;re willing to tolerate.&lt;/p&gt;
&lt;p&gt;A secret&apos;s exposure in a store is based on two factors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whether software running as you can read it without your approval, and&lt;/li&gt;
&lt;li&gt;How many other secrets an attacker gets by compromising that store.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The table below rates the store options on both, so you can pick the approach that works for you.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Silent read by malware running as you?&lt;/th&gt;
&lt;th&gt;Blast radius of one compromise&lt;/th&gt;
&lt;th&gt;Automation / headless&lt;/th&gt;
&lt;th&gt;Key tradeoff&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Plaintext File (e.g., .env)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;The keys in that file&lt;/td&gt;
&lt;td&gt;Works everywhere&lt;/td&gt;
&lt;td&gt;Most leaks start here&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OS Keychain&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes, while unlocked&lt;/td&gt;
&lt;td&gt;That store&apos;s items&lt;/td&gt;
&lt;td&gt;Good, auto-unlocked&lt;/td&gt;
&lt;td&gt;Once unlocked, code running as you can read it, with a per-item prompt on macOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Password Vault (e.g., 1Password)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No, each use needs approval&lt;/td&gt;
&lt;td&gt;The whole authorized account&lt;/td&gt;
&lt;td&gt;Poor, needs a person to approve&lt;/td&gt;
&lt;td&gt;One approval, or an open session, exposes the account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scoped Password Vault&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Only that one vault&lt;/td&gt;
&lt;td&gt;Poor, still interactive&lt;/td&gt;
&lt;td&gt;Needs an extra limited identity to set up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Service Account&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The token sits at rest&lt;/td&gt;
&lt;td&gt;Only its granted vaults&lt;/td&gt;
&lt;td&gt;Good, non-interactive&lt;/td&gt;
&lt;td&gt;The token unlocks everything in its scope&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;The OS keychain is convenient but stays unlocked.&lt;/h2&gt;
&lt;p&gt;If you&apos;re not sure where to start, the OS keychain is a good default, since infostealers often focus on plaintext files. Every major desktop platform includes one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;macOS:&lt;/strong&gt; The &lt;a href=&quot;https://support.apple.com/guide/keychain-access/welcome/mac&quot;&gt;macOS Keychain&lt;/a&gt;, driven by the &lt;a href=&quot;https://keith.github.io/xcode-man-pages/security.1.html&quot;&gt;security&lt;/a&gt; command.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows:&lt;/strong&gt; &lt;a href=&quot;https://support.microsoft.com/en-us/windows/accessing-credential-manager-1b5c916a-6a16-889f-8581-fc16e8165ac0&quot;&gt;Credential Manager&lt;/a&gt;, via &lt;a href=&quot;https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmdkey&quot;&gt;cmdkey&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux:&lt;/strong&gt; The &lt;a href=&quot;https://specifications.freedesktop.org/secret-service-spec/latest/&quot;&gt;Secret Service&lt;/a&gt;, via &lt;a href=&quot;https://man.archlinux.org/man/secret-tool.1.en&quot;&gt;secret-tool&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The keychain is unlocked the entire time you&apos;re logged in, which is both convenient and risky. The convenience is that your tools read a key without prompting you, even ones running in the background or headless. Your system usually unlocks it at login and holds it open for the session, so code running as you can read the keys it stores. On Windows and Linux, that code reads the store without prompting. macOS adds a per-item prompt when an app tries to access something it didn&apos;t store, though there are ways around it. A file scraper still finds nothing, but code that reads the keychain directly gets the key.&lt;/p&gt;
&lt;h2&gt;Getting the secret to a tool is its own task.&lt;/h2&gt;
&lt;p&gt;How you deliver a secret depends on how the tool is started. If you start the tool yourself, you can inject the secret as you launch it. A tool that another program spawns or runs headless needs an auto-unlocked store or a lookup at the moment of use.&lt;/p&gt;
&lt;p&gt;You can get the secret to a tool in three ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You look it up at the moment of use, for example, using &lt;code&gt;security find-generic-password&lt;/code&gt; or 1Password&apos;s &lt;code&gt;op read&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You inject it into the tool&apos;s environment when you launch the tool.&lt;/li&gt;
&lt;li&gt;The tool reads it from its own config file, where you&apos;ve replaced the secret with an environment variable reference.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can use these methods with any store you choose.&lt;/p&gt;
&lt;h2&gt;A password vault adds a per-use checkpoint.&lt;/h2&gt;
&lt;p&gt;For the few sensitive keys you want to approve each time, use a vault such as 1Password instead of the OS keychain. Unlike the keychain, 1Password asks for your biometric approval at the moment a tool needs the key, and caches it only for a short session. You replace the literal key with a 1Password &lt;a href=&quot;https://www.1password.dev/cli/secret-references&quot;&gt;secret reference&lt;/a&gt; in a config or env file, and 1Password&apos;s CLI resolves it to the value when a tool needs it.&lt;/p&gt;
&lt;p&gt;The downside of using 1Password is that once you &lt;a href=&quot;https://developer.1password.com/docs/cli/app-integration-security/&quot;&gt;give the tool access&lt;/a&gt;, it can read all data stored in your 1Password account, not just the secret you have in mind. As a result, if you or your AI tool is tricked into requesting access, you might inadvertently give the requesting software access to a lot of sensitive data.&lt;/p&gt;
&lt;p&gt;To lower your exposure, consider creating a 1Password vault just for the secrets you use for your dev work. Then, create a limited 1Password identity with access restricted to that one vault. Cleanly doing that requires a &lt;a href=&quot;https://developer.1password.com/docs/service-accounts/&quot;&gt;service account&lt;/a&gt; that&apos;s available only to 1Password business customers. You can mimic this approach using a &lt;a href=&quot;https://support.1password.com/guests/&quot;&gt;guest account&lt;/a&gt; on a personal plan.&lt;/p&gt;
&lt;p&gt;On a personal plan, the guest route needs one more step. You need to turn off the app&apos;s biometric CLI integration and &lt;a href=&quot;https://www.1password.dev/cli/sign-in-manually/&quot;&gt;sign in&lt;/a&gt; as the guest from the terminal. Signing in manually requires a password for the guest account and doesn&apos;t work with 1Password biometric authentication.&lt;/p&gt;
&lt;p&gt;For a hybrid approach, keep everyday and automated secrets in the OS keychain. Reserve a scoped vault for the few keys you want to explicitly approve. This gives you low-friction storage for your routine keys and a per-use checkpoint for the few that matter most.&lt;/p&gt;
&lt;h2&gt;Stop secrets from sprawling into Git, history, and transcripts.&lt;/h2&gt;
&lt;p&gt;By the time you store a secret well, your tools have already written copies of it into Git, your shell history, and AI transcripts. Clean them up, then keep them clean:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Git:&lt;/strong&gt; Once you commit and push a secret to a repo, deleting the line or rewriting history only reduces the trace, so treat it as burned and rotate it. To catch the next secret before you commit it, run a scanner such as &lt;a href=&quot;https://github.com/betterleaks/betterleaks&quot;&gt;betterleaks&lt;/a&gt; (the successor to gitleaks) as a pre-commit hook, which blocks any commit that contains a secret.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Shell history:&lt;/strong&gt; Your shell records the commands you type, including any key you paste on a command line. Keep the secret off the command line and put a reference there instead, so your shell resolves the secret only when the command runs. When a tool wants the key as an argument, read it inline, as in &lt;code&gt;mytool --token &quot;$(op read &apos;op://...&apos;)&quot;&lt;/code&gt;. When a script reads the key from the environment, export a reference the same way, as in &lt;code&gt;export GITHUB_TOKEN=&quot;$(op read &apos;op://...&apos;)&quot;&lt;/code&gt;. When you must type the secret directly, fall back to history hygiene, such as Zsh&apos;s &lt;a href=&quot;https://zsh.sourceforge.io/Doc/Release/Options.html#index-HIST_005fIGNORE_005fSPACE&quot;&gt;&lt;code&gt;setopt HIST_IGNORE_SPACE&lt;/code&gt;&lt;/a&gt;, which drops any command you prefix with a space. To clean keys already in your history, &lt;code&gt;bagel scrub&lt;/code&gt; redacts them in place.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AI session transcripts:&lt;/strong&gt; AI tools log your sessions, and a secret you paste into a prompt ends up in those logs. Scrub them with a tool built for it, such as &lt;code&gt;bagel scrub&lt;/code&gt;, which replaces secrets with redaction markers and leaves the conversation readable.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even after you store secrets well and scrub old copies, your AI tool can still read whatever&apos;s on disk, the same access the s1ngularity attack turned against developers. Blocking the tool from credential paths is a separate defense from storing them properly. Even an agent hijacked by a prompt or a bad package then finds nothing to read there. The &lt;a href=&quot;https://github.com/trailofbits/claude-code-config&quot;&gt;Trail of Bits Claude Code config&lt;/a&gt;, which the &lt;a href=&quot;https://zeltser.com/personal-ai-stack&quot;&gt;Personal AI Stack&lt;/a&gt; points to, blocks reads of common credential paths.&lt;/p&gt;
&lt;h2&gt;SSH keys and config-file keys need their own handling.&lt;/h2&gt;
&lt;p&gt;Keeping a secret in a store and handing it to a tool on demand doesn&apos;t work in all scenarios. For an SSH private key or a key that a tool reads from its own config file, such as npm&apos;s .npmrc, handle each on its own terms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SSH keys:&lt;/strong&gt; Move your private keys into an SSH agent such as the &lt;a href=&quot;https://www.1password.dev/ssh/agent&quot;&gt;1Password SSH agent&lt;/a&gt;. It authenticates your SSH connections, including Git over SSH, so the private key never leaves the vault. You approve each attempt to use a key, which grants access only to that key, not the rest of your 1Password account. Alternatively, on a Mac, &lt;a href=&quot;https://github.com/maxgoedjen/secretive&quot;&gt;Secretive&lt;/a&gt; stores SSH keys in the Secure Enclave, where even software running as you can&apos;t export them; it prompts for strong authentication each time a key is accessed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Config-file keys:&lt;/strong&gt; A package manager or CLI may read its key from a file it owns. For example, npm has &lt;code&gt;${VARIABLE_NAME}&lt;/code&gt; support for &lt;a href=&quot;https://docs.npmjs.com/cli/v10/configuring-npm/npmrc&quot;&gt;.npmrc files&lt;/a&gt;. When a tool can&apos;t reference a variable, lock that file down with strict permissions, keep it out of Git, and rely on scoping and rotation to limit what a stolen copy is worth.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Where to start.&lt;/h2&gt;
&lt;p&gt;You don&apos;t have to do all of this at once. Here&apos;s one way to order your efforts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scan your workstation to see what&apos;s exposed.&lt;/li&gt;
&lt;li&gt;Rotate anything that ended up in Git, a shared drive, or a cloud location, since you have to assume it leaked.&lt;/li&gt;
&lt;li&gt;Put everyday and automated keys in your OS keychain, and move your most sensitive interactive keys into a scoped vault.&lt;/li&gt;
&lt;li&gt;Keep secrets off the command line, and add a pre-commit scanner so they can&apos;t slip into Git.&lt;/li&gt;
&lt;li&gt;Scrub the secrets already in your shell history and AI transcripts.&lt;/li&gt;
&lt;li&gt;Move SSH keys into an agent.&lt;/li&gt;
&lt;li&gt;Scan again to confirm the count dropped.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Keep fewer secrets within reach, and match each one to its sensitivity and how it&apos;s used, so a single leak stays small.&lt;/p&gt;
</content:encoded></item><item><title>Security of Third-Party Keyboard Apps on Mobile Devices</title><link>https://zeltser.com/third-party-keyboards-security</link><guid isPermaLink="true">https://zeltser.com/third-party-keyboards-security</guid><description>Keyboard apps offer better predictions, voice transcription, and AI-powered writing, all requiring users to send what they type to remote servers. Mobile OS vendors set the rules but can&apos;t enforce what developers do with that data.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Keyboard apps offer better predictions, voice transcription, and AI-powered writing, all requiring users to send what they type to remote servers. Mobile OS vendors set the rules but can&apos;t enforce what developers do with that data.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://zeltser.com/assets/third-party-keyboards-security.DJzgcojl.jpg&quot; alt=&quot;Article illustration&quot; /&gt;&lt;/p&gt;&lt;p&gt;A third-party keyboard app with network access effectively becomes a keylogger that the user has authorized. The safeguards depend almost entirely on what the developer chooses to do with the data once it leaves the mobile device.&lt;/p&gt;
&lt;p&gt;iOS and Android have supported third-party keyboards for over a decade, and the underlying trust questions have only gotten harder as more keyboards send what you type to remote servers for AI-powered features. Let&apos;s explore how access works on each platform, where data can leak, and the trade-off AI keyboards introduce.&lt;/p&gt;
&lt;h2&gt;How Third-Party Keyboards Get Network Access&lt;/h2&gt;
&lt;p&gt;Keyboard apps can transmit keystrokes to developer servers for features such as next-word prediction, cross-device sync, and analytics of typing patterns. The very ability that draws users to these keyboards is the primary security concern.&lt;/p&gt;
&lt;p&gt;Network access for a third-party keyboard on iOS requires two things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The developer must declare the &lt;a href=&quot;https://developer.apple.com/documentation/bundleresources/information-property-list/nsextension/nsextensionattributes/requestsopenaccess&quot;&gt;RequestsOpenAccess&lt;/a&gt; key in the keyboard extension. Apple describes that key as &quot;a Boolean value indicating whether a custom keyboard uses a shared container and accesses the network.&quot;&lt;/li&gt;
&lt;li&gt;The user must also toggle Allow Full Access on in Settings. An iOS warning spells out the consequences when the user toggles that setting on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On iOS, some third-party keyboards can function without users granting them full access, though that mode usually disables the features that drew users to the app.&lt;/p&gt;
&lt;p&gt;Android handles this differently. The access decision on Android requires two things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The developer adds &lt;a href=&quot;https://developer.android.com/develop/connectivity/network-ops/connecting&quot;&gt;INTERNET permission&lt;/a&gt; to the manifest. Android grants the declared permission automatically when the user installs the app, without prompting the user to approve network access.&lt;/li&gt;
&lt;li&gt;The user must also enable the keyboard in Settings and select it as the &lt;a href=&quot;https://developer.android.com/develop/ui/views/touch-and-input/creating-input-method&quot;&gt;active Input Method Editor&lt;/a&gt; (IME). This step triggers a &lt;a href=&quot;https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/packages/SettingsLib/res/values/strings.xml&quot;&gt;system warning&lt;/a&gt; telling the user that the IME &quot;may be able to collect all the text you type, including personal data like passwords and credit card numbers.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once selected, the IME receives every character typed across every app. Android does not add a separate &quot;full access&quot; toggle afterward.&lt;/p&gt;
&lt;p&gt;Credentials are the one exception to what the keyboard sees. A password manager fills the login field without sending data through the keyboard. Android does this through the &lt;a href=&quot;https://developer.android.com/identity/autofill&quot;&gt;Autofill framework&lt;/a&gt; and &lt;a href=&quot;https://developer.android.com/identity/sign-in/credential-manager&quot;&gt;Credential Manager&lt;/a&gt;. iOS does the same through &lt;a href=&quot;https://support.apple.com/guide/security/credential-provider-extensions-sec6319ac7b9/web&quot;&gt;AutoFill&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Guidelines for Keyboard Apps&lt;/h2&gt;
&lt;p&gt;Both platforms publish keyboard developer guidance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple&apos;s &lt;a href=&quot;https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/CustomKeyboard.html&quot;&gt;App Extension Programming Guide&lt;/a&gt; is now archived, but it told developers, &quot;Your first consideration when creating a custom keyboard must be how you will establish and maintain user trust.&quot; Apple now points keyboard developers to the &lt;a href=&quot;https://developer.apple.com/app-store/review/guidelines/&quot;&gt;App Store Review Guidelines&lt;/a&gt;, which covers keyboard extensions and data use.&lt;/li&gt;
&lt;li&gt;Google&apos;s &lt;a href=&quot;https://developer.android.com/privacy-and-security/about&quot;&gt;Privacy&lt;/a&gt; and &lt;a href=&quot;https://developer.android.com/privacy-and-security/security-tips&quot;&gt;Security&lt;/a&gt; checklists call for minimizing data collection, encrypting transit, and keeping personal data out of logs. The &lt;a href=&quot;https://developer.android.com/develop/ui/views/touch-and-input/creating-input-method&quot;&gt;Android IME developers&lt;/a&gt; page extends some of these expectations to keyboard apps.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both platforms expose user-facing privacy declarations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On iOS, every keyboard&apos;s App Store listing includes a &lt;a href=&quot;https://www.apple.com/privacy/labels/&quot;&gt;Privacy Nutrition Label&lt;/a&gt;. The label categorizes what data the developer says they collect and whether it&apos;s linked to the user. Developers must also ship a &lt;a href=&quot;https://developer.apple.com/documentation/bundleresources/privacy-manifest-files&quot;&gt;Privacy Manifest&lt;/a&gt; declaring tracking domains and use of &lt;a href=&quot;https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api&quot;&gt;required-reason APIs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;On Android, every keyboard on Google Play must complete a &lt;a href=&quot;https://support.google.com/googleplay/android-developer/answer/10787469&quot;&gt;Data Safety section&lt;/a&gt;. The section shows users what data the app collects, shares, and whether it&apos;s encrypted in transit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Filing these declarations is mandatory, but the accuracy of the claims is the developer&apos;s responsibility.&lt;/p&gt;
&lt;p&gt;Customers have to decide whether to trust each keyboard developer based on what the developer publishes about its security practices and its track record. Apple&apos;s app review process presumably catches blatant violations. However, once a keyboard transmits user data off the device, neither Apple nor Google can enforce developers&apos; server-side security practices.&lt;/p&gt;
&lt;h2&gt;Potential for Data Leakage&lt;/h2&gt;
&lt;p&gt;Keystroke data can leak from a third-party keyboard in several ways. A malicious developer might build the app to exfiltrate what users type. Attackers might compromise an otherwise legitimate keyboard through a supply chain attack. And a developer might leak data through weak security engineering or poor vulnerability management, even without malicious intent.&lt;/p&gt;
&lt;p&gt;The Citizen Lab&apos;s report &lt;a href=&quot;https://citizenlab.ca/research/vulnerabilities-across-keyboard-apps-reveal-keystrokes-to-network-eavesdroppers/&quot;&gt;The Not-So-Silent Type&lt;/a&gt; examined cloud-based keyboard apps from nine vendors of Chinese-market Pinyin keyboards. The apps transmitted keystrokes with homegrown encryption that even passive eavesdroppers could exploit. The researchers reported that &quot;eight of the nine apps identified contained vulnerabilities that could be exploited to completely reveal the contents of users&apos; keystrokes in transit.&quot;&lt;/p&gt;
&lt;p&gt;Data can leak from insecure storage as readily as from insecure transit. The &lt;a href=&quot;https://haveibeenpwned.com/breach/AIType&quot;&gt;ai.type breach&lt;/a&gt;, cataloged by Have I Been Pwned, exposed the breadth of what one third-party keyboard collected and then left in an unsecured database:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Names, email addresses, phone numbers, dates of birth, and genders&lt;/li&gt;
&lt;li&gt;IP addresses, geographic locations, and cellular network names&lt;/li&gt;
&lt;li&gt;Device information, IMEI numbers, and IMSI numbers&lt;/li&gt;
&lt;li&gt;Address book contacts and lists of apps installed on devices&lt;/li&gt;
&lt;li&gt;Social media profiles and profile photos&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Rise of AI-Powered Keyboards&lt;/h2&gt;
&lt;p&gt;Keyboard apps increasingly rely on off-device processing to deliver AI features. Microsoft and Google have added cloud AI features to their long-standing keyboards, SwiftKey and Gboard. Other keyboards depend on cloud language models from the start. For these apps, sending the user&apos;s data to the cloud is essential to deliver their AI features. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.grammarly.com/keyboard&quot;&gt;Grammarly Keyboard&lt;/a&gt;: When &lt;a href=&quot;https://support.grammarly.com/hc/en-us/articles/115000730091-Why-Grammarly-Needs-Full-Access-on-iOS&quot;&gt;granted full access on iOS&lt;/a&gt;, Grammarly Keyboard sends text from writing fields to its servers for grammar and generative rewrites. The text is handled under the &lt;a href=&quot;https://www.grammarly.com/privacy-policy&quot;&gt;company&apos;s privacy policy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://apps.apple.com/us/app/wispr-flow-ai-voice-keyboard/id6497229487&quot;&gt;Wispr Flow&lt;/a&gt;: Distributed on iOS as an &quot;AI Voice Keyboard,&quot; Wispr Flow transcribes speech on its servers and runs an LLM cleanup pass for formatting. With &lt;a href=&quot;https://docs.wisprflow.ai/articles/6274675613-privacy-mode-data-retention&quot;&gt;Privacy Mode&lt;/a&gt; enabled, the audio is &quot;immediately discarded&quot; after transcription.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.clevertype.co/&quot;&gt;CleverType&lt;/a&gt;: CleverType routes the user&apos;s text through hosted language models such as ChatGPT to provide tone rewriting, grammar fixes, and chat-style assistants. The processing is handled under &lt;a href=&quot;https://www.clevertype.co/privacy-policy&quot;&gt;its privacy policy&lt;/a&gt;, which excludes password fields from processing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Built-in keyboards implement some AI capabilities directly on the device. Apple&apos;s &lt;a href=&quot;https://www.apple.com/newsroom/2023/06/ios-17-makes-iphone-more-personal-and-intuitive/&quot;&gt;QuickType&lt;/a&gt; handles predictive text and autocorrect locally, and &lt;a href=&quot;https://support.apple.com/en-us/121115&quot;&gt;Apple Intelligence&lt;/a&gt; adds keyboard features like Smart Reply on supported chips, with &lt;a href=&quot;https://security.apple.com/blog/private-cloud-compute/&quot;&gt;Private Cloud Compute&lt;/a&gt; covering larger workloads. Google&apos;s &lt;a href=&quot;https://blog.google/products/pixel/pixel-feature-drop-december-2023/&quot;&gt;Gemini Nano&lt;/a&gt; powers Smart Reply in Gboard on supported Pixel devices.&lt;/p&gt;
&lt;p&gt;Using an AI keyboard means accepting that the user&apos;s typing is processed by a remote language model. The AI features usually depend on off-device processing, so opting out of the data flow means opting out of the features.&lt;/p&gt;
&lt;h2&gt;Conclusions and Implications&lt;/h2&gt;
&lt;p&gt;Third-party keyboards offer features that built-in keyboards lack. Using them means letting the keyboard transmit keystrokes to developer servers, which comes with these risks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We have to accept that keyboard developers collect and store the text we type. Most acknowledge as much, though they say little about how they safeguard it beyond invoking &quot;encryption.&quot;&lt;/li&gt;
&lt;li&gt;We have to trust the keyboard developer not to capture sensitive data beyond what its advertised features require. A malicious or buggy keyboard can act as a powerful keylogger.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We might assume that the guardians of our mobile OS, such as Google and Apple, would protect us from malicious or accidental misuse of keystroke data and network access. However, such firms have no direct control over what happens once the data leaves the mobile device.&lt;/p&gt;
&lt;p&gt;Organizations have a further lever. iOS MDM can &lt;a href=&quot;https://support.apple.com/guide/security/secabd3504cd/web&quot;&gt;block third-party keyboards from managed apps&lt;/a&gt; through Managed Open In rules. Android Enterprise can do the same through &lt;a href=&quot;https://developer.android.com/work/versions/android-10&quot;&gt;setPermittedInputMethods&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The safest choice is the built-in keyboard, or one from a major vendor with an established security program. Innovative third-party keyboards are tempting, and some users will find them useful. Before installing one, decide whether the features offer a meaningful benefit. Weigh that against the risk of data loss from a less mature vendor.&lt;/p&gt;
</content:encoded></item><item><title>A Report Template for Security Assessments</title><link>https://zeltser.com/security-assessment-report-template</link><guid isPermaLink="true">https://zeltser.com/security-assessment-report-template</guid><description>The technical severity of an assessment finding tells only part of the story. A customizable report template helps you document the scope, rate findings by risk, and write for the executives and engineers who read the results differently.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;The technical severity of an assessment finding tells only part of the story. A customizable report template helps you document the scope, rate findings by risk, and write for the executives and engineers who read the results differently.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://zeltser.com/assets/security-assessment-report-template.D9e_Ce-x.jpg&quot; alt=&quot;Article illustration&quot; /&gt;&lt;/p&gt;&lt;p&gt;Security assessors are good at finding and ranking weaknesses, but reporting them so the reader trusts the approach and can act on the results requires additional expertise. The following template for cybersecurity assessment reports helps with that. It gives structured writing guidance to penetration testers and red teamers, whether internal teams or outside consultants.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download the assessment report template and make it your own.&lt;/strong&gt; It&apos;s available as &lt;a href=&quot;https://zeltser.com/media/archive/security-assessment-report-template.md&quot;&gt;Markdown&lt;/a&gt; and &lt;a href=&quot;https://zeltser.com/media/archive/security-assessment-report-template.docx&quot;&gt;Word&lt;/a&gt; files. A companion brief template helps you share the key findings with decision-makers (&lt;a href=&quot;https://zeltser.com/media/archive/security-assessment-brief-template.md&quot;&gt;Markdown&lt;/a&gt;, &lt;a href=&quot;https://zeltser.com/media/archive/security-assessment-brief-template.docx&quot;&gt;Word&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;You can also &lt;strong&gt;use my MCP server with your AI agent&lt;/strong&gt; to draft or improve assessment reports. It works from these templates and my guidance. I built it to offer insights without receiving your sensitive data. To use it, add &lt;code&gt;https://website-mcp.zeltser.com/mcp&lt;/code&gt; to your AI agent&apos;s config.&lt;/p&gt;
&lt;p&gt;The template incorporates the principle of risk-adjusted severity. It explains how to rate each finding based on its implications for the organization that commissioned the work. You weigh exposure, compensating controls, data sensitivity, and the value of the affected asset. After that, you may rate a finding above or below its base score. I describe this approach in &lt;a href=&quot;https://zeltser.com/vulnerability-management-hamster-wheel&quot;&gt;Escaping the Vulnerability Management Hamster Wheel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The assessment report template allows the assessor to capture their findings in a methodical, organized way and to communicate them in a way readers want to see. Here&apos;s how the report is structured, with the frameworks each section draws on. You adapt them to your engagement. Use a relative severity scale or CVSS, whatever testing standards your work follows, and the tools you prefer.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Section&lt;/th&gt;
&lt;th&gt;What It Captures&lt;/th&gt;
&lt;th&gt;Sample Frameworks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Executive Summary&lt;/td&gt;
&lt;td&gt;The overall security posture, the top conclusions and recommendations, and any genuine strengths.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://pentest-standard.readthedocs.io/en/latest/reporting.html&quot;&gt;PTES&lt;/a&gt;: The split between an executive summary and a technical report&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Assessment Scope&lt;/td&gt;
&lt;td&gt;What was tested, what was excluded, the timing, and the constraints.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://csrc.nist.gov/pubs/sp/800/115/final&quot;&gt;NIST SP 800-115&lt;/a&gt;: Scoping and rules of engagement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Findings Summary&lt;/td&gt;
&lt;td&gt;A severity-ordered table of the findings at a glance, plus a note on what the organization does well.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detailed Findings&lt;/td&gt;
&lt;td&gt;Per finding: the weakness, its risk-adjusted significance, how to confirm it, and how to fix it.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://owasp.org/www-project-web-security-testing-guide/&quot;&gt;OWASP WSTG&lt;/a&gt;: Application testing and finding structure. &lt;a href=&quot;https://www.first.org/cvss/&quot;&gt;CVSS&lt;/a&gt;: A base score used as one input&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remediation Priorities&lt;/td&gt;
&lt;td&gt;The fixes in priority order, weighed against severity and (optionally) the team&apos;s capacity to deliver them.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://owasp.org/www-community/OWASP_Risk_Rating_Methodology&quot;&gt;OWASP Risk Rating&lt;/a&gt;: A likelihood-times-impact derivation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Attack Path Narrative (Optional)&lt;/td&gt;
&lt;td&gt;The path through the environment for a red team engagement, with each technique named inline.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://attack.mitre.org&quot;&gt;MITRE ATT&amp;amp;CK&lt;/a&gt;: Adversary tactics and techniques&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Methodology&lt;/td&gt;
&lt;td&gt;The assessment type, the standards followed, the tools and techniques, and the severity model.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://csrc.nist.gov/pubs/sp/800/115/final&quot;&gt;NIST SP 800-115&lt;/a&gt;: Testing methodology. &lt;a href=&quot;https://csrc.nist.gov/pubs/sp/800/30/r1/final&quot;&gt;NIST SP 800-30&lt;/a&gt;: Framing severity as risk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;About this Report&lt;/td&gt;
&lt;td&gt;The title, the authors, the handling marking, and the follow-up contact.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I&apos;ve written more about &lt;a href=&quot;https://zeltser.com/good-security-assessment-report&quot;&gt;a strong assessment report&lt;/a&gt; and &lt;a href=&quot;https://zeltser.com/why-security-assessment-recommendations-get-ignored&quot;&gt;why your recommendations might get ignored&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>The Past, Present, and Future of the Web&apos;s Trust Model</title><link>https://zeltser.com/past-present-future-web-trust-model</link><guid isPermaLink="true">https://zeltser.com/past-present-future-web-trust-model</guid><description>Observability, short-lived credentials, and active enforcement hold the web&apos;s trust model together. Without them, a decade of Certificate Authority failures would&apos;ve collapsed it. Will those same levers hold for what&apos;s coming next?</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Observability, short-lived credentials, and active enforcement hold the web&apos;s trust model together. Without them, a decade of Certificate Authority failures would&apos;ve collapsed it. Will those same levers hold for what&apos;s coming next?&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://zeltser.com/assets/past-present-future-web-trust-model.DcNjC94X.jpg&quot; alt=&quot;Article illustration&quot; /&gt;&lt;/p&gt;&lt;p&gt;The web&apos;s certificate trust model has held up through more than a decade of CA breaches, misissued certificates, and distrust events. How did it survive that pressure, and where are we heading? You can apply the same patterns to any system where you delegate trust.&lt;/p&gt;
&lt;h2&gt;What it was meant to be.&lt;/h2&gt;
&lt;p&gt;The original &lt;a href=&quot;https://en.wikipedia.org/wiki/Public_key_infrastructure&quot;&gt;Public Key Infrastructure&lt;/a&gt; design assumed trust that could be delegated through a hierarchy of certificate authorities. Root CAs hard-coded into browsers and operating systems would vouch for intermediate CAs, which in turn would vouch for end-entity certificates. On receiving a certificate, a browser would check the chain against trusted roots and accept it as valid. The approach traces back to the early &lt;a href=&quot;https://en.wikipedia.org/wiki/X.509&quot;&gt;X.509&lt;/a&gt; standard work and &lt;a href=&quot;https://en.wikipedia.org/wiki/Transport_Layer_Security&quot;&gt;Netscape&apos;s SSL deployment&lt;/a&gt; in 1995.&lt;/p&gt;
&lt;p&gt;Three assumptions underpinned the design:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CAs would not issue certificates fraudulently.&lt;/li&gt;
&lt;li&gt;Compromised certificates could be revoked, and clients would honor that revocation.&lt;/li&gt;
&lt;li&gt;The list of trusted roots would remain stable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There was no public log of issued certificates. &lt;a href=&quot;https://www.imperialviolet.org/2014/04/19/revchecking.html&quot;&gt;Browsers treated certificate revocations as advisory&lt;/a&gt;. The system relied on each CA doing its job correctly.&lt;/p&gt;
&lt;h2&gt;What happened.&lt;/h2&gt;
&lt;p&gt;CA failures came in waves, each exposing a different design assumption. &lt;a href=&quot;https://en.wikipedia.org/wiki/Certificate_authority#CA_compromise&quot;&gt;Smaller CA incidents had appeared earlier&lt;/a&gt;, but DigiNotar was the first to force browsers to remove a root CA entirely.&lt;/p&gt;
&lt;p&gt;In 2011, &lt;a href=&quot;https://security.googleblog.com/2011/08/update-on-attempted-man-in-middle.html&quot;&gt;Dutch CA DigiNotar was breached&lt;/a&gt; and issued hundreds of fraudulent certificates. The attackers used a wildcard for *.google.com to intercept Gmail traffic in Iran. Any CA could issue a valid certificate for any domain, and revocation only helped after detection.&lt;/p&gt;
&lt;p&gt;Smaller incidents followed. Misissuance by &lt;a href=&quot;https://blog.mozilla.org/security/2013/01/03/revoking-trust-in-two-turktrust-certficates/&quot;&gt;TURKTRUST&lt;/a&gt; and &lt;a href=&quot;https://blog.mozilla.org/security/2013/12/09/revoking-trust-in-one-anssi-certificate/&quot;&gt;ANSSI&lt;/a&gt; in 2013, then &lt;a href=&quot;https://blog.mozilla.org/security/2015/03/23/revoking-trust-in-one-cnnic-intermediate-certificate/&quot;&gt;CNNIC&lt;/a&gt; in 2015, prompted browsers to tighten scrutiny each time.&lt;/p&gt;
&lt;p&gt;Symantec&apos;s CA business &lt;a href=&quot;https://security.googleblog.com/2017/09/chromes-plan-to-distrust-symantec.html&quot;&gt;misissued certificates over several years&lt;/a&gt;, including test certificates &lt;a href=&quot;https://security.googleblog.com/2015/10/sustaining-digital-certificate-security.html&quot;&gt;for domains it didn&apos;t control&lt;/a&gt;. Mozilla and Google &lt;a href=&quot;https://blog.mozilla.org/security/2018/03/12/distrust-symantec-tls-certificates/&quot;&gt;announced a phased rollback of trust&lt;/a&gt; in 2017. &lt;a href=&quot;https://security.googleblog.com/2018/03/distrust-of-symantec-pki-immediate.html&quot;&gt;Chrome removed trust&lt;/a&gt; from Symantec&apos;s old infrastructure entirely in 2018. Symantec, then one of the world&apos;s largest CAs, sold its CA business to &lt;a href=&quot;https://en.wikipedia.org/wiki/DigiCert&quot;&gt;DigiCert&lt;/a&gt; in response to the planned rollback.&lt;/p&gt;
&lt;p&gt;Code signing exposed a related but distinct failure mode:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In 2020, attackers &lt;a href=&quot;https://www.crowdstrike.com/en-us/blog/sunspot-malware-technical-analysis/&quot;&gt;compromised SolarWinds&apos; build process&lt;/a&gt;. The &lt;a href=&quot;https://cloud.google.com/blog/topics/threat-intelligence/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor&quot;&gt;backdoored Orion DLL&lt;/a&gt;, signed with SolarWinds&apos; legitimate certificate, &lt;a href=&quot;https://krebsonsecurity.com/2020/12/solarwinds-hack-could-affect-18k-customers/&quot;&gt;reached 18,000 customers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In 2023, the &lt;a href=&quot;https://cloud.google.com/blog/topics/threat-intelligence/3cx-software-supply-chain-compromise&quot;&gt;3CX compromise&lt;/a&gt; chained signatures end-to-end. A trojanized Trading Technologies installer ran on a 3CX employee&apos;s machine, giving attackers a foothold inside 3CX, whose own signed installer then shipped to customers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The CA validated a legitimate publisher, but the compromise occurred downstream of validation.&lt;/p&gt;
&lt;p&gt;On the TLS side, in 2024 &lt;a href=&quot;https://security.googleblog.com/2024/06/sustaining-digital-certificate-security.html&quot;&gt;Google announced&lt;/a&gt; that Chrome would distrust new Entrust certificates, and &lt;a href=&quot;https://www.theregister.com/2024/08/01/mozilla_entrust/&quot;&gt;Mozilla followed for Firefox&lt;/a&gt;. Both cited a multi-year pattern of compliance failures.&lt;/p&gt;
&lt;p&gt;In September 2025, Croatian CA Fina was &lt;a href=&quot;https://blog.cloudflare.com/unauthorized-issuance-of-certificates-for-1-1-1-1/&quot;&gt;found to have issued twelve unauthorized certificates&lt;/a&gt; for Cloudflare&apos;s 1.1.1.1 DNS resolver. Cloudflare&apos;s disclosure acknowledged that its alerting systems missed the misissuance and an outside researcher caught it. Microsoft&apos;s root store &lt;a href=&quot;https://unmitigatedrisk.com/?p=1092&quot;&gt;trusted Fina&lt;/a&gt;, which exposed Microsoft Edge and other Windows apps relying on the OS root store.&lt;/p&gt;
&lt;p&gt;Each failure drove a structural response:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;How the trust model held up.&lt;/h2&gt;
&lt;p&gt;Repeated CA failures revealed that voluntary self-policing wasn&apos;t enough. Web browsers became the enforcers of industry rules, regularly revoking trust from CAs that failed. &lt;a href=&quot;https://blog.mozilla.org/security/2016/10/24/distrusting-new-wosign-and-startcom-certificates/&quot;&gt;Mozilla&lt;/a&gt; and &lt;a href=&quot;https://support.apple.com/103723&quot;&gt;Apple&lt;/a&gt; distrusted WoSign and StartCom in 2016 for compliance failures, and Symantec&apos;s 2018 distrust extended that pattern to a major CA. When Entrust drew the same response in 2024, the industry processed it without a crisis.&lt;/p&gt;
&lt;p&gt;Nobody outside the CA could see which certificates were being issued. After DigiNotar, that gap could no longer be ignored. Google proposed &lt;a href=&quot;https://en.wikipedia.org/wiki/Certificate_Transparency&quot;&gt;Certificate Transparency&lt;/a&gt; in 2012 and &lt;a href=&quot;https://www.thesslstore.com/blog/certificate-transparency-april-30-2018/&quot;&gt;shipped enforcement in Chrome&lt;/a&gt; by 2018. Certificates meant for browsers now appear in append-only logs, since Chrome and Safari reject those issued without proof of logging. Services such as &lt;a href=&quot;https://crt.sh/&quot;&gt;crt.sh&lt;/a&gt; make the logs queryable. That makes misissuance detectable within minutes, but only if someone watches.&lt;/p&gt;
&lt;p&gt;Browsers checked revocation status best-effort and, by default, &lt;a href=&quot;https://letsencrypt.org/2024/07/23/replacing-ocsp-with-crls/&quot;&gt;proceeded even when checks failed&lt;/a&gt;, leaving compromised certificates valid until natural expiration. The &lt;a href=&quot;https://cabforum.org/&quot;&gt;CA/Browser Forum&lt;/a&gt;, a consortium of CAs and browser vendors, gradually shortened certificate validity from &lt;a href=&quot;https://cabforum.org/working-groups/server/baseline-requirements/faq/&quot;&gt;60 months in 2012&lt;/a&gt; to &lt;a href=&quot;https://www.digicert.com/blog/tls-certificate-lifetimes-will-officially-reduce-to-47-days&quot;&gt;200 days in 2026&lt;/a&gt;. This limited the damage any single failure could cause.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/DNS_Certification_Authority_Authorization&quot;&gt;Certification Authority Authorization (CAA)&lt;/a&gt; gave domain owners a way to constrain certificate issuance. They can publish DNS records declaring authorized CAs, and CAs have been required to check CAA since 2017.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://letsencrypt.org/2025/12/09/10-years/&quot;&gt;Let&apos;s Encrypt&apos;s first decade&lt;/a&gt; brought mass automation, with free certificates starting in 2015. &lt;a href=&quot;https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment&quot;&gt;ACME&lt;/a&gt;, the certificate-automation protocol, was standardized as &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc8555&quot;&gt;RFC 8555&lt;/a&gt; in 2019. Domain validation went from a manual sales transaction to a sub-minute API call.&lt;/p&gt;
&lt;p&gt;For code signing, Sigstore &lt;a href=&quot;https://github.com/sigstore/rekor&quot;&gt;brought Certificate Transparency&apos;s design&lt;/a&gt; to software signing. The &lt;a href=&quot;https://www.linuxfoundation.org/press/press-release/linux-foundation-announces-free-sigstore-signing-service-to-confirm-origin-and-authenticity-of-software&quot;&gt;Linux Foundation launched it&lt;/a&gt; as a free signing service in 2021. Sigstore&apos;s CA, Fulcio, issues short-lived certificates bound to &lt;a href=&quot;https://en.wikipedia.org/wiki/OpenID_Connect&quot;&gt;OpenID Connect (OIDC)&lt;/a&gt; identities, such as a developer&apos;s Google or GitHub account. Each issuance is &lt;a href=&quot;https://docs.sigstore.dev/logging/overview/&quot;&gt;recorded to Sigstore&apos;s public log, Rekor&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PyPI shipped &lt;a href=&quot;https://blog.pypi.org/posts/2024-11-14-pypi-now-supports-digital-attestations/&quot;&gt;digital attestations&lt;/a&gt; in 2024, and npm supports &lt;a href=&quot;https://github.blog/security/supply-chain-security/introducing-npm-package-provenance/&quot;&gt;Sigstore-bundled provenance&lt;/a&gt; for packages that opt into it. &lt;a href=&quot;https://docs.sigstore.dev/certificate_authority/overview/&quot;&gt;Sigstore&apos;s signing certificates last minutes&lt;/a&gt; rather than years, and &lt;a href=&quot;https://docs.sigstore.dev/cosign/signing/overview/&quot;&gt;the keys are ephemeral&lt;/a&gt;, generated in memory for one signature and then destroyed.&lt;/p&gt;
&lt;h2&gt;What it is now.&lt;/h2&gt;
&lt;p&gt;Today&apos;s public TLS operates on observability, short validity, and active enforcement. Every certificate that browsers accept is logged, making CA behavior observable to anyone watching. Validity is short enough that bad trust mostly expires before it spreads. The CA/Browser Forum produces the rules, browsers enforce them, and CAs that drift get distrusted.&lt;/p&gt;
&lt;p&gt;Code signing hasn&apos;t caught up. Browsers don&apos;t enforce it the way they enforce TLS, there&apos;s no public-log equivalent to CT, and distrust of code-signing CAs is slower and less visible. Code signing still assumes that a publisher&apos;s environment is trustworthy. Sigstore is the structural answer for the open-source ecosystem, but &lt;a href=&quot;https://zenn.dev/sqer/articles/e4df3d397f5651?locale=en&quot;&gt;adoption is uneven&lt;/a&gt; outside Linux Foundation projects. Enterprise software signing still relies on long-lived CA-issued certificates whose private keys live in environments that can be compromised.&lt;/p&gt;
&lt;p&gt;Public TLS has begun shifting to post-quantum cryptography, starting with key exchange. &lt;a href=&quot;https://blog.cloudflare.com/pq-2025/&quot;&gt;Cloudflare reported&lt;/a&gt; that hybrid post-quantum key exchange covered most human-initiated traffic on its network by late 2025. Chrome made &lt;a href=&quot;https://thehackernews.com/2024/09/google-chrome-switches-to-ml-kem-for.html&quot;&gt;hybrid post-quantum key exchange the default&lt;/a&gt; in 2024.&lt;/p&gt;
&lt;h2&gt;Where it&apos;s going.&lt;/h2&gt;
&lt;p&gt;The CA/Browser Forum has &lt;a href=&quot;https://cabforum.org/2025/04/11/ballot-sc081v3-introduce-schedule-of-reducing-validity-and-data-reuse-periods/&quot;&gt;scheduled further cuts&lt;/a&gt; to public TLS validity, dropping it to 100 days in 2027 and 47 days in 2029. Domain validation reuse, the time before a CA must re-verify domain ownership, drops to 10 days at the same 2029 milestone. Manual rotation is impractical at 200 days, and untenable at 47.&lt;/p&gt;
&lt;p&gt;Signatures are harder to migrate. NIST&apos;s post-quantum signature algorithms produce &lt;a href=&quot;https://blog.cloudflare.com/sizing-up-post-quantum-signatures/&quot;&gt;much larger signatures&lt;/a&gt;, pushing TLS handshakes past TCP&apos;s initial congestion window and adding round-trip latency. The CA/Browser Forum has adopted &lt;a href=&quot;https://cabforum.org/2025/07/02/ballot-smc-013/&quot;&gt;post-quantum profiles for email certificates&lt;/a&gt;, where size matters less, but TLS profiles remain in draft.&lt;/p&gt;
&lt;p&gt;Google is &lt;a href=&quot;https://postquantum.com/security-pqc/googles-merkle-tree-mtc-https/&quot;&gt;working with Cloudflare on Merkle Tree Certificates&lt;/a&gt; for Chrome. The CA batch-issues certificates and publishes a Merkle tree root, and the server presents an inclusion proof against that root. No per-certificate signature crosses the wire, so handshakes stay small and avoid the latency penalty. First deployments of any post-quantum certificate flavor &lt;a href=&quot;https://blog.cloudflare.com/pq-2025/&quot;&gt;are expected in 2026&lt;/a&gt;, with broad browser trust unlikely before 2027.&lt;/p&gt;
&lt;h2&gt;What this means.&lt;/h2&gt;
&lt;p&gt;The web&apos;s trust model became resilient because browsers and CAs addressed every failure with a structural fix. Certificate Transparency emerged from CA opacity, shorter validity from unreliable revocation, and Sigstore from long-lived signing keys. Behind all three are &lt;em&gt;observability&lt;/em&gt;, &lt;em&gt;short-lived credentials&lt;/em&gt;, and &lt;em&gt;active enforcement&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Beyond public TLS, the same three levers strengthen any delegated-trust system. They apply to code signing, container registries, package repositories, internal PKI, identity federation, and third-party APIs. Without those three levers, any of those trustees becomes a single point of failure for everything relying on its decisions.&lt;/p&gt;
&lt;p&gt;Identity federation runs on the same three levers in the form of short-lived OIDC tokens, federated session monitoring, and &lt;a href=&quot;https://learn.microsoft.com/en-us/entra/identity/conditional-access/concept-continuous-access-evaluation&quot;&gt;Continuous Access Evaluation&lt;/a&gt;. Long-lived API keys break all three, valid for years even if the issuer is breached.&lt;/p&gt;
&lt;p&gt;Security teams can apply this pattern wherever they&apos;ve delegated trust. Each lever maps to one question:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Observability:&lt;/strong&gt; Can you see every credential the trustee issued in the last 30 days?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Short-lived credentials:&lt;/strong&gt; Will a key leaked today expire before doing damage?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Active enforcement:&lt;/strong&gt; Can you enforce consequences when a trustee misbehaves?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The web&apos;s trust model held because every breach forced one of those three answers to yes. So should yours.&lt;/p&gt;
</content:encoded></item><item><title>A Report Template for Cyber Threat Intelligence</title><link>https://zeltser.com/cyber-threat-intel-report-template</link><guid isPermaLink="true">https://zeltser.com/cyber-threat-intel-report-template</guid><description>Cyber threat intelligence analysts produce credible reports by weighing signals at tactical, operational, and strategic levels. A customizable CTI report template helps analysts capture activity, attribute it with calibrated confidence, and translate findings into defensive actions.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Cyber threat intelligence analysts produce credible reports by weighing signals at tactical, operational, and strategic levels. A customizable CTI report template helps analysts capture activity, attribute it with calibrated confidence, and translate findings into defensive actions.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://zeltser.com/assets/cyber-threat-intel-report-template.B8SZYcQk.jpg&quot; alt=&quot;Article illustration&quot; /&gt;&lt;/p&gt;&lt;p&gt;Authors of cyber threat intelligence (CTI) reports need to follow the CTI discipline to create well-supported findings, but that&apos;s not enough. They also need to communicate their analysis so stakeholders can make informed decisions. The CTI report template helps with that by providing structured guidance for CTI analysts, incident response teams, and cybersecurity vendors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download the template and make it your own;&lt;/strong&gt; it&apos;s available as &lt;a href=&quot;https://zeltser.com/media/archive/cyber-threat-intel-report-template.md&quot;&gt;Markdown&lt;/a&gt; and &lt;a href=&quot;https://zeltser.com/media/archive/cyber-threat-intel-report-template.docx&quot;&gt;Word&lt;/a&gt; files. A companion brief template helps you share key insights with decision-makers (&lt;a href=&quot;https://zeltser.com/media/archive/cyber-threat-intel-brief-template.md&quot;&gt;Markdown&lt;/a&gt;, &lt;a href=&quot;https://zeltser.com/media/archive/cyber-threat-intel-brief-template.docx&quot;&gt;Word&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;You can also &lt;strong&gt;use my MCP server with your AI agent&lt;/strong&gt; to improve or generate  CTI reports using these templates and my guidance. It&apos;s designed to offer insights without receiving your sensitive data. To use it, add &lt;code&gt;https://website-mcp.zeltser.com/mcp&lt;/code&gt; to your AI agent&apos;s config.&lt;/p&gt;
&lt;p&gt;At a high level, the CTI report template&apos;s foundation is the Q Model, introduced in Thomas Rid and Ben Buchanan&apos;s &lt;a href=&quot;https://doi.org/10.1080/01402390.2014.977382&quot;&gt;Attributing Cyber Attacks&lt;/a&gt;. It groups threat intelligence into three analytic levels, each requiring different evidence:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tactical:&lt;/strong&gt; The incident&apos;s technical aspects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operational:&lt;/strong&gt; The campaign and the actor running it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strategic:&lt;/strong&gt; Who is responsible and why the operation matters.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The template also follows other CTI frameworks:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Section&lt;/th&gt;
&lt;th&gt;What it captures&lt;/th&gt;
&lt;th&gt;Frameworks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Executive Summary&lt;/td&gt;
&lt;td&gt;Bottom-line claim plus a Key Findings table that pairs each finding with a decision question and calibrated confidence.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://www.dni.gov/files/documents/ICD/ICD-203.pdf&quot;&gt;ICD-203&lt;/a&gt;: Calibrated confidence, with likelihood for forward-looking claims&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Actor Snapshot&lt;/td&gt;
&lt;td&gt;Quick-reference profile of the actor or activity cluster.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Methodology&lt;/td&gt;
&lt;td&gt;Sources, gaps, analytic techniques, and the calibration framework.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://www.dni.gov/files/documents/ICD/ICD-203.pdf&quot;&gt;ICD-203&lt;/a&gt;: Calibrated confidence, with likelihood for forward-looking claims. Richards Heuer&apos;s &lt;a href=&quot;https://www.cia.gov/resources/csi/books-monographs/psychology-of-intelligence-analysis-2/&quot;&gt;Psychology of Intelligence Analysis&lt;/a&gt; and the &lt;a href=&quot;https://www.cia.gov/resources/csi/static/Tradecraft-Primer-apr09.pdf&quot;&gt;CIA Tradecraft Primer&lt;/a&gt;: Structured analytic techniques such as Analysis of Competing Hypotheses.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Activity Overview&lt;/td&gt;
&lt;td&gt;Date range of observed activity, victim profile (whether targeting was deliberate or opportunistic), and related reporting.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Representative Adversary Techniques&lt;/td&gt;
&lt;td&gt;The most representative techniques observed, mapped to a common adversary-behavior framework.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://attack.mitre.org&quot;&gt;MITRE ATT&amp;amp;CK®&lt;/a&gt;: Adversary tactics, techniques, and procedures&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Indicators of Compromise&lt;/td&gt;
&lt;td&gt;A tiered indicator table organized by cost to the adversary, adapted to include cloud and identity artifacts.&lt;/td&gt;
&lt;td&gt;David Bianco&apos;s &lt;a href=&quot;https://detect-respond.blogspot.com/2013/03/the-pyramid-of-pain.html&quot;&gt;Pyramid of Pain&lt;/a&gt;: Indicator tiering by adversary cost. &lt;a href=&quot;https://docs.oasis-open.org/cti/stix/v2.1/os/stix-v2.1-os.html&quot;&gt;STIX&lt;/a&gt;: Machine-readable observable bundle supplied separately.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Defensive Implications&lt;/td&gt;
&lt;td&gt;Defensive actions tied to the observed techniques, detection content, and vendor coverage.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://d3fend.mitre.org&quot;&gt;MITRE D3FEND™&lt;/a&gt;: Defensive countermeasure vocabulary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Attribution Analysis&lt;/td&gt;
&lt;td&gt;An attribution claim supported by six signals examined together.&lt;/td&gt;
&lt;td&gt;My &lt;a href=&quot;https://zeltser.com/six-signals-for-threat-attribution&quot;&gt;Six Signals for Threat Attribution&lt;/a&gt;: Convergence-based attribution method&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anticipated Activity&lt;/td&gt;
&lt;td&gt;Forward-looking notes on what may come next and conditions that would shift the picture.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strategic Analysis (Optional)&lt;/td&gt;
&lt;td&gt;The activity&apos;s broader significance (geopolitical, commercial, or ideological), when such analysis is in scope.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Competing Hypotheses (Optional)&lt;/td&gt;
&lt;td&gt;Structured comparison of candidate hypotheses against the evidence, when more than one viable hypothesis remains.&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://www.cia.gov/resources/csi/books-monographs/psychology-of-intelligence-analysis-2/&quot;&gt;Analysis of Competing Hypotheses&lt;/a&gt;: Richards Heuer&apos;s method for evaluating multiple hypotheses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;About this Report&lt;/td&gt;
&lt;td&gt;Title, authorship, classification, follow-up contact, and changelog.&lt;/td&gt;
&lt;td&gt;FIRST&apos;s &lt;a href=&quot;https://www.first.org/tlp/&quot;&gt;Traffic Light Protocol (TLP)&lt;/a&gt;: Sharing classification convention. MISP&apos;s &lt;a href=&quot;https://github.com/MISP/misp-taxonomies/tree/main/PAP&quot;&gt;Permissible Actions Protocol (PAP)&lt;/a&gt;: Permitted actions on received indicators.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For responder guidance related to cybersecurity incidents, use the &lt;a href=&quot;https://zeltser.com/incident-response-report-template&quot;&gt;Incident Response Report Template&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Six Signals for Threat Attribution</title><link>https://zeltser.com/six-signals-for-threat-attribution</link><guid isPermaLink="true">https://zeltser.com/six-signals-for-threat-attribution</guid><description>Credible threat attribution weighs six signals together. Each signal has a disciplined methodology behind it, with citations and stress tests to back the conclusions.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Credible threat attribution weighs six signals together. Each signal has a disciplined methodology behind it, with citations and stress tests to back the conclusions.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://zeltser.com/assets/six-signals-for-threat-attribution.CmsZiaIv.jpg&quot; alt=&quot;Article illustration&quot; /&gt;&lt;/p&gt;&lt;p&gt;&quot;A Chinese state-sponsored group.&quot; &quot;Tied to APT41.&quot; &quot;ShinyHunters.&quot; Phrases like these appear in vendor advisories, government bulletins, and news coverage. We use them to inform response steps, vendor decisions, and conversations with leadership. The work that produces them is typically done by security vendors, government agencies, and enterprise threat intelligence teams. Some incident response teams track attribution signals when connecting an intrusion to a known cluster of activity.&lt;/p&gt;
&lt;p&gt;Threat attribution is the process by which analysts link cyber intrusions to the actors behind them. They build attribution cases to defend against the next campaign, predict the actor&apos;s next move, and share evidence-backed findings with customers, regulators, and partners. Whether you produce such conclusions or rely on them, let&apos;s look at how the work gets done when the picture is incomplete and the stakes are high.&lt;/p&gt;
&lt;h2&gt;Three Levels of Attribution&lt;/h2&gt;
&lt;p&gt;Threat attribution has three levels, per Thomas Rid and Ben Buchanan&apos;s &lt;a href=&quot;https://ridt.co/d/rid-buchanan-attributing-cyber-attacks.pdf&quot;&gt;&quot;Attributing Cyber Attacks&quot;&lt;/a&gt; (the Q Model), each requiring different evidence to support its claims:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tactical:&lt;/strong&gt; We examine the incident&apos;s technical aspects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operational:&lt;/strong&gt; We characterize the campaign and the actor running it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strategic:&lt;/strong&gt; We ask who is responsible and why the operation matters.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Across those levels, one way to build a rigorous attribution case is to weigh six signals: &lt;em&gt;Victim&lt;/em&gt;, &lt;em&gt;Targeting Intent&lt;/em&gt;, &lt;em&gt;Tradecraft&lt;/em&gt;, &lt;em&gt;Tooling&lt;/em&gt;, &lt;em&gt;Identity Artifacts&lt;/em&gt;, and &lt;em&gt;Infrastructure&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Victim: The Targeting Profile&lt;/h2&gt;
&lt;p&gt;When examining the Victim signal, we ask who was targeted and what sector the threat actor operates in. The &lt;a href=&quot;https://www.activeresponse.org/wp-content/uploads/2013/07/diamond.pdf&quot;&gt;Diamond Model of Intrusion Analysis&lt;/a&gt; by Sergio Caltagirone, Andrew Pendergast, and Christopher Betz treats &lt;em&gt;Victim&lt;/em&gt; as one of four features for any intrusion. When targets share a profile, the Victim signal is a strong input to attribution.&lt;/p&gt;
&lt;p&gt;The victim profile helps identify a potential threat actor and rule out one whose targets don&apos;t fit. For example, a &lt;a href=&quot;https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-239a&quot;&gt;CISA joint advisory&lt;/a&gt; on Salt Typhoon identifies targets across telecom, government, transportation, lodging, and military networks. These sectors carry intelligence value and suggest a government-affiliated actor. A threat actor focused on e-commerce operations doesn&apos;t fit this profile and is likely to be a different crew.&lt;/p&gt;
&lt;p&gt;The Victim signal doesn&apos;t work on its own, since threat actors can also pursue atypical or opportunistic targets.&lt;/p&gt;
&lt;h2&gt;Targeting Intent: What the Threat Actor Pursued&lt;/h2&gt;
&lt;p&gt;Targeting Intent is what a threat actor pursued, meaning the data, access, or operational effects they prioritized. By examining what a threat actor collects, copies, or destroys, we narrow the field of suspects.&lt;/p&gt;
&lt;p&gt;A US &lt;a href=&quot;https://www.justice.gov/opa/pr/seven-international-cyber-defendants-including-apt41-actors-charged-connection-computer&quot;&gt;Justice Department indictment&lt;/a&gt; of defendants tied to APT41 describes the theft of source code, software code-signing certificates, customer account data, and business information across a wide range of victim organizations. This combination of intelligence-style espionage and revenue-motivated theft became part of the attribution argument that APT41 operated with both state-aligned and criminally motivated objectives.&lt;/p&gt;
&lt;p&gt;Motive can be hard to infer from Targeting Intent alone, and the signal gets stronger when infrastructure and tradecraft support the same conclusion.&lt;/p&gt;
&lt;h2&gt;Tradecraft: The Threat Actor&apos;s Method&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Tradecraft&quot;&gt;Tradecraft&lt;/a&gt; is an intelligence-community term for a threat actor&apos;s habits, including lure documents, social-engineering pretexts, phishing tactics, and timing. MITRE ATT&amp;amp;CK organizes these behaviors under tactics such as &lt;a href=&quot;https://attack.mitre.org/tactics/TA0001/&quot;&gt;Initial Access&lt;/a&gt; and techniques such as &lt;a href=&quot;https://attack.mitre.org/techniques/T1566/&quot;&gt;Phishing&lt;/a&gt;, with sub-techniques for spearphishing attachments, links, services, and voice. ATT&amp;amp;CK is useful for attribution because it gives analysts a shared vocabulary for behaviors that persist across campaigns.&lt;/p&gt;
&lt;p&gt;A joint CISA-FBI-Treasury &lt;a href=&quot;https://www.cisa.gov/news-events/cybersecurity-advisories/aa22-108a&quot;&gt;advisory on TraderTraitor&lt;/a&gt; describes how the Lazarus Group approached cryptocurrency-company employees in system administration and DevOps across a variety of communication platforms, with spearphishing messages that &quot;mimic a recruitment effort and offer high-paying jobs&quot; to deliver trojanized cryptocurrency applications. The same recruitment-style lure pattern recurred across years and platforms, allowing intelligence analysts to attribute new campaigns to the group.&lt;/p&gt;
&lt;p&gt;Tradecraft alone doesn&apos;t settle attribution, and the signal gets stronger when tooling, identity artifacts, and infrastructure support the same conclusion.&lt;/p&gt;
&lt;h2&gt;Tooling: The Threat Actor&apos;s Toolchain&lt;/h2&gt;
&lt;p&gt;Tooling covers the malware families, frameworks, and custom code a threat actor uses. We can identify Tooling through toolmarks. Debug strings, embedded paths, language packs, compiler artifacts, custom encoding routines, and reused error-handling code all reveal fingerprints of the development environment. David Bianco&apos;s &lt;a href=&quot;https://detect-respond.blogspot.com/2013/03/the-pyramid-of-pain.html&quot;&gt;&quot;Pyramid of Pain&quot;&lt;/a&gt; places tools close to the top of the indicator hierarchy because changing them is costly for the threat actor.&lt;/p&gt;
&lt;p&gt;Public threat reports document the specific toolmarks of named campaigns. Some examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Salt Typhoon advisory mentioned earlier documents specific exploits and router-configuration commands the actors used, which lets defenders link new intrusions to the same group.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://citizenlab.ca/2021/07/amnesty-peer-review/&quot;&gt;Citizen Lab&apos;s review&lt;/a&gt; of Amnesty International&apos;s Pegasus methodology walks through process names, installation-server traffic, and iOS backup patterns that attribute a compromise to NSO Group&apos;s Pegasus spyware, narrowing the field to NSO&apos;s government customers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tooling evidence supports attribution only when it accumulates across multiple operations. The signals are consistent enough for defenders to hunt on and for analysts to cross-check. However, threat actors can strip compiler metadata, randomize string tables, and rotate their toolchain.&lt;/p&gt;
&lt;p&gt;Threat actors can also forge toolmarks to mimic other groups. The Olympic Destroyer malware that hit the PyeongChang Winter Olympics carried a &lt;a href=&quot;https://www.wired.com/story/untold-story-2018-olympics-destroyer-cyberattack/&quot;&gt;forged header&lt;/a&gt; that mimicked the Lazarus Group&apos;s fingerprints, and initial analysis pointed to North Korea. &lt;a href=&quot;https://securelist.com/olympicdestroyer-is-here-to-trick-the-industry/84295/&quot;&gt;Kaspersky&apos;s GReAT team reconstructed the deception&lt;/a&gt;, and a &lt;a href=&quot;https://www.justice.gov/archives/opa/pr/six-russian-gru-officers-charged-connection-worldwide-deployment-destructive-malware-and&quot;&gt;US Justice Department&lt;/a&gt; indictment later named six GRU officers for the attack.&lt;/p&gt;
&lt;h2&gt;Identity Artifacts: The Threat Actor&apos;s Trail&lt;/h2&gt;
&lt;p&gt;Identity Artifacts are the trail threat actors leave behind, including code-signing certificates, domain registrant data, email and persona reuse, and payment trails. They cut across operational and strategic levels. Reused identities can become some of the most durable evidence in an attribution case.&lt;/p&gt;
&lt;p&gt;A persona-reuse trail can sometimes lead investigators to a threat actor&apos;s real identity. In one &lt;a href=&quot;https://krebsonsecurity.com/2024/11/canadian-man-arrested-in-snowflake-data-extortions/&quot;&gt;KrebsOnSecurity investigation&lt;/a&gt;, Brian Krebs traced the handle &quot;Judische&quot; through years of cybercrime forum activity, finding the same person posting on Telegram and Discord under the nickname &quot;Waifu.&quot; That persona trail was part of the investigation that led to an &lt;a href=&quot;https://www.cbc.ca/news/canada/kitchener-waterloo/snowflake-data-breach-kitchener-accused-possible-extradition-1.7394891&quot;&gt;arrest in Canada&lt;/a&gt; for the Snowflake extortions.&lt;/p&gt;
&lt;p&gt;Identity Artifacts can also be stolen, sold, or planted, so analysts test whether the identity trail is consistent with the victim profile, the tradecraft, and the infrastructure.&lt;/p&gt;
&lt;h2&gt;Infrastructure: The Network and Hosting Footprint&lt;/h2&gt;
&lt;p&gt;Infrastructure is the network and hosting footprint a threat actor builds, including command-and-control domains, IP addresses, registration patterns, hosting providers, and the time each component came online. It spans tactical, operational, and strategic attribution. The Diamond Model treats Infrastructure as one of its four core features. The attribution value of Infrastructure comes from connections across operations rather than from any single indicator.&lt;/p&gt;
&lt;p&gt;A US Justice Department &lt;a href=&quot;https://www.justice.gov/opa/pr/grand-jury-indicts-12-russian-intelligence-officers-hacking-offenses-related-2016-election&quot;&gt;indictment of twelve GRU officers&lt;/a&gt; for the DNC intrusion is an example of infrastructure-driven attribution. It documents three connected patterns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The same servers used across several intrusions&lt;/li&gt;
&lt;li&gt;A cryptocurrency pool that funded the infrastructure leasing and the registration of related domains&lt;/li&gt;
&lt;li&gt;The same hosting used for both the intrusion and the &quot;Guccifer 2.0&quot; and &quot;DCLeaks&quot; personas that distributed the stolen data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prosecutors built the case on the pattern of reuse, with the same Bitcoin funding the infrastructure and the same units operating it.&lt;/p&gt;
&lt;p&gt;Infrastructure tracking gets stronger across time. Threat actors can rotate domains, switch providers, and burn campaign infrastructure quickly, but we can spot reuse patterns across many operations.&lt;/p&gt;
&lt;h2&gt;A Disciplined Approach to Attribution&lt;/h2&gt;
&lt;p&gt;A disciplined approach to attribution involves weighing signals for convergence, carefully labeling confidence, and testing competing explanations against the evidence.&lt;/p&gt;
&lt;p&gt;The six signals work as a connected system rather than a checklist. A key insight of the Diamond Model is that analysts pivot across features, using a finding at one corner to ask questions at another. The same evidence can feed multiple signals. A code-signing certificate, for example, is Tooling evidence about a binary or an Identity Artifact about the cert holder. The strongest attribution arguments come from several signals converging.&lt;/p&gt;
&lt;p&gt;Labeling confidence is part of this discipline. The US Intelligence Community formalized this practice in &lt;a href=&quot;https://www.dni.gov/files/documents/ICD/ICD-203.pdf&quot;&gt;Intelligence Community Directive 203&lt;/a&gt;, which has shaped how analysts across government and commercial threat intelligence express confidence levels. In attribution work, we can label confidence as &lt;em&gt;high&lt;/em&gt;, &lt;em&gt;moderate&lt;/em&gt;, or &lt;em&gt;low&lt;/em&gt;, identify what would change the assessment, and distinguish observation from inference.&lt;/p&gt;
&lt;p&gt;Intelligence analysts also test competing explanations against the evidence. The &lt;a href=&quot;https://www.cia.gov/resources/csi/books-monographs/psychology-of-intelligence-analysis-2/&quot;&gt;Analysis of Competing Hypotheses&lt;/a&gt;, developed at the CIA by Richards J. Heuer Jr., is a structured method for weighing each attribution hypothesis against the signals. Using it involves listing all plausible attributions, then asking which signals fit each one and which contradict it. After comparing the hypotheses, we report the one the evidence supports, along with any alternatives we couldn&apos;t rule out.&lt;/p&gt;
&lt;p&gt;Each signal is partial and has known limits, but together they let us build a rigorous attribution. If the signals converge, we report what we found and our level of confidence. If they don&apos;t, we say so. Either way, the work is credible when we follow this discipline.&lt;/p&gt;
&lt;figure&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/figure&gt;</content:encoded></item><item><title>Plant Decoy Personas to Detect Impersonation Attacks</title><link>https://zeltser.com/the-notion-of-a-honeypot-persona</link><guid isPermaLink="true">https://zeltser.com/the-notion-of-a-honeypot-persona</guid><description>Decoy personas extend honeytoken thinking to user accounts and public profiles. The technique gives defenders a tripwire on the identity surface that other detection layers don&apos;t cover.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Decoy personas extend honeytoken thinking to user accounts and public profiles. The technique gives defenders a tripwire on the identity surface that other detection layers don&apos;t cover.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://zeltser.com/assets/the-notion-of-a-honeypot-persona.h63dEXxP.jpg&quot; alt=&quot;Article illustration&quot; /&gt;&lt;/p&gt;&lt;p&gt;A &lt;em&gt;decoy persona&lt;/em&gt; is a fake identity established to catch attackers as they probe your workforce. Plant it wherever threat actors look for employees to pursue in scams and other attacks. The unexpected interaction lets you detect the incident, so you can curtail it before it escalates.&lt;/p&gt;
&lt;h2&gt;No one legitimate should touch a decoy persona.&lt;/h2&gt;
&lt;p&gt;An effective decoy is a privileged-looking user account in your directory that fires when someone tries to use it. You can set up your SIEM tool to alert you when someone accesses the account. Customers of Microsoft Defender for Identity can also achieve this through the product&apos;s &lt;a href=&quot;https://learn.microsoft.com/en-us/defender-for-identity/entity-tags&quot;&gt;honeytoken tagging&lt;/a&gt; feature.&lt;/p&gt;
&lt;p&gt;On the public web, you can apply the same pattern to a LinkedIn profile representing a fictional employee (consider LinkedIn&apos;s terms of use). Connection requests, recruiter outreach, and InMail attempts all become signals because the person doesn&apos;t exist. A fake executive email address in a public org chart offers similar value after you filter out the spam. So does a decoy press contact an attacker reaches for during a social-engineering pretext.&lt;/p&gt;
&lt;p&gt;Decoy personas rely on asymmetry. Since you know which identities are decoys and the attacker doesn&apos;t, any contact with one is a useful alert.&lt;/p&gt;
&lt;h2&gt;A convincing decoy needs a backstory and isolation from production.&lt;/h2&gt;
&lt;p&gt;Attackers can fingerprint thin LinkedIn profiles and dismiss them as bait. A convincing decoy incorporates prior employers, posting activities, and a social network that fits the role. The same principle applies to internal directory accounts: names like &lt;code&gt;test_admin&lt;/code&gt; or &lt;code&gt;decoy01&lt;/code&gt; give the bait away. Researchers cataloging &lt;a href=&quot;https://trufflesecurity.com/blog/canaries&quot;&gt;Canarytoken fingerprints&lt;/a&gt; make a similar point about file-based bait.&lt;/p&gt;
&lt;p&gt;Isolate identity paths between the decoy and the production environment. A decoy account should never share SSO, MFA, or directory backends with production accounts. Use disposable credentials and a separate identity store. If session cookies, VPN configs, or outbound rules overlap with production services, the decoy can enable lateral movement.&lt;/p&gt;
&lt;h2&gt;Plant a decoy persona this week.&lt;/h2&gt;
&lt;p&gt;Decoy personas are an identity tripwire in your &lt;a href=&quot;https://zeltser.com/protean-information-security-architecture&quot;&gt;deception architecture&lt;/a&gt;, alongside &lt;a href=&quot;https://zeltser.com/plant-honeytokens&quot;&gt;honeytokens&lt;/a&gt; and &lt;a href=&quot;https://zeltser.com/decoy-mcp-server-honeypot&quot;&gt;decoy MCP servers&lt;/a&gt;. They alert you early in the attack chain, giving you a chance to intervene before it escalates.&lt;/p&gt;
</content:encoded></item></channel></rss>