Skip to content
CodesGuard

Product tour

See how it works, step by step.

From a .zip of source to a proven, prioritised finding — the path a scan actually takes through the platform.

01

Start a scan

Create a workspace, upload a .zip of your source (or connect through the API) and start a scan. Every module shares one workspace and one findings queue.

OverviewDashboard
Search projects, findings, CVEs…⌘K
Environment online

Acme Corp · Production workspace

Good morning, Dana

New scan

Risk posture

214open findings

8.2% vs last 30 days

6Critical13High41Medium78Low76Info

19

Urgent

61

Fixed 30d

Findings over time

Discovered per week · last 8 weeks

Critical + HighBelow

Attention required

Highest-severity issues first

19 open

SQL query built from unsanitized request input

SAST · payments-api · query.go:142

Critical

RCE via log4j-core 2.14.1

SCA · identity-service · CVE-2021-44228

Critical

IDOR on invoice export — cross-tenant read

AI Pentest · Q3 web assessment

High

Reflected XSS in search parameter

DAST · shop.acme.example · /search

High

02

Read the code evidence

Static analysis traces untrusted input to a dangerous sink across files, highlights the exact line, and scores each candidate for how likely it is to be a false positive — with the reasoning shown.

CriticalSQL injectionCWE-89 · A03:2021FP 25% · Likely real

payments-api · internal/ledger/query.go

138func (h *LedgerHandler) Query(w http.ResponseWriter, r *http.Request) {
139 email := r.URL.Query().Get("email")
140 sql := "SELECT * FROM ledger WHERE email = '" + email + "'"
141 
142 rows, err := h.db.Query(sql)
143 if err != nil { http.Error(w, err.Error(), 500); return }
r.URL.Query()emailh.db.Query(sql)

AI review

Tainted email is concatenated into the query with no parameterization or escaping. The path from request to sink is reachable unauthenticated. Fix: use a parameterized query with $1 binding.

03

Check what you imported

Dependency analysis comes out of the same scan: your packages matched against public advisories, with the fixed version and whether your code actually calls the risky function.

CriticalPrototype pollution in minimistGHSA-xvch-5gv4-984h · CVE-2021-44906Upgrade to 1.2.6

web-app · package-lock.json

210 "node_modules/minimist": {
211 "version": "1.2.5",
212 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
213 "license": "MIT"
214 },
package.jsonmkdirp 0.5.5minimist 1.2.5
Locked version · transitiveImported and called · src/cli.js:3Exploit likelihood shown

04

Attack the running app

Dynamic testing crawls the live application or API, fuzzes every input, and confirms each issue with the request that triggered it and the response that proves it landed — behind the login too.

HighReflected XSS in search parameterCWE-79 Confirmed · 3 of 3
Attack requestsent by the scanner

GET /search?q=<svg/onload=confirm(1)> HTTP/1.1

Host: shop.acme.example

Cookie: session=eyJhbGciOi… (replayed session)

Response200 OK · 41.2 KB · 184 ms

HTTP/1.1 200 OK

Content-Type: text/html; charset=utf-8

<h2>No results for <svg/onload=confirm(1)></h2>

The payload is returned unencoded in the page body — the element parses and executes. Differential oracle confirmed it on 3 of 3 attempts.

05

Let an agent prove it

The autonomous pentest chains small weaknesses into a real attack path and exploits it, streaming every decision — then attaches the proof and a reproduction command.

HighIDOR on invoice export — cross-tenant read Proven · 4 steps

Attack chain

  1. ReconRoute echoes a tenant id the client never sends

    httpx · jsluice
  2. DiscoveryExport endpoint absent from the OpenAPI spec

    ffuf
  3. AnalysisInvoice ids increment by one per tenant

    inference
  4. ExploitRequested a neighbouring id — got another tenant's PDF

    curl
Proof requestsession = tenant 8812

GET /api/invoices/44190/export HTTP/1.1

Authorization: Bearer eyJ…tenant_id=8812

Proof response200 OK · application/pdf

HTTP/1.1 200 OK

Bill to: Northwind Trading Ltd (tenant 9014)

Amount: 18,420.00 EUR

06

Triage one queue

Everything lands in a single correlated findings queue. A weakness found in code, confirmed at runtime and exploited by an agent is one prioritised issue, not three duplicates.

AllCriticalHighMedium
Deduplicated across modules
  • Critical

    SQL query built from unsanitized input

    payments-api · query.go:142

  • Critical

    Remote code execution via a vulnerable dependency

    identity-service

  • High

    IDOR on invoice export — cross-tenant read

    GET /api/invoices/{id}/export

  • High

    Reflected XSS in search parameter

    shop.acme.example · /search

  • Medium

    SQL injection confirmed on refund lookup

    POST /v1/refunds

Showing 5 of 164Every row links back to the scan that proved it

Want to see it live? We'll give your team a guided walkthrough on your own stack — book a demo.

Walk through it with us

A guided demo tailored to your codebase and your questions — not a canned recording.