Modify documentation for listrules, and add CWE mapping info
This commit is contained in:
parent
742cb6db13
commit
a7a7bb349b
74
flawfinder.1
74
flawfinder.1
|
@ -167,13 +167,14 @@ it doesn't have a usual C/C++ filename extension); thus you can force
|
||||||
flawfinder to examine any specific files you desire.
|
flawfinder to examine any specific files you desire.
|
||||||
While searching directories recursively, flawfinder only opens and
|
While searching directories recursively, flawfinder only opens and
|
||||||
examines regular files that have C/C++ filename extensions.
|
examines regular files that have C/C++ filename extensions.
|
||||||
Flawfinder presumes that, files are C/C++ files if they have the extensions
|
Flawfinder presumes that files are C/C++ files if they have the extensions
|
||||||
".c", ".h", ".ec", ".ecp", ".pgc", ".C", ".cpp",
|
".c", ".h", ".ec", ".ecp", ".pgc", ".C", ".cpp",
|
||||||
".CPP", ".cxx", ".cc", ".CC", ".pcc", ".hpp", or ".H".
|
".CPP", ".cxx", ".cc", ".CC", ".pcc", ".hpp", or ".H".
|
||||||
The filename ``\-'' means the standard input.
|
The filename ``\-'' means the standard input.
|
||||||
To prevent security problems,
|
To prevent security problems,
|
||||||
special files (such as device special files and named pipes) are
|
special files (such as device special files and named pipes) are
|
||||||
always skipped, and by default symbolic links are skipped,
|
always skipped, and by default symbolic links are skipped
|
||||||
|
(the \-\-allowlink option follows symbolic links).
|
||||||
.PP
|
.PP
|
||||||
After the list of hits is a brief summary of the results
|
After the list of hits is a brief summary of the results
|
||||||
(use -D to remove this information).
|
(use -D to remove this information).
|
||||||
|
@ -301,9 +302,14 @@ Show usage (help) information.
|
||||||
|
|
||||||
.TP 12
|
.TP 12
|
||||||
.BI \-\-listrules
|
.BI \-\-listrules
|
||||||
List the terms that trigger further examination and their default risk level.
|
List the terms that trigger further examination, their default risk level,
|
||||||
Note that risk levels for code may be different than the default,
|
and the default warning (including the CWE identifier(s), if applicable),
|
||||||
|
all tab-separated.
|
||||||
|
Note that the reported risk level and warning
|
||||||
|
for some specific code may be different than the default,
|
||||||
depending on how the term is used.
|
depending on how the term is used.
|
||||||
|
Note that version 1.29 changed the separator from spaces to tabs, and
|
||||||
|
added the default warning field.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.BI \-\-version
|
.BI \-\-version
|
||||||
|
@ -747,6 +753,16 @@ CWE-829: Inclusion of Functionality from Untrusted Control Sphere*
|
||||||
|
|
||||||
.PP
|
.PP
|
||||||
CWE version 2.7 (released June 23, 2014) was used for the mapping.
|
CWE version 2.7 (released June 23, 2014) was used for the mapping.
|
||||||
|
The current CWE mappings select the most specific CWE the tool can determine.
|
||||||
|
In theory, most security elements could theoretically be mapped to
|
||||||
|
CWE-676 (Use of Potentially Dangerous Function), but such a mapping would
|
||||||
|
not be useful. Thus, more specific mappings were preferred where one
|
||||||
|
could be found. Flawfinder is a lexical analysis tool; as a result,
|
||||||
|
it is impractical for it to be much more specific than the mappings
|
||||||
|
currently implemented. This also means that it is unlikely to need much
|
||||||
|
updating for map currency; it simply doesn’t have enough information to
|
||||||
|
refine to a detailed CWE level that CWE changes would affect.
|
||||||
|
That said, if there are recommended mapping refinements, please let me know.
|
||||||
|
|
||||||
.PP
|
.PP
|
||||||
Flawfinder may fail to find a vulnerability, even if flawfinder covers
|
Flawfinder may fail to find a vulnerability, even if flawfinder covers
|
||||||
|
@ -767,6 +783,56 @@ you will typically need to quote the parameters (since an
|
||||||
unquoted ``|'' is the pipe symbol).
|
unquoted ``|'' is the pipe symbol).
|
||||||
Flawfinder is designed to meet the CWE-Searchable requirement.
|
Flawfinder is designed to meet the CWE-Searchable requirement.
|
||||||
|
|
||||||
|
.PP
|
||||||
|
If your goal is to report a subset of CWEs that are listed in a file,
|
||||||
|
that can be achieved on a Unix-like system using the ``\-\-regex'' aka
|
||||||
|
``\-e'' option.
|
||||||
|
The file must be in regular expression format.
|
||||||
|
For example,
|
||||||
|
``flawfinder –e $(cat file1)'' would report only hits that matched
|
||||||
|
the pattern in ``file1''.
|
||||||
|
If file1 contained ``CWE-119|CWE-120'' it
|
||||||
|
would only report hits matching those CWEs.
|
||||||
|
|
||||||
|
.PP
|
||||||
|
A list of all
|
||||||
|
CWE security elements (the signatures or patterns that flawfinder looks for)
|
||||||
|
can be found by using the ``\-\-listrules'' option.
|
||||||
|
Each line lists the signature token (typically a function name)
|
||||||
|
that may lead to a hit, the default risk level, and
|
||||||
|
the default warning (which includes the default CWE identifier).
|
||||||
|
For most purposes this is enough if you want to see what
|
||||||
|
(signatures or patterns) map to which CWEs, or the reverse.
|
||||||
|
For example, to see the most of the signatures (function names)
|
||||||
|
that map to CWE-327,
|
||||||
|
without seeing the default risk level or detailed warning text,
|
||||||
|
run ``flawfinder \-\-listrules | grep CWE-327 | cut -f1''.
|
||||||
|
However, while this procedure lists all CWE security elements,
|
||||||
|
this procedure only lists the default mappings.
|
||||||
|
It does not include the refinements
|
||||||
|
that flawfinder does (e.g., by examining function parameters).
|
||||||
|
|
||||||
|
.PP
|
||||||
|
If you want a detailed and exact mapping between the CWE security elements
|
||||||
|
and CWE identifiers, the flawfinder source code (included in the distribution)
|
||||||
|
is the best place for that information.
|
||||||
|
The source code documents the mapping between the security elements
|
||||||
|
to the respective CWE identifiers, and is a single Python file.
|
||||||
|
The ``c_rules'' dataset defines most rules, with reference to a
|
||||||
|
function that may make further refinements.
|
||||||
|
You can search the dataset for
|
||||||
|
function names to see what CWE it generates by default;
|
||||||
|
if first parameter is not ``normal'' then that is the name
|
||||||
|
a refining Python method that may select different CWEs
|
||||||
|
(depending on additional information).
|
||||||
|
Conversely, you can search for ``CWE-number'' and find what security
|
||||||
|
elements (signatures or patterns) refer to that CWE identifier.
|
||||||
|
This detailed information is primarily of interest to those few
|
||||||
|
people who are trying to refine the CWE mappings of flawfinder
|
||||||
|
or refine CWE in general.
|
||||||
|
For most people, this is much more than they need; most people just want to
|
||||||
|
scan their source code to quickly find problems.
|
||||||
|
|
||||||
|
|
||||||
.SH SECURITY
|
.SH SECURITY
|
||||||
.PP
|
.PP
|
||||||
|
|
Loading…
Reference in New Issue