ClaudeBot spoofing is being used to mask mass vulnerability scans
A surge in malicious traffic is hitting servers right now, and the attackers are using a clever trick: they're spoofing their User-Agent strings to look like legitimate AI crawlers, specifically ClaudeBot. If you're managing a web server or a cloud environment, you might see a spike in "AI traffic" in your logs, but the behavior isn't typical of a LLM agent indexing a page for training. Instead, these requests are probing for open ports and outdated software versions.
The goal here is simple. Most sysadmins are currently loosening their firewall rules or adding exceptions for AI bots to ensure their content is discoverable by the latest models. Attackers know this. By mimicking ClaudeBot, they can slip past basic filters that would normally flag a high-frequency scanner.
How to tell if your ClaudeBot traffic is fake
Real AI crawlers generally follow a predictable pattern. They hit the homepage, follow links, and respect robots.txt. Vulnerability scanners, however, go straight for the "expensive" or sensitive endpoints. If you see "ClaudeBot" requesting /phpmyadmin, /.env, or /wp-admin at a rate of 50 requests per second, it's not an AI—it's a script.
To verify if the traffic is actually coming from Anthropic, you should perform a reverse DNS lookup. A legitimate ClaudeBot request will resolve back to a domain owned by Anthropic. If the IP resolves to a random VPS provider in a region where you have no business, it's a spoof.
A practical tutorial for filtering fake bots
If you want to stop these scans without blocking actual AI agents, you can't rely on the User-Agent alone. You need a more robust AI workflow for your security layer. Here is a basic approach using Nginx to flag suspicious bot behavior.
1. Create a map to identify the claimed bot:
map $http_user_agent $is_claude {
default 0;
"~*ClaudeBot" 1;
}
2. Set up a rate limit specifically for these agents to prevent them from hammering your API:
limit_req_zone $binary_remote_addr zone=bot_limit:10m rate=1r/s;
server {
location / {
if ($is_claude) {
limit_req zone=bot_limit burst=5 nodelay;
}
try_files $uri $uri/ /index.php?$query_string;
}
}
3. Use a script to cross-reference the IP with known Anthropic IP ranges. Since the IP lists change, you should automate this check via a cron job that updates your firewall rules.
For those implementing a more advanced deployment, integrating a WAF (Web Application Firewall) that supports behavioral analysis is the real-world solution. A legitimate bot doesn't try to perform SQL injection on your login page. By combining User-Agent verification with path-based anomaly detection, you can maintain the visibility you want for LLM agents while shutting out the noise of mass scans.
All Replies (10)
Want a live back-and-forth? Join the global AI chat room — login to talk.
Blocking VPS providers usually clears the noise. Has anyone tried decompiling the app to verify the source?
This is stressful. Does anyone have a guide for setting up a secondary non-Cloudflare layer for redundancy?
Worried about Cloudflare execution limits under heavy load. Does anyone have actual data on the filtering rates?
So annoying. How many different headers have you seen these bots use to bypass your VPS filters?
This sounds like a total nightmare. Which specific vulnerability scans are they masking with the spoofing?
Seems pointless to fake a bot when blocks are happening. Is there a specific tool they're using to spoof?
Terrifying thought. How many KYC-based systems are already tracking our every click and movement?
So annoying. Which Chrome version is throwing these pixel shifts for you?
The digital masquerading is getting wild. Is there a decentralized proof-of-humanity tool that actually works?
Frustrated by these scans. Is there a specific filter that blocks the spoofing without killing legitimate traffic?