/[secure-testing]/doc/narrative_introduction
ViewVC logotype

Contents of /doc/narrative_introduction

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12563 - (hide annotations) (download)
Tue Aug 11 18:04:38 2009 UTC (3 years, 9 months ago) by nion
File size: 20943 byte(s)
add note about removed tag
1 micah 2985 A Narrative Introduction to the Testing Security Tracker
2    
3    
4     About
5     -----
6    
7 nion 6527 Everything that Testing Security does is publicly available, as in
8 micah 2985 "Debian doesn't hide problems" available.
9    
10     The best thing about our tracking 'system' is that it is very basic.
11     There is no horrible overhead of web-based ticket/issue trackers, its
12     just a subversion repository and some text files that we
13     collaboratively edit and then some scripts to parse these files and
14     generate useful reports available online. Everything is designed to be
15 tedp-guest 6022 very simple to use, transparent and easy to see what other people are
16 micah 2985 working on so you can work on other things.
17    
18     Why are these issues disclosed to the public?
19    
20     The way we look at it is that 99% of all vulnerabilities are already
21     public, and 1% are vendor-sec/embargoed issues.
22    
23     Stable security deals with embargoed/vendor-sec issues, we don't, we
24     deal with issues that have already been assigned CVE numbers (although
25     we often times request these assignments), have been posted to common
26     security mailing lists, or are seen in commit logs of software that is
27     tracked (such as the Linux Kernel).
28    
29     It is our philosophy that if the Internet knows that there is a
30     vulnerability in something, then we better know about it and the
31     package maintainer needs to know about it and it needs to be fixed as
32     soon as possible. It doesn't make sense to hide issues that everyone
33     knows about already, in fact users have told us that they prefer to
34     know not only when a package they have installed is vulnerable (so
35     they can disable it or firewall it off, or patch it or whatever), but
36 tedp-guest 6022 to also know that Debian is working on a fix. Transparency is what our
37 nion 6527 users expect, and what they deserve. Tracking publicly known issues
38 micah 2985 openly (and the occasional unfortunate embargoed issue privately) is
39     good for the project as a whole, especially the public's perception of
40     the project.
41    
42 micah 3520 Gentle Introduction
43 micah 2985 --------------------
44    
45     This following will give you a basic walk-through of how the files are
46     structured and how we do our work tracking issues. There is much more
47     that can be documented, but it is difficult to get all the issues
48     notated and updated. It is easier to get a basic idea and then
49     extrapolate from there how to do the rest. Ok, thats a bad excuse, so
50     the full information should be filled in.
51    
52     The best way to understand is to check out our repository from
53     subversion so you have the files on your computer and can follow along
54     at home. To do this, you need an Alioth account, and then you just
55     need to do the following:
56    
57     svn co svn+ssh://svn.debian.org/svn/secure-testing
58    
59     This will check out our working repository into a directory called
60     secure-testing. Inside this directory are a number of subdirectories.
61     The data directory is where we do most of our work.
62    
63 jmm-guest 2991 If you don't need write access, you can of course check out our files
64     without an Alioth account as well:
65    
66     svn co svn://svn.debian.org/svn/secure-testing
67    
68 micah 2985 Automatic Issue Updates
69     -----------------------
70     Twice a day a cronjob runs that pulls down the latest full CVE lists
71 thijs 8409 from Mitre, this automatically gets checked into data/CVE/list, and
72     also syncs that file with other lists like data/DSA/list and
73     data/DTSA/list.
74    
75     We get notified via either email
76 micah 2985 (http://lists.alioth.debian.org/mailman/listinfo/secure-testing-commits)
77     of every SVN commit, by RSS feed
78     (http://svn.debian.org/wsvn/secure-testing/?op=rss&rev=0&sc=0&isdir=1)
79     or via the CIA bot on #debian-security on OFTC. For example, the bot
80     will say in the channel:
81    
82 thijs 8409 17:14 < CIA-1> joeyh * r2314 /data/CVE/list: automatic update
83 micah 2985
84     Most of our work is taking the new issues that Mitre releases and
85     processing them so that the tracking data is correct. Read on for how we
86     do this.
87    
88 neilm 5083 Processing TODO entries
89 micah 2985 -----------------------
90     The Mitre update typically manifests in new CVE entries. So what we do
91     is to update our svn repository and then edit data/CVE/list and look
92     for new TODO entries. These will often be in blocks of 10-50 or so,
93     depending on how many new issues they have assigned. Depending on how
94     you feel you will "claim" a block of say 10 new entries by
95     putting your name in the file at the beginning and the end of the new
96     TODO entries and then commit the repository. This looks like this:
97    
98     begin claimed by jmm
99     CVE-2005-4066 (Total Commander 6.53 uses weak encryption to store FTP
100     usernams and ...)
101     TODO: check
102     CVE-2005-4065 (SQL injection vulnerability in the search module in
103     Edgewall Trac ...)
104     TODO: check
105     CVE-2005-4030 (SQL injection vulnerability in Quicksilver Forums
106     before 1.5.1 allows ...)
107     TODO: check
108     end claimed by jmm
109    
110     Once these are checked-in, then others will not do work on these TODO
111     issues.
112    
113 nion 11854 IMPORTANT: make sure to read: http://lists.alioth.debian.org/pipermail/secure-testing-team/2009-May/002394.html
114    
115 micah 2985 Issues Not-For-Us (NFU)
116     -----------------------
117 thijs 6422 Processing your claimed entries is done by first seeing if the issue
118 micah 2985 is related to any software packaged in Debian, if it isn't a package
119 nion 10534 in Debian and has no ITP then you note that in the file. Another case
120     are meta packages that only provide a downloader (e.g. flashplugin-nonfree).
121     There is no way to mark such packages as we have no influence on the version
122     and technically the code is not present in Debian.
123 micah 2985
124 nion 10534 Example:
125    
126 micah 2985 CVE-2005-3018 (Apple Safari allows remote attackers to cause a denial of
127     service ...)
128     NOT-FOR-US: Safari
129    
130 stef-guest 8325 There is a tool that helps with sorting out all the NOT-FOR-US issues:
131     See "bin/check-new-issues -h". For the search functions in
132     check-new-issues to work, you need to have unstable in your
133     sources.list and have done "apt-get update" and "apt-file update".
134     Having libterm-readline-gnu-perl installed helps, too. Unfortunately,
135     check-new-issues does not yet support the "claimed by" tags mentioned above.
136    
137 nion 8327 Please also make sure to check the wnpp list for possible <itp> items and
138     the ftp-master removal list to see if the issue way maybe present in the past
139     but the package was removed
140    
141 jmm-guest 3029 Reserved entries
142     ----------------
143     Several security problems have coordinated dates of public disclosure,
144     i.e. a CVE identifier has been assigned to a problem, but it's not
145     public yet. Also, several vendors have a pool of CVE ids they can
146     assign to problems that are detected in their products. Such entries
147     are marked as RESERVED in the tracker:
148 micah 2985
149 jmm-guest 3029 CVE-2005-1432
150     RESERVED
151    
152     Rejected entries
153     ----------------
154     Sometimes there are CVE assignments that later turn out to be duplicates,
155     mistakes or non-issues. These items are reverted and turned into REJECTED
156     entries:
157    
158     CVE-2005-4129
159     REJECTED
160    
161 micah 2985 ITP packages
162     ------------
163     If it is a package that someone has filed an RFP or ITP for, then that
164     is also noted, so it can be tracked to make sure that the issue is
165     resolved before the package enters the archive:
166    
167     CVE-2004-2525 (Cross-site scripting (XSS) vulnerability in compat.php
168     in Serendipity ...)
169     - serendipity <itp> (bug #312413)
170    
171    
172     Packages in the archive
173     -----------------------
174 neilm 5083 If it is a package in Debian, look to see if the package is affected or
175     not (sometimes newer versions that have the fixes have already been
176     uploaded).
177 micah 2985
178     If the version has been fixed already, note the package name and the
179     Debian version that fixes it and assign a severity level to it, for
180     example:
181    
182     CVE-2005-2596 (User.php in Gallery, as used in Postnuke, allows users
183     with any Admin ...)
184     - gallery 1.5-2 (medium)
185    
186 neilm 5083 If it hasn't been fixed, we determine if there has been a bug filed
187     about the issue, and if not, file one and then note it in the list
188     (again with a severity level):
189 micah 2985
190     CVE-2005-3054 (fopen_wrappers.c in PHP 4.4.0, and possibly other
191     versions, does not ...)
192     - php4 <unfixed> (bug #353585; medium)
193     - php5 <unfixed> (bug #353585; medium)
194    
195 stef-guest 4001 Bug numbers can be added as in the example above. To avoid duplicate bugs,
196     "bug filed" can be added instead of "bug #123456" when the bug report has
197 gilbert-guest 11654 been sent but the bug number is not yet known (however, it is more
198     desirable to file the bug, wait for the BTS to assign a number, then update
199     the entry in the CVE list so that complete information is always available
200     in the tracker). The bug number is important because it makes it clear
201     that the maintainer has been contacted about the problem, and that they are
202     aware of their responsibility to work swiftly toward a fix. The bug
203     numbers are also used to add additional references for the overview page
204     and the Security Bug Tracker. They are parsed by a script that generates
205     user tags "tracked" for the user debian-security@lists.debian.org, which
206     enables BTS users to generate a query for all of the issues that are tagged
207     "security" but not yet added to the tracker:
208 jmm-guest 3039 http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=security;users=debian-security@lists.debian.org;exclude=tracked
209    
210 gilbert-guest 11654 Since CVEs often drop in bulk, submission of multiple CVEs in a single bug
211     report is permissable and encouraged. However, some maintainers have
212     indicated a preference for only one issue per bug report. The following
213     is a list of packages for which each CVE should be reported separately:
214     - php5
215    
216 thijs 8409 A special exception is made for kernel related issues. The kernel-sec
217     group will take care of them and file bugs if needed.
218 nion 6896
219 nion 8437 If you wan't to report a bug, bin/report-vuln might be helpful in creating
220     the bug report.
221    
222 jmm-guest 3029 If a vulnerability does not affect Debian, e.g. because the vulnerable
223     code is not contained, it is marked as <not-affected>:
224    
225     CVE-2004-2628 (Multiple directory traversal vulnerabilities in thttpd 2.07 beta 0.4, ...)
226     - thttpd <not-affected> (Windows-specific vulnerabilities)
227    
228     <not-affected> is also used if a vulnerability was fixed before a
229     package was uploaded into the Debian archive.
230    
231     Sometimes there are cases, where a vulnerability hasn't been fixed with
232     a code change, but simply by deciding that a package is that broken that
233     it needs to be removed from the archive entirely. This is tracked with
234     the <removed> tag:
235    
236     CVE-2005-1435 (Open WebMail (OWM) before 2.51 20050430 allows remote authenticated ...)
237     - openwebmail <removed>
238    
239 fw 5669 After a new Debian release, some packages vanish from the database,
240     and consistency checks might fail. In this case, a single <removed>
241     entry needs to be added to an input file, or the package name should
242     be included in the data/packages/removed-packages file.
243 jmm-guest 3029
244 nion 12563 Also note that it is sufficient to mark a package as removed in unstable.
245     The trackers is aware of which package is present in which distribution
246     and marks other distributions that still contain the package automagically
247     as unfixed.
248    
249 jmm-guest 2991 Severity levels
250     ---------------
251     These levels are mostly used to prioritize the order in which security
252     problems are resolved. Anyway, we have a rough overview on how you should
253 djoume-guest 5280 assess these levels.
254 jmm-guest 2991
255     unimportant: This problem does not affect the Debian binary package, e.g.
256 djoume-guest 5280 a vulnerable source file, which is not built, a vulnerable file
257     in doc/foo/examples/, PHP Safe mode bugs, path disclosure (doesn't
258     matter on Debian).
259     All "non-issues in practice" fall also into this category, like
260     issues only "exploitable" if the code in question is setuid root,
261     exploits which only work if someone already has administrative
262     privileges or similar.
263    
264 jmm-guest 2991 low : A security problem, which has only mild security implications
265 nion 7786 (local DoS, /tmp file races and so on).
266 djoume-guest 5280
267     medium : For anything which permits code execution after user interaction.
268     Local privilege escalation vulnerabilities are in this category as
269     well, or remote privilege escalation if it's constrained to the
270     application (i.e. no shell access to the underlying system, such
271     as simple cross-site scripting). Most remote DoS vulnerabilities
272     fall into this category, too.
273    
274 jmm-guest 2991 high : A typical, exploitable security problem, which you'll really
275 jmm-guest 3029 like to fix or at least implement a workaround. This could
276 jmm-guest 2991 be because the vulnerable code is very broadly used, because
277     an exploit is in the wild or because the attack vector is
278 djoume-guest 5280 very wide.
279     Should be put into that category anything that permits an attacker
280     to execute arbitrary code on the vulnerable system (with or
281     without root privileges) and high-impact denial-of-service bugs
282     (for instance, an IPv4 forwarding path vulnerability which
283     requires only very few packets to exploit).
284     Significant defects in security software can be rated "high" as
285     well (for instance, a vulnerability in a piece of cryptographic
286     software which flags forged digital signatures as genuine).
287 jmm-guest 2991
288 djoume-guest 5280
289     Certain packages may get higher or lower rating than usual, based on
290     their importance.
291    
292    
293 micah 2985 NOTE and TODO entries
294     ---------------------
295     There are many instances where more work has to be done to determine
296     if something is affected, and you might not be able to do this at the
297     time. These entries can have their TODO line changed to something
298     descriptive so that it is clear what remains to be done. For example:
299    
300     CVE-2005-3990 (Directory traversal vulnerability in FastJar 0.93
301     allows remote ...)
302     TODO: check, whether fastjar from the gcc source packages is affected
303    
304     It is also useful to add information to issues as you find it, so that
305     when others go to look at an issue and want to know why you marked it
306     as you did, or need a reference, it will be there. The more
307     information left, the better. For example, the following entry lets
308     you know that CVE-2005-3258 doesn't affect the squid that we have
309     because the issue was introduced in a patch that was never applied to
310     the Debian package:
311    
312     CVE-2005-3258 (The rfc1738_do_escape function in ftp.c for Squid 2.5
313     STABLE11 and ...)
314     - squid <not-affected> (bug #334882; medium)
315     NOTE: Bug was introduced in a patch to squid-2.5.STABLE10,
316     NOTE: this patch was never applied to the Debian package.
317    
318 fw 11279 CVE assignments
319     ---------------
320     Debian can only assign CVE names from its own pool for issues which
321     are not public. To request a CVE from the Debian pool, write to
322     <security@debian.org> and include a description which follows CVE
323 fw 11280 conventions. To request a CVE for public issues, write to Mitre and
324 fw 11279 possibly to the moderated oss-security list. In the meantime, you can
325     add an entry of the form
326    
327     CVE-2009-XXXX [optipng array overflow]
328     - optipng 0.6.2.1-1 (low)
329     NOTE: http://secunia.com/advisories/34035/
330    
331     in the data/CVE/list file. It is desirable to include references
332     which uniquely identify the issue, such as a permanent link to an
333     entry in the upstream bug tracker, or a bug in the Debian BTS. If the
334     issue is likely present in unstable, a bug should be filed to help the
335     maintainer to track it.
336    
337     Lack of CVE entries should not block advisory publication which are
338     otherwise ready, but we should strieve to release fully
339     cross-referenced advisories nevertheless.
340    
341 jmm-guest 3027 Distribution tags
342     -----------------
343     Our data is primarily targeted at sid, as we track the version that
344     a certain issue was fixed in sid. The Security Tracker web site (see
345     below) derives information about the applicability of a vulnerability
346     to stable and oldstable from the list of DSAs issued by the security
347     team and the fact that a source package is part of a release.
348     Distribution tags can be used to denote information about a vulnerability
349     for the version of a package in a specific release. An example:
350 micah 2985
351 jmm-guest 3027 CVE-2005-3974 (Drupal 4.5.0 through 4.5.5 and 4.6.0 through 4.6.3, when running on ...)
352     - drupal 4.5.6-1 (low)
353     [sarge] - drupal <not-affected> (Only vulnerable if running PHP 5)
354    
355     Drupal has been fixed since 4.5.6, however Drupal from Sarge still isn't
356     vulnerable as the vulnerability is only effective when run under PHP 5,
357     which isn't part of Sarge.
358    
359 micah 2985 Generated Reports
360     -----------------
361     All of this tracking information gets automatically parsed and
362     compared against madison to determine what has been fixed and what is
363 joeyh 4589 still waiting, this results in this website:
364 micah 2985
365 joeyh 4589 http://security-tracker.debian.net/
366 micah 2985
367 joeyh 4589 It incorporates package lists and parses distribution lists and can
368     thus be used to
369     - Present the security history of a package
370     - Provide overviews of vulnerable packages in stable, testing, sid and
371     oldstable (it still has some false positives, wrt packages in
372     stable that are present in stable, but not vulnerable, but these
373     will be ironed out soon). The oldstable data is likely inaccurate.
374     - Generate a list of packages that are subject to security problems, but
375     stuck in testing migration due to problems with the dependency chain
376     and thus candidates for a DTSA
377 tedp-guest 6022 - Generate a list of TODO issues that need to be addressed
378 joeyh 4589 - Generate a list of packages that will enter Debian soon and need to
379     be checked for security problems
380     - Generate a list of provisional IDs that need to be turned into proper
381     CVE entries
382     - Show some potential problems in the data pool (e.g. misspelled package
383     names not found in the packages list, or potentially missing epochs)
384 micah 2985
385 joeyh 4589 For every security problem it displays
386     - The CVE information
387     - A severity assessment by NVD
388     - Cross references to DTSAs, DSAs and bugs in the BTS
389     - The status of a security problem in stable, oldstable, testing and sid
390     - Additional notes from our tracker
391 micah 2985
392 jmm-guest 3030 The DSA list
393     ------------
394     We maintain a list of all DSA advisories issued by the stable security
395     team. This information is used to derive information about the state
396     of security problems for the stable and oldstable distribution. An
397     entry for a DSA looks like this:
398    
399     [21 Nov 2005] DSA-903-1 unzip - race condition
400     {CVE-2005-2475}
401     [woody] - unzip 5.50-1woody4
402     [sarge] - unzip 5.52-1sarge2
403     NOTE: fixed in testing at time of DSA
404    
405 micah 3614 The first line tracks the date, when a DSA was issued, the DSA
406     identifier, the affected source package and the type of vulnerability.
407     The second line performs a cross-reference to the entry in CVE/list
408     that maintains the state of the vulnerability in sid. Every entry that
409     is added like this to DSA/list is parsed by a script and automatically
410     added to CVE/list. The next lines contain the fixes for stable and
411     optionally oldstable, addressed with distribution tags. You may add
412     NOTE: entries freely, we use a NOTE entry for statistical purposes
413     that tracks, when a fix has reached testing relative to the time when
414     it hit stable.
415 jmm-guest 3030
416 micah 3615 There is no need to add anything to CVE/list for a DSA, the DSA
417     cross-reference will be added automatically by the cron job. However,
418     you do need to add [sarge] or [woody] entries to CVE/list when there
419 micah 3614 is a 'no-dsa' or 'not-affected' condition.
420    
421 fw 3107 The bin/dsa2list script can be used to generate a template for a new
422 thijs 8409 DSA entry once the official DSA is published on debian-security-announce.
423     You should not blindly trust the script output and double-check it, though.
424 fw 3107
425 nion 6899 Checking your changes
426     ---------------------
427     Commits are checked for syntax errors before they are actually committed,
428     and you'll receive an error and your commit is aborted if it is in error.
429     To check your changes yourself beforehand, use "make check-syntax" from
430     the root of the svn directory.
431    
432 micah 2985 Following up on security issues
433     -------------------------------
434     By simply loading this page and doing a little gardening of the
435     different issues many things can be done. One thing is that you can
436     read all the bug reports of each issue and see if new information has
437     been added to the end that might provide updated or changed
438     information (such as if an issue has been closed, or a version of the
439     package has been uploaded that contains the fix). It is also useful to
440     follow-up on the issues to prod the maintainer to deal with the issue,
441     which they may have forgotten about.
442    
443    
444 jmm-guest 12004 Tracking of security bugs in the BTS and linking them to a user tag by CVE
445     --------------------------------------------------------------------------
446    
447     There's an automated tagging of security-related bugs to CVE IDs through
448     the user tag security for the user debian-security@lists.debian.org
449    
450     All bugs added to the tracker are automatically tagged. You can use
451     the search
452     http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=security;users=debian-security@lists.debian.org;exclude=tracked
453     to find all bugs not yet present in the tracker.
454    
455     All bug numbers added to the tracked are automatically associated
456     to the relevant user tag.
457    
458     If you checked an issue which doesn't need to be added to the tracked
459     (e.g. because it's not security-relevant or otherwise bogus you can either
460     remove the security tag from the bugs or sent a mail to control@bugs.debian.org
461     with the following content:
462    
463 derevko-guest 12337 user debian-security@lists.debian.org
464 jmm-guest 12004 usertag $BUGNUM + tracked
465    
466 micah 2985 IRC Channel
467     -----------
468     We hang-out on #debian-security on OFTC, stop by the IRC channel if
469     you'd like, also we can add you to the alioth project so you have svn
470     write permission and you can test drive it on the testing issues for
471     however long you like to get an idea or feel comfortable (and hey it
472     helps!)
473    
474    
475     TODO:
476     document DTSAs
477     document tsck
478 jmm-guest 3032 document tracked tag

  ViewVC Help
Powered by ViewVC 1.1.5