|
| 1 | +:orphan: |
| 2 | + |
| 3 | +DoS via Unlimited Stream Insertion |
| 4 | +================================== |
| 5 | + |
| 6 | +Hyper Project security advisory, August 4th 2016. |
| 7 | + |
| 8 | +Vulnerability |
| 9 | +------------- |
| 10 | + |
| 11 | +A HTTP/2 implementation built using the priority library could be targetted by |
| 12 | +a malicious peer by having that peer assign priority information for every |
| 13 | +possible HTTP/2 stream ID. The priority tree would happily continue to store |
| 14 | +the priority information for each stream, and would therefore allocate |
| 15 | +unbounded amounts of memory. Attempting to actually *use* a tree like this |
| 16 | +would also cause extremely high CPU usage to maintain the tree. |
| 17 | + |
| 18 | +We are not aware of any active exploits of this vulnerability, but as this |
| 19 | +class of attack was publicly described in `this report`_, users should assume |
| 20 | +that they are at imminent risk of this kind of attack. |
| 21 | + |
| 22 | +Info |
| 23 | +---- |
| 24 | + |
| 25 | +This issue has been given the name CVE-2016-6580. |
| 26 | + |
| 27 | +Affected Versions |
| 28 | +----------------- |
| 29 | + |
| 30 | +This issue affects all versions of the priority library prior to 1.2.0. |
| 31 | + |
| 32 | +The Solution |
| 33 | +------------ |
| 34 | + |
| 35 | +In version 1.2.0, the priority library limits the maximum number of streams |
| 36 | +that can be inserted into the tree. By default this limit is 1000, but it is |
| 37 | +user-configurable. |
| 38 | + |
| 39 | +If it is necessary to backport a patch, the patch can be found in |
| 40 | +`this GitHub pull request`_. |
| 41 | + |
| 42 | +Recommendations |
| 43 | +--------------- |
| 44 | + |
| 45 | +We suggest you take the following actions immediately, in order of preference: |
| 46 | + |
| 47 | +1. Update priority to 1.2.0 immediately, and consider revising the maximum |
| 48 | + number of streams downward to a suitable value for your application. |
| 49 | +2. Backport the patch made available on GitHub. |
| 50 | +3. Manually enforce a limit on the number of priority settings you'll allow at |
| 51 | + once. |
| 52 | + |
| 53 | +Timeline |
| 54 | +-------- |
| 55 | + |
| 56 | +This class of vulnerability was publicly reported in `this report`_ on the |
| 57 | +3rd of August. We requested a CVE ID from Mitre the same day. |
| 58 | + |
| 59 | +Priority 1.2.0 was released on the 4th of August, at the same time as the |
| 60 | +publication of this advisory. |
| 61 | + |
| 62 | + |
| 63 | +.. _this report: http://www.imperva.com/docs/Imperva_HII_HTTP2.pdf |
| 64 | +.. _this GitHub pull request: https://github.com/python-hyper/priority/pull/23 |
0 commit comments