← BLOG
[ WATCHTOWER ] · · 4 MIN READ

From thousands of Security Hub findings to a fix list

Most open Security Hub findings are the same few problems on many resources. Here is how Watchtower groups them by what fixes them, ranks them by risk, and keeps the work moving with tasks, SLAs and exceptions that expire.

A fix list ranked by risk, with S3.8 highlighted and a task showing 8 of 12 fixed

A security team with a few dozen AWS accounts can easily have several thousand open findings in Security Hub. Very few of those are separate problems. Most are the same control failing on many resources, or the same vulnerable package installed in many places. This post shows how Cloud Certainty Watchtower turns that list into a fix list, and how it keeps the work moving with tasks, SLAs and exceptions that expire.

Group findings by what fixes them

A finding in Security Hub is one check on one resource. The unit of work for an engineer is different: "turn on Block Public Access for our buckets" is one change, whether it touches five buckets or fifty.

Watchtower groups findings into issues by what fixes them:

  • Security Hub controls group by control id, so every resource failing S3.8 is one issue.
  • Vulnerabilities from Amazon Inspector group by CVE, so CVE-2024-6387 in openssh is one issue however many instances and images have it.
  • Threat and data findings from Amazon GuardDuty, Amazon Macie and IAM Access Analyzer group by finding type, such as SSH brute force against EC2.
  • Partner findings group by the rule that produced them.

Each issue shows how many resources, accounts and Regions it covers, how many findings are open, suppressed or fixed in the last 30 days, the oldest one, how many are past their SLA and how many are exposed to the internet.

Rank issues by risk

Sorting by severity alone puts a critical finding on one sandbox instance above a high finding on fifty production buckets. Watchtower ranks issues by a risk score that adds up its open findings:

  • Severity gives each finding a weight: 40 for critical, 20 for high, 6 for medium and 2 for low.
  • Age multiplies it by up to three, growing over the first 180 days, because old findings are the ones nobody owns.
  • Exposure doubles it when the resource is reachable from the internet, for example a security group open to 0.0.0.0/0.

The score is deliberately simple, so anyone can see why an issue is near the top. Every filter still applies, so account:prod-* gives you the fix list of production and -task:with the issues nobody has picked up yet.

Each common control comes with a remediation guide written for the person who will make the change: why it matters, the console steps, the AWS CLI command, and the Terraform and CloudFormation to copy. For S3.8, the Terraform reads:

hcl
resource "aws_s3_bucket_public_access_block" "this" {
  bucket = aws_s3_bucket.this.id

  block_public_acls       = true
  block_public_policy     = true
  ignore_public_acls      = true
  restrict_public_buckets = true
}

Watchtower ships guides for about 60 of the most common controls of the AWS Foundational Security Best Practices and CIS standards. Each guide also lists the Trivy and Checkov rules that check the same thing, so your scanners and Security Hub speak the same language.

Track the work as tasks

Create a task from a selection of findings, or from a whole issue, and Watchtower fills it in:

  • Priority from the highest severity in it.
  • Due date from your SLA for that severity. The defaults are 7 days for critical, 30 for high, 90 for medium and 180 for low, and admins can change them.
  • Progress from the findings themselves. As resources pass their checks, the task shows "8 of 12 fixed" without anyone touching it, and it can close itself when the last one passes.

Tasks live on a board with owners, labels, comments and links to pull requests and GitHub issues. You can also mark the findings NOTIFIED in Security Hub, with a note that points to the task, so anyone looking in the AWS console knows the work is in hand.

Exceptions that expire

Some findings are accepted risks: a public website bucket, a bastion reachable from your VPN. In Security Hub, suppressing them is permanent, so nobody looks again.

In Watchtower, an exception has a reason, a scope (controls or issues, account patterns, Regions and resource patterns) and an expiry date. While it is active, matching findings show as suppressed, in Security Hub too when the connection allows it, with a note naming the exception. When it expires, or someone revokes it, the findings come back as new. Exceptions are listed for everyone and audited, and creating one needs the triage permission over its whole scope.

Try it

Watchtower is in early access ahead of its AWS Marketplace launch. Read more at cloudcertainty.com/watchtower (opens in a new tab), or email [email protected] to try it in your organisation.

More in Watchtower → All posts →

Tell us what you have. We'll make it better and cheaper.

Send a short description of your current setup. We will tell you what we would improve, what it would cost, and where the savings are. A considered reply from an engineer, not a sales sequence.

TELL US ABOUT YOUR SETUP →