Could you please clarify exactly how they "downplayed the issue"? The impact is an exercise in statistics. They seem to have compiled what logging / statistics they could, then accurately advised everyone of what they found.
They turned around an initial fix on the issue in hours, no?
As for web caches, what are they supposed to do, other than plead for their owners to delete them ASAP?
As for Ragel, not sure how the initial version of the response read, but the one I read clearly pointed out it was a Cloudflare issue. And given the semantics of the issue, I'd cut them some slack if they misidentified the cause the day after they'd been scrambling to fix this.
I'd be interested who you do trust to properly handle a security incident if you're looking for better than this. IBM? Microsoft? Apple? Just try and get a 24-hour fix out of them.
> https://bugs.chromium.org/p/project-zero/issues/detail?id=11...
According to the Google team the draft Cloudflare sent "contains an excellent postmortem, but severely downplays the risk to customers." There was also a ton of conversation here on this site about the fact that they were downplaying the severity.
As for web caches- look, it's great that they were proactively working to get things cleaned up. However, despite the fact that Google called in engineers who cancelled their weekend plans to deal with this, and despite the fact that Google is the one who did Cloudflare's job by finding the exploit, this is what Matt Prince had to say-
> I agree it's troubling that Google is taking so long. We were working with them to coordinate disclosure after their caches were cleared. While I am thankful to the Project Zero team for their informing us of the issue quickly, I'm troubled that they went ahead with disclosure before Google crawl team could complete the refresh of their own cache. We have continued to escalate this within Google to get the crawl team to prioritize the clearing of their caches as that is the highest priority remaining remediation step.
He essentially through the Google team under the bus. It was completely unprofessional.
Finally, the Ragel team themselves had to reach out to Cloudflare to get them to change the language on their announcement because it appeared to many people that the Cloudflare discussion was shifting the blame to Ragel. If you really need more information about this just read the OP this thread is part of.
Here's a diff of the original and what's there now.
https://gist.github.com/anonymous/e8f78f537551465e54a9781d62...
To me, it doesn't look like any attempt to change history. They did try to make it more clear that it was their issue, and not Ragel's. But, any initial appearance of that seems accidental.
If I was Cloudflare, and someone had made me aware of this bug, I'd be griping as loudly as possible to get remaining caches cleared ASAP. It's all they really can do.
The fact that Bing had unlocated cached documents doesn't impact on Google search being quick or not to clear their own caches.
Did Cloudflare cause all this? Yes. Are they working in the interest of their customers to gripe at remaining cachers to refresh their caches? Also yes. Is there something else they could do now that we're here? I can't think of anything more effective.
I originally wrote:
To modify the page, we need to read and parse the HTML to find
elements that need changing. Since the very early days of Cloudflare,
we’ve used a parser written using Ragel. A single .rl file contains
an HTML parser used for all the on-the-fly HTML modifications that
Cloudflare performs.
About a year ago we decided that the Ragel parser had become too
complex to maintain and we started to write a new parser, named cf-html,
to replace it. This streaming parser works correctly with HTML5 and
is much, much faster and easier to maintain.
We first used this new parser for the Automatic HTTP Rewrites feature
and have been slowly migrating functionality that uses the old Ragel
parser to cf-html.
Both cf-html and the old Ragel parser are implemented as NGINX modules
compiled into our NGINX builds. These NGINX filter modules parse buffers
(blocks of memory) containing HTML responses, make modifications as
necessary, and pass the buffers onto the next filter.
It turned out that the underlying bug that caused the memory leak had
been present in our Ragel-based parser for many years but no memory was
leaked because of the way the internal NGINX buffers were used.
Introducing cf-html subtly changed the buffering which enabled the
leakage even though there were no problems in cf-html itself.
The Ragel author contact me on Twitter and I changed the text to (stars around changes): To modify the page, we need to read and parse the HTML to find
elements that need changing. Since the very early days of Cloudflare,
we’ve used a parser written using Ragel. A single .rl file contains
an HTML parser used for all the on-the-fly HTML modifications that
Cloudflare performs.
About a year ago we decided that the *Ragel-based* parser had become too
complex to maintain and we started to write a new parser, named cf-html,
to replace it. This streaming parser works correctly with HTML5 and
is much, much faster and easier to maintain.
We first used this new parser for the Automatic HTTP Rewrites feature
and have been slowly migrating functionality that uses the old Ragel
parser to cf-html.
Both cf-html and the old Ragel parser are implemented as NGINX modules
compiled into our NGINX builds. These NGINX filter modules parse buffers
(blocks of memory) containing HTML responses, make modifications as
necessary, and pass the buffers onto the next filter.
*For the avoidance of doubt: the bug is not in Ragel itself. It is in
Cloudflare's use of Ragel. This is our bug and not the fault of Ragel.*
It turned out that the underlying bug that caused the memory leak had
been present in our Ragel-based parser for many years but no memory was
leaked because of the way the internal NGINX buffers were used.
Introducing cf-html subtly changed the buffering which enabled the
leakage even though there were no problems in cf-html itself.
https://twitter.com/jgrahamc/status/835056414062161920