Skip to main content
emnode / learn
Compliance Medium severity

AWS Security Hub · ELB

ELB.17: TLS policy allows weak ciphers or TLS 1.0 to 1.1

Written and reviewed by Emnode · Last reviewed

What does AWS Security Hub ELB.17 check?

ELB.17 fails when an Application or Network Load Balancer listener uses a TLS security policy that is not on AWS's recommended list — typically a legacy policy such as ELBSecurityPolicy-2016-08 that still negotiates TLS 1.0 or 1.1 and weak ciphers.

Why does ELB.17 matter?

TLS 1.0 and 1.1 were deprecated by the IETF and dropped by every major browser years ago. A listener still offering them protects no real users — only vulnerability scanners, ancient devices and attackers probing for downgrade or cipher attacks. Moving to a recommended TLS 1.3 policy closes the downgrade surface and, as a bonus, cuts handshake latency.

How do I fix ELB.17?

  1. Inventory listener policies with describe-listeners and flag any not on the recommended list.
  2. Pick the right recommended variant — standard TLS 1.3, restricted, FIPS or PCI — for each listener's compliance needs.
  3. Apply it online with modify-listener; the change takes effect on new handshakes with no downtime.
  4. Send HSTS from the listener and add a Config rule to prevent regression.

Remediation script · bash

# 1. The canonical statement Security Hub S3.5 looks for (merge into the existing policy).
cat <<'EOF'
{
  "Sid": "DenyInsecureTransport",
  "Effect": "Deny",
  "Principal": "*",
  "Action": "s3:*",
  "Resource": [
    "arn:aws:s3:::acme-prod-logs",
    "arn:aws:s3:::acme-prod-logs/*"
  ],
  "Condition": { "Bool": { "aws:SecureTransport": "false" } }
}
EOF
aws s3api put-bucket-policy --bucket acme-prod-logs --policy file://acme-prod-logs-policy.json

# 2. Swap a load balancer listener onto a recommended TLS policy (closes ELB.17).
aws elbv2 modify-listener \
  --listener-arn arn:aws:elasticloadbalancing:eu-west-1:123456789012:listener/app/web-prod/abc/def \
  --ssl-policy ELBSecurityPolicy-TLS13-1-2-2021-06

Full walkthrough (console steps, edge cases and verification) in the lesson Require TLS for storage and remaining services.

Part of the learning path Encrypt everything
  • ELB.1 ALB serves HTTP without redirecting to HTTPS
  • ELB.2 CLB SSL/HTTPS listeners should use ACM certs
  • ELB.3 CLB listeners should use HTTPS/TLS termination
  • ELB.4 ALB accepts malformed HTTP headers
  • ELB.5 Load balancers are not writing access logs
  • ELB.6 Load balancers can be deleted by accident
  • ELB.7 CLBs should have connection draining
  • ELB.8 CLB SSL listeners should use strong policy
  • ELB.9 CLBs should have cross-zone balancing
  • ELB.10 CLBs should span multiple AZs
  • ELB.12 ALB desync mitigation mode
  • ELB.13 A single-AZ load balancer is a data-plane single point of failure