From 0387fab1c74a53dc41f54513a89cc8d0704c3078 Mon Sep 17 00:00:00 2001 From: George Sokianos Date: Mon, 25 Jul 2022 14:41:56 +0100 Subject: [PATCH] Added release files --- release_files/COPYING.info | Bin 0 -> 5092 bytes release_files/ChangeLog.info | Bin 0 -> 5092 bytes release_files/README.md.info | Bin 0 -> 5092 bytes release_files/flawfinder.html | 1963 ++++++++++++++++++++++++++++ release_files/flawfinder.html.info | Bin 0 -> 9544 bytes release_files/flawfinder.info | Bin 0 -> 15523 bytes release_files/flawfinder.pdf | Bin 0 -> 88328 bytes release_files/flawfinder.pdf.info | Bin 0 -> 7400 bytes 8 files changed, 1963 insertions(+) create mode 100644 release_files/COPYING.info create mode 100644 release_files/ChangeLog.info create mode 100644 release_files/README.md.info create mode 100755 release_files/flawfinder.html create mode 100644 release_files/flawfinder.html.info create mode 100644 release_files/flawfinder.info create mode 100755 release_files/flawfinder.pdf create mode 100644 release_files/flawfinder.pdf.info diff --git a/release_files/COPYING.info b/release_files/COPYING.info new file mode 100644 index 0000000000000000000000000000000000000000..21346a3701cc890a21db6e758d07657b9f12ed59 GIT binary patch literal 5092 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 X?{Zxcm2!iDmy;+YmFkuLPk}!HmeP|! literal 0 HcmV?d00001 diff --git a/release_files/README.md.info b/release_files/README.md.info new file mode 100644 index 0000000000000000000000000000000000000000..515a0341f02779d89a130846d4a8d143a9f43412 GIT binary patch literal 5092 zcmeHJc~q0vw*L?WTan-hA`nz?Vo=MFkPre?p{U?g<{@GP#eo=^AtXRrQ3gW+wJ{88 z6a)bUi{QGp#$}<0z zTtNNrs(;P?Nf~hZ$IjLL$LRkQHb|)&QvmRv#TAQQssj5f{{IJ_HMf)!sbuwWEK8*j88p5@ITcPv=^QHw|6`Y09uQ+@*m(* zE&O}^u=?+O03fLL{lQZuMr+YdGXSV9Vln^#D%4Z~VDfj~;_}bNlD$9UEb9KR@|OHs z%G+PX@xP`2*Zu!_rkC#R&sl$6cT0Bu>-VpJ-0wKdD=PeacvN_3)~S_0I>3a`-s_8-4&R&Ar#%6OHHPI|k99o?+zB8-AZYZ4)cn0)m4tkDHsD z8$asl>4CMO{R0As;~Zg^-8;;v9kv|m294#elts5}QFdh`Q5G8-(k@>X-9Oewxphla zTv8&we&Bv$RFn;>!kb1WZ+z5shI_8YA2N{(-n2;^cKS4}uC7ilmBz)^1-2fRS8!a> zcdMc-lyOmlGdj1ri*B~cnz9d1O+47IKyRi)?Cn43fI!w@TyW08CRtOeEjM~KHM@;c zRFoDdA}>^Owq09A`jBd!&(iAS>bYj6pLQ>sT_Nr^^p9Ad_G4IjZn%YX@jQl@a%p?WBEj%Q?eV9wE@jJL z@BGv|}@k^WW>8J2J=76S`zD-m^WYvMzfmj$wo;zZI2BR$a=OZPu&BxCwUQagwfh@ffS3 zqT&H7)>1?e7;aIP89%7kJV|KmPMbym*f6Z%{E&Q8;&e(iyVR+|{*?%0uTC(tf)<&Bt*PQ)tIZEoNtCa3dPR`-AvyDWyum zG~A2iv7YYj2y$LBwCD`2TMhf9v+V0~&7H14XHVcDlBP@>((qmJ_ z)3m%dTk%|I+mj;VpgNlHT0@%+or#AHp=xSt33}D^qAhU26DWQYi}2jGU`XrW{a=I^ zE?ltmya>J#Hh5qDv`D#Gaz5#+a}<=nzkk!E)Y!-21;V>Q>d0~3p`rA$p0fwuZ3-@! znh>_Me6zcJ-X#m9qoeprjDM$b4o(?@@U^Sxp1O$4s-k{_2cI`Wd;}d(;W8 z+nVEM&yYmXj-;tgF)J;5A{Z_DH5YDAG|j(>nfK0kPXueX>aJe!AR6G_i{0?HL3SHi zWcw$y!9lpBvy&5gGA0M(Z$*>fk-U8S25WLvd21Kcz-{D=VHSG6ii&GLt5%b0yu2o5 zZf`>7y0j`g(VGK>U5Rg~-}XAJNHB=fpRu6E95Zay$z>9`b!N*H-u@uTIAG?ar*Gzt z)jyccj1h4R)RYnFJ1gNjZ-F56%+8%U=uO-zqJ!{SGCgbjb9CZp5#OyEyBin5ga21Y?F13SM7$ctRi*^+a>F&F0oz$KeWhjv^}~F%#yiXhQp$QVel`Ys+$XWIIS_lMU+UMLpZWvbMpUzG2PSqfvXC0VFdEF*Aq#qDp17qzm8 z4>YsE4z3-9eJzj55|NXmqoJkp_qSmneZ^KyDQ01+GL&xXU?GUFHio?1(brA2j43RK zh-kWvcigD*@3jUv{IS524N+$SMduEs(P#9s$^GY5FPna@o_bIG@bu8t&*+&!EfwiR z&sDD}s2=ftxy8u%__$r$$zdj|6;QA&l<*r1W3RFsg;)eh7`~N8tL)7GE<@qk3))Y6 zC0_P1YjioETi79a`_|vc&-@y3q(qqlp~{CUdkP7Dpu8l_UXc+X1{s6(3EGaz zEYVPKw2;s`I}a8SnZ8rVD?;V$Fd^xLQxbhQx8~8L?H&SBx3R}e={&jcI$>3L{oMKi z_0+w&a#YfjEj-ds3t)XWQuI60$O2MbF4bP|7(imJBZy|JM;%VXV6b`*G#Y&@i$r2u z(4*r)s#@IkLafM^$4xxen>o~%RO~>Il+E^KrA8-?*7$x-yTjBGHA1+vAV;`l&#$G` z^PbKU8o&49V})r8^qLFi*Qx>ss^l>X>8SDcOTN)vsNr&&uC + + + + + +FLAWFINDER + + + + +

FLAWFINDER

+ +NAME
+SYNOPSIS
+DESCRIPTION
+BRIEF TUTORIAL
+OPTIONS
+EXAMPLES
+COMMON WEAKNESS ENUMERATION (CWE)
+SECURITY
+BUGS
+SEE ALSO
+AUTHOR
+ +
+ + +

NAME + +

+ + +

flawfinder +− lexically find potential security flaws +("hits") in source code

+ +

SYNOPSIS + +

+ + + +

flawfinder +[−−help|−h] +[−−version] +[−−listrules]
+[−−allowlink] +[−−followdotdir] +[−−nolink]
+ +[−−patch=filename|−P filename] +
+[−−inputs|−I] [ +−−minlevel=X | +−m X ] +[−−falsepositive|−F]
+[−−neverignore|−n]
+[−−regex=PATTERN | −e +PATTERN]
+[−−context|−c] +[−−columns|−C] +[−−csv] +[−−dataonly|−D] +[−−html|−H] +[−−immediate|-i] +[−−sarif] +[−−singleline|−S] +[−−omittime] +[−−quiet|−Q] +[−−error-level=LEVEL]
+[−−loadhitlist=F] +[−−savehitlist=F] +[−−diffhitlist=F]
+[−−] [ source code file or source root +directory ]+

+ +

DESCRIPTION + +

+ + +

Flawfinder +searches through C/C++ source code looking for potential +security flaws. To run flawfinder, simply give flawfinder a +list of directories or files. For each directory given, all +files that have C/C++ filename extensions in that directory +(and its subdirectories, recursively) will be examined. +Thus, for most projects, simply give flawfinder the name of +the source code’s topmost directory (use +‘‘.’’ for the current directory), +and flawfinder will examine all of the project’s C/C++ +source code. Flawfinder does not require that you be +able to build your software, so it can be used even with +incomplete source code. If you only want to have +changes reviewed, save a unified diff of those +changes (created by GNU "diff -u" or "svn +diff" or "git diff") in a patch file and use +the −−patch (−P) option.

+ +

Flawfinder will +produce a list of ‘‘hits’’ +(potential security flaws, also called findings), sorted by +risk; the riskiest hits are shown first. The risk level is +shown inside square brackets and varies from 0, very little +risk, to 5, great risk. This risk level depends not only on +the function, but on the values of the parameters of the +function. For example, constant strings are often less risky +than fully variable strings in many contexts, and in those +contexts the hit will have a lower risk level. Flawfinder +knows about gettext (a common library for internationalized +programs) and will treat constant strings passed through +gettext as though they were constant strings; this reduces +the number of false hits in internationalized programs. +Flawfinder will do the same sort of thing with _T() and +_TEXT(), common Microsoft macros for handling +internationalized programs. Flawfinder correctly ignores +text inside comments and strings. Normally flawfinder shows +all hits with a risk level of at least 1, but you can use +the −−minlevel option to show only hits with +higher risk levels if you wish. Hit descriptions also note +the relevant Common Weakness Enumeration (CWE) identifier(s) +in parentheses, as discussed below. Flawfinder is officially +CWE-Compatible. Hit descriptions with +"[MS-banned]" indicate functions that are in the +banned list of functions released by Microsoft; see +http://msdn.microsoft.com/en-us/library/bb288454.aspx for +more information about banned functions.

+ +

Not every hit +(aka finding) is actually a security vulnerability, and not +every security vulnerability is necessarily found. +Nevertheless, flawfinder can be an aid in finding and +removing security vulnerabilities. A common way to use +flawfinder is to first apply flawfinder to a set of source +code and examine the highest-risk items. Then, use +−−inputs to examine the input locations, and +check to make sure that only legal and safe input values are +accepted from untrusted users.

+ +

Once +you’ve audited a program, you can mark source code +lines that are actually fine but cause spurious warnings so +that flawfinder will stop complaining about them. To mark a +line so that these warnings are suppressed, put a +specially-formatted comment either on the same line (after +the source code) or all by itself in the previous line. The +comment must have one of the two following formats:

+ + + + + + + + + + + + + + +
+ + +

+ + +

// Flawfinder: ignore

+
+ + +

+ + +

/* Flawfinder: ignore */

+
+ +

For +compatibility’s sake, you can replace +"Flawfinder:" with "ITS4:" or +"RATS:" in these specially-formatted comments. +Since it’s possible that such lines are wrong, you can +use the −−neverignore option, which causes +flawfinder to never ignore any line no matter what the +comment directives say (more confusingly, +−−neverignore ignores the ignores).

+ +

Flawfinder uses +an internal database called the +‘‘ruleset’’; the ruleset identifies +functions that are common causes of security flaws. The +standard ruleset includes a large number of different +potential problems, including both general issues that can +impact any C/C++ program, as well as a number of specific +Unix-like and Windows functions that are especially +problematic. The −−listrules option reports the +list of current rules and their default risk levels. As +noted above, every potential security flaw found in a given +source code file (matching an entry in the ruleset) is +called a ‘‘hit,’’ and the set of +hits found during any particular run of the program is +called the ‘‘hitlist.’’ Hitlists can +be saved (using −−savehitlist), reloaded back +for redisplay (using −−loadhitlist), and you can +show only the hits that are different from another run +(using −−diffhitlist).

+ +

Flawfinder is a +simple tool, leading to some fundamental pros and cons. +Flawfinder works by doing simple lexical tokenization +(skipping comments and correctly tokenizing strings), +looking for token matches to the database (particularly to +find function calls). Flawfinder is thus similar to RATS and +ITS4, which also use simple lexical tokenization. Flawfinder +then examines the text of the function parameters to +estimate risk. Unlike tools such as splint, gcc’s +warning flags, and clang, flawfinder does not use or +have access to information about control flow, data flow, or +data types when searching for potential vulnerabilities or +estimating the level of risk. Thus, flawfinder will +necessarily produce many false positives for vulnerabilities +and fail to report many vulnerabilities. On the other hand, +flawfinder can find vulnerabilities in programs that cannot +be built or cannot be linked. It can often work with +programs that cannot even be compiled (at least by the +reviewer’s tools). Flawfinder also doesn’t get +as confused by macro definitions and other oddities that +more sophisticated tools have trouble with. Flawfinder can +also be useful as a simple introduction to static analysis +tools in general, since it is easy to start using and easy +to understand.

+ +

Any filename +given on the command line will be examined (even if it +doesn’t have a usual C/C++ filename extension); thus +you can force flawfinder to examine any specific files you +desire. While searching directories recursively, flawfinder +only opens and examines regular files that have C/C++ +filename extensions. Flawfinder presumes that files are +C/C++ files if they have the extensions ".c", +".h", ".ec", ".ecp", +".pgc", ".C", ".cpp", +".CPP", ".cxx", ".c++", +".cc", ".CC", ".pcc", +".hpp", or ".H". The filename +‘‘−’’ means the standard +input. To prevent security problems, special files (such as +device special files and named pipes) are always skipped, +and by default symbolic links are skipped (the +−−allowlink option follows symbolic links).

+ +

After the list +of hits is a brief summary of the results (use -D to remove +this information). It will show the number of hits, lines +analyzed (as reported by wc −l), and the physical +source lines of code (SLOC) analyzed. A physical SLOC is a +non-blank, non-comment line. It will then show the number of +hits at each level; note that there will never be a hit at a +level lower than minlevel (1 by default). Thus, "[0] 0 +[1] 9" means that at level 0 there were 0 hits +reported, and at level 1 there were 9 hits reported. It will +next show the number of hits at a given level or larger (so +level 3+ has the sum of the number of hits at level 3, 4, +and 5). Thus, an entry of "[0+] 37" shows that at +level 0 or higher there were 37 hits (the 0+ entry will +always be the same as the "hits" number above). +Hits per KSLOC is next shown; this is each of the +"level or higher" values multiplied by 1000 and +divided by the physical SLOC. If symlinks were skipped, the +count of those is reported. If hits were suppressed (using +the "ignore" directive in source code comments as +described above), the number suppressed is reported. The +minimum risk level to be included in the report is +displayed; by default this is 1 (use −−minlevel +to change this). The summary ends with important reminders: +Not every hit is necessarily a security vulnerability, and +there may be other security vulnerabilities not reported by +the tool.

+ +

Flawfinder can +easily integrate into a continuous integration system. You +might want to check out the −−error−level +option to help do that, e.g., using +−−error−level=4 will cause an error to be +returned if flawfinder finds a vulnerability of level 4 or +higher.

+ +

Flawfinder is +released under the GNU GPL license version 2 or later +(GPLv2+).

+ +

Flawfinder +works similarly to another program, ITS4, which is not fully +open source software (as defined in the Open Source +Definition) nor free software (as defined by the Free +Software Foundation). The author of Flawfinder has never +seen ITS4’s source code. Flawfinder is similar in many +ways to RATS, if you are familiar with RATS.

+ +

BRIEF TUTORIAL + +

+ + +

Here’s a +brief example of how flawfinder might be used. Imagine that +you have the C/C++ source code for some program named xyzzy +(which you may or may not have written), and you’re +searching for security vulnerabilities (so you can fix them +before customers encounter the vulnerabilities). For this +tutorial, I’ll assume that you’re using a +Unix-like system, such as Linux, OpenBSD, or MacOS X.

+ +

If the source +code is in a subdirectory named xyzzy, you would probably +start by opening a text window and using flawfinder’s +default settings, to analyze the program and report a +prioritized list of potential security vulnerabilities (the +‘‘less’’ just makes sure the results +stay on the screen):

+ +

flawfinder xyzzy | less

+ +

At this point, +you will see a large number of entries. Each entry has a +filename, a colon, a line number, a risk level in brackets +(where 5 is the most risky), a category, the name of the +function, and a description of why flawfinder thinks the +line is a vulnerability. Flawfinder normally sorts by risk +level, showing the riskiest items first; if you have limited +time, it’s probably best to start working on the +riskiest items and continue until you run out of time. If +you want to limit the display to risks with only a certain +risk level or higher, use the −−minlevel option. +If you’re getting an extraordinary number of false +positives because variable names look like dangerous +function names, use the −F option to remove reports +about them. If you don’t understand the error message, +please see documents such as the +Secure +Programming HOWTO at +https://dwheeler.com/secure-programs which provides more +information on writing secure programs.

+ +

Once you +identify the problem and understand it, you can fix it. +Occasionally you may want to re-do the analysis, both +because the line numbers will change and to make sure +that the new code doesn’t introduce yet a different +vulnerability.

+ +

If you’ve +determined that some line isn’t really a problem, and +you’re sure of it, you can insert just before or on +the offending line a comment like

+ +

/* Flawfinder: ignore */

+ +

to keep them from showing up in +the output.

+ +

Once +you’ve done that, you should go back and search for +the program’s inputs, to make sure that the program +strongly filters any of its untrusted inputs. Flawfinder can +identify many program inputs by using the +−−inputs option, like this:

+ +

flawfinder −−inputs +xyzzy

+ +

Flawfinder can +integrate well with text editors and integrated development +environments; see the examples for more information.

+ +

Flawfinder +includes many other options, including ones to create HTML +versions of the output (useful for prettier displays) and +OASIS Static Analysis Results Interchange Format (SARIF) +output. The next section describes those options in more +detail.

+ +

OPTIONS + +

+ + +

Flawfinder has +a number of options, which can be grouped into options that +control its own documentation, select input data, select +which hits to display, select the output format, and perform +hitlist management. The commonly-used flawfinder options +support the standard option syntax defined in the POSIX +(Issue 7, 2013 Edition) section ‘‘Utility +Conventions’’. Flawfinder also supports the GNU +long options (double-dash options of form +−−option) as defined in the GNU C +Library Reference Manual ‘‘Program Argument +Syntax Conventions’’ and GNU Coding +Standards ‘‘Standards for Command Line +Interfaces’’. Long option arguments can be +provided as ‘‘--name=value’’ or +‘‘-name value’’. All options can be +accessed using the more readable GNU long option +conventions; some less commonly used options can only +be accessed using long option conventions.

+ + +

Documentation

+ + + + + + + + + + + + + + + + + + + + + + +
+ + +

−−help

+
+ + +

−h

+ + +

Show usage (help) information.

+ + +

−−version

+ + +

Shows (just) the version number and exits.

+ + +

−−listrules

+ + +

List the terms (tokens) that trigger further +examination, their default risk level, and the default +warning (including the CWE identifier(s), if applicable), +all tab-separated. The terms are primarily names of +potentially-dangerous functions. 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. Combine +with −D if you do not want the usual header. +Flawfinder version 1.29 changed the separator from spaces to +tabs, and added the default warning field.

+ +

Selecting +Input Data

+ + + + + + + +
+ + + +

−−allowlink

+ + +

Allow the use of symbolic links; +normally symbolic links are skipped. Don’t use this +option if you’re analyzing code by others; attackers +could do many things to cause problems for an analysis with +this option enabled. For example, an attacker could insert +symbolic links to files such as /etc/passwd (leaking +information about the file) or create a circular loop, which +would cause flawfinder to run +‘‘forever’’. Another problem with +enabling this option is that if the same file is referenced +multiple times using symbolic links, it will be analyzed +multiple times (and thus reported multiple times). Note that +flawfinder already includes some protection against symbolic +links to special file types such as device file types (e.g., +/dev/zero or C:\mystuff\com1). Note that for flawfinder +version 1.01 and before, this was the default.

+ + +

−−followdotdir

+ +

Enter directories whose names +begin with ".". Normally such directories are +ignored, since they normally include version control private +data (such as .git/ or .svn/), build metadata (such as +.makepp), configuration information, and so on.

+ + + + + + + +
+ + +

−−nolink

+ + +

Ignored. Historically this disabled following symbolic +links; this behavior is now the default.

+ + +

−−patch=patchfile +
+−P
patchfile

+ +

Examine the selected files or +directories, but only report hits in lines that are added or +modified as described in the given patch file. The patch +file must be in a recognized unified diff format (e.g., the +output of GNU "diff -u old new", "svn +diff", or "git diff [commit]"). Flawfinder +assumes that the patch has already been applied to the +files. The patch file can also include changes to irrelevant +files (they will simply be ignored). The line numbers given +in the patch file are used to determine which lines were +changed, so if you have modified the files since the patch +file was created, regenerate the patch file first. Beware +that the file names of the new files given in the patch file +must match exactly, including upper/lower case, path prefix, +and directory separator (\ vs. /). Only unified diff format +is accepted (GNU diff, svn diff, and git diff output is +okay); if you have a different format, again regenerate it +first. Only hits that occur on resultant changed lines, or +immediately above and below them, are reported. This option +implies −−neverignore. Warning: Do +not pass a patch file without the −P, +because flawfinder will then try to treat the file as a +source file. This will often work, but the line numbers will +be relative to the beginning of the patch file, not the +positions in the source code. Note that you must also +provide the actual files to analyze, and not just the patch +file; when using −P files are only reported if +they are both listed in the patch and also listed (directly +or indirectly) in the list of files to analyze.

+ +

Selecting +Hits to Display
+−−inputs

+ + + + + + + +
+ + +

−I

+ + +

Show only functions that obtain data from outside the +program; this also sets minlevel to 0.

+ + +

−−minlevel=X

+ + + + + + + +
+ + +

-m X

+ + +

Set minimum risk level to X for inclusion in hitlist. +This can be from 0 (‘‘no risk’’) to +5 (‘‘maximum risk’’); the default is +1.

+ + +

−−falsepositive

+ + + + + + + +
+ + +

−F

+ + +

Do not include hits that are likely to be false +positives. Currently, this means that function names are +ignored if they’re not followed by "(", and +that declarations of character arrays aren’t noted. +Thus, if you have use a variable named "access" +everywhere, this will eliminate references to this ordinary +variable. This isn’t the default, because this also +increases the likelihood of missing important hits; in +particular, function names in #define clauses and calls +through function pointers will be missed.

+ + +

−−neverignore

+ + + + + + + +
+ + +

-n

+ + +

Never ignore security issues, even if they have an +‘‘ignore’’ directive in a +comment.

+ + +

−−regexp=PATTERN +
+-e
PATTERN

+ +

Only report hits with text that +matches the regular expression pattern PATTERN. For example, +to only report hits containing the text "CWE-120", +use ‘‘−−regex CWE-120’’. +These option flag names are the same as grep.

+ +

Selecting +Output Format

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +

−−columns

+
+ + +

−C

+ + +

Show the column number (as well as the file name and +line number) of each hit; this is shown after the line +number by adding a colon and the column number in the line +(the first character in a line is column number 1). This is +useful for editors that can jump to specific columns, or for +integrating with other tools (such as those to further +filter out false positives).

+ + +

−−context

+
+ + +

−c

+ + +

Show context, i.e., the line having the +"hit"/potential flaw. By default the line is shown +immediately after the warning.

+ + +

−−csv

+ + +

Generate output in comma-separated-value (CSV) format. +This is the recommended format for sending to other tools +for processing. It will always generate a header row, +followed by 0 or more data rows (one data row for each hit). +Selecting this option automatically enables +−−quiet and −−dataonly. The headers +are mostly self-explanatory. "File" is the +filename, "Line" is the line number, +"Column" is the column (starting from 1), +"Level" is the risk level (0-5, 5 is riskiest), +"Category" is the general flawfinder category, +"Name" is the name of the triggering rule, +"Warning" is text explaining why it is a hit +(finding), "Suggestion" is text suggesting how it +might be fixed, "Note" is other explanatory notes, +"CWEs" is the list of one or more CWEs, +"Context" is the source code line triggering the +hit, and "Fingerprint" is the SHA-256 hash of the +context once its leading and trailing whitespace have been +removed (the fingerprint may help detect and eliminate later +duplications). If you use Python3, the hash is of the +context when encoded as UTF-8.

+ + +

−−dataonly

+
+ + +

−D

+ + +

Don’t display the header and footer. Use this +along with −−quiet to see just the data +itself.

+ + +

−−html

+
+ + +

−H

+ + +

Format the output as HTML instead of as simple text.

+ + +

−−immediate

+
+ + +

-i

+ + +

Immediately display hits (don’t just wait until +the end).

+ + +

−−sarif

+ + +

Produce output in the OASIS Static Analysis Results +Interchange Format (SARIF) format (a JSON-based format). The +goals of the SARIF format, as explained in version 2.1.0 (27 +March 2020) of its specification, include being able to +"comprehensively capture the range of data produced by +commonly used static analysis tools." SARIF output +identifies the tool name as "Flawfinder". The +flawfinder levels 0 through 5 are mapped to SARIF rank (by +dividing by 5), SARIF level, and the default viewer action +as follows:

+ +

Flawfinder 0: +SARIF rank 0.0, SARIF level note, Does not display by +default

+ +

Flawfinder 1: +SARIF rank 0.2, SARIF level note, Does not display by +default

+ +

Flawfinder 2: +SARIF rank 0.4, SARIF level note, Does not display by +default

+ +

Flawfinder 3: +SARIF rank 0.6, SARIF level warning, Displays by default, +does not break build / other processes

+ +

Flawfinder 4: +SARIF rank 0.8, SARIF level error, Displays by default, +breaks build/ other processes

+ +

Flawfinder 5: +SARIF rank 1.0, SARIF level error, Displays by default, +breaks build/ other processes

+ +

A big thanks to +Yong Yan implementing SARIF output generation for +flawfinder! For more about the SARIF format, see: +https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sarif

+ + +

−−singleline

+ + + + + + + + + + + + + + + + + + + + + + +
+ + +

-S

+ + +

Display as single line of text output for each hit. +Useful for interacting with compilation tools.

+ + +

−−omittime

+ + +

Omit timing information. This is useful for regression +tests of flawfinder itself, so that the output doesn’t +vary depending on how long the analysis takes.

+ + +

−−quiet

+
+ + +

−Q

+ + +

Don’t display status information (i.e., which +files are being examined) while the analysis is going +on.

+ + +

−−error-level=LEVEL

+ +

Return a nonzero (false) error +code if there is at least one hit of LEVEL or higher. If a +diffhitlist is provided, hits noted in it are ignored. This +option can be useful within a continuous integration script, +especially if you mark known-okay lines as "flawfinder: +ignore". Usually you want level to be fairly high, such +as 4 or 5. By default, flawfinder returns 0 (true) on a +successful run.

+ +

Hitlist +Management
+−−savehitlist=
F

+ +

Save all resulting hits (the +"hitlist") to F.

+ + +

−−loadhitlist=F

+ +

Load the hitlist from F instead +of analyzing source programs. Warning: Do not load +hitlists from untrusted sources (for security reasons). +These are internally implemented using Python’s +"pickle" facility, which trusts the input. Note +that stored hitlists often cannot be read when using an +older version of Python, in particular, if savehitlist was +used but flawfinder was run using Python 3, the hitlist +can’t be loaded by running flawfinder with Python +2.

+ + +

−−diffhitlist=F

+ +

Show only hits (loaded or +analyzed) not in F. F was presumably created previously +using −−savehitlist. Warning: Do not diff +hitlists from untrusted sources (for security reasons). If +the −−loadhitlist option is not provided, this +will show the hits in the analyzed source code files that +were not previously stored in F. If used along with +−−loadhitlist, this will show the hits in the +loaded hitlist not in F. The difference algorithm is +conservative; hits are only considered the +‘‘same’’ if they have the same +filename, line number, column position, function name, and +risk level.

+ +

Character +Encoding Errors
+Flawfinder uses the character encoding rules set by Python. +Sometimes source code does not perfectly follow some +encoding rules. If you run flawfinder with Python 2 these +non-conformities often do not impact processing in +practice.

+ +

However, if you +run flawfinder with Python 3, this can be a problem. Python +3 developers wants the world to always use encodings +perfectly correctly, everywhere, and in general wants +everyone to only use UTF-8. UTF-8 is a great encoding, and +it is very popular, but the world often doesn’t care +what the Python 3 developers want.

+ +

When running +flawfinder using Python 3, the program will crash hard if +any source file has any non-conforming text. +It will do this even if the non-conforming text is in +comments or strings (where it often doesn’t matter). +Python 3 fails to provide useful built-ins to deal with the +messiness of the real world, so it’s non-trivial to +deal with this problem without depending on external +libraries (which we’re trying to avoid).

+ +

A symptom of +this problem is if you run flawfinder and you see an error +message like this:

+ +

Error: +encoding error in ,1.c

+ + +

’utf-8’ +codec can’t decode byte 0xff in position 45: invalid +start byte

+ +

What you are +seeing is the result of an internal UnicodeDecodeError.

+ +

If this happens +to you, there are several options:

+ +

Option #1 +(special case): if your system normally uses an encoding +other than UTF-8, is properly set up to use that encoding +(using LC_ALL and maybe LC_CTYPE), and the input files are +in that non-UTF-8 encoding, it may be that Python3 is +(incorrectly) ignoring your configuration. In that case, +simply tell Python3 to use your configuration by setting the +environment variable PYTHONUTF8=0, e.g., run flawfinder as: +"PYTHONUTF8=0 python3 flawfinder ...".

+ +

Option #2 +(special case): If you know what the encoding of the files +is, you can force use of that encoding. E.g., if the +encoding is BLAH, run flawfinder as: "PYTHONUTF8=0 +LC_ALL=C.BLAH python3 flawfinder ...". You can replace +"C" after LC_ALL= with your real language locale +(e.g., "en_US").

+ +

Option #3: If +you don’t know what the encoding is, or the encoding +is inconsistent (e.g., the common case of UTF-8 files with +some characters encoded using Windows-1252 instead), then +you can force the system to use the ISO-8859-1 (Latin-1) +encoding in which all bytes are allowed. If the +inconsistencies are only in comments and strings, and the +underlying character set is "close enough" to +ASCII, this can get you going in a hurry. You can do this by +running: "PYTHONUTF8=0 LC_ALL=C.ISO-8859-1 python3 +flawfinder ...". In some cases you may not need the +"PYTHONUTF8=0". You may be able to replace +"C" after LC_ALL= with your real language locale +(e.g., "en_US").

+ +

Option #4: +Convert the encoding of the files to be analyzed so that +it’s a single encoding - it’s highly recommended +to convert to UTF-8. For example, the system program +"iconv" or the Python program cvt2utf can be used +to convert encodings. (You can install cvt2utf with +"pip install cvtutf"). This works well if some +files have one encoding, and some have another, but they are +consistent within a single file. If the files have encoding +errors, you’ll have to fix them.

+ +

Option #5: Run +flawfinder using Python 2 instead of Python 3. E.g., +"python2 flawfinder ...".

+ +

To be clear: I +strongly recommend using the UTF-8 encoding for all source +code, and use continuous integration tests to ensure that +the source code is always valid UTF-8. If you do that, many +problems disappear. But in the real world this is not always +the situation. Hopefully this information will help you deal +with real-world encoding problems.

+ +

EXAMPLES + +

+ + +

Here are +various examples of how to invoke flawfinder. The first +examples show various simple command-line options. +Flawfinder is designed to work well with text editors and +integrated development environments, so the next sections +show how to integrate flawfinder into vim and emacs.

+ +

Simple +command-line options
+flawfinder /usr/src/linux-3.16

+ +

Examine all the C/C++ files in +the directory /usr/src/linux-3.16 and all its subdirectories +(recursively), reporting on all hits found. By default +flawfinder will skip symbolic links and directories with +names that start with a period.

+ +

flawfinder +−−error-level=4 .

+ +

Examine all the C/C++ files in +the current directory and its subdirectories (recursively); +return an error code if there are vulnerabilities level 4 +and up (the two highest risk levels). This is a plausible +way to use flawfinder in a continuous integration +system.

+ +

flawfinder +−−minlevel=4 .

+ +

Examine all the C/C++ files in +the current directory and its subdirectories (recursively); +only report vulnerabilities level 4 and up (the two highest +risk levels).

+ +

flawfinder +−−inputs mydir

+ +

Examine all the C/C++ files in +mydir and its subdirectories (recursively), and report +functions that take inputs (so that you can ensure that they +filter the inputs appropriately).

+ +

flawfinder +−−neverignore mydir

+ +

Examine all the C/C++ files in +the directory mydir and its subdirectories, including even +the hits marked for ignoring in the code comments.

+ +

flawfinder −−csv +.

+ +

Examine the current directory +down (recursively), and report all hits in CSV format. This +is the recommended form if you want to further process +flawfinder output using other tools (such as data +correlation tools).

+ +

flawfinder −QD +mydir

+ +

Examine mydir and report only +the actual results (removing the header and footer of the +output). This form may be useful if the output will be piped +into other tools for further analysis, though CSV format is +probably the better choice in that case. The −C +(−−columns) and −S +(−−singleline) options can also be useful if +you’re piping the data into other tools.

+ +

flawfinder −QDSC +mydir

+ +

Examine mydir, reporting only +the actual results (no header or footer). Each hit is +reported on one line, and column numbers are reported. This +can be a useful command if you are feeding flawfinder output +to other tools.

+ +

flawfinder +−−quiet −−html −−context +mydir > results.html

+ +

Examine all the C/C++ files in +the directory mydir and its subdirectories, and produce an +HTML formatted version of the results. Source code +management systems (such as SourceForge and Savannah) might +use a command like this.

+ +

flawfinder +−−quiet −−savehitlist saved.hits +*.[ch]

+ +

Examine all .c and .h files in +the current directory. Don’t report on the status of +processing, and save the resulting hitlist (the set of all +hits) in the file saved.hits.

+ +

flawfinder +−−diffhitlist saved.hits *.[ch]

+ +

Examine all .c and .h files in +the current directory, and show any hits that weren’t +already in the file saved.hits. This can be used to show +only the ‘‘new’’ vulnerabilities in +a modified program, if saved.hits was created from the older +version of the program being analyzed.

+ +

flawfinder +−−patch recent.patch .

+ +

Examine the current directory +recursively, but only report lines that were changed or +added in the already-applied patchfile named +recent.patch.

+ +

flawfinder +−−regex "CWE-120|CWE-126" src/

+ +

Examine directory src +recursively, but only report hits where CWE-120 or CWE-126 +apply.

+ +

Invoking +from vim
+The text editor vim includes a "quickfix" +mechanism that works well with flawfinder, so that you can +easily view the warning messages and jump to the relevant +source code.

+ +

First, you need +to invoke flawfinder to create a list of hits, and there are +two ways to do this. The first way is to start flawfinder +first, and then (using its output) invoke vim. The second +way is to start (or continue to run) vim, and then invoke +flawfinder (typically from inside vim).

+ +

For the first +way, run flawfinder and store its output in some FLAWFILE +(say "flawfile"), then invoke vim using its -q +option, like this: "vim -q flawfile". The second +way (starting flawfinder after starting vim) can be done a +legion of ways. One is to invoke flawfinder using a shell +command, ":!flawfinder-command > FLAWFILE", +then follow that with the command ":cf FLAWFILE". +Another way is to store the flawfinder command in your +makefile (as, say, a pseudocommand like "flaw"), +and then run ":make flaw".

+ +

In all these +cases you need a command for flawfinder to run. A plausible +command, which places each hit in its own line (-S) and +removes headers and footers that would confuse it, is:

+ +

flawfinder +−SQD .

+ +

You can now use +various editing commands to view the results. The command +":cn" displays the next hit; ":cN" +displays the previous hit, and ":cr" rewinds back +to the first hit. ":copen" will open a window to +show the current list of hits, called the "quickfix +window"; ":cclose" will close the quickfix +window. If the buffer in the used window has changed, and +the error is in another file, jumping to the error will +fail. You have to make sure the window contains a buffer +which can be abandoned before trying to jump to a new file, +say by saving the file; this prevents accidental data +loss.

+ +

Invoking +from emacs
+The text editor / operating system emacs includes "grep +mode" and "compile mode" mechanisms that work +well with flawfinder, making it easy to view warning +messages, jump to the relevant source code, and fix any +problems you find.

+ +

First, you need +to invoke flawfinder to create a list of warning messages. +You can use "grep mode" or "compile +mode" to create this list. Often "grep mode" +is more convenient; it leaves compile mode untouched so you +can easily recompile once you’ve changed something. +However, if you want to jump to the exact column position of +a hit, compile mode may be more convenient because emacs can +use the column output of flawfinder to directly jump to the +right location without any special configuration.

+ +

To use grep +mode, enter the command "M-x grep" and then enter +the needed flawfinder command. To use compile mode, enter +the command "M-x compile" and enter the needed +flawfinder command. This is a meta-key command, so +you’ll need to use the meta key for your keyboard +(this is usually the ESC key). As with all emacs commands, +you’ll need to press RETURN after typing +"grep" or "compile". So on many systems, +the grep mode is invoked by typing ESC x g r e p RETURN.

+ +

You then need +to enter a command, removing whatever was there before if +necessary. A plausible command is:

+ +

flawfinder +−SQDC .

+ +

This command +makes every hit report a single line, which is much easier +for tools to handle. The quiet and dataonly options remove +the other status information not needed for use inside +emacs. The trailing period means that the current directory +and all descendents are searched for C/C++ code, and +analyzed for flaws.

+ +

Once +you’ve invoked flawfinder, you can use emacs to jump +around in its results. The command C-x ` (Control-x +backtick) visits the source code location for the next +warning message. C-u C-x ` (control-u control-x backtick) +restarts from the beginning. You can visit the source for +any particular error message by moving to that hit message +in the *compilation* buffer or *grep* buffer and typing the +return key. (Technical note: in the compilation buffer, this +invokes compile-goto-error.) You can also click the Mouse-2 +button on the error message (you don’t need to switch +to the *compilation* buffer first).

+ +

If you want to +use grep mode to jump to specific columns of a hit, +you’ll need to specially configure emacs to do this. +To do this, modify the emacs variable +"grep-regexp-alist". This variable tells Emacs how +to parse output of a "grep" command, similar to +the variable "compilation-error-regexp-alist" +which lists various formats of compilation error +messages.

+ +

Invoking +from Integrated Development Environments (IDEs)
+For (other) IDEs, consult your IDE’s set of +plug-ins.

+ +

COMMON WEAKNESS ENUMERATION (CWE) + +

+ + +

The Common +Weakness Enumeration (CWE) is ‘‘a formal list or +dictionary of common software weaknesses that can occur in +software’s architecture, design, code or +implementation that can lead to exploitable security +vulnerabilities... created to serve as a common language for +describing software security weaknesses’’ +(https://cwe.mitre.org/about/faq.html). For more information +on CWEs, see https://cwe.mitre.org.

+ +

Flawfinder +supports the CWE and is officially CWE-Compatible. Hit +descriptions typically include a relevant Common Weakness +Enumeration (CWE) identifier in parentheses where there is +known to be a relevant CWE. For example, many of the +buffer-related hits mention CWE-120, the CWE identifier for +‘‘buffer copy without checking size of +input’’ (aka ‘‘Classic Buffer +Overflow’’). In a few cases more than one CWE +identifier may be listed. The HTML report also includes +hypertext links to the CWE definitions hosted at MITRE. In +this way, flawfinder is designed to meet the CWE-Output +requirement.

+ +

In some cases +there are CWE mapping and usage challenges; here is how +flawfinder handles them. If the same entry maps to multiple +CWEs simultaneously, all the CWE mappings are listed as +separated by commas. This often occurs with CWE-20, Improper +Input Validation; thus the report "CWE-676, +CWE-120" maps to two CWEs. In addition, flawfinder +provides additional information for those who are are +interested in the CWE/SANS top 25 list 2011 +(https://cwe.mitre.org/top25/) when mappings are not +directly to them. Many people will want to search for +specific CWEs in this top 25 list, such as CWE-120 (classic +buffer overflow). The challenge is that some flawfinder hits +map to a more general CWE that would include a top 25 item, +while in some other cases hits map to a more specific +vulnerability that is only a subset of a top 25 item. To +resolve this, in some cases flawfinder will list a sequence +of CWEs in the format +"more-general/more-specific", where the CWE +actually being mapped is followed by a "!". This +is always done whenever a flaw is not mapped directly to a +top 25 CWE, but the mapping is related to such a CWE. So +"CWE-119!/CWE-120" means that the vulnerability is +mapped to CWE-119 and that CWE-120 is a subset of CWE-119. +In contrast, "CWE-362/CWE-367!" means that the hit +is mapped to CWE-367, a subset of CWE-362. Note that this is +a subtle syntax change from flawfinder version 1.31; in +flawfinder version 1.31, the form +"more-general:more-specific" meant what is now +listed as "more-general!/more-specific", while +"more-general/more-specific" meant +"more-general/more-specific!". Tools can handle +both the version 1.31 and the current format, if they wish, +by noting that the older format did not use "!" at +all (and thus this is easy to distinguish). These mapping +mechanisms simplify searching for certain CWEs.

+ +

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 CWE security elements +(signatures/patterns that the tool searches for) 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 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 typically affect. +The list of CWE identifiers was generated automatically +using "make show-cwes", so there is confidence +that this list is correct. Please report CWE mapping +problems as bugs if you find any.

+ +

Flawfinder may +fail to find a vulnerability, even if flawfinder covers one +of these CWE weaknesses. That said, flawfinder does find +vulnerabilities listed by the CWEs it covers, and it will +not report lines without those vulnerabilities in many +cases. Thus, as required for any tool intending to be CWE +compatible, flawfinder has a rate of false positives less +than 100% and a rate of false negatives less than 100%. +Flawfinder almost always reports whenever it finds a match +to a CWE security element (a signature/pattern as defined in +its database), though certain obscure constructs can cause +it to fail (see BUGS below).

+ +

Flawfinder can +report on the following CWEs (these are the CWEs that +flawfinder covers; ‘‘*’’ marks those +in the CWE/SANS top 25 list):

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +

+ + +

CWE-20: Improper Input Validation

+ + +

+ + +

CWE-22: Improper Limitation of a Pathname to a +Restricted Directory (‘‘Path +Traversal’’)

+ + +

+ + +

CWE-78: Improper Neutralization of Special Elements used +in an OS Command (‘‘OS Command +Injection’’)*

+ + +

+ + +

CWE-119: Improper Restriction of Operations within the +Bounds of a Memory Buffer (a parent of CWE-120*, so this is +shown as CWE-119!/CWE-120)

+ + +

+ + +

CWE-120: Buffer Copy without Checking Size of Input +(‘‘Classic Buffer Overflow’’)*

+ + +

+ + +

CWE-126: Buffer Over-read

+ + +

+ + +

CWE-134: Uncontrolled Format String*

+ + +

+ + +

CWE-190: Integer Overflow or Wraparound*

+ + +

+ + +

CWE-250: Execution with Unnecessary Privileges

+ + +

+ + +

CWE-327: Use of a Broken or Risky Cryptographic +Algorithm*

+ + +

+ + +

CWE-362: Concurrent Execution using Shared Resource with +Improper Synchronization (‘‘Race +Condition’’)

+ + +

+ + +

CWE-377: Insecure Temporary File

+ + +

+ + +

CWE-676: Use of Potentially Dangerous Function*

+ + +

+ + +

CWE-732: Incorrect Permission Assignment for Critical +Resource*

+ + +

+ + +

CWE-785: Use of Path Manipulation Function without +Maximum-sized Buffer (child of CWE-120*, so this is shown as +CWE-120/CWE-785)

+ + +

+ + +

CWE-807: Reliance on Untrusted Inputs in a Security +Decision*

+ + +

+ + +

CWE-829: Inclusion of Functionality from Untrusted +Control Sphere*

+ +

You can select +a specific subset of CWEs to report by using the +‘‘−−regex’’ (-e) option. +This option accepts a regular expression, so you can select +multiple CWEs, e.g., ‘‘−−regex +"CWE-120|CWE-126"’’. If you select +multiple CWEs with ‘‘|’’ on a +command line you will typically need to quote the parameters +(since an unquoted ‘‘|’’ is the pipe +symbol). Flawfinder is designed to meet the CWE-Searchable +requirement.

+ +

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-120|CWE-126’’ it would only +report hits matching those CWEs.

+ +

A list of all +CWE security elements (the signatures/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 also enough if you +want to see what CWE security elements 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’’. You can also see the tokens +without a CWE mapping this way by running +‘‘flawfinder -D --listrules | grep -v +CWE-’’. However, while −−listrules +lists all CWE security elements, it only lists the default +mappings from CWE security elements to CWE identifiers. It +does not include the refinements that flawfinder applies +(e.g., by examining function parameters).

+ +

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. +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. 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 of 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. For most people, this is much more +than they need; most people just want to scan their source +code to quickly find problems.

+ +

SECURITY + +

+ + +

The whole point +of this tool is to help find vulnerabilities so they can be +fixed. However, developers and reviewers must know how to +develop secure software to use this tool, because otherwise, +a fool with a tool is still a fool. My book at +https://dwheeler.com/secure-programs may help.

+ +

This tool +should be, at most, a small part of a larger software +development process designed to eliminate or reduce the +impact of vulnerabilities. Developers and reviewers need +know how to develop secure software, and they need to apply +this knowledge to reduce the risks of vulnerabilities in the +first place.

+ +

Different +vulnerability-finding tools tend to find different +vulnerabilities. Thus, you are best off using human review +and a variety of tools. This tool can help find some +vulnerabilities, but by no means all.

+ +

You should +always analyze a copy of the source program being +analyzed, not a directory that can be modified by a +developer while flawfinder is performing the analysis. This +is especially true if you don’t necessily trust +a developer of the program being analyzed. If an attacker +has control over the files while you’re analyzing +them, the attacker could move files around or change their +contents to prevent the exposure of a security problem (or +create the impression of a problem where there is none). If +you’re worried about malicious programmers you should +do this anyway, because after analysis you’ll need to +verify that the code eventually run is the code you +analyzed. Also, do not use the −−allowlink +option in such cases; attackers could create malicious +symbolic links to files outside of their source code area +(such as /etc/passwd).

+ +

Source code +management systems (like GitHub, SourceForge, and Savannah) +definitely fall into this category; if you’re +maintaining one of those systems, first copy or extract the +files into a separate directory (that can’t be +controlled by attackers) before running flawfinder or any +other code analysis tool.

+ +

Note that +flawfinder only opens regular files, directories, and (if +requested) symbolic links; it will never open other kinds of +files, even if a symbolic link is made to them. This +counters attackers who insert unusual file types into the +source code. However, this only works if the filesystem +being analyzed can’t be modified by an attacker during +the analysis, as recommended above. This protection also +doesn’t work on Cygwin platforms, unfortunately.

+ +

Cygwin systems +(Unix emulation on top of Windows) have an additional +problem if flawfinder is used to analyze programs that the +analyst cannot trust. The problem is due to a design flaw in +Windows (that it inherits from MS-DOS). On Windows and +MS-DOS, certain filenames (e.g., +‘‘com1’’) are automatically treated +by the operating system as the names of peripherals, and +this is true even when a full pathname is given. Yes, +Windows and MS-DOS really are designed this badly. +Flawfinder deals with this by checking what a filesystem +object is, and then only opening directories and regular +files (and symlinks if enabled). Unfortunately, this +doesn’t work on Cygwin; on at least some versions of +Cygwin on some versions of Windows, merely trying to +determine if a file is a device type can cause the program +to hang. A workaround is to delete or rename any filenames +that are interpreted as device names before performing the +analysis. These so-called ‘‘reserved +names’’ are CON, PRN, AUX, CLOCK$, NUL, +COM1-COM9, and LPT1-LPT9, optionally followed by an +extension (e.g., ‘‘com1.txt’’), in +any directory, and in any case (Windows is +case-insensitive).

+ +

Do not +load or diff hitlists from untrusted sources. They are +implemented using the Python pickle module, and the pickle +module is not intended to be secure against erroneous or +maliciously constructed data. Stored hitlists are intended +for later use by the same user who created the hitlist; in +that context this restriction is not a problem.

+ +

BUGS + +

+ + +

Flawfinder is +based on simple text pattern matching, which is part of its +fundamental design and not easily changed. This design +approach leads to a number of fundamental limitations, e.g., +a higher false positive rate, and is the underlying cause of +most of the bugs listed here. On the positive side, +flawfinder doesn’t get confused by many complicated +preprocessor sequences that other tools sometimes choke on; +flawfinder can often handle code that cannot link, and +sometimes cannot even compile or build.

+ +

Flawfinder is +currently limited to C/C++. In addition, when analyzing C++ +it focuses primarily on the C subset of C++. For example, +flawfinder does not report on expressions like cin >> +charbuf, where charbuf is a char array. That is because +flawfinder doesn’t have type information, and +">>" is safe with many other types; +reporting on all ">>" would lead to too many +false positives. That said, it’s designed so that +adding support for other languages should be easy where its +text-based approach can usefully apply.

+ +

Flawfinder can +be fooled by user-defined functions or method names that +happen to be the same as those defined as +‘‘hits’’ in its database, and will +often trigger on definitions (as well as uses) of functions +with the same name. This is typically not a problem for C +code. In C code, a function with the same name as a common +library routine name often indicates that the developer is +simply rewriting a common library routine with the same +interface, say for portability’s sake. C programs tend +to avoid reusing the same name for a different purpose +(since in C function names are global by default). There are +reasonable odds that these rewritten routines will be +vulnerable to the same kinds of misuse, and thus, reusing +these rules is a reasonable approach. However, this can be a +much more serious problem in C++ code which heavily uses +classes and namespaces, since the same method name may have +many different meanings. The −−falsepositive +option can help somewhat in this case. If this is a serious +problem, feel free to modify the program, or process the +flawfinder output through other tools to remove the false +positives.

+ +

Preprocessor +commands embedded in the middle of a parameter list of a +call can cause problems in parsing, in particular, if a +string is opened and then closed multiple times using an +#ifdef .. #else construct, flawfinder gets confused. Such +constructs are bad style, and will confuse many other tools +too. If you must analyze such files, rewrite those lines. +Thankfully, these are quite rare.

+ +

Flawfinder +reports vulnerabilities regardless of the parameters of +"#if" or "#ifdef". A construct "#if +VALUE" will often have VALUE of 0 in some cases, and +non-zero in others. Similarly, "#ifdef VALUE" will +have VALUE defined in some cases, and not defined in others. +Flawfinder reports in all cases, which means that flawfinder +has a chance of reporting vulnerabilities in all +alternatives. This is not a bug, this is intended +behavior.

+ +

Flawfinder will +report hits even if they are between a literal "#if +0" and "#endif". It would be possible to +change this particular situation, but directly using +"#if 0" to comment-out code (other than during +debugging) indicates (1) the removal is very temporary (in +which case we should still report it) or (2) very poor code +practices. If you want to permanently get rid of code, then +delete it instead of using "#if 0", since you can +always see what it was using your version control software. +If you don’t use version control software, then +that’s the bug you need to fix right now.

+ +

Some complex or +unusual constructs can mislead flawfinder. In particular, if +a parameter begins with gettext(" and ends with ), +flawfinder will presume that the parameter of gettext is a +constant. This means it will get confused by patterns like +gettext("hi") + function("bye"). In +practice, this doesn’t seem to be a problem; gettext() +is usually wrapped around the entire parameter.

+ +

The routine to +detect statically defined character arrays uses simple text +matching; some complicated expressions can cause it to +trigger or not trigger unexpectedly.

+ +

Flawfinder +looks for specific patterns known to be common mistakes. +Flawfinder (or any tool like it) is not a good tool for +finding intentionally malicious code (e.g., Trojan horses); +malicious programmers can easily insert code that would not +be detected by this kind of tool.

+ +

Flawfinder +looks for specific patterns known to be common mistakes in +application code. Thus, it is likely to be less effective +analyzing programs that aren’t application-layer code +(e.g., kernel code or self-hosting code). The techniques may +still be useful; feel free to replace the database if your +situation is significantly different from normal.

+ + +

Flawfinder’s +default output format (filename:linenumber, followed +optionally by a :columnnumber) can be misunderstood if any +source files have very weird filenames. Filenames embedding +a newline/linefeed character will cause odd breaks, and +filenames including colon (:) are likely to be +misunderstood. This is especially important if +flawfinder’s output is being used by other tools, such +as filters or text editors. If you are using +flawfinder’s output in other tools, consider using its +CSV format instead (which can handle this). If you’re +looking at new code, examine the files for such characters. +It’s incredibly unwise to have such filenames anyway; +many tools can’t handle such filenames at all. Newline +and linefeed are often used as internal data delimeters. The +colon is often used as special characters in filesystems: +MacOS uses it as a directory separator, Windows/MS-DOS uses +it to identify drive letters, Windows/MS-DOS inconsistently +uses it to identify special devices like CON:, and +applications on many platforms use the colon to identify +URIs/URLs. Filenames including spaces and/or tabs +don’t cause problems for flawfinder, though note that +other tools might have problems with them.

+ +

Flawfinder is +not internationalized, so it currently does not support +localization.

+ +

In general, +flawfinder attempts to err on the side of caution; it tends +to report hits, so that they can be examined further, +instead of silently ignoring them. Thus, flawfinder prefers +to have false positives (reports that turn out to not be +problems) rather than false negatives (failures to report +security vulnerabilities). But this is a generality; +flawfinder uses simplistic heuristics and simply can’t +get everything "right".

+ +

Security +vulnerabilities might not be identified as such by +flawfinder, and conversely, some hits aren’t really +security vulnerabilities. This is true for all static +security scanners, and is especially true for tools like +flawfinder that use a simple lexical analysis and pattern +analysis to identify potential vulnerabilities. Still, it +can serve as a useful aid for humans, helping to identify +useful places to examine further, and that’s the point +of this simple tool.

+ +

SEE ALSO + +

+ + +

See the +flawfinder website at https://dwheeler.com/flawfinder. You +should also see the Secure Programming HOWTO at +https://dwheeler.com/secure-programs.

+ +

AUTHOR + +

+ + +

David A. +Wheeler (dwheeler@dwheeler.com).

+
+ + + \ No newline at end of file diff --git a/release_files/flawfinder.html.info b/release_files/flawfinder.html.info new file mode 100644 index 0000000000000000000000000000000000000000..44d39f0a2adb28febaab8e3a47ee1027ec4673a8 GIT binary patch literal 9544 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∨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 Q3x!~Cidev_I$o#$01*E2L;wH) literal 0 HcmV?d00001 diff --git a/release_files/flawfinder.info b/release_files/flawfinder.info new file mode 100644 index 0000000000000000000000000000000000000000..309e4eb7f72b3ed4989bf4215ce914c7b236f17b GIT binary patch literal 15523 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 literal 0 HcmV?d00001 diff --git a/release_files/flawfinder.pdf b/release_files/flawfinder.pdf new file mode 100755 index 0000000000000000000000000000000000000000..4b73f41326fdcf3a84014e23c2d735b2c768f7ec GIT binary patch literal 88328 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 PdJ90MrImOliTeKl40xO- literal 0 HcmV?d00001 diff --git a/release_files/flawfinder.pdf.info b/release_files/flawfinder.pdf.info new file mode 100644 index 0000000000000000000000000000000000000000..e36ee34a68138268d9657a5c8dfda348efb1f998 GIT binary patch literal 7400 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 literal 0 HcmV?d00001