Alpha Defender
Internal security platform
War room
Demo data All defenses on
Good afternoon, Matt 👋
Everything your company owns is covered. I'm watching 6 targets and I'll tell you the moment something needs you.

Right now

updates every 1.5s
live

Protected software

6 targets
live

Activity

live from your teammate
live
Assessing TimeBack running
An authorized, prove-only assessment of app.timeback.com — software your company owns. I probe safely, prove what's reachable, and stop before anything breaks.
Ownership verified Scope: app.timeback.com Mode: prove-only Test data only: swarm-owned accounts
Phase 4 of 6 · Injection checks64%

Assessment map

app.timeback.com · 9 surfaces
scanning proved safe finding

What I'm checking

live

Defense grading, live

Did the always-on blue-team catch each move?
7
CAUGHT
2
MISSED
78%
detection
Break-in story · TimeBack
One learner can read another learner's report card
The page that shows a student's progress trusts whatever ID is in the web address. Change the number and it hands back someone else's record — no extra permission needed. I proved it with two of our own test learners, then stopped.
Severity
High
At risk
Every learner's progress & grades
Reachable
Public internet, after login
Attacker needs
Any one valid account
?Why it matters
A parent, a curious student, or anyone who signs up for a single free account could page through every other learner's report card by just incrementing a number. That's a privacy breach of minors' education records — the kind that triggers FERPA obligations and breaks trust with every family on the platform. No alarm would sound today, because to the server each request looks like a normal, logged-in user asking for a page.
1The break-in, step by step
1
Sign in as anybody
I logged in as our test learner swarm_learner_a — an ordinary, lowest-privilege account. No admin, no special role.
2
Notice my own ID in the URL
Opening my report card, the address read /api/v2/learners/48210/report. The 48210 is just my account number, sitting in plain sight.
3
Change the number
I swapped in the ID of our second test learner, swarm_learner_b (48211) — a separate account I also own. The server never checked whether the two were related.
4
Receive data that isn't mine
It returned learner B's full report — grades, mastery, attendance. I confirmed the ID belonged to the other test account, captured the response as proof, and went no further.
✓The proof — replayable, non-destructive
transcript · swarm-owned test accountsREAD-ONLY · NO REAL USER DATA
# Signed in as swarm_learner_a (our own test learner, id 48210).
# Requesting a DIFFERENT owned test learner's report (id 48211).
GET /api/v2/learners/48211/report
Authorization: Bearer <redacted — swarm test session>
# --- server replied ---
200 OK  ·  content-type: application/json
{
  "learnerId": 48211,
  "name": "Test Learner B",            # not account 48210
  "grade": "4th", "mastery": 0.82,
  "attendance": "...", "reportCard": [ ... ]
}
# PROVED: account A read account B's record. Stopped here — no writes, no real users.
Both accounts are swarm-owned test learners seeded for this assessment. One read-only request, no data modified, no production user involved. Fully replayable.
⌁The one fix that shuts it down
services/learners/report.controller.ts+3 −1
    async function getReport(req, res) {
      const { learnerId } = req.params;
-     const report = await db.reportFor(learnerId);
+     // only the learner themself (or their guardian/teacher) may read it
+     if (!canAccessLearner(req.user, learnerId))
+       return res.status(403).json({ error: "forbidden" });
+     const report = await db.reportFor(learnerId);
      return res.json(report);
    }
Defending now 24/7
The always-on blue-team swarm watching all 6 company-owned targets. Every action is capped, auto-expiring, reversible, and owner-notified — a human is always in the loop for anything bigger.
Coverage
4/4
targets, all surfaces
Detections 24h
1,284
39 acted on
Median MTTR
1.8s
detect → contain
Active containments
3
all auto-expiring

Defender swarm

5 agents on watch

Live detections & actions

live

Active containments

3
Projects
Every repo and service we own, one row each. Click a project to see everything I've done to it.
Preview toggle. In the real product this is set by your role — an admin sees every project, a developer sees only the ones assigned to them.
Add a service
Protect something new
An attacker sees everything you run, not just one repo. Connect the real things you own, check the full footprint, tell me what matters — then I'll start protecting it.
Connect what you own
How you connect each source is the ownership proof — an org app install, a read-only cloud role, a DNS record only the owner can set. No forms, no paperwork.
Shows up as one row in Projects.
GitHubConnect org → pick repos
Connected
Org trilogy · 3 repos selected. I read code to find what to attack and open fix PRs — never push to main.
Ownership proven via GitHub app — installed on trilogy by an org admin. Only an owner can do that.
AWS / CloudAdd a read-only role
Not connected
Lets me see buckets, load balancers, public IPs and databases — the parts an attacker finds by scanning, but with the inside view.
1-click stack → AlphaDefenderReadOnly
policy SecurityAudit + ViewOnlyAccess
Read-only — we never change your infra.
Domains & hostsVerify by DNS TXT or a file
1 of 2 verified
Also connect
Nothing is attacked yet. Not a single probe runs until ownership is proven and you hit Go on step 4.
This is everything an attacker can see — and everything I'll test
I fanned out from what you connected: certificate logs, DNS, cloud inventory, and a passive crawl. Nothing has been probed. Switch off anything you don't want tested.
Mapping your footprint…
Out-of-scope items are never touched — not even a port scan. You can change scope any time from the project page.
What matters here?
Tag the assets that hold something precious. The attack crew goes after those hardest; the defense crew guards them closest.

    Plain words are fine. Both crews read this before every run.
    0 characters
    This guides both sides — we attack what matters hardest and guard it closest.
    Scope & safety, then Go
    These are the rules I'll work under for this service. Safe defaults are already on.
    Prove-only Locked on

    I show a hole is real and stop — no data taken, nothing changed, only test accounts I create. Turning this off needs a second admin's sign-off.

    Environment & window

    Where I'm allowed to test, and when.

    StagingTest anytime · no rate cap
    ProductionLow-traffic window only
    From to PT Rate cap
    Blast-radius cap

    Defense actions stay reversible only — rate limits, short blocks — and auto-expire after . Anything bigger asks you first.

    Standing crew

    Agents on duty 24/7 for this service. Surges automatically during an assessment.

    3
    Assessment cadence

    Recon is cheap and quiet; deep assessments run inside the window above.

    Step 1 of 4
    Safety & scope Coming next pass
    The rules I operate under, in writing: ownership proof, defined scope, prove-only default, blast-radius caps, and the $100/day spend ceiling.

    Your guardrails, always on

    A full editable view of ownership proofs, scopes, and caps lands here next. The live summary stays pinned to the safety bar at the bottom.

    Governance controls — filled in a later pass
    Safe mode Ownership verified Scope: 6 company apps Mode: prove-only Blast radius: capped
    Spend today $12 / $100
    Demo data · seeded