warren

command module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 7, 2025 License: Apache-2.0 Imports: 3 Imported by: 0

README

Warren

AI-powered security alert management that reduces noise and accelerates response time

What is Warren?

Warren is an open-source security alert management system that automates the tedious parts of alert triage. It ingests alerts from your existing tools, enriches them with AI and threat intelligence, and helps you focus on actual incidents instead of noise.

Key technical features:

  • Webhook-based ingestion: Simple HTTP endpoints for any alert source (no agents required)
  • Policy-driven processing: Write Rego policies to filter and transform alerts before they hit your queue
  • Vector similarity clustering: Automatically groups related alerts using embeddings
  • LLM-powered analysis: Uses LLM (Large Language Model) to generate human-readable summaries and extract IOCs
  • API-first design: GraphQL API for custom integrations, Slack bot for notifications
  • Flexible deployment: Runs anywhere from local Docker to Kubernetes, with optional cloud services

Key Features

Alert Processing Pipeline
  • Parallel enrichment queries multiple threat intel APIs (OTX, VirusTotal, AbuseIPDB, etc.)
  • Structured extraction - LLM extracts IOCs, TTPs, and risk indicators into queryable fields
  • React-based Web UI - real-time dashboard, ticket management, and WebSocket-based AI chat
  • DBSCAN clustering with cosine similarity on Gemini embeddings (256-dim vectors)

Warren Dashboard showing clustered alerts
Dashboard view: Similar alerts are automatically grouped using DBSCAN clustering on embedding vectors

The Web UI provides:

  • Alert timeline view with clustering visualization
  • Ticket workflow - create, assign, and track incident tickets
  • Interactive AI chat - ask questions about specific alerts in natural language
  • Export capabilities - download alert data as JSONL for further analysis
Integration Architecture
  • Webhook receivers at /hooks/alert/{raw,sns,pubsub}/{schema} for any alert format
  • Slack bot with interactive components (buttons, modals) for ticket management
  • GraphQL API with DataLoader for efficient queries and real-time subscriptions

Slack notification with interactive buttons
Slack integration: Alerts arrive with threat intel enrichment and one-click ticket creation

Policy Engine
  • Rego-based alert policies - transform, filter, or multiply alerts before processing
  • Authorization policies - fine-grained access control with environment context
  • Test framework - validate policies with sample inputs before deployment

Example policy to filter and enrich alerts:

package alert.cloudtrail

alert contains {
    "title": sprintf("Suspicious AWS Activity: %s", [event.eventName]),
    "description": sprintf("%s in %s by %s", [
        event.eventName,
        event.awsRegion,
        event.userIdentity.userName
    ]),
    "attrs": [
        {
            "key": "event_name",
            "value": event.eventName,
            "link": ""
        },
        {
            "key": "source_ip",
            "value": event.sourceIPAddress,
            "link": sprintf("https://www.abuseipdb.com/check/%s", [event.sourceIPAddress])
        }
    ]
} if {
    event := input.Records[_]
    event.eventName in ["DeleteBucket", "StopLogging", "DeleteTrail"]
    not ignore
}

# Ignore events from trusted IPs
ignore if {
    event := input.Records[_]
    event.sourceIPAddress in ["10.0.0.1", "192.168.1.100"]
}

Quick Start

# Prerequisites
export PROJECT_ID=your-gcp-project
gcloud auth application-default login
gcloud services enable aiplatform.googleapis.com --project=$PROJECT_ID

# Run Warren (in-memory storage, no auth)
docker run -d -p 8080:8080 \
  -v ~/.config/gcloud:/home/nonroot/.config/gcloud:ro \
  -e WARREN_GEMINI_PROJECT_ID=$PROJECT_ID \
  -e WARREN_NO_AUTHENTICATION=true \
  -e WARREN_NO_AUTHORIZATION=true \
  -e WARREN_ADDR=0.0.0.0:8080 \
  ghcr.io/secmon-lab/warren:latest serve

# Send test alert
curl -X POST http://localhost:8080/hooks/alert/raw/test \
  -H "Content-Type: application/json" \
  -d '{"title": "SSH brute force", "source_ip": "45.227.255.100"}'

Visit http://localhost:8080 to access the dashboard.

Full Getting Started Guide →

Integrations

  • Alert Sources: AWS GuardDuty, Suricata, SIEM webhooks, Custom apps
  • Threat Intel: VirusTotal, AlienVault OTX, URLScan, Shodan, AbuseIPDB
  • Collaboration: Slack (native bot), GraphQL API, REST webhooks
  • Infrastructure: Google Cloud (Vertex AI, Firestore), Docker, Kubernetes

Documentation

Contributing

We welcome contributions! See Contributing Guide

License

Apache 2.0 License

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL