Skip to content

Telltale

Detection Catalog

This catalog summarizes the bundled rule YAML and detection documentation so investigators can understand what Telltale is matching before they open raw session stores. It is a field reference, not a promise that every risky behavior is detected.

Rule quality contract

Bundled rules use one YAML-driven engine for security detections, policy violations, hunting, compliance observations, operational health, and baseline deviations. The detection content standard requires stable IDs, categories, severity, score, valid targets, matching logic, tags, explanations, and false-positive notes.

  • Rule IDs are stable dot-separated identifiers and should not be reused after retirement.
  • Categories describe observed behavior; detection_class, signal_type, and analytic_intent describe how analysts should use the event.
  • ATLAS tags are offline documentation context only; scans do not fetch MITRE ATLAS.
  • Positive fixtures must be synthetic, minimal, and assert redacted evidence rather than raw secrets.
  • Negative fixtures are expected when normal developer activity could trigger a rule.

Bundled atomic rules

The catalog below lists the current bundled rules from config/rules/tool-call-regex.yaml. Target fields tell you where the regex or selection evaluates normalized agent activity.

Bundled Telltale rule catalog

secret.env.read

Category
secret_access
Severity / score
medium / 35
Targets
command, arguments, file_path, assistant_context, tool_result

Access to `.env`-style files; legitimate debugging can match.

secret.private_key.read

Category
secret_access
Severity / score
high / 55
Targets
command, arguments, file_path, tool_result

Private key paths or key material; certificate inventory can match.

credential.api_key.pattern

Category
credential_pattern
Severity / score
medium / 30
Targets
command, arguments, tool_result, assistant_context

Token-shaped strings for hunting; synthetic examples and docs can match.

execution.shell

Category
execution
Severity / score
low / 15
Targets
tool_name, command, arguments

Shell or interpreter execution; common in normal development and strongest when chained.

execution.encoded_payload

Category
execution
Severity / score
high / 50
Targets
command, arguments

Encoded payload decoding; incident-response or build tasks can be benign.

network.download

Category
download
Severity / score
low / 20
Targets
command, arguments, url

Download by curl, wget, PowerShell, or fetch; expected setup often matches.

install.package_manager

Category
install
Severity / score
low / 20
Targets
command, arguments

Package-manager execution; review package source and surrounding actions.

exfil.outbound_upload

Category
exfiltration
Severity / score
high / 60
Targets
command, arguments, url

Upload or object-storage copy; authorized artifact uploads can match.

persistence.shell_profile

Category
persistence
Severity / score
high / 45
Targets
command, arguments, file_path

Shell profile, cron, service, or launch-agent changes; setup flows can be legitimate.

approval.bypass.context

Category
approval_bypass
Severity / score
high / 45
Targets
assistant_context, command, arguments, tool_result

Language about hiding, no-confirm, or bypassing approval; quoted policy text can match.

tool.injection.shape

Category
tool_injection
Severity / score
high / 55
Targets
assistant_context, tool_name, arguments

Tool-call-shaped content in model output; parser tests and copied logs can match.

mcp.tool_metadata.prompt_injection

Category
mcp_prompt_injection
Severity / score
high / 60
Targets
assistant_context, arguments, tool_result

MCP metadata or output with instruction-override language; security fixtures can match.

network.controlled_test_domain.darkroast

Category
exfiltration
Severity / score
high / 45
Targets
command, arguments, url, assistant_context, tool_result

Controlled Dark Roast Cyber test-domain references; fixtures and validation commands can match.

exfil.dns_encoding

Category
exfiltration
Severity / score
high / 55
Targets
command, arguments

Encoded data in DNS tooling; demos and troubleshooting require context.

exfil.encoded_http

Category
exfiltration
Severity / score
high / 50
Targets
command, arguments

Encoded data sent to HTTP endpoints; expected API payloads can match.

credential.cloud_harvest

Category
credential_harvesting
Severity / score
high / 50
Targets
command, arguments, file_path

Cloud, Kubernetes, Docker, or service-account credential paths; authorized CLI troubleshooting can match.

supply_chain.publish

Category
supply_chain
Severity / score
high / 45
Targets
command, arguments

Package publishing commands; correlate with release intent and credential access.

mcp.server_enumeration

Category
mcp_enumeration
Severity / score
medium / 40
Targets
command, arguments, assistant_context, tool_result

MCP server/tool probing; inventory and integration tests can match.

Chain modifiers

Chain modifiers do not duplicate base rule logic. They add risk when multiple signals appear in the same session window or when exact rule IDs form a more dangerous combination.

Bundled Telltale chain modifiers

chain.secret_then_network

Trigger
secret_access + download
Score add
+35

Secret access near network activity materially increases exfiltration risk.

chain.download_then_execute

Trigger
download + execution
Score add
+35

Download followed by execution is a common malware pattern.

chain.shell_encoded_payload

Trigger
execution.shell + execution.encoded_payload
Score add
+10

Shell execution of decoded payload content should cross the triage threshold.

chain.install_then_persistence

Trigger
install + persistence
Score add
+30

Package installation plus profile or service persistence requires triage.

chain.mcp_injection_then_egress

Trigger
mcp_prompt_injection + exfiltration
Score add
+35

MCP prompt injection near outbound egress is the first high-signal alert use case.

chain.credential_then_publish

Trigger
credential_harvesting + supply_chain
Score add
+40

Credential harvesting followed by package publishing is a supply-chain attack pattern.

chain.harvest_then_exfil

Trigger
credential_harvesting + exfiltration
Score add
+35

Credential harvesting followed by exfiltration is a data-theft pattern.

chain.mcp_enumeration_then_injection

Trigger
mcp_enumeration + mcp_prompt_injection
Score add
+30

Enumeration followed by injection suggests targeted MCP attack behavior.

Risk scoring thresholds

Each tool call starts at zero. Rules and modifiers add points. Severity is derived from the final score unless triage overrides it.

Artifact Paths

0-19

informational

Log notable activity only.

20-49

low

Log detection with matched rule details.

50-69

medium

Log detection and include expanded context fields.

70-89

high

Run guard and triage model, then emit triage result.

90+

critical

Run triage and emit alert-ready event.

First high-signal use cases

The Telltale use-case documentation defines concrete fixture-driven behaviors that should produce useful alerts without using real credentials or attacker infrastructure.

  • UC-001: fake MCP prompt injection to a controlled Dark Roast Cyber test domain; expected rules include mcp.tool_metadata.prompt_injection and network.controlled_test_domain.darkroast, with chain.mcp_injection_then_egress when egress is present.
  • UC-002: credential harvesting before package publish; expected rules include credential.cloud_harvest, supply_chain.publish, and chain.credential_then_publish.
  • UC-003: DNS exfiltration with encoded payload; expected rules include execution.encoded_payload, exfil.dns_encoding, and chain.shell_encoded_payload.

Validate and preview rules

Use validation and fixture tests before writing scan output. This keeps detection changes deterministic and catches invalid regexes or unsupported targets.

Validate bundled rules
SH
cargo run --bin telltale -- rules validate --rules config/rules/tool-call-regex.yaml
Dry-run bundled detection over fixtures
SH
cargo run --bin telltale -- scan --once --dry-run --root tests/fixtures/session_stores

Run from the Telltale repository. Fixture scans should not write real monitoring output unless --allow-fixtures and an explicit dev sink are intentionally used.

How to use this page during an investigation

  • Start with event fields: rule_ids, categories, risk_score, severity, client, session_id, tool_name, and response.*.
  • Read the rule explanation and false-positive caveat before opening local raw session stores.
  • Treat chain modifiers as stronger evidence than single low-signal activity such as ordinary shell use or package installation.
  • Use source capability notes before interpreting missing fields; some clients do not preserve user intent, workspace, call IDs, or error state.