π‘οΈ Smart Contract Security Audits & Web3 Research
I secure protocols by identifying vulnerabilities before they are exploited. Open for private audits and security collaborations.
π§ Contact: [email protected] π»GitHub: https://t.co/4qfAor2OUI
Disclosing a critical theft of funds exploit we identified and disclosed to @AlchemixFi in June!
Their ETH MYT vault integrated unsafely with Tokemak strategy - we chained several primitives to trigger loss of $3M within a consecutive 1-min attack. π§΅
People keep asking me for the prompt behind my AI bug bounty system.
I think they are expecting one huge prompt they can paste into Claude or Codex.
There isn't one.
I could give you every prompt today and you still would not have my system.
You would have a set of instructions with no browsers, accounts, traffic, memory, evidence or anything else needed to make them work.
The prompts are probably the least interesting part.
What made this work was building a full research environment around the models.
That system helped me submit 243 reports and make $104,238 in 166 days.
Roughly 95% of the repeatable workflow is now automated.
This is what the AI actually has.
It starts with the bug bounty platforms.
My dashboard pulls in the programs, targets, scope, exclusions, rules, reward ranges, history and any scope changes.
It currently holds 3,636 program records.
Before a model touches a target, the system already knows what is in scope, what the program pays and which rules apply.
I still decide which programs are worth testing.
That part matters more than people think.
My own data shows that roughly 80% of completed targets produced no report. Running faster does not help much if I keep choosing the wrong targets.
Once I pick a target, I click the runner and it builds the full plan.
Web and API targets get one flow. Android, iOS, browser extensions and smart contracts each get their own.
Every run has its own files, accounts, browser sessions, models, time limits, findings and recovery state.
If a service restarts, the run can recover.
If a browser crashes, the session still belongs to the correct target.
If something needs my input, it stops and tells me exactly what is blocking it.
The happy path is easy to automate.
Recovery is what makes it useful.
For web targets, the first job is building a proper map.
The AI looks at hosts, services, JavaScript, API operations, GraphQL, authentication, business functions, browser routes and exposed configuration.
It is not creating another list of URLs that nobody reads.
It is building a list of operations that later phases need to test.
Then it needs real access to the product.
The AI creates test accounts, reads verification emails, pulls OTP codes, completes the signup flow and creates resources under each account.
For access-control testing, it normally creates an attacker account and a victim account.
It records which request created each object, who owns it and which account should be allowed to access it.
That is the difference between changing a random ID and proving broken access control.
To make all of this possible, I built 100 isolated Chrome profiles.
They run full versions of Chrome with their own cookies, storage, proxy, geo, traffic capture and CAPTCHA support.
50 are in the US, 20 in the UK, 20 in Australia and 10 in Singapore.
The profiles are persistent, so the AI can return to the same logged-in session later and reproduce the exact state.
I can also open any profile through VNC if a login, MFA prompt or unusual CAPTCHA needs me.
The AI has more than browsers.
It has unique email addresses, OTP retrieval, controlled PoC servers and OOB callbacks.
It can decompile APKs and IPAs.
It can use rooted Android phones, an iPhone, MITM traffic and runtime instrumentation.
For mobile findings, it has to prove that the attack still works without giving the attacker root, ADB, physical access or any of the tools I used to discover it.
Those tools help find the bug.
They cannot become fake attacker prerequisites in the report.
Once access is ready, the system starts testing.
It covers access control, authentication, sessions, SSRF, file uploads, GraphQL, business logic, client-side behavior and injection.
Every relevant operation needs a recorded outcome: tested, blocked, excluded or not applicable.
It cannot silently skip something and call the phase complete.
After the broad testing, focused models go back through the target and follow anything that looks strange.
This is where most of the real findings come from.
I traced 100 submitted reports back to where they started.
Only about 17% started in the linear phases.
About 83% came later from focused cycles or manual follow-up.
The early phases build the map and the accounts.
The later phases follow the weird behavior until they understand why the system allows it and what the real impact is.
It also has a memory built from my previous reports.
I have built a retrieval system from 241 validated findings across APIs, web, Android, iOS, infrastructure and smart contracts.
When it tests an API, it gets relevant API examples.
When it tests Android, it gets relevant Android examples.
It is not dumping every old report into every prompt.
It is pulling the patterns that match the surface being tested.
Finding something is only half the job.
AI can write a very convincing report around weak evidence.
So I built the later phases to try to disprove the findings.
A candidate has to prove real impact, stay inside scope, start from a realistic attacker position, pass control tests and reproduce live.
It also has to show that the behavior is a security issue, not just how the product is meant to work.
P8 validates the finding and tries every safe escalation path.
P9 independently reproduces it, fixes the proof and checks the screenshots.
P10 acts like a hostile triager who does not believe the report.
It runs the steps again from the stated attacker position, checks every prerequisite, corrects the severity and chooses the exact platform classification.
It can pass the finding, block it for more evidence, downgrade it or reject it completely.
It is not allowed to invent a new angle just to save a weak report.
Every screenshot has to come from a real execution.
No generated proof. No painted terminal output. No claim that cannot be repeated.
That rejection process is one of the most important parts of the whole system.
I do not want it to produce the highest possible number of findings.
I want it to produce findings that survive someone trying to prove them wrong.
Only then does the report reach me.
I read it, check that it is legitimate and decide whether it needs a revision, a severity change or a rejection.
If I send it back, the finding goes through the final validation again with my exact instructions.
Once I am happy, the system packages the report, PoC, screenshots and attachments.
My browser extension helps fill in the platform form, so the final submission normally takes one or two minutes.
I still submit every report manually.
The automation does not stop after submission.
The system checks every report each day, downloads any new activity, reads replies and images, and tracks the status, triage severity, support tickets, payments and resolution time.
Every ten days it can retest a stale report and draft the next reply or support ticket.
I check every message before it is posted.
All of those outcomes go back into the analytics.
I can see which phase and model found the report, how the severity changed, how many tokens the run used and what decision the platform eventually made.
Through 5 August, the system recorded 288.1 billion tokens at an equivalent API cost of $209,303.
Most of that usage was covered by subscriptions rather than paid at normal API rates.
At normal API prices, the current system would make no financial sense.
So when people ask me for the prompt, this is the honest answer.
The prompt tells the model what to do.
The system gives it somewhere to do the work, remembers what happened, checks whether the result is true and brings the final decision back to me.
That is what I mean when I say the workflow is roughly 95% automated.
It does not mean 95% of the judgment disappeared.
It means I no longer spend most of my day copying requests, creating accounts, opening browsers, moving screenshots, formatting reports and checking queues.
I choose the programs.
I decide the direction.
I review the findings.
I submit the reports.
The AI does the work.
I still own the decisions.
#BugBounty #CyberSecurity