Nginx advisories with not vulnerable versions inside the vulnerable range

Maxim Dounin mdounin at mdounin.ru
Tue Dec 28 14:27:41 UTC 2021


Hello!

On Tue, Dec 28, 2021 at 02:14:07PM +0530, Hritik Vijay wrote:

> I'm trying to parse the advisories page present at
> https://nginx.org/en/security_advisories.html. So far, I've understood
> the even-odd minor versioning scheme for branches (thanks to Maxim at https://marc.info/?l=nginx&m=163174223924231&w=2).
> There still exists some advisories that are hard to understand. 
> For example:
> 	Excessive CPU usage in HTTP/2 with small window updates
> 	Severity: medium
> 	Advisory
> 	CVE-2019-9511
> 	Not vulnerable: 1.17.3+, 1.16.1+
> 	Vulnerable: 1.9.5-1.17.2
> 
> Here, the vulnerable versions are through 1.9.5 to 1.17.2, even though
> the versions 1.16.1+ are marked not vulnerable.
> Looking at the odd numbers in the vulnerable range, I could infer that
> perhaps the vulnerability spanned through the mainline branch only. Even
> then it raises some questions. Following are some interpretations and
> the problems with them:

[...]

> Interpretation:
> 	All versions from 1.9.5 to 1.17.2 are vulnerable, regardless of the
> 	branch, except the ones mentioned in the not vulnerable range
> Problem:
> 	If the not vulnerable range is to be interpreted as an "exception"
> 	to the vulnerable range then there's no point in mentioning 1.17.3+
> 	as it already lies outside the vulnerable range.

That's the correct interpretation.  While explicitly mentioning 
1.17.3+ as not vulnerable is not strictly needed, it is just 
duplicate information to simplify reading.

> The last interpretation sounds most reasonable to me with the following
> changes:
> 	All versions from 1.9.5 to 1.17.2 are vulnerable, regardless of the
> 	branch. It was fixed in the only provided mainline branch that is
> 	1.17.3+, although some fixes were provided to the stable branches as
> 	well (here only one stable branch, that is 1.16.1+).
> 
> This will require a hard requirement for the following:
> Not Vulnerable: 
> 	One mainline version with plus sign,
> 	One or many stable branch version with plus sign
> Vulnerable:
> 	A range independent of branching scheme (mainline and stable)
> 
> Although, this sounds right and suits for most of the advisories present
> on the page, it doesn't handle:
> 	Buffer underflow vulnerability
> 	Severity: major
> 	VU#180065  CVE-2009-2629
> 	Not vulnerable: 0.8.15+, 0.7.62+, 0.6.39+, 0.5.38+
> 	Vulnerable: 0.1.0-0.8.14
> 
> As there are more than one mainline branch - 0.7.62+ and 0.5.38+ - in
> the "Not Vulnerable" range, where there should only be one. Once a
> vulnerability is fixed in a lower mainline version (0.5.38) it must have
> been fixed in later mainline and stable versions, which doesn't seem to
> be the case here (as 0.7.62+ and 0.6.39+ are mentioned explicitly).

Your interpretation of "mainline" and "stable" is incorrect here.  
The odd/even numbering scheme is in use only starting with nginx 
1.0.x.  In previous versions, a branch was simply declared stable 
at some point.  For example, 0.5.x branch was mainline (current) 
till 0.5.25, and then 0.6.0 version was released, and 0.5.x branch 
was declared stable[1].  Similarly, 0.6.x branch was mainline till 
0.6.31, and was declared stable after 0.7.0 release.

For additional details about all existing branches check the 
download page (http://nginx.org/en/download.html) and relevant 
CHANGES and CHANGES-X.Y files.

Note that it is generally trivial to find out if a version is 
vulnerable or not from the information about a vulnerability, 
without any knowledge about nginx branches.  That is:

- Check if the version is in "Vulnerable" range.  If it's not, the 
  version is not vulnerable.

- If it is, check if the branch is explicitly listed in the "Not 
  vulnerable".  If it's not, the version is vulnerable.  If it 
  is, check the minor number: if it's greater or equal to the 
  version listed as not vulnerable, the version is not vulnerable, 
  else the version is vulnerable.

Hope this helps.

[1] http://mailman.nginx.org/pipermail/nginx/2007-June/001080.html

-- 
Maxim Dounin
http://mdounin.ru/


More information about the nginx mailing list