<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: denial-of-service</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/denial-of-service.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2025-06-16T19:13:48+00:00</updated><author><name>Simon Willison</name></author><entry><title>Cloudflare Project Galileo</title><link href="https://simonwillison.net/2025/Jun/16/cloudflare-project-galileo/#atom-tag" rel="alternate"/><published>2025-06-16T19:13:48+00:00</published><updated>2025-06-16T19:13:48+00:00</updated><id>https://simonwillison.net/2025/Jun/16/cloudflare-project-galileo/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.cloudflare.com/galileo/"&gt;Cloudflare Project Galileo&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I only just heard about this Cloudflare initiative, though it's been around for more than a decade:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you are an organization working in human rights, civil society, journalism, or democracy, you can apply for Project Galileo to get free cyber security protection from Cloudflare.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's effectively free denial-of-service protection for vulnerable targets in the civil rights public interest groups.&lt;/p&gt;
&lt;p&gt;Last week they published &lt;a href="https://blog.cloudflare.com/celebrating-11-years-of-project-galileo-global-impact/"&gt;Celebrating 11 years of Project Galileo’s global impact&lt;/a&gt; with some noteworthy numbers:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Journalists and news organizations experienced the highest volume of attacks, with over 97 billion requests blocked as potential threats across 315 different organizations. [...]&lt;/p&gt;
&lt;p&gt;Cloudflare onboarded the &lt;a href="https://investigatebel.org/en"&gt;Belarusian Investigative Center&lt;/a&gt;, an independent journalism organization, on September 27, 2024, while it was already under attack. A major application-layer DDoS attack followed on September 28, generating over 28 billion requests in a single day.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/journalism"&gt;journalism&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cloudflare"&gt;cloudflare&lt;/a&gt;&lt;/p&gt;



</summary><category term="denial-of-service"/><category term="journalism"/><category term="security"/><category term="cloudflare"/></entry><entry><title>A warning about tiktoken, BPE, and OpenAI models</title><link href="https://simonwillison.net/2024/Nov/21/a-warning-about-tiktoken/#atom-tag" rel="alternate"/><published>2024-11-21T06:13:51+00:00</published><updated>2024-11-21T06:13:51+00:00</updated><id>https://simonwillison.net/2024/Nov/21/a-warning-about-tiktoken/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://macwright.com/2024/11/20/tokenization-bpe-warning.html"&gt;A warning about tiktoken, BPE, and OpenAI models&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Tom MacWright warns that OpenAI's &lt;a href="https://github.com/openai/tiktoken"&gt;tiktoken Python library&lt;/a&gt; has a surprising performance profile: it's superlinear with the length of input, meaning someone could potentially denial-of-service you by sending you a 100,000 character string if you're passing that directly to &lt;code&gt;tiktoken.encode()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;There's an &lt;a href="https://github.com/openai/tiktoken/issues/195"&gt;open issue&lt;/a&gt; about this (now over a year old), so for safety today it's best to truncate on characters before attempting to count or truncate using &lt;code&gt;tiktoken&lt;/code&gt;.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tom-macwright"&gt;tom-macwright&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;&lt;/p&gt;



</summary><category term="denial-of-service"/><category term="python"/><category term="security"/><category term="tom-macwright"/><category term="openai"/></entry><entry><title>Application-Layer DDoS Attack Protection with HAProxy</title><link href="https://simonwillison.net/2018/Nov/9/haproxy/#atom-tag" rel="alternate"/><published>2018-11-09T18:29:53+00:00</published><updated>2018-11-09T18:29:53+00:00</updated><id>https://simonwillison.net/2018/Nov/9/haproxy/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.haproxy.com/blog/application-layer-ddos-attack-protection-with-haproxy/"&gt;Application-Layer DDoS Attack Protection with HAProxy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Thorough.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=18415532"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/haproxy"&gt;haproxy&lt;/a&gt;&lt;/p&gt;



</summary><category term="denial-of-service"/><category term="haproxy"/></entry><entry><title>The Mirai Botnet Was Part of a College Student Minecraft Scheme</title><link href="https://simonwillison.net/2017/Dec/15/mirai-minecraft/#atom-tag" rel="alternate"/><published>2017-12-15T03:18:52+00:00</published><updated>2017-12-15T03:18:52+00:00</updated><id>https://simonwillison.net/2017/Dec/15/mirai-minecraft/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.wired.com/story/mirai-botnet-minecraft-scam-brought-down-the-internet/"&gt;The Mirai Botnet Was Part of a College Student Minecraft Scheme&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Fascinating story about last year’s Mirai botnet, which was originally developed to help corner the Minecraft server market.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/minecraft"&gt;minecraft&lt;/a&gt;&lt;/p&gt;



</summary><category term="denial-of-service"/><category term="security"/><category term="minecraft"/></entry><entry><title>Django security updates released</title><link href="https://simonwillison.net/2009/Oct/10/django/#atom-tag" rel="alternate"/><published>2009-10-10T00:24:59+00:00</published><updated>2009-10-10T00:24:59+00:00</updated><id>https://simonwillison.net/2009/Oct/10/django/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.djangoproject.com/weblog/2009/oct/09/security/"&gt;Django security updates released&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A potential denial of service vulnerability has been discovered in the regular expressions used by Django form library’s EmailField and URLField—a malicious input could trigger a pathological performance. Patches (and patched releases) for Django 1.1 and Django 1.0 have been published.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/regular-expressions"&gt;regular-expressions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;&lt;/p&gt;



</summary><category term="denial-of-service"/><category term="django"/><category term="python"/><category term="regular-expressions"/><category term="security"/></entry><entry><title>DoS vulnerability in REXML</title><link href="https://simonwillison.net/2008/Aug/23/dos/#atom-tag" rel="alternate"/><published>2008-08-23T11:11:13+00:00</published><updated>2008-08-23T11:11:13+00:00</updated><id>https://simonwillison.net/2008/Aug/23/dos/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/"&gt;DoS vulnerability in REXML&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Ruby’s REXML library is susceptible to the “billion laughs” denial of service attack where recursively nested entities expand a single entitity reference to a billion characters (kind of like the exploding zip file attack). Rails applications that process user-supplied XML should apply the monkey-patch ASAP; a proper gem update is forthcoming.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/billionlaughs"&gt;billionlaughs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rexml"&gt;rexml&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ruby"&gt;ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xml"&gt;xml&lt;/a&gt;&lt;/p&gt;



</summary><category term="billionlaughs"/><category term="denial-of-service"/><category term="rails"/><category term="rexml"/><category term="ruby"/><category term="security"/><category term="xml"/></entry><entry><title>Django security fix released</title><link href="https://simonwillison.net/2007/Oct/26/django/#atom-tag" rel="alternate"/><published>2007-10-26T21:47:44+00:00</published><updated>2007-10-26T21:47:44+00:00</updated><id>https://simonwillison.net/2007/Oct/26/django/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.djangoproject.com/weblog/2007/oct/26/security-fix/"&gt;Django security fix released&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Django’s internationalisation system has a denial of service hole in it; you’re vulnerable if you are using the i18n middleware. Fixes have been made available for trunk, 0.96, 0.95 and 0.91.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/i18n"&gt;i18n&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vulnerability"&gt;vulnerability&lt;/a&gt;&lt;/p&gt;



</summary><category term="denial-of-service"/><category term="django"/><category term="i18n"/><category term="python"/><category term="security"/><category term="vulnerability"/></entry><entry><title>Defending web applications against dictionary attacks</title><link href="https://simonwillison.net/2004/Jan/22/defendingWebApplications/#atom-tag" rel="alternate"/><published>2004-01-22T01:02:07+00:00</published><updated>2004-01-22T01:02:07+00:00</updated><id>https://simonwillison.net/2004/Jan/22/defendingWebApplications/#atom-tag</id><summary type="html">
    &lt;p&gt;Over at Reflective Surface, Ronaldo M. Ferraz &lt;a href="http://www.reflectivesurface.com/weblog/archives/2004/01/21/security_vs_usability" title="Security vs. usability"&gt;discusses&lt;/a&gt; the usability of an authentication system that locks down an account for a certain period of time after three failed login attempts. Ronaldo sees this as a trade off between usability and security, but I see it more as an added security issue in that it allows malicious third parties to lock other user's accounts armed only with their username.&lt;/p&gt;

&lt;p&gt;The problem then is how best to defend web applications against brute force password guessing attacks without enabling denial of service attacks at the same time. The largest risk is from automated scripts that try every possible password until they get in. Identifying these attacks should be trivial - a real user could potentially fail a dozen or so times, but would be unlikely to try hundreds of combinations in quick succession. Assuming a malicious cracking attempt has been identified, what steps should a system take to foil the attack while still allowing the real user to access the site?&lt;/p&gt;

&lt;p&gt;I can think of a few options, none of which seem like the ideal solution:&lt;/p&gt;

&lt;ol&gt;
 &lt;li&gt;Ban login requests from the attacker's &lt;acronym title="Internet Protocol"&gt;IP&lt;/acronym&gt; address. This introduces the usual problems with &lt;acronym title="Internet Protocol"&gt;IP&lt;/acronym&gt; banning, namely the risk of banning a whole bunch of people indiscriminately but leaving the attacker free to skip the ban using open web proxies.&lt;/li&gt;
 &lt;li&gt;Lock the user's account and email them a warning of the attack and a special key needed to unlock the account again. This relies on the user having access to their email account when they next have a need to access the system. It also assumes that the user's email account is secure, but since both the user's password and the secret unlocking key will be required to access the system email security is of less importance (the user's password is not sent with the unlock key).&lt;/li&gt;
 &lt;li&gt;Send an automated alert to a system administrator so they can analyze the situation in real time and take any necessary action. This relies on administrators being available 24/7 - hardly a safe assumption for most systems.&lt;/li&gt;
 &lt;li&gt;After a certain number of failed attempts, challenge the user to "prove their humanity" with one of those obscured-text-as-image things. This comes with accessibility issues which have as yet been unresolved.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If anyone has any better solutions, please leave a comment.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="denial-of-service"/><category term="security"/></entry><entry><title>Contribute hammering FTP servers?</title><link href="https://simonwillison.net/2003/Nov/17/contributeProblem/#atom-tag" rel="alternate"/><published>2003-11-17T23:34:25+00:00</published><updated>2003-11-17T23:34:25+00:00</updated><id>https://simonwillison.net/2003/Nov/17/contributeProblem/#atom-tag</id><summary type="html">
    &lt;p&gt;We're having a problem at work with &lt;a href="http://www.macromedia.com/software/contribute/"&gt;Macromedia Contribute&lt;/a&gt;. We host sites for a number of local companies, and one of them wants to use Contribute to update its site. The problem is that whenever Contribute tries to connect to our &lt;acronym title="File Transfer Protocol"&gt;FTP&lt;/acronym&gt; server, it opens up 30 simultaneous connections, effectively running a denial of service that prevents other clients from logging in during peak times. I've searched the 'net and haven't found any references to this problem; does anyone know anything about the issue? We're running ProFTPD 1.2.9 and the client is using Macromedia Contribute 2.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="denial-of-service"/></entry><entry><title>Fighting Filters and DDoS</title><link href="https://simonwillison.net/2003/Sep/2/fightingFilters/#atom-tag" rel="alternate"/><published>2003-09-02T00:55:15+00:00</published><updated>2003-09-02T00:55:15+00:00</updated><id>https://simonwillison.net/2003/Sep/2/fightingFilters/#atom-tag</id><summary type="html">
    &lt;p&gt;Paul Graham's essays on fighting spam are generally excellent; it was Paul who sparked the recent flurry of activity surrounding Bayesian statistical filters and inspired the creation of some of the best tools for fighting spam yet. Paul's latest suggestion, &lt;a href="http://www.paulgraham.com/ffb.html"&gt;Filters that fight back&lt;/a&gt;, seems to me to miss the mark in a &lt;em&gt;big&lt;/em&gt; way. Paul suggests email servers should "follow" links in any email received. This would turn the tables on spam, as suddenly sending out a million spams would result in a million useless hits to the site being promoted, quickly brining it to its knees. It's a great concept, until some malicious script kiddie realises that they've been handed a tool to run massive distributed denial-of-service attacks on any domain they care to target. Not to mention that such a feature would make many legitimate mass email tools prohibitively expensive to run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; It turns out that this issue has already been discussed in the &lt;a href="http://www.paulgraham.com/ffbfaq.html"&gt;FAQ&lt;/a&gt; attached to the essay. The suggested solution is to use a blacklist, with servers only hitting sites that are linked to from an email &lt;em&gt;and&lt;/em&gt; listed on the blacklist.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/denial-of-service"&gt;denial-of-service&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/paul-graham"&gt;paul-graham&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/spam"&gt;spam&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="denial-of-service"/><category term="paul-graham"/><category term="spam"/></entry></feed>