Detection rules › Elastic

Potential Cluster Enumeration via jq Detected via Defend for Containers

Status
production
Severity
low
Time window
6m
Author
Elastic
Source
github.com/elastic/detection-rules

This rule detects the enumeration of the cluster by the "jq" command inside a container. The "jq" command is used to parse JSON data, and may be used by an adversary to gain information about the cluster and the services running inside it. This behavior is uncommon for interactive shells within a container, and is commonly leveraged by attackers to help parse cluster information in a more readable format, or set the output as environment variables.

MITRE ATT&CK coverage

Rule body elastic

[metadata]
creation_date = "2026/02/02"
integration = ["cloud_defend"]
maturity = "production"
min_stack_comments = "Defend for Containers integration was re-introduced in 9.3.0"
min_stack_version = "9.3.0"
updated_date = "2026/02/02"

[rule]
author = ["Elastic"]
description = """
This rule detects the enumeration of the cluster by the "jq" command inside a container. The "jq" command is used to
parse JSON data, and may be used by an adversary to gain information about the cluster and the services running inside it.
This behavior is uncommon for interactive shells within a container, and is commonly leveraged by attackers to help parse
cluster information in a more readable format, or set the output as environment variables.
"""
false_positives = [
    """
    There is a potential for false positives if the "jq" command is used for legitimate purposes,
    such as debugging or troubleshooting. It is important to investigate any alerts generated by this rule to determine
    if they are indicative of malicious activity or part of legitimate container activity.
    """,
]
from = "now-6m"
index = ["logs-cloud_defend.process*"]
interval = "5m"
language = "eql"
license = "Elastic License v2"
name = "Potential Cluster Enumeration via jq Detected via Defend for Containers"
risk_score = 21
rule_id = "33ff31e9-3872-4944-8394-81dae76c12d9"
severity = "low"
tags = [
    "Data Source: Elastic Defend for Containers",
    "Domain: Container",
    "OS: Linux",
    "Use Case: Threat Detection",
    "Tactic: Discovery",
    "Resources: Investigation Guide",
]
timestamp_override = "event.ingested"
type = "eql"
query = '''
process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and process.name == "jq" and
process.interactive == true and container.id like "?*" 
'''

[[rule.threat]]
framework = "MITRE ATT&CK"

[[rule.threat.technique]]
id = "T1613"
name = "Container and Resource Discovery"
reference = "https://attack.mitre.org/techniques/T1613/"

[rule.threat.tactic]
id = "TA0007"
name = "Discovery"
reference = "https://attack.mitre.org/tactics/TA0007/"

Stages and Predicates

Stage 1: process

process where host.os.type == "linux" and event.type == "start" and event.action == "exec" and process.name == "jq" and
process.interactive == true and container.id like "?*"

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
container.idwildcard
  • ?*
event.actioneq
  • exec
event.typeeq
  • start
process.interactiveeq
  • true
process.nameeq
  • jq