<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[SOC - Elastic Security Labs]]></title>
    <description><![CDATA[Trusted security news & research from the team at Elastic.]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[SOC - Elastic Security Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte2c6b841aff36df4/6a88d9784acc96e3f324863d/security-labs-thumbnail.png</url>
      <link>https://www.elastic.co/security-labs/blog/category/soc</link>
    </image>
    <link>https://www.elastic.co/security-labs/blog/category/soc</link>
    <atom:link href="https://www.elastic.co/security-labs/rss/category/soc.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[en]]></language>
    <lastBuildDate>Sun, 11 Oct 2026 18:22:02 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Introducing AlertZero: Inbox zero for your alert queue]]></title>
    <description><![CDATA[AlertZero brings AI SOC automation to Elastic Security with four agents, one job each, so the queue stops setting your priorities. Nothing changes in your environment without your approval.]]></description>
    <content:encoded><![CDATA[<p>For the last several months, we’ve been busy talking to security teams and building answers to the AI-accelerated challenges that you’ve told us you’re facing. Among these are the overwhelming volume and velocity of alerts, exacerbated by attackers equipped with AI. <a href="https://www.elastic.co/security-labs/threat-command/ai-agent-attack-detection-hugging-face-breach">The Hugging Face incident</a> demonstrated another core challenge in the security operations center (SOC). Even if all of the signals are detected, that’s not enough, unless something connects them as part of a single attack. Combined, these problems force most teams to ration coverage by headcount, so the contents of the alert queue decide what gets attention, and the rest ages out unexamined. Spending time on proactive defenses then feels even more challenging. </p><p>Today, we’re giving you a peek at AlertZero, the new agentic layer of Elastic Security. AlertZero has a straightforward premise: put SOC teams on the path to the equivalent of inbox zero for alerts, with every alert answered. It does this by reducing the existing queue and the false positives that contribute to it, through high-volume correlation and enrichment, proposing actions, and then helping to create and tune detections. </p><p>AlertZero has agents, called Watches, each with one named job: Triage, Hunt, Detection, or Forensics. The Watches run on triggers and schedules to propose evidence-backed conclusions, called Proposed Actions, for approval, modification, escalation, or dismissal. Each Watch surfaces decisions to the analyst based on its autonomy level: manual, assisted, or supervised. Regardless of level, every consequential action is proposed to the analyst for approval.</p><p>AlertZero retains the same ″open by design″ philosophy as Elastic Security. You can use the model that works best for your team, including proprietary and open source models, with the same product and features, across Elastic Cloud, self-managed, or fully air-gapped.</p><p>We didn’t think of this overnight. AlertZero builds on three years of generative AI (GenAI) innovation in Elastic Security. <a href="https://www.elastic.co/blog/introducing-elastic-ai-assistant">Elastic AI Assistant</a> started with conversational help in 2023. <a href="https://www.elastic.co/blog/whats-new-elastic-security-8-14-0">Attack Discovery</a> extended that into a dedicated investigation task in 2024, connecting related alerts into an attack narrative. <a href="https://www.elastic.co/docs/solutions/security/ai/agent-builder/agent-builder">Elastic Agent Builder</a> and <a href="https://www.elastic.co/security-labs/blog/skills-elastic-security-9-4">security skills</a> added agents that use tools and apply domain expertise, while <a href="https://www.elastic.co/security-labs/blog/security-automation-with-elastic-workflows">Elastic Workflows</a> supplies repeatable execution. AlertZero brings these capabilities together, tailored to the responsibilities of a SOC.</p><p></p><h2><strong>AlertZero Watches stay in their lane (and they handle it well)</strong></h2><p>Every Watch in AlertZero is directly aligned with the key responsibilities in the SOC, and their levels of autonomy are customizable. Within each Watch, Workers carry out specific tasks. For example, a Triage Worker runs Attack Discovery, which connects related alerts into attack narratives, while a Forensics Worker examines endpoint activity. Your team controls how much each Worker can do without human review, so you can tailor Watches to help your team in the places you most need it. </p><p>The upcoming technical preview introduces four Watches:</p><p><strong>Watch name</strong></p><p><strong>What it helps your team do</strong></p><p><strong>Triage</strong></p><p>Assesses alerts, connects related activity, and identifies findings that need attention.</p><p><strong>Hunt</strong></p><p>Uses threat research to look for evidence of attacks in the available telemetry.</p><p><strong>Detection</strong></p><p>Investigates noisy rules and coverage gaps and then prepares detection changes for review.</p><p><strong>Forensics</strong></p><p>Examines endpoint activity to establish what happened and to identify supported response actions.</p><p></p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltda2b4fef47f5896e/6ac735659df04bbb1e32c902/image5.png" alt="AI SOC automation org chart: AlertZero's Triage, Hunt, Detection and Forensics Watches with example Workers" /><p>A hunt can start from new threat research, and detection analysis can start from recurring false positives. Endpoint analysis can start from a finding that needs a closer look, and all of the Watches can run on triggers or a schedule. Watches don’t form a mandatory pipeline. </p><h2><strong>How AlertZero handles suspicious login sessions</strong></h2><p>The following example shows how the Triage and Forensics Hunts work together. We’re starting on the <strong>Proposed Actions</strong> page, where Watches awaiting human approval show their work before carrying out an action. </p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt135d2187bba6926c/6ac73584d0560246cb294eb4/image4.png" alt="AlertZero Proposed Actions page grouping AI SOC automation tasks under Respond, Investigate and Configure" /><p>Proposed Actions are grouped by the type of action they’re waiting for. In this specific scenario, under <strong>Respond</strong>, an impossible-travel finding for an executive account, cfo@corp, has an endpoint-isolation action waiting for review. Before we even open this screen, the Triage Watch and Forensics Watch have already gathered the findings behind that recommendation. </p><p>Opening the item reveals the associated Investigation and its supporting evidence. </p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt723c95436a33a200/6ac735a2758e4e1fcbe1508a/image2.png" alt="AlertZero Investigation showing impossible travel alert triage evidence for a compromised executive account" /><p>In this example, the account was active in Boston and then, 39 minutes later, it was active from a distant hosting network, using the same session identifier without a fresh multifactor authentication (MFA) event. </p><p>The endpoint findings add more context: an unsigned process accessing browser session material. If needed, we can examine how that process started and what it contacted, along with the time period covered. To see the full scope of the incident, there are the related alerts and affected entities, in addition to endpoint findings, in the same flyout. In this case, the pattern warrants investigating session replay. Virtual private network (VPN) use and proxies also need consideration, as does inaccurate geolocation.</p><p>From the Investigation’s conversation, we can ask these follow-up questions before deciding how to proceed: <em>What did the account access after the suspicious sign-in? What would isolating the endpoint interrupt?</em> These questions also prompt further analysis, and the existing findings are available as context.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt6fc27d50a01a889b/6ac735cfd31d47b253b8c2c7/image1.gif" alt="AI incident response flow in AlertZero: open a Proposed Action, review evidence, ask questions, then decide" /><p>In this scenario, the endpoint response is set to manual review. So, after checking the target, rationale, and likely impact, we can approve or decline the Proposed Action. An approval would trigger host isolation through <a href="https://www.elastic.co/docs/solutions/security/endpoint-response-actions/isolate-host">Elastic Defend</a>. The Investigation records the decision and the execution outcome separately for auditability.</p><p>When an Investigation (or set of Investigations) needs a coordinated and constrained response, an analyst can open an Escalation and link the relevant Investigations. </p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt8e7d9a22cac4a3dc/6ac735e1758e4e0830e1508e/image6.png" alt="AlertZero escalation dialog linking an investigation and choosing teammates for coordinated response" /><p>Teammates can discuss the evidence and, in the same conversation, ask an agent follow-up questions. They can also opt to never invoke an agent in particularly sensitive situations.</p><h2><strong>Beyond alert triage: What else does AlertZero do?</strong></h2><p>Reducing the alert queue by handling the correlation and enrichment at scale is one part of the solution. On the other side of things, we’re helping with the work that happens when nothing is on fire. </p><h3><strong>A head start on your hunt</strong></h3><p>For threat hunting, the Hunt Watch:</p><ul><li><p>Continuously observes your environment.</p></li><li><p>Maps observed technologies and exposures to relevant threats.</p></li><li><p>Proposes hunts, findings, coverage improvements, or escalations.</p></li></ul><p>Its core purpose is to answer the question <em>Is there evidence of this threat in my environment?</em>, without requiring you to provoke the hunt or feed the intel. </p><p>The Hunt Watch gets you started with threat research, even when no detection alert has been fired. It relates that research to the environment and available telemetry and searches for relevant indicators. It also examines supporting behavior. The findings identify what was searched and what was found.</p><h3><strong>Turning false positives and coverage gaps into rule changes</strong></h3><p>To improve your environment-specific defenses, hunt findings can inform the Detection Watch by looking at whether existing rules would detect the behavior.</p><p>Suppose a legitimate administrative tool repeatedly triggers a rule. The closure itself is useful feedback, but someone still has to connect several decisions to a common cause in the rule. This is how false-positive closures provide another input for the Detection Watch to contextualize. The Watch reviews the alert examples and existing logic and then prepares a proposed change, like an exception, with the supporting diagnosis. From there, a detection engineer can assess whether a narrow exception fits the benign activity while preserving detection of malicious use of the same tool.</p><p>As an example, the Watch would run an <a href="https://www.elastic.co/docs/explore-analyze/query-filter/languages/esql">Elasticsearch Query Language (ES|QL)</a> query like this:</p><p>Once the Watch reviews the rules’ rankings based on their recently closed false positives, it identifies those with high counts to investigate further. A high count doesn’t necessarily prove that the rule is defective, but the analysis needs to inspect the examples and their closure rationale, because an incorrect false-positive label can otherwise become an incorrect exclusion.</p><p>In this example, the Detection Watch’s Rule Tuning Worker is set to manual. After the analyst authorizes the analysis, the resulting Proposed Action brings together the diagnosis, the motivating alerts, the existing logic, the proposed logic, and backtest results. That gives a detection engineer an actual change to assess and the evidence used to construct it.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt19a25549fbfc8dd5/6ac73611e8ffc64c3fb1792e/image3.png" alt="AlertZero rule tuning proposal to reduce false positives, with current query, proposed query and backtest" /><p>With the proposal, we can see that the five sample false positives no longer match the revised query.</p><p>We can open the Proposed Action to review the change and ask follow-up questions in the linked Investigation, such as <em>What other activity would this exclusion suppress?</em> Because this backtest only covers benign samples, the analyst still needs to validate detection of known malicious activity through the team’s existing testing process before approving. If it’s approved, the change is applied;  if it’s declined, the rule is unchanged.</p><p></p><h2><strong>You can decide how much to delegate</strong></h2><p>You choose which Watches run and how far each goes, with autonomy configurable per Worker. We’ve built this into AlertZero because no two security teams are organized the same way. Some run tiers, some run pods, many have no detection engineer, and most cannot staff nights. Regardless of team structure, autonomy also is configurable because different jobs carry different risks, like assessing an alert versus responding on an endpoint. You can delegate routine analysis while choosing more cautiously when a host may be affected. As an example, the Triage Watch Worker runs Attack Discovery, while a Forensics Watch Worker performs endpoint analysis. Each runs as an Elastic Workflow, calling Agent Builder agents and skills for analysis.</p><p>For true-positive or inconclusive Attack Discovery assessments, manual review lets the analyst decide whether to close an Investigation or request endpoint analysis. In supervised operation, a true-positive assessment can continue into endpoint analysis automatically. An inconclusive assessment still needs a person's decision.</p><p>Endpoint analysis has its own control. Manual operation presents supported response actions for review. Supervised operation is designed to permit host isolation, process termination, and process suspension without an additional approval for each action. Detection changes continue to require approval. Teams can therefore automate one part of the sequence while retaining review of another.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt06e146584f4dd739/6ac736331cd746ea8f17d9b7/image7.png" alt="AlertZero Forensics Watch autonomy settings: manual or supervised AI incident response on endpoints" /><h2><strong>Every alert is answered, and every decision is yours</strong></h2><p>As AI that helps move an investigation forward, AlertZero connects work that too often stops at a handoff. The evidence gathered during triage can guide endpoint analysis and support a response decision. It can also give teammates a place to continue the investigation. Teams choose what to delegate and where their judgment is needed.</p><p>To know when future AlertZero news is published, <a href="https://www.elastic.co/security/alertzero-tp-form">sign up for updates</a>. AlertZero will be available soon to all users of Elastic Security.</p><h2><strong>Glossary</strong></h2><p><strong>AlertZero:</strong> The agentic layer of Elastic Security, connecting alert triage, threat hunting, detection engineering, and endpoint forensics.</p><p><strong>Watch:</strong> A grouping of automated tasks around a security responsibility. The initial four are Triage, Hunt, Detection, and Forensics.</p><p><strong>Worker:</strong> A defined task implemented as a workflow in Elastic Workflows, using agents and skills to produce findings, evidence, and supported actions.</p><p><strong>Proposed Actions:</strong> Recommended changes with supporting evidence and rationale, presented for approval where review is required.</p><p><strong>Investigation:</strong> The shared record for a line of inquiry, bringing together findings, affected entities, evidence, and Proposed Actions.</p><p><strong>Escalation:</strong> A conversation that a person creates to coordinate work around linked Investigations. Teammates can discuss evidence and ask agents questions; visibility can be public or private.</p><p><strong>Autonomy setting:</strong> A per-Worker control over how much work can proceed without review. Its behavior depends on the task.</p><p><strong>Consequential action:</strong> An operation that changes the environment, such as isolating a host or editing a rule.</p><p><strong>Elastic Defend:</strong> Elastic's endpoint security capability, providing supported endpoint response actions.</p><p><strong>Attack Discovery:</strong> A capability that connects related alerts into suspected attacks. The Triage Watch uses it to open an Investigation for each identified attack.</p><p><strong>Elastic Agent Builder, Elastic Workflows:</strong> Extensible building blocks for Watches: Agent Builder provides agents, tools, and skills; Elastic Workflows coordinates execution.</p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/ai-soc-automation-alertzero</link>
    <guid isPermaLink="false">ai-soc-automation-alertzero</guid>
    <category><![CDATA[AI & Automation]]></category>
    <category><![CDATA[SOC]]></category>
    <dc:creator><![CDATA[James Spiteri]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltab9ecdd95a489c3b/6ac7aa6a1cd74640f717dc4a/v2-b-bare_header-1440x840.png" length="0" type="image/png"/>
    <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Quarantined isn't contained: Agentic phishing response with Elastic and Sublime]]></title>
    <description><![CDATA[The native Sublime Security integration sends email detections into Elastic Security, where phishing incident response can tie a quarantined email to what happens next on the endpoint and pull the threat from every mailbox it reached.]]></description>
    <content:encoded><![CDATA[<p>Critical signals still land in different security tools, so early signs of a campaign might go unnoticed. That visibility gap is getting more expensive as attackers automate phishing and vulnerability chaining. Although bringing the data together is the foundation, the real shift comes from the agentic layer operating on that data, and that’s what this post explores. </p><p>Consider the following:</p><p>At 9:00 a.m., Sublime Security quarantines a phishing email before it reaches an inbox. </p><p>At 9:05 a.m., an endpoint in the same environment runs a suspicious PowerShell command. </p><p>On their own, each event looks handled. The quarantine did its job, and one odd PowerShell process a day is background noise in most environments. But looked at together, they’re the opening moves of a campaign. The problem is that nobody sees them together, because the two signals live in different tools.The email signal sits in your email security product, and the endpoint signal sits in your security information and event management (SIEM) or endpoint detection and response (EDR) tool. Nobody is watching both at 9:05 a.m.</p><p>That gap is getting more expensive as attackers use large language models (LLMs) to generate convincing phishing at volume and as autonomous agents start finding and chaining vulnerabilities on their own. Recent incidents, like the <a href="https://www.elastic.co/security-labs/threat-command/ai-agent-attack-detection-hugging-face-breach">OpenAI models reaching Hugging Face's production systems during a cyber evaluation</a>, prove exactly how quickly an automated actor can move once it’s loose. </p><p>Defenders need to close that gap and respond at the same speed, while keeping control over what runs automatically and what waits for a human. This post shows how the native Elastic and Sublime Security integration brings email threat telemetry into Elastic Security, where it can be correlated with your endpoint, identity, and network signals and used to drive response across both platforms without switching tools. Removing that friction is an important first step. When signals remain siloed across products, every handoff adds time to the investigation and response.</p><p>But bringing the data together is only the foundation. As noted, the real shift toward responding as fast as the attack moves comes from the agentic layer operating on that data. Here, we explore that concept in detail.</p><h2><strong>Why one quarantined email matters five minutes later</strong></h2><p>A quarantined email is rarely the end of it. An attacker running a campaign comes back in another form, like a second email from a different sender or a malicious link over another channel. It might even be a call that talks a user into running something they shouldn't. What the first attempt is worth hinges on whether you can connect it to the ones that follow.</p><p>That connection depends on where the signal lands. Through the native integration, we pull Sublime's telemetry into Elastic Security, the agentic security operations platform that your analysts already work in and where your agents and orchestration layer run. The email detections and quarantine actions, along with the surrounding context, sit alongside your endpoint, cloud, network, and identity data, so two otherwise dismissible events can become one investigation worth opening, connected by an analyst or by the agent doing the first pass on their behalf.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9e88dae83e7d2bdb/6aba1cf4f498f2f0e1495e6e/image2.png" alt="Sublime Security integration in Elastic, showing REST API and AWS S3 modes for collecting email security data" /><p></p><h2>How phishing incident response works across Sublime Security and Elastic</h2><p>The full flow runs from the first quarantined email to a response back in Sublime Security:</p><ol><li><p>Sublime Security quarantines a phishing email.</p></li><li><p>The native integration sends the email telemetry to Elastic Security.</p></li><li><p>Elastic detection rules run against it alongside endpoint, identity, and network data.</p></li><li><p>Attack Discovery correlates the related alerts into a single attack.</p></li><li><p>Elastic Workflows creates a case and sends the analyst a Slack notification with the evidence attached.</p></li><li><p>The analyst approves or rejects the recommended action.</p></li><li><p>If Elastic Defend has found the malware on a host, Elastic Workflows uses its SHA-256 hash to trigger a blast-radius quarantine in Sublime Security.</p></li></ol><h3>Email security SIEM integration: What Sublime Security sends to Elastic</h3><p>The mailbox is one of those signals. <a href="https://sublime.security/">Sublime Security</a> is an email security platform that detects and quarantines attacks aimed at the mailbox, including phishing, business email compromise, malicious attachments, and similar threats. Two things about it matter here. First, its detection logic is open, so you can read and tune the rules that decide what gets quarantined. Elastic's own incident response team runs Sublime day to day, and what stands out to them is that <a href="https://sublime.security/customers/elastic/">openness</a>. </p><p><em>It's not a black box. We can see exactly why something was detected.</em></p><p>—Jordyn Coyne, Senior Manager of Incident Response, Elastic</p><p>Second, it combines those rules with machine learning (ML) to catch variants that a static rule would miss. That produces a stream of high-context email events, each recording:</p><ul><li><p>What was flagged.</p></li><li><p>Why it was flagged.</p></li><li><p>Who it targeted.</p></li><li><p>What Sublime did about it.</p></li></ul><p>On its own, Sublime protects the mailbox. Correlated in Elastic with endpoint, identity, and network signals, it becomes an early warning for the rest of the attack.</p><h3>How Elastic correlates email and endpoint alerts</h3><p>Once Sublime Security telemetry is in Elastic, your Elastic detection rules run against it like any other signal. Those rules are open and backed by Elastic Security Labs: Elastic publishes and versions its detection content, so you can read the logic behind an alert or tune it, or you can write your own, the same way that Sublime's rules are open on the email side. In both places, you can see why something fired, not only that it did.</p><p>When alerts start stacking up, <a href="https://www.elastic.co/security-labs/blog/agentic-soc-alert-triage-alertzero">Attack Discovery</a> is what turns them into a picture. It’s an agentic workflow that pulls the relevant alerts together into unified attack chains, and it does more than line them up. Drawing on its available security skills, it gathers supporting evidence before it produces a prioritized attack. This workflow:</p><ol><li><p>Hunts for related activity.</p></li><li><p>Reads the individual alerts.</p></li><li><p>Checks the context around the entities involved.</p></li><li><p>Queries raw logs across the Elastic platform.</p></li></ol><p>An analyst gets an evidence-grounded account of what happened, mapped to MITRE ATT&amp;CK, with its reasoning visible, rather than a raw queue to sort through.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt64fc32a8699f2058/6aba1d434d5742296ebc287c/image4.png" alt="Attack Discovery in Elastic Security correlating a Sublime phishing quarantine with endpoint alerts into attack chains" /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf367023318e42ffa/6aba1d78f9d7ed0bed5e8e2d/image6.png" alt="Attack Discovery in Elastic Security linking a phishing HTA email to RunDLL32 execution, mapped to MITRE ATT&amp;CK tactics" /><h3>Human-in-the-loop response in an agentic SOC</h3><p>Machine-speed correlation is only useful if a human can act on it quickly and with confidence. <a href="https://www.elastic.co/security-labs/elastic-workflows-ga-9-4">Elastic Workflows</a> is the platform's automation engine. Workflows connect to Elastic Agent Builder in both directions; that is, an agent can call a workflow as a tool to take a concrete action, and a workflow can hand a step back to an agent when it needs reasoning or language understanding.</p><p>The two-way connection between Agent Builder and Elastic Workflows is what lets the response go past advice. Given a discovery, an agent can enrich it and weigh whether it’s a true positive. Plus, it can recommend a next step. Because it reaches actions through Workflows, it can also carry out that step, for example by:</p><ul><li><p>Isolating a host.</p></li><li><p>Opening a case.</p></li><li><p>Notifying the on-call analyst.</p></li><li><p>Triggering a response in a connected tool.</p></li></ul><p>In this flow, Elastic Workflows creates a case for the correlated incident and sends a Slack notification, with the supporting evidence attached, to the analyst. The analyst approves or rejects the recommended action from there, without needing to reconstruct the investigation.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1d1c5314fd28a64d/6aba1da9f65ed8421f4b2d5c/image5.png" alt="Elastic Security case for phishing incident response, with agent-added verdict and kill chain evidence from five alerts" /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltff398e32d24f69a6/6aba1dbf38025e58a8393c96/image7.png" alt="Human-in-the-loop Slack approval from an Elastic Workflow, asking an analyst to approve or decline isolating a host" /><p>The analyst is reviewing an evidence-backed decision, not starting from a raw alert. That’s the difference between reacting at machine speed and only monitoring at machine speed.</p><h3>Quarantine phishing emails from an endpoint finding</h3><p>The integration also runs the other direction. We recently added a security orchestration, automation, and response (SOAR) integration with Sublime, which lets you take action on the Sublime side from within Elastic Workflows.</p><p>The SOAR integration pays off when an endpoint finding needs an email-side response. If Elastic Defend, our native EDR, identifies a specific piece of malware, you can take the file's SHA-256 hash and use a workflow to trigger a blast-radius quarantine on the Sublime side. An endpoint finding becomes an email-side containment action, so the same indicator that you found on a host is pulled out of every mailbox it reached, and you never leave Elastic to do it.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1c4baba986f0bf18/6aba1dd9c01db37fb8552919/image3.png" alt="Elastic Workflows editor running a Sublime Security blast-radius quarantine of phishing message groups" /><h2><strong>Automation you can control</strong></h2><p>The point of configurable autonomy is that not every action belongs on autopilot. A blast-radius quarantine that pulls a message from every mailbox is high impact, and many teams will want a human to approve it the first several times they run it. A lower-impact enrichment or tagging step is a reasonable candidate to automate outright.</p><p>Elastic Workflows lets you set that line per action rather than for the whole system, so you can automate the safe steps and route the consequential ones through the analyst approval flow. Start with more human review than you think you need, and watch how the recommendations hold up against your own judgment. Then move actions to automatic as you build trust in them.</p><h2><strong>How to roll out the Sublime Security integration in Elastic</strong></h2><p>The integration is worth rolling out in two stages:</p><ol><li><p>Bring Sublime's telemetry into Elastic, and let your existing detection content pick it up. This gives you the correlation benefit on day one and asks nothing new of your analysts.</p></li><li><p>Add the two-way SOAR actions once the telemetry is flowing and you’ve decided which responses you want to run automatically and which should wait for an analyst.</p></li></ol><p>The native Sublime integration is available in Elastic now. <a href="https://www.elastic.co/docs/reference/integrations/sublime_security">Set it up</a> to bring the email signal in, and see <a href="https://www.elastic.co/security/soar">Workflows for Security</a> for how the response layer fits together.</p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/phishing-incident-response-sublime-security</link>
    <guid isPermaLink="false">phishing-incident-response-sublime-security</guid>
    <category><![CDATA[SOC]]></category>
    <category><![CDATA[AI & Automation]]></category>
    <category><![CDATA[Integrations & Tools]]></category>
    <dc:creator><![CDATA[Sandiya Ramamoorthy]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9368d8675e6dfae1/6aba1c1a99bf52db56db902b/image1.jpg" length="0" type="image/jpeg"/>
    <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[One SOC, 100 projects: running centralized alert triage on Elastic Security Serverless]]></title>
    <description><![CDATA[We linked one Elastic Security project to 100 others and ran the full prebuilt detection catalog from the origin, with all the ingest landing in the linked projects. It held up, and where it deliberately does not reach is the interesting part.]]></description>
    <content:encoded><![CDATA[<p>Run security operations for more than one team, region, or customer, and you inherit a familiar tradeoff. One giant deployment gives you a single view but costs you tenant isolation, while separate environments preserve isolation and scatter your analysts across contexts, with detection rules drifting into 12 slightly different copies along the way. <a href="https://www.elastic.co/blog/cross-project-search-elastic-serverless-ga">Cross-project search (CPS)</a> on Elastic Cloud Serverless is built to end that tradeoff. One Elastic Security project runs detection and triage, along with investigation, across every linked project, and each environment keeps its own data, isolation, and lifecycle. <a href="https://www.elastic.co/docs/explore-analyze/cross-cluster-search">Cross-cluster search (CCS)</a> has played this role on Elastic Cloud Hosted for years; CPS brings a similar model to Serverless, adapted to projects instead of clusters.</p><p>To make sure that holds under real security operations center (SOC) load, we linked one Elastic Security project to 100 others and pointed all the ingest at the linked projects (that's how real central SOCs are shaped). We ran roughly <a href="https://github.com/elastic/detection-rules">2,100 prebuilt detection rules</a> from the origin. The search layer held up. Most of what we learned was about how to run the model well; that is, which query shapes stay fast at that scale and how to size your rule set. We also learned where the project boundary is doing its job on purpose.</p><p>This post covers how the central SOC model works with CPS, the analyst workflow we validated end to end, the <a href="https://www.elastic.co/docs/explore-analyze/discover/try-esql">Elasticsearch Query Language (ES|QL)</a> patterns we recommend, and the limitations. </p><h2>How centralized alert triage works with cross-project search</h2><p>CPS lets one Serverless project (the <em>origin</em>) search data in other projects in your organization (<em>linked</em> projects). For Security, that enables the central SOC pattern. Detection rules live and run on the origin, and their index patterns resolve across linked projects, so one rule covers every linked project with no duplication. The alerts that those rules generate land on the origin, which means that the SOC works a single queue. And the data itself never moves; each linked project keeps its own.</p><p></p><p>CPS reads across linked projects but never writes into them. Everything that a rule produces (alerts, cases, investigations) lives on the origin. That boundary is deliberate. It also shapes every section below, so keep it in mind.</p><h2>The analyst workflow: detect, triage, investigate, respond</h2><p>Say the cloud team's linked project shows repeated failed AWS console logins. Here's the flow we tested.</p><h3>Detect: one rule set covering every linked project</h3><p>A query rule on the origin targets <code>logs-*</code>. The pattern fans out to every linked project, matches the CloudTrail events, and generates alerts on the origin.</p><h3>Triage: a single alert queue on the origin</h3><p>Because every rule runs on the origin, the alert queue is already consolidated. Analysts triage in the Alerts page the way they always have: severity, tags, assignment, and status all work normally, because these are origin-local alerts. There’s no project hopping, and there are no duplicate alerts from per-project rule copies.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf178293fa93f008b/6aac10932156611452800dba/image3.png" alt="Elastic Security Alerts page showing an origin alert with kibana.alert.ancestors.index pointing to a linked project" /><h3>Investigate: following the chain across linked projects</h3><p>The cross-project reach that powered detection now becomes visible to the analyst. The alert flyout renders source-event context from the linked project, and Timeline search spans linked projects, so you can follow the chain (failed logins, password reset, privilege escalation, access key creation) without leaving the origin. When you need to go wider, Discover is the CPS surface, for broad sweeps across every linked project or targeted queries against one. Examples are below.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt645345ae1ab84e85/6aac120b5653207ecca07706/image1.png" alt="Timeline showing failed console logins then AttachUserPolicy and CreateAccessKey from linked-project CloudTrail data" /><p></p><h3>Respond: triage centrally, act locally</h3><p>The same boundary applies to response. Closing an alert, isolating a host, or running osquery happens in the project that owns the data, because CPS doesn't write across a project boundary. That's what keeps one tenant's response from reaching into another's. Write it into your runbook as "triage centrally, act locally."</p><h2>How to hunt and investigate across linked projects with ES|QL</h2><p>Three query shapes cover most of what an analyst needs from the origin. The inline comments call out the parts that matter.</p><h3>Cross-tenant threat hunting: search every linked project at once</h3><p>An unqualified <code>FROM</code> fans out to the origin plus every linked project (<em>flat world</em>), which makes it the right shape for hunting one entity's activity across every linked project at once. It's also what makes the scope dynamic; projects linked tomorrow are covered by the same query with no edits. </p><p></p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt37553e2c0cf84c3c/6aac10eb1a380e4040847299/image4.png" alt="ES|QL query in Discover returning rows from two linked projects, with the _index prefix showing tenant attribution" /><p></p><h3>Alert counts by project and severity</h3><p>For situational awareness, roll activity up per project by deriving the project from the index name:</p><p></p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt787f0bd7ccda12d7/6aac1143bf410793962fc2ce/image6.png" alt="ES|QL rollup at the origin showing alert counts by project and severity across origin and linked projects" /><p>In our test environment, rollups like this stayed interactive across all 100 linked projects.</p><h3>Which surfaces honour the cross-project scope</h3><p>Discover and non-managed dashboards honor the full cross-project scope. Security's managed pages show the CPS scope selector as read-only, so analysts can see which projects are in scope while admins set the defaults per space.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt5053ed055a72b6d3/6aac116cb15ff95d5ecc65be/image5.png" alt="Change project scope panel in Elastic Security listing the origin and two linked projects for cross-project search" /><h2>What we learned running centralized alert triage across 100 projects</h2><p>Anyone can publish a benchmark with a friendly workload, so we built ours like an actual SOC. Ingest flowed only into the linked projects, with the full prebuilt detection rule catalog (~2,100 rules) enabled at the origin. Analyst-persona queries ran on schedules that mirror real behavior: 10-minute triage sweeps, weekly reviews, 30-day incident response (IR) lookbacks.</p><p>The headline is that the central SOC model holds at that scale. A single origin ran the entire detection catalog against the data from 100 linked projects. Alerts landed in one queue, and analyst query patterns stayed interactive. Along the way, the test results turned into sizing guidance that you can use:</p><ul><li><p>Linked project count isn’t your cost driver. Query cost scales with per-project data volume and query shape far more than with the number of linked projects. Quiet projects are close to free, which is exactly what makes 100 of them practical.</p></li><li><p>Project your columns. Full <code>_source</code> retrieval at depth is dramatically slower than <code>KEEP</code>-projected queries. Interactive triage and hunting queries should always project; save full documents for exports.</p></li><li><p>Treat rule count times schedule as a sizing input, the same way that you treat ingest. Running the full ~2,100 prebuilt detection rule catalog from one origin is an extreme case, and we did it to find the envelope; plenty of those rules had no matching data in linked projects, and the noisiest ones were the first things we disabled. The practical guidance that came out of it is simple: enable the rules that you'll actually triage, and lean on alert suppression for the noisy frontline ones.</p></li></ul><h2>What cross-project search doesn't do across the project boundary</h2><p>We'd rather you design around these than discover them mid-incident.</p><p></p><p><strong>Capability</strong></p><p><strong>Works across linked projects?</strong></p><p><strong>Where it runs / what to do</strong></p><p>Alerts from origin rules</p><p>Yes</p><p>Generated on the origin from linked-project data. Fully actionable.</p><p>Alerts a linked project generates itself</p><p>No</p><p>Never enter the origin queue. Readable in Discover only.</p><p><a href="https://www.elastic.co/docs/solutions/security/ai/attack-discovery">Attack Discovery</a></p><p>No</p><p>Origin-generated alerts only, same as the Alerts page.</p><p>Response actions (close alert, isolate host, osquery), case attachments, workflow updates</p><p>No</p><p>Run in the project that owns the data. Triage centrally, act locally.</p><p>Timeline, Analyzer, Correlations</p><p>Yes, read-only</p><p>Linked-project alerts appear as context. Analysts can read but not act.</p><p>Session View</p><p>No</p><p>Not available for linked projects.</p><p>CSPM, KSPM, CNVM findings</p><p>No</p><p>Produced in the project where the integrations run. Review posture there.</p><p>SIEM Readiness and Value reports</p><p>No</p><p>Origin-scoped.</p><p>Entity store</p><p>Partial</p><p>Origin profiles include entities from every linked project, but each project computes its own risk score. A host in two projects is not merged.</p><p>Machine learning anomaly detection</p><p>Partial</p><p>Datafeeds read linked-project data. Jobs and results are stored on the origin. Plan ML capacity there.</p><p>Three more constraints sit outside that table.</p><ul><li><p>Rules target all linked projects by design. That default is what keeps detection coverage automatic as projects are linked and unlinked, so there's deliberately no per-rule project picker in the rule form. When you do need a rule scoped to a subset, use project routing at the API level. One related behavior worth knowing: a rule searches only the linked projects that its last editor can access, so create and update rules with an identity that spans your projects. </p></li><li><p>All projects must share one Elastic Cloud organization, and an origin can link up to 100 projects by default; higher limits are available by working with Elastic.</p></li><li><p>Know your alert cap. The max alerts per run limit applies across everything in the rule's scope, so at 100 linked projects, a chatty rule can hit it. Suppression and per-rule tuning matter more at this scale. </p></li></ul><h2>When a centralized SOC platform fits (and when it doesn't)</h2><p>Good candidates share four traits:</p><ol><li><p>Multiple environments (teams, regions, customers) that need independent data ownership but shared security operations.</p></li><li><p>A detection strategy that you're willing to centralize on the origin: one rule set, one alert queue.</p></li><li><p>Triage workflows that are read-heavy at the center, with response actions executable per tenant.</p></li><li><p>Analysts comfortable in Discover and ES|QL for cross-tenant sweeps.</p></li></ol><p></p><p>Poor candidates look like the opposite. If your workflow depends on centrally <em>acting</em> on remote alerts and endpoints today, if you have hard requirements for unified cross-project risk scoring, or if your tenants are spread across multiple Elastic Cloud organizations, wait or plan a hybrid.</p><h2>How to set up centralized alert triage across linked projects</h2><ol><li><p>Run all detection rules on the origin. Splitting rule execution across projects buys you duplicate alerts and confusing side effects.</p></li><li><p>Tag your projects at link time (region, tier, customer). Tags are how you'll scope and group later.</p></li><li><p>Build hunting queries with <code>METADATA _index</code> and <code>KEEP</code> from day one.</p></li><li><p>Keep Kibana space names distinct across projects.</p></li><li><p>Size your rule set to your link count, and write the "act locally" half of your runbook before you need it.</p></li></ol><p>CPS for Security is generally available on Elastic Cloud Serverless. Try it against your own multi-project topology, and if you hit something we didn't cover here, tell us.</p><p>A consolidated queue is also a foundation to build on. For a look at where triage goes from here, see how an agentic SOC<a href="https://www.elastic.co/security-labs/blog/agentic-soc-alert-triage-alertzero"> handles alert triage with Alert Zero</a>. </p><p>Don't have a Serverless project yet? Start an <a href="https://cloud.elastic.co/registration">Elastic Cloud free trial</a>. It takes about a minute to get a fully configured environment.</p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/centralized-alert-triage-cross-project-search</link>
    <guid isPermaLink="false">centralized-alert-triage-cross-project-search</guid>
    <category><![CDATA[SOC]]></category>
    <category><![CDATA[Security Operations]]></category>
    <category><![CDATA[Threat Hunting]]></category>
    <dc:creator><![CDATA[Chuddy Park]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0cc05d514cc69660/6aac10632433e26e21d7ea5a/image2.jpg" length="0" type="image/jpeg"/>
    <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Data access: the hidden cost of security vendor lock-in]]></title>
    <description><![CDATA[Getting data into a security platform is always easy; getting it back out is where vendors add cost, extra tooling, and latency, and it is the part of the evaluation most teams overlook.]]></description>
    <content:encoded><![CDATA[<p>Your security data is the most important asset in your SOC. Not the dashboards, not the detections, not the AI features on the roadmap slide. The data. And most vendors make you pay, wait, or license your way to getting it back out. Every investigation your analysts run, every model you train, every agent you deploy is only as good as the telemetry underneath it. So here is the question I want you to ask every vendor in your stack: if I want my data, right now, what does that take?</p><p>Most vendors cannot answer it cleanly. And the answer matters more than almost anything else on the RFP.</p><h2><strong>What open actually means</strong></h2><p>The industry has gotten comfortable treating “open” as a checkbox. Support an open schema, publish an API, sponsor a standard, done. But a standard tells you how data is shaped. It tells you nothing about whether you can actually get it. Open data means three things, and you need all three:</p><p><strong>It is yours, at no additional cost.</strong> You generated this telemetry. You paid to collect it, and you paid to store it. If your vendor charges you a second time to access it, that is not a data feature. That is a toll booth on your own driveway.</p><p><strong>It is all of your data.</strong> Not the alerts. Not a normalized summary. Not the tables the vendor decided are ready. The full-fidelity record because you cannot predict today which field matters in next year’s investigation.</p><p><strong>It is real time.</strong> This one used to be a nice-to-have. Not anymore. <a href="https://www.crowdstrike.com/en-us/global-threat-report/">CrowdStrike’s own 2026 Global Threat Report </a>clocked the average eCrime breakout time at 29 minutes, the fastest at 27 seconds, and one intrusion where exfiltration started four minutes after initial access. Attackers are moving faster too, using AI to shorten the gap between breaking in and doing real damage. If your telemetry arrives in batches, minutes apart, the attack can be over before your data shows up. You would not accept a smoke detector that checks for fire twice an hour.</p><p>When a vendor fails any of these three, they are not protecting your data. They are building an artificial moat with it. Ingestion is always frictionless. Egress is licensed, delayed, or degraded. That asymmetry is not an accident of engineering. It is the business model, and the industry has a name for it: lock-in.</p><h2><strong>What the documentation actually says</strong></h2><p>Don’t take our word for it. Every claim in this table links to the vendor’s own documentation. Read it yourself, and hold us to the same bar.</p><p><strong>Vendor</strong></p><p><strong>How you get your data out</strong></p><p><strong>Cost to access your data</strong></p><p><strong>Freshness</strong></p><p><strong>Fidelity</strong></p><p><strong>Openness</strong></p><p><strong>CrowdStrike</strong></p><p><a href="https://developer.crowdstrike.com/accomplish/stream-and-analyze-data/">Falcon Data Replicator</a>: batched file export to object storage</p><p><a href="https://www.crowdstrike.com/en-us/resources/data-sheets/falcon-data-replicator/">Licensed add-on</a></p><p>Bulk batches, not a live stream; <a href="https://www.crowdstrike.com/en-us/blog/crowdstrike-falcon-and-humio-leverage-all-your-fdr-data-in-one-place/">deleted after 7 days</a> for CrowdStrike managed-buckets</p><p>Raw telemetry is only available via FDR; the <a href="https://developer.crowdstrike.com/accomplish/stream-and-analyze-data/">event stream API</a> sends detections, not telemetry</p><p><strong>Restricted</strong></p><p><strong>Palo Alto Networks</strong></p><p>XSIAM <a href="https://cortex-docs.paloaltonetworks.com/cortex-xsiam/configure-cortex-xsiam/data-management/manage-event-forwarding">Event Forwarding</a>: batch files to a Palo Alto-managed bucket</p><p><a href="https://cortex-docs.paloaltonetworks.com/cortex-xsiam/learn-about-cortex-xsiam/cortex-xsiam-product-licenses">Two paid Event Forwarding add-ons</a>: GB and Endpoint</p><p><a href="https://cortex-docs.paloaltonetworks.com/cortex-xsiam/configure-cortex-xsiam/data-management/manage-event-forwarding">Batch; up to 2 hours to appear; kept 14 days</a></p><p>Endpoint and log data <a href="https://cortex-docs.paloaltonetworks.com/cortex-xsiam/learn-about-cortex-xsiam/cortex-xsiam-product-licenses">split across the two add-ons</a></p><p><strong>Restricted</strong></p><p><strong>Microsoft</strong></p><p>Defender <a href="https://learn.microsoft.com/en-us/defender-xdr/streaming-api">streaming API</a>; Sentinel <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/logs/logs-data-export">data export</a></p><p>Streaming: pay Azure infra; <a href="https://learn.microsoft.com/en-us/azure/azure-monitor/logs/logs-data-export">Sentinel export billed per GB</a></p><p><a href="https://learn.microsoft.com/en-us/defender-xdr/api-overview">Real-time stream</a> (via Azure Event Hubs)</p><p><a href="https://learn.microsoft.com/en-us/defender-xdr/supported-event-types">Generally-available fields only</a>; Azure destinations only</p><p><strong>Partially open</strong></p><p><strong>Google</strong></p><p><a href="https://docs.cloud.google.com/chronicle/docs/reference/data-export-api-enhanced">Bulk export</a> to your storage, or a <a href="https://docs.cloud.google.com/chronicle/docs/reports/bigquery-export">continuous BigQuery feed</a></p><p>Export capped; <a href="https://docs.cloud.google.com/chronicle/docs/reports/bigquery-export">BigQuery billed by query</a></p><p><a href="https://docs.cloud.google.com/chronicle/docs/reports/bigquery-export">Live feed 5-10 min behind</a> (top tier only); raw export is point-in-time</p><p>Live feed is normalized only; no continuous raw path</p><p><strong>Limited</strong></p><p><strong>Splunk </strong></p><p><a href="https://help.splunk.com/en/splunk-cloud-platform/search/search-manual/9.3.2411/export-search-results/export-data-using-the-splunk-rest-api">Search/export REST API</a></p><p>Included</p><p>On-demand query via <a href="https://help.splunk.com/en/splunk-cloud-platform/search/search-manual/9.3.2411/export-search-results/export-data-using-the-splunk-rest-api">export data API</a>; data available near-real-time</p><p>Full events returned as structured JSON</p><p><strong>Open</strong></p><p><strong>Elastic</strong></p><p>REST APIs including <a href="https://www.elastic.co/docs/solutions/search/the-search-api">Search</a>, <a href="https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-open-point-in-time">Point in time</a> and <a href="https://www.elastic.co/docs/reference/query-languages/esql/esql-rest">ES|QL</a></p><p>No export license or per-query export fee; <a href="https://www.elastic.co/docs/deploy-manage/cloud-organization/billing/cloud-hosted-deployment-billing-dimensions">Elastic Cloud applies ordinary cloud data-transfer metering</a>, not an egress toll</p><p>On-demand query via API; data available to query <a href="https://www.elastic.co/docs/manage-data/data-store/near-real-time-search">as soon as it is indexed</a></p><p>Full raw and parsed events, returned as structured JSON</p><p><strong>Open</strong></p><p><em>This table reflects each vendor's public documentation as of September 2026.</em></p><p></p><p>A note on the ratings, because we want them to be defensible, not convenient. Open means all three tests pass: no added cost, full fidelity, and no batch window between the moment data arrives and the moment you can use it. Data you can query the moment it lands clears that bar; a scheduled batch measured in minutes or hours does not. Partially open means the vendor genuinely tries but with real constraints; credit to Microsoft for a true streaming path, even if it covers only generally-available fields and only lands in Azure. Limited means the data comes back, but late or in a form only the vendor can read. Restricted means access to your own telemetry is a paid product, a delayed batch, or both.</p><p>And since Elastic is on this list too, as an endpoint agent and a SIEM, hold us to the same bar. Our rating is about live access: APIs that return JSON, with no license between you and your own telemetry. On Elastic Cloud you pay ordinary data-transfer rates like any cloud service. What you never pay is a license to reach data that was already yours.</p><p>If any vendor believes we have mischaracterized their documentation, I genuinely want to hear it, and we will correct it.</p><h2><strong>So what does this actually cost you?</strong></h2><p>Here is what that comparison means when it really counts, in the middle of an incident. Detection you cannot act on in time is not detection. When your telemetry arrives in scheduled batches, a window opens between the alert and the evidence. Sometimes minutes, sometimes longer, and in that window the attack is live while your data is not yet in front of you. You paid to collect that telemetry. You paid to store it. And at the one moment it matters, it is still in transit. Or worse, it is not there at all because exporting it requires a separate license. That’s the difference between stopping an intrusion and reading about it afterward.</p><p>You do not create that gap during an incident. You inherit it at purchase. You already run a strong endpoint agent. It works, and you trust it. Now that same vendor offers to be your SIEM as well. One console, one relationship, one invoice. There is nothing wrong with one vendor doing both. We do both at Elastic. The question is what it costs you to change your mind. So look closely at what it takes to move that endpoint telemetry somewhere other than their own platform. Every vendor makes it easy to get data in. Getting it back out is something you buy, then wait for.</p><p>It is rarely just one handoff. Most security environments are heterogeneous by design, with each layer chosen because it is good at its own job. Modern attacks move across all of them, from a stolen identity to a cloud workload to an endpoint, and you only see the full chain if the data from each can meet in one place, quickly and without a toll. When a vendor makes its telemetry expensive or slow to share, it is not just charging you. It’s fragmenting the picture, and a fragmented picture is exactly where intrusions hide. The all-in-one pitch offers to solve that. But the fragmentation was manufactured: vendors made their data hard to move, then sold you the one console where it comes back together. So before convenience makes the decision for you, ask three questions, and make the vendor answer them in writing:</p><ul><li><p>Can I get all of my telemetry out, continuously, without buying a separate license to do it?</p></li><li><p>How long, exactly, from the moment an event happens to the moment it is usable in a system I chose?</p></li><li><p>On the day I add a different analytics engine, a data lake, or a new AI model, what breaks?</p></li></ul><p>If the honest answers are “extra cost,” “in batches,” and “quite a lot,” then you are not buying a SIEM. You are renting access to your own data. The point is not that these layers must stay separate. Plenty of teams consolidate for good reasons, and we sell both layers ourselves. The point is that the choice should stay yours: you can add the analytics platform you want, or leave the one you have, without paying a toll or waiting on a batch to get your own data. The only reason to accept less is that a vendor made leaving hard enough that staying felt like a decision. It was not a decision. It was the absence of one.</p><h2><strong>The strategic question</strong></h2><p>Your SIEM is not a tool you bought. It is where isolated alerts become an attack story, and where you go to find out what actually happened. The vendor holding it is a strategic dependency, whether you planned it that way or not.</p><p>So evaluate them like one. Put data portability on the RFP, not in the demo, and score it on two things: what it costs to move your telemetry somewhere else, and how much delay it adds.</p><p>Because you cannot build a real-time defense on a delayed copy of your own telemetry, and you should not have to buy your data back to try.</p><p>It is your data. Any vendor who makes that complicated has told you what kind of partner they intend to be.</p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/siem-data-export-comparison</link>
    <guid isPermaLink="false">siem-data-export-comparison</guid>
    <category><![CDATA[Security Operations]]></category>
    <category><![CDATA[SOC]]></category>
    <dc:creator><![CDATA[Mike Nichols,Jamie Hynds]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt194a2b93239a98c3/6a9a90363481c2bd668af9b3/2189.png" length="0" type="image/png"/>
    <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[SOC case management and detection rule history in Elastic Security]]></title>
    <description><![CDATA[Elastic Security now tracks every detection rule change with one-click rollback and makes case data queryable out of the box, so SOC teams get audit trails and reporting without configuring anything.]]></description>
    <content:encoded><![CDATA[<p>Elastic Security now tracks every change to a detection rule and lets you roll back to any previous version with one click. The same history log gives compliance teams a timestamped audit trail that's immutable and append-only. Case data is queryable across 3 global indices (down from 12 per space), so SOC managers can build dashboards on closure rates, assignment load, and case volume without configuring anything. A rebuilt template system gives analysts structured, investigation-specific fields at case creation, so the data feeding those dashboards is consistent from the start.</p>
<h2 id="detectionrulechangehistorywithoneclickrollback">Detection rule change history with one-click rollback</h2>
<p>Detection rules change constantly. Analysts add exceptions, engineers tune them, detection logic shifts to adapt to new threats. Until now, that history was gone the moment it happened. If a reliable rule stopped firing, there was no built-in way to see what changed, who changed it, or when, which is a debugging problem and a compliance problem in one.</p>
<p>In 9.5, Detection Rules History Management ships as GA. A History section on the rule details page shows a complete, chronological log of every saved rule state: who made the change, when, and the revision number. From there, you can preview any historical revision, compare it to the previous version, and restore it with a single click.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf5597d4f0572f733/6a7d8432437e0fab30dd8606/image7.png" alt="" /></p>
<p>The log is immutable and append-only, and it captures changes made through the UI or the API. Compliance teams get a defensible, timestamped audit trail for ISO 27001, SOC 2, and DORA standards without any manual export or configuration. Detection engineers get a real undo button: no custom scripts, no digging through audit logs.</p>
<p>See it in action. Kseniia Ignatovych demonstrates the rule history log, version comparison, and one-click rollback in the short video below.</p>

<h2 id="soccasemanagementtemplatesandcaseanalytics">SOC case management: templates and case analytics</h2>
<p>Cases are where investigations land, but the data inside them has rarely been reliable enough to learn from. Custom fields were limited in type and count. The same fields appeared on every case regardless of what the analyst was investigating. Building dashboards required manual index configuration that most teams never completed, so case data stayed useful in the moment and hard to aggregate at scale.</p>
<p>In 9.5, we rebuilt the template system to fix how data goes in and made cases queryable out of the box for everything downstream.</p>
<h3 id="investigationspecificcasetemplateswithcustomfields">Investigation-specific case templates with custom fields</h3>
<p>Admins can now define templates for specific investigation types. A "Compromised Account" case collects different information than a "Service Outage" case. Admins build templates using a YAML editor with an Actions menu helper and a live preview panel. Analysts pick the right template for their investigation, see only the fields that apply, and fill in what's actually relevant.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0ec9deb434d523ba/6a7d8435227b1c3d95595858/image1.png" alt="YAML editor for a “Compromised Account” template" title="YAML editor for a “Compromised Account” template" /></p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt30cc7194b87c8c4e/6a7d8438920130cccc352cb0/image5.png" alt="“Compromised Account” template applied to a case" title="“Compromised Account” template applied to a case" /></p>
<p>The previous cap of 10 templates was a ceiling for enterprise SOCs managing phishing, malware, insider threat, compliance audits, and more. That limit is gone, along with the cap on custom fields. Seven new field types are also now available, including: </p>
<ul>
<li>Checkboxes  </li>
<li>Radio buttons  </li>
<li>A user picker  </li>
<li>A date/time picker </li>
</ul>
<p>Any field can be marked required before case closure, so regulated teams can enforce that fields like "Root Cause" or "Closing Reason" get filled in before a case closes. A Field Library lets admins define reusable fields once and apply them across templates.</p>
<h3 id="queryablecaseanalyticsoneverydeployment">Queryable case analytics on every deployment</h3>
<p>Cases as Data, Elastic Security's case analytics feature, exposes case activity in dedicated analytics indices so teams can build dashboards tracking case volume, closure rates, time to close, and assignment load, rather than relying on the case UI alone.</p>
<p>We shipped Cases as Data as a tech preview in 9.2, but it required manual configuration, wasn't available on Serverless, and had a complex index structure that wasn't ready for broad adoption. In 9.5, it's GA, on by default, and available across every deployment type including Serverless.</p>
<p>The architecture is simpler, too:</p>
<p>|  | Before 9.5 | 9.5 GA |
| :---- | :---- | :---- |
| Index architecture | 12 indices per space | 3 global indices |
| Configuration | Manual setup required | Auto-provisioned |
| Serverless | Not available | Available |
| Data views | Manual creation | Pre-built Case Analytics view per space |</p>
<p>SOC managers, IR leads, and SRE teams can build case reporting on any deployment without manual index configuration.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt6b8675da33cac83d/6a7d843b5967e5768d5da589/image4.png" alt="Pre-built Cases Analytics Data View showing a snippet of case data available for analysis" title="Pre-built Cases Analytics Data View showing a snippet of case data available for analysis" /></p>
<h2 id="getstartedwithdetectionrulehistoryandcaseanalytics">Get started with detection rule history and case analytics</h2>
<p>Detection engineers have been working without rule change history. SOC managers have been working without case data they can report on. Both change in 9.5. </p>
<p>Reliable change history and queryable case data are not the loudest features in a release. They are the groundwork the next wave of SOC automation depends on.</p>
<p>See the documentation for <a href="https://www.elastic.co/docs/solutions/security/detect-and-alert/view-rule-changes-history">Detection rule change history</a>, <a href="https://www.elastic.co/docs/explore-analyze/cases/manage-case-templates">Case Templates</a>, and <a href="https://www.elastic.co/docs/explore-analyze/cases/case-analytics">Case Analytics</a> to get started. Try the new capabilities on your deployment, or <a href="https://www.elastic.co/cloud/cloud-trial-overview/security">start a free trial</a>. Connect with us on <a href="https://join.slack.com/t/elasticstack/shared_invite/zt-2sgssfr0n-NhTOlSwHbaGH85tYfx6kGg">Elastic's community Slack</a> to share feedback or tell us what you are building and how we can help.</p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/soc-case-management-detection-rule-history</link>
    <guid isPermaLink="false">soc-case-management-detection-rule-history</guid>
    <category><![CDATA[SOC]]></category>
    <dc:creator><![CDATA[Kseniia Ignatovych,Melissa Burpo]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1ec159b5996133b3/6a7d843eead8eca6b5ba7b7e/image3.png" length="0" type="image/png"/>
    <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Your UEBA is lying to you: Why entity record quality decides everything]]></title>
    <description><![CDATA[Most entity analytics systems are confidently wrong. They track users who do not exist, generate risk scores built on noise, and call it behavioral analytics. Learn why the entities records you don't create matter as much as the ones you do and how a confidence-tiered model changes the game.]]></description>
    <content:encoded><![CDATA[<p>There's an uncomfortable truth in security analytics that nobody talks about at conferences: The quality of your detections, alerts, and investigations is only as good as the entity records that represent the users, hosts, and services in your environment.</p>
<p>Not the machine learning models. Not the anomaly detection algorithms. Not the risk scoring engine. The <em>entities</em>: the foundations to teach your system about the data and protect it.</p>
<p>Get the entities wrong, and everything downstream is contaminated, including AI. Your baselines are fiction. Your risk scores are noise. Your analysts are chasing ghosts. And the worst part? Most user and entity behavior analytics (UEBA) implementations get the entities wrong from day one. This blog explains why the entities you <em>don't</em> create matter and how a confidence-tiered model helps.</p>
<p>A note on terminology before we go further: in this piece we’ll distinguish between the real-world thing — a person, a host, a service — and the entity record Elastic Security creates to represent it. The argument that follows is about which records are worth creating, not about which things exist. We’ll use “entity record” when the distinction matters.</p>
<h2 id="oneusernamehundredsofidentities">One username, hundreds of identities</h2>
<p>Consider the simplest possible approach to creating a user entity record: Take a <code>user.name</code> field from an event log and call it an entity. A username like <code>deploy</code> appears in your telemetry, so you create a <code>deploy</code> entity record and start building a behavioral baseline.</p>
<p>The problem is immediate and severe. That <code>deploy</code> username might exist on 200 servers. It might be used by 12 engineers and a continuous integration and continuous deployment (CI/CD) pipeline. The behavioral baseline you're building is a smoothie blended from hundreds of different machines, used by different people, for completely different purposes. The system is treating a string match as an identity, barely one step above random.</p>
<p>When this entity record inevitably generates elevated risk scores, analysts investigate, only to discover that the "anomaly" was just a different engineer using the same shared account in a slightly different way. Multiply this across every common username in a large environment and you've built a system that generates investigative busywork at industrial scale.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta4511e63df7e9ea1/6a7d863fc2cc09e5442466f5/risk-table.png" alt="" /></p>
<p>The opposite mistake: An empty dashboard</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf8a5bc2932323a8e/6a7d86413ce8e22f2dcf26fe/risk-dashboard.png" alt="" /></p>
<p>Some security vendors recognize the problem and swing to the other extreme. They decide (correctly, in principle) that only identity-provider-backed entity records are trustworthy enough for behavioral analytics. If you can't tie an entity record to an authoritative account in a directory like Okta, Entra ID, or Active Directory, don't create one at all.</p>
<p>The engineering reasoning is defensible. The product experience is catastrophic.</p>
<p>A customer rolls out endpoint agents across their fleet, opens the security analytics dashboard, and sees nothing. Zero entities. The feature looks broken. The SOC analyst has no idea why no users are showing up, and worse, has no visibility into the activity happening on those endpoints right now. A purist entity data model has produced a blind spot. </p>
<h2 id="themissingmiddlehostscopedidentity">The missing middle: Host-scoped identity</h2>
<p>Most vendors building UEBA have historically picked between two unsatisfying defaults, bare usernames that blend everyone into noise, or IdP-only entities that leave most deployments with nothing. But without explicit governance over which signals come from which source, the noise still leaks through.What's missing is a middle layer: entities derived from endpoint telemetry that are tightly scoped enough to be meaningful but carefully governed enough to avoid the noise problem.</p>
<p>The instinct might be to simply pair a username with a host and call it an entity record. But without guardrails, this just moves the noise problem down one level. <code>deploy</code> on <code>prod-web-03</code> is still five engineers' blended activity. <code>root</code> on a shared bastion host is still everyone and no one. You've reduced the blast radius from "all servers" to "one server," but the behavioral baseline is still a fiction if the underlying account is shared, automated, or observed only through a failed brute-force attempt that never actually succeeded.</p>
<p>The real question isn't whether to create local host-scoped entity records. It's <em>which</em> host-scoped entity records are worth creating and with what governance over how they participate in risk scoring and identity resolution downstream.</p>
<h2 id="theelasticapproachtwokindsofentitiesgoverneddifferently">The Elastic approach: Two kinds of entities, governed differently</h2>
<p>One answer is to recognize that not all record sources are equal and to build that distinction into the architecture itself, governing how each record is created, enriched, scored, and resolved.</p>
<p>This is the approach Elastic Security takes. Instead of treating all entity records as interchangeable, the system draws a clear line between <strong>identity-provider-backed entities</strong> and <strong>endpoint-observed local host entities</strong> and governs each category differently under the hood.</p>
<p><strong>Identity-provider-backed entities</strong> are created only by authoritative identity systems: Okta, Entra ID, Google Workspace, Active Directory, and other identity-provider namespaces across identity and access management (IAM), cloud platforms, software as a service (SaaS), and privileged access management (PAM) systems. These entity records represent verified accounts in systems that own and manage those accounts. They get the full analytical treatment, that is, rich behavioral baselines, cross-platform enrichment from 120+ security integrations, and full participation in person-level risk scoring.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9cc53c92cf193f2c/6a7d86446693f850c666111e/entity-panel.png" alt="" /></p>
<p><strong>Endpoint-observed entities</strong> are created from endpoint telemetry: Your endpoint detection and response (EDR) agent observes <code>jdoe</code> active on a specific host and creates a host-scoped entity record tied to that local machine. These entity records are real and useful, but the system knows they carry less identity certainty, and it governs them accordingly. </p>
<p>Analysts don't need to think about any of this machinery. What they see is an entity store that's populated from day one with more accurate user entity records. The governance happens in the architecture so it doesn't have to happen in the analyst's head.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd7521418124d9690/6a7d864805b7b506d3188bf5/entities.png" alt="" /></p>
<p>(An endpoint-observed entity for sarah.chen active on her corporate MacBook. The entity name (sarah.chen\@CORP-MAC-SC-2024) uses the human-readable hostname for readability. The entity ID (user:sarah.chen\@b92f1e3a-7d4c-4a8b-9f2e-1c3d5e7f9012\@local) uses the machine's hardware UUID instead of its hostname — this is intentional. Hostnames change when a device is renamed or reimaged; the hardware UUID is permanent. The @local suffix identifies this as an endpoint-observed entity: it represents sarah.chen's activity on this specific machine, not sarah.chen as a verified identity across your organization.)</p>
<h2 id="fromfragmentedaccountstoaunifiedusergroupnbsp">From fragmented accounts to a Unified User Group. </h2>
<p>Even when you get entity record creation right, you’re still left with a fragmentation problem no amount of per-entity discipline can solve alone.</p>
<p>Consider John Doe in a large enterprise. He has an Okta account for SaaS access, an Entra ID account tied to his corporate laptop, and an Active Directory account for on-prem systems. Each is a legitimate, authoritative entity record by every standard described above, and yet they’re three separate records for the same human being, each with its own risk history, each generating signals in isolation.</p>
<p>When John’s Entra account shows a lateral movement indicator the same day his Okta account flags a suspicious login from an anomalous location, those signals may never connect. They exist as separate entities, investigated in isolation, by analysts who have no automated way to know they belong to the same person. The cross-surface campaign that entity analytics is supposed to catch hides in plain sight between identity providers.</p>
<p>Elastic Security solves this through automatic entity resolution: consolidating a user’s fragmented digital footprint across Okta, Entra ID, Active Directory, and more into a single unified identity. John Doe becomes a first-class citizen in the entity store: one primary record, all associated accounts grouped together, one aggregated risk score that reflects everything happening across every identity surface he touches. Resolution runs continuously as new integrations come online, without manual curation.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta31e28764908c987/6a7d864a6c6eac9ac8f11401/entity-sources.png" alt="" /></p>
<p>In the image above, we've created one entity record per user account and grouped them together, so when an analyst reviews the record, all related identities appear in one place.</p>
<h2 id="whatthischangesforanalysts">What this changes for analysts</h2>
<p>For the security operations center (SOC) analyst working a 2 a.m. alerted by their Elastic agentic workflow, these two architectural decisions (confidence-tiered entity governance and unified identity resolution) change the investigation fundamentally.</p>
<p>Instead of opening four separate entity cards for the same person, they open one. Cross-provider risk signals are aggregated into a single score, and attack narratives that span identity systems are visible as narratives, not as disconnected data points buried in separate views.</p>
<p>Compare this to investigating a bare deploy entity record with a risk score of 70 that’s actually an artifact of 12 people’s blended activity across 200 servers. One investigation leads somewhere. The other erodes trust in the entire capability, which is the real cost of noisy entity records. Not just the false positive itself, but the analyst who learns to ignore entity risk scores entirely.</p>
<h2 id="theentitiesrecordsyoudontcreate">The entities records you don't create</h2>
<p>Perhaps the most underappreciated aspect of entity analytics design is restraint. Every entity record you create has a cost: Compute for baselining, storage for history, analyst attention when it generates alerts, and potential for noise propagation into the broader analytical model.</p>
<p>The discipline to <em>not</em> create an entity record (to require a minimum evidence threshold) is what separates an entity analytics system that gets more useful over time from one that slowly drowns its operators in noise.</p>
<p>In practice, this means maintaining a configurable exclusion list for common service and shared accounts: <em>root</em>, <em>jenkins</em>, <em>deploy</em>, <em>postgres</em>, and others like them. These accounts exist on hundreds of machines, are used by automated processes and multiple humans interchangeably, and would produce baselines that mean nothing. Elastic Security ships a default list covering the most common offenders. Today the list operates at the username level — root is excluded uniformly regardless of which host it appears on — and is fixed. Future iterations will make it configurable, letting teams add their own environment-specific service accounts and, eventually, specify compound patterns that combine username and host. That would allow excluding root globally on shared infrastructure while still creating a host-scoped entity when that account appears on a personal workstation where the activity is attributable to a specific person. The architecture is already built for it: because endpoint-observed entities are keyed as <code>{user.name}@{host}</code>, compound rules are a coherent extension, not a redesign.</p>
<p>The higher-fidelity approach we've described directly mitigates the broader noise problem. When entity records are created from any username string in a log, your ML models end up baselining service accounts, typo'd logins, and shared kiosk accounts as if they were people — a 2 a.m. backup job looks anomalous against a human baseline, and a one-event typo'd login never accumulates enough data to baseline at all. When entity records are anchored to authoritative identity sources and resolved across their various login forms, the model learns patterns for actual humans doing actual work. Anomalies become meaningful because the baseline is meaningful.</p>
<p>The best entity analytics isn't the one that creates the most entities. It's the one that creates the <em>right</em> entities, governs them by what it actually knows about their source and scope, and builds its analytical investment proportionally. Everything else (risk scoring, behavioral baselines, entity resolution, anomaly detection, and AI skills) is downstream of that foundational decision. Get the entity records right, and the analytics follow. Get them wrong, and no amount of machine learning or AI can save you.</p>
<p><em>Entity analytics is available in Elastic Security.</em><a href="https://www.elastic.co/docs/solutions/security/advanced-entity-analytics/entity-store"> <em>Learn more about advanced entity analytics and how the entity store governs user entities.</em></a></p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/ueba-entity-record-quality-analytics</link>
    <guid isPermaLink="false">ueba-entity-record-quality-analytics</guid>
    <category><![CDATA[SOC]]></category>
    <dc:creator><![CDATA[Erik Huang,Mike Paquette]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0b8b55a6f64587d3/6a7d864e437e0f03f7dd8651/header.png" length="0" type="image/png"/>
    <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Know who to watch before the incident finds you]]></title>
    <description><![CDATA[Elastic Security v9.4 introduces Entity Analytics Watchlists, a way to codify what your team already knows about high-risk entities and feed that context directly into risk scoring, without custom pipelines or detection engineering overhead]]></description>
    <content:encoded><![CDATA[<p>Elastic Security v9.4 introduces Entity Analytics Watchlists, a new capability in the Entity Analytics suite that lets security teams create named, weighted lists of users, hosts, and services and feed that context directly into the platform's risk scoring pipeline. The gap this closes isn't awareness, as most security teams already know which entities deserve elevated scrutiny. The gap is that SIEMs have had no way to express that organizational knowledge as a risk signal. Watchlists do that without ES|QL, without pipeline configuration, and without a ticket to the detection engineering team.</p>
<h2 id="yourriskiestentitiesarealreadyknownyoursiemjustdoesntknowthat">Your riskiest entities are already known; your SIEM just doesn't know that</h2>
<p>Security teams aren't starting from a blank slate. You already know certain people, hosts, and services deserve elevated scrutiny: the privileged admin whose access was never revoked after a role change, the engineer on a performance improvement plan, the acquired company's infrastructure not yet fully onboarded, the contractors brought in for a sensitive new business initiative.</p>
<p>The gap has never been awareness. The gap is that your security information and event management (SIEM) has no way to express that organizational knowledge as a first-class risk signal. Behavioral detection fires on anomalies. Threat intel fires on known bad indicators. But neither captures the <strong>context your security and HR teams carry in their heads,</strong> and that context is exactly what insider threat programs are built on.</p>
<p>| 83% of organizations experienced at least one insider attack in the past year | $17.4M average annual cost of insider threat incidents in 2025 | 246 days average time to identify and contain a credentials-based breach |
| :---- | :---- | :---- |</p>
<p>Mature user and entity behavior analytics (UEBA) platforms allow some form of static lists or risk multipliers, but they're often rigid, buried in configuration, and disconnected from the analyst workflow. Security teams deserve something better: a purpose-built, first-class feature that lets them codify what they already know about their environment and to have that knowledge dynamically influence every risk calculation in the platform.</p>
<h2 id="introducingentityanalyticswatchlists">Introducing Entity Analytics Watchlists</h2>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte5b2990a84536f4d/6a7d800ab43770e6414d3f43/image2.png" alt="Watchlists panel" title="Dashboard titled “Entity analytics” with the Watchlists tab selected, showing a table of three watchlists (Privileged Users, Departing Employees, and Employee Extended Leave) with columns for number of entities, risk score weighting, source, last updated, and action icons. The page also includes controls for turning the feature on or off, clearing entity data, and creating a watchlist." />  </p>
<p>Watchlists are a new capability in Elastic Security's Entity analytics suite, arriving in the v9.4 release. They let security teams create named, described, rule-driven, or manually curated lists of users, hosts, services, or other entities and to attach configurable risk score weightings to every entity on each list.</p>
<blockquote>
  <p>Think of Entity Analytics Watchlists as the bridge between your organization's institutional knowledge and your security information and event management’s (SIEM's) risk engine. You already know who deserves a second look. Now your platform knows too.</p>
</blockquote>
<p>The term watchlist is a familiar concept in the industry, but Entity Analytics Watchlists go further. This isn't just a way to bookmark entities; it's a structured mechanism for injecting <strong>custom correlation factors</strong> directly into the risk scoring pipeline. Every entity that appears on a watchlist carries its membership as a weighted signal, compounded with alert activity, asset criticality, and behavioral anomalies to produce a single, prioritized risk score.</p>
<p>Take a concrete example: John Doe is a departing employee. He’s added to a "Departing Employees" Watchlist configured with an elevated risk weighting. He also owns a server on the "Critical Infrastructure" Watchlist. When John triggers an alert, for example, an unusual volume of file downloads, his risk score now compounds all three signals: the alert, the asset criticality, and both list memberships. The platform surfaces him far higher in the risk queue than it would for the same alert on an average employee. The analyst sees exactly why.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2573b82c45912d32/6a7d800ce3a219598699c6ee/image1.png" alt="Risk panel" title="Two‑panel dashboard showing “Employee Extended Leave risk levels” on the left with five risk categories and their numeric ranges, and “Risk contributions” on the right with contexts and alerts for the entity “ronaldostiedemann,” including contribution values, alert dates, rule names, and associated entities." /></p>
<h2 id="thelistsyoursecurityprogramalreadymaintains">The lists your security program already maintains</h2>
<p>Entity Analytics Watchlists are most powerful when they reflect the real-world risk categories your security, HR, and operations teams already track informally. Here are the most common starting points:</p>
<p>| 🚪  Departing employees On notice, performance improvement plans (PIPs), or offboarding: elevated exfiltration risk, regardless of whether an alert has fired. | 🔑  Privileged access users Admins and service account holders whose actions carry outsized blast radius. | 👑  Crown jewel hosts Critical infrastructure, IP repositories, and financial systems demanding tighter scrutiny. |
| :---- | :---- | :---- |
| <strong>🤝  Mergers and acquisitions / acquisition cohorts</strong> Newly onboarded entities where trust has not yet been fully established. | <strong>🚀  High-risk business initiatives</strong> Teams in sensitive new ventures, requiring extra monitoring during critical phases. | <strong>🛡️  Known-safe allow lists</strong> Dampen scores for verified low-risk entities, keeping analyst focus where it matters. |</p>
<h2 id="customcorrelationfinallywithouttheengineeringoverhead">Custom correlation, finally, without the engineering overhead</h2>
<p>Historically, bringing organizational context into a SIEM risk model has required significant custom engineering: lookup tables, enrichment pipelines, detection rule overrides, and constant maintenance as personnel and asset inventories change. For most security teams, that overhead means it simply doesn't get done. We remove that barrier entirely.<br />
An insider threat analyst can create a "Departing Employees" list in minutes, add a risk weighting, and immediately see that context reflected in the entity risk queue. No Elasticsearch Query Language (ES|QL) required. No pipeline configuration. No ticket to the detection engineering team. The organizational knowledge that was previously locked in spreadsheets, HR systems, or informal team awareness is now a first-class signal in the platform.</p>
<p>This is the ability to build risk correlations factors that simply haven't been possible anywhere else in the market and to do it without requiring detection engineering expertise.</p>
<p>For more mature teams, our custom watchlists also integrate cleanly with automated population, meaning that lists can be kept automatically current as conditions change or through APIs. An HR integration that marks an employee as departing can trigger list membership automatically; when they're fully offboarded, they're removed. The signal stays fresh without manual upkeep.</p>
<h2 id="cominginelasticsecurityv94">Coming in Elastic Security v9.4</h2>
<p>Entity Analytics Watchlists ship as a major roadmap item in the upcoming Elastic Security v9.4 release. They’re available to customers running Elastic Security with Entity analytics enabled.</p>
<p>If you're already using entity risk scoring and asset criticality, Entity Analytics Watchlists are the natural next step, layering your organization's operational context on top of the platform's behavioral and alert-based signals to produce the most accurate, prioritized risk picture possible.</p>
<p>We've heard from security teams across industries that this capability is one of the most anticipated additions to the UEBA toolkit. We can't wait to see what lists you build.</p>
<h2 id="frequentlyaskedquestions">Frequently Asked Questions</h2>
<p><strong>Q: How do I add organizational context to Elastic Security's risk scoring?</strong> A: In Elastic Security v9.4, you can inject organizational context into your risk scoring by utilizing Entity Analytics Watchlists, which allow you to ingest custom lists of high-value entities such as users, hosts, or services and assign them specific risk weightings. These watchlists function as dynamic correlation factors; when an entity on a watchlist appears in an alert, the system automatically compounds its risk score based on your pre-configured weights. This ensures that threats involving your most critical assets are prioritized instantly, transforming raw security data into an outcome-driven investigation queue that reflects your company's unique threat landscape.</p>
<p><strong>Q: How do I monitor high-risk employees in a SIEM without custom detection rules?</strong> A: Elastic Security Watchlists let you add entities like departing employees or privileged admins to a named list with an elevated risk weighting, with no ES|QL or pipeline configuration required. Their list membership is factored into risk scoring automatically alongside any alert activity.</p>
<p><strong>Q: How do insider threat programs integrate with SIEM risk scoring?</strong> A: Elastic Security's Entity Analytics Watchlists let insider threat and security operations teams codify existing risk knowledge — departing employees, privileged access holders, acquisition cohorts — and have that context automatically influence entity risk scores without requiring detection engineering involvement.</p>
<hr />
<p><em>Entity Analytics is available in Elastic Security. <a href="https://www.elastic.co/docs/solutions/security/advanced-entity-analytics/watchlists">Learn more about Entity Analytics Watchlists and how the entity store governs user entities.</a></em></p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/entity-analytics-watchlists</link>
    <guid isPermaLink="false">entity-analytics-watchlists</guid>
    <category><![CDATA[SOC]]></category>
    <dc:creator><![CDATA[Erik Huang,Jared Burgett]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0076a35a7fc8e02f/6a7d800f5588ad056aee42d0/entity-analytics-watchlists.webp" length="0" type="image/webp"/>
    <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Streamlining the Security Analyst Experience]]></title>
    <description><![CDATA[Alert Triage, Investigation, and Response with Elastic's Agentic Security Operations Platform.]]></description>
    <content:encoded><![CDATA[<p>The term <strong>Agentic SOC (Security Operations Center)</strong> is one of the most popular concepts in security today. But what does it truly mean in practice, and how does Elastic Security approach this next evolution of security operations?</p>
<p>In simple terms, an Agentic SOC is a security operations center that has deployed AI Agents and corresponding AI Agent Skills to perform SOC-related workflows such as detection engineering, alert triage, incident investigation, escalation, response, and threat hunting. When these workflows are performed by AI agents, they’re often called “Agentic workflows.” These AI Agents and Skills may run natively in a security operations platform like SIEM, XDR, or security analytics, or they may be layered on top of legacy SIEM as an “AI SOC Agent” or “AI SOC analyst”, or they may even be run from an AI Coding Tool. </p>
<p>Regardless of how they are implemented, the shift to the Agentic SOC is not about AI replacing human analysts; it's about transforming how the SOC functions. To keep pace with rapidly evolving attackers, defenders must leverage AI and autonomous agents to respond as quickly as possible. At its core, an Agentic SOC is defined by how a security operations center uses <strong>AI and agents to protect against adversaries</strong>.</p>
<p>Let’s simplify a successful security operations center to three fundamental pillars, all of which the Agentic SOC significantly enhances:</p>
<ol>
<li><strong>Observe:</strong> The foundation of all security is centralized data—aggregating logs and events into one location, which is the core strength of a SIEM solution.  </li>
<li><strong>Detect:</strong> This involves deploying core protections like endpoint-based security (XDR, such as Elastic Defend) and security solution-focused detections (cloud, identity data). This technology drives the generation of high-quality alerts. Elastic, for example, ships over <a href="https://elastic.github.io/detection-rules-explorer/"><strong>1,700 pre-built rules</strong></a> for its SIEM by default, not including its XDR solution's endpoint rule library.  </li>
<li><strong>Act:</strong> This is the critical final stage of triaging, investigating, and acting on the generated alerts.</li>
</ol>
<h2 id="agenticsocinaction">Agentic SOC in Action</h2>
<p>Imagine this real-life scenario unfolding in your Security Operations Center using the Elastic security platform. It begins not with a siren, but with a simple, direct Slack notification. Building on our recent <a href="https://www.elastic.co/security-labs/speeding-apt-attack-discovery-confirmation-with-attack-discovery-workflows-and-agent-builder">blog</a> on Attack Discovery, Workflows, and Agent Builder, let's further examine how Elastic Security can help you respond to an active attack.</p>
<ol>
<li><strong>The Initial Alert and Immediate Action</strong><br />
Your security analyst receives an urgent notification in their team channel. This message isn't just a heads-up; it points directly to an observed, active attack. Crucially, the Elastic Agentic SOC has already taken decisive, pre-emptive action: a vulnerable host has been isolated from the network to contain the threat and limit potential damage. This was all powered by Elastic Workflows and Elastic Agent Builder processing realtime alert and attack data from Elastic.<br />
<img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt8ef1f1122b1021db/6a7d854a5967e5a8e65da5b3/image5.png" alt="Example analyst notification in Slack after the AI agent has performed initial triage." title="Example analyst notification in Slack after the AI agent has performed initial triage." />  </li>
<li><strong>The Centralized Case</strong><br />
The analyst's next step is a click away, moving from Slack directly to the centralized Case within Elastic that was created by the workflow. Elastic Case Management enables the SOC to coordinate the response and provides a single pane of glass into all aggregated critical information:  </li>
</ol>
<ul>
<li><p><strong>Attack Summary:</strong> A high-level overview detailing what has occurred using Attack Discovery.  </p></li>
<li><p><strong>Attached Alerts:</strong> The specific security alerts that triggered the initial observation.  </p></li>
<li><p><strong>Observables:</strong> A list of suspicious artifacts (IP addresses, file hashes, domains, etc.) collected from the event.  </p></li>
<li><p><strong>Attached Events:</strong> Non-alert events that, while not an alert themselves, provide critical context and are of further interest to the investigation.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt67359a276970e887/6a7d854dfc63ab762e64a026/image2.png" alt="" /></p></li>
</ul>
<ol>
<li><strong>Supporting the Investigation</strong><br />
To support the immediate findings, detailed <strong>Investigations</strong> are attached directly to the Case. These searches allow the analyst to visually and contextually step through the sequence of events leading up to, during, and immediately following the attack.<br />
The Elastic Case also provides instant context by highlighting <strong>Similar cases</strong>. By cross-referencing observables, the system identifies previous incidents involving the same entities or artifacts, providing a deeper understanding of the threat actor's history and potential motives.  </li>
<li><strong>The Path to Resolution</strong><br />
The agents don’t just catalog the past; it dictates the future. A clear set of <strong>Next steps and actions</strong> are outlined, with specific team members assigned for review and execution.</li>
</ol>
<p>The analyst then steps through a methodical process reviewing the automated analysis:</p>
<ol>
<li><strong>Reviewing Findings:</strong> Scrutinizing all aggregated data, alerts, and investigations.  </li>
<li><strong>Evidence Collection:</strong> Collecting any additional forensic evidence needed for a complete analysis.  </li>
<li><strong>Remediation:</strong> Executing manual or automated actions, such as deleting malicious files or killing persistent processes on the isolated host with Elastic Defend.  </li>
<li><strong>Final Release:</strong> Eventually, the host is safely released back to the network, but not before additional, targeted rules or policies are automatically applied to prevent a recurrence based on the lessons learned from this incident.<br />
In the Agentic SOC, the analyst moves seamlessly from a high-level alert to a comprehensive investigation to full remediation—all within a unified, intelligent workflow powered by Elastic.</li>
</ol>
<h2 id="elasticsecurityandcoresiemworkflows">Elastic Security and Core SIEM Workflows</h2>
<p>Before exploring advanced agentic workflows, it's essential to recognize that Elastic Security already provides a comprehensive suite of core capabilities crucial for modern security operations. This foundation begins with the ingestion of security-relevant data, which is automatically normalized to a common schema, ensuring consistency and ease of analysis. The platform offers Extended Detection and Response (XDR) capabilities via Elastic Defend, a robust detection engine built directly into the Elastic Stack, and sophisticated alert workflows that include built-in correlations to reduce noise and surface true threats.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte4187c1ba459f447/6a7d8550227b1c5bf6595890/image4.png" alt="" /></p>
<p>Elastic Security further differentiates itself by tightly integrating key operational functions. This includes entity-based threat hunting, machine learning for anomaly detection and behavior analysis, and comprehensive case management for tracking incidents. Finally, the platform provides end-to-end response and forensic capabilities, enabling security teams to move swiftly from initial alert to investigation and remediation, all within a unified, scalable platform.</p>
<h2 id="empoweringanalystswithagenticcapabilities">Empowering Analysts with Agentic Capabilities</h2>
<h3 id="aipoweredalerttriageandprioritization">AI-Powered Alert Triage and Prioritization</h3>
<p>The Elastic Security Solution integrates AI capabilities via <strong>Agent Builder</strong> to augment and make SOC operations truly agentic. This is where efficiency improvements are most keenly felt:</p>
<ul>
<li><strong>Conversational Triage:</strong> A built-in agent is readily available to Tier 1/2 analysts, allowing them to use conversational commands to query and prioritize open alerts (e.g., "What priority alerts should I review from the last 30 days?"). This is the first entry point for using AI to augment SOC operations.  </li>
<li><strong>LLM Agnostic Platform:</strong> A key differentiating feature of Elastic's <strong>Agent Builder</strong> is that it is <strong>LLM agnostic</strong>, allowing organizations to pick their preferred model, even locally running models for privacy or regulatory reasons.  </li>
<li><strong>Attack Discovery:</strong> This premier feature moves beyond basic triage. It uses LLM configurations to create <strong>higher-order attack detections</strong>, taking hundreds of open alerts and prioritizing them into a small, manageable subset of known attacks or incidents. This dramatically reduces the impact of alert fatigue.</li>
</ul>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltfdc4cd6ef3ac26da/6a7d855363e9596e0773af1b/image3.png" alt="" /></p>
<h3 id="enrichedinvestigations">Enriched Investigations</h3>
<p>Once an attack or incident is found, the agent helps start the investigation:</p>
<ul>
<li><strong>Summarization and Enrichment:</strong> The agent can be used to summarize the attack, identify important artifacts, and conduct automated third-party enrichments (like checking VirusTotal). This tailored experience provides a full assessment, including an attack chain, threat intelligence information, related cases, entity risk scoring, and a full investigation guide.  </li>
<li><strong>Case Management:</strong> The agent can be instructed to take immediate action, such as generating a security case and notifying the team in Slack, all through simple conversational commands that execute pre-configured workflows.</li>
</ul>
<h3 id="automatedresponseandthreathunting">Automated Response and Threat Hunting</h3>
<p>The true power of the Agentic SOC is realized through action and automation that goes beyond simple conversation:</p>
<ul>
<li><p><strong>Workflows and SOAR-like Automation:</strong> Agents can reference and execute <strong>Workflows</strong>, Elastic's SOAR-like automation tool. These workflows allow analysts to take immediate, complex actions. For example, a command like "Please create a case for this attack, and notify my team in Slack" triggers multiple, pre-defined steps. Further critical response actions, such as <strong>isolating a host</strong>, can be executed with a single workflow action while the investigation continues.  </p></li>
<li><p><strong>AI-Assisted Threat Hunting:</strong> AI assists threat hunters by leveraging <strong>Entity Analytics</strong> and pre-built skills. The agent can be asked to find high-risk hosts and users to begin hunting, and then automatically generate specific ESQL queries (e.g., "Please tell me the most uncommon processes executed for each host") to uncover unusual or malicious activity.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt857cd03cbefa2cf7/6a7d855748511b665de7d3e7/image1.png" alt="" /></p></li>
</ul>
<h3 id="themandateofautomation">The Mandate of Automation</h3>
<p>For maximum effectiveness, all these steps,from alert triage and enrichment to case creation and host isolation,can be configured to run <strong>automatically</strong> as an Agentic Alert Triage workflow. This allows the system to solve problems as soon as they are discovered, setting up the human analyst in the loop with a consolidated case and all the necessary findings in a single pane of glass.</p>
<p>This approach delivers substantial <strong>efficiency improvements</strong>, making speed the single most important factor in a modern, Agentic SOC.</p>
<p>Elastic’s Agentic Security Operations Platform</p>
<p>Whether you use our UI, our agents, or your own, Elastic Security provides a strong open foundation for modern security operations. best-in-class data architecture, search, workflows, analytics, detection engineering content, and automation.</p>
<h2 id="gettingstarted">Getting started</h2>
<p><strong>Before you get started:</strong> AI coding agents operate with real credentials, real shell access, and often the full permissions of the user running them. When those agents are pointed at security workflows, the stakes are higher: you're handing an automated system access to detection logic, response actions, and sensitive telemetry. Every organization's risk profile is different. Before enabling AI-driven security workflows, evaluate what data the agent can access, what actions it can take, and what happens if it behaves unexpectedly</p>
<p>Don't have an Elasticsearch cluster yet? Start an <a href="https://cloud.elastic.co/registration">Elastic Cloud free trial</a>. It takes about a minute to get a fully configured environment.</p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/streamlining-the-security-analyst-experience</link>
    <guid isPermaLink="false">streamlining-the-security-analyst-experience</guid>
    <category><![CDATA[SOC]]></category>
    <dc:creator><![CDATA[Paul Ewing]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd70ec2f45cf3fd8d/6a7d855a1967eab59f32d91c/streamlining-the-security-analyst-experience.jpg" length="0" type="image/jpeg"/>
    <pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Automating detection tuning requests with Kibana cases]]></title>
    <description><![CDATA[Learn how to automate detection rule tuning requests in Elastic Security. This guide shows how to add custom fields to Cases, create a rule to detect tuning needs, and use a webhook to create a frictionless feedback loop between analysts and detection engineers.]]></description>
    <content:encoded><![CDATA[<h2 id="automatingdetectiontuningrequestswithelasticsecurity">Automating Detection Tuning Requests with Elastic Security</h2>
<p>At Elastic, the Infosec team is "Customer Zero”. We use the newest version of Elastic products extensively to secure our organization, which gives us unique insights into how to solve real-world security challenges. One of the ways we've improved Security Operations Center (SOC) efficiency is by creating a seamless, automated workflow that allows our analysts to open a detection tuning request directly from <a href="https://www.elastic.co/docs/explore-analyze/cases/manage-cases">Kibana Cases</a> with a single click. </p>
<p>In any SOC, the feedback loop between security analysts and detection engineers is crucial for maintaining a healthy and effective security posture. Analysts on the front lines are the first to see how detection rules perform in the real world. They know which alerts are valuable, which are noisy, and which could be improved with a bit of tuning. Alert fatigue from noisy alerts increases the risk of missing a true positive alert. Quickly tuning false positives is critical to responding to <em>true</em> positives. Capturing this alert feedback efficiently can be a challenge – manual processes, like sending emails, opening tickets, or direct messages can be inconsistent, time consuming, and hard to track.</p>
<p>With Elastic Security, an analyst can <a href="https://www.elastic.co/docs/solutions/security/detect-and-alert/add-detection-alerts-to-cases">attach alerts to a new or existing case</a> in Kibana, conduct their investigation, and with some customization and automation they can initiate a tuning request with a single click directly from <a href="https://www.elastic.co/docs/explore-analyze/cases/manage-cases">Kibana Cases</a>. This article will walk you through how we built this automation, and how you can implement a similar system to close the feedback loop and optimize your detection and response program.</p>
<h2 id="customfieldsinkibanacases">Custom Fields in Kibana Cases</h2>
<p><a href="https://www.elastic.co/docs/explore-analyze/cases/configure-case-settings#case-custom-fields%7CConfigure">Custom fields</a> are a key component of this automation within the <a href="https://www.elastic.co/docs/explore-analyze/cases/manage-cases">Kibana Cases</a>. Using these custom fields, we can capture the necessary information directly from the tool that the analysts are already using. These custom fields will appear on all new and existing cases, providing a clear and consistent way for analysts to flag a detection for review.</p>
<p>Note: The ability to add custom fields to cases was introduced in version 8.15. For more details, refer to the <a href="https://www.elastic.co/docs/explore-analyze/cases/configure-case-settings#case-custom-fields%7CConfigure">official Cases documentation</a>. </p>
<p>Every Kibana Case is a document stored in a dedicated Elasticsearch index: <code>.kibana_alerting_cases</code>. This means all your case data is available for querying, aggregation, and automation, just like any other data source in Elastic. Each case document contains a wealth of information, but a few fields are particularly useful for metrics and automation. The <code>cases.status</code> field tracks whether a case is open, in-progress, or closed, while <code>cases.created_at</code> and <code>cases.updated_at</code> provide timestamps crucial for calculating metrics like Mean Time to Resolution (MTTR). Fields like <code>cases.severity</code> and <code>cases.owner</code> allow you to slice and dice your metrics to see how the team is performing. Most importantly for this blog, the <code>cases.custom_fields</code> object contains an array of the custom fields you've configured. Runtime fields can be used to parse the array of custom fields, allowing you to build queries, dashboards, visualizations, and detection rules that trigger workflows.</p>
<p>Beyond tuning requests, custom fields are incredibly versatile for tracking metrics and enriching cases. For example, we have a "<strong>Complex Case</strong>" custom field to flag cases that take more than an hour to resolve, helping us identify rules that may need better investigation guides or automation to help reduce the investigation time. We also use custom fields like <strong>"Detection rule valid"</strong> and <strong>"True Positive Alert"</strong> to gather granular feedback on rule performance and fidelity, allowing us to build powerful dashboards in Kibana to visualize the operational effectiveness of our SOC.</p>
<p>If you have not already created a data view for the Cases information you will need to do that if you want to use runtime fields and data visualizations with your cases.</p>
<p><strong>Navigate to Index Patterns:</strong> In Kibana, go to Stack Management &gt; Data Views and click ‘create new data view’.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt15d76143d04f908c/6a7d7daedd26d286742a7206/image4.png" alt="" /></p>
<p>Configure the Data view to map the <code>.kibana_alerting_cases</code> system index. You will need to click the <strong>Allow hidden and system indices</strong> button to allow this. For the timestamp field I recommend using the <code>cases.updated_at</code> field so the cases are displayed by the most recent activity.  </p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2ae590a984a46a96/6a7d7db163e959c1ee73adfc/image3.png" alt="" /></p>
<h2 id="creatingcustomfields">Creating Custom fields</h2>
<p>There are two types of custom fields; <code>Text</code> fields for free-form input, or <code>Toggle</code> fields for simple yes/no feedback. For our Tuning Request automation, we use one of each. The text field is an optional field used to capture any additional feedback from the analyst, and the toggle field is used to trigger the automation.</p>
<p>In Kibana, go to Security &gt; Cases, then click on <strong>Settings</strong> in the top right. In the settings page you will see a <strong>Custom Fields</strong> section where you can add the new fields you want. The fields are displayed in the cases UI in alphabetical order so we prefix our fields with numbers to keep them in the order we want.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1b4d73a14fe43acc/6a7d7db45967e51dd75da485/image5.png" alt="" /></p>
<p>You can create the new custom fields, the Labels added in the UI are only for the analysts and are not stored in the cases index. These can be any value you want.  </p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9adbe14e7f146b6f/6a7d7db72f00b26bccefbe2a/image1.png" alt="" /></p>
<p><strong>Add Custom Fields:</strong> We need two fields for this workflow. </p>
<ul>
<li><p><strong>Field 1:</strong> Tuning Required Toggle  </p></li>
<li><p>This will be the button analysts click to initiate a tuning request.  </p>
<ul>
<li><strong>Label:</strong> <code>Open tuning request?</code>  </li>
<li><strong>Type:</strong> Toggle  </li>
<li><strong>Default Value:</strong> Off </li></ul></li>
<li><p><strong>Field 2:</strong> Tuning Request Details  </p>
<ul>
<li>This field allows the analyst to provide specific details about what needs to be changed, such as adding an exception, lowering the severity, or adjusting the query logic.  </li>
<li><strong>Name:</strong> <code>Tuning request detail</code>  </li>
<li><strong>Type:</strong> Text   </li></ul></li>
<li><p><strong>Default Value:</strong> Off </p></li>
</ul>
<h2 id="usingruntimefieldstomapthecustomfields">Using Runtime fields to map the custom fields</h2>
<p>A challenge when working with custom fields in Kibana Cases is that the <code>cases.custom_fields</code> field is mapped as an array of objects, where each object represents a custom field with its name and value. This structure makes it difficult to query for specific custom fields directly in KQL. For example, you can't simply use a query like <code>cases.custom_fields.open_tuning_request : "true"</code>. To overcome this, we can use <a href="https://www.elastic.co/docs/manage-data/data-store/mapping/runtime-fields">runtime fields</a> to parse and query the custom fields.</p>
<p>Runtime fields are fields that are evaluated at query time. They allow you to create new fields on the fly without having to reindex your data. We can define runtime fields on the <code>.kibana_alerting_cases</code> index to use a painless script to parse the <code>cases.custom_fields</code> array and extract the values we need into new, easily queryable fields.</p>
<p>For this workflow, we'll create two runtime fields that will map to the custom fields created above:<br />
*   <code>TuningRequired</code>: A boolean field that will be <code>true</code> if the "Open tuning request" toggle is on.<br />
*   <code>TuningDetail</code>: A text field that will contain the analyst's comments from the "Tuning request detail" field.</p>
<p>Before we can create the runtime fields, we first need to identify the unique ID (<code>key</code>) that Kibana assigns to each custom field. Currently, there isn't a straightforward way to view this ID in the UI. To find it, we used the following workaround:</p>
<ol>
<li><strong>Create the Fields.</strong> If you are using other custom fields you should create the custom fields one at a time to make it easier to identify the new field keys. If you only have the two fields mentioned above you can tell them apart using the <code>type</code> value which can be either text or toggle.  </li>
<li><strong>Create a new case.</strong> After adding the field, we created a test case in Kibana and added some data to the description field and toggled the tuning required field to true with all other custom fields set to false or blank.  </li>
<li><strong>Inspect the case document.</strong> We then navigated to Discover and queried the <code>.kibana_alerting_cases</code> index to find the document for the new case. By inspecting the <code>cases.customFields</code> array in the document's source, we could find the <code>key</code> associated with our new custom field. Save the values of the <code>key</code> fields to be used in the runtime scripts.</li>
</ol>
<p>The <code>cases.customFields</code> data is formatted like this:</p>
<pre><code>  [
    {
      "key": "4537b921-3ca4-4ff0-aa39-02dd6a3177bd",
      "type": "text",
      "value": "This alert is too noisy"
    },
    {
      "key": "cdf28896-c793-43d2-9384-99562e23a646",
      "type": "toggle",
      "value": true
    }
  ]
</code></pre>
<h3 id="creatingtheruntimefields">Creating the Runtime Fields</h3>
<p>You can add runtime fields through the Kibana UI or by using the Elasticsearch API in the Dev Tools console. If you have not already created a data view for the Cases information you will need to do that first.</p>
<p>While viewing the new Kibana Cases Data view click the ‘Add Field’ button to open the flyout menu to create a new runtime field.  </p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltbc9479fdd0121b67/6a7d7dbade2315851ffd4d8f/image7.png" alt="" /></p>
<p>Enter the name of the field, in this example we are configuring <code>TuningRequired</code> as a new Boolean field type. Click the ‘Set Value’ toggle to configure this as a new Runtime field configured via a painless script. Update this painless script to replace <code>TUNING_REQUIRED_FIELD_KEY_UUID</code> with the <code>key</code> value from the Tuning Required custom field and paste it into the value field and save the new runtime field.</p>
<pre><code>...
    if (params._source.containsKey('cases') &amp;&amp;
    params._source.cases != null &amp;&amp;
    params._source.cases.containsKey('customFields') &amp;&amp;
    params._source.cases.customFields != null) 
{
  for (def cf : params._source.cases.customFields) {
    if (cf != null &amp;&amp;
        cf.containsKey('key') &amp;&amp;
        cf.key != null &amp;&amp;
        cf.key.contains('TUNING_REQUIRED_FIELD_KEY_UUID') &amp;&amp;
        cf.containsKey('value') &amp;&amp;
        cf.value != null) {
      emit(cf.value);
      break;
    }
  }
}
</code></pre>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb942fcf0a1462a73/6a7d7dbd77b0341d4b3fc5b8/image6.png" alt="" /></p>
<p>Repeat this process for the <code>TuningDetail</code> field, remember to use the <code>key</code> value from the text field in this field’s painless script. If you have any additional custom fields in your cases that you want to use for dashboards or metrics you can map those as well with this same process.   </p>
<p>If you control your cluster settings and data views ‘as code’ you can also add runtime fields to an index mapping using the <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html">Update mapping API</a> from the Kibana Dev Tools console.</p>
<h2 id="automatingthetuningrequestcreation">Automating the tuning request creation</h2>
<p>We can trigger this automation in two ways: through a custom detection rule (that will create a new alert and send it to a connector when a case is updated with a tuning request) or via a scheduled external automation that queries the API. </p>
<p>This automation can be created using any automation platform such as Tines, Github Actions, or custom scripting. This is the logic we use for our automation:</p>
<h3 id="step1findanycasesrecentlytaggedastuningrequired">Step 1: Find any cases recently tagged as <code>TuningRequired</code></h3>
<p>You can use this elasticsearch query to find any cases that have been updated within the last hour where the <code>TuningRequired</code> field has been set to <code>true</code>. This query uses the <code>cases.updated_at</code> field as the time range. The runtime field mappings must be included in the API request to query the custom fields.</p>
<p>This query will return all of the case documents from the <code>.kibana_alerting_cases</code> index that have been updated in the last hour and the <code>TuningRequired</code> field has been set to <code>true</code></p>
<pre><code>POST /.kibana_alerting_cases/_search  
{  
  "query": {  
    "bool": {  
      "must": [],  
      "filter": [  
        {  
          "bool": {  
            "should": [  
              {  
                "match": {  
                  "TuningRequired": true  
                }  
              }  
            ],  
            "minimum_should_match": 1  
          }  
        },  
        {  
          "range": {  
            "cases.updated_at": {  
              "format": "strict_date_optional_time",  
              "gte": "now-1h",  
              "lte": "now"  
            }  
          }  
        }  
      ],  
      "should": [],  
      "must_not": []  
    }  
  },  
 "runtime_mappings": {  
   "TuningDetail": {  
     "type": "keyword",  
     "script": {  
       "source": "if (\nparams._source.containsKey('cases') &amp;&amp;\nparams._source.cases != null &amp;&amp;\nparams._source.cases.containsKey('customFields') &amp;&amp;\nparams._source.cases.customFields != null\n) {\nfor (def cf : params._source.cases.customFields) {\nif (\ncf != null &amp;&amp;\ncf.containsKey('key') &amp;&amp;\ncf.key != null &amp;&amp;\ncf.key.contains('6cadc70a-7d68-4531-9861-7d5bc24c4c1c') &amp;&amp;\ncf.containsKey('value') &amp;&amp;\ncf.value != null\n) {\nemit(cf.value);\nbreak;\n}\n}\n}"  
     }  
   },  
   "TuningRequired": {  
     "type": "boolean",  
     "script": {  
       "source": "if (\nparams._source.containsKey('cases') &amp;&amp;\nparams._source.cases != null &amp;&amp;\nparams._source.cases.containsKey('customFields') &amp;&amp;\nparams._source.cases.customFields != null\n) {\nfor (def cf : params._source.cases.customFields) {\nif (\ncf != null &amp;&amp;\ncf.containsKey('key') &amp;&amp;\ncf.key != null &amp;&amp;\ncf.key.contains('496e71f2-2bce-47a2-93a8-00db0de2d1b4') &amp;&amp;\ncf.containsKey('value') &amp;&amp;\ncf.value != null\n) {\nemit(cf.value);\nbreak;\n}\n}\n}"  
     }  
   }  
 },  
  "fields": [  
    "TuningDetail",  
    "TuningRequired"  
  ]  
}
</code></pre>
<p>Any time a field is changed or a comment is made in a case it will update the <code>updated_at</code> field to the current time. Because any update or comment added to a case will update this timestamp, it is possible to have a single case returned multiple times by this automation if it is run regularly while the case is being updated. Any automation processes leveraged for this should have a deduplication process to prevent processing the same case multiple times in this scenario.</p>
<h3 id="step2parsingeachcase">Step 2: Parsing each case</h3>
<p>Loop through each of the cases returned by the previous query to process them one at a time. Each document returned will contain the <code>fields</code> array with the values from the custom fields, as well as other useful fields. Parse each of the following fields and store them for future use:</p>
<ul>
<li>The <code>_id</code> field will have a format like <code>cases:{{case_ID}}</code>. The case ID is used for future API requests in the automation to add comments to the case or retrieve all alerts attached to the case.  </li>
<li><code>cases.title</code> is the title of the case  </li>
<li><code>cases.assignees</code> is who the case is assigned to  </li>
<li><code>cases.updated_by</code> is the last person to update the case, this is often the person submitting the tuning request and can be useful for knowing who to contact for more information.  </li>
<li><code>cases.tags</code> can be useful if you are using tags to sort or identify your cases.</li>
</ul>
<h3 id="step3retrievingthealertsattachedtothecase">Step 3: Retrieving the alerts attached to the case</h3>
<p>For each case you will want to know which alerts are attached to the case so you know which alerts need to be tuned. This can be done using the <a href="https://www.elastic.co/docs/api/doc/kibana/operation/operation-getcasealertsdefaultspace">cases API</a> with the <code>_id</code> field for the case.</p>
<p><code>/api/cases/{caseId}/alerts</code></p>
<p>This query will return an array of all alert <code>id</code> values that are attached to the case. Using this ID value you can query the <code>.siem-signals*</code> elasticsearch index to find the full information about each alert attached to the case that needs tuning. </p>
<pre><code>POST /.siem-signals-*/_search  
{  
 "size": 1,  
 "query": {  
   "bool": {  
     "must": [],  
     "filter": [  
       {  
         "bool": {  
           "should": [  
             {  
               "match": {  
                 "_id": "{{alert_id}}"  
               }  
             }  
           ],  
           "minimum_should_match": 1  
         }  
       },  
       {  
         "range": {  
           "@timestamp": {  
             "format": "strict_date_optional_time",  
             "gte": "now-30d",  
             "lte": "now"  
           }  
         }  
       }  
     ],  
     "should": [],  
     "must_not": []  
   }  
 }  
}
</code></pre>
<p>From the results of this query you can extract information about the alert such as the name and creation date, along with any other information that could help for tuning such as the <code>user.name</code> or <code>process.name</code> fields. Because a case can have many alerts attached to it you will want to deduplicate the alerts by the <code>signal.rule.name</code> value.</p>
<h3 id="step4openingatuningrequest">Step 4: Opening a tuning request.</h3>
<p>This step is dependent on the ticketing system you use in your environment. Our team uses github issues to track tuning requests and slack for notifications, but this could also be done with any ticketing or project management system that supports automation. </p>
<p>This is the logic flow we use for our automation using both Github and Slack to track tuning requests:</p>
<ul>
<li>Using the name of the alert we search for any existing open tuning requests.   </li>
<li>If an existing tuning request exists we update that request with the details from the case and the new request  </li>
<li>If no existing request exists we open a new tuning request issue and attach the information  </li>
<li>We then send a slack notification to the Detection engineering team’s slack channel containing a link to the tuning request, a link to the case, and details about the request and alert.  </li>
<li>We then use the <a href="https://www.elastic.co/docs/api/doc/kibana/operation/operation-addcasecommentdefaultspace">Cases API</a> to add a comment to the original case with a link to the tuning request issue   </li>
<li><strong>Optional AI Agent</strong>: We are starting to experiment with the use of AI Agents to analyze the alert and case information and then provide even better context with the tuning request, potentially even recommending the changes to make to the detection rules.</li>
</ul>
<p>The final result from this automation is that our SOC Analysts can create a detailed detection tuning request ticket with a single click from their case. We have seen a dramatic increase in the reduction of false positives and the overall efficiency of our detection rules because of this automation.</p>
<h2 id="conclusion">Conclusion</h2>
<p>By using Kibana Cases with custom fields and integrating with automation platforms, you can optimize many of your manual processes. This automated workflow reduces the manual overhead associated with collecting analyst feedback, ensuring that valuable analyst insights are quickly translated into actionable improvements in detection rules. The result is a more efficient, accurate, and resilient SOC that can adapt rapidly to emerging threats and reduce alert fatigue.</p>
<p>Ready to optimize your SOC's efficiency and improve your detection posture? Explore Elastic Security and start building your own automated tuning request workflows today!</p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/automating-detection-tuning-requests-with-kibana-cases</link>
    <guid isPermaLink="false">automating-detection-tuning-requests-with-kibana-cases</guid>
    <category><![CDATA[SOC]]></category>
    <dc:creator><![CDATA[Aaron Jewitt]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1562355f73e47665/6a7d7dc0e88c65a9af0088ea/Security_Labs_Images_10.jpg" length="0" type="image/jpeg"/>
    <pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[TOR Exit Node Monitoring Overview]]></title>
    <description><![CDATA[Learn how to monitor your enterprise for TOR exit node activity.]]></description>
    <content:encoded><![CDATA[<h2 id="whymonitoringfortorexitnodeactivitymatters">Why Monitoring for TOR Exit Node Activity Matters</h2>
<p>In today’s complex cybersecurity landscape, one of the most overlooked but critical elements in proactive threat detection is monitoring for TOR (The Onion Router) exit node activity. TOR enables anonymous communication, and while it serves legitimate privacy interests, it also provides cover for cybercriminals, malware campaigns, and data exfiltration.</p>
<h2 id="whataretorexitnodes">What Are TOR Exit Nodes?</h2>
<p>TOR exit nodes are the final relay points in the TOR network where encrypted traffic exits to the open internet. If a user browses the web anonymously via TOR, the website or service they access will see the IP address of the exit node, not the user's actual IP address.</p>
<p>In other words, any network traffic originating from a TOR exit node is untraceable to its source without cooperation from the TOR network, which is unlikely by design.</p>
<h2 id="whyshouldyoucare">Why Should You Care?</h2>
<p>While not all TOR activity is malicious, a substantial amount of malicious traffic uses TOR to mask its origin. Here’s why it matters:</p>
<ol>
<li><p><strong>Anonymized Reconnaissance:</strong> Attackers often perform scans and probes from TOR exit nodes. If someone is mapping your infrastructure using TOR, they may be preparing for a breach attempt while remaining anonymous.</p></li>
<li><p><strong>Command and Control (C2) Channels:</strong> Many malware families use TOR for C2 communications, making it hard to trace the infected endpoint back to its controller.</p></li>
<li><p><strong>Data Exfiltration:</strong> TOR is a common channel for exfiltrating sensitive data out of an organization. If sensitive files are being uploaded to external endpoints via TOR, you may already be compromised.</p></li>
<li><p><strong>Compliance Risks:</strong> Some industries (e.g., healthcare, finance) require strict data handling and access controls. Allowing or ignoring TOR-originated traffic could violate these policies or industry regulations.</p></li>
</ol>
<p>You should look for any interactions between TOR exit nodes and:</p>
<ul>
<li>host.ip  </li>
<li>server.ip  </li>
<li>destination.ip  </li>
<li>source.ip  </li>
<li>client.ip</li>
</ul>
<p>This can occur in logs from firewalls, DNS, proxies, endpoint agents, cloud access logs, and more.</p>
<h2 id="howtomonitorfortorexitnodes">How to Monitor for TOR Exit Nodes</h2>
<p>In order to collect, monitor, alert, and report on TOR Exit Node activity, we must first create a few components, namely, we will create an index template and an ingest pipeline. We will then hit the TOR API endpoint every 1 hour to request the most recent detailed information. </p>
<p>If you would like to learn more about options for monitoring TOR, you may read about them <a href="https://metrics.torproject.org/onionoo.html">here</a>. If you would like to know more about the TOR Project in general, you may read about it <a href="https://www.torproject.org/">here</a>.</p>
<h3 id="ingestpipeline">Ingest Pipeline</h3>
<p>First, let’s create an Ingest Pipeline that will accomplish the last bit of parsing our data before it is written to an index. In DevTools, simply apply the following: there are descriptions for each processor; should you want to know more about what each does and its associated condition, if present.</p>
<p>Here is what your screen may look like:<br />
<img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt53a19a562dfc3a98/6a7d861433fa8a16071ffa10/image4.png" alt="" /></p>
<p>You may find the ingest pipeline on <a href="https://ela.st/tor-node-ingest-pipeline">GitHub</a>.</p>
<h3 id="indextemplate">Index Template</h3>
<p>Next, we need to create our index template to ensure our fields are correctly mapped.</p>
<p>Still in DevTools, submit the following request just as you completed with the ingest pipeline.  You may find the index template via <a href="https://ela.st/tor-node-index-template">this link</a> on GitHub.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7505fbff3b5aa374/6a7d861796b5a695168786d9/image9.png" alt="" /></p>
<p>Notice the priority of the index template; we set this to a much higher number so that this template will take precedence over the default logs-*-* template. While you will notice in the following steps that we set the ingest pipeline in our configuration for data collection, we may also apply it here as a safeguard to ensure data is written through this pipeline.</p>
<h3 id="elasticagentpolicy">Elastic-Agent Policy</h3>
<p>With these two items loaded, we may now navigate to Fleet and select the “agent policy” we want to install our integration to.</p>
<p>On the policy you wish to install the TOR collection to, simply click “Add integration”.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt991130710947dd94/6a7d861a3ce8e27784cf26f4/image13.png" alt="" /></p>
<p>Select “Custom” from the left-hand category list, then click “Custom API”.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltbae93850aded379f/6a7d861d05b7b53f6b188bef/image10.png" alt="" /></p>
<p>Click the blue “Add Custom API” button on your top right.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltfa4b47efbc166d93/6a7d862096b5a6adf38786df/image12.png" alt="" /></p>
<p>You may title your Integration anything you like; however, I will be using “TOR Node Activity” in this example.</p>
<p>Fill in the following fields:</p>
<p>Dataset name:<br />
<code>ti_tor.node_activity</code></p>
<p>Ingest Pipeline:<br />
<code>logs-ti_tor.node_activity</code></p>
<p>Request URL:<br />
<code>https://onionoo.torproject.org/details?fields=exit_addresses,nickname,fingerprint,running,as_name,verified_host_names,unverified_host_names,or_addresses,last_seen,last_changed_address_or_port,first_seen,hibernating,last_restarted,bandwidth_rate,bandwidth_burst,observed_bandwidth,flags,version,version_status,advertised_bandwidth,platform,recommended_version,contact</code></p>
<p>Request Interval:<br />
<code>60m</code></p>
<p>Request HTTP Method:<br />
<code>GET</code></p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt13d268c7eca4075d/6a7d862373d9bdd59e29acae/image2.png" alt="" /></p>
<p>Response Split:<br />
<code>target: body.relays</code></p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2293bbd436bc73cb/6a7d86262f00b2350aefbf80/image6.png" alt="" /></p>
<p>You will then need to click to expand the “&gt; Advanced options” and scroll down a bit more.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7877efd92ecc93a4/6a7d8629e02fac6a995d3598/image3.png" alt="" /></p>
<p>You may find the necessary processor snippet to copy at GitHub <a href="https://ela.st/tor-node-elastic-agent-processors">here</a>.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte20cb7390d3c11e7/6a7d862b3cab1c8c7f0e1a92/image1.png" alt="" /></p>
<p>You may now click the “Save and continue” button and in a few minutes you will have TOR node activity available in your logs-* index!  </p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt5aac9df060d797e7/6a7d862e63e9593ef973af37/image5.png" alt="" /></p>
<h3 id="filebeatinstallationoption">Filebeat Installation Option</h3>
<p>If you are not using Elastic-Agent and wish to ingest via Filebeat, that’s cool too! Instead of using the steps above, simply leverage the following “filebeat.inputs:” which will use the exact same ingest pipeline and index template as above!  Simply copy and paste the <a href="https://ela.st/tor-node-filebeat-input">input section</a> into your filebeat.yml file, you will still need to add an output section.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltdc223edf18f0fb03/6a7d86313ce8e248a7cf26f8/image11.png" alt="" /></p>
<h2 id="reviewingyourdata">Reviewing your data</h2>
<p>Now that you've completed the configuration of the ingest pipeline and the agent integration, you can see the TOR nodes in the Discover view. From here, you can create rules, visualizations, dashboards, etc., to help keep tabs on how TOR is being used on your network.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt4823b2a32962cdbe/6a7d8634c2e914f1db013d3d/image14.png" alt="" /></p>
<h2 id="whatcanyoudonext">What can you do next?</h2>
<p>The beautiful thing about the naming convention for this index, is that it will automatically function with your Threat Intel IP Address Indicator Match rule available in the Elastic SIEM.  </p>
<p>However, you may want to make your own rule using some of the wealth of information that is provided with this integration; particularly depending on the type of node observed environment. Since there was a considerable amount of geo-based data enriched with this index, now would be an excellent time to check out some of the map features within Kibana.  </p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1c240616d4fc81cc/6a7d863777b03410be3fc6f3/image8.png" alt="" /></p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/tor-exit-node-monitoring</link>
    <guid isPermaLink="false">tor-exit-node-monitoring</guid>
    <category><![CDATA[SOC]]></category>
    <dc:creator><![CDATA[Peter Titov]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt5a7745b8316b03fb/6a7d863a96b5a618228786e3/Security_Labs_Images_9.jpg" length="0" type="image/jpeg"/>
    <pubDate>Mon, 27 Oct 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Elastic Security opens public detection rules repo]]></title>
    <description><![CDATA[Elastic Security has opened its detection rules repository to the world. We will develop rules in the open alongside the community, and we’re welcoming your community-driven detections. This is an opportunity to share collective security knowledge.]]></description>
    <content:encoded><![CDATA[<p>At Elastic, we believe in the <a href="https://www.elastic.co/about/why-open-source">power of open source</a> and understand the importance of community. By putting the community first, we ensure that we create the best possible product for our users. With Elastic Security, <a href="https://www.elastic.co/security">two of our core objectives</a> are to <em>stop threats at scale</em> and <em>arm every analyst</em>. Today, we’re opening up a new GitHub repository, <a href="https://github.com/elastic/detection-rules">elastic/detection-rules</a>, to work alongside the security community, stopping threats at a greater scale.</p>
<p>The release of the <a href="https://www.elastic.co/blog/elastic-siem-detections">detection engine</a> in Elastic Security brought <a href="https://www.elastic.co/security/automated-threat-protection">automated threat detection</a> to the Elastic Stack. Since the initial launch of the detection engine, the Elastic Security Intelligence &amp; Analytics team has added 50+ additional rules, increasing the visibility of attacker techniques on Linux, macOS, and Windows operating systems. As we continue to expand coverage, you’ll see increased breadth in detections, covering new domains such as cloud services and user behavior.</p>
<p>Over the past few releases, we used an internal repository to manage rules for the detection engine. We’ve iteratively improved our testing procedures by adding automated tests for new contributions that validate Kibana Query Language (KQL) syntax, schema usage, and other metadata. Our rule development has matured, so we can move fast <em>without</em> breaking things.</p>
<p>By opening up our <a href="https://github.com/elastic/detection-rules">elastic/detection-rules</a> GitHub repository, Elastic Security will develop rules in the open alongside the community, and we’re welcoming your community-driven detections. This is an opportunity for all of us to share our collective knowledge, learn from each other, and make an impact by working together.</p>
<h2 id="whatsinthisnewrepository">What’s in this new repository?</h2>
<p>In the <a href="https://github.com/elastic/detection-rules">elastic/detection-rules</a> GitHub repository, you can find rules written for Elastic Security, with coverage for many <a href="https://attack.mitre.org/">MITRE ATT&amp;CK</a>® techniques. Our current rule logic is primarily written in <a href="https://www.elastic.co/guide/en/kibana/master/kuery-query.html">KQL</a>, and by leveraging the <a href="https://www.elastic.co/guide/en/ecs/current/index.html">Elastic Common Schema (ECS)</a>, we only need to write rules once. By using the defined fields and categories in ECS, rules automatically work with Beats logs and other data sources that map properly to ECS.</p>
<p>Within the <a href="https://github.com/elastic/detection-rules/tree/main/rules">rules/</a> folder, rules are stored in TOML files and are grouped by platform. We tried to keep it simple with a flat hierarchy so that it’s easier to find and add new rules. If you’re looking for Windows-only rules, navigate to <a href="https://github.com/elastic/detection-rules/tree/main/rules/windows">rules/windows</a>. If you’re still struggling to find a rule or want to search across rules, you can use our CLI by running the command python -m detection_rules rule-search, which will show the files that have matching metadata.</p>
<p>Every rule contains several fields of metadata in addition to the query itself. This captures information like the title, description, noise level, ATT&amp;CK mappings, tags, and the scheduling interval. We have a few additional fields to aid analysts performing triage, describing known false positives or helpful steps for an investigation. For more information on the metadata that pertains to rules, see the <a href="https://www.elastic.co/guide/en/siem/guide/current/rules-ui-create.html#create-rule-ui">Kibana rule creation guide</a> or our <a href="https://github.com/elastic/detection-rules/blob/main/CONTRIBUTING.md#rule-metadata">summary of rule metadata</a> in the contribution guide.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltec263444d3bb017e/6a7d7f9e1967eac01a32d86b/detection-rules-repo-blog-msbuild.png" alt="detection-rules-repo-blog-msbuild.png" title="detection-rules-repo-blog-msbuild.png" /></p>
<p>Preview of the file behind the “MsBuild Making Network Connections” rule</p>
<h2 id="howdotheserulesgettomydetectionengine">How do these rules get to my detection engine?</h2>
<p>If you’re using our <a href="https://www.elastic.co/cloud/">Elastic Cloud managed service</a> or the default distribution of the Elastic Stack software that includes the <a href="https://www.elastic.co/subscriptions">full set of free features</a>, you’ll get the latest rules the first time you navigate to the detection engine. When you upgrade, the detection engine recognizes that rules were added or changed and <a href="https://www.elastic.co/guide/en/siem/guide/current/rules-ui-create.html#load-prebuilt-rules">prompts</a> you to decide whether you want those rules upgraded. Follow the steps after upgrading and you’ll get the latest copy of the rules.</p>
<p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1a5ad5841d9cef77/6a7d7fa16c6eaca1bdf1133a/detection-rules-repo-blog-msbuild-network-connections.png" alt="detection-rules-repo-blog-msbuild-network-connections.png" title="detection-rules-repo-blog-msbuild-network-connections.png" /></p>
<p>The same rule — “MsBuild Making Network Connections” — loaded in the detection engine</p>
<h2 id="whowillusethisrepository">Who will use this repository?</h2>
<p>This repository is where the Elastic Security Intelligence &amp; Analytics team will develop rules, create issues, manage pull requests, and target releases. By making the repo public, we’re inviting all external contributors into this workflow. This will give contributors visibility into our development process and a clear path for rules to be released with the detection engine.</p>
<p>When you’re ready to contribute, please sign Elastic's <a href="https://www.elastic.co/contributor-agreement">contributor license agreement (CLA)</a>. This is standard for all Elastic GitHub repositories, and it means that we freely can distribute your code to Elastic users.</p>
<h2 id="howdoweapproachthreatdetection">How do we approach threat detection?</h2>
<p>In general, we tend to prefer detections that focus on adversary behaviors. This usually means that we focus on ATT&amp;CK techniques. This might mean more research and effort is needed to figure out how a technique works before creating a rule. But by taking this approach, we do a better job detecting and stopping the attacks of today and tomorrow, instead of just the attacks of yesterday.</p>
<p>Taking a behavioral approach also means we need various types of rules. Some might detect atomic events, others may require aggregating multiple events or looking for deviances above a threshold. With <a href="https://eql.readthedocs.io">Event Query Language (EQL)</a>, we will be able to write rules that look for sequences of behavior that span multiple events.</p>
<p>Of course, we understand that sometimes a technique can be hard for all users to detect behaviorally. In that case, by all means, feel free to add a rule that is more signature-like in nature and written towards a specific behavior or tool.</p>
<p>For a longer discussion on what makes a mature detection, read about the philosophy <a href="https://github.com/elastic/detection-rules/tree/main/PHILOSOPHY.md">of the detection rules repository</a>.</p>
<h2 id="whydoweneedanewrepository">Why do we need a new repository?</h2>
<p>If you’ve shared public rules before, you’re probably aware of other well-known GitHub repositories, like the <a href="https://github.com/mitre-attack/car">Cyber Analytics Repository (CAR)</a> by MITRE, <a href="https://github.com/Neo23x0/sigma">Sigma</a>, or even the <a href="https://eqllib.readthedocs.io">EQL Analytics Library</a> based on Elastic’s EQL. You might be wondering: <em>Why do we need another repository? Why not use the ones that already exist?</em></p>
<p>Unsurprisingly, the best answer to this question starts with another question: <em>Why do the other repositories exist?</em> Both CAR and Sigma are purposefully agnostic of language or platform, and sometimes data source. On the other hand, the EQL Analytics Library was written with a specific language in mind.</p>
<p>With our new detection rules repository, we’re trying to serve a slightly different purpose. Our goal is to give users of Elastic Security the best possible detections that work across various data sources. We use ECS as the great equalizer of schemas, making it possible to write a rule once that applies to multiple data sources.</p>
<p>Since the Elastic Stack supports multiple languages, our rules should reflect that. Query languages are typically developed to solve different types of problems, and we shouldn’t constrain rule developers to a single language if another does the job better. We currently have <a href="https://www.elastic.co/guide/en/kibana/master/kuery-query.html">KQL</a> and <a href="https://www.elastic.co/guide/en/kibana/current/lucene-query.html">Lucene</a> rules, along with rules that use <a href="https://www.elastic.co/guide/en/machine-learning/6.8/ml-jobs.html">machine learning anomaly detection</a> jobs in the repository. We’re <a href="https://github.com/elastic/elasticsearch/issues/49581">working hard</a> to bring <a href="https://eql.readthedocs.io">EQL</a> to the Elastic Stack and into our repository.</p>
<p>We can also ensure best practices are being followed for optimal Elasticsearch performance. For example, searching for process.path:*\\cmd.exe requires performing a wildcard check, which is more costly than a simple keyword check. Instead of searches containing leading wildcards, we can recommend using process.name:cmd.exe, which will result in better performance and the most accurate results. On a similar note, ECS also contains the field process.args, which is a parsed version of process.command_line. We recommend using the parsed field instead, because it gives us better performance and means that we are much less prone to <a href="https://github.com/elastic/detection-rules/blob/main/PHILOSOPHY.md#does-a-rule-have-trivial-evasions">trivial whitespace or quotation-based evasions</a>. Win-win.</p>
<h2 id="caniaddrulesfromanotherrepository">Can I add rules from another repository?</h2>
<p>Within your own environment, you’re welcome to add rules to your own detection engine as long as your Kibana role has the right permissions. If you want to add rules to the <a href="https://github.com/elastic/detection-rules">elastic/detection-rules</a> repository, the answer is an unsurprising: <a href="https://www.elastic.co/blog/it-depends"><em>It depends…</em></a><em>.</em> As long as a rule can be sublicensed under the Elastic License, this is fair game. Most of the time, the requirements are fairly straightforward — retain the original authors in the rule.author array, and update the NOTICE.txt file accordingly to give attribution to the original authors. We don’t want to take credit for someone else’s work, so please help us be thorough!</p>
<p>For more information on how we approach licensing in the repository, check the <a href="https://github.com/elastic/detection-rules#licensing">Licensing</a> section of the README.</p>
<h2 id="howdoicontribute">How do I contribute?</h2>
<p>Eager to share your rule logic? Hop on over to <a href="https://github.com/elastic/detection-rules">elastic/detection-rules</a> on GitHub. We have detailed instructions there for navigating the repository, forking and cloning, and creating a rule. We include a command line tool for bulk editing the files and to make creating new rules easier. When you’re ready to add a new rule to the repository, run python -m detection_rules create-rule, and you’ll be prompted for the required metadata. We recommend using the CLI when possible, because it reduces copy-and-paste errors that happen when reusing contents from a TOML file from another rule or template.</p>
<p>When your rule is in a good state, you can run the command python -m detection_rules test to locally perform unit tests, which validate syntax, schema usage, etc. Then, create the pull request and someone on the Intelligence &amp; Analytics team will review the contribution. If we request any changes, we’ll work with you to make the recommended changes.</p>
<p>If you have a good idea for a rule, but want to collaborate with us on the idea or get feedback, feel free to create a <a href="https://github.com/elastic/detection-rules/issues/new/choose">New Rule</a> issue. We look forward to helping and brainstorming with you!</p>
<p>For more information, check out the <a href="https://github.com/elastic/detection-rules/tree/main/CONTRIBUTING.md">contribution</a> guide.</p>
<h2 id="whatsnext">What’s next?</h2>
<p>Welcome to our new rules repository and workflow! Your contributions are encouraged, and we look forward to seeing your name in the rule.author field. The detection rules repository will continue to evolve along with the rest of Elastic Security, and we’re excited for what’s next.</p>
<p>If you want to track the development of EQL in the stack, subscribe to this <a href="https://github.com/elastic/elasticsearch/issues/49581">GitHub issue</a>. Or take a peek at the <a href="https://www.elastic.co/guide/en/elasticsearch/reference/master/eql.html">ongoing documentation</a> to watch what the Elasticsearch team is up to.</p>
<p>If you have any feedback or questions writing rules or navigating our new <a href="https://github.com/elastic/detection-rules">detection rules</a> GitHub repository, please <a href="https://github.com/elastic/detection-rules/issues/new/choose">create an issue</a> in GitHub, reach out on the <a href="https://discuss.elastic.co/c/security">discussion forum</a> with the <em>detection-rules</em> tag, or find us in the <em>#detection-rules</em> channel of the <a href="http://ela.st/slack">Elastic Slack Community</a>.</p>]]></content:encoded>
    <link>https://www.elastic.co/security-labs/blog/elastic-security-opens-public-detection-rules-repo</link>
    <guid isPermaLink="false">elastic-security-opens-public-detection-rules-repo</guid>
    <category><![CDATA[SOC]]></category>
    <dc:creator><![CDATA[Ross Wolf,Elastic Security Intelligence & Analytics Team]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf9adba0b8e94dc90/6a7d7fa405b7b55855188b14/blog-thumb-gears-steel.jpg" length="0" type="image/jpeg"/>
    <pubDate>Fri, 20 May 2022 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>