Skip to content

Commit 4b9c683

Browse files
committed
initial draft of CVE-2023-44487 blog post
Signed-off-by: William Morgan <william@buoyant.io>
1 parent 347e48b commit 4b9c683

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
title: 'How Linkerd responded to CVE-2023-44487, the HTTP/2 DDOS vulnerability, six months ago'
3+
author: 'william'
4+
date: 2023-10-11T00:00:00+00:00
5+
thumbnail: /images/djim-loic-ft0-Xu4nTvA-unsplash.jpg
6+
draft: false
7+
featured: false
8+
slug: linkerd-cve-2023-44487
9+
tags: [Linkerd]
10+
---
11+
12+
![A fast-moving block](/images/djim-loic-ft0-Xu4nTvA-unsplash.jpg)
13+
14+
Yesterday, [CVE-2023-44487](https://nvd.nist.gov/vuln/detail/CVE-2023-44487), a
15+
DDOS vulnerability in many HTTP/2 implementations, was disclosed. This was a
16+
very interesting attack and there have been several great writeups on how it
17+
works—see Cloudflare's [HTTP/2 Rapid Reset: deconstructing the record-breaking
18+
attack](https://blog.cloudflare.com/technical-breakdown-http2-rapid-reset-ddos-attack/)
19+
and Google's [How it works: The novel HTTP/2 ‘Rapid Reset’ DDoS
20+
attack](https://cloud.google.com/blog/products/identity-security/how-it-works-the-novel-http2-rapid-reset-ddos-attack)
21+
for many details of how this attack works and the consequences.
22+
23+
We're happy to report that due to Linkerd's internal security policies and the
24+
security-awareness and rapid response of the Rust community, all recent versions
25+
of Linkerd are resilient to this class of DDOS attack. (In fact, Linkerd can
26+
actually help users who have vulnerable ingress proxies—simple mesh them with
27+
Linkerd and have it handle HTTP/2 traffic.)
28+
29+
Versions of Linkerd that are resilient to CVE-2023-44487 include:
30+
31+
* All versions of Linkerd 2.14.x
32+
* Linkerd 2.13.1 and all later minor versions of Linkerd 2.13
33+
* Linkerd 2.12.5 and all later minor versions of Linkerd 2.12
34+
35+
Astute Linkerd adopters will realize that these versions are all as of April
36+
2023, six months ago. This is thanks to our rigorous vulnerability mitigation
37+
procedures, and to the security-mindedness and fast response of the Rust
38+
community.
39+
40+
Let's see just how this feat happened.
41+
42+
## Linkerd is a security-first project
43+
44+
It's no understatement to say that Linkerd treats security as a critical
45+
requirement. Organizations around the world rely on Linkerd for everything from
46+
protecting sensitive customer medical and financial data, to scheduling COVID
47+
tests, to building 911 call centers. For some people, Linkerd is quite literally
48+
a life-or-death project.
49+
50+
Part of that approach is the choice of technologies like Rust, of course, which
51+
allow us to avoid an entire class of buffer overflow exploits and other
52+
vulnerabilities that are endemic to languages like C and C++.
53+
54+
But another, just as important part is simply how seriously the project takes
55+
potential security vulnerabilities. Tracing the path to resolution for
56+
CVE-2023-44487 is a great example of that. Here's how it happened:
57+
58+
This issue was first tracked as a vulnerability in the Rust community as
59+
[RUSTSEC-2023-0034](https://rustsec.org/advisories/RUSTSEC-2023-0034.html) on
60+
April 14, 2023. At that point it had actually already been fixed in h2, the
61+
underlying library that Linkerd uses to parse HTTP/2 requests, as a change that
62+
had gone out [on April 12th, two days
63+
earlier](https://github.com/hyperium/h2/pull/668).
64+
65+
The fix was published in [h2
66+
v0.3.17](https://rustsec.org/advisories/RUSTSEC-2023-0034.html). Linkerd
67+
automatically pulled in that dependency [on April
68+
13th](https://github.com/linkerd/linkerd2-proxy/commit/67306bc7ba19286352762362e4e1876ce5924442)
69+
via [GitHub's Dependabot](https://github.com/dependabot), the automated
70+
dependency tool that Linkerd uses to ensure it stays up-to-date with critical
71+
dependencies, where it was published as [proxy release
72+
v2.198.1](https://github.com/linkerd/linkerd2-proxy/releases/tag/release%2Fv2.198.1).
73+
74+
On April 13th, the proxy version [was pulled into the main Linkerd
75+
repo](https://github.com/linkerd/linkerd2/commit/19a404fd196e251e969ac6c4a552a3c7af698dc5).
76+
On April 14th, we pushed it to [Linkerd
77+
2.13.1](https://github.com/linkerd/linkerd2/releases/tag/stable-2.13.1)—two days
78+
after the underlying fix in h2, and the same day it was recognized as an
79+
vulnerability in the Rust ecosystem. The fix also went out on
80+
[edge-23.4.2](https://github.com/linkerd/linkerd2/releases/tag/edge-23.4.2) on
81+
April 21st, and from there it was in all future and stable releases.
82+
83+
In short: two days after the fix was made in the underlying Rust HTTP/2 library,
84+
it was already in the hands of Linkerd users as a stable release, and all
85+
Linkerd releases since April have been protected against this vulnerability.
86+
While this vulnerability is making the news this week, Linkerd adopters have
87+
been protected for almost 6 months.
88+
89+
## Linkerd is for everyone
90+
91+
Linkerd is a graduated project of the [Cloud Native Computing
92+
Foundation](https://cncf.io/). Linkerd is [committed to open
93+
governance.](/2019/10/03/linkerds-commitment-to-open-governance/) If you have
94+
feature requests, questions, or comments, we'd love to have you join our
95+
rapidly-growing community! Linkerd is hosted on
96+
[GitHub](https://github.com/linkerd/), and we have a thriving community on
97+
[Slack](https://slack.linkerd.io/), [Twitter](https://twitter.com/linkerd), and
98+
the [mailing lists](/community/get-involved/). Come and join the fun!
99+
100+
(Photo by [Djim
101+
Loic](https://unsplash.com/@loic?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash)
102+
on
103+
[Unsplash](https://unsplash.com/photos/ft0-Xu4nTvA?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash).
104+
Loading

0 commit comments

Comments
 (0)