For most of the history of the web, being small was a defense. Attacks cost human time, and human time went to targets worth it. If your company had eleven employees and a login page, nobody bothered.
That’s over.
Here’s what changed. Finding a vulnerability in a web application used to be skilled work: read the responses, notice the odd header, guess the endpoint, try the thing, read the error, try again. Hours for a competent person, days for a good result. An AI agent runs the same loop tirelessly, for cents, and it doesn’t need to be good at it. It needs to be adequate and patient, and it can be adequate and patient against ten thousand hosts at once.
So the question an attacker asks has changed. It used to be is this target worth my time? Now it’s what’s next on the list? Every host with a public address is on the list. Yours included. Nothing about you put you there, and nothing about you can take you off.
What the agent actually does is not dramatic. It reads your front-end bundle and extracts every API route it mentions. It calls each one without credentials and notes which ones answer. It tries the ID in the URL plus one. It looks in the bundle for strings that look like keys. It reads your error messages. It follows your login redirect and sees what happens if it changes a parameter. Each step is something a bored intern could do. The difference is that it does all of them, in order, without getting bored — and then it does the next host.
The individual findings are usually small. The danger is that agents chain. A leaked key is a low-severity finding. An endpoint list is informational. A weak authorization check is a medium. An agent that has all three has your database.
If it’s already happened, you would probably not know. Most small companies don’t have the logging to see it, and an attacker with write access to your data can tidy up after themselves.
What to do today
- Look at your own front-end bundle the way an attacker would. Search it for anything that looks like a secret. Search it for API paths and ask whether each one checks who’s calling.
- Pick three endpoints and call them without a session. Then call them with someone else’s ID.
- Check whether your login flow does anything sensible if a redirect parameter is tampered with.
- Find out whether you’d know if any of this happened. If the answer is no, that’s the first fix.
This is the checklist an agent runs. Running it yourself first is the entire idea.
Four ordinary mistakes that opened a database to the internet