AWS KMS mass decrypt

Severity mediumCloud & SaaSThresholdexperimentalcloud.aws.kms_mass_decrypt · v1.0.0

A single identity called KMS Decrypt or GenerateDataKey repeatedly in a short window.

What it detects

A single identity called KMS Decrypt or GenerateDataKey repeatedly in a short window.

Bulk key use is the cloud shape of both mass data access and ransomware: to read a bucket of encrypted objects, or to re-encrypt them under a key the victim does not control, every object must go through KMS, and CloudTrail records each call. The volume is the signal — one decrypt is meaningless, thousands from an identity that normally issues none is not.

MITRE ATT&CK mapping

  • T1486Data Encrypted for Impact· Impact
  • T1530Data from Cloud Storage· Collection

False positives and triage

UNMEASURED FALSE-POSITIVE RATE — this is the one cloud rule in the pack with no corpus evidence behind its threshold. The benchmark corpus's KMS capture turned out to contain only background service traffic (its densest 10-minute window is 20 calls, from a monitoring pipeline), so it neither confirms nor refutes this rule; the count of 50 is reasoned, not fitted, and the rule is marked experimental until real bulk decryption is observed. Its positive fixture is hand-written for that reason.

Applications that use SSE-KMS decrypt constantly and legitimately — a service reading an encrypted bucket will cross this threshold on every ordinary batch job, so a per-principal baseline is required before this number means anything. Severity is deliberately moderate for that reason. The signal is bulk decryption by an identity with no history of it, from a new IP or region, or paired with ReEncrypt (re-encryption under a different key is the ransomware shape, not the read shape).

The rule

Declarative YAML read by the detection engine — data, never executed. Confidence 50%. Source: rules/cloud/aws_kms_mass_decrypt.yaml, licensed under the Apache License 2.0.

id: cloud.aws.kms_mass_decrypt
version: 1.0.0
status: experimental
severity: medium
confidence: 0.5
platforms: [application]
mitre_techniques: [T1486, T1530]
description: |
  A single identity called KMS `Decrypt` or `GenerateDataKey` repeatedly in a short
  window.

  Bulk key use is the cloud shape of both mass data access and ransomware: to read a
  bucket of encrypted objects, or to re-encrypt them under a key the victim does not
  control, every object must go through KMS, and CloudTrail records each call. The
  volume is the signal — one decrypt is meaningless, thousands from an identity that
  normally issues none is not.
match:
  provider: AWS
  event_action_any:
    - Decrypt
    - GenerateDataKey
    - GenerateDataKeyWithoutPlaintext
    - ReEncrypt
threshold:
  count: 50
  window_seconds: 600
  group_by: [user_name]
correlation_keys: [user_name]
false_positive_guidance: |
  UNMEASURED FALSE-POSITIVE RATE — this is the one cloud rule in the pack with no
  corpus evidence behind its threshold. The benchmark corpus's KMS capture turned out
  to contain only background service traffic (its densest 10-minute window is 20 calls,
  from a monitoring pipeline), so it neither confirms nor refutes this rule; the count
  of 50 is reasoned, not fitted, and the rule is marked experimental until real bulk
  decryption is observed. Its positive fixture is hand-written for that reason.

  Applications that use SSE-KMS decrypt constantly and legitimately — a service
  reading an encrypted bucket will cross this threshold on every ordinary batch job,
  so a per-principal baseline is required before this number means anything.
  Severity is deliberately moderate for that reason. The signal is bulk decryption
  by an identity with no history of it, from a new IP or region, or paired with
  `ReEncrypt` (re-encryption under a different key is the ransomware shape, not the
  read shape).

Related detections

Run this rule on your own logs — offline

KIROSEC runs this rule and the rest of the library over Windows, Linux, macOS and cloud audit logs on the analyst's own machine. Every alert links to the events that raised it, and nothing leaves the device.

Browse all detections