Let's talk
Mostafa Mamdoh

Researcher who breaks payment rails

Mostafa

I test payment rails, authorization models, multi-tenant systems and AI agent surfaces for the logic flaws that scanners never reach. Ranked 33rd all-time on Bugcrowd, first in Egypt.

P1 Race condition — balance never decremented
POST /v1/tips {"amount":500} 200
POST /v1/tips {"amount":500} 200 sent concurrently
POST /v1/tips {"amount":500} 200
GET  /v1/balance 500 unchanged after 1,500 spent
#33All-time paid, Bugcrowd
#1Researcher in Egypt
98.41%Submission accuracy. Not quite pure.
9,347All-time points

Three ways to work together

Scoped engagements, program design, or someone who stays close to your system.

Penetration testing

Scoped web and API engagements, usually three to five testing days. A findings report with severity, reproduction steps and remediation guidance, plus a retest once fixes land. Critical findings reach you the day I find them.

Private bug bounty programs

Standing up a program that produces signal instead of noise: scope matched to your real risk, reward tiers that attract researchers who can find the hard things, and triage your team can act on.

Ongoing advisory

An annual pass plus scoped reviews whenever you ship something touching money movement, authentication or payouts. Faster every time, because I already know how your system works.

One flaw, six disguises

Most of what I find comes down to a control that exists on one path and not another. A selection from managed programs, with clients and identifying detail removed.

The check exists, just not on every path

  • A private-address validator enforced when a repository is created, omitted when it is updated, reaching internal network services
  • A superseded email-change route still live, skipping the password confirmation its replacement requires
  • A legacy password endpoint issuing a full session without the second factor the current login enforces
  • Retired plan codes still accepted at checkout, and accepted again after a patch was reverted

The server believes what the client tells it

  • Client-supplied state persisted server-side, minting unlimited real-money in-app currency
  • An approval flag accepted from the request body, publishing unmoderated content to a public page
  • A plan tier set directly through mass assignment, upgrading a free account for nothing
  • A permission enforced only in the browser, with the server accepting bulk actions from a user denied it
  • A bot-protection check skipped entirely when the token field is simply left out

The object is not yours and nothing checks

  • A path identifier selecting any customer's database and returning its contents, unauthenticated
  • A list filter that was never account-scoped, returning any user's profile by ID
  • A non-admin account retrieving a platform-wide roster spanning a thousand unrelated sub-accounts
  • An invited secondary user able to change the primary account holder's login email and take it over
  • A billing endpoint letting one workspace raise invoices against another's account
  • A realtime authorization endpoint signing subscription tokens for arbitrary channels

The limit does not hold under concurrency

  • Concurrent requests settling before the counter incremented, bypassing a limit entirely
  • Repeated billing-cycle resets enabling unlimited credit farming
  • Paid orders completing when the confirmation step was wrong, blank or absent

The redirect is trusted more than it should be

  • An OAuth redirect target validated by an unanchored substring match, so an attacker-registered domain receives the code
  • An identity-linking callback applied to the requesting session rather than the account it was issued for, allowing one-click account linking
  • An attacker-controlled workspace linked to a victim's, then driven against it
  • Uploads served back with an attacker-chosen content type, turning user content into executable script

The agent reaches further than the user

  • Page content causing an assistant to exfiltrate a victim's workspace data to an external host
  • An agent's fetch tool reaching cloud instance metadata and internal services
  • A support assistant disclosing configuration the API refuses to that same role
  • Unauthenticated minting of third-party model credentials, billed to the operator

Also: server-side request forgery across webhook and integration surfaces, stored cross-site scripting chained to credentialed cross-origin reads, unrestricted API keys billed per use, and unauthenticated access to internal document stores.

How an engagement runs

Five testing days, as an example. Shorter engagements compress the middle, never the ends.

Before

Scope and authorization

A written scope naming the systems, the test window and an escalation contact, signed by whoever owns the assets. Nothing is touched until that is on file. Half the fee is invoiced at signing.

Day 1

Map the system, not the surface

Walkthrough with your engineer, the API specification, and every role provisioned. I spend the first day understanding how money and permissions are meant to move, because that is what tells me where they might not.

Days 2–4

Test the paths that matter

Authorization boundaries between roles and tenants, whatever the server takes on trust from the client, concurrency on anything that counts or spends, and the routes that were replaced but never removed. Anything critical reaches you the same day.

Day 5

Chain and confirm

Individually minor findings are worth more together. The last day is spent building the realistic attack path and confirming each issue reproduces cleanly, so your team is not chasing something that only worked once.

After

Report, then retest

A written report within three working days: severity, reproduction steps, and remediation your engineers can act on without a follow-up call. One retest is included once fixes land, because a patch that reverts is a finding I have reported before.

What it costs

Fixed price per scope, not a day rate to negotiate down. Half at signing, half on delivery of the report.

Focused pass

3 testing days $5,700 from
  • One system or one critical flow
  • Full report with reproduction steps
  • Retest included
  • Same-day escalation of criticals

Standard engagement

5 testing days $9,500 from
  • Web and API, plus a mobile client
  • Multi-role and multi-tenant boundaries
  • Full report with reproduction steps
  • Retest included
  • Same-day escalation of criticals

Ongoing advisory

Annual, plus scoped reviews Quoted per scope
  • One comprehensive pass a year
  • Short reviews when you ship something risky
  • Faster each time, since I know the system
  • Help designing a private bounty program

Scope drives the number, not the calendar. If the budget is fixed, I would rather narrow what gets tested and do it properly than stretch the same days across more surface.

Before we start

Do you need production access?

No. A staging environment with seeded data and provisioned roles is better for both of us. If only production exists, we agree in writing what is off limits and I work read-mostly.

Will you sign an NDA?

Yes, and I expect to. I will also want written authorization to test, which an NDA does not provide on its own. Client names never appear in my public work.

How is this different from a scanner?

A scanner finds what it has a signature for. Nothing in the list above would appear in one, because every item is a system behaving exactly as written and wrongly as designed.

What if you find nothing?

You get the report anyway, documenting what was tested and how. That is a defensible artifact for a customer or an auditor. In practice it has not happened yet.

How quickly can you start?

Usually two to four weeks out. Scoping takes one email exchange; the wait is the calendar, not the paperwork.

How does payment work?

Half at signing, half on delivery. Bank transfer or Wise, in US dollars. I am an individual contractor, so a W-8BEN is available if your finance team needs one.

Tell me what you are shipping

mostafa@waltwhitehat.com

Describe the system and what worries you about it. I will come back with a scope, a timeline and a price.