Request an exact quote
Cybersecurity · Endpoint protection & XDR migration path

From Palo Alto Cortex XDR to Wazuh

Leaving an XDR billed on endpoints and ingested data at the same time: unpicking which telemetry earns its cost, re-expressing BIOCs and XQL as Wazuh rules, keeping a prevention layer Wazuh does not provide, and running rings without a coverage gap.

Effort
High
Est. timeline
~18 wks
Wazuh model
Free (self-hosted)
Open source
Yes
▶ Model your savings in the interactive calculator

Cortex XDR is billed in a way that makes budgeting genuinely difficult: per endpoint, and separately for the data you ingest into the Cortex Data Lake, with credit-based consumption on top. Two meters that move independently means the invoice can grow because a network team enabled verbose logging, with no change in endpoint count at all. Wazuh replaces the detection, log-analysis, and compliance half for the cost of running it. It does not replace the prevention half, and this migration is built around that distinction.

Pull the ingestion lever before you migrate anything

There is a cost reduction available in week one that requires no migration at all, and it is worth taking regardless of what you eventually decide.

Audit the data sources feeding the Cortex Data Lake and check which have ever contributed to an alert a human actioned. In most estates several high-volume sources have not. Stop ingesting those and the data meter falls immediately.

This is not a delaying tactic. It shrinks the migration itself, because the telemetry you keep is the telemetry you have to reproduce in Wazuh. Doing the audit first means you are not rebuilding coverage for data you were about to discard anyway, and it gives the project an early, measurable win that buys patience for the longer work.

The mapping

  • Cortex XDR agent → Wazuh agent for telemetry, plus a separate prevention layer for blocking.
  • Cortex Data Lake → Wazuh indexer (OpenSearch), sized on your surviving volume.
  • Custom BIOCs → Wazuh rules, rebuilt from the condition rather than converted.
  • Correlation rules → Wazuh rules with frequency and timeframe for stateful logic.
  • XQL queries → Wazuh dashboard queries, with the caveat that ad-hoc retrospective hunting is weaker.
  • Incident and causality view → alerts plus an external case platform (TheHive or equivalent).
  • Response actions (isolate, terminate, script execution) → Wazuh active response scripts.
  • Exclusions and exceptions → Wazuh rule exclusions and decoder tuning.
  • Host Insights / vulnerability assessment → Wazuh’s vulnerability detector, or a dedicated scanner.
  • Compliance content → Wazuh SCA policies and regulatory templates.

Detection without prevention is the architectural decision

Say this out loud in the design review, because everything else follows from it.

The Cortex agent does two jobs on the endpoint. It collects rich telemetry, and it blocks: exploit prevention, behavioural threat protection, malware blocking at execution. Wazuh does the first job well and the second not at all. Wazuh’s active response can kill a process or block an IP when a rule fires, which is genuinely useful, but it is a reaction to a rule match, not a continuous prevention engine sitting in front of execution.

So the target architecture is layered by design: OS-native prevention on the endpoint (Defender Antivirus on Windows, hardening and allow-listing on Linux), with Wazuh as the detection, correlation, and response brain above it. Choose that prevention layer, deploy it, and confirm it is working and centrally managed before any Cortex agent is removed. Retrofitting prevention after the fact means running exposed, and it is the most common way this specific migration goes wrong.

Rebuilding the behavioural content that is actually yours

Cortex ships a large library of behavioural indicators produced by Palo Alto’s research team. That content is not yours and it is not coming with you, and there is no point pretending an open ruleset is equivalent to a vendor’s dedicated research operation.

What is yours are the custom BIOCs and correlation rules written for your environment, and those are worth real effort. Export them, read the conditions, and rebuild each as a Wazuh rule. The work splits in two: the decoder has to produce the fields the condition tests, and the rule expresses the condition. Get in the habit of validating both with wazuh-logtest against real production log samples, because a broken decoder and a broken rule look identical from the dashboard, and a rule that never fires is indistinguishable from a rule that is working.

For the general behavioural coverage you are losing, start from Wazuh’s bundled rulesets and the open Sigma and ATT&CK-mapped content, and prioritise by the techniques that appear in your own alert history rather than by rule count.

Rings, and the specific gotcha

Security migrations run in rings because there must be no coverage gap. The specific hazard here is agent coexistence: two agents with kernel-level components on one host can fight, and the symptoms (performance degradation, missing telemetry, one agent flagging the other) are exactly the kind that appear at scale rather than on one test machine.

So the pilot ring has to cover every operating system and build in the estate, not just a convenient sample, and it has to be measured rather than eyeballed. Check CPU and memory impact, confirm both agents are reporting, and set exclusions so Cortex does not treat the Wazuh agent as suspicious.

Then, ring by ring: deploy Wazuh, prove detections against a test suite, confirm active response fires, confirm the prevention layer is live and managed, and only then remove the Cortex agent from that ring. Never estate-wide, and never before the prevention layer is verified on those specific hosts.

Order of operations

  1. Audit ingested sources and stop paying for the ones that never produce alerts.
  2. Export custom BIOCs and correlation rules, and pull alert history to prioritise them.
  3. Choose and deploy the prevention layer, centrally managed, ahead of everything else.
  4. Build the Wazuh cluster sized on surviving telemetry volume, with retention policy set from day one.
  5. Rebuild detections, validating decoders and rules against replayed production events.
  6. Wire alerts into a case platform, because Wazuh has no incident workspace.
  7. Pilot ring across every OS build, measuring agent coexistence and performance.
  8. Roll out ring by ring, dual-running and tuning false positives at each step.
  9. Remove the Cortex agent per validated ring, and reduce the endpoint licence as counts fall.

Clearing the bar before you cut over

Per ring: detections fire against your test suite (EICAR, atomic red-team, and the techniques from your own history), active response executes and is logged, the prevention layer is confirmed active and reporting centrally, agent performance impact is measured and acceptable, alerts reach the case platform, and compliance reports render. Only then does the Cortex agent come off those hosts.

The short version

Cortex XDR to Wazuh removes two meters at once and hands you a cluster, a decoder estate, and a prevention decision. Trim ingestion first for an immediate saving that also shrinks the project. Rebuild only the behavioural content that is genuinely yours, and be honest that a vendor research team is not replaced by an open ruleset. Above all, choose and deploy the prevention layer before the first Cortex agent comes off a host. Model the illustrative per-endpoint economics in the calculator above, and count the indexer, the case platform, and the detection-engineering time as part of the price.

Tooling & automation for this path

Deploy the Wazuh manager and agents alongside the Cortex agent; re-express BIOC/XQL detection logic as Wazuh rules and decoders; keep an OS-native prevention layer because Wazuh detects rather than autonomously blocks; validate per ring before removing the Cortex agent.

Primary references: official Wazuh documentation ↗ and the Palo Alto Cortex XDR documentation ↗ , always verify version-specific behavior against them before you migrate.

Frequently asked questions

What exactly does Wazuh not do that Cortex XDR does?

Three things, and all three need a plan. First, autonomous prevention: the Cortex agent blocks exploits and malware at execution, while Wazuh detects and runs scripted responses after the fact. Second, cross-source behavioural analytics: Cortex correlates endpoint, network, and cloud telemetry into a single causality chain, which Wazuh does not attempt. Third, managed threat hunting where you subscribe to it. Plan a prevention layer, accept a weaker correlation story, and treat hunting as a separately sourced capability.

Do BIOCs and XQL queries convert to Wazuh rules?

No converter exists and the models differ. A BIOC is a behavioural indicator evaluated against the Cortex data lake's normalised schema; a Wazuh rule is XML evaluated against a decoded event at ingest. Custom BIOCs written for your environment are the ones worth migrating, because the built-in behavioural content is Palo Alto's research and is not yours to take. Export your custom BIOCs and correlation rules, read them as a plain-language specification, and rebuild the conditions as Wazuh rules with decoders that produce the fields those conditions need.

How do we handle the data-ingestion meter while migrating?

Deliberately, because it is a lever you can pull early for immediate savings. Cortex bills endpoints and ingested data separately, so the first cost reduction available is trimming ingestion of sources that never contribute to a detection, and that can be done before any migration work at all. Audit which data sources have ever appeared in a fired alert, stop ingesting the ones that have not, and bank the saving. It also shrinks the migration, since you only rebuild coverage for telemetry you decided was worth keeping.

What prevention layer should we pair with Wazuh?

Whatever is already licensed and native to the platform, in most estates. Microsoft Defender Antivirus on Windows is free, capable, and manageable by policy; on Linux, host hardening plus application allow-listing does most of the job. The essential point is architectural: decide the prevention layer, deploy it, and verify it works before you remove the Cortex agent, not after. Migrations that treat prevention as a follow-up item spend weeks running with detection only, which is exactly the exposure the ring plan exists to prevent.

Can both agents run on the same endpoint during the parallel period?

Usually, but never assume it. Two security agents with kernel-level components can conflict, degrade performance, or suppress each other's telemetry. Test the combination on a pilot ring covering every OS and build in your estate, measure the performance impact, and check the Cortex agent's exclusion configuration so it is not treating the Wazuh agent as suspicious. Only once a ring is measured clean do you widen the rollout.

Model your 3-year cost

Pre-filled for Palo Alto Cortex XDR → Wazuh; adjust every figure with your own numbers. Estimates are illustrative, not vendor quotes, see our methodology.

Sized at 1,000 endpoints, cost is computed on this.
Stay on Palo Alto Cortex XDR (3yr)
$390,000
Move to Wazuh (3yr + migration)
$90,000
Projected savings
$300,000 (77%)
Payback period
7.0 mo
Build a decision report from these numbers:

How this is licensed: Security is the category where the billing unit changes per segment: EDR/XDR bills per endpoint or per protected asset; SIEM bills by ingest volume (GB/day) or events per second; MDR, MSSP, and SOC-as-a-Service bill per endpoint or per asset for endpoint-centric services but per GB ingested for co-managed SIEM and SOC-as-a-Service; SOAR bills per analyst seat or per automation run; and vulnerability management bills per scanned asset. The calculator normalizes everything to protected endpoints so segments stay comparable; if you are modelling a SIEM or an ingest-priced SOC-as-a-Service specifically, treat one endpoint as roughly one asset generating logs and sanity-check the total against your GB/day contract.

Illustrative, editable figures, not vendor pricing (defaults reviewed May 2026).

Request a vendor-accurate Wazuh quote

A guided builder that turns your estimates into a requirements report (RFQ) you can send to a vendor, partner, or distributor for a binding quote, then feed the real prices back into the calculator above. How our estimates work.

  1. 1Size it
  2. 2Requirements
  3. 3Your details
  4. 4Channels & export

How big is your Palo Alto Cortex XDR estate?

Every device that needs the agent installed. Not sure? Enter rough numbers, the distributor confirms exact counts later.

1,000 endpoints
Default mid-size assumption (1,000 endpoints)