Gentoo Linux Vulnerability Treatment Policy
1.
Scope
Supported architectures
Gentoo Linux is offered on many different architectures. Some of these
architectures have more developers than others and, as such, are able to
respond to new security vulnerabilities more quickly. While the ultimate goal
of the Gentoo Security project is to ensure that all architectures receive
security fixes at the same time, we must also balance that against releasing
security fixes and GLSAs as quickly as possible so that the majority of our
users are informed and protected.
For this reason, the security team separates Gentoo architectures into two
groups, supported and unsupported:
-
Supported: these architectures must have a stable fix committed
before the GLSA can be released
-
Unsupported: these architectures will be notified of new
vulnerabilities (cc on relevant bugs), however, we will not wait for a stable
fix on these arches before issuing the GLSA and closing the bug
Here is the list of currently supported architectures:
| Supported architectures |
| x86 |
| ppc |
| sparc |
| amd64 |
| alpha |
| ppc64 |
| hppa |
All architectures are welcomed and encouraged to become a supported arch. There
are two straightforward criteria that need to be met in order to be officially
supported by the Gentoo Security project:
- Appoint a developer who is the primary point of contact for security
issues related to your arch: we will look to this person to be
responsible for ensuring that security bugs are adequately remediated on
their particular architecture
- Agree to adhere to the published timelines for testing and
marking packages as stable
Release Engineering
The Release Engineering ("releng") project appoints a developer to be the
primary point of contact for security issues.
Release Engineering informs the Gentoo Security Project when a first tree
snapshot is taken for media releases. Beginning with the first snapshot until
the official media release ("release preparation period"), Release Engineering
(the appointed security liaison in case of confidential issues) should be cc'd
on each security bug entering the stabilization phase.
Kernels
Currently kernels are not covered by the GLSA release process.
Vulnerabilities must still be reported and will be fixed, but
no GLSA will be issued when everything is solved.
Note:
This policy should be changed when new tools are added to cover
security vulnerabilities affecting the different kernel sources.
|
Non-stable packages
Sometimes a vulnerability is found in a package that is not part of the stable
trees. This is the case when the vulnerability is a security regression in a
newer (~ARCH) ebuild, but the older (stable) packages are not affected, or when
the package has never had any stable ebuilds in the tree.
In this case the vulnerability must still be reported and will be fixed, but
no GLSA will be issued when everything is solved.
Note:
This policy might be changed when our tools support more complex
upgrade paths and if a sufficient number of GLSA coordinators join
the security team.
|
2.
Vulnerability feed
Published vulnerabilities
Each vulnerability should initially be entered as a
Bugzilla entry with
product "Gentoo Security" and component "Vulnerabilities" (assigned to
security@gentoo.org).
Major security lists should have official scouts assigned to them which
should ensure that all vulnerabilities announced on these lists get a
security bugzilla entry.
Confidential vulnerabilities
Confidential vulnerabilities (for example coming from developer's direct
communication or restricted vendor-sec lists) should follow a specific
procedure. They should not appear as a public
bugzilla entry, but only in security-restricted media like a private
bugzilla section or the GLSAMaker tool. They should get
corrected using private communication channels between the GLSA coordinator
and the package maintainer.
Note:
Communication for confidential vulnerabilities should be properly encrypted.
They should be sent to specific security team members and encrypted with
their GPG key. The list of the security team members is available at
security.gentoo.org, their key
IDs can be looked up on the
Gentoo
Linux Developers List
and their keys can be retrieved from the
subkeys.pgp.net keyserver.
|
3.
Dispatch
Severity level
In order to seed the appropriate reaction times and escalation procedures, we
need to assign a severity level to each vulnerability. This severity
level must be based on how widespread the affected software is amongst Gentoo
users and depth of the vulnerability.
You can use the following two tables to help you assign the severity level:
| How widespread the package is |
Configurations affected |
|
| System package |
Default or specific |
A |
| Common package (supposed present on at least 1/20 Gentoo
installs) |
Default |
A |
|
Specific |
B |
| Marginal software (supposed present on less than 1/20 Gentoo
installs) |
Default |
B |
| |
Specific |
C |
| Package that never had an affected version stable |
Default or Specific |
~ |
| Evaluate the vulnerability type |
|
Corresponding GLSA severity |
| Complete remote system compromise: remote execution of arbitrary code
with root privileges |
0 |
high |
| Remote active compromise: direct remote execution of arbitrary code
with reduced or user rights on a server |
1 |
high |
| Local privilege escalation: flaw allowing root compromise when you
have local access |
1 |
high |
| Remote passive compromise: remote execution
of arbitrary code by enticing a user to visit a malicious server or using
malicious data |
2 |
normal |
| Global service compromise: denial of service, passwords or full
database leaks... |
3 |
normal |
| Others: cross-site-scripting, information leak... |
4 |
low |
Here is the table of the resulting severity levels. They should be set
to the bugzilla severity level of the same name:
| Severity level |
Corresponding evaluations |
Target delay |
GLSA |
| Blocker |
A0, B0 |
1 day |
yes |
| Critical |
A1, C0 |
3 days |
yes |
| Major |
A2, B1, C1 |
5 days |
yes |
| Normal |
A3, B2, C2 |
10 days |
yes |
| Minor |
A4, B3, B4, C3 |
20 days |
? |
| Trivial |
C4, ~0, ~1, ~2, ~3, ~4 |
40 days |
no |
Note:
The delay indicated in this table is what we want to be the maximum time
between the release of a fix by the upstream package developer and the release
of a stable ebuild and corresponding GLSA.
|
Security Bug Wrangler role
Someone should assume the responsibility of security bug
wrangler and do the following tasks as soon as a new vulnerability
enters Bugzilla:
- checking for duplicates: if the bug describes a vulnerability already
reported it should be resolved as DUPLICATE
- checking for wrong component: if the bug is not about a vulnerability
its component should be changed appropriately
- checking if the bug is really a vulnerability and that it affects a
Gentoo Linux package, otherwise resolve the bug as INVALID
During this phase it may be necessary to ask the reporter for details. The bug
remains with status NEW as long as necessary. When (if) the bug passes these
sanity tests, it should be accepted and the bug wrangler should do the
following:
- rename the bug so that it includes category/package-name at start
(for example: "net-mail/clamav: DoS using RAR files")
- evaluate and assign a severity level (see above)
- set the status to ASSIGNED
- seed the status whiteboard to the correct severity code and status
- optionally assign a GLSA coordinator for the bug, by adding the
coordinator name to the status whiteboard
Warning:
You should not change bug severity once it has been assigned. If you want to
increase developer awareness that a bug needs care, use the Priority field
instead.
|
Timeframe and backup procedures
This dispatch has to be done quickly after bug creation in order to seed
short delays for major vulnerabilities and to show appreciation to the bug
reporter. The target delay is 12 hours. The security bug wrangler has to
maintain a list of possible GLSA coordinators with availabilities and
preferred areas of expertise. In order to ensure permanent dispatch, the
security bug wrangler job should have appropriate back-ups.
4.
Bug correction and GLSA draft
GLSA Coordinator role
The GLSA coordinator has responsibility for the following tasks:
- determine what must be done in order to close the vulnerability (for
example identify the upstream version containing the fix)
- if no fix is available from upstream yet, ensure that the bug is correctly
reported to the upstream developer and set status whiteboard to
upstream
- if a fix is available, get the package maintainer involved to produce and
commit an ebuild containing the fix (package maintainer/herd should be
cc'd on the bug) and set status whiteboard to ebuild
- once an ebuild is committed, evaluate what keywords are needed for the fix
ebuild and get arch-specific teams to test and mark
the ebuild stable on their architectures (arch-teams should be cc'd on
the bug, as well as releng during release preparation) and set status
whiteboard to stable
- arch-maintainers should mark the ebuild stable if there is no regression
in the fix ebuild compared to the latest vulnerable version
- in parallel, writing a draft GLSA using the GLSAMaker tool
- when the corrective ebuild is ready for all supported archs, set the
status whiteboard to glsa
Note:
If the bug makes progress and the assigned GLSA coordinator does not react,
the other members of the security team can help keeping the bug rolling by
updating its status.
|
Timeframe and escalation procedures
In order to meet the target delay for vulnerability resolution, a number of
escalation procedures have been defined. These include:
- when a bug in a waiting state needs urgent care,
you should change the status whiteboard
entries to their "+" counterpart: upstream+, ebuild+,
stable+ and glsa+
- if no upstream fix is available (upstream+ status), a decision must
be taken on masking the
package: the security team can mask a package which is not depended on by
itself, but need a TLP manager approval before masking a package which is
not standalone
- if the maintainer/herd does not show up for producing the ebuild during 48
hours after summoning (ebuild+ status), the security team should
try to bump the ebuild by itself
- if testing and marking stable takes too much time (stable+ status),
the security team will shout on IRC channels and gentoo-dev list to get
more testers. It will either mark the ebuild stable by itself or, in the
event this cannot be done due to stability issues, mask it (see security
masking approval policy above)
- if the GLSA coordinator does not show up to draft a GLSA (glsa+
status), then another member of the security team should draft the GLSA
and submit it to peer review
Good practices for security bugs
Security bugs differ from other bugs, in that an easy and simple upgrade path
must be presented to users through the GLSA. Therefore package maintainers and
GLSA coordinators should follow these good practices:
- The ebuild including the security fix should have its own version number,
so that it gets picked up in the normal system upgrade process: use
rev-bumps if needed
- The ebuild including the security fix should have a higher version number
than any previously published version, so that an easy upgrade path can
be proposed to the user
- In case of a patch, it should only be applied to the more recent version,
there is no need to rev-bump all ebuilds with a patched version
- Vulnerable versions should be left in the tree until the bug enters the
stable status, in order to correctly evaluate what keywords
are needed for the fix version
Temporary GLSAs
If a blocker or critical or major vulnerability cannot
totally be corrected in the target delay
(for example a kernel vulnerability that has to be corrected on all sources),
an early warning GLSA should be written with workaround information
(for example: install these vanilla-sources, or here is the kernel patch to
apply to your sources). This GLSA will be replaced by the final GLSA when the
definitive correction is available.
If a common (type A or B) package is masked for security reasons, a temporary
GLSA should be issued to explain why the package is currently unavailable
and/or why people should uninstall the current version. This GLSA will be
replaced by the final GLSA when the fix becomes available and the package is
unmasked.
5.
GLSA publication process
Peer review
Once ready, a GLSA should be submitted to peer review. At least two members
of the security team must approve the draft GLSA. Once the draft passes the
peer review process, it should be assigned an official GLSA number.
GLSA release
Once the GLSA passes the peer review process (and after making sure the ebuild
has made its way into the stable tree), the GLSA coordinator should
commit the GLSA XML in the Gentoo CVS repository.
Once this is done, the GLSA will automatically appear on the
official GLSA index page and
RDF feed.
GLSA publication
The GLSA text version must be published by the GLSA coordinator to the
following media:
There should be one single email sent, with the following rules:
- The To: field must be set to gentoo-announce
- The Cc: filed must contain the other email addresses
- The From: and Return-Path: must be set to the GLSA
coordinator @gentoo.org address
- The Subject: field must be "[ GLSA XXXXYY-ZZ ] Your vulnerability
here"
- The body should only contain the text version of the GLSA
- The email must be signed by the GLSA coordinator GPG key
Note:
Developer key IDs can be found on the Gentoo Linux
Developer list. All the security team GPG keys are published on public
key servers, including (but not limited to)
subkeys.pgp.net.
|
Note:
To minimize errors in the publication process, the forum publication step is
handled by an automatic poster when it receives the announcement.
|
When the GLSA has been published the corresponding bugzilla bug should be
resolved as FIXED, with the GLSA number referenced in the comments section
of the bug.
GLSA errata
Sometimes an error will slip through the peer-review process and an incorrect
GLSA will be published to the world. Depending on the severity of the error(s),
the following policy for erratum should be applied:
| GLSA error type |
Erratum action |
| Typos: presentation, grammar or syntax errors |
Do nothing |
| Error in title: title is about another package or does not
describe the vulnerability correctly |
An erratum GLSA should be published, replacing the erroneous one |
| Error in description: the problem is not described correctly |
The GLSA XML should be corrected, no publication |
| Omission: GLSA is correct but incomplete, you also need to update
another package to get protection from that vulnerability |
A separate GLSA should be issued on the other vulnerable package |
| Error in affected/unaffected versions number, but people using stable
packages and applying GLSA instructions are protected anyway |
The GLSA XML should be corrected, no publication |
| Error in affected/unaffected versions number, people applying GLSA
instructions are not at all protected |
An erratum GLSA should be published, replacing the erroneous one |
The contents of this document are licensed under the Creative Commons -
Attribution / Share Alike license.
|