Skip to content

Add Vaikora AI Agent Signals to CrowdStrike — Microsoft Sentinel Solution v1.0.0#13984

Open
mazamizo21 wants to merge 51 commits intoAzure:masterfrom
mazamizo21:feature/vaikora-crowdstrike-azure-v1.0.0
Open

Add Vaikora AI Agent Signals to CrowdStrike — Microsoft Sentinel Solution v1.0.0#13984
mazamizo21 wants to merge 51 commits intoAzure:masterfrom
mazamizo21:feature/vaikora-crowdstrike-azure-v1.0.0

Conversation

@mazamizo21
Copy link
Copy Markdown
Contributor

Vaikora AI Agent Signals to CrowdStrike — Microsoft Sentinel Solution v1.0.0

This PR adds a Logic App playbook solution that polls Vaikora AI agent behavioral signals and pushes high-severity indicators as Custom IOCs to CrowdStrike Falcon.

What's included

Logic App Playbook (VaikoraToCrowdStrike_Playbook.json)

  • Runs on a configurable schedule (default: every 6 hours)
  • Polls Vaikora GET /api/v1/actions for high-risk + anomalous agent actions
  • Authenticates to CrowdStrike via OAuth2 client credentials
  • Pushes Custom IOC indicators to POST /iocs/entities/indicators/v1

Signal Mapping

  • risk_level: critical → CS severity: critical, action: prevent
  • risk_level: high → CS severity: high, action: detect
  • risk_level: medium/low → CS severity: medium, action: detect
  • is_anomaly: true → tag: ai-agent-anomaly
  • threat_detected: true → tag: ai-threat-detected

Parameters

  • VaikoraApiKey (securestring)
  • VaikoraAgentId
  • CrowdStrike_ClientId (securestring)
  • CrowdStrike_ClientSecret (securestring)
  • CrowdStrike_BaseUrl (default: https://api.crowdstrike.com)

Publisher

Data443 Risk Mitigation, Inc. — support@data443.com

@mazamizo21 mazamizo21 requested review from a team as code owners April 3, 2026 06:54
@v-shukore v-shukore added the New Solution For new Solutions which are new to Microsoft Sentinel label Apr 3, 2026
@v-maheshbh
Copy link
Copy Markdown
Contributor

Hi @mazamizo21
Kindly package the solution with version 3.0.0.

Thanks!

@mazamizo21 mazamizo21 force-pushed the feature/vaikora-crowdstrike-azure-v1.0.0 branch from 7d68c28 to f3ea143 Compare April 3, 2026 14:59
@mazamizo21
Copy link
Copy Markdown
Contributor Author

Hi @v-maheshbh — done! Repackaged with version 3.0.0. Package/3.0.0.zip is now included. Thanks!

Taz Jack and others added 16 commits April 3, 2026 12:13
…ntId1), parentId bracket, arm-ttk clean (47-48/49 matching Cyren baseline)
…c App (playbook was invisible in Sentinel Automation tab)
Vaikora GET /api/v1/actions returns {actions:[...], total:N} not bare array.
Fix For_Each 'from' expression to extract ?['actions'].

Fixes VaikoraToCrowdStrike_Playbook.json + mainTemplate.json (PR Azure#13984).
Same fix applied to vaikora-sentinelone-azure cf4bfa8 and
vaikora-azure-security-center via separate commit.
@v-maheshbh
Copy link
Copy Markdown
Contributor

Hi @mazamizo21

Kindly review file changes and removed the solution not part of this PR.

Thanks!

PR Fixer added 3 commits April 8, 2026 07:17
Reverted Cyren-SentinelOne-ThreatIntelligence package files back to
upstream master. These changes were accidentally included and don't
belong in the Vaikora CrowdStrike solution PR.
These changes belong in a separate PR. Reverting Solution data,
Playbook, ReleaseNotes, and package zip back to upstream master.
Restoring Cyren-SentinelOne-ThreatIntelligence to the exact state
from before this branch. Removes 3.0.1.zip, reverts Solution data,
Playbook, mainTemplate, and ReleaseNotes. These changes belong in
their own separate PR.
@mazamizo21
Copy link
Copy Markdown
Contributor Author

Hi @v-maheshbh — removed the Cyren-SentinelOne-ThreatIntelligence files that were accidentally included. The PR now only contains the Vaikora-CrowdStrike-ThreatIntelligence solution (v3.0.0). Ready for re-review.

@v-maheshbh v-maheshbh requested a review from Copilot April 10, 2026 06:10
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a new Microsoft Sentinel solution that deploys a Logic App playbook to poll Vaikora AI agent signals and create corresponding Custom IOCs in CrowdStrike Falcon.

Changes:

  • Added solution metadata, release notes, and README documentation for the Vaikora → CrowdStrike integration.
  • Added a standalone Logic App ARM template playbook that polls Vaikora and posts indicators to CrowdStrike.
  • Added Content Hub packaging assets and a solution manifest for solution deployment.

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
Solutions/Vaikora-CrowdStrike-ThreatIntelligence/SolutionMetadata.json Defines publisher/offer metadata and support details for the solution.
Solutions/Vaikora-CrowdStrike-ThreatIntelligence/ReleaseNotes.md Captures the version history for the solution release.
Solutions/Vaikora-CrowdStrike-ThreatIntelligence/README.md Documents purpose, mapping, parameters, and deployment steps.
Solutions/Vaikora-CrowdStrike-ThreatIntelligence/Playbooks/VaikoraToCrowdStrike_Playbook.json Implements the polling + indicator push workflow as an ARM-deployable Logic App.
Solutions/Vaikora-CrowdStrike-ThreatIntelligence/Package/mainTemplate.json Content Hub packaging template (not reviewed per repo guidelines for Solutions/**/Package/**).
Solutions/Vaikora-CrowdStrike-ThreatIntelligence/Package/createUiDefinition.json Content Hub UI definition (not reviewed per repo guidelines for Solutions/**/Package/**).
Solutions/Vaikora-CrowdStrike-ThreatIntelligence/Data/Solution_VaikoraCrowdStrike.json Solution manifest describing included content and solution properties.

@@ -0,0 +1,21 @@
{
"publisherId": "data443riskmitigationinc1761580347231",
"offerId": "vaikora-crowdstrike-connector",
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

offerId does not appear to meet the Partner/Community rule that it must contain the keyword "sentinel". This will fail validation/publishing checks; rename it to include "sentinel" (and keep it <= 50 chars, using only allowed characters for Partner tier).

Suggested change
"offerId": "vaikora-crowdstrike-connector",
"offerId": "vaikora-crowdstrike-sentinel-connector",

Copilot uses AI. Check for mistakes.
Comment on lines +12 to +13
],
"verticals": []
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

categories.verticals is set to an empty array. If verticals are not applicable, the field should be omitted entirely (instead of present-but-empty) to align with solution metadata conventions and avoid schema/validation issues.

Suggested change
],
"verticals": []
]

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +3
**Version** | **Date Modified (DD-MM-YYYY)**| **ChangeHistory**
|------------|-------------------------------|-------------------------------------------------------------------------------------------|
| 3.0.0 | 02-04-2026 | Initial release. Polls Vaikora AI agent signals every 6 hours and pushes high/critical risk actions and anomaly detections as Custom IOCs to CrowdStrike Falcon. Severity mapping: critical→prevent, high→detect, medium/low→detect. Dynamic IOC type detection (ipv4/url/domain). Conditional tags: ai-agent-anomaly, ai-threat-detected. externalId set to vaikora-{action_id} for deduplication. |
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ReleaseNotes table does not match the required format (missing leading/trailing pipes, header names must be exactly **Change History**, and the separator row should be |---|---|---|). Update the markdown to a 3-column table with the exact required headers: | **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** |.

Suggested change
**Version** | **Date Modified (DD-MM-YYYY)**| **ChangeHistory**
|------------|-------------------------------|-------------------------------------------------------------------------------------------|
| 3.0.0 | 02-04-2026 | Initial release. Polls Vaikora AI agent signals every 6 hours and pushes high/critical risk actions and anomaly detections as Custom IOCs to CrowdStrike Falcon. Severity mapping: critical→prevent, high→detect, medium/low→detect. Dynamic IOC type detection (ipv4/url/domain). Conditional tags: ai-agent-anomaly, ai-threat-detected. externalId set to vaikora-{action_id} for deduplication. |
| **Version** | **Date Modified (DD-MM-YYYY)** | **Change History** |
|---|---|---|
| 3.0.0 | 02-04-2026 | Initial release. Polls Vaikora AI agent signals every 6 hours and pushes high/critical risk actions and anomaly detections as Custom IOCs to CrowdStrike Falcon. Severity mapping: critical→prevent, high→detect, medium/low→detect. Dynamic IOC type detection (ipv4/url/domain). Conditional tags: ai-agent-anomaly, ai-threat-detected. externalId set to vaikora-{action_id} for deduplication. |

Copilot uses AI. Check for mistakes.
Comment on lines +4 to +5
**Solution ID:** azure-sentinel-solution-vaikora-crowdstrike
**Version:** 1.0.0
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The README states version 1.0.0, while the solution artifacts in this PR use 3.0.0 (e.g., ReleaseNotes and solution manifest). Align the version across README/ReleaseNotes/solution data (or update the PR title/description if 3.0.0 is intentional) to avoid conflicting published metadata.

Copilot uses AI. Check for mistakes.
@@ -0,0 +1,14 @@
{
"Name": "Vaikora-CrowdStrike-AIAgentSecurity",
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Multiple solution data validation issues:

  • Name contains hyphens; solution Name must be alphanumeric characters and spaces only, and should match the solution folder naming expectations.
  • BasePath points to Vaikora-CrowdStrike-AIAgentSecurity, but the folder in this PR is Solutions/Vaikora-CrowdStrike-ThreatIntelligence; this mismatch will break file resolution during validation/packaging.
  • For Version 3.0.0, TemplateSpec must be false per solution packaging rules.
  • Property name should be Is1PConnector (case-sensitive); Is1Pconnector will be treated as a missing required field.

Copilot generated this review using guidance from repository custom instructions.
Comment on lines +10 to +13
"BasePath": "C:\\GitHub\\Azure-Sentinel\\Solutions\\Vaikora-CrowdStrike-AIAgentSecurity",
"Version": "3.0.0",
"TemplateSpec": true,
"Is1Pconnector": false
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Multiple solution data validation issues:

  • Name contains hyphens; solution Name must be alphanumeric characters and spaces only, and should match the solution folder naming expectations.
  • BasePath points to Vaikora-CrowdStrike-AIAgentSecurity, but the folder in this PR is Solutions/Vaikora-CrowdStrike-ThreatIntelligence; this mismatch will break file resolution during validation/packaging.
  • For Version 3.0.0, TemplateSpec must be false per solution packaging rules.
  • Property name should be Is1PConnector (case-sensitive); Is1Pconnector will be treated as a missing required field.

Copilot generated this review using guidance from repository custom instructions.
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "data443-vaikora-crowdstrike/1.0"
},
"body": "client_id=@{parameters('CrowdStrike_ClientId')}&client_secret=@{parameters('CrowdStrike_ClientSecret')}"
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The OAuth2 form body is constructed without URL-encoding client_id / client_secret. If either contains characters like +, &, or =, the token request can fail or be parsed incorrectly. Build the form body using URL encoding (e.g., encode each value before concatenation).

Suggested change
"body": "client_id=@{parameters('CrowdStrike_ClientId')}&client_secret=@{parameters('CrowdStrike_ClientSecret')}"
"body": "client_id=@{encodeUriComponent(parameters('CrowdStrike_ClientId'))}&client_secret=@{encodeUriComponent(parameters('CrowdStrike_ClientSecret'))}"

Copilot uses AI. Check for mistakes.
"Succeeded"
]
},
"inputs": "@if(or(not(empty(item()?['ip_address'])), not(empty(item()?['target_ip']))), 'ipv4', if(or(not(empty(item()?['url'])), not(empty(item()?['target_url']))), 'url', 'domain'))"
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Compose_IOC_Value can resolve to log_hash while Compose_IOC_Type will still fall back to domain, which can create invalid/wrongly-typed CrowdStrike indicators. Either remove log_hash from the value coalesce chain, or add explicit hash-type detection (e.g., sha256/sha1/md5) and map it to the correct CrowdStrike indicator type.

Suggested change
"inputs": "@if(or(not(empty(item()?['ip_address'])), not(empty(item()?['target_ip']))), 'ipv4', if(or(not(empty(item()?['url'])), not(empty(item()?['target_url']))), 'url', 'domain'))"
"inputs": "@if(or(not(empty(item()?['ip_address'])), not(empty(item()?['target_ip']))), 'ipv4', if(or(not(empty(item()?['url'])), not(empty(item()?['target_url']))), 'url', if(not(empty(item()?['log_hash'])), if(equals(length(item()?['log_hash']), 64), 'sha256', if(equals(length(item()?['log_hash']), 40), 'sha1', if(equals(length(item()?['log_hash']), 32), 'md5', 'domain'))), 'domain')))"

Copilot uses AI. Check for mistakes.
Comment on lines +212 to +217
"Post_IOC_to_CrowdStrike": {
"type": "Http",
"runAfter": {
"Compose_IOC_Value": [
"Succeeded"
],
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The flow posts an indicator for every filtered action, but there is no guard to ensure Compose_IOC_Value is non-empty. If an action matches the filter via is_anomaly=true but has none of the IOC fields, the CrowdStrike API call will be made with an empty/null value and likely fail. Add a conditional check (or enhance the query filter) to skip posting when the IOC value is empty.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

New Solution For new Solutions which are new to Microsoft Sentinel

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants