Back to Features

Security Scanning

Scanning that survives the audit

Every result is measured against your own policy, sealed as evidence the moment it lands, and verifiable by your auditor without our credentials. When something drifts, the fix is checked by an independent rescan, not taken on faith. Bring our scanners, bring your own, or run both. Same audit-ready record either way.

76
Native checks on the stack you already run
567
Framework controls checked directly, across 250+ frameworks
0
Fixes we mark resolved without a passing rescan

The obvious question

“How is this different from Vanta or Wiz?”

Vanta-class platforms detect and file a ticket. Cloud posture platforms detect and auto-fix at runtime. Neither ships an evidence trail your auditor can verify offline. We sit at the intersection.

GRC-native scanners
Detect + file
When a scan finds MFA disabled
MFA disabled on 3 users
What happens next
Jira ticket queued for the admin to fix
At audit time
Auditor still asks for screenshots at audit time
Cloud posture platforms
Detect + auto-fix
When a scan finds MFA disabled
Public S3 bucket + attack-path graph
What happens next
One-click remediation via API
At audit time
Evidence trail is your problem at audit time
vCISO Lite
Detect + evidence + fix
When a scan finds MFA disabled
MFA disabled + mapped to every framework your org is measured against
What happens next
One-click fix across the cloud, identity, and productivity platforms your business runs on
At audit time
The finding IS the evidence row — chain-anchored, verifiable offline by any auditor

Your policy, not a checklist

Every result says what your policy expects, what we saw, and the gap

A check doesn’t pass or fail against a generic baseline. It’s measured against the clause in your own policy, at the revision in force when we looked. Tighten the clause and the results change with it.

  • Four honest outcomes: pass, fail, not evidenced, scope blocked. If a platform refuses us, that never becomes a pass
  • Failures broken down per user or resource, so you can see whether the cause is a real gap, an exception that lapsed, or a known exception you already declared
  • Exceptions come from the register you keep on each policy clause. They’re shown to your auditor as declared, never as passing
  • Every result says where it came from: a live reading, a report you imported, or a point-in-time security test
FailOkta · live
Phishing-resistant MFA for admins
Your policy says
Admins use WebAuthn or FIDO2. No SMS.
Identity & Access §4.1, rev 6
We observed
8 of 11 admins on WebAuthn. 3 on SMS only.
10 Oct, 11:00 UTC
Gap
3 of 11 admins
1 declared exception · 2 need action
  • d.kim · super adminTechnical failure
  • t.lund · exception expired 30 SepException lapsed
  • r.osei · field phone, until 31 DecKnown exception

Cross-framework yield

Scan once, satisfy every framework it maps to

Every scanner check is pre-mapped through the Secure Controls Framework crosswalk. When a scan passes, the satisfaction chip lights up on every framework panel that mapped control belongs to: SOC 2, ISO 27001, PCI DSS, HIPAA, FedRAMP, NIST CSF, CMMC, CSA CCM, GDPR, and more. If SCF can see it, we scan aligned to it.

  • Coverage tracks your organization’s framework mix. Whatever you’re measured against, that is what your scans satisfy
  • Hundreds of controls mapped across every major framework via the Secure Controls Framework crosswalk
  • Same source of truth as your compliance evidence graph. No re-mapping, no per-framework spreadsheets
  • When SCF adds a new framework, your scanners inherit the mapping automatically
Scanner check
GITHUB-002
Organization-wide MFA required
PASS · 42 users verified
Satisfies 13 framework refs
  • SOC 2CC6.1
  • SOC 2CC6.2
  • ISO 27001A.8.5
  • PCI DSS8.3.1
  • PCI DSS8.3.6
  • HIPAA164.312.d
  • FedRAMPIA-2(1)
  • FedRAMPIA-2(2)
  • NIST CSFPR.IA-03
  • CMMCIA.L2-3.5.3
  • CSA CCMIAM-02
  • GDPRArt. 32
  • CIPAISP-3

SCF crosswalk propagates the pass across every framework the same underlying control belongs to. Whatever compliance mix your organization is measured against, one scan check satisfies every related requirement in one pass.

Signal source flexibility

Bring our scanners. Bring your own. Bring both.

Seven native scanners on the platforms you actually run, plus import adapters for the tools you already trust: Prowler, Checkov, Trivy, Snyk, Wiz, OSV-Scanner and CISA’s ScubaGear. Security-test findings from Red Claw land in the same results. Every result keeps its origin. An imported report is labelled as imported, and a pentest finding as point in time. Neither is ever dressed up as a live reading.

Native
Run our scanners
76 checks across 7 platforms, framework-mapped in-box
  • AWS18
  • GitHub16
  • GCP13
  • Google Workspace13
  • Azure7
  • Okta6
  • Slack3
Same audit-ready record
Bring your own
Or feed us the tools you already run
Normalized into the same evidence rows. No re-scanning.
  • ProwlerJSON
  • CheckovJSON
  • TrivyJSON
  • SnykJSON
  • WizJSON
  • OSV-ScannerJSON
  • ScubaGearJSON

Whichever lane the signal comes from, it lands as the same object, labelled with where it came from.

Finding lifecycle

Findings move the way your VM policy says they should

Every finding is a first-class object routed through your organization’s vulnerability management policy. The SLA on a finding is whatever your policy calls for. Findings arrive continuously, instant via webhook where change happens fast, on your chosen schedule where it doesn’t, and can be sent to any work management platform.

  • SLA per severity, aligned to your VM policy. The thresholds you set
  • Auto-escalation when the SLA slips, up your escalation chain
  • Two-way sync with Jira, Linear, Asana and GitHub Issues. A ticket marked Done starts the rescan; the rescan resolves it
  • Exceptions and risk acceptances expire on the date you set. When one lapses, the finding comes back on its own
  • Every transition writes to an immutable activity log
  • Slack and email alerts on new findings and SLA warnings, routed per your policy
Open
Triaged
In progress
Resolved
Also:
False positiveSuppressedWon't fix
SLA per severity — aligned to your VM policy
  • Critical1 day
  • High7 days
  • Medium30 days
  • Low90 days
  • InfoNone

Escalations route up your chain. Bidirectional sync with Jira, Linear, Asana, and GitHub Issues — resolve once, resolve everywhere.

Chain of custody

Sealed is not the same as sound

Every finding lands on a SHA-256 hash chain, anchored by outside timestamp authorities, so your auditor can prove nothing changed after it was written. That’s the seal. The evidence graph answers the harder question: was the record right when it was written?

Each record has to agree with four neighbours: the grant that allowed the read, the policy revision it was measured against, the record it replaced, and the collector’s own history. A reading taken with a token revoked six hours earlier seals perfectly. The graph still catches it, withdraws it, and re-collects.

Coherence view on a live Okta record: all four relationships hold
The coherence view on a live Okta record: all four relationships hold. In the product, this opens from the record’s integrity panel.How the evidence graph works
Hash chain. Every scan run and finding is sealed the moment it lands.Anchored outside us. RFC 3161 timestamps from DigiCert.Verifiable offline. The export bundle carries the proofs. Any auditor can check them without us.Kept for seven years. 13 months in hot storage, then cold storage for the rest.

Policy drift

Findings cluster into drift, against your policies, not a generic checklist

When a scanner catches an MFA policy going down, the platform doesn’t just log the config change. It clusters the finding with related events, matches it against your published policy library, and surfaces the drift alert with the specific policy it contradicts and the fix path to resolve it, in one place, already routed.

  • AI-mapped against your policy corpus, not a generic template
  • Drift alerts group related findings into one actionable object
  • Fix path attached where the write path is proven
  • Full attribution of which policy, which control, which framework
Drift Alert · HighGitHub · org: acme-inc
Organization MFA requirement disabled
Policy drift
Access Control Policy: your policy requires two-factor authentication for every workforce member with access to production systems. The GitHub org just dropped that enforcement.
Also affects
SOC 2 CC6.1ISO 27001 A.8.5PCI DSS 8.3.1HIPAA 164.312.d+9 more
Review fixAssign
Chain seq #12,847·SLA due in 6d 4h·Attributed via SCF crosswalk

Drift alerts cluster scanner findings, name the policy they contradict, and route the fix. AI-mapped against your policy library, not a Rego evaluation.

Fix path

Approve it once. A rescan decides whether it worked.

Every drift alert arrives with the fix wired to the system it belongs to: an API change, a pull request against your infrastructure code, guided steps, or a ticket for a code change. You approve it, and it’s applied. The finding only closes when an independent rescan confirms the change held. If it didn’t, it’s rolled back and you’re told why.

  • Read-only by default. Write access is a separate grant an admin issues, scoped to what the fix needs, with an expiry
  • Every fix shows its blast radius and rollback before you approve it
  • No change verifies itself. The rescan does. Run by an independent scanner, not by whatever applied the fix
  • Need it ticketed? Create the Jira or Linear issue from the fix. The ticket key goes on the pull request, and marking it Done still waits for the rescan
GitHub · acme-co/payments-api · pull request
Require 1 approving review on main
  1. 09:41Approved by Maria Chen. Reason: CC8.1 audit sample next week
  2. 09:41Applied as PR #412 · ENG-2291 on the PR
  3. 09:58Rescan passed by an independent scanner, not by whatever applied the fix
  4. 09:58Resolved and sealed on the audit trail
If the rescan fails: the change is rolled back automatically, the finding reopens, and a follow-up explains what didn’t hold.
Autonomy is earned, one kind of fix at a time

A category of fix can act on its own only after its fixes have held on independent rescan: 98% of at least 30 by default. Your org can set its own bar, never below 90% of 10. Business and Ultra build that record now; Trustworthy Autonomy on Enterprise lets it act.

Common questions

The questions buyers actually ask

Vanta-class platforms detect and file a ticket, and the auditor still asks for screenshots. Wiz-class platforms detect and fix at runtime, but the evidence trail is your problem. We do both halves: every finding is a sealed evidence record mapped to the frameworks you're measured against, and every fix is verified by an independent rescan before it closes.

Ready for scanning that survives the audit?

Get your first scan running in minutes. Turn every finding into evidence.