    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: The ITS4 Software Security Scanner</title>
        <link>https://members.accu.org/index.php/articles/1017</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>




<div class="xar-mod-head"><span class="xar-mod-title">CVu Journal Vol 12, #3 - May 2000</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c126/">123</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;The ITS4 Software Security Scanner</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 03 May 2000 13:15:37 +01:00 or Wed, 03 May 2000 13:15:37 +01:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e23" id="d0e23"></a></h2>
</div>
<p>I have put together a command-line tool for statically scanning
C and C++ source code for security vulnerabilities. The tool is
called ITS4. ITS4 scans through source code for potentially
dangerous function calls that are stored in a database. Anything
that is in the database gets flagged. ITS4 tries to automate a lot
of the grepping usually done by hand when performing security
audits. The tool is available from: <a href=
"http://www.rstcorp.com/its4" target=
"_top">http://www.rstcorp.com/its4</a> Also on this site is a
research paper on ITS4 submitted to this year's <span class=
"emphasis"><em>Usenix Security conference</em></span>.</p>
<p>ITS4 is open source software. The license puts some minor
restrictions on commercial use. In essence, you cannot use this
tool to make money (such as by reselling it, or by using it in a
consulting practice). However, you are encouraged to run the tool
on your own product in order to make it better.</p>
<p>ITS4 does more than just grep-type work. It allows arbitrary
handlers to refine the initial analysis. This version of ITS4 comes
with some simple handlers. Some of these handlers check for uses of
common string operations that often are not significant problems.
For example:</p>
<pre class="programlisting">
strcpy(buf, &quot;\n&quot;);
sprintf(buf, &quot;%d&quot;, i);
</pre>
<p>In the first case, ITS4 will look at the second argument to a
<tt class="function">strcpy</tt>. If it is a string constant, the
severity of the problem site is reduced to the lowest possible
level. The tool will not output this kind of problem in its
standard mode. In the second case, a similar reduction in severity
occurs, since the sprintf format string contains no <tt class=
"literal">%s</tt>'s.</p>
<p>The tool also has handlers that scan for file access race
conditions, similar to the prototype tool discussed in [<a href=
"#BD96">BD96</a>]. We slightly improve on their tool by allowing
for interprocedural and intermodular problems.</p>
<p>There are some technical limitations to this tool, many of which
we hope to improve in the future. We would like to have the help of
the security community. I am personally dedicated to improving this
tool, and Reliable Software Technologies is willing to put some
resources towards doing so. Changes from the community will
certainly be considered for inclusion in future ITS4 releases.</p>
<p>Currently, the weakest area of ITS4, where the input of the
security community is most important, is the vulnerability
database, which was largely taken from some very preliminary work
done by Tom O'Connor. It is perhaps a good start, but far from
complete. Many new things could be added, and the entries that do
exist can likely be improved substantially. For each database
entry, we have a description, a default severity, and a recommended
alternative. Generally, the descriptions are pretty scant, and the
severities are not overly well thought out.</p>
<p>The next area for improvement is the handlers. It would be great
to see people writing some good handlers, or even suggesting good
handlers, and then we could write them.</p>
<p>Beyond that, we are interested in the following:</p>
<div class="orderedlist">
<ol type="1">
<li>
<p>Flagging the allocation mechanism used on important variables
(e.g. stack-allocated buffers are usually easier to exploit than
heap-allocated buffers if there is an overflow).</p>
</li>
<li>
<p>Performing much better static analysis. We would probably like
to start by building some sort of heuristic alias analysis, and
then doing something similar to the analysis done in [<a href=
"#WF00">WF00</a>].</p>
</li>
</ol>
</div>
<p>We do have plans to ultimately do these things, but if other
people want to code them up and contribute to the project, that's
great. I've set up a mailing list for people who are interested in
helping out in any capacity. Hopefully we can get a good discussion
going that will improve the vulnerability database, and make ITS4 a
far more useful tool. The mailing list signup is available at:</p>
<p><a href="http://www.list.org/mailman/listinfo/its4" target=
"_top">http://www.list.org/mailman/listinfo/its4</a>.</p>
<p>J<span class="emphasis"><em>ohn Viega, Software Security Group
Co-founder Reliable Software Technologies, <tt class=
"email">&lt;<a href=
"mailto:viega@rstcorp.com">viega@rstcorp.com</a>&gt;</tt></em></span></p>
</div>
<div class="bibliography">
<div class="titlepage">
<h2><a name="d0e82" id="d0e82"></a>References:</h2>
</div>
<div class="bibliomixed"><a name="BD96" id="BD96"></a>
<p class="bibliomixed">[BD96] M. Bishop and M. Dilger. Checking for
race conditions in file accesses. Computing Systems, 9(2):131-152,
Spring 1996.</p>
</div>
<div class="bibliomixed"><a name="WF00" id="WF00"></a>
<p class="bibliomixed">[WF00] D. Wagner, J. Foster, E. Brewer, and
A. Aiken. A first step towards automated detection of buffer
overrun vulnerabilities. In Proceedings of the Year 2000 Network
and Distributed System Security Symposium (NDSS), pages 3-17, San
Diego, CA, 2000.</p>
</div>
</div>
<div class="footnotes"><br>
<hr class="c2" width="100">
<div class="footnote">
<p><sup>[<a name="ftn.d0e4" href="#d0e4" id="ftn.d0e4">1</a>]</sup>
Reprinted from the net with permission from the author</p>
</div>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
