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

Contents of /doc/narrative_introduction

Parent Directory Parent Directory | Revision Log Revision Log


Revision 12570 - (hide annotations) (download)
Tue Aug 11 20:38:42 2009 UTC (3 years, 9 months ago) by gilbert-guest
File size: 20645 byte(s)
removing duplicated user tags discussion (there is now a section devoted to it)
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 gilbert-guest 12570 aware of their responsibility to work swiftly toward a fix.
203 jmm-guest 3039
204 gilbert-guest 11654 Since CVEs often drop in bulk, submission of multiple CVEs in a single bug
205     report is permissable and encouraged. However, some maintainers have
206     indicated a preference for only one issue per bug report. The following
207     is a list of packages for which each CVE should be reported separately:
208     - php5
209    
210 thijs 8409 A special exception is made for kernel related issues. The kernel-sec
211     group will take care of them and file bugs if needed.
212 nion 6896
213 nion 8437 If you wan't to report a bug, bin/report-vuln might be helpful in creating
214     the bug report.
215    
216 jmm-guest 3029 If a vulnerability does not affect Debian, e.g. because the vulnerable
217     code is not contained, it is marked as <not-affected>:
218    
219     CVE-2004-2628 (Multiple directory traversal vulnerabilities in thttpd 2.07 beta 0.4, ...)
220     - thttpd <not-affected> (Windows-specific vulnerabilities)
221    
222     <not-affected> is also used if a vulnerability was fixed before a
223     package was uploaded into the Debian archive.
224    
225     Sometimes there are cases, where a vulnerability hasn't been fixed with
226     a code change, but simply by deciding that a package is that broken that
227     it needs to be removed from the archive entirely. This is tracked with
228     the <removed> tag:
229    
230     CVE-2005-1435 (Open WebMail (OWM) before 2.51 20050430 allows remote authenticated ...)
231     - openwebmail <removed>
232    
233 fw 5669 After a new Debian release, some packages vanish from the database,
234     and consistency checks might fail. In this case, a single <removed>
235     entry needs to be added to an input file, or the package name should
236     be included in the data/packages/removed-packages file.
237 jmm-guest 3029
238 nion 12563 Also note that it is sufficient to mark a package as removed in unstable.
239 gilbert-guest 12564 The tracker is aware of which package is present in which distribution
240 nion 12563 and marks other distributions that still contain the package automagically
241 gilbert-guest 12565 as unfixed. For example, if libxml is in oldstable, but not stable or
242     unstable, then:
243 nion 12563
244 gilbert-guest 12564 - libxml <removed>
245    
246     will track oldstable as affected, but stable and unstable as not-affected.
247    
248 jmm-guest 2991 Severity levels
249     ---------------
250     These levels are mostly used to prioritize the order in which security
251     problems are resolved. Anyway, we have a rough overview on how you should
252 djoume-guest 5280 assess these levels.
253 jmm-guest 2991
254     unimportant: This problem does not affect the Debian binary package, e.g.
255 djoume-guest 5280 a vulnerable source file, which is not built, a vulnerable file
256     in doc/foo/examples/, PHP Safe mode bugs, path disclosure (doesn't
257     matter on Debian).
258     All "non-issues in practice" fall also into this category, like
259     issues only "exploitable" if the code in question is setuid root,
260     exploits which only work if someone already has administrative
261     privileges or similar.
262    
263 jmm-guest 2991 low : A security problem, which has only mild security implications
264 nion 7786 (local DoS, /tmp file races and so on).
265 djoume-guest 5280
266     medium : For anything which permits code execution after user interaction.
267     Local privilege escalation vulnerabilities are in this category as
268     well, or remote privilege escalation if it's constrained to the
269     application (i.e. no shell access to the underlying system, such
270     as simple cross-site scripting). Most remote DoS vulnerabilities
271     fall into this category, too.
272    
273 jmm-guest 2991 high : A typical, exploitable security problem, which you'll really
274 jmm-guest 3029 like to fix or at least implement a workaround. This could
275 jmm-guest 2991 be because the vulnerable code is very broadly used, because
276     an exploit is in the wild or because the attack vector is
277 djoume-guest 5280 very wide.
278     Should be put into that category anything that permits an attacker
279     to execute arbitrary code on the vulnerable system (with or
280     without root privileges) and high-impact denial-of-service bugs
281     (for instance, an IPv4 forwarding path vulnerability which
282     requires only very few packets to exploit).
283     Significant defects in security software can be rated "high" as
284     well (for instance, a vulnerability in a piece of cryptographic
285     software which flags forged digital signatures as genuine).
286 jmm-guest 2991
287 djoume-guest 5280
288     Certain packages may get higher or lower rating than usual, based on
289     their importance.
290    
291    
292 micah 2985 NOTE and TODO entries
293     ---------------------
294     There are many instances where more work has to be done to determine
295     if something is affected, and you might not be able to do this at the
296     time. These entries can have their TODO line changed to something
297     descriptive so that it is clear what remains to be done. For example:
298    
299     CVE-2005-3990 (Directory traversal vulnerability in FastJar 0.93
300     allows remote ...)
301     TODO: check, whether fastjar from the gcc source packages is affected
302    
303     It is also useful to add information to issues as you find it, so that
304     when others go to look at an issue and want to know why you marked it
305     as you did, or need a reference, it will be there. The more
306     information left, the better. For example, the following entry lets
307     you know that CVE-2005-3258 doesn't affect the squid that we have
308     because the issue was introduced in a patch that was never applied to
309     the Debian package:
310    
311     CVE-2005-3258 (The rfc1738_do_escape function in ftp.c for Squid 2.5
312     STABLE11 and ...)
313     - squid <not-affected> (bug #334882; medium)
314     NOTE: Bug was introduced in a patch to squid-2.5.STABLE10,
315     NOTE: this patch was never applied to the Debian package.
316    
317 fw 11279 CVE assignments
318     ---------------
319     Debian can only assign CVE names from its own pool for issues which
320     are not public. To request a CVE from the Debian pool, write to
321     <security@debian.org> and include a description which follows CVE
322 fw 11280 conventions. To request a CVE for public issues, write to Mitre and
323 fw 11279 possibly to the moderated oss-security list. In the meantime, you can
324     add an entry of the form
325    
326     CVE-2009-XXXX [optipng array overflow]
327     - optipng 0.6.2.1-1 (low)
328     NOTE: http://secunia.com/advisories/34035/
329    
330     in the data/CVE/list file. It is desirable to include references
331     which uniquely identify the issue, such as a permanent link to an
332     entry in the upstream bug tracker, or a bug in the Debian BTS. If the
333     issue is likely present in unstable, a bug should be filed to help the
334     maintainer to track it.
335    
336     Lack of CVE entries should not block advisory publication which are
337     otherwise ready, but we should strieve to release fully
338     cross-referenced advisories nevertheless.
339    
340 jmm-guest 3027 Distribution tags
341     -----------------
342     Our data is primarily targeted at sid, as we track the version that
343     a certain issue was fixed in sid. The Security Tracker web site (see
344     below) derives information about the applicability of a vulnerability
345     to stable and oldstable from the list of DSAs issued by the security
346     team and the fact that a source package is part of a release.
347     Distribution tags can be used to denote information about a vulnerability
348     for the version of a package in a specific release. An example:
349 micah 2985
350 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 ...)
351     - drupal 4.5.6-1 (low)
352     [sarge] - drupal <not-affected> (Only vulnerable if running PHP 5)
353    
354     Drupal has been fixed since 4.5.6, however Drupal from Sarge still isn't
355     vulnerable as the vulnerability is only effective when run under PHP 5,
356     which isn't part of Sarge.
357    
358 micah 2985 Generated Reports
359     -----------------
360     All of this tracking information gets automatically parsed and
361     compared against madison to determine what has been fixed and what is
362 joeyh 4589 still waiting, this results in this website:
363 micah 2985
364 joeyh 4589 http://security-tracker.debian.net/
365 micah 2985
366 joeyh 4589 It incorporates package lists and parses distribution lists and can
367     thus be used to
368     - Present the security history of a package
369     - Provide overviews of vulnerable packages in stable, testing, sid and
370     oldstable (it still has some false positives, wrt packages in
371     stable that are present in stable, but not vulnerable, but these
372     will be ironed out soon). The oldstable data is likely inaccurate.
373     - Generate a list of packages that are subject to security problems, but
374     stuck in testing migration due to problems with the dependency chain
375     and thus candidates for a DTSA
376 tedp-guest 6022 - Generate a list of TODO issues that need to be addressed
377 joeyh 4589 - Generate a list of packages that will enter Debian soon and need to
378     be checked for security problems
379     - Generate a list of provisional IDs that need to be turned into proper
380     CVE entries
381     - Show some potential problems in the data pool (e.g. misspelled package
382     names not found in the packages list, or potentially missing epochs)
383 micah 2985
384 joeyh 4589 For every security problem it displays
385     - The CVE information
386     - A severity assessment by NVD
387     - Cross references to DTSAs, DSAs and bugs in the BTS
388     - The status of a security problem in stable, oldstable, testing and sid
389     - Additional notes from our tracker
390 micah 2985
391 jmm-guest 3030 The DSA list
392     ------------
393     We maintain a list of all DSA advisories issued by the stable security
394     team. This information is used to derive information about the state
395     of security problems for the stable and oldstable distribution. An
396     entry for a DSA looks like this:
397    
398     [21 Nov 2005] DSA-903-1 unzip - race condition
399     {CVE-2005-2475}
400     [woody] - unzip 5.50-1woody4
401     [sarge] - unzip 5.52-1sarge2
402     NOTE: fixed in testing at time of DSA
403    
404 micah 3614 The first line tracks the date, when a DSA was issued, the DSA
405     identifier, the affected source package and the type of vulnerability.
406     The second line performs a cross-reference to the entry in CVE/list
407     that maintains the state of the vulnerability in sid. Every entry that
408     is added like this to DSA/list is parsed by a script and automatically
409     added to CVE/list. The next lines contain the fixes for stable and
410     optionally oldstable, addressed with distribution tags. You may add
411     NOTE: entries freely, we use a NOTE entry for statistical purposes
412     that tracks, when a fix has reached testing relative to the time when
413     it hit stable.
414 jmm-guest 3030
415 micah 3615 There is no need to add anything to CVE/list for a DSA, the DSA
416     cross-reference will be added automatically by the cron job. However,
417     you do need to add [sarge] or [woody] entries to CVE/list when there
418 micah 3614 is a 'no-dsa' or 'not-affected' condition.
419    
420 fw 3107 The bin/dsa2list script can be used to generate a template for a new
421 thijs 8409 DSA entry once the official DSA is published on debian-security-announce.
422     You should not blindly trust the script output and double-check it, though.
423 fw 3107
424 nion 6899 Checking your changes
425     ---------------------
426     Commits are checked for syntax errors before they are actually committed,
427     and you'll receive an error and your commit is aborted if it is in error.
428     To check your changes yourself beforehand, use "make check-syntax" from
429     the root of the svn directory.
430    
431 micah 2985 Following up on security issues
432     -------------------------------
433     By simply loading this page and doing a little gardening of the
434     different issues many things can be done. One thing is that you can
435     read all the bug reports of each issue and see if new information has
436     been added to the end that might provide updated or changed
437     information (such as if an issue has been closed, or a version of the
438     package has been uploaded that contains the fix). It is also useful to
439     follow-up on the issues to prod the maintainer to deal with the issue,
440     which they may have forgotten about.
441    
442    
443 jmm-guest 12004 Tracking of security bugs in the BTS and linking them to a user tag by CVE
444     --------------------------------------------------------------------------
445    
446     There's an automated tagging of security-related bugs to CVE IDs through
447     the user tag security for the user debian-security@lists.debian.org
448    
449     All bugs added to the tracker are automatically tagged. You can use
450     the search
451     http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=security;users=debian-security@lists.debian.org;exclude=tracked
452     to find all bugs not yet present in the tracker.
453    
454     All bug numbers added to the tracked are automatically associated
455     to the relevant user tag.
456    
457     If you checked an issue which doesn't need to be added to the tracked
458     (e.g. because it's not security-relevant or otherwise bogus you can either
459     remove the security tag from the bugs or sent a mail to control@bugs.debian.org
460     with the following content:
461    
462 derevko-guest 12337 user debian-security@lists.debian.org
463 jmm-guest 12004 usertag $BUGNUM + tracked
464    
465 micah 2985 IRC Channel
466     -----------
467     We hang-out on #debian-security on OFTC, stop by the IRC channel if
468     you'd like, also we can add you to the alioth project so you have svn
469     write permission and you can test drive it on the testing issues for
470     however long you like to get an idea or feel comfortable (and hey it
471     helps!)
472    
473    
474     TODO:
475     document DTSAs
476     document tsck
477 jmm-guest 3032 document tracked tag

  ViewVC Help
Powered by ViewVC 1.1.5