Cloud Vulnerability Scanner for AWS , Azure, and Google Cloud

ScanTitan inventories the accounts you connect, then looks for the misconfigurations, over-permissive identities, exposed storage, workload vulnerabilities and Kubernetes risk that chain into a breach. Agentless and read-only, with the API response or policy behind each finding.

ScanTitan – Cloud posture scan
Scanning...
Illustrative sample · 3 AWS accounts · 1 Azure subscription · 2 GCP projects
CRITICAL
S3 bucket public via bucket policy
Principal "*" on s3:GetObject · Block Public Access disabled
CRITICAL
Attack path: public pod → cluster secrets
ingress-nginx 1.13.4, retired March 2026 · controller reads Secrets cluster-wide
HIGH
IAM role with wildcard admin, no MFA condition
Action "*" on Resource "*" · assumable from an external account

Orca: 32% of cloud assets sit unmonitored, averaging 115 known vulnerabilities

ingress-nginx retired in March 2026 with no further security patches

Fortinet 2026: 88% of organisations run hybrid or multi-cloud

What a cloud vulnerability scanner checks in AWS, Azure and Google Cloud

cloud vulnerability scanner inventories the resources in the accounts you connect and asks two questions about each: is this software vulnerable, and is this configuration dangerous. The second is where a cloud misconfiguration scanner earns its place.

The split of duties comes from the shared responsibility model AWS, Microsoft and Google all publish. The provider is responsible for security of the cloud: data centres, hardware, the hypervisor and managed service internals. The customer is responsible for security in the cloud: configuration, identity and access, network rules, data protection and their own code. How much falls to you depends on the service model, with more on your side for IaaS than for managed SaaS.

A public storage bucket has no CVE. An IAM role with a wildcard policy has no patch. A retired ingress controller has a CVE and no future fix. That is why configuration and vulnerability data belong in one assessment, and why the connections matter: a single medium finding is noise, while a public workload with a role that reads production data is an incident waiting for a date.

Shared responsibility, as published by each provider: AWS · Microsoft Azure · Google Cloud

of cloud assets sit unmonitored, averaging 115 known vulnerabilities each (Orca Security)
1 %
of organisations run hybrid or multi-cloud, where policy drift between providers is the default (Fortinet, 2026)
1 %
ingress-nginx retirement: no further releases or security patches, for a controller used across a large share of clusters
1 Mar 2026
S3 Block Public Access became a default for new buckets, so the risk now sits in older buckets and explicit policies (AWS)
1 Apr 2023

External exposure scan vs connected cloud vulnerability scan: two different products

These get marketed as one thing and they are not. One needs nothing from you and sees what an attacker sees; the other needs a read-only role and sees the control plane. Most teams want both, but a report that blends them without saying which produced a finding is one you cannot act on.

 

External exposure scan

Access needed: none. You enter a domain. What it sees: public IPs, load balancers and edge services attached to your domains, exposed admin and database ports, anonymously readable storage endpoints, dangling DNS records, TLS posture, plus dynamic testing of the applications and APIs it finds. What it cannot see: anything not reachable from the internet: IAM, encryption, logging gaps, private resources, registries, cluster internals. It cannot prove an asset is yours either, so attribution is a best-effort match on domains and certificates.

Connected cloud assessment

Access needed: a read-only role you create: a cross-account IAM role in AWS, a reader application in Entra ID for Azure, or a viewer service account in GCP. What it sees: resource inventory for the accounts you connect, effective IAM permissions and trust chains, encryption and key policies, logging coverage, network rules, registry image vulnerabilities, Kubernetes configuration, and the paths that link them. What it cannot see: anything outside the connected accounts, activity inside a running process, application logic flaws, or regions you did not put in scope.

How connected cloud vulnerability scanning works, step by step

Connect a read-only role, get an inventory of the scoped accounts, then keep it under scheduled assessment.

 
Connect read-only, agentless

A cross-account IAM role, an Entra ID reader application or a GCP viewer service account, scoped to the accounts you choose. No software runs in your VPC and no write permissions are requested.

Build the asset inventory

Compute, storage, databases, serverless, networking, registries, clusters and their identities, enumerated per account and region, including regions that are enabled but unused.

Check configuration against benchmarks

Resources are evaluated against CIS Benchmarks, provider guidance and our own rules: public exposure, encryption, logging, reachability, key rotation and retention.

Scan workloads, images and clusters

Package vulnerabilities from volume snapshots, container images from your registries, and Kubernetes control-plane, RBAC and workload settings. How each works is on the next tab.

Map identity and attack paths

Effective permissions are resolved across roles, policies, trust relationships and service accounts, then combined with network reachability to show which chains reach data.

Prioritise, fix, verify

Findings ranked by exploitability and blast radius, each with the console step, CLI command or Terraform change that closes it, plus a re-check.

Inventory & posture · sample output
Illustrative example not a customer environment
S3 · prod-invoices
Public via bucket policy · Block Public Access disabled
aws
PUBLIC
IAM · ci-deployer
Action "*" on Resource "*" · assumable externally
aws
ADMIN
Storage account · reports2019
Anonymous blob read enabled · no diagnostic logs
azure
EXPOSED
GKE · analytics-prod
Retired ingress controller · workload identity not enforced
gcp
K8S
RDS, Key Vault, Cloud SQL
Encrypted, private, logging enabled
18 ok
CLEAN
Illustrative sample. Evaluated against CIS Benchmarks and exploitability data.

A fintech shipping a REST API imported its OpenAPI spec and, on the first authenticated scan, found a BOLA flaw on the /accounts/{id} endpoint that returned any user’s balance by changing the ID. Fixed and re-verified in a day, before any bug bounty report. 

Agentless is a method, not a marketing word

Workloads: Instead of an agent, ScanTitan takes a read-only volume snapshot through the provider’s API and analyses the file system out of band to build a package inventory, then matches it against vulnerability data. Nothing is installed on the instance. Encrypted volumes require access to the relevant KMS or Key Vault key, which you grant explicitly.

Containers: Images are read from ECR, ACR, Artifact Registry or a self-hosted registry with pull permission, then their layers analysed for OS and library vulnerabilities, secrets, root users and base image age.

Kubernetes: Clusters are read through the provider API for control-plane configuration, and through a read-only service account for RBAC bindings, workload manifests and admission configuration.

The honest limits, snapshot analysis is point-in-time, so it will not catch a process that started and stopped between scans. It does not see memory, live sessions or runtime behaviour, which is the job of an agent or EDR, and it can only assess what the granted role can read.

How each surface is read
Configuration & identity
Provider APIs, read-only role
API
Instance packages
Volume snapshot analysed out of band
SNAPSHOT
Container images
Registry pull, layer analysis
REGISTRY
Kubernetes
Cluster API, read-only service account
K8S API
Runtime behaviour
Needs an agent or EDR, out of scope
NOT COVERED
Each finding records the method that produced it.
Fix the path, not the alert count

A raw posture feed produces thousands of findings on day one, which is how teams learn to ignore it. Ranking is by exploitability and blast radius, each finding carries the fix and the guardrail that stops it recurring, and a re-check confirms it.

Drift is the real enemy, a cloud account is never finished. Scheduled assessment catches the bucket that went public at 4pm on a Friday, not the quarterly review that finds it in March.

Remediation workflow · sample
# Finding: S3 bucket public via policy · prod-invoices aws s3api put-public-access-block --bucket prod-invoices \ --public-access-block-configuration \ "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true" # Guardrail so it cannot recur SCP: Deny s3:PutBucketPolicy with Principal "*" ✓ re-check passed · bucket no longer anonymously readable
Illustrative sample. Findings can open a Jira ticket or a pull request against the module.

Why cloud vulnerability scanning starts with misconfiguration, not zero-days?

The damaging cloud incidents are rarely exotic: storage left open, an identity with more power than anyone realised, a management interface exposed to the internet, a secret in a repository. Each is boring on its own, which is why they survive in production.

 
Attack path What it looks like in practice
Public object storage Data exposure S3 Block Public Access is on by default for new buckets since April 2023, but older buckets, a policy with Principal "*", or an object-level ACL can still expose data. Azure blob containers and GCS buckets granted to allUsers create similar exposure.
Over-permissive identity Privilege escalation Wildcard actions, roles assumable by external accounts or unprotected CI runners, access keys that never rotate, and service accounts with project-wide roles.
Exposed management surface Remote takeover Kubernetes API servers, kubelets, etcd, registries, databases, and RDP or SSH exposed to 0.0.0.0/0, especially in regions or environments with limited monitoring.
Secrets in code and config Credential theft Keys stored in Terraform state, environment variables, container images, instance user data, or public repositories can expose cloud accounts and workloads.
Unpatched, unmonitored workloads Known CVEs Instances, container images, and functions running vulnerable packages can remain exposed when assets fall outside regular inventory, monitoring, or patch-management coverage.
Missing logging and encryption Invisible incident CloudTrail, Azure Activity Logs, or Google Cloud Audit Logs may be disabled or incomplete, while weak encryption controls or snapshots shared more broadly than intended can increase the impact of an incident.

Sources: Orca Security (asset monitoring), Fortinet 2026 (multi-cloud adoption), AWS (S3 defaults). Findings map to CIS Benchmark controls and CVE identifiers rather than a private severity scale.

One cloud vulnerability scanner for AWS, Azure and Google Cloud

Each provider names the same mistake differently, and 88% of organisations run more than one. Findings are normalised so a public bucket reads the same everywhere, while the fix speaks each platform’s language.

 

AWS vulnerability scanner

S3 exposure and Block Public Access state, IAM roles, policies and key age, EC2 and EBS posture including instance metadata settings, RDS and snapshot sharing, Lambda permissions, ECR image vulnerabilities, EKS and RBAC configuration, security groups and CloudTrail coverage.

Azure security assessment

Storage and blob anonymous access, Entra ID roles and service principals, managed identity scope, Key Vault policies, NSG rules open to the internet, SQL and Cosmos DB exposure, ACR image vulnerabilities, AKS hardening, diagnostic settings.

GCP security scan

Cloud Storage granted to allUsers or allAuthenticatedUsers, IAM bindings and primitive roles, service account keys and impersonation chains, firewall rules, Compute Engine and Cloud SQL exposure, Artifact Registry vulnerabilities, GKE and workload identity configuration.

Cloud vulnerability scanner coverage: posture, identity and workloads

Posture, identity and workloads in one assessment. Kubernetes, IaC and application testing have their own sections below.

 

Cloud CSPM and misconfiguration

Scheduled posture assessment against CIS Benchmarks and provider guidance: exposure, encryption, logging, network rules and drift.

S3 bucket exposure and storage risk

S3 buckets, Azure blob containers and GCS buckets tested for anonymous read, listing and write, with Block Public Access state, ACLs, encryption and logging.

IAM, CIEM and effective permissions

Resolves what an identity can do across policies, roles, trust relationships and service accounts: wildcards, external trust, stale keys, unused privilege.

Attack path analysis

Combines exposure, identity and data sensitivity into chains: internet-facing workload, to a role, to a bucket with customer data. Toxic combinations, not isolated alerts.

Container security scan

Images pulled from ECR, ACR, Artifact Registry and self-hosted registries, with layers analysed for OS and library vulnerabilities, base image age, root users and secrets.

Compliance mapping and evidence

Findings mapped to CIS Benchmarks and rolled up against PCI DSS, SOC 2, ISO 27001 and NIST, with exportable evidence.

Kubernetes vulnerability scanning: the front door nobody is patching

In March 2025 the IngressNightmare chain in ingress-nginx, headlined by CVE-2025-1974 at CVSS 9.8, allowed unauthenticated remote code execution and full cluster takeover in a component whose default install reads Secrets cluster-wide.

In November 2025 the project’s retirement was announced, and that deadline passed in March 2026: no further releases, no bug fixes, no security patches. Further high-severity issues, including CVE-2026-24512 and CVE-2026-3288, landed in the months before maintenance ended. Nothing breaks when software retires, which is the problem: the cluster keeps working, nothing forces the migration, and exposure compounds quietly.

Sources: Kubernetes project announcements · CVE-2025-1974 (NVD)

Cluster findings · sample
Illustrative example not a customer cluster
ingress-nginx 1.13.4
Retired March 2026 · no future patches
EOL
ServiceAccount: ci-runner
Bound to cluster-admin · token in an internet-facing pod
RBAC
Deployment: media-worker
privileged: true · hostPath mount of the container socket
ESCAPE
Image: api-gateway:2.1
14 high CVEs · base image 19 months old · runs as root
IMAGE
API server, etcd, kubelet
Private endpoints, authentication enforced
CLEAN
Illustrative sample. Migration guidance included.

IaC vulnerability scanning: catch cloud misconfigurations in the pull request

Most misconfigurations were written somewhere first. Scanning Terraform, CloudFormation, Bicep and Helm before apply is how you stop fixing the same finding every quarter, and how you find the module producing it everywhere.

Terraform - flagged before apply
# FAIL · CLOUD-S3-001 · public access not blocked

resource "aws_s3_bucket_public_access_block" "data" {
  bucket = aws_s3_bucket.data.id

  block_public_acls       = false
  block_public_policy     = false
  ignore_public_acls      = false
  restrict_public_buckets = false
}

# PASS · same resource, all four controls set to true

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

Same rules, both sides of deploy

The rule that fails a pull request is the rule that evaluates production, so there is no gap between pipeline and assessment.

 

Terraform

Plan and module scanning

Bicep & ARM

Azure deployments

Helm & manifests

Kubernetes as code

Formation

Templates and stacks

PR checks

GitHub, GitLab, Bitbucket

Drift detection

Console changes vs code

Cloud vulnerability scanning: CSPM vs cloud DAST

CSPM asks whether the environment is configured safely and reads the control plane. Cloud DAST, often performed with a website vulnerability scanner, asks whether the running application itself is safe. A well-configured account can still serve an application with broken access control, and a solid application can still sit next to a public bucket holding its backups.

 

Configuration, identity and exposure across connected accounts. Agentless and control-plane deep.

Live testing of the apps and APIs your cloud serves, using the web application scanner on the parent hub.

What a cloud vulnerability scanner report looks like

Written for the engineer applying the change and the executive signing off the risk. Exportable as PDF, JSON and CSV, or streamed to your SIEM.

 

Discovered resources per account, subscription and project, with owners and regions.

The chains that reach data, ordered by exploitability and blast radius.

The API response, policy document or manifest behind the finding, with its timestamp and method.

Sample report preview
4 critical
11 high
36 medium
Attack path: public pod to cluster secrets
Path #3
internet → ingress-nginx 1.13.4 (retired) → Secrets across 4 namespaces
GET /apis/apps/v1/namespaces/ingress/deployments image: ingress-nginx-controller:v1.13.4 fix: migrate to a maintained controller or Gateway API; scope the controller's Secret access

How the cloud vulnerability scanner handles your access and scan data

Connecting a scanner to a production account deserves specifics: what the connection is, what we store, and how you take it back.

You create and hold the role: a cross-account IAM role with an external ID in AWS, a reader application in Entra ID, or a viewer service account in GCP. Permissions are read-only, scoped to the accounts you select, and revocable from your own console.

Role identifiers, tokens and registry credentials are encrypted in transit and at rest in a managed secrets store, used only for your workspace, and removed when the connection is deleted.

Access is role-based. Support staff cannot read stored secrets, and troubleshooting access requires your request and is recorded in an audit trail you can review.

Findings, snapshot metadata and reports are retained for the period set in your workspace. You can delete an assessment, an account or your whole history at any time, which also removes the evidence and exports.

External scanning originates from a published list of static IP ranges you can allowlist. API request rates are limited by default and configurable, staying within provider throttling limits.

Scan data can be processed and stored in the region you select. The current region list and subprocessor register are available on request.

Cloud vulnerability scanning built for organisations, not a single account

Onboard an AWS Organization, an Azure management group or a GCP folder in one step, and route findings to the resource owner.

 
Bash - trigger an assessment via API
curl -X POST https://api.scantitan.com/v1/cloud-scans \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
  "provider": "aws",
  "scope": "organization",
  "include": ["config","iam","workloads","k8s"],
  "notify": ["slack","jira"]
}'

# Response
{
  "scan_id": "cl_9f31a7",
  "accounts_in_scope": 27,
  "status": "running"
}

Fits the way cloud teams work

Findings arrive tagged with the account, environment and owner, so nothing waits for someone to log into another dashboard.

 

Org-wide onboarding

Organizations, management groups, folders

Jira

Tickets with owner routing

Webhooks & API

Any tool via JSON

Slack

Exposure alerts

Latest cloud vulnerability scanner updates

Last reviewed 5 August 2026. Reviewed every 90 days.

June 2026

Retired-component detection for Kubernetes

Clusters are flagged when they run components past end of maintenance, starting with ingress-nginx after its March 2026 retirement.

May 2026

Attack path analysis across providers

Paths now chain across account and provider boundaries, so a role that assumes into another account is one path rather than three findings.

Cloud vulnerability scanner comparison: ScanTitan vs Prowler, ScoutSuite and native tools

Open-source auditors are excellent and free, and native tools are already in your account. The table records what each project’s documentation describes, not our opinion of it.

 
Feature ScanTitan Prowler ScoutSuite Cloud-native tools
Multi-cloud misconfiguration checks Per provider
CIS Benchmark and compliance mapping Partial
Identity and effective-permission analysis Partial Partial Partial
Attack path analysis Not documented Not documented Partial
Container image scanning Not documented Not documented
Kubernetes configuration assessment Partial Not documented Partial
IaC scanning in the pipeline Not documented Not documented Partial
External exposure scan and cloud DAST Not documented Not documented Not documented
Runs without engineering time to operate Self-hosted Self-hosted Tuning required
Entry point Free assessment Open source Open source Per-account pricing

How to read this table:  described in official documentation. Partial documented limits, one provider only, or a specific tier. Self-hosted you run and maintain it. Per provider exists separately in each cloud, not in one view. Not documented no description found in the sources below at review time, not a claim the tool cannot do it. “Cloud-native tools” summarises Security Hub and Inspector, Defender for Cloud and Security Command Center, which differ from one another.

Sources reviewed 5 August 2026: Prowler documentation · ScoutSuite repository · AWS Security Hub docs · Microsoft Defender for Cloud docs · Google Security Command Center docs.
Next scheduled review: November 2026. Spotted something out of date? Tell us and we will correct it.

Common questions about cloud vulnerability scanning

Answered by our security team, not by a chatbot.

It inventories the resources in the accounts you connect and checks them for two kinds of problem: software with known vulnerabilities, and unsafe configuration. Under the shared responsibility model, the provider secures the cloud itself while configuration, identity, data and your own code remain yours, which is the layer this scanner assesses.

Read-only and agentless. You create a cross-account IAM role with an external ID in AWS, a reader application in Entra ID, or a viewer service account in GCP. Nothing is installed in your VPC and no write or delete permissions are requested. Scope it to specific accounts and revoke it from your own console at any time.

For instances it takes a read-only volume snapshot through the provider API and analyses the file system out of band, so nothing is installed on the host; encrypted volumes need access to the relevant key, which you grant explicitly. Images are pulled from your registries and their layers analysed, and Kubernetes is read through the provider API and a read-only service account. Snapshot analysis is point-in-time and does not see memory or runtime behaviour, which needs an agent or EDR.

Yes, across all three providers. S3 Block Public Access has been on by default for new buckets since April 2023, but older buckets, a policy granting Principal "*", or object-level ACLs can still expose data. Buckets and containers are tested for anonymous read, listing and write, and the finding names the setting that makes it public.

The connected assessment reads the control plane through provider APIs with read-only permissions, respects rate limits, and does not create, modify or delete resources. API calls are metered by your provider and are usually a small cost. External testing is rate-limited and non-destructive by default.

Findings map to CIS Benchmarks for each provider and roll up against PCI DSS, SOC 2, ISO 27001 and NIST. You get control-by-control status, the evidence behind each pass or fail, and a history of when a control changed state.

Is ScanTitan's cloud scanner right for you?

Somewhere in your cloud, something is public that should not be.

Start with the external exposure scan, which needs nothing from you, then connect a read-only role to see what an attacker reaches after a first foothold.

 

OSCP · CISSP · 12 years in web application security · Author profile →