Book a scoping callBook a call

Follow your pentest from scope to retest

Outer Core keeps the scope, findings, conversations and retest results together. You can follow the work while it is happening and speak directly with the tester running it.

Book a scoping call
Follow the whole engagement
End-to-end engagement flow

From scope to report

These are the eight steps you and the tester move through during an engagement.

You
Outer Core / Tester
01

Define the scope

Tell us what needs testing. Together we agree the systems, access, timing and safety rules.

02

Review the quote and rules

You review the scope, testing window and price. Nothing begins until you approve them.

03

Meet your tester

We match the engagement to a tester with relevant experience. One lead tester remains responsible through retesting.

04

Testing starts

The tester begins inside the approved scope and records confirmed findings in Outer Core.

05

See confirmed findings

When the tester validates a weakness, you see the evidence, impact and remediation guidance.

06

Ask questions

Your engineers can ask the tester for context while the work is still fresh.

07

Fix and retest

When a fix is ready, request a retest. The tester records whether the original proof still works in the tested context.

08

Download the report

The reviewed report brings the approved scope, methodology, findings and retest results together.

Follow the engagement from the start

Each confirmed vulnerability appears the moment we validate it. Open any finding to see exactly what you get: scored, reproducible, and ready to act on.

  • CVSS 3.1 severity, five levels: Critical, High, Medium, Low, Info. Derived from the base metrics, not hand-set.
  • The full finding: title, affected targets, CWE, proof of concept, impact, and remediation advice.
  • A customer lifecycle you drive: Pending Fix, Ready to Retest, Fixed, with Accepted Risk as a branch.
acme-app / web / 3 findings
tap to expand
CriticalCVSS 9.8
SQL injection in the login form
Pending Fix
CVSS 3.1
9.8Critical
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-89
SQL Injection
Affected target
POST /login
Proof of concept
POST /login email=admin@acme-app.test' OR 1=1-- &password=x Response 200 authenticates as the first user in the table. Full request and response captured on the finding.
Impact

An unauthenticated attacker signs in as any user and reads or alters the users table directly.

Remediation advice

Use parameterised queries for every user-supplied value and verify with the retest.

HighCVSS 7.4
Stored XSS in profile display name
Pending Fix
CVSS 3.1
7.4High
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N
Weakness
CWE-79
Cross-site Scripting
Affected target
GET /profile
Proof of concept
Display name set to <script>fetch('/x?c='+document.cookie)</script> Renders unescaped on the profile view and runs in another user's session.
Impact

Session theft and actions taken as any user who views the crafted profile.

Remediation advice

Context-encode output on render and apply a strict Content-Security-Policy.

MediumCVSS 5.3
No rate limit on password reset
Ready to Retest
CVSS 3.1
5.3Medium
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Weakness
CWE-307
Improper auth-attempt limiting
Affected target
POST /account/reset
Proof of concept
1,000 reset requests in 60s accepted with no throttling or lockout.
Impact

Enables reset-token brute force and account-enumeration at scale.

Remediation advice

Rate-limit per account and IP, and add exponential backoff on repeated attempts.

Findings land where your developers already work.

Openacme-app/webapp #482

Stored XSS in profile display name

outercoreseverity:highcwe:79status:pending-fix
Opened by outer-core, mirrored from the finding

A display name containing script executes in another user's session. Severity, CWE, affected target, proof of concept, impact, and remediation advice mirror the finding card.

Open in Outer Core
M
Maarja (Lead Tester)via Outer Core

Reproduction steps and the captured request are on the finding. Ping me here if you want to walk through the fix.

D
dev-priiton GitHub

@outerheavenee patched with output encoding on the profile view. Ready for you to check.

↳ @-mention synced this comment back into the finding thread
Status changes propagate
  • Ready to Retest adds an "Awaiting retest" comment and label.
  • Fixed closes the issue: "Verified fixed by Outer Core".
  • Accepted Risk closes it as not planned. A failed retest reopens it. Each carries a deep link back into Outer Core.
The boundary, plainly

A confirmed finding becomes a GitHub issue automatically, with its severity, evidence and remediation guidance. Comments sync both ways. The finding status and final report remain authoritative in Outer Core.

CommunicationFindingsReport
T
Toomas (acme-app)CTO
On the SQLi finding, is the login the only affected endpoint or should we widen the fix?
M
MaarjaLead Tester
Just the login handler is confirmed. I'll flag the search endpoint too once I finish validating it. Parameterise both and I'll retest together.

Findings land where your developers already work

A confirmed finding becomes a GitHub issue automatically, with its severity, evidence and remediation guidance. Comments sync both ways. The finding status and final report remain authoritative in Outer Core.

Openacme-app/webapp #482

Stored XSS in profile display name

outercoreseverity:highcwe:79status:pending-fix
Opened by outer-core, mirrored from the finding

A display name containing script executes in another user's session. Severity, CWE, affected target, proof of concept, impact, and remediation advice mirror the finding card.

Open in Outer Core
M
Maarja (Lead Tester)via Outer Core

Reproduction steps and the captured request are on the finding. Ping me here if you want to walk through the fix.

D
dev-priiton GitHub

@outerheavenee patched with output encoding on the profile view. Ready for you to check.

↳ @-mention synced this comment back into the finding thread
Status changes propagate
  • Ready to Retest adds an "Awaiting retest" comment and label.
  • Fixed closes the issue: "Verified fixed by Outer Core".
  • Accepted Risk closes it as not planned. A failed retest reopens it. Each carries a deep link back into Outer Core.
The boundary, plainly

A confirmed finding becomes a GitHub issue automatically, with its severity, evidence and remediation guidance. Comments sync both ways. The finding status and final report remain authoritative in Outer Core.

Talk to the person doing the work.

You reach the tester actually running your engagement, in the platform, while the test runs. A named Lead Tester owns it start to finish. The Communication tab opens once the test is scheduled.

Mentions notify by email. You always see the shared channel, never a tester's internal notes or their email address.

CommunicationFindingsReport
T
Toomas (acme-app)CTO
On the SQLi finding, is the login the only affected endpoint or should we widen the fix?
M
MaarjaLead Tester
Just the login handler is confirmed. I'll flag the search endpoint too once I finish validating it. Parameterise both and I'll retest together.
Remediate and retest

Record what happens after the fix

A retest checks whether the original proof of concept still works in the tested context.

The remediation loop

The finding is confirmed and ready for your team to investigate. Move it forward when a fix is ready, or record that you accept the risk.

Leaves behind
GitHub: "Awaiting retest" comment and labelStatus change logged in Outer Core

A tester re-runs the original proof of concept in the tested context and records the result. If it still works, the finding returns to Pending Fix.

Leaves behind
Verification record written, pass or fail

The original proof no longer works under the retest conditions. The tester records the result and marks the finding Fixed.

Leaves behind
GitHub issue closed: "Verified fixed by Outer Core"Shown Fixed in your on-demand report

A state you set yourself from Pending Fix, keeping the finding on record without a fix. It is reversible: move it back to Pending Fix whenever you decide to act.

Leaves behind
GitHub issue closed as not plannedKept on record in Outer Core, reversible
Free retesting for one year

Retesting of remediated findings is free for one year from report delivery. A retest checks the original proof in the tested context.

The report

Not every reader needs every section.

We write every section. You build the report you need. Choose an executive summary, the full technical detail or any combination in between.

The content is written and reviewed by us; you decide what belongs in the PDF. The selector lets you shape the report around its readers, and the sample below shows the complete version with every section included. Executives, developers and auditors can go straight to the sections relevant to them without searching through the full report for what they need.

One fixed PDF, the complete report as a customer receives it. The selector shows how sections are chosen.

Who is reading?
Sections included
Report
Table of contents
01Cover1
02Document Information2
03Statement of Confidentiality3
04Table of Contents4
05Executive Summary5
06Summary of Findings7
4 of 22 pages

In the platform you pick sections when the report is built.

What is included in every engagement

A clear scope, a human-led test and a record your team can keep working from.

Eight engagement types
Method
Human-led offensive testing

A human tester leads the engagement, using tools where they help and judgment where it matters.

Built on
OWASPPTESNISTMITRE ATT&CKCIS
Security history
How your security changes over time

Each engagement adds findings, fixes and retest results to your security history, helping your team spot recurring weaknesses and track how security changes over time.

Data
EU data residency

Data locality in the EU.

Compliance support

The three feature-backed frameworks. The pentest is the evidence your audit expects; it does not certify you on its own.

4 areas
How you buy

Approve the budget once.
Test whenever you need to.

Most teams re-run finance and procurement every time they want a test. With a wallet, you fund testing capacity once, in tester-days, then spend it on any scope, on demand. No new purchase order, no re-approval each time.

01

Fund once

Set a testing budget once, as a balance of tester-days in your wallet.

02

Test on demand

Your team spends it on any scope, whenever they need a test. Start in days, not weeks.

03

Skip the paperwork

No new purchase order and no re-approval for each engagement. The balance is already yours to spend.

Predictable, capped spend

Your balance is a hard ceiling. You never spend past what you funded, so there are no surprise bills.

Elastic scope

One balance covers every surface we test. Each engagement is scoped to the work it needs, not to a fixed package.

One clean invoice

Finance approves and pays once, for the whole balance. One line item, not a PO per test.

Get started

See it on your
own systems

Book a scoping call. We agree the surface, match a tester, and go live in a portal you watch from the first finding to the last fix.

Book a scoping call

Human-led PTaaS, EU data residency, one report, retests free for a year