|
1 | 1 | ---
|
2 |
| -date: 2019-08-13T21:30:00.000Z |
| 2 | +date: 2019-08-15T22:43:22.000Z |
3 | 3 | category: vulnerability
|
4 | 4 | title: August 2019 Security Releases
|
5 | 5 | slug: august-2019-security-releases
|
6 | 6 | layout: blog-post.hbs
|
7 | 7 | author: Sam Roberts
|
8 | 8 | ---
|
9 | 9 |
|
10 |
| -# Summary |
11 |
| - |
12 |
| -The Node.js project will release new versions of all supported release lines |
13 |
| -on, or shortly after, Thursday, August 15th, 2019 UTC. These releases will |
14 |
| -incorporate security fixes to HTTP/2 Denial of Service vulnerabilities in |
15 |
| -Node.js, the highest severity of which is HIGH. |
16 |
| - |
17 |
| -The Denial of Service vulnerabilities to be fixed are common to a broad range |
18 |
| -of HTTP/2 implementations. Details about them were publicly disclosed on August |
19 |
| -13th, 2019. See |
| 10 | +Node.js, as well as many other implementations of HTTP/2, have been found |
| 11 | +vulnerable to Denial of Service attacks. See |
20 | 12 | https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-002.md
|
21 | 13 | for more information.
|
22 | 14 |
|
23 |
| -## Impact |
| 15 | +Updates are now available for all active Node.js release lines, except Linux |
| 16 | +ARMv6 builds for Node.js 8.x which are still building. |
| 17 | + |
| 18 | +We recommend that all Node.js users upgrade to a version listed below as soon |
| 19 | +as possible. |
| 20 | + |
| 21 | +## Downloads & release details |
| 22 | + |
| 23 | +Downloads are available for the following versions. Details of code changes can |
| 24 | +also be found on each release page. |
| 25 | + |
| 26 | +* Node.js 8.16.1: https://nodejs.org/dist/latest-v8.x/ |
| 27 | +* Node.js 10.16.3: https://nodejs.org/dist/latest-v10.x/ |
| 28 | +* Node.js 12.8.1: https://nodejs.org/dist/latest-v12.x |
24 | 29 |
|
25 |
| -Releases for all actively supported release lines (Node.js 8, 10, and 12) will |
26 |
| -be made available to fix the disclosed HTTP/2 vulnerabilities. |
| 30 | +## Vulnerabilities Fixed |
27 | 31 |
|
28 |
| -## Release timing |
| 32 | +***Impact***: All versions of Node.js 8 (LTS "Carbon"), Node.js 10 (LTS "Dubnium"), and Node.js 12 (Current) are vulnerable to the following: |
29 | 33 |
|
30 |
| -Releases will be available at, or shortly after, Thursday, August 15th, 2019 |
31 |
| -UTC, along with disclosure of the details for the flaws addressed in each |
32 |
| -release in order to allow for complete impact assessment by users. |
| 34 | +* __CVE-2019-9511 “Data Dribble”__: The attacker requests a large amount of |
| 35 | + data from a specified resource over multiple streams. They manipulate window |
| 36 | + size and stream priority to force the server to queue the data in 1-byte |
| 37 | + chunks. Depending on how efficiently this data is queued, this can consume |
| 38 | + excess CPU, memory, or both, potentially leading to a denial of service. |
| 39 | +* __CVE-2019-9512 “Ping Flood”__: The attacker sends continual pings to an |
| 40 | + HTTP/2 peer, causing the peer to build an internal queue of responses. |
| 41 | + Depending on how efficiently this data is queued, this can consume excess |
| 42 | + CPU, memory, or both, potentially leading to a denial of service. |
| 43 | +* __CVE-2019-9513 “Resource Loop”__: The attacker creates multiple request |
| 44 | + streams and continually shuffles the priority of the streams in a way that |
| 45 | + causes substantial churn to the priority tree. This can consume excess CPU, |
| 46 | + potentially leading to a denial of service. |
| 47 | +* __CVE-2019-9514 “Reset Flood”__: The attacker opens a number of streams and |
| 48 | + sends an invalid request over each stream that should solicit a stream of |
| 49 | + RST\_STREAM frames from the peer. Depending on how the peer queues the |
| 50 | + RST\_STREAM frames, this can consume excess memory, CPU, or both, potentially |
| 51 | + leading to a denial of service. |
| 52 | +* __CVE-2019-9515 “Settings Flood”__: The attacker sends a stream of SETTINGS |
| 53 | + frames to the peer. Since the RFC requires that the peer reply with one |
| 54 | + acknowledgement per SETTINGS frame, an empty SETTINGS frame is almost |
| 55 | + equivalent in behavior to a ping. Depending on how efficiently this data is |
| 56 | + queued, this can consume excess CPU, memory, or both, potentially leading to |
| 57 | + a denial of service. |
| 58 | +* __CVE-2019-9516 “0-Length Headers Leak”__: The attacker sends a stream of |
| 59 | + headers with a 0-length header name and 0-length header value, optionally |
| 60 | + Huffman encoded into 1-byte or greater headers. Some implementations allocate |
| 61 | + memory for these headers and keep the allocation alive until the session |
| 62 | + dies. This can consume excess memory, potentially leading to a denial of |
| 63 | + service. |
| 64 | +* __CVE-2019-9517 “Internal Data Buffering”__: The attacker opens the HTTP/2 |
| 65 | + window so the peer can send without constraint; however, they leave the TCP |
| 66 | + window closed so the peer cannot actually write (many of) the bytes on the |
| 67 | + wire. The attacker then sends a stream of requests for a large response |
| 68 | + object. Depending on how the servers queue the responses, this can consume |
| 69 | + excess memory, CPU, or both, potentially leading to a denial of service. |
| 70 | +* __CVE-2019-9518 “Empty Frames Flood”__: The attacker sends a stream of frames |
| 71 | + with an empty payload and without the end-of-stream flag. These frames can be |
| 72 | + DATA, HEADERS, CONTINUATION and/or PUSH\_PROMISE. The peer spends time |
| 73 | + processing each frame disproportionate to attack bandwidth. This can consume |
| 74 | + excess CPU, potentially leading to a denial of service. (Discovered by Piotr |
| 75 | + Sikora of Google) |
33 | 76 |
|
34 |
| -## Contact and future updates |
| 77 | +### Contact and future updates |
35 | 78 |
|
36 | 79 | The current Node.js security policy and information about how to report a
|
37 | 80 | vulnerability can be found at https://nodejs.org/en/security/.
|
|
0 commit comments