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

Contents of /doc/narrative_introduction

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6899 - (hide annotations) (download)
Wed Oct 10 15:26:53 2007 UTC (5 years, 8 months ago) by nion
File size: 17099 byte(s)
readded checking your changes
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     from Mitre, this automatically gets checked into data/CVE/list. We get
72     notified via either email
73     (http://lists.alioth.debian.org/mailman/listinfo/secure-testing-commits)
74     of every SVN commit, by RSS feed
75     (http://svn.debian.org/wsvn/secure-testing/?op=rss&rev=0&sc=0&isdir=1)
76     or via the CIA bot on #debian-security on OFTC. For example, the bot
77     will say in the channel:
78    
79     17:14 < CIA-1> joeyh * r2314 /data/CVE/list: automatic CAN database update
80    
81     Most of our work is taking the new issues that Mitre releases and
82     processing them so that the tracking data is correct. Read on for how we
83     do this.
84    
85 neilm 5083 Processing TODO entries
86 micah 2985 -----------------------
87     The Mitre update typically manifests in new CVE entries. So what we do
88     is to update our svn repository and then edit data/CVE/list and look
89     for new TODO entries. These will often be in blocks of 10-50 or so,
90     depending on how many new issues they have assigned. Depending on how
91     you feel you will "claim" a block of say 10 new entries by
92     putting your name in the file at the beginning and the end of the new
93     TODO entries and then commit the repository. This looks like this:
94    
95     begin claimed by jmm
96     CVE-2005-4066 (Total Commander 6.53 uses weak encryption to store FTP
97     usernams and ...)
98     TODO: check
99     CVE-2005-4065 (SQL injection vulnerability in the search module in
100     Edgewall Trac ...)
101     TODO: check
102     CVE-2005-4030 (SQL injection vulnerability in Quicksilver Forums
103     before 1.5.1 allows ...)
104     TODO: check
105     end claimed by jmm
106    
107     Once these are checked-in, then others will not do work on these TODO
108     issues.
109    
110     Issues Not-For-Us (NFU)
111     -----------------------
112 thijs 6422 Processing your claimed entries is done by first seeing if the issue
113 micah 2985 is related to any software packaged in Debian, if it isn't a package
114     in Debian and has no ITP then you note that in the file, for example:
115    
116     CVE-2005-3018 (Apple Safari allows remote attackers to cause a denial of
117     service ...)
118     NOT-FOR-US: Safari
119    
120 jmm-guest 3029 Reserved entries
121     ----------------
122     Several security problems have coordinated dates of public disclosure,
123     i.e. a CVE identifier has been assigned to a problem, but it's not
124     public yet. Also, several vendors have a pool of CVE ids they can
125     assign to problems that are detected in their products. Such entries
126     are marked as RESERVED in the tracker:
127 micah 2985
128 jmm-guest 3029 CVE-2005-1432
129     RESERVED
130    
131     Rejected entries
132     ----------------
133     Sometimes there are CVE assignments that later turn out to be duplicates,
134     mistakes or non-issues. These items are reverted and turned into REJECTED
135     entries:
136    
137     CVE-2005-4129
138     REJECTED
139    
140 micah 2985 ITP packages
141     ------------
142     If it is a package that someone has filed an RFP or ITP for, then that
143     is also noted, so it can be tracked to make sure that the issue is
144     resolved before the package enters the archive:
145    
146     CVE-2004-2525 (Cross-site scripting (XSS) vulnerability in compat.php
147     in Serendipity ...)
148     - serendipity <itp> (bug #312413)
149    
150    
151     Packages in the archive
152     -----------------------
153 neilm 5083 If it is a package in Debian, look to see if the package is affected or
154     not (sometimes newer versions that have the fixes have already been
155     uploaded).
156 micah 2985
157     If the version has been fixed already, note the package name and the
158     Debian version that fixes it and assign a severity level to it, for
159     example:
160    
161     CVE-2005-2596 (User.php in Gallery, as used in Postnuke, allows users
162     with any Admin ...)
163     - gallery 1.5-2 (medium)
164    
165 neilm 5083 If it hasn't been fixed, we determine if there has been a bug filed
166     about the issue, and if not, file one and then note it in the list
167     (again with a severity level):
168 micah 2985
169     CVE-2005-3054 (fopen_wrappers.c in PHP 4.4.0, and possibly other
170     versions, does not ...)
171     - php4 <unfixed> (bug #353585; medium)
172     - php5 <unfixed> (bug #353585; medium)
173    
174 stef-guest 4001 Bug numbers can be added as in the example above. To avoid duplicate bugs,
175     "bug filed" can be added instead of "bug #123456" when the bug report has
176     been sent but the bug number is not yet known. The bug numbers are used
177     to add additional references for the overview page and the Security Bug
178     Tracker and they are parsed by a script that generates user tags "tracked"
179     for the user debian-security@lists.debian.org. This way you can generate
180     a BTS query for all issues in the BTS that are tagged "security" and are
181     not yet added to our tracker:
182 jmm-guest 3039 http://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=security;users=debian-security@lists.debian.org;exclude=tracked
183    
184 nion 6896 A special exception is made for kernel related issues. The kernel-sec group will take
185     care of them and file bugs if needed.
186    
187 jmm-guest 3029 If a vulnerability does not affect Debian, e.g. because the vulnerable
188     code is not contained, it is marked as <not-affected>:
189    
190     CVE-2004-2628 (Multiple directory traversal vulnerabilities in thttpd 2.07 beta 0.4, ...)
191     - thttpd <not-affected> (Windows-specific vulnerabilities)
192    
193     <not-affected> is also used if a vulnerability was fixed before a
194     package was uploaded into the Debian archive.
195    
196     Sometimes there are cases, where a vulnerability hasn't been fixed with
197     a code change, but simply by deciding that a package is that broken that
198     it needs to be removed from the archive entirely. This is tracked with
199     the <removed> tag:
200    
201     CVE-2005-1435 (Open WebMail (OWM) before 2.51 20050430 allows remote authenticated ...)
202     - openwebmail <removed>
203    
204 fw 5669 After a new Debian release, some packages vanish from the database,
205     and consistency checks might fail. In this case, a single <removed>
206     entry needs to be added to an input file, or the package name should
207     be included in the data/packages/removed-packages file.
208 jmm-guest 3029
209 jmm-guest 2991 Severity levels
210     ---------------
211     These levels are mostly used to prioritize the order in which security
212     problems are resolved. Anyway, we have a rough overview on how you should
213 djoume-guest 5280 assess these levels.
214 jmm-guest 2991
215     unimportant: This problem does not affect the Debian binary package, e.g.
216 djoume-guest 5280 a vulnerable source file, which is not built, a vulnerable file
217     in doc/foo/examples/, PHP Safe mode bugs, path disclosure (doesn't
218     matter on Debian).
219     All "non-issues in practice" fall also into this category, like
220     issues only "exploitable" if the code in question is setuid root,
221     exploits which only work if someone already has administrative
222     privileges or similar.
223    
224 jmm-guest 2991 low : A security problem, which has only mild security implications
225     and one would even be comfortable with if it continues to
226 djoume-guest 5280 be present (local DoS, /tmp file races and so on).
227    
228     medium : For anything which permits code execution after user interaction.
229     Local privilege escalation vulnerabilities are in this category as
230     well, or remote privilege escalation if it's constrained to the
231     application (i.e. no shell access to the underlying system, such
232     as simple cross-site scripting). Most remote DoS vulnerabilities
233     fall into this category, too.
234    
235 jmm-guest 2991 high : A typical, exploitable security problem, which you'll really
236 jmm-guest 3029 like to fix or at least implement a workaround. This could
237 jmm-guest 2991 be because the vulnerable code is very broadly used, because
238     an exploit is in the wild or because the attack vector is
239 djoume-guest 5280 very wide.
240     Should be put into that category anything that permits an attacker
241     to execute arbitrary code on the vulnerable system (with or
242     without root privileges) and high-impact denial-of-service bugs
243     (for instance, an IPv4 forwarding path vulnerability which
244     requires only very few packets to exploit).
245     Significant defects in security software can be rated "high" as
246     well (for instance, a vulnerability in a piece of cryptographic
247     software which flags forged digital signatures as genuine).
248 jmm-guest 2991
249 djoume-guest 5280
250     Certain packages may get higher or lower rating than usual, based on
251     their importance.
252    
253    
254 micah 2985 NOTE and TODO entries
255     ---------------------
256     There are many instances where more work has to be done to determine
257     if something is affected, and you might not be able to do this at the
258     time. These entries can have their TODO line changed to something
259     descriptive so that it is clear what remains to be done. For example:
260    
261     CVE-2005-3990 (Directory traversal vulnerability in FastJar 0.93
262     allows remote ...)
263     TODO: check, whether fastjar from the gcc source packages is affected
264    
265     It is also useful to add information to issues as you find it, so that
266     when others go to look at an issue and want to know why you marked it
267     as you did, or need a reference, it will be there. The more
268     information left, the better. For example, the following entry lets
269     you know that CVE-2005-3258 doesn't affect the squid that we have
270     because the issue was introduced in a patch that was never applied to
271     the Debian package:
272    
273     CVE-2005-3258 (The rfc1738_do_escape function in ftp.c for Squid 2.5
274     STABLE11 and ...)
275     - squid <not-affected> (bug #334882; medium)
276     NOTE: Bug was introduced in a patch to squid-2.5.STABLE10,
277     NOTE: this patch was never applied to the Debian package.
278    
279 jmm-guest 3027 Distribution tags
280     -----------------
281     Our data is primarily targeted at sid, as we track the version that
282     a certain issue was fixed in sid. The Security Tracker web site (see
283     below) derives information about the applicability of a vulnerability
284     to stable and oldstable from the list of DSAs issued by the security
285     team and the fact that a source package is part of a release.
286     Distribution tags can be used to denote information about a vulnerability
287     for the version of a package in a specific release. An example:
288 micah 2985
289 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 ...)
290     - drupal 4.5.6-1 (low)
291     [sarge] - drupal <not-affected> (Only vulnerable if running PHP 5)
292    
293     Drupal has been fixed since 4.5.6, however Drupal from Sarge still isn't
294     vulnerable as the vulnerability is only effective when run under PHP 5,
295     which isn't part of Sarge.
296    
297 micah 2985 Generated Reports
298     -----------------
299     All of this tracking information gets automatically parsed and
300     compared against madison to determine what has been fixed and what is
301 joeyh 4589 still waiting, this results in this website:
302 micah 2985
303 joeyh 4589 http://security-tracker.debian.net/
304 micah 2985
305 joeyh 4589 It incorporates package lists and parses distribution lists and can
306     thus be used to
307     - Present the security history of a package
308     - Provide overviews of vulnerable packages in stable, testing, sid and
309     oldstable (it still has some false positives, wrt packages in
310     stable that are present in stable, but not vulnerable, but these
311     will be ironed out soon). The oldstable data is likely inaccurate.
312     - Generate a list of packages that are subject to security problems, but
313     stuck in testing migration due to problems with the dependency chain
314     and thus candidates for a DTSA
315 tedp-guest 6022 - Generate a list of TODO issues that need to be addressed
316 joeyh 4589 - Generate a list of packages that will enter Debian soon and need to
317     be checked for security problems
318     - Generate a list of provisional IDs that need to be turned into proper
319     CVE entries
320     - Show some potential problems in the data pool (e.g. misspelled package
321     names not found in the packages list, or potentially missing epochs)
322 micah 2985
323 joeyh 4589 For every security problem it displays
324     - The CVE information
325     - A severity assessment by NVD
326     - Cross references to DTSAs, DSAs and bugs in the BTS
327     - The status of a security problem in stable, oldstable, testing and sid
328     - Additional notes from our tracker
329 micah 2985
330 jmm-guest 3030 The DSA list
331     ------------
332     We maintain a list of all DSA advisories issued by the stable security
333     team. This information is used to derive information about the state
334     of security problems for the stable and oldstable distribution. An
335     entry for a DSA looks like this:
336    
337     [21 Nov 2005] DSA-903-1 unzip - race condition
338     {CVE-2005-2475}
339     [woody] - unzip 5.50-1woody4
340     [sarge] - unzip 5.52-1sarge2
341     NOTE: fixed in testing at time of DSA
342    
343 micah 3614 The first line tracks the date, when a DSA was issued, the DSA
344     identifier, the affected source package and the type of vulnerability.
345     The second line performs a cross-reference to the entry in CVE/list
346     that maintains the state of the vulnerability in sid. Every entry that
347     is added like this to DSA/list is parsed by a script and automatically
348     added to CVE/list. The next lines contain the fixes for stable and
349     optionally oldstable, addressed with distribution tags. You may add
350     NOTE: entries freely, we use a NOTE entry for statistical purposes
351     that tracks, when a fix has reached testing relative to the time when
352     it hit stable.
353 jmm-guest 3030
354 micah 3615 There is no need to add anything to CVE/list for a DSA, the DSA
355     cross-reference will be added automatically by the cron job. However,
356     you do need to add [sarge] or [woody] entries to CVE/list when there
357 micah 3614 is a 'no-dsa' or 'not-affected' condition.
358    
359 fw 3107 The bin/dsa2list script can be used to generate a template for a new
360     DSA entry once the official DSA is published on the web. You should
361     not blindly trust the script output and double-check it, though.
362    
363 nion 6899 Checking your changes
364     ---------------------
365     Commits are checked for syntax errors before they are actually committed,
366     and you'll receive an error and your commit is aborted if it is in error.
367     To check your changes yourself beforehand, use "make check-syntax" from
368     the root of the svn directory.
369    
370 micah 2985 Following up on security issues
371     -------------------------------
372     By simply loading this page and doing a little gardening of the
373     different issues many things can be done. One thing is that you can
374     read all the bug reports of each issue and see if new information has
375     been added to the end that might provide updated or changed
376     information (such as if an issue has been closed, or a version of the
377     package has been uploaded that contains the fix). It is also useful to
378     follow-up on the issues to prod the maintainer to deal with the issue,
379     which they may have forgotten about.
380    
381    
382     IRC Channel
383     -----------
384     We hang-out on #debian-security on OFTC, stop by the IRC channel if
385     you'd like, also we can add you to the alioth project so you have svn
386     write permission and you can test drive it on the testing issues for
387     however long you like to get an idea or feel comfortable (and hey it
388     helps!)
389    
390    
391     TODO:
392     document DTSAs
393     document tsck
394 jmm-guest 3032 document CVE-XXXX
395     document tracked tag

  ViewVC Help
Powered by ViewVC 1.1.5