<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Security Advancements at the Monastery</title>
	<atom:link href="http://blog.securitymonks.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.securitymonks.com</link>
	<description>Information about developments at the Monastery</description>
	<lastBuildDate>Fri, 03 Sep 2010 05:41:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Three Open Source IDS/IPS Engines: The Setup</title>
		<link>http://blog.securitymonks.com/2010/08/26/three-little-idsips-engines-build-their-open-source-solutions/</link>
		<comments>http://blog.securitymonks.com/2010/08/26/three-little-idsips-engines-build-their-open-source-solutions/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 07:08:28 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[Bro]]></category>
		<category><![CDATA[IDS]]></category>
		<category><![CDATA[OISF]]></category>
		<category><![CDATA[Snort]]></category>
		<category><![CDATA[Suricata]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dumbpig]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/2010/08/19/three-little-idsips-engines-build-their-open-source-solutions/</guid>
		<description><![CDATA[Confused over the different functionality and information IDS/IPS engines provide?  Are you looking for an open source solution?  There are options, each with different features and strengths.  To help determine what might work best in your environment, we will walk through the setup of three popular open source intrusion detection packages: Bro, [...]]]></description>
			<content:encoded><![CDATA[<p>Confused over the different functionality and information IDS/IPS engines provide?  Are you looking for an open source solution?  There are options, each with different features and strengths.  To help determine what might work best in your environment, we will walk through the setup of three popular open source intrusion detection packages: <a href="http://www.bro-ids.org">Bro</a>, <a href="http://www.snort.org">Snort</a>, and <a href="http://www.openinfosecfoundation.org">Suricata</a>.  Keep in mind, IDS/IPS engines are not simple setup and leave security solutions.  The systems need to be configured and tuned to the unique environment they are operating in.  While configuration and tuning are essential tasks, it will be considered outside the scope of this post.  In later posts, we will tune the systems and examine the results as we test out sample malicious traffic captures.  After trying the different open source IDS/IPS tools, the reader will be in a better position to judge how the software might meet the particular requirements of their organizations.</p>
<p><h2><b>Recent Controversy</b></h2>
</p>
<p>
There has been a bit of a verbal flare up between the folks behind Snort and Suricata.  Matt Jonkman, founder of <a href="http://www.emergingthreats.net">Emerging Threats</a> and OISF&#8217;s president, recent statement that &#8220;[Intrusion detection technology] has been stagnant for the last five years&#8221; [<a href="http://www.computerworld.com/s/article/9179436/DHS_vendors_unveil_open_source_intrusion_detection_engine">7</a>] did not sit well with Martin Roesch, Snort&#8217;s creator.  Roesch questioned Suricata&#8217;s stated benefits when he responded, &#8220;OISF has wrapped Suricata in some cool computer science concepts, but they have not delivered on their vision. [Suricata] offers a sub-set of Snort&#8217;s functionality at a fraction of its performance.&#8221; [<a href="http://www.networkworld.com/news/2010/072010-is-snort-dead.html?page=1<br />
">8</a>]  Roesch went on to say, &#8220;They&#8217;ve produced a clone of Snort that performs worse at taxpayer&#8217;s expense.&#8221;
</p>
<p>
Matt Olney, a senior research engineer for the Sourcefire Vulnerability Research Team (VRT) addressed the multi-threaded benefit when he wrote, &#8220;Trust me, if multi-threading were the answer, the industry would have moved there in short order.&#8221; [<a href="http://vrt-sourcefire.blogspot.com/2010/07/innovation-you-keep-using-that-word.html">10</a>]  Olney went on to quote results of an internal test pitting Snort against Suricata, &#8220;With rules loaded, Suricata runs up to about 200MB per second. Snort, with rules, hits 894MB per second with no drops.&#8221;
</p>
<p>
Jonkman questioned those finding when he wrote, &#8220;Those stats are ridiculous, and they refuse to publish details of the equipment and configuration used.&#8221;  Jonkman goes on to explain, &#8220;We know that we&#8217;re not, right now, cycle for cycle, faster than Snort &#8230; but we&#8217;re getting six times the performance as Snort on the same hardware, with version 1.0.&#8221;  Victor Julien, lead developer of Suricata, explain [<a href="http://www.inliniac.net/blog/2010/07/22/on-suricata-performance.html<br />
">14</a>], &#8220;Is Suricata faster than Snort on a single core cycle for cycle, tick for tick? No. It’s pretty clear we aren’t, I didn’t expect us to be either.  But we scale. We’ve had reports of running on a 32 core box and scaling to use all cores.&#8221;  Russ McRee, a senior security analyst / researcher and founder of holisticinfosec.org, adds, &#8220;Consider that an unnamed military body has tested Suricata versus Snort on a large scale platform (24 processors and 128GB of RAM) and saw a very clear 6-fold speed increase over a tuned Snort implementation on the same platform.&#8221;
</p>
<p><h2><b>Features</b><br />
</h2>
</p>
<p>
Russ McRee article on Suricata in August&#8217;s ISSA Journal [<a href="http://holisticinfosec.org/toolsmith/pdf/august2010.pdf">18</a>] contained a table comparing features, which we will add Bro information to:
</p>
<table border=1 cellspacing=5 cellpadding=5>
<tr>
<th>Features</th>
<th>Bro</th>
<th>Snort</th>
<th>Suricata</th>
</tr>
<tr>
<td>Multi-Threaded Processing</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td>Complete IPv6 Support</td>
<td>Yes</td>
<td>Some</td>
<td>Complete</td>
</tr>
<tr>
<td>IP Reputation</td>
<td>Somewhat</td>
<td>No</td>
<td>Yes (soon)</td>
</tr>
<tr>
<td>Automated Protocol Detection</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td>GPU Acceleration</td>
<td>No</td>
<td>No</td>
<td>Yes (soon)</td>
</tr>
<tr>
<td>Global Variables/Flowbits</td>
<td>Yes</td>
<td>No</td>
<td>Yes (soon)</td>
</tr>
<tr>
<td>Inline Windows Support</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td>GeoIP Lookups</td>
<td>Yes</td>
<td>No</td>
<td>Yes (soon)</td>
</tr>
<tr>
<td>Advanced HTTP Parsing</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td>HTTP Access Logging</td>
<td>Yes</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td>SMB Access Logging</td>
<td>Planned</td>
<td>No</td>
<td>Yes (soon)</td>
</tr>
<tr>
<td>HTTP Blocklist Lookups</td>
<td>Yes</td>
<td>No</td>
<td>Yes (soon)</td>
</tr>
<tr>
<td>Free</td>
<td>Yes</td>
<td>Some</td>
<td>Yes</td>
</tr>
</table>
<p>
<a href="http://www.linkedin.com/in/sethh">Seth Hall</a>, Information Security Detection-Response Architect at GE (and one of the top Bro developers), addressed the above table and pointed out some of the strong features of Bro.  Seth writes:</p>
<blockquote>
<ul>
<li><b>Multithreaded processing</b>: Work is ongoing on this, but nothing releasable yet. Bro does have a fully functional cluster deployment model which helps users to scale support on a single box and/or across multiple boxes.</li>
<li><b>IPv6 Support</b>: Due to a bug, which hopefully will be addressed by the next release, IPv6 support is unusable in large scale production.</li>
<li><b>IP reputation</b>: You could say that Bro has IP reputation, it&#8217;s easy to utilize lists of addresses at least. I&#8217;m going to be working heavily on an intelligence sources framework for Bro soon too which will be able to consume a wide range of intelligence sources including IP addresses.</li>
<li><b>Automated protocol detection</b>: There&#8217;s even an academic paper about it [19] if you&#8217;d like to find out exactly how it works.</li>
<li><b>Global variables/flowbits</b>: Bro support for this sort of thing is far beyond what anything else has inherently because Bro has a complete programming language.</li>
<li><b>GeoIP lookups</b>: I added that myself several years ago. Bro supports IPv6 geoip lookups in addition to IPv4 and ASN lookups using another database for libGeoIP.</li>
<li><b>Advanced HTTP Parsing</b>: Bro has had it for years.</li>
<li><b>HTTP Access Logging</b>: Definitely. My script [20] will be included in the next release too.</li>
<li><b>SMB Access Logging</b>:  This is something that I&#8217;m planning on tackling soon. I don&#8217;t know what the level of support for SMB is currently, but there is a parser already.</li>
<li><b>HTTP Blocklist lookups</b>: Yes, I consider this similar to the IP reputation and it&#8217;s going to be included in the intelligence sources framework. Some usage of URL lists is already included in a script that I distribute separately [21] but which will be in the next release of Bro.</li>
<li><b>Free</b>:  Bro is under the BSD license, so in my opinion it&#8217;s actually more free than Snort or Suricata which are both under the GPL and much more difficult to share code with.</li>
</ul>
</blockquote>
<p>
While Snort and Suricata have been a bit in the public spotlight recently, the developers of Bro have stayed clear of the recent verbal debate.  Bro is the third open source IDS/IPS engine we will be working with.  It is primarily funded by the National Science Foundation&#8217;s Strategic Technologies for the Internet program.  Robin Sommer this week announced [<a href="http://blog.icir.org/2010/08/major-nsf-funding-for-bro-development.html">26</a>] that the International Computer Science Institute (ICSI) and the National Center for Supercomputing Applications (NCSA) have been awarded a grant of almost $3M for extensive Bro development.  To quote Robin:<br />
<blockquote>The funded project aims specifically at addressing much of the feedback that we have received from Bro users over the years. It will enable us to refine many of the rough edges that the system has accumulated over time[*], improve Bro&#8217;s performance significantly, and also make it much easier for the community to contribute to the project.</p></blockquote>
<p>Expect some interesting work from the Bro camp.  Some of Bro&#8217;s current stated features and benefits [<a href="http://www.bro-ids.org/Features.html">15</a>] include:</p>
<ul>
<li><strong>Network Based</strong>: Bro is a network-based IDS.  It collects, filters, and analyzes traffic that passes through a specific network location.  A single Bro monitor, strategically placed at a key network junction, can be used to monitor all incoming and outgoing traffic for the entire site.  Bro does not use or require installation of client software on each individual, networked computer.</li>
<li><strong>Rich Application-Layer Analysis</strong>: A primary feature of Bro is that it includes detailed, parser-driven analysis of many popular application protocols.  The output of these analyzers is a stream of events that describe observed activity in semantically rich, high-level terms.  These events themselves do <em>not</em> constitute security alerts, but rather provide the input for further, stateful processing using Bro&#8217;s custom scripting language.</li>
<li><strong>Custom Scripting Language</strong>: Bro policy scripts are programs written in the Bro language.  They contain the &#8220;rules&#8221; that describe what sorts of activities are deemed troublesome.  They analyze the network activity and initiate actions based on the analysis.  Although the Bro language takes some time and effort to learn, once mastered, the Bro user can write or modify Bro policies to detect and alert on virtually any type of network activity.
</li>
<li><strong>Pre-written Policy Scripts</strong>: Bro comes with a rich set of policy scripts designed to detect the most common Internet attacks while limiting the number of false positives, i.e., alerts that confuse uninteresting activity with the important attack activity.  These supplied policy scripts will run &#8220;out of the box&#8221; and do not require knowledge of the Bro language or policy script mechanics.</li>
<li><strong>Powerful Signature Matching Facility</strong>: Bro policies incorporate a signature matching facility that looks for specific traffic content.  For Bro, these signatures are expressed as regular expressions, rather than fixed strings.  Bro adds a great deal of power to its signature-matching capability because of its rich language.  This allows Bro to not only examine the network content, but to understand the context of the signature, greatly reducing the number of false positives.  Bro comes with a set of high value signatures policies, selected for their high detection and low false positive characteristics.</li>
<li><strong>Network Traffic Analysis</strong>: Bro not only looks for signatures, but can also analyze network protocols, connections, transactions, data amounts, and many other network characteristics.  It has powerful facilities for storing information about past activity and incorporating it into analyses of new activity. </li>
<li><strong>Detection Followed by Action</strong>: Bro policy scripts can generate output files recording the activity seen on the network (including normal, non-attack activity).  They can also generate problem alerts to event logs, including the operating system syslog facility.  In addition, scripts can execute programs, which can, in turn, send e-mail messages, page the on-call staff, automatically terminate existing connections, or, with appropriate additional software, insert access control blocks into a router&#8217;s access control list.  With Bro&#8217;s ability to execute programs at the operating system level, the actions that Bro can initiate are only limited by the computer and network capabilities that support Bro.</li>
</ul>
<p>
In my previous post, &#8220;Snort 3: The Next Generation&#8221; [<a href="http://blog.securitymonks.com/2008/10/20/snort-3-the-next-generation/">4</a>], Marty provided a roadmap of where Snort is heading.  While changes have since been made as Snort develops, the philosophy remains the same.  Sourcefire is moving forward on a solid security framework.  See the recent work on the Sourcefire&#8217;s Razorback framework [<a href="http://iweb.dl.sourceforge.net/project/razorbacktm/Whitepapers/razorback-whitepaper-0.1.pdf">24</a>] and [<a href="https://www.defcon.org/images/defcon-18/dc-18-presentations/Mullen-Pentney/DEFCON-18-Mullen-Pentney-Razorback.pdf">25</a>].  Olney described Razorback in this way [<a href="http://vrt-sourcefire.blogspot.com/2010/07/innovation-you-keep-using-that-word.html">10</a>], &#8220;It isn&#8217;t Snort, it isn&#8217;t ClamAV, and it isn&#8217;t Suricata.  It&#8217;s a new approach to the detection problem, and was built from the ground up in close collaboration with groups that are facing APT-level threats.  It may not be perfect, it may not even be the right answer (but we think it is), but it is truly innovative.&#8221;
</p>
<p>
More immediate, examine the the improved features Snort 2.9.0 Beta  [<a href="https://s3.amazonaws.com/snort.org/snort-beta/20100727/release_notes_290_beta.txt?AWSAccessKeyId=AKIAJJSHU7YNPLE5MKOQ&#038;Expires=1282246315&#038;Signature=jchbdD6d3G0ncaqOkrQAps6ZV5M%3D">16</a>]:</p>
<ul>
<li>Updates to HTTP Inspect to extract and log IP addresses from X-Forward-For and True-Client-IP header fields when Snort generates events on HTTP traffic.</li>
<li>Updates to SMTP preprocessor to support MIME attachment decoding across multiple packets.</li>
<li>Updates to the Snort packet decoders for IPv6 for improvements to anomaly detection.</li>
</ul>
<p>The new features include:</p>
<ul>
<li>Feature rich IPS mode including improvements to Stream for inline deployments.  Additionally a common active response API is used for all packet responses, including those from Stream, Respond, or React.  A new response module, respond3, supports the syntax of both resp &#038; resp2, including strafing for passive deployments.  When Snort is deployed inline, a new preprocessor<br />
has been added to handle packet normalization to allow Snort to interpret a packet the same way as the receiving host.</li>
<li>Use of a Data Acquisition API (DAQ) that supports many different packet access methods including libpcap, netfilterq, IPFW, and afpacket.  For libpcap, version 1.0 or higher is now required.  The DAQ library can be updated independently from Snort and is a separate module that Snort links to.</li>
<li>A new rule option &#8216;byte_extract&#8217; that allows extracted values to be used in subsequent rule options for isdataat, byte_test, byte_jump, and content distance/within/depth/offset.</li>
<li>Two new rule options to support base64 decoding of certain pieces of data and inspection of the base64 data via subsequent rule options.</li>
<li>Added a new pattern matcher that supports Intel&#8217;s Quick Assist  Technology for improved performance on supported hardware platforms.  Visit http://www.intel.com to find out more about Intel Quick Assist.</li>
</ul>
<p>Last, but not least, several characteristics OSIF report Suricata has to handle today&#8217;s threat are [<a href="http://www.businesswire.com/portal/site/home/permalink/?ndmViewId=news_view&#038;newsId=20100719005970&#038;newsLang=en<br />
">12</a>]:</p>
<ul>
<li class="bwlistitemmarginbottom">
     <b>An open source engine.</b> The power of the community works well<br />
     within IT security defenses, as a community is more effective than a<br />
     single organization at capturing characteristics of emerging threats.
    </li>
<li class="bwlistitemmarginbottom">
     <b>Multi-threaded.</b> A multi-threaded architecture allows the engine<br />
     to take advantage of the multiple core and multiple processor<br />
     architectures of today’s systems.
    </li>
<li class="bwlistitemmarginbottom">
     <b>Supports IP reputation.</b> By incorporating reputation <i>and</i><br />
     signatures into its engine, Suricata can flag traffic from known<br />
     nefarious origins.
    </li>
<li class="bwlistitemmarginbottom">
     <b>Automated protocol detection.</b> Preprocessors automatically<br />
     identify the protocol used in a network stream and apply the<br />
     appropriate rules, regardless of numerical port.
    </li>
</ul>
<p>
For additional background information, I have written several past posts on IDS/IPS (see &#8220;Suricata: A Next Generation IDS/IPS Engine&#8221; [<a href="http://blog.securitymonks.com/2010/01/05/suricata-a-next-generation-idsips-engine/">2</a>], &#8220;Installing Bro IDS 1.4&#8243; [<a href="http://blog.securitymonks.com/2008/10/28/installing-bro-ids-14/">3</a>], &#8220;Snort 3: The Next Generation&#8221; [<a href="http://blog.securitymonks.com/2008/10/20/snort-3-the-next-generation/<br />
">4</a>], “Blacklisting with Snort”, [<a href="http://blog.securitymonks.com/2009/07/19/blacklisting-with-snort/">17</a>], &#8220;IDS/IPS: The Mark Twain of the Security World&#8221; [<a href="http://blog.securitymonks.com/2008/08/09/idsips-the-mark-twain-of-the-security-world/">5</a>], and &#8220;IDS&#8221; [<a href="http://blog.securitymonks.com/2007/06/17/ids/">6]). I will not repeat that information in this post.<br />
</a>
</p>
<p><h2><b>Version</b></h2>
</p>
<p>
We will be setting these software packages up to be used on a development machine.  The exchange between the Snort and Suricata was focused on timing and features.  For that reason, I am interested in maximizing features verses stability.  We will be using the latest software, which may mean beta or even CVS versions.
</p>
<p><h2><b>Supporting Software</b></h2>
</p>
<p>
The three IDS/IPS engines share most of the supporting software requirements, depending on configuration options.  Below are a few required libraries and software packages:
</p>
<table border=1 width="90%">
<tr>
<th width=100 align=left>Package</th>
<th width=300 align=left>Description</th>
<th width=20 align=left>Required By</th>
</tr>
<tr>
<td><a href="http://sources.redhat.com/autobook/" onclick="javascript:pageTracker._trackPageview('/outbound/article/sources.redhat.com');">Autotools</a></td>
<td>The &#8220;autotools&#8221; consist of autoconf, automake, and libtool.  These will likely be installed on your system.  You need the autotools if you will be using source from the Bro&#8217;s Subversion repository.  You will need to run autogen.sh after you check out the code.  We will go through the steps below.
</td>
<td>Bro, Suricata</td>
</tr>
<tr>
<td><a href="http://www.isc.org/sw/bind/index.php" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.isc.org');">BIND8</a> headers and libraries</td>
<td>Most OSs will have BIND installed by default.  BIND (Berkeley Internet Name Domain) is an implementation of the Domain Name System (DNS) protocols.</td>
<td>Bro</td>
</tr>
<tr>
<td><a href="http://www.gnu.org/software/bison/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.gnu.org');">Bison </a>or byacc</td>
<td>Most OSs will have bison installed by default.  Bison is a general-purpose parser generator that converts an annotated context-free grammar into an LALR(1) or GLR parser for that grammar.</td>
<td>Bro, Suricata</td>
</tr>
<tr>
<td><a href="http://flex.sourceforge.net/" onclick="javascript:pageTracker._trackPageview('/outbound/article/flex.sourceforge.net');">Flex</a></td>
<td>Most OSs will have flex installed by default. Flex is a tool for generating scanners. A scanner, sometimes called a tokenizer, is a program which recognizes lexical patterns in text.</td>
<td>Bro, Suricata</td>
</tr>
<tr>
<td><a href="http://libdnet.sourceforge.net/" >Libdnet</a></td>
<td>Libdnet provides a simplified, portable interface to several low-level networking routines.</td>
<td>Snort</td>
</tr>
<tr>
<td><a href="http://www.tcpdump.org/#latest" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.tcpdump.org');">Libpcap</a></td>
<td>Most OSs will have libpcap installed by default.  It is the packet capture library.  You may need to install it with support large files (files large than 2G).   If you have a Linux kernnel, you will want to configure libpcap for PF_RING support.</td>
<td>Bro, Snort, Suricata</td>
</tr>
<tr>
<td><a href="http://pyyaml.org/wiki/LibYAML">LibYAML</a></td>
<td>LibYAML is a YAML parser and emitter written in C that is used to parse the configuration file.</td>
<td>Suricata</td>
</tr>
<tr>
<td><a href="http://www.pcre.org/" >PCRE</a></td>
<td>The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5.</td>
<td>Snort</td>
</tr>
</table>
<p>
Below are a few libraries and software packages that are not required, but you should consider installing.  The packages, except GeoIP and Google Perftools, should have binaries available for your OS.  Use these ports to install the packages and save yourself the trouble of having to keep the software updated.  We will go through through the installation of GeoIP and Google Perftools from source code.
</p>
<table border=1 width="90%">
<tr>
<th width=100 align=left>Package</th>
<th width=300 align=left>Description</th>
<th width=20 align=left>Required By</th>
</tr>
<tr>
<td><a href="http://www.gnupg.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.gnupg.org');">GnuPG</a></td>
<td>Free implementation of the OpenPGP standard. </td>
<td>Bro, Suricata</td>
</tr>
<tr>
<td><a href="http://people.redhat.com/sgrubb/libcap-ng/">libcap-ng</a></td>
<td> The libcap-ng library is intended to make programming with posix capabilities much easier than the traditional libcap library.</td>
<td>Suricata</td>
</tr>
<tr>
<td><a href="http://www.maxmind.com/app/ip-lo" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.maxmind.com');">LibGeoIP</a></td>
<td>ability to determine the location of IP addresses.</td>
<td>Bro, Suricata (Future)</td>
</tr>
<tr>
<td>Libmagic</td>
<td>Add ability to determine file types, as with the ftp analyzer.</td>
<td>Bro</td>
</tr>
<tr>
<td><a href="http://github.com/sam-github/libnet">libnet</a></td>
<td>Libnet is a generic networking API that provides access to several protocols.</td>
<td>Suricata</td>
</tr>
<tr>
<td><a href="http://www.netfilter.org/projects/libnetfilter_queue/index.html">libnetfilter_queue</a> </td>
<td>libnetfilter_queue is a userspace library providing an API to packets that have been queued by the kernel packet filter. </td>
<td>Suricata</td>
</tr>
<tr>
<td><a href="http://www.netfilter.org/projects/libnfnetlink/index.html">libnfnetlink</a></td>
<td>libnfnetlink is the low-level library for netfilter related kernel/userspace communication. It provides a generic messaging infrastructure for in-kernel netfilter subsystems (such as nfnetlink_log, nfnetlink_queue, nfnetlink_conntrack) and their respective users and/or management tools in userspace. </td>
<td>Suricata</td>
</tr>
<tr>
<td><a href="http://www.openssl.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.openssl.org');">OpenSSL</a></td>
<td>Tough to image a system not having OpenSSL installed.  It is needed to analyze ssh certificates by the HTTP analyzer and for encrypted Bro to Bro communication.</td>
<td>Bro</td>
</tr>
<tr>
<td><a href="http://www.ntop.org/PF_RING.html">PF_RING</a></td>
<td>PF_RING is a new type of network socket that dramatically improves the packet capture speed.</td>
<td>Bro, Snort, Suricata</td>
</tr>
<tr>
<td><a href="http://www.zlib.net/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.zlib.net');">zLib</a></td>
<td>Libz is a compression library. It is used for decompressing HTTP bodies by the HTTP analyzer, and for compressed Bro-to-Bro communication.</td>
<td>Bro</td>
</tr>
<tr>
<td>XML Analyzer</td>
<td>The XML analyzer is highly-experimental code written by Tobias Kiesling.  Installation of <a href="http://xerces.apache.org/xerces-c/">Xerces-C++</a> and <a href="http://xqilla.sourceforge.net/HomePage">XQilla</a> are required to use the <a href="http://www.bro-ids.org/wiki/index.php/XML_Analyzer" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.bro-ids.org');">XML analyzer</a>.  The code allows you to be able to easily adjust analysis capabilities to specific XML data formats. Xerces-C++ is a validating XML parser written in a portable subset of C++.  XQilla is an XQuery and XPath 2 library and command line utility written in C++.
</td>
<td>Bro, Suricata (Future)</td>
</tr>
</table>
<h2><b>Installing Supporting Software</b></h2>
<p>Which libraries and supporting software you install will be dependent on which options you use in configuring your IDS/IPS engines.  If you can install packages (and not source), carefully consider this option.  It will make maintenance easier.  We will walk through the source installation for demonstration purposes.
</p>
<p><h4><b>Libcap-ng</b></h4>
</p>
<p>
For Linux users, the libcap-ng will be required for dropping privileges.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# cd /usr/local/src
/usr/local/src root# wget http://people.redhat.com/sgrubb/libcap-ng/libcap-ng-0.6.4.tar.gz
/usr/local/src root# tar libcap-ng-0.6.4.tar.gz
/usr/local/src  root# cd libcap-ng-0.6.4
/usr/local/src/libcap-ng-0.6.4 root# ./configure
/usr/local/src/libcap-ng-0.6.4 root# make
/usr/local/src/libcap-ng-0.6.4 root# make install
</pre>
</td>
</tr>
</tbody>
</table>
<p><h4><strong>Libdnet</strong></h4>
</p>
<p>Make sure Libdnet is in your library path:
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode> root# /sbin/ldconfig -p | grep -i libdnet
libdnet32.so.1 (libc6) =&gt; /usr/lib/libdnet32.so.1
libdnet32.so (libc6) =&gt; /usr/lib/libdnet32.so
</pre>
</td>
</tr>
</tbody>
</table>
<p>
If you do not get a path returned, you will need to install libdnet (use &#8211;prefix if it needs to be installed in a special location).  We will pull down it down the CVS version, because we will need the sctp.h file to be installed.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# cd /usr/local/src
/usr/local/src root# wget svn checkout http://libdnet.googlecode.com/svn/trunk/ libdnet-cvs
/usr/local/src root# cd libdnet-cvs
/usr/local/src/libdnet-cvs root# ./configure
/usr/local/src/libdnet-cvs root# make
/usr/local/src/libdnet-cvs root# make install
/usr/local/src/libdnet-cvs root# cp include/dnet/sctp.h /usr/local/include/dnet
</pre>
</td>
</tr>
</tbody>
</table>
<p>
If you have installed libdnet in a special location, make sure to include its path in /etc/ld.so.conf.
</p>
<p><h4><b>Libnet</b></h4>
</p>
<p>
The library libnet will be required for packet-injecting.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# cd /usr/local/src
/usr/local/src root# wget http://github.com/sam-github/libnet/tarball/libnet-1.1.4 \
-O  libnet-1.1.4.tgz
/usr/local/src root# tar xzf libnet-1.1.4.tgz
/usr/local/src root# cd sam-github-libnet-d2bedb5
/usr/local/src/sam-github-libnet-d2bedb5 root# ./autogen.sh
/usr/local/src/sam-github-libnet-d2bedb5 root# ./configure
/usr/local/src/sam-github-libnet-d2bedb5 root# make
/usr/local/src/sam-github-libnet-d2bedb5 root# make install
</pre>
</td>
</tr>
</tbody>
</table>
<p><h4><b>Libnfnetlink and Libnetfilter</b></h4>
</p>
<p>
If you plan on using the IPS capabilities (inline support), you will need to install libnfnetlink and libnfnetlink-queue.
</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
root# cd /usr/local/src
/usr/local/src root# wget \
ftp://ftp.netfilter.org/pub/libnfnetlink/snapshot/libnfnetlink-20100823.tar.bz2
/usr/local/src root# bunzip2 libnfnetlink-20100823.tar.bz2
/usr/local/src root# tar xf libnfnetlink-20100823.tar
/usr/local/src root# cd libnfnetlink-20100823
/usr/local/src/libnfnetlink-20100823 root# ./autogen.sh
/usr/local/src/libnfnetlink-20100823 root# ./configure
/usr/local/src/libnfnetlink-20100823 root# make
/usr/local/src/libnfnetlink-20100823 root# make check
/usr/local/src/libnfnetlink-20100823 root# make install
/usr/local/src/libnfnetlink-20100823 root# cd /usr/local/src
/usr/local/src root# wget \
ftp://ftp.netfilter.org/pub/libnetfilter_queue/snapshot/libnetfilter_queue-20100824.tar.bz2
/usr/local/src root# md5sum libnetfilter_queue-20100824.tar.bz2
69ce1eb24632bfed050cd936e0fe660c  libnetfilter_queue-20100824.tar.bz2
/usr/local/src root# bunzip2 libnetfilter_queue-20100824.tar.bz2
/usr/local/src root# tar xf libnetfilter_queue-20100824.tar
/usr/local/src root# cd libnetfilter_queue-20100824
/usr/local/src/libnetfilter_queue-20100824 root# ./autogen.sh
/usr/local/src/libnetfilter_queue-20100824 root# PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure
/usr/local/src/libnetfilter_queue-20100824 root# make
/usr/local/src/libnetfilter_queue-20100824 root# make check
/usr/local/src/libnetfilter_queue-20100824 root# make install
</pre>
</td>
</table>
<p><h4><strong>Libpcap and PF_RING</strong></h4>
</p>
<p>
<a href="http://blog.securitymonks.com/wp-content/uploads/2010/08/PF_RING1.png"><img src="http://blog.securitymonks.com/wp-content/uploads/2010/08/PF_RING1.png" align="right" width=200 /></a>If you are running on a system with a Linux kernels 2.6.x or greater, you will want to install PF_RING on your system.  PF_RING is a network socket that can greatly improve packet capture speed.  PF_RING polls packets from NICs by means of Linux NAPI.  NAPI (&#8220;New API&#8221;) is a modification to the device driver packet processing framework, which is designed to improve the performance of high-speed networking. NAPI copies packets from the NIC to PF_RING circular buffer.  The application then reads packets from the ring.  PF_RING can distribute incoming packets to multiple rings (hence multiple applications) simultaneously. Please see &#8220;Exploiting Commodity Multicore Systems for Network Traffic Analysis&#8221; [<a href =”http://luca.ntop.org/MulticorePacketCapture.pdf”>23</a>] for additional information.
</p>
<p>
We are going to walk through a specific example with certain ethernet card drivers and a particular linux kernel.  Please make sure not to copy the commands blindly.  Adjust to your system.  The below is for demonstration purposes.  These steps are based on Gunjan Bansal blog [<a href="http://gunjan-bansal.blogspot.com/2010/06/installation-guide-for-pfring.html">22</a>].  Please see Gunjan’s blog for additional explanation.
</p>
<p>
First step, provide some basic information on the system.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# /sbin/ifconfig -a
<b>eth0</b>      Link encap:Ethernet  HWaddr 00:00:00:00:00:00
root# /sbin/ethtool -i <b>eth0</b>
driver: <b>e1000e</b>
version: 1.0.2-k3.1
firmware-version: 1.3-1
bus-info: 0000:00:19.0
root# /bin/uname -r
<b>2.6.18-194.8.1.el5PAE</b>
</pre>
</td>
</tr>
</tbody>
</table>
<p>
In this example I will be working off the ethernet interface <b>eth0</b> and the ethernet driver <b>e1000e</b>.  The kernel release is <b>2.6.18-194.8.1.el5PAE</b>.
</p>
<p>
Second step is to download the PF_RING software from ntop through the SVN repository, configure, compile, and install.  The “/sbin” directory will need to be in your PATH or you will get a complaint about “ldconfig: Command not found.”
</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
root# cd /usr/local/src
root# PATH=$PATH:/sbin
/usr/local/src root# mkdir pf_ring &#038;&#038; cd pf_ring
/usr/local/src/pf_ring root# svn co https://svn.ntop.org/svn/ntop/trunk/PF_RING/
/usr/local/src/pf_ring root# cd PF_RING/kernel
/usr/local/src/pf_ring/PF_RING/kernel root# make
/usr/local/src/pf_ring/PF_RING/kernel root# make install
/usr/local/src/pf_ring/PF_RING/kernel root# cd ../userland/lib
/usr/local/src/pf_ring/PF_RING/userland/lib root# make
/usr/local/src/pf_ring/PF_RING/userland/lib root# make install
</pre>
</td>
</table>
<p>
Under some OSs, you need to compile <a href="http://www.tcpdump.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.tcpdump.org');">libpcap</a> to support large files (files large than 2G). We are going to install the resulting libpcap under /usr/local. Large file support is required if the following kind of error is produced:
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# ls -lh /data/ids/full2.pcap
-rw-r--r-- 1 root root 12G Oct 26 10:01 /data/ids/full2.pcap
root# /usr/local/snort/bin/snort -o -A none -c \
/usr/local/snort/conf/snort.conf -l /logs/snort/logs \
-r /data/ids/full2.pcap
Error getting stat on pcap file: /data/ids/full2.pcap:
Value too large for defined data type
ERROR: Error getting pcaps
Fatal Error, Quitting..
</pre>
</td>
</tr>
</tbody>
</table>
<p>
To compile large file support into libpcap:
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
/usr/local/src/pf_ring/PF_RING/userland/lib root# cd ../libpcap-1.0.0-ring/
/usr/local/src/pf_ring/userland/libpcap-1.0.0-ring root# ./configure --prefix=/usr/local \
CFLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE \
-D_FILE_OFFSET_BITS=64"
/usr/local/src/pf_ring/userland/libpcap-1.0.0-ring root# make
/usr/local/src/pf_ring/userland/libpcap-1.0.0-ring root# make shared
/usr/local/src/pf_ring/userland/libpcap-1.0.0-ring root# make install
/usr/local/src/pf_ring/userland/libpcap-1.0.0-ring root# make install-shared
</pre>
</td>
</tr>
</tbody>
</table>
<p>
By configuring tcpdump with support for PF_RING, all applications (tcpdump and our IDS/IPS engines) will be able to access simultaneously the PF_RING circular buffer.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
/usr/local/src/pf_ring/userland/libpcap-1.0.0-ring root# cd ../tcpdump-4.0.0
/usr/local/src/pf_ring/userland/tcpdump-4.0.0 root# CFLAGS="-D_LARGEFILE_SOURCE \
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS="-lpfring -lpcap" LD_LIBRARY_PATH="/usr/lib:/usr/local/lib" ./configure
/usr/local/src/pf_ring/userland/tcpdump-4.0.0 root# make
/usr/local/src/pf_ring/userland/tcpdump-4.0.0 root# make install
</pre>
</td>
</tr>
</tbody>
</table>
<p>
Replace the ethernet driver.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
/usr/local/src/pf_ring/userland/tcpdump-4.0.0 root# cd ../../drivers/intel/<b>e1000e</b>-1.0.15/src
/usr/local/src/pf_ring/PF_RING/drivers/intel/<b>e1000e</b>-1.0.15/src root# make
/usr/local/src/pf_ring/PF_RING/drivers/intel/<b>e1000e</b>-1.0.15/src root# make install
</pre>
</td>
</tr>
</tbody>
</table>
<p>
The third step is to activate PF_RING if its not already activated.  Use lsmod to check if pf_ring is started or not.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
/usr/local/src/pf_ring/PF_RING/drivers/intel/<b>e1000e</b>-1.0.15/src root# /sbin/lsmod | grep pf_ring
pf_ring                46680  0
/usr/local/src/pf_ring/PF_RING/drivers/intel/<b>e1000e</b>-1.0.15/src root# cd \
/lib/modules/<b>2.6.18-194.8.1.el5PAE</b>/kernel/net/pf_ring
/lib/modules/<b>2.6.18-194.8.1.el5PAE</b>/kernel/net/pf_ring root# /sbin/insmod \
pf_ring.ko transparent_mode=1
/lib/modules/<b>2.6.18-194.8.1.el5PAE</b>/kernel/net/pf_ring root# cd \
../../drivers/net/<b>e1000e</b>
</pre>
</td>
</tr>
</tbody>
</table>
<p>
Step four, you will unload the ethernet card driver (<b>e1000e</b>) and load the new driver.  Keep in mind, unloading the driver means ethernet access will be lost.  It is wise not to issue this command remotely.
</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
/lib/modules/2.6.18-194.8.1.el5PAE/kernel/drivers/net/<b>e1000e</b> root# /sbin/rmmod \
<b>e1000e</b> ; /sbin/insmod <b>e1000e</b>.ko
</pre>
</td>
</table>
<p>
You now are PF_RING enabled.
</p>
<p><h4>LibYAML</h4>
</p>
<p>
The yaml library will be required for parsing Suricata configuration file.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# cd /usr/local/src
/usr/local/src root# wget http://pyyaml.org/download/libyaml/yaml-0.1.3.tar.gz
/usr/local/src root# tar xzf yaml-0.1.3.tar.gz
/usr/local/src root# cd yaml-0.1.3
/usr/local/src/yaml-0.1.3 root# ./configure
/usr/local/src/yaml-0.1.3 root# make
/usr/local/src/yaml-0.1.3 root# make check
/usr/local/src/yaml-0.1.3 root# make install
</pre>
</td>
</tr>
</tbody>
</table>
<p><h4><b>GeoIP Installation and Configuration</b></h4>
</p>
<p>
<a href="http://www.maxmind.com/app/ip-lo" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.maxmind.com');">MaxMind GeoIP</a> is a collection of APIs for looking up the location of an IP address.  There is a collection of <a href="http://www.maxmind.com/app/geolitecity" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.maxmind.com');">free GeoLite databases</a>, which are not as accurate as the GeoIP databases, but will do for starting out and testing with Bro.  To setup GeoIP for use with Bro, please follow the commands below.
</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
root# cd /usr/local/src
/usr/local/src root# wget http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
/usr/local/src root# gunzip GeoLiteCity.dat.gz
/usr/local/src root# mkdir -p /usr/local/share/GeoIP
/usr/local/src root# mv GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat
/usr/local/src root# wget http://www.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
/usr/local/src root# tar xzf GeoIP.tar.gz
/usr/local/src root# cd  GeoIP-1.4.6
/usr/local/src/GeoIP-1.4.6 root# ./configure
/usr/local/src/GeoIP-1.4.6 root# make
/usr/local/src/GeoIP-1.4.6 root# make check
/usr/local/src/GeoIP-1.4.6 root# make install
</pre>
</td>
</table>
<p>
Make sure <strong>/usr/local/lib</strong> is placed into your library path.
</p>
<p><h4><b>Google Perftools Installation and Configuration</b></h4>
</p>
<p>
Google&#8217;s perftools is a collection of a high-performance multi-threaded malloc() implementation and some performance analysis tools.  Google&#8217;s perftools have replaced mpatrol for leak-checking and heap-profiling.  We will compile Bro with <strong>&#8211;enable-perftools</strong>.  By default, perftools will install under /usr/local directory.  With perftools compiled into Bro, there are two command-line options made available:
</p>
<table border=1 width="90%">
<tr>
<th width=40 align=left>Option</th>
<th width=360 align=left>What the option controls</th>
</tr>
<tr>
<td>-m</td>
<td>turns on leak checking of the main packet loop, with some uninteresting leaks are suppressed.  Currently, with one exception (the RPC analyzer; problem not yet found), it reports no leaks when running the test suite.</td>
</tr>
<tr>
<td>-M</td>
<td>turns on heap profiling: Bro will take a snapshot of the heap before starting the main packet loop and another one when finished.</td>
</tr>
</table>
<p>
To help with the installation of Google&#8217;s perftool, the ICSI Networking Group has written a post &#8220;<a href="http://blog.icir.org/2008/02/making-sure-your-bro-code-does-not-leak.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/blog.icir.org');">Making Sure Your Bro Code Does Not Leak</a>.&#8221;  The post will provide additional information.  The basic steps to install perftools are:
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# cd /usr/local/src
/usr/local/src root# wget http://google-perftools.googlecode.com/files/google-perftools-1.6.tar.gz
/usr/local/src root# tar xzf google-perftools-1.6.tar.gz
/usr/local/src root# cd google-perftools-1.6
/usr/local/src/google-perftools-1.6 root# ./configure
/usr/local/src/google-perftools-1.6 root# make
/usr/local/src/google-perftools-1.6 root# make check
/usr/local/src/google-perftools-1.6 root# make install
</pre>
</td>
</tr>
</tbody>
</table>
</p>
<p>
<h4><strong>PCRE (pcre-8.10)</strong></h4>
</p>
<p>The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5. If you can install PCRE via a binary specific to your operating system, that is the best way to install in order to avoid having to keep the software up-to-date. Below are the instructions for installing the software from source.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# cd /usr/local/src
/usr/local/src root# wget \
<a class=moz-txt-link-freetext href="http://downloads.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.tar.gz">http://downloads.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.tar.gz</a>
/usr/local/src root# wget \
<a class=moz-txt-link-freetext href="http://sourceforge.net/projects/pcre/files/pcre/8.10/pcre-8.10.tar.gz.sig/download">http://sourceforge.net/projects/pcre/files/pcre/8.10/pcre-8.10.tar.gz.sig/download</a>
/usr/local/src root# gpg --verify pcre-8.10.tar.gz.sig pcre-8.10.tar.gz
/usr/local/src root# tar xzf pcre-8.10.tar.gz
/usr/local/src root# cd pcre-8.10
/usr/local/src/pcre-8.10 root# ./configure --prefix=/usr/local/pcre
/usr/local/src/pcre-8.10 root# make
/usr/local/src/pcre-8.10 root# make test
/usr/local/src/pcre-8.10 root# make install
</pre>
</td>
</tr>
</tbody>
</table>
<p><h4><b>XML Analyzer</b></h4>
</p>
<p>
The XML analyzer is highly-experimental code written by Tobias Kiesling.  Installation of Xerces-C++ and XQilla is required to use the <a href="http://www.bro-ids.org/wiki/index.php/XML_Analyzer" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.bro-ids.org');">XML analyzer</a>.  The code allows you to be able to easily adjust analysis capabilities to specific XML data formats. Xerces-C++ is a validating XML parser written in a portable subset of C++.  XQilla is an XQuery and XPath 2 library and command line utility written in C++.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# cd /usr/local/src
/usr/local/src root# wget http://downloads.sourceforge.net/xqilla/XQilla-2.2.4.tar.gz
/usr/local/src root# wget http://mirror.its.uidaho.edu/pub/apache/xerces/c/3/sources/xerces-c-3.1.1.tar.gz
/usr/local/src root#  md5sum xerces-c-3.1.1.tar.gz
6a8ec45d83c8cfb1584c5a5345cb51ae  xerces-c-3.1.1.tar.gz
/usr/local/src root# tar xzf xerces-c-3.1.1.tar.gz
/usr/local/src root# tar xzf XQilla-2.2.4.tar.gz
/usr/local/src root# ln -s XQilla-2.2.4 xqilla
/usr/local/src root# cd  xerces-c-3.1.1
/usr/local/src/xerces-c-3.1.1 root# ./configure
/usr/local/src/xerces-c-3.1.1 root# make
/usr/local/src/xerces-c-3.1.1 root# make check
/usr/local/src/xerces-c-3.1.1 root# make install
</pre>
</td>
</tr>
</tbody>
</table>
<p>
With Xerces-C++, configure and install XQilla.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# cd /usr/local/src/xqilla/
/usr/local/src/xqilla root# ./configure --with-xerces=/usr/local/src/xerces-c-3.1.1/
/usr/local/src/xqilla root# make
/usr/local/src/xqilla root# make install
</pre>
</td>
</tr>
</tbody>
</table>
<p><h2><b>Bro Setup</b></h2>
</p>
<p>
We will be working off the instructions previously posted in &#8220;Installing Bro IDS 1.4&#8243; [<a href="http://blog.securitymonks.com/2008/10/28/installing-bro-ids-14/">3</a>], just updating the material to reflect the requirements of the current Bro software.  There a few options when installing Bro.  Bro was not developed for the <a href="http://en.wikipedia.org/wiki/Pointy_Haired_Boss" onclick="javascript:pageTracker._trackPageview('/outbound/article/en.wikipedia.org');">PHB</a>.  Advance security software provides the power to the user, with all the options to adapt it to your environment.  To quote the Bro site, &#8220;Bro has been developed primarily as a research platform for intrusion detection and traffic analysis. It is not intended for someone seeking an &#8216;out of the box&#8217; solution. Bro is designed for use by Unix experts who place a premium on the ability to extend an intrusion detection system with new functionality as needed, which can greatly aid with tracking evolving attacker techniques as well as inevitable changes to a site&#8217;s environment and security policy requirements.&#8221;  With the Unix experts in mind, we will go through the steps involved to install both the stable and the development versions of Bro.  </p>
<h4><strong>Current Stable Version</strong></h4>
<p>The current version should be the most stable.  To install, follow these commands:
</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
root# cd /usr/local/src
/usr/local/src root# wget ftp://bro-ids.org/bro-1.5-release.tar.gz
/usr/local/src root# tar xzf bro-1.5-release.tar.gz
/usr/local/src root# cd bro-1.5.1
</pre>
</td>
</table>
<p>
The configuration and installations appears below.
</p>
<p><h4><strong>Subversion Trunk</strong></h4>
</p>
<p>
Reading the posts on the <a href="http://mailman.icsi.berkeley.edu/pipermail/bro/" onclick="javascript:pageTracker._trackPageview('/outbound/article/mailman.icsi.berkeley.edu');">Bro mailing list</a>, reveals that modifications have already been made to the current release.  Fixes are being made continuously.  These changes, while fixing problems, might introduce new problems.  You do have the option of getting the most up-to-date code possible through the subversion repository.  The Bro development team has made available two subparts of the repository: the trunk and development branches.  The trunk is the main development head from which releases are made on a regular basis.  It should be fairly stable with changes passing a regression suite to ensure the code do not break existing functionality.  It is still considered experimental and not suitable for critical deployment.  Below is how to download code from the trunk.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# cd /usr/local/src
/usr/local/src root# mkdir bro-cvs
/usr/local/src/bro-cvs root# cd bro-cvs
/usr/local/src/bro-cvs root# svn checkout http://svn.icir.org/bro/trunk/bro
/usr/local/src/bro-cvs root# mv bro bro-1.5.1.cvs
/usr/local/src/bro-cvs root# cd bro-1.5.1.cvs
/usr/local/src/bro-cvs/bro-1.5.1.cvs root# ./autogen.sh
</pre>
</td>
</tr>
</tbody>
</table>
<p><h4><strong>Robin&#8217;s Development Branch</strong></h4>
</p>
<p>
The developers merge their work into the the Bro subversion trunk.  Robin Sommer has a separate branch which contains experimental code for:</p>
<ul>
<li>the Bro Cluster framework</li>
<li>NetFlow support (by Bernhard Ager)</li>
<li>a BitTorrent analyzer (by Nadi Sarrar and Bernhard Ager)</li>
<li>an XML analyzer (by Tobias Kiesling)</li>
<li>Python bindings for Broccoli</li>
<li>restructured logic for taking drop decisions via Bro&#8217;s notice framework (by Brian Tierney and Robin Sommer)</li>
<li>a test-suite for Bro&#8217;s communication &#038; serialization subsystems</li>
<li>various tweaks and bugfixes</li>
</ul>
<p>If you want the latest work done by Robin and others mentioned above, you can get access to the code with the following commands.
</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
root# cd /usr/local/src
/usr/local/src root# mkdir bro-cvs
/usr/local/src root# cd bro-cvs
/usr/local/src/bro-cvs root# svn checkout http://svn.icir.org/bro/branches/robin/work
/usr/local/src/bro-cvs root# mv work bro-1.5.1.robin
/usr/local/src/bro-cvs root# cd bro-1.5.1.robin
/usr/local/src/bro-cvs/bro-1.5.1.robin root# ./autogen.sh
</pre>
</td>
</table>
<p><h4><strong>Configure and Install</strong></h4>
</p>
<p>Because of the various bug fixes and the additional features which add interesting options, we are going to step through installation of Robin&#8217;s branch.  Please use the version of Bro appropriate for your operation.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
root# cd /usr/local/src/bro-cvs/bro-1.5.1.robin
/usr/local/src/bro-cvs/bro-1.5.1.robin root# CFLAGS="-D_LARGEFILE_SOURCE \
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS="-lpfring -lpcap" \
LD_LIBRARY_PATH="/usr/lib:/usr/local/lib" ./configure --prefix=/usr/local/bro  \
--enable-debug --enable-perftools
/usr/local/src/bro-cvs/bro-1.5.1.robin root# make
/usr/local/src/bro-cvs/bro-1.5.1.robin root# make check
/usr/local/src/bro-cvs/bro-1.5.1.robin root# make install
</pre>
</td>
</tr>
</tbody>
</table>
<p>
If you run into any problems, go to back to the stable version of Bro and see if you can get it to compile.  Then you may want to try the subversion trunk code.
</p>
<p><h2><b>Snort Setup</b></h2>
<p>We will be following the direction posted previously in “Blacklisting with Snort″ [<a href="http://blog.securitymonks.com/2009/07/19/blacklisting-with-snort/">17</a>].  Below we will get the software, verify, configure, and install the software under the <strong>/usr/local/snort</strong> area. Please adjust this to your environment.  Reminder to Mac OS X and FreeBSD users, use the <strong>md5</strong> command instead of md5sum.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
 root# cd /usr/local/src
/usr/local/src root# wget <a href="http://www.snort.org/downloads/116">wget http://www.snort.org/downloads/116 -O snort-2.8.6.1.tar.gz</a>
/usr/local/src root# wget <a class=moz-txt-link-freetext href="http://www.snort.org/downloads/116/show_md5" >http://www.snort.org/downloads/116/show_md5</a>
/usr/local/src root# cat show_md5
“b1119396a32e9df0d80404e4b6c49166”
/usr/local/src root# md5sum snort-2.8.6.1.tar.gz
b1119396a32e9df0d80404e4b6c49166  snort-2.8.6.1.tar.gz
/usr/local/src root# tar xzf snort-2.8.6.1.tar.gz
/usr/local/src root# cd snort-2.8.6.1
</pre>
</td>
</tr>
</tbody>
</table>
</p>
<p>We are going to add in support to place alerts into a MySQL database. If MYSQL is installed on the system, you can use the &#8220;<strong>&#8211;with-mysql</strong>&#8221; configuration option to specify where. In a previous post, “<a href="http://blog.securitymonks.com/2008/04/07/introduction-to-mysql/" >Introduction to MySQL</a>,” we went through the installation of MySQL into the /usr/local/mysql directory. For such an installation, the <strong>&#8211;with-mysql-includes=/usr/local/mysql/include</strong> and <strong>&#8211;with-mysql-libraries=/usr/local/mysql/lib</strong> command options must be used.  In order to use the dynamic plugin libraries, Snort needs to be able to find libmysqlclient.so. On some operating systems, you may <a href="http://www.snort.org/archive-11-3690.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.snort.org');">have problems</a>. Adding <strong>LDFLAGS=&#8221;-L/usr/local/mysql/lib/mysql&#8221;</strong> should work.
</p>
<p>
You may want to consider configuring Snort to allow <a href="http://cvs.snort.org/viewcvs.cgi/*checkout*/snort/doc/README.decoder_preproc_rules" onclick="javascript:pageTracker._trackPageview('/outbound/article/cvs.snort.org');">decoder and preprocessor rule eventing</a>.  This allows you to enable and disable decoder and preprocessor events on a rule by rule bases.  It also allow you to specify the rule type or action of a decoder or preprocessor event on a rule by rule basis.  Enable this configuration option with the configuration option using <strong>&#8211;enable-decoder-preprocessor-rules</strong>.
</p>
<p>
We will also be adding in large file support.  If you had to install libdnet in a special location, you will need to specify that location with the &#8220;<span style="FONT-WEIGHT: bold">&#8211;with-dnet-includes=</span>&#8221; and &#8220;<span style="FONT-WEIGHT: bold">&#8211;with-dnet-libraries=</span>&#8221; configuration options.
</p>
<p>
We will configure Snort with the following command:
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
/usr/local/src/snort-2.8.6.1 root# CFLAGS="-D_LARGEFILE_SOURCE \
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS="-lpfring -lpcap" \
 LD_LIBRARY_PATH="/usr/lib:/usr/local/lib" \
./configure --prefix=/usr/local/snort --with-libpcap-includes=/usr/local/include \
--with-libpcap-libraries=/usr/local/lib \
--with-libpcre-includes=/usr/local/pcre/include \
--with-libpcre-libraries=/usr/local/pcre/lib \
--with-mysql-includes=/usr/local/mysql/include \
--with-mysql-libraries=/usr/local/mysql/lib \
--enable-decoder-preprocessor-rules --enable-zlib
</pre>
</td>
</tr>
</tbody>
</table>
<p>Check config.log if you had any problems or just want to make sure Snort configured everything correctly.  After you configure Snort, you continue to make and install it.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
/usr/local/src/snort-2.8.6.1 root# make
/usr/local/src/snort-2.8.6.1 root# make check
/usr/local/src/snort-2.8.6.1 root# make install
/usr/local/src/snort-2.8.6.1 root# mkdir -p /usr/local/snort/etc
/usr/local/src/snort-2.8.6.1 root# cp etc/* /usr/local/snort/etc
/usr/local/src/snort-2.8.6.1 root# mkdir -p /usr/local/snort/preproc_rules
/usr/local/src/snort-2.8.6.1 root# cp preproc_rules/*.rules /usr/local/snort/preproc_rules
/usr/local/src/snort-2.8.6.1 root# /usr/local/snort/bin/snort -V

,,_ -*&gt; Snort! &lt;*-
o" )~ Version 2.8.6.1 (Build 39)
'''' By Martin Roesch &amp; The Snort Team: <a class=moz-txt-link-freetext href="http://www.snort.org/team.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.snort.org');">http://www.snort.org/team.html</a>
Copyright (C) 1998-2010 Sourcefire, Inc., et al.
Using PCRE version: 8.10 2010-06-25</pre>
</td>
</tr>
</tbody>
</table>
</p>
<p>
<h4><strong>Rules</strong> </h4>
</p>
<p>Now we need some rules. For this example we will get the rules from the <a href="http://www.snort.org/pub-bin/downloads.cgi" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.snort.org');">Snort</a> and the <a href="http://www.emergingthreats.net/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.emergingthreats.net');">Emerging Threats site</a>. You will need to register for the rules at the Snort site. Do consider subscribing for the latest up-to-date rules. Registered users can only access rules 30 days after their release.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
 root# cd /usr/local/snort/rules
/usr/local/snort/rules root# wget http://www.emergingthreats.net/rules/emerging-all.rules
/usr/local/snort/rules root# cd /usr/local/src
/usr/local/src root# wget \
https://www.snort.org/downloads/83 \
-O snortrules-snapshot-CURRENT.tar.gz
/usr/local/src root# md5sum snortrules-snapshot-CURRENT.tar.gz
/usr/local/src root# mv snortrules-snapshot-CURRENT.tar.gz /usr/local/snort/
/usr/local/src root# cd /usr/local/snort/
/usr/local/snort root# tar xzf snortrules-snapshot-CURRENT.tar.gz
/usr/local/snort root# rm snortrules-snapshot-CURRENT.tar.gz
/usr/local/snort root# vi /usr/local/snort/etc/snort.conf</pre>
</td>
</tr>
</tbody>
</table>
<p>Modify /usr/local/snort/etc/snort.conf to your environment. Make sure the <strong>RULE_PATH</strong> is set to /usr/local/snort/rules. If you configured Snort to enable decoder and preprocessor rules, you will need to add a line specifying the location of those files.  Define <strong>PREPROC_RULE_PATH</strong> with the line:
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode> var PREPROC_RULE_PATH ../preproc_rules</pre>
</td>
</tr>
</tbody>
</table>
<p>
Later in the snort.conf file include the lines (before other rule lists are included):
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode> include $PREPROC_RULE_PATH/preprocessor.rules
include $PREPROC_RULE_PATH/decoder.rules</pre>
</td>
</tr>
</tbody>
</table>
<p>
If you wish to use the emerging threat rules, add:
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
 include $RULE_PATH/emerging-all.rules</pre>
</td>
</tr>
</tbody>
</table>
<p>
in the /usr/local/snort/etc/snort.conf file. Do not forget to adjust <strong>dynamicpreprocessor file</strong> and <strong>dynamicengine</strong> path. Mac OS X users will need to use the dynamic libraries. Uncomment the Mac OS X lines in the Snort configuration file.
</p>
<p>
<h4><strong>Dumbpig</strong></h4>
</p>
<p>Leon Ward has released a Perl program, <a href="http://leonward.wordpress.com/dumbpig/" onclick="javascript:pageTracker._trackPageview('/outbound/article/leonward.wordpress.com');">Dumbpig</a>, which will check Snort rules for badly formatted entries and incorrect usage.  He has even added blacklist support (see posting &#8220;<a href="http://leonward.wordpress.com/2009/07/20/et-rbn-blacklists-with-snort-and-dumbpig/" onclick="javascript:pageTracker._trackPageview('/outbound/article/leonward.wordpress.com');">ET RBN Blacklists with Snort and DumbPig</a>&#8220;).  To pull down dumbpig.pl, the required Perl modules, and run it against the Emerging Threats rule set:
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
 root# cd /home/snort/perl
/home/snort/perl root# wget http://dumbpig.googlecode.com/files/dumbpig-0.9.tgz
/home/snort/perl root# tar xzf dumbpig-0.9.tgz
/home/snort/perl root# chmod u+x ./dumbpig.pl
/home/snort/perl root# cpan -e "Parse::Snort"
/home/snort/perl root# cpan -e "LWP::Simple"
/home/snort/perl root# ./dumbpig.pl -r /usr/local/snort/rules/emerging-all.rules
DumbPig version 0.9 - leon.ward@sourcefire.com
Because I hate looking for the same dumb problems with snort rule-sets

        __,,    ( Dumb-pig says     )
      ~(  oo ---( "ur rulz r not so )
        ''''    ( gud akshuly" *    )

Config
----------------------
* Sensivity level - 3/3
* Blacklist outputi : Disabled
* Processing File - /home/snort/rules//emerging-all.rules
* Check commented out rules : Disabled
* Pause : Disbled
* ForceFail : Disabled
* Censor : Disabled
* Quite mode : Disabled
----------------------
Issue 1
1 Problem(s) found with rule on line 59 of /home/snort/rules//emerging-all.rules

alert tcp $HOME_NET any -> \
[75.126.138.202,72.249.118.38,208.78.69.70,204.13.249.70,208.78.68.70] $HTTP_PORTS  ( \
  msg:"ET CURRENT_EVENTS Possible Downadup/Conficker-A Infection Checking Geographical Location"; \
  flow:to_server; \
  classtype:trojan-activity; \
  reference:url,www.microsoft.com/security/portal/Entry.aspx?Name=Worm%3aWin32%2fConficker.A; \
  reference:url,www.f-secure.com/v-descs/worm_w32_downadup_a.shtml; \
  threshold:type both, count 5, seconds 60, track by_src; \
  reference:url,doc.emergingthreats.net/bin/view/Main/2008803; \
  reference:url,www.emergingthreats.net/cgi-bin/cvsweb.cgi/sigs/CURRENT_EVENTS/CURRENT_Conficker; \
  sid:2008803; \
  rev:3; \
)
- TCP/UDP rule with no deep packet checks? This rule looks more suited to a firewall or blacklist
alert tcp $HOME_NET any ->
[75.126.138.202,72.249.118.38,208.78.69.70,204.13.249.70,208.78.68.70] $HTTP_PORTS (msg:"ET CURRENT_
EVENTS Possible Downadup/Conficker-A Infection Checking Geographical
Location"; flow:to_server; classtype:trojan-activity;
reference:url,www.microsoft.com/security/portal/Entry.aspx?Name=Worm%3aWin32%2fConficker.A;
reference:url,www.f-secure.com/v-descs/worm_w32_downadup_a.shtml;
threshold:type both, count 5, seconds 60, track by_src;
reference:url,doc.emergingthreats.net/bin/view/Main/2008803;
reference:url,www.emergingthreats.net/cgi-bin/cvsweb.cgi/sigs/CURRENT_EVENTS/CURRENT_Conficker;
sid:2008803; rev:3;)
</pre>
</td>
</tr>
</tbody>
</table>
<p><h2><b>Suricata Setup</b></h2>
<p>The Open Information Security Foundation (<a href="http://www.openinfosecfoundation.org/"> OISF</a>) developed Suricata to be on the leading edge in IDS/IPS software.  It is very much still in development.  Is that not what makes it so interesting?  Before you begin, be aware of some <a href="https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Known_issues">known issues</a>.  Check out the development <a href="https://redmine.openinfosecfoundation.org/projects/suricata/roadmap">roadmap</a> for upcoming scheduled releases.  If you run into problems, see if it is a known <a href="https://redmine.openinfosecfoundation.org/projects/suricata/issues">issue</a> and share your experiences with the community of developers.  That is the best way to make sure Suricata improves.
</p>
<p>
With required and options software on the system, installing Suricata is pretty straight forward.  Pull down the source, configure, compile, and install.
</p>
<table cellSpacing=1 cellPadding=0 width="100%" border=1>
<tbody>
<tr>
<td class=code-outline bgColor=#f5f5f5>
<pre class=displaycode>
 root# cd /usr/local/src
/usr/local/src root# wget  http://www.openinfosecfoundation.org/download/suricata-1.0.1.tar.gz
/usr/local/src root# wget http://www.openinfosecfoundation.org/download/suricata-1.0.1.tar.gz.sig
/usr/local/src root# wget http://www.openinfosecfoundation.org/download/OISF.asc
/usr/local/src root# gpg --import OISF.asc
/usr/local/src root# gpg --verify suricata-1.0.1.tar.gz.sig suricata-1.0.1.tar.gz
gpg: Signature made Thu 29 Jul 2010 02:34:58 PM EDT using RSA key ID 051CC261
gpg: Good signature from "OISF <releases @openinfosecfoundation.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 3332 6BF5 5751 35CC 24F5  D2AF A30C 431D 051C C261
/usr/local/src root#  tar xzf suricata-1.0.1.tar.gz
/usr/local/src root# cd suricata-1.0.1
/usr/local/src/suricata-1.0.1 root# mkdir /usr/local/suricata
/usr/local/src/suricata-1.0.1 root#  LD_RUN_PATH="/usr/lib:/usr/local/lib" \
./configure --enable-pfring --with-libpfring-libraries=/usr/local/lib \
--with-libpfring-includes=/usr/local/include --with-libpcap-libraries=/usr/local/lib \
--with-libpcap-includes=/usr/local/include --enable-nfqueue--enable-unittests \
--enable-unified-native-timeval  --enable-profiling  --prefix=/usr/local/suricata
/usr/local/src/suricata-1.0.1 root# make
/usr/local/src/suricata-1.0.1 root# make check
/usr/local/src/suricata-1.0.1 root# make install
/usr/local/src/suricata-1.0.1 root# mkdir /usr/local/suricata/log
/usr/local/src/suricata-1.0.1 root# mkdir /usr/locall/suricata/etc
/usr/local/src/suricata-1.0.1 root# cp classification.config suricata.yaml /usr/local/suricata/etc
/usr/local/src/suricata-1.0.1 root# mkdir /usr/local/suricata/rules
/usr/local/src/suricata-1.0.1 root# cd /usr/local/suricata/rules
/usr/local/suricata/rules root# wget http://www.emergingthreats.net/rules/emerging-attack_response.rules
/usr/local/suricata/rules root# wget http://www.emergingthreats.net/rules/emerging-scan.rules
/usr/local/suricata/rules root# wget http://www.emergingthreats.net/rules/emerging-exploit.rules
/usr/local/suricata/rules root#wget http://www.emergingthreats.net/rules/emerging-current_events.rules
/usr/local/suricata/rules root#wget http://www.emergingthreats.net/rules/emerging-voip.rules
/usr/local/suricata/rules root#wget http://www.emergingthreats.net/rules/emerging-malware.rules
/usr/local/suricata/rules root#wget http://www.emergingthreats.net/rules/emerging-dos.rules
/usr/local/suricata/rules root#wget http://www.emergingthreats.net/rules/emerging-drop.rules
/usr/local/suricata/rules root#wget http://www.emergingthreats.net/rules/emerging-compromised.rules
/usr/local/suricata/rules root#wget http://www.emergingthreats.net/rules/emerging-dshield.rules
/usr/local/suricata/rules root#wget http://www.emergingthreats.net/rules/emerging-botcc.rules
/usr/local/suricata/rules root#wget http://www.emergingthreats.net/rules/emerging-rbn.rules
/usr/local/suricata/rules root# wget http://www.emergingthreats.net/rules/emerging-virus.rules
/usr/local/suricata/rules root# vi /usr/loca/suricata/etc/suricata.yaml
</releases>
</pre>
</td>
</tr>
</tbody>
</table>
<p>
Modify suricata.yaml to reflect your environment.  At this point, you can run Suricata with the command:
</p>
<table width="100%" cellpadding="0" cellspacing="1" border="1">
<td class="code-outline" BGCOLOR="#F5F5F5">
<pre class="displaycode">
root# /usr/local/suricata/bin/suricata -c /usr/local/suricata/etc/suricata.yaml \
-s /usr/local/suricata/etc/classification.config -i eth0
</pre>
</td>
</table>
<p><h2><b>To Be Continued&#8230;</b></h2>
</p>
<p>
Henry J. Kaiser, the father of modern American shipbuilding, once said, &#8220;Live daringly, boldly, fearlessly. Taste the relish to be found in competition &#8211; in having put forth the best within you&#8221; [<a href="http://wapedia.mobi/enwikiquote/Henry_J._Kaiser">9</a>]  Hopefully Jonkman, Julien, Roesch, and Olney Roesch will relish their competition and the community will enjoy the fruits of their efforts.  One powerful benefit of open source is that it allows organizations the flexibility to pull down the source and setup the software in their own environment.  One can easily try the packages out and become familiar with the benefits of the different IDS/IPS engines.  The more you know, the better you will be at defending your organization.
</p>
<p>
Setting up the three IDS/IPS engines is only the first step.  In later posts, we will continue by examining the configuration and output from Bro, Snort, and Suricata.  This should help the reader understand the features each might offer an organization.  Bro, Snort, and Suricata are just tools.  While they will have different features, it is the person who yields the tool that determines its effectiveness. Determine for yourself what works best.  Even if you have a single development box, you can setup and test against small subsets of your own network traffic.  Visit <a href="http://wiki.wireshark.org/SampleCaptures">Wireshark’s Sample capture page</a> for links to pcap files and additional sources.  There is also the <a href="https://www.openpacket.org/capture/list">OpenPacket’s Capture Repository</a>, which provides the security community the capability to comment and vote on submitted pcap files.  Give the IDS/IPS engines a test ride and please feel free to share your experiences.
</p>
<p><h2><b>Links</b></h2>
<p>[1] Marc Ambinder, August 13th 2010, &#8220;Pentagon Wants to Secure Dot-Com Domains of Contractors,&#8221; <a href="http://www.theatlantic.com/politics/archive/2010/08/pentagon-wants-to-secure-dot-com-domains-of-contractors/61456/">http://www.theatlantic.com/politics/archive/2010/08/pentagon-wants-to-secure-dot-com-domains-of-contractors/61456/</a>.<br />
[2] John Gerber, January 5th 2010, &#8220;Suricata: A Next Generation IDS/IPS Engine,&#8221; <a href="http://blog.securitymonks.com/2010/01/05/suricata-a-next-generation-idsips-engine/">http://blog.securitymonks.com/2010/01/05/suricata-a-next-generation-idsips-engine/</a>.<br />
[3] John Gerber, October 29th 2008, &#8220;Installing Bro IDS 1.4,&#8221; <a href="http://blog.securitymonks.com/2008/10/28/installing-bro-ids-14/">http://blog.securitymonks.com/2008/10/28/installing-bro-ids-14/</a>.<br />
[4] John Gerber, October 20th 2008, &#8220;Snort 3: The Next Generation,&#8221; <a href="http://blog.securitymonks.com/2008/10/20/snort-3-the-next-generation/">http://blog.securitymonks.com/2008/10/20/snort-3-the-next-generation/</a>.<br />
[5] John Gerber, August 9th, 2008, &#8220;IDS/IPS: The Mark Twain of the Security World,&#8221; <a href="http://blog.securitymonks.com/2008/08/09/idsips-the-mark-twain-of-the-security-world/">http://blog.securitymonks.com/2008/08/09/idsips-the-mark-twain-of-the-security-world/</a>.<br />
[6] John Gerber, June 17th, 2007, &#8220;IDS,&#8221; <a href="http://blog.securitymonks.com/2007/06/17/ids/">http://blog.securitymonks.com/2007/06/17/ids/</a>.<br />
[7] Jaikumar Vijayan, July 20th 2010, &#8220;DHS, vendors unveil open source intrusion detection engine,&#8221; <a href="http://www.computerworld.com/s/article/9179436/DHS_vendors_unveil_open_source_intrusion_detection_engine">http://www.computerworld.com/s/article/9179436/DHS_vendors_unveil_open_source_intrusion_detection_engine</a>.<br />
[8] Ellen Messmer, July 20th 2010, &#8220;Is open source Snort dead? Depends who you ask ,&#8221; <a href="http://www.networkworld.com/news/2010/072010-is-snort-dead.html?page=1<br />
">http://www.networkworld.com/news/2010/072010-is-snort-dead.html?page=1</a>.<br />
[9] &#8220;Wikiquote: Henry J. Kaiser,&#8221; <a href="http://wapedia.mobi/enwikiquote/Henry_J._Kaiser">http://wapedia.mobi/enwikiquote/Henry_J._Kaiser</a>.<br />
[10] Matt Olney, July 20th 2010, &#8220;Innovation &#8212; You Keep Using That Word&#8230;,&#8221; <a href="http://vrt-sourcefire.blogspot.com/2010/07/innovation-you-keep-using-that-word.html">http://vrt-sourcefire.blogspot.com/2010/07/innovation-you-keep-using-that-word.html</a>.<br />
[11] &#8220;Razorback&#8221;, <a href="http://sourceforge.net/projects/razorbacktm/files/">http://sourceforge.net/projects/razorbacktm/files/</a>.<br />
[12] &#8220;Next Generation Open-Source IDS to Address Issues Facing Network Security Industry,&#8221; July 19th 2010, <a href="http://www.businesswire.com/portal/site/home/permalink/?ndmViewId=news_view&#038;newsId=20100719005970&#038;newsLang=en">http://www.businesswire.com/portal/site/home/permalink/?ndmViewId=news_view&#038;newsId=20100719005970&#038;newsLang=en</a>.<br />
[13] Russ McRee, August 3rd 2010, &#8220;Suricata in toolsmith: meet the meerkat,&#8221; <a href="http://holisticinfosec.blogspot.com/2010/08/suricata-in-toolsmith-meet-meerkat.html">http://holisticinfosec.blogspot.com/2010/08/suricata-in-toolsmith-meet-meerkat.html</a>.<br />
[14] Victor Julien, July 22nd 2010, &#8220;On Suricata performance,&#8221; <a href="http://www.inliniac.net/blog/2010/07/22/on-suricata-performance.html">http://www.inliniac.net/blog/2010/07/22/on-suricata-performance.html</a>.<br />
[15] &#8220;Bro Features and Benefits,&#8221; June 28th 2010, <a href="http://www.bro-ids.org/Features.html">http://www.bro-ids.org/Features.html</a>.<br />
[16] &#8220;Snort 2.9.0 Beta,&#8221; June 6th 2010, <a href="https://s3.amazonaws.com/snort.org/snort-beta/20100727/release_notes_290_beta.txt?AWSAccessKeyId=AKIAJJSHU7YNPLE5MKOQ&#038;Expires=1282246315&#038;Signature=jchbdD6d3G0ncaqOkrQAps6ZV5M%3D">https://s3.amazonaws.com/snort.org/snort-beta/20100727/release_notes_290_beta.txt?AWSAccessKeyId=AKIAJJSHU7YNPLE5MKOQ&#038;Expires=1282246315&#038;Signature=jchbdD6d3G0ncaqOkrQAps6ZV5M%3D</a>.<br />
[17] John Gerber, July 19th 2009, “Blacklisting with Snort,” <a href="http://blog.securitymonks.com/2009/07/19/blacklisting-with-snort/">http://blog.securitymonks.com/2009/07/19/blacklisting-with-snort/</a>.<br />
[18] Russ McRee, August 2010, &#8220;Suricata: An Introduction,&#8221; <a href="http://holisticinfosec.org/toolsmith/pdf/august2010.pdf">http://holisticinfosec.org/toolsmith/pdf/august2010.pdf</a><br />
[19] &#8220;Dynamic Application-Layer Protocol Analysis for Network Intrusion Detection,&#8221; Proceedings of the 15th conference on USENIX Security Symposium &#8211; Volume 15, 2006, <a href="http://www.icir.org/robin/papers/usenix06.pdf ">http://www.icir.org/robin/papers/usenix06.pdf</a>.<br />
[20] Seth Hall, August 6th 2010, Github Social Coding, &#8220;<a href="http://github.com/sethhall/bro_scripts/blob/master/http-ext.bro">http://github.com/sethhall/bro_scripts/blob/master/http-ext.bro</a>.<br />
[21] Seth Hall, August 6th 2010, Github Social Coding,<a href="http://github.com/sethhall/bro_scripts/blob/master/http-ext.bro#L64">http://github.com/sethhall/bro_scripts/blob/master/http-ext.bro#L64</a>.<br />
[22] Gunjan Bansal, June 16th 2010, “Installation Guide for PF_RING,” <a href="http://gunjan-bansal.blogspot.com/2010/06/installation-guide-for-pfring.html">http://gunjan-bansal.blogspot.com/2010/06/installation-guide-for-pfring.html</a>.<br />
[23] Luca Deri and Francesco Fusco, January 30th 2010, “Exploiting Commodity Multi-core Systems for Network Traffic Analysis,” <a href="http://luca.ntop.org/MulticorePacketCapture.pdf">http://luca.ntop.org/MulticorePacketCapture.pdf</a>.</p>
<p>[24] Mathew Olney and Matthew Watchinski, &#8220;Implementing Resource Intensive Detection Techniques With the Razorback Framework,&#8221; <a href="http://iweb.dl.sourceforge.net/project/razorbacktm/Whitepapers/razorback-whitepaper-0.1.pdf">http://iweb.dl.sourceforge.net/project/razorbacktm/Whitepapers/razorback-whitepaper-0.1.pdf</a>.<br />
[25] Patrick Mullen and Ryan Pentney, Defcon Razorback Presentation, &#8220;<a href="https://www.defcon.org/images/defcon-18/dc-18-presentations/Mullen-Pentney/DEFCON-18-Mullen-Pentney-Razorback.pdf">https://www.defcon.org/images/defcon-18/dc-18-presentations/Mullen-Pentney/DEFCON-18-Mullen-Pentney-Razorback.pdf</a>.<br />
[26] Robin Sommer, August 24th 2010, The ICSI Networking Group Blog, &#8220;Major NSF Funding for Bro Development,&#8221; <a href="http://blog.icir.org/2010/08/major-nsf-funding-for-bro-development.html">http://blog.icir.org/2010/08/major-nsf-funding-for-bro-development.html</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2010/08/26/three-little-idsips-engines-build-their-open-source-solutions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FISMA Reform: Lieberman, Collins, and Carper Introduce Bill</title>
		<link>http://blog.securitymonks.com/2010/06/10/fisma-reform-lieberman-collins-and-carper-introduce-bill/</link>
		<comments>http://blog.securitymonks.com/2010/06/10/fisma-reform-lieberman-collins-and-carper-introduce-bill/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 21:24:42 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[FISMA]]></category>
		<category><![CDATA[Law]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/?p=1992</guid>
		<description><![CDATA[Today, a compromise has been met allowing FISMA reform to move forward in the Senate.  Homeland Security and Governmental Affairs issued the press release, &#8220;Lieberman, Collins, Carper Unveil Major Cybersecurity Bill to Modernize, Strengthen, and Coordiante Cyber Defenses.&#8221;  Key elements of the Protecting Cyberspace as a National Asset Act of 2010 include:

Creation of [...]]]></description>
			<content:encoded><![CDATA[<p>Today, a compromise has been met allowing FISMA reform to move forward in the Senate.  Homeland Security and Governmental Affairs issued the press release, &#8220;<a href="http://hsgac.senate.gov/public/index.cfm?FuseAction=Press.MajorityNews&#038;ContentRecord_id=227d9e1e-5056-8059-765f-2239d301fb7f">Lieberman, Collins, Carper Unveil Major Cybersecurity Bill to Modernize, Strengthen, and Coordiante Cyber Defenses</a>.&#8221;  Key elements of the Protecting Cyberspace as a National Asset Act of 2010 include:</p>
<ol>
<li><b>Creation of an Office of Cyberspace Policy in the Executive Office of the President</b> run by a Senate-confirmed Director, who will advise the President on all cybersecurity matters. The Director will lead and harmonize federal efforts to secure cyberspace and will develop a national strategy that incorporates all elements of cyberspace policy, including military, law enforcement, intelligence, and diplomatic.  The Director will oversee all related federal cyberspace activities to ensure efficiency and coordination.</li>
<li><b>Creation of a National Center for Cybersecurity and Communications (NCCC) at the Department of Homeland Security (DHS)</b> to elevate and strengthen the Department’s cybersecurity capabilities and authorities. The Director will regularly advise the President on efforts to secure federal networks.  The NCCC will be led by a Senate-confirmed Director, who will report to the Secretary. The NCCC will include the United States Computer Emergency Response Team (US-CERT), and will lead federal efforts to protect public and private sector cyber and communications networks. </li>
<li><b>Updates the Federal Information Security Management Act (FISMA)</b> to modernize federal agencies practices of protecting their internal networks and systems. With strong leadership from DHS, these reforms will allow agencies to move away from the system of after-the-fact paperwork compliance to real-time monitoring to secure critical systems.</li>
<li><b>Requiring the NCCC to work with the private sector to establish risk-based security requirements</b> that strengthen cybersecurity for the nation’s most critical infrastructure that, if disrupted, would result in a national or regional catastrophe.</li>
<li><b>Requiring covered critical infrastructure to report significant breaches to the NCCC</b> to ensure the federal government has a complete picture of the security of these sensitive networks.  The NCCC must share information, including threat analysis, with owners and operators regarding risks to their networks. The Act will provide specified liability protections to owners/operators that comply with the new risk-based security requirements.</li>
<li>Creation of a responsible framework, developed in coordination with the private sector, <b>for the President to authorize emergency measures to protect the nation’s most critical infrastructure</b> if a cyber vulnerability is being exploited or is about to be exploited. The President must notify Congress in advance before exercising these emergency powers. Any emergency measures imposed must be the least disruptive necessary to respond to the threat and will expire after 30 days unless the President extends them.  <b>The bill authorizes no new surveillance authorities and does not authorize the government to “take over” private networks</b>.</li>
<li><b>Development of a comprehensive supply chain risk management strategy to address risks and threats</b> to the information technology products and services the federal government relies upon. This strategy will allow agencies to make informed decisions when purchasing IT products and services.</li>
<li>Requiring the Office of Personnel Management to <b> reform the way cybersecurity personnel are recruited, hired, and trained</b> to ensure that the federal government has the talent necessary to lead the national cybersecurity effort and protect its own networks.</li>
</ol>
<p>
The Committee will hold a hearing on the legislation June 15, 2010.
</p>
<p>
<embed height="240" width="320" type="application/x-shockwave-flash" src="http://www.senate.gov/fplayers/CommPlayer/mediaplayer.swf" style="" id="mediaplayer" name="mediaplayer" quality="high" allowfullscreen="true" allowscriptaccess="always" flashvars="file=/vCommFiles/srs061010&amp;streamer=rtmp://fms.senate.gov/Committee/&amp;autostart=true&amp;type=video&amp;bufferlength=&amp;start=1560"></embed>
</p>
<h3>Background</h3>
<p>There has been a great deal of activity since I posted &#8220;<a href="http://blog.securitymonks.com/2008/03/17/fisma-paperwork-or-actual-security/">FISMA: Paperwork Or Actual Security?</a>&#8221;  The House passed on a 229 to 186 roll call vote the <a href="http://hdl.loc.gov/loc.uscongress/legislation.111hr5136">2011 Defense Authorization spending bill</a> that includes measures to upgrade the Federal Information Security Management Act (<a href="http://en.wikipedia.org/wiki/Federal_Information_Security_Management_Act_of_2002">FISMA</a>).  The authorization bill now faces reconciliation with the Senate version.  The Senate version has yet to be considered on the Senate floor but did pass through the Senate Armed Services Committee.  The House action put pressure on the Senate to act.</p>
<p>
Action came from the <a href="http://hsgac.senate.gov/public/">US Senate Committee on Homeland Security and Governmental Affairs<a />, who&#8217;s chairman is </a><a href="http://lieberman.senate.gov/">Senator Joe Lieberman</a> (ID-Conn.), an original cosponsor of the bill.  Lieberman had been talking about a comprehensive cybersecurity reform bill that would incorporate much of the language in the United States Information and Communications Act (<a href="http://www.govtrack.us/congress/bill.xpd?bill=s111-921">S. 921</a>) with the FISMA reform legislation introduced in April 2009 by <a href="http://carper.senate.gov/">Senator Thomas R. Carper</a> (D.-Del).  Many provisions of Carper&#8217;s bill mirror provisions in included in the House bill.  Carper was pressing to include:</p>
<ol>
<li>standardize Inspector Generals’ information security audits;</li>
<li>create a Chief Information Security Officer Council to establish information security best practices and guidelines, while strengthening the role of Chief Information Security Officers;</li>
<li>allow the Department of Homeland Security to conduct &#8220;red team&#8221; penetration tests against civilian agencies;</li>
<li>allow Congress to measure the effectiveness of agencies’ information security plans and procedures.</li>
</ol>
<p>
Lieberman wanted <a href="http://collins.senate.gov">Senator Susan Collins</a> (R-Maine), the ranking Republican on the Homeland Security panel, named on the bill.  The problem was that Collins is on record opposing the top cybersecurity official in government being housed in the White House, believing the official should be quartered in the Department of Homeland Security.  It looks like Lieberman and Collins were able to come to an agreement and move forward on the bill.
</p>
<p><h3>Thoughts</h3>
</p>
<p>If you are interested in learning more and keeping up with FISMA, you will find Dan Philpott (twitter <a href="http://twitter.com/danphilpott">danphilpott</a>) site <a href="http://fismapedia.org">FISMApedia</a> interesting. It describes itself as &#8220;a collection of documents and discussions focused on Federal IT security. This site is a database of current guidance, laws and directives on how the Federal government secures its IT assets.&#8221;  Philpott also posts to the <a href="http://www.guerilla-ciso.com/">Guerilla CISO</a>.
</p>
<p>
Federal CIO Vivek Kundra, writing on <a href="http://www.cio.gov/pages.cfm/page/faster-smarter-cybersecurity">the Chief Information Officers Council Blog</a> concerning the new FISMA states &#8220;In the past, Federal agencies spent enormous time and money creating the old paper-based reports. The State Department alone, in the past six years, spent $133 million amassing 95,000 pages of security documentation for about 150 major IT systems. This works out to roughly $1,400 per page in reports that were often outdated days within being published.&#8221;  Kundra goes on to state, &#8220;As we move away from the old-style reports and into a more real-time system of security data feeds, we are implementing solutions that actually help to protect the country rather than simply generate paperwork.&#8221;
</p>
<p>
For intelligent comments on FISMA, let us turn to a few folks who eat, sleep, and breathe FISMA.  Michael Smith, aka <a href="http://www.guerilla-ciso.com/archives/author/admin/">rybolov</a>, is the creator of the Guerilla CISO blog.  Concerning the $1,400 per page cost, Smith in his post &#8220;<a href="http://www.guerilla-ciso.com/archives/1606">A Funny Thing Happened Last Week on Capital Hill</a>,&#8221; writes &#8220;If you buy into the State Department’s cost of $1400 per sheet, you’re absolutely daft.&#8221;  Smith goes on to point out, &#8220;The cost of a security program divided by the total number of sheets of paper is probably right.  In fact, if you do the security bits right, your cost per sheet will go up considerably because you’re doing much more security work while the volume of paperwork is reduced.&#8221;
</p>
<p>
Concerning allocating money towards red teams, Smith makes the point, &#8220;Do we really need penetration testing to prove that we have problems?  In Mike Smith’s world, we’re just not there yet, and proving that we’re not there is just an excuse to throw the InfoSec practitioners under the bus when they’re not the people who created the situation in the first place.&#8221;  Nicely put.
</p>
<p>
Smith’s recommendations to fix FISMA:</p>
<ol>
<li><b>You have to start with workforce management.</b>  This has been addressed numerous times and has a couple of different manifestations: DoDI 8570.10, contract clauses for levels of experience, role-based training, etc.  Until you have an adequate supply of clueful people to match the<br />
demand, you will continue to get subpar performance.</li>
<li><b>More testing will not help, it’s about execution.</b>  In the current culture, we believe that the more testing we do, the more likely the people being tested will be able to execute.  This is highly wrong and I’ve <a href="http://www.guerilla-ciso.com/archives/96">commented on it before</a>.  I think that if it was really a fact of people being lazy or fraudulent then we would have fixed it by now.  My theory is that the problem is that we have too many wonks who know the law but not the tech and not enough techs that know the law.  In order to do the job, you need both.  This is also where I deviate from the SANS/20 Critical Security Controls approach and the IGs that love it.</li>
<li><b>Fix Plans of Actions and Milestones.</b> These are supposed to be long-term/strategic problems, not the short-term/tactical application of patches–the tactical stuff should be automated.  The reasoning is that you use these plans for budget requests for the following years.</li>
<li><b>Fix the budget train.</b> Right now the people with the budget (programs) are not the people running the IT and the security of it<br />
(CIO/CISO).  I don’t know if the answer here is a larger dedicated budget for CISO’s staff or a larger &#8220;CISO Tax&#8221; on all program budgets.  I could really policy-geek out on you here, just take my word for it that the people with the money are not the people protecting information and until you account for that, you will always have a problem.</li>
</ol>
<p>
More recently, Smith posted &#8220;<a href="http://www.guerilla-ciso.com/archives/1622" >How to Not Let FISMA Become a Paperwork Exercise</a>&#8221; where he addresses and comments on the key criticisms of FISMA:
</p>
</p>
<ul>
<li><b>Reduce paperwork requirements.</b>  Yes, some is needed.&nbsp; Most is not.</li>
<li><b>Reduce cost.</b> There is much repetition in what we’re doing now, it borders on <a href="http://www.guerilla-ciso.com/archives/434" target="_blank">fraud, waste, and abuse</a>.</li>
<li><b>Increase technical effectiveness.</b>  IE, get from the procedural and managerial tasks and get down into the technical parts of security.</li>
</ul>
<p>
Smith offers advice on &#8220;how do you keep from letting FISMA cripple you or turn into death-by-compliance.&#8221; Go to the post and read his advice.
</p>
<p>
Off the same site Joe Faraone, aka <a href="http://www.guerilla-ciso.com/archives/author/vlad-the-impaler/">Vlad</a>, gives his take in the post &#8220;<a href="http://www.guerilla-ciso.com/archives/1698">Machines Don’t Cause Risk, People Do!</a>&#8220;.  He disagrees with <a href="http://www.sans.org/press/photos_bios.php">Alan Paller</a>, director of research for SANS, when he writes, &#8220;At the risk of bashing Alan Paller yet again, I am often turned off by the approach of ‘being able to know the status of every machine at every minute,’ – as if machines by themselves cause bad security… It’s way too tactical (incorrect IMHO) and too easy to make that claim.&#8221;  Faraone goes on to make the point, &#8220;Continuous, repeatable security processes followed by knowledgeable, responsible practitioners are what government needs. But you cannot develop these processes without starting from a larger, enterprise view.  Successful organizations follow this–dare I say it–axiom whether discussing security governance, or system administration.&#8221;
</p>
<p>
Paller has been very vocal in his opinion against FISMA.  He is frequently quoted (ex: &#8220;<a href="http://www.computerweekly.com/Articles/2010/03/25/240719/Sans-founder-slams-39terribly-damaging39-US-cyber-security.htm">Sans founder slams &#8216;terribly damaging&#8217; US cybersecurity law</a>&#8220;).  Paller has told the the House Committee on Oversight and Government Reform&#8217;s Subcommittee on Government Management, Organization and Procurement that FISMA, as it has been implemented and enforced until now has been more detrimental than helpful to government IT security.
</p>
<p>
FISMA was needed to get government moving in a security focus direction.  Philpott in his post &#8220;<a href="http://www.guerilla-ciso.com/archives/754">The 10 CAG-egorically Wrong Ways to Introduce Standards</a>&#8221; makes the point &#8220;Speaking as someone who scrambled to secure Federal systems before FISMA and NIST’s extensive guidance, having that documentation greatly improves my ability to efficiently and effectively secure systems.&#8221;
</p>
<p>
Statements painting FISMA as worthless, or detrimental, might grab headlines but are not real helpful.  Nor are <a href="http://archives.neohapsis.com/archives/sans/2010/0070.html">statements</a> by Paller like, &#8220;US House of Representatives attaches new FISMA rewrite to Defense Authorization Bill. The press hasn’t picked it up yet, but NextGov.Com will have a story in a few minutes. This puts one more nail in the coffin of the Federal CISOs and security contractors who think they can go on ignoring OMB and go on wasting money on out of date report writing contracts.&#8221;  Faraone calls Paller on this statement in the post, &#8220;<a href="http://www.guerilla-ciso.com/archives/1735">When the News Breaks, We Fix It</a>.&#8221;
</p>
<p>
Richard Bejtlich in this post &#8220;<a href="http://taosecurity.blogspot.com/2010/04/thoughts-on-new-omb-fisma-memo.html">Thoughts on New OMB FISMA Memo</a>&#8221; adds <a href="http://taosecurity.blogspot.com/search/label/fisma">his opinion on FISMA reform</a> when he writes &#8220;Long-time blog readers should know I&#8217;ve been writing about FISMA for five years, calling it a &#8216;joke,&#8217; a &#8216;jobs program for so-called security companies without the technical skills to operationally defend systems,&#8217; and other kind words. Any departure from the previous implementation is a welcome change.&#8221;
</p>
<p>
OMB issued &#8220;<a href="http://www.estrategy.gov/documents/M-10-15FISMAFY201004-21-10.doc">FY 2010 Reporting Instructions for the Federal Information Security</a>&#8221; (M-10-15 ) on April 21, 2010. It identifies a three-tiered reporting approach which includes:</p>
<ol>
<li>Data feeds directly from security management tools</li>
<li>Government-wide benchmarking on security posture</li>
<li>Agency-specific interviews</li>
</ol>
<p>Bejtlich analyzes what is really changing for FISMA implementation and concludes, &#8220;It&#8217;s probably going to take .gov-savvy lawyer to really explain what these points mean, but private enterprise working with government data should probably take a close look at these new FISMA developments.&#8221;
</p>
<p><h3>Other Important Legislation</h3>
<p>With more than 35 cybersecurity-related measures before Congress right now, take some time to review the presentation &#8220;<a href="http://belfercenter.ksg.harvard.edu/publication/20133/cybersecurity.html">Cybersecurity: The U.S. Legislative Agenda</a>&#8221; by Melissa E. Hathaway, former acting senior director of cyberspace for the Obama administration who now runs Hathaway Global Strategies and has advisory roles at several IT companies.  You might remember Hathaway from her work on the &#8220;<a href="http://www.whitehouse.gov/assets/documents/Cyberspace_Policy_Review_final.pdf">Cyberspace Policy Review</a>,&#8221; which was the result of a 60-day, comprehensive, &#8220;clean-slate&#8221; directed by the President to review and assess U.S. policies and structures for cybersecurity.  To quote Hathaway concerning the nine key legislation to watch:</p>
<ul>
<li><a href="http://www.govtrack.us/congress/bill.xpd?bill=s111-139">Data Breach Legislation (S. 139)</a>:  It will normalize the 46 State Data breach laws into one national umbrella.  It may be expanded to include more than Personal Identifiable Information (PII).  One issue with this bill is that it would consolidate all reporting to the US Secret Service, which is not helpful for broader information sharing with industry or across government.</li>
<li><a href="http://www.govtrack.us/congress/bill.xpd?bill=h111-2221">Data Accountability and Trust Act (H.R. 2221)</a>:  It was voted out of the House of Representatives in early December 2009.  It requires the ISPs to make victims aware of infection if seeing breach across network.  I<br />
believe the Comcast Denver, CO pilot program could be anticipatory market movement associated with this bill (to better understand costs).  It will be interesting to see if this is extended to those services who may also be able to determine if there is anomalous behavior on the broader backbone.   As you may know, Germany just passed a law requiring their ISPs to inform their citizens/consumers if they have been infected.</li>
<li>International Cybercrime Reporting and Cooperation Act (<a href="http://www.govtrack.us/congress/bill.xpd?bill=s111-1438">S. 1438</a> and <a href="http://www.govtrack.us/congress/bill.xpd?bill=h111-4692">H.R. 4692</a>):  This bill was introduced by Sen Gillibrand, and co-sponsored by Sen Hatch, which will give it strength in the Judiciary Committee.  The bill requires the President to produce an annual report to Congress providing an assessment of every country’s level of ICT utilization and development; assesses how each country’s legal, law enforcement and judicial systems address cyber crime and protect commerce and consumers.  This bill met discord from software and hardware companies and their associated lobbying organizations (e.g., BSA, Tech America) because there is language that there will be imposed sanctions on countries who have demonstrated 5 years of &#8220;bad behavior&#8221;.  This Bill and any hearing around it will certainly draw attention to the recent Google/PRC debacle.  It has a sister bill in the House of Representatives, H.R. 4692 mirrors the areas of focus.    **Note Sen Kerry and Sen. Gillibrand have also introduced <a href="http://www.govtrack.us/congress/bill.xpd?bill=s111-3193">S. 3193</a> (International Cyberspace and Cybersecurity Coordination Act of 2010) to authorize the creation of a senior coordinator at the State Department, with the rank and status of Ambassador at Large.</li>
<li><a href="http://www.govtrack.us/congress/bill.xpd?bill=h111-4061">Cybersecurity Enhancement Act (H.R. 4061)</a>:  It passed the House of Representatives in February (2/2/10).  In addition to providing additional responsibility to NIST, it creates an office for a national coordinator for<br />
the networking and information technology research and development program to improve cybersecurity research and development and coordination between the federal government, academia and private sector.  The NITRD office (within the Office of Science and Technology Policy) already coordinates all of the Cyber R&#038;D which for this year is well over $4B.  While this is non-controversial piece of legislation because it supports R&#038;D efforts focused on identity management technologies and usability, authentication methods, and privacy, its not clear how the new office will interact with the current OSTP responsibilities.</li>
<li><a href="http://www.govtrack.us/congress/bill.xpd?bill=s111-921">FISMA II (S. 921)</a>: It updates FISMA I from compliance driven (check-list) to measures that are performance based.  It uses the State Department&#8217;s Risk Scoring tool which measures its systems on a continuous basis against known vulnerabilities and offers meaningful feedback in the form of actionable remediation techniques to the operators and high level feedback to senior managers to ensure accountability is one example that could serve as a model for the rest of government.   It also affords the department and agency chief information security officer the focus and attention it need and deserve.  Finally, it is possible that FISMA II will address procurement reform.</li>
<li><a href="http://www.govtrack.us/congress/bill.xpd?bill=h111-2071">Intelligence Authorization Act (H.R. 2071)</a>:  It strengthens and enhances America&#8217;s intelligence capabilities, and improves congressional oversight of our intelligence agencies. It provides our intelligence community<br />
with the tools and resources to train more officers, expand language skills, strengthen cybersecurity efforts, and more effectively prevent the spread of weapons of mass destruction.  Contains multiple Congressionally Directed Actions for CNCI.</li>
<li><a href="http://www.govtrack.us/congress/bill.xpd?bill=s111-773">Cybersecurity Act of 2009 (S. 773)</a>:  The bill combines audits, industry-developed and government-backed standards, increased information-sharing, and other mechanisms to bolster private sector cybersecurity.  It<br />
establishes a Cybersecurity Advisory Panel (Presidential Level) and a National Clearinghouse for information sharing.  Additionally, it extends the Scholarship for Service program (increases to 1000 scholarships) and increases the National Science Foundation’s budget for R&#038;D.</li>
<li><a href="http://www.govtrack.us/congress/bill.xpd?bill=h111-5026">The Grid Reliability and Infrastructure Defense Act (H.R. 5026)</a>:  The bill amends the Federal Power Act and directs the Federal Energy Regulatory Commission to protect the electric transmission and distribution grid from vulnerabilities.  In addition to providing authority to address immediate threats, the GRID Act would also give FERC authority to mandate measures to protect against system “vulnerabilities” if it finds that the North American Electricity Reliability Corp. (“NERC) standards are insufficient.  If passed, the legislation will provide a security framework for the Smart Grid.</li>
<li><a href="http://www.govtrack.us/congress/bill.xpd?bill=h111-3183">Energy and Water Appropriations Act 2010 (Law)</a>:  It appropriates additional funds for Cybersecurity: $46.5 million for energy delivery cybersecurity, an increase of $34.5 million from 2009, to develop secure grid technologies as cyber attacks increase worldwide and the grid becomes increasingly network-connected.  It also establishes a National Cyber Center for the grid.</li>
</ul>
<p><h3>Final Thoughts</h3>
<p>The Committee will hold a hearing on the legislation next week, starting on <b>June 15, 2010</b>.  Watch for analysis from the folks listed above.  I am sure they will have interesting analysis as more details are released.  This is going to be interesting.
</p>
<p>
<b>Related Posts:</b></p>
<ul>
<li><a href="http://blog.securitymonks.com/2010/05/31/fedramp-and-recent-changes-prepare-feds-for-cloud-adoption/">FedRAMP and Recent Changes Prepare Feds for Cloud Adoption</a></li>
<li><a href="http://blog.securitymonks.com/2008/03/17/fisma-paperwork-or-actual-security/">FISMA: Paperwork Or Actual Security?</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2010/06/10/fisma-reform-lieberman-collins-and-carper-introduce-bill/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FedRAMP and Recent Changes Prepare Feds for Cloud Adoption</title>
		<link>http://blog.securitymonks.com/2010/05/31/fedramp-and-recent-changes-prepare-feds-for-cloud-adoption/</link>
		<comments>http://blog.securitymonks.com/2010/05/31/fedramp-and-recent-changes-prepare-feds-for-cloud-adoption/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 04:18:41 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[FISMA]]></category>
		<category><![CDATA[FedRAMP]]></category>
		<category><![CDATA[NIST]]></category>
		<category><![CDATA[Risk]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/?p=1936</guid>
		<description><![CDATA[This month I had the pleasure of attending a talk given by Warren Udy, Director Information Assurance and Cyber Security at US Department of Energy. If you are in the Arlington, VA area on June 22, you should try to catch Warren at the &#8220;Cloud Computing Committee Meeting.&#8221;  His presentation was not only very [...]]]></description>
			<content:encoded><![CDATA[<p>This month I had the pleasure of attending a talk given by <a href="http://www.linkedin.com/pub/warren-udy/18/224/36b">Warren Udy</a>, Director Information Assurance and Cyber Security at US Department of Energy. If you are in the Arlington, VA area on June 22, you should try to catch Warren at the &#8220;<a href="http://www.aeanet.org/Events/EventsCatalog.cfm?product_major=PD061008">Cloud Computing Committee Meeting</a>.&#8221;  His presentation was not only very entertaining and enlightening on the new Federal Risk and Authorization Management Program (<a href="http://www.cio.gov/pages.cfm/page/Federal-Risk-and-Authorization-Management-Program-FedRAMP">FedRAMP</a>), but it also started me thinking about a few other recent developments on the federal cloud front.  Before discussing FedRAMP, let us discuss the recent changes to FISMA, the desire for open government and the cloud, and the General Services Administration (GSA) reissuing the request for quote (RFQ) to Infrastructure as a Service (IaaS) vendors.  We will conclude with examples of government cloud adaption going on today.  Things are getting interested on the federal front.</p>
<p><h3>Changes to FISMA</h3>
</p>
<p>
Last month the Obama administration announced new standards for agency reporting under FISMA as part of an effort to get agencies to shift from paper-based reports to real-time monitoring of systems.  <a href="http://www.facebook.com/pages/Vivek-Kundra/56152836529" target="_blank">Vivek Kundra</a>, the Federal Chief Information Officer, was interviewed by Federal News Radio in the post &quot;<a href="http://www.federalnewsradio.com/index.php?nid=35&amp;sid=1918078" target="_blank">OMB outlines shift on FISMA</a>.&quot;  Vivek expressed the vision that &quot;What we need to do, when it comes to information security, is shift to a model across the federal government, with a focus that is much more of a real-time basis. And you&#39;ll see forthcoming, in terms of the FISMA reporting guidance, more centered on continuous performance monitoring and Cyberscope.&quot;
</p>
<p>
<a href="http://www.linkedin.com/pub/dir/Ben/Bain/">Ben Bain</a> is reporting in the article, &quot;<a href="http://fcw.com/articles/2010/05/24/web-nasa-fisma-memo.aspx" target="_blank">NASA&#39;s new FISMA approach and what it means for you</a>&quot; that NASA’s Deputy Chief Information Officer for IT Security <a href="http://www.linkedin.com/pub/jerry-davis/12/3b6/343">Jerry Davis</a> is developing a new program for the security authorization process based on continuous monitoring, automated tools and reducing paperwork.  NASA hopes to have it in place for fiscal 2011.  “Security is still going to be done. Certification and accreditation will still be done, but the way we do it is going to change significantly and the frequency of it will change,” he said. “Instead of every three years, you’re really going to be doing it, in a sense, on like a weekly or monthly basis, you’re always going to be looking at those controls and adjusting them for changes.&quot;
</p>
<p>
<a href="http://www.sans.org/press/photos_bios.php" target="_blank"> Alan Paller</a>, director of research at the <a href="http://www.sans.org/" target="_blank">SANS Institute</a> is quoted on how the new approach will help to correct flaws in the original FISMA legislation, &quot;It&#39;s a move toward being able to know the status of every machine at every minute. So that when something bad is coming at you, you know where you can target and where you can&#39;t so you can act quickly. It&#39;s a complete change from what we&#39;ve had before. This started during the Clinton Administration, and it was the Senate that created it in the bill called GISRA, and then it became FISMA. It was an error made by people who didn&#39;t understand the threat, and the error was that you can manage fast-moving attacks with slow moving paper.&quot;
</p>
<p>
Joe Faraone, aka <a href="http://www.guerilla-ciso.com/archives/author/vlad-the-impaler/" title="Posts by Vlad the Impaler" target="_blank">Vlad the Impaler</a>, in his post &quot;<a href="http://www.guerilla-ciso.com/archives/1698" title="Permanent Link to “Machines Don’t Cause Risk, People Do!”" target="_blank">Machines Don’t Cause Risk, People Do!&quot;</a> warns that &quot;continuous, repeatable security processes followed by knowledgeable, responsible practitioners are what government needs. But you cannot develop these processes without starting from a larger, enterprise view.&quot;  Joe writes &quot;Desiring to know everything about everything may seem to some to be a worthy goal, but may be beyond many organization’s budgets. <em>*Everything*</em> is a point in time snapshot, no matter how many snapshots you take or how frequently you take them. Continuous, repeatable security processes followed by knowledgeable, responsible practitioners are what government needs. But you cannot develop these processes without starting from a larger, enterprise view. Successful organizations follow this–dare I say it–axiom whether discussing security governance, or system administration.&quot;
</p>
<p><h3>Open Government and the Cloud</h3>
</p>
<p>
Effective security approaches being beyond many organization&#39;s budget might just be at the heart of the matter.  Recall that Vivek Kundra statement that he sees two overarching trends now happening in computing:</p>
<ol>
<li>The increasing use of mobile devices and the app ecosystems they support. </li>
<li>There&#39;s cloud computing, which can cut IT costs and drastically improve access to information.</li>
</ol>
<p>With that in mind, it is not surprising that <a href="http://blog.seattlepi.com/microsoft/bio.asp#bio150043" target="_blank">Nick Eaton</a> reports in his post, &quot;<a href="http://blog.seattlepi.com/microsoft/archives/196607.asp" target="_blank">Obama&#39;s CIO ready to bring government tech up to speed</a>&quot; that the first two major tech initiative launched by the Obama administration consist of:</p>
<ol>
<li><a href="http://www.data.gov/" target="_blank">Data.gov</a>, which is a depository for open government datasets that people can access to create applications, do scientific research and more. It launched with 47 datasets and it now includes more than 169,000. Since its launch in May 2009, New York, San Fransisco, Seattle and other local governments have launched similar services. Vivek has stated, that a big difference between public-sector and private-sector technology is that the commercial world is focused on front-end customer needs, whereas government IT is usually focused on the back end. Kundra wants to change that by creating accessible user interfaces to online government services, and as a result make &quot;government cool again.&quot;</li>
<li><a href="https://www.apps.gov/cloud/advantage/main/home.do?BV_UseBVCookie=Yes" target="_blank">Apps.gov</a>, which is hosted by the U.S. General Services Administration. It&#39;s a clearinghouse for hundreds of cloud-computing applications, both free and not, from mostly private vendors.</li>
</ol>
<p>Cloud computing can be a solution that allow for continuous monitoring and a unified risk based approach across government agencies, all while reducing costs.  A major stumbling block is achieving agencies compliance issues in respect to cloud vendors.
</p>
<h3>GSA Reissues RFQ</h3>
<p>
The GSA released the <a href="http://www.federalnewsradio.com/docs/GSA_RFQ_IaaS.doc">RFQ</a> on its E-Buy mid-May asking for bids from IaaS providers on cloud storage services, virtual machines and cloud web hosting.  <a href="http://fedcloud.wordpress.com/2010/05/24/gsas-mcclure-describes-new-cloud-rfq/">Fed Cloud Blog</a> interviewed <a href="http://www.gsa.gov/Portal/gsa/ep/contentView.do?contentType=GSA_BASIC&#038;contentId=12853">Dave McClure</a>, GSA’s Associate Administrator of Citizen Services and Communications, concerning the RFQ and the new contract.  Dave discussed several of the differences:</p>
<blockquote><p>We’re raising the security level to the moderate level. I think that’s where the public sector in general is headed — greater security in these cloud provisioning agreements. So, we’ve raised this up to the moderate level. I think that’s a significant improvement and difference from the prior RFQ. We also are making it much easier and clearer to map the industry offerings to the contract line items in this BPA instrument that we’re using. There was some confusion about whether specific services and prices for some of the industry offerings — how they’ve mapped to the contract line items in this BPA. We’ve gone back and actually cleaned that up and had conversations with industry on how that mapping process can work very effectively. So I think that will also create a much better instrument than what we had before. The third big difference is that things that are awarded off of this instrument will be candidates that will go into the FedRAMP centralized CNA approval process. I think that will make a difference, as well — knowing that your product or service will actually go through one CNA and then be usable across the entire government.</p></blockquote>
<p><h3>FedRAMP</h3>
</p>
<p>
This month FedRAMP was officially announced.  <a href="http://csrc.nist.gov/staff/rolodex/mell_peter.html">Peter Mell</a>, FedRAMP Program Manager, discusses the program in his <a href="https://isaca-washdc.sharepointsite.net/resources/Event%20Presentations/Conference-April2010-Session4.pdf" target="_blank">presentation</a> from last month.  Peter explains FedRAMP is a government-wide initiative to provide joint authorizations and continuous security monitoring services.  It provides a unified government-wide risk management and it will allow agencies to leverage FedRAMP authorizations (when applicable).
</p>
<p>
FedRAMP&#8217;s <font color="#000000">initial focus</font> is on cloud computing with the program working with cloud vendors (currently Microsoft and Google are in pilot mode) to evaluate their overall security environment in relation to government security controls.  The controls will be based on the new NIST security framework.  There still will be some gaps between civilian, DoD and Intel agencies, so moving to cloud will still require some security work.  The goal of FedRAMP is to create a unified risk management process that:</p>
<ul>
<li>increases security through focus assessment.</li>
<li>eliminates duplication of effort and associated cost savings.</li>
<li>enables rapid acquisition by leveraging pre-authorized solutions.</li>
<li>provide agency vetted transparent security requirements and authorization packages.</li>
<li>facilitates multi-agency use of shared systems.</li>
<li>ensure integration with government-wide security efforts.</li>
</ul>
<p>Peter states, &quot;An advantage of this program is that [vendors] primary work with one security assessment and authorization body, or one risk management program, and they don&#39;t have to independently meet all of the security requirements of the many, many different agencies.&quot;   In <a href="http://www.govinfosecurity.com/articles.php?art_id=2464&amp;search_keyword=FedRAMP&amp;search_method=exact" target="_blank">an interview</a> with <a href="http://blogs.govinfosecurity.com/blogs.php?blogID=13">Eric Chabrow</a>, Mell goes on to state, &quot;Agencies, by leveraging FedRAMP authorization, will save a lot of money and enable rapid acquisition, but they&#39;re still in control.  They get to choose whether or not they leverage it.  They can choose if they want to do additional work to assure systems meet the security needs of their agency.&quot;
</p>
<p>
Mell believes the primary hurdle in securing the government adaption of cloud computing is the lack of government-wide authorization capabilities.  Mell states:</p>
<blockquote><p>Currently, with each federal agency independently doing risk management with these large outsourced systems in cloud computing you have got duplication of effort, but you have got incompatible policies being levied because the Federal Information Security Management Act is all about a framework by which agencies communicate or enforce their policies on a system. So you get 40 agencies together, enforcing their policies on a single system and the interception of those policies is likely not draftable. Likely, they will disagree on the finer points of server configuration, for example, and it just won&#39;t be possible and that is a source of great frustration for cloud vendors. It also means that acquisition is very slow, the lengthy compliance processes and then there is inconsistent application of these government-wide security programs.</p>
<p>To solve that, and I think this is common sense, I don&#39;t think we are doing anything unexpected or unusual here, it&#39;s certainly new, that the proposed solution is found within FedRAMP &#8211; the Federal Risk and Authorization Management Program. The idea is to create a government-wide, risk management program that has to be optionally used by the agencies. It provides joint authorization services and continuous monitoring services and again, I will stress that it is optional.</p>
<p>FedRAMP would perform assessment and authorization of these very large systems, these government-wide authorization then can be optionally leveraged by agencies so that they can adopt these services with a minimal of additional security effort required. FedRAMP would perform security, based on an agreed upon government-wide security baseline that agencies can leverage. That is what I mean by most of the work will be done because that baseline will have been assessed and authorized.</p>
<p>Agencies do have unique missions and risk tolerances and security needs, and so agencies are always welcome to do incremental additional security testing, require additional security controls to be implemented and so forth. But again, the idea is to complete the bulk of the work for the agencies; do it once and do it well and thereby reduce an enormous amount of duplication of effort and enable rapid acquisition by federal agencies, eliminate that concern of security requirements not being compatible when multiple agencies levied them on a particular resource pool cloud system. And lastly, ensure consistent application of federal government-wide security programs. The Trusted Internet Connection program or there is ITM, there is Einstein, and the list goes on</p></blockquote>
<p>
As to the question of authorization, Mell explains, &quot;this fits perfectly within existing law, OMB policy, and even NIST security guidance. What we did do is in the new NIST risk management framework, in particular the NIST Special Publication <a href="csrc.nist.gov/publications/nistpubs/800-37-rev1/sp800-37-rev1-final.pdf">800-37</a>, we added an Appendix s.6. That appendix talks about this notion of joint authorization being performed by the joint authorization board and then this concept of leveraged authorization where the agencies are leveraging the outcome of this joint authorization. We put the sort of foundational underpinnings of FedRAMP into the new NIST management framework. And by the way, FedRAMP is designed to follow that NIST risk management framework and focus a lot on that continuous monitoring aspect.&quot;
</p>
<p>
There are real issues that need to be worked out as FedRAMP develops.  For example, Michael Smith in his post, &#8220;<a href="http://www.guerilla-ciso.com/archives/1714">NIST Cloud Conference Recap</a>&#8221; shares his personal experience with a certifier that said, &#8220;we don’t recognize common controls so even though you’re just a simple web application you have to justify every control even if it’s provided to you as infrastructure.&#8221;  Michael goes on to list several pieces that he has not seen FedRAMP addressed yet (follow the link and read his blog).  I will add two more:</p>
<ol>
<li><b>Vendor Lock in</b>: if a cloud provider is authorized at some point but later stops meeting the security controls causing authorization to be revoked, how do agencies switch cloud providers without cost and/or loss of service?</li>
<li><b>Contamination Containment:</b> when classified material leaks into the cloud, how is that dealt with?  It does happen.  Current requirements are to have the drives pulled and destroyed.  That is not possible under current cloud configuration where the data is spread over thousands of drives.
</li>
</ol>
<p>So, everything is not rainbows and unicorns.  It never is in security.  There are real challenges to be faced.  It is great that a discussion is taking place and folks are working hard at addressing these issues.
</p>
<h3>Federal Cloud Adoption</h3>
<p>
This past week, a new Federal CIO Council report, &quot;<a href="http://www.cio.gov/pages.cfm/page/State-of-Public-Sector-Cloud-Computing" target="_blank">The State of Public Sector Cloud Computing</a>&quot; was released.  The executive summary states, &quot;As we move to the cloud, we must be vigilant in our efforts to ensure that the standards are in place for a cloud computing environment that provides for security of government information, protects the privacy of our citizens, and safeguards our national security interests. This report provides details regarding the National Institute of Standards and Technology’s efforts to facilitate and lead the development of standards for security, interoperability, and portability.&quot; Kevin Jackson in his post, &quot;<a href="http://cloudcomputing.sys-con.com/node/1408645" target="_blank">Vivek Kundra &#8211; State of Public Sector Cloud Computing</a>&quot; describes how the report &quot;not only details Federal budget guidance issued to agencies to foster the adoption of cloud computing, but it also describes 30 illustrative case studies at the Federal, state and local government level.&quot;
</p>
<p>
<a href="http://www.input.com/corp/analysis/biodetail.cfm?ContactID=213512" target="_blank">Deniece Peterson</a> in the post, &quot;<a href="http://www.input.com/blogs/public/index.cfm/2010/5/21/Security-Standards-and-Budget-Initiatives-to-Spark-Cloud-Computing-Adoption" target="_blank">Security, Standards and Budget Initiatives to Spark Cloud Computing Adoption</a>&quot; discusses the NIST forum and workshop she attended (<a href="http://csrc.nist.gov/groups/SNS/cloud-computing/forum-workshop_may2010.html">slides are available</a>).  Deniece describe the the morning session as including a panel of industry representatives from Intel, Microsoft, the Cloud Security Alliance, Amazon.com and the Center for Democracy and Technology.  The panelists&#39; wish list consisted of: </p>
<ul>
<li>Keep going with FedRAMP (security certification effort), but don&#39;t stop there. </li>
<li>Develop standards in collaboration with both industry and international stakeholders</li>
<li>Recognize that interoperability needs can vary case by case; no one size fits all</li>
<li>Don&#39;t stifle innovation by setting standards too quickly; focus on building the framework</li>
<li>ID management, access control and cryptographic key management are the main security issues surround cloud computing and can have a serious impact on scalability</li>
<li>Push vendors to be more transparent about their security controls</li>
<li>Traditional notions based on physical boundaries will need to change</li>
<li>SLAs must include meaningful metrics for performance and security</li>
</ul>
<p>&quot;We want to be pragmatic, but aggressive,&quot; Kundra told the Washington crowd, noting that the government&#39;s consolidation of federal data centers and several other &quot;game-changing approaches&quot; will further fuel the move to the cloud. <a href="mailto:andrew.hickey@ec.ubm.com" target="_blank">Andrew R Hickey</a> in his article, &quot;<a href="http://www.crn.com/software/224900712" target="_blank">Federal CIO Says Cloud Standards Needed For Government Adoption</a>&quot; describes how NIST has also started the Standards Acceleration to Jumpstart Adoption of Cloud Computing (<a href="http://csrc.nist.gov/groups/SNS/cloud-computing/documents/forumworkshop-may2010/nist_cloud_computing_forum-badger_grance.pdf" target="_blank">SAJACC</a>) initiative that will validate and communicate interim specifications to agencies in the areas of security, interoperability and data portability. &quot;We&#39;re not trying to write cloud computing standards, but are trying to do some testing on reasonable system interfaces or specifications of systems and make the test results available so people can see something is absolutely possible because the the test results show it,&quot; NIST senior computing scientist Lee Badger said.  NIST will also launch a publicly accessible Web portal to facilitate collaborative development of standards to support cloud computing requirements, Dawn Leaf, NIST senior executive for cloud computing, told attendees. Leaf expects the portal to be available sometime before the end of 2010.  Currently, business use cases are now available on the <strong><a href="http://www.cio.gov" target="_blank">CIO</a></strong> Web site.
</p>
<p>
<a href="http://twitter.com/digiphile">Alex Howard</a> reports that <a href="http://feedproxy.google.com/%7Er/oreilly/radar/atom/%7E3/I3gbh1mgRyI/white-house-moves-recoverygov.html" target="_blank">recovery.gov would be moving to Amazon&#39;s cloud</a>. <a href="http://www.whorunsgov.com/Profiles/Earl_E._Devaney">Earl Devaney</a>, chairman of the recovery board, stated this move represents one of the &quot;first bricks in the foundation that we&#39;re laying&quot; throughout the federal government, in terms of cloud computing.  Vivek would direct us to &quot;look at the Department of Interior: The CIO is considering moving 80,000 emails to the cloud. Look at the investments made at GSA or a recent RFI [Request for Information] around email. Across federal government, you&#39;re seeing a number of agencies putting in a plan.&quot;  <a href="http://www.informationweek.com/authors/showAuthor.jhtml;jsessionid=E4UXQ13YCNWYZQE1GHOSKHWATMY32JVN?authorID=6419" target="_blank"><u>J. Nicholas Hoover</u></a> reports in his article &quot;<a href="http://www.informationweek.com/news/government/cloud-saas/showArticle.jhtml?articleID=225200270&amp;subSection=government" target="_blank">Gov 2.0: Google Readies Government Cloud</a>&quot; that customers Google already has for Google Apps are the city of Los Angeles and Lawrence Berkeley National Laboratory.  In the federal sector, more than 100 federal agencies are already customers of Google&#39;s other products, including Google Earth, Google Maps, and Google Enterprise Search. Google Enterprise president, <a href="http://www.google.com/corporate/execs.html#daveg">Dave Girouard</a> reports &quot;we have a lot of state and local interest, and, increasingly, with FISMA certification arriving soon, think we have an opportunity with the federal sector.&quot;  Girouard said that in addressing the federal government&#39;s unique cybersecurity demands, the majority of Google&#39;s work thus far has centered around documenting, clarifying, and explaining Google&#39;s security rather than re-inventing or changing its security posture.
</p>
<p><h3>Final Thoughts</h3>
</p>
<p>
<a href="http://www.maryengelbreit.com/">Mary Engelbreit</a>, famous children&#39;s book illustrator, once wrote &quot;If you don&#39;t like something change it; if you can&#39;t change it, change the way you think about it.&quot;  Is the government making real challenges?  If so, are these the kind of changes necessary to make cloud computing a reality in federal departments?
</p>
<p>
Lori MacVittie in her post, &#8220;<a href="http://devcentral.f5.com/weblogs/macvittie/archive/2009/03/26/can-the-cloud-survive-regulation.aspx">Can the Cloud survive regulation?</a>&#8221; points out that &#8220;we are just beginning to see the impact of what sharing and &#8216;international&#8217; really means: an increasingly complex web of requirements and regulations. That may very well make the cloud a battle-zone unsuitable for any organizational use until the conflicts between security, regulations, reliability, and privacy are addressed.&#8221;  Lori also considers that we might just &#8220;see the rise of regulated clouds; clouds within clouds specifically designed to meet the demanding needs of the myriad governmental and industry-specific privacy and data protection regulations. Regulated clouds set aside – at a premium of course – for those users and organizations who require a broader set of solutions to remain compliant even in the cloud.&#8221;
</p>
<p>
In the post &#8220;<a href="http://www.rationalsurvivability.com/blog/?p=1694">Cloud: Security Doesn’t Matter (Or, In Cloud, Nobody Can Hear You Scream)</a>&#8221; Chris Hoff offers the opinion, &#8220;the only thing that will budge the needle on this issue is how agile those who craft the regulatory guidelines are or how you can clearly demonstrate why your compensating controls mitigate the risk of the provider of service if they cannot.&#8221;  Chris goes on to state, &#8220;We need the regulators and examiners to keep pace with technology — as painful as that might be in the short term — to guarantee our success in the long term.&#8221;  Chris also recommends organizations &#8220;manage compliance, don’t let it manage you.&#8221;  Novell has done a very funny short video based on the blog (along with other entertaining short videos you will want to check out):
</p>
<p>
<object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11685089&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=11685089&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="300"></embed></object>
</p>
<p>
I do not agree with everything that is going on in government.  I believe solutions will be found through trained security professionals.  Security tools can be empowering but are not the end all solution.  A monkey with a computer, even if it is a high performance computer, is no William Shakespeare.  Adding more monkeys will not make any difference; it just creates a zoo.  I do believe in the possibilities created with change, especially when you find yourself in a place where things are not working.  You build upon the knowledge of your people utilizing what does work.
</p>
<p>
What gives me greatest hope is that the federal government seems to be listening to experts like Chris, Deniece, Joe, Lori, Michael, etc. and making a solid effort to create an environment where it can foster the adoption of cloud computing.  These are not just cosmetic changes focused on how we think about computing, but real changes in how we will operate.  For those who like the challenges brought on by change, it is an exciting time to be in security.
</p>
<p>
<b>Related Posts:</b></p>
<ul>
<li><a href="http://blog.securitymonks.com/2010/01/18/omb-says-bring-on-the-clouds-frightening-or-funny/">OMB Says Bring on the Clouds: Frightening or Funny?</a></li>
<li><a href="http://blog.securitymonks.com/2009/08/09/standardization-and-interoperability-in-security/">Standardization and Interoperability in Security</a></li>
<li><a href="http://blog.securitymonks.com/2009/04/16/modeling-security-into-the-clouds/">Modeling Security into the Clouds</a></li>
<li><a href="http://blog.securitymonks.com/2009/01/25/recent-cloud-postings/">Recent Cloud Postings</a></li>
<li><a href="http://blog.securitymonks.com/2008/10/13/provenance-and-trust/">Provenance and Trust</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2010/05/31/fedramp-and-recent-changes-prepare-feds-for-cloud-adoption/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Visualization: An Example Graphing NVD CVE Data</title>
		<link>http://blog.securitymonks.com/2010/04/16/google-visualization-an-example-graphing-nvd-cve-data/</link>
		<comments>http://blog.securitymonks.com/2010/04/16/google-visualization-an-example-graphing-nvd-cve-data/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 15:54:42 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[CERT]]></category>
		<category><![CDATA[CVE]]></category>
		<category><![CDATA[CVSS]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Metrics]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[NIST]]></category>
		<category><![CDATA[NVD]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SCAP]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[Vulnerability]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/?p=1825</guid>
		<description><![CDATA[Google visualization offers graphing abilities to any number of projects.  Why should security professionals care?  If you are going to have to collect and present security metrics, it is best to showcase them in the very best manner possible.  Andrew Jaquith in his article, &#8220;Creating meaningful information security metrics&#8221; states, &#8220;For 2010, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/googlevisualization.gif" align="left" width=100/>Google visualization offers graphing abilities to any number of projects.  Why should security professionals care?  If you are going to have to collect and present security metrics, it is best to showcase them in the very best manner possible.  Andrew Jaquith in his article, &#8220;<a href="http://searchsecurity.techtarget.com/magazineFeature/0,296894,sid14_gci1394672_mem1,00.html">Creating meaningful information security metrics</a>&#8221; states, &#8220;For 2010, Forrester Research expects that overall security budgets will rise less than 5 percent over 2009 &#8211;higher than in the previous year, but not by much.&#8221;  Andrew goes on to point out, &#8220;smart security managers, sensing sudden vulnerability in their budgets, seek better ways to measure and prove the value of what they do every day.&#8221;</p>
<p>
In today&#8217;s work environment there is a need to show changes, potential risks, improved performance, etc. in all areas of the company&#8217;s operations.  Security professionals need to be prepared to answer the basic question, &#8220;why should the CIO or CEO care about security?&#8221;  CSO Online has a great quote from the post, &#8220;<a href="http://www.csoonline.com/article/550413/From_the_CIO_Why_You_Didn_t_Get_the_CISO_Job">From the CIO: Why You Didn&#8217;t Get the CISO Job</a>&#8221; that challenges us to consider our views when it comes to security.  The post states, “laser focus on your speciality is great in middle management. It’s what we want. One of the really hard things about jumping from management to executive is a focus on the whole of the business. It’s a rare person who manages it quickly or easily.”  That is basically the problem with metrics.  It is a battle between generalization to the point of uselessness and details to the point of not being understandable or collectible.  At the end of the day, something needs to be done because the security industry is currently leaving upper management in the position of not understanding what is going on within their business.  That is a risk that not acceptable.
</p>
<p>
Andrew&#8217;s article discusses what kind of security metrics should be used.  Additional sources of information on security metrics can be found in a previous post entitled &#8220;<a href="http://blog.securitymonks.com/2007/04/29/security-metrics/">Security Metrics</a>.&#8221;  The post provides links to wonderful sources on security metric information.  You might also want to take a look at the <a href="http://cisecurity.org/en-us/?route=downloads.show.single.metrics.100">CIS Consensus Security Metrics v1.0.0</a> guide, NIST Special Publication (SP) <a href="http://csrc.nist.gov/publications/nistpubs/800-55-Rev1/SP800-55-rev1.pdf">800-55 Rev 1</a> &#8220;Security Metrics Guide for Information Technology Systems&#8221;, <a href="http://csrc.nist.gov/publications/nistir/ir7564/nistir-7564_metrics-research.pdf">NIST IR-7564</a> &#8220;Directions in Security Metrics Research&#8221;,  &#8220;<a href="http://www.gilligangroupinc.com/headlines/2009/feb-23-related/20090223-cag-draft1.0.pdf">Twenty Most Important Controls and Metrics for Effective Cyber Defense and Continuous FISMA Compliance</a>,&#8221; and &#8220;<a href="http://www.slideshare.net/ramsesgallego/metrics-measures-myths">Metrics, measures &#038; Myths</a>.&#8221;  Once you have start gathering metrics, you will want to present them in an easy to understand format.  This is where Google Visualization can help.
</p>
<p>
Today&#8217;s post walks through an example using the data from the National Institute of Standards and Technology (NIST) National Vulnerability Database (<a href="http://nvd.nist.gov/">NVD</a><a>) Common Vulnerabilities and Exposures (</a><a href="http://cve.mitre.org/">CVE</a>) database.  The purpose is to provide a working example from which you can learn and apply to the various metrics gathered at your organization.
</p>
<p><h3>Data Source</h3>
</p>
<p>
A previous post, &#8220;<a href="http://blog.securitymonks.com/2009/08/09/standardization-and-interoperability-in-security/">Standardization and Interoperability in Security</a>,&#8221; discussed how the Security Content Automation Protocol (<a href="http://scap.nist.gov/">SCAP</a>) is an attempt to help defenders by providing a collection of XML schemas/standards that allow technical security information to be exchanged between tools.  SCAP components consists of:</p>
<ul>
<li><a href="http://cce.mitre.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/cce.mitre.org');">Common Configuration Enumeration (CCE)</a>: provide unique identifiers to system configuration issues in order to facilitate fast and accurate correlation of configuration data across multiple information sources and tools.</li>
<li><a href="http://cpe.mitre.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/cpe.mitre.org');">Common Platform Enumeration (CPE)</a>:  a structured naming scheme for information technology systems, platforms, and packages.</li>
<li><a href="http://cve.mitre.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/cve.mitre.org');">Common Vulnerability Enumeration (CVE)</a>: a dictionary of publicly known information security vulnerabilities and exposures.</li>
<li><a href="http://www.first.org/cvss/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.first.org');">Common Vulnerability Scoring System (CVSS)</a>: a vulnerability scoring system designed to provide an open and standardized method of rating IT vulnerabilities.  NIST has even provided a <a href="http://nvd.nist.gov/cvss.cfm?calculator&#038;adv&#038;version=2" onclick="javascript:pageTracker._trackPageview('/outbound/article/nvd.nist.gov');">calculator</a> for creating CVSS vulnerability severity scores. </li>
<li><a href="http://scap.nist.gov/specifications/xccdf/" onclick="javascript:pageTracker._trackPageview('/outbound/article/scap.nist.gov');">eXtensible Checklist Configuration Description Format (XCCDF)</a>: a specification language for writing security checklists, benchmarks, and related kinds of documents.  NIST has released the NIST Interagency Report 7275 Revision 3 &#8220;<a href="http://csrc.nist.gov/publications/nistir/ir7275r3/NISTIR-7275r3.pdf" onclick="javascript:pageTracker._trackPageview('/outbound/article/csrc.nist.gov');">Specification for Extensible Configuration Checklist Description Format (XCCDF) Version 1.1.4</a>.&#8221;</li>
<li><a href="http://oval.mitre.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/oval.mitre.org');">Open Vulnerability Assessment Language (OVAL)</a>: an information security community standard to promote open and publicly available security content, and to standardize the transfer of this information across security tools and services.</li>
</ul>
<p>
We are going to make use of the data from <a href="http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-recent.xml">NVD/CVE XML feed</a> with the Common Vulnerability Scoring System (<a href="http://www.first.org/cvss/cvss-guide.html">CVSS</a>) mappings (version 2.0).  NIST documentation states:<br />
<blockquote>CVSS provides an open framework for communicating the characteristics and impacts of IT vulnerabilities. Its quantitative model ensures repeatable accurate measurement while enabling users to see the underlying vulnerability characteristics that were used to generate the scores. Thus, CVSS is well suited as a standard measurement system for industries, organizations, and governments that need accurate and consistent vulnerability impact scores. Two common uses of CVSS are prioritization of vulnerability remediation activities and in calculating the severity of vulnerabilities discovered on one&#8217;s systems. </p></blockquote>
<p>
NVD provides CVSS &#8216;<b>base scores</b>&#8216; representing the innate characteristics of each vulnerability.  &#8216;<b>Temporal scores</b>,&#8217; which change over time due to events external to the vulnerability, are not provided though NVD does provide a <a href="http://nvd.nist.gov/cvss.cfm?calculator">CVSS score calculator</a>.  This allows an organization to add temporal data and even factor in &#8216;<b>environmental scores</b>&#8216; customized to reflect the impact of the vulnerability on the organization.  Please refer to the <a href="http://www.first.org/cvss/cvss-guide.html">CVSS standards guide</a> and the <a herf="http://www.owasp.org/index.php/OWASP_Risk_Rating_Methodology">OWASP Risk Rating Methodology</a> concerning factors involved in estimating the severity of risks to your business.
</p>
<p><h4><b>NVD CVE XML Schema</b></h4>
</p>
<p>
For our example, we will be using the data feeds <a href="http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2010.xml">nvdcve-2.0-2010.xml</a> and <a href="http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2090.xml">nvdcve-2.0-2009.xml</a>.  Examining the <a href="http://nvd.nist.gov/schema/nvd-cve-feed_2.0.xsd">CVE XML 2.0 Schema</a>, we are particularly interested in certain vulnerability and CVSS scoring information.  For example, for CVE-2010-1228, we will parse and pull the following kind of information:
</p>
<p><pre><tt><b><font color="#3366FF">&lt;entry</font></b> <font color="#009900">id</font><font color="#990000">=</font><font color="#CC3333">"CVE-2010-1228"</font><b><font color="#3366FF">&gt;</font></b>
  <b><font color="#3366FF">&lt;vuln:cve-id&gt;</font></b>CVE-2010-1228<b><font color="#3366FF">&lt;/vuln:cve-id&gt;</font></b>
  <b><font color="#3366FF">&lt;vuln:published-datetime&gt;</font></b>2010-04-01T18:30:00.453-04:00
  <b><font color="#3366FF">&lt;/vuln:published-datetime&gt;</font></b>
  <b><font color="#3366FF">&lt;vuln:last-modified-datetime&gt;</font></b>2010-04-05T00:00:00.000-04:00
  <b><font color="#3366FF">&lt;/vuln:last-modified-datetime&gt;</font></b>
  <b><font color="#3366FF">&lt;vuln:cvss&gt;</font></b>
    <b><font color="#3366FF">&lt;cvss:base_metrics&gt;</font></b>
      <b><font color="#3366FF">&lt;cvss:score&gt;</font></b>10.0<b><font color="#3366FF">&lt;/cvss:score&gt;</font></b>
      <b><font color="#3366FF">&lt;cvss:access-vector&gt;</font></b>NETWORK<b><font color="#3366FF">&lt;/cvss:access-vector&gt;</font></b>
      <b><font color="#3366FF">&lt;cvss:access-complexity&gt;</font></b>LOW<b><font color="#3366FF">&lt;/cvss:access-complexity&gt;</font></b>
      <b><font color="#3366FF">&lt;cvss:authentication&gt;</font></b>NONE<b><font color="#3366FF">&lt;/cvss:authentication&gt;</font></b>
      <b><font color="#3366FF">&lt;cvss:confidentiality-impact&gt;</font></b>COMPLETE<b><font color="#3366FF">&lt;/cvss:confidentiality-impact&gt;</font></b>
      <b><font color="#3366FF">&lt;cvss:integrity-impact&gt;</font></b>COMPLETE<b><font color="#3366FF">&lt;/cvss:integrity-impact&gt;</font></b>
      <b><font color="#3366FF">&lt;cvss:availability-impact&gt;</font></b>COMPLETE<b><font color="#3366FF">&lt;/cvss:availability-impact&gt;</font></b>
      <b><font color="#3366FF">&lt;cvss:source&gt;</font></b>http://nvd.nist.gov<b><font color="#3366FF">&lt;/cvss:source&gt;</font></b>
    <b><font color="#3366FF">&lt;/cvss:base_metrics&gt;</font></b>
  <b><font color="#3366FF">&lt;/vuln:cvss&gt;</font></b>
<b><font color="#3366FF">&lt;/entry&gt;</font></b>
</tt></pre>
</p>
<p><h4><b>Using Perl to Retrieve the CVE File</b></h4>
</p>
<p>
Initially we will read the <a href="http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2010.xml">nvdcve-2.0-2010.xml</a> and <a href="http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-2090.xml">nvdcve-2.0-2009.xml</a> files.  If we start retrieving the file regularly, we would want to change this to <a href="http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-recent.xml">nvdcve-2.0-recent.xml</a>.  Of course, previous years can also be read in to provide a longer perspective on vulnerabilities.  A simple example of a Perl subroutine to read the NVD CVE file and save it locally would be:
</p>
<p><pre><tt><b><font color="#3366FF">sub</font></b> readpage <font color="#CC3333">{</font>
   <b><font color="#3366FF">my</font></b><font color="#990000">(</font><font color="#009900">$url</font><font color="#990000">,</font><font color="#009900">$nvd_file</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#009900">@_</font><font color="#990000">;</font>
   <b><font color="#3366FF">my</font></b><font color="#990000">(</font><font color="#009900">$proxy</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#CC3333">"http://your-proxy-server:proxy-port"</font><font color="#990000">;</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$ua</font> <font color="#990000">=</font> new LWP<font color="#990000">::</font>UserAgent<font color="#990000">;</font>
   <font color="#009900">$ua</font><font color="#990000">-&gt;</font><b><font color="#000000">proxy</font></b><font color="#990000">(</font>http  <font color="#990000">=&gt;</font> <font color="#009900">$proxy</font><font color="#990000">);</font>
   <font color="#009900">$ua</font><font color="#990000">-&gt;</font><b><font color="#000000">proxy</font></b><font color="#990000">(</font>ftp <font color="#990000">=&gt;</font> <font color="#009900">$proxy</font><font color="#990000">);</font>
   <font color="#009900">$ua</font><font color="#990000">-&gt;</font><b><font color="#000000">proxy</font></b><font color="#990000">(</font>https <font color="#990000">=&gt;</font> <font color="#009900">$proxy</font><font color="#990000">);</font>
   <i><font color="#996633"># Go out and retrieve page</font></i>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$req</font> <font color="#990000">=</font> new HTTP<font color="#990000">::</font><b><font color="#000000">Request</font></b><font color="#990000">(</font><font color="#CC3333">'GET'</font><font color="#990000">,</font> <font color="#009900">$url</font><font color="#990000">);</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$res</font> <font color="#990000">=</font> <font color="#009900">$ua</font><font color="#990000">-&gt;</font><b><font color="#000000">request</font></b><font color="#990000">(</font><font color="#009900">$req</font><font color="#990000">);</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$pjstatus</font> <font color="#990000">=</font> <font color="#993399">1</font><font color="#990000">;</font>
   <i><font color="#996633"># Check if the requested webpage is there and return results</font></i>
   <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$res</font><font color="#990000">-&gt;</font>is_success<font color="#990000">)</font> <font color="#CC3333">{</font> <i><font color="#996633"># Request successful</font></i>
       <b><font color="#3366FF">open</font></b><font color="#990000">(</font>OUTFILE<font color="#990000">,</font><font color="#CC3333">"&gt;$nvd_file"</font><font color="#990000">)</font> <font color="#990000">||</font> <font color="#990000">(</font><font color="#009900">$pjstatus</font> <font color="#990000">=</font> <font color="#993399">0</font><font color="#990000">);</font>
       <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$pjstatus</font><font color="#990000">)</font> <font color="#CC3333">{</font>
          <b><font color="#3366FF">print</font></b> OUTFILE <font color="#009900">$res</font><font color="#990000">-&gt;</font>content<font color="#990000">;</font>
       <font color="#CC3333">}</font>
       <b><font color="#3366FF">close</font></b><font color="#990000">(</font>OUTFILE<font color="#990000">);</font>
   <font color="#CC3333">}</font>
   <b><font color="#3366FF">else</font></b> <font color="#CC3333">{</font>
      <font color="#009900">$pjstatus</font> <font color="#990000">=</font> <font color="#993399">0</font><font color="#990000">;</font>
   <font color="#CC3333">}</font>
   <b><font color="#3366FF">return</font></b><font color="#990000">(</font><font color="#009900">$pjstatus</font><font color="#990000">);</font>
<font color="#CC3333">}</font>
</tt></pre>
</p>
<p>
Please <b>substitute</b> &#8220;http://your-proxy-server:proxy-port&#8221; with your site&#8217;s proxy server and port, if applicable.
</p>
<p><h4><b>Creating a MYSQL Table to Hold the Data</b></h4>
</p>
<p>
There is a great deal of information in the NVD CVE file.  You will need to determine what information your organization will be interested in storing and graphing.  For better or worse, folks have come to expect vulnerabilities to have a &#8220;Low,&#8221; &#8220;Medium,&#8221; or &#8220;High&#8221; score.  NIST has stated concerning the NVD Vulnerability <b>Severity Ratings</b>:</p>
<blockquote><p>
NVD provides severity rankings of &#8220;Low,&#8221; &#8220;Medium,&#8221; and &#8220;High&#8221; in addition to the numeric CVSS scores but these qualitative rankings are simply mapped from the numeric CVSS scores:<br />
1. Vulnerabilities are labeled &#8220;Low&#8221; severity if they have a CVSS base score of 0.0-3.9.<br />
2. Vulnerabilities will be labeled &#8220;Medium&#8221; severity if they have a base CVSS score of 4.0-6.9.<br />
3. Vulnerabilities will be labeled &#8220;High&#8221; severity if they have a CVSS base score of 7.0-10.0.
</p></blockquote>
<p>
While preferring quantitative over qualitative values, for this example I would like to create a stacked column chart.  We will add a severity column which is based on the CVSS score.  An example table follows:
</p>
<p><pre><tt><b><font color="#3366FF">CREATE</font></b> <b><font color="#3366FF">DATABASE</font></b> vulnerabilities<font color="#990000">;</font>
<b><font color="#3366FF">USE</font></b> vulnerabilities<font color="#990000">;</font>
<b><font color="#3366FF">DROP</font></b> <b><font color="#3366FF">TABLE</font></b> <b><font color="#3366FF">IF</font></b> <b><font color="#3366FF">EXISTS</font></b> <font color="#CC3333">`nvdcve`</font><font color="#990000">;</font>
<b><font color="#3366FF">CREATE</font></b> <b><font color="#3366FF">TABLE</font></b> <font color="#CC3333">`nvdcve`</font> <font color="#990000">(</font>
  <font color="#CC3333">`cve_id`</font> <font color="#009900">varchar</font><font color="#990000">(</font><font color="#993399">13</font><font color="#990000">)</font> <b><font color="#3366FF">NOT</font></b> <b><font color="#3366FF">NULL</font></b><font color="#990000">,</font>
  <font color="#CC3333">`published`</font> <font color="#009900">datetime</font> <b><font color="#3366FF">default</font></b> <b><font color="#3366FF">NULL</font></b><font color="#990000">,</font>
  <font color="#CC3333">`modified`</font> <font color="#009900">datetime</font> <b><font color="#3366FF">default</font></b> <b><font color="#3366FF">NULL</font></b><font color="#990000">,</font>
  <font color="#CC3333">`score`</font> <font color="#009900">DECIMAL</font><font color="#990000">(</font><font color="#993399">5</font><font color="#990000">,</font><font color="#993399">2</font><font color="#990000">)</font> <b><font color="#3366FF">default</font></b> <font color="#CC3333">'0.0'</font><font color="#990000">,</font>
  <font color="#CC3333">`severity`</font> <font color="#009900">varchar</font><font color="#990000">(</font><font color="#993399">6</font><font color="#990000">)</font> <b><font color="#3366FF">default</font></b> <font color="#CC3333">'LOW'</font><font color="#990000">,</font>
  <font color="#CC3333">`vector`</font> <font color="#009900">varchar</font><font color="#990000">(</font><font color="#993399">25</font><font color="#990000">)</font> <b><font color="#3366FF">default</font></b> <b><font color="#3366FF">NULL</font></b><font color="#990000">,</font>
  <font color="#CC3333">`complexity`</font> <font color="#009900">varchar</font><font color="#990000">(</font><font color="#993399">25</font><font color="#990000">)</font> <b><font color="#3366FF">default</font></b> <b><font color="#3366FF">NULL</font></b><font color="#990000">,</font>
  <font color="#CC3333">`authentication`</font> <font color="#009900">varchar</font><font color="#990000">(</font><font color="#993399">25</font><font color="#990000">)</font> <b><font color="#3366FF">default</font></b> <b><font color="#3366FF">NULL</font></b><font color="#990000">,</font>
  <font color="#CC3333">`confidentiality`</font> <font color="#009900">varchar</font><font color="#990000">(</font><font color="#993399">25</font><font color="#990000">)</font> <b><font color="#3366FF">default</font></b> <font color="#CC3333">'NONE'</font><font color="#990000">,</font>
  <font color="#CC3333">`integrity`</font> <font color="#009900">varchar</font><font color="#990000">(</font><font color="#993399">25</font><font color="#990000">)</font> <b><font color="#3366FF">default</font></b> <font color="#CC3333">'NONE'</font><font color="#990000">,</font>
  <font color="#CC3333">`availability`</font> <font color="#009900">varchar</font><font color="#990000">(</font><font color="#993399">25</font><font color="#990000">)</font> <b><font color="#3366FF">default</font></b> <font color="#CC3333">'NONE'</font><font color="#990000">,</font>
  <font color="#CC3333">`summary`</font> <font color="#009900">varchar</font><font color="#990000">(</font><font color="#993399">512</font><font color="#990000">)</font> <b><font color="#3366FF">default</font></b> <b><font color="#3366FF">NULL</font></b><font color="#990000">,</font>
  <b><font color="#3366FF">PRIMARY</font></b> <b><font color="#3366FF">KEY</font></b>  <font color="#990000">(</font><font color="#CC3333">`cve_id`</font><font color="#990000">),</font>
  <b><font color="#3366FF">INDEX</font></b> <font color="#990000">(</font>score<font color="#990000">),</font>
  <b><font color="#3366FF">INDEX</font></b> <font color="#990000">(</font>vector<font color="#990000">)</font>
<font color="#990000">)</font>
</tt></pre>
</p>
<p><h4><b>Using Perl Populating the Database</b></h4>
</p>
<p>
Populating the database table is simply a matter of reading the file and adding the entries to the table.  An example Perl subroutine follows:
</p>
<p>
<!-- Generator: GNU source-highlight 3.1.3<br />
by Lorenzo Bettini</p>
<p>http://www.lorenzobettini.it</p>
<p>http://www.gnu.org/software/src-highlite --></p>
<pre><tt><b><font color="#3366FF">sub</font></b> readxml <font color="#CC3333">{</font>
   <b><font color="#3366FF">my</font></b><font color="#990000">(</font><font color="#009900">$nvd_file</font><font color="#990000">,</font> <font color="#009900">$dbh</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#009900">@_</font><font color="#990000">;</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$parser</font> <font color="#990000">=</font> XML<font color="#990000">::</font>LibXML<font color="#990000">-&gt;</font> <b><font color="#000000">new</font></b><font color="#990000">();</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$doc</font>    <font color="#990000">=</font> <font color="#009900">$parser</font><font color="#990000">-&gt;</font> <b><font color="#000000">parse_file</font></b><font color="#990000">(</font><font color="#009900">$nvd_file</font><font color="#990000">);</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$xc</font>     <font color="#990000">=</font> XML<font color="#990000">::</font>LibXML<font color="#990000">::</font>XPathContext<font color="#990000">-&gt;</font> <b><font color="#000000">new</font></b><font color="#990000">(</font> <font color="#009900">$doc</font><font color="#990000">-&gt;</font><b><font color="#000000">documentElement</font></b><font color="#990000">()</font> <font color="#990000">);</font>
   <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">registerNs</font></b><font color="#990000">(</font>
      def  <font color="#990000">=&gt;</font> <font color="#CC3333">'http://scap.nist.gov/schema/feed/vulnerability/2.0'</font> <font color="#990000">);</font>
   <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">registerNs</font></b><font color="#990000">(</font>
     vuln <font color="#990000">=&gt;</font> <font color="#CC3333">'http://scap.nist.gov/schema/vulnerability/0.4'</font> <font color="#990000">);</font>
   <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">registerNs</font></b><font color="#990000">(</font> cvss <font color="#990000">=&gt;</font> <font color="#CC3333">'http://scap.nist.gov/schema/cvss-v2/0.2'</font> <font color="#990000">);</font>
   <b><font color="#3366FF">for</font></b> <b><font color="#3366FF">my</font></b> <font color="#009900">$entry</font> <font color="#990000">(</font><font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">findnodes</font></b><font color="#990000">(</font><font color="#CC3333">"/def:nvd/def:entry"</font><font color="#990000">))</font> <font color="#CC3333">{</font>
      <b><font color="#3366FF">my</font></b> <font color="#009900">$cve</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'vuln:cve-id'</font><font color="#990000">,</font><font color="#009900">$entry</font><font color="#990000">);</font>
      <b><font color="#3366FF">my</font></b> <font color="#009900">$published</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'vuln:published-datetime'</font><font color="#990000">,</font> <font color="#009900">$entry</font><font color="#990000">);</font>
      <b><font color="#3366FF">my</font></b> <font color="#009900">$modified</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'vuln:last-modified-datetime'</font><font color="#990000">,</font> <font color="#009900">$entry</font><font color="#990000">);</font>
      <b><font color="#3366FF">my</font></b> <font color="#009900">$summary</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'vuln:summary'</font><font color="#990000">,</font> <font color="#009900">$entry</font><font color="#990000">);</font>
      <b><font color="#3366FF">my</font></b> <font color="#009900">$skip</font> <font color="#990000">=</font> <font color="#993399">0</font><font color="#990000">;</font>
      <b><font color="#3366FF">my</font></b> <font color="#990000">(</font><font color="#009900">$metrics</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">findnodes</font></b><font color="#990000">(</font><font color="#CC3333">'vuln:cvss/cvss:base_metrics'</font><font color="#990000">,</font> <font color="#009900">$entry</font><font color="#990000">)</font> <b><font color="#000000">or</font></b> <font color="#990000">(</font><font color="#009900">$skip</font> <font color="#990000">=</font> <font color="#993399">1</font><font color="#990000">);</font>
      <b><font color="#3366FF">if</font></b> <font color="#990000">(!</font> <font color="#009900">$skip</font><font color="#990000">)</font> <font color="#CC3333">{</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$score</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'cvss:score'</font><font color="#990000">,</font> <font color="#009900">$metrics</font><font color="#990000">);</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$vector</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'cvss:access-vector'</font><font color="#990000">,</font> <font color="#009900">$metrics</font><font color="#990000">);</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$complexity</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'cvss:access-complexity'</font><font color="#990000">,</font> <font color="#009900">$metrics</font><font color="#990000">);</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$authentication</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'cvss:authentication'</font><font color="#990000">,</font> <font color="#009900">$metrics</font><font color="#990000">);</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$confidentiality</font> <font color="#990000">=</font>
            <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'cvss:confidentiality-impact'</font><font color="#990000">,</font> <font color="#009900">$metrics</font><font color="#990000">);</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$integrity</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'cvss:integrity-impact'</font><font color="#990000">,</font> <font color="#009900">$metrics</font><font color="#990000">);</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$availability</font> <font color="#990000">=</font> <font color="#009900">$xc</font><font color="#990000">-&gt;</font> <b><font color="#000000">find</font></b><font color="#990000">(</font><font color="#CC3333">'cvss:availability-impact'</font><font color="#990000">,</font> <font color="#009900">$metrics</font><font color="#990000">);</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$severity</font> <font color="#990000">=</font> <font color="#CC3333">"LOW"</font><font color="#990000">;</font>
         <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><b><font color="#3366FF">int</font></b><font color="#990000">(</font><font color="#009900">$score</font><font color="#990000">)</font> <font color="#990000">&gt;=</font> <font color="#993399">7</font><font color="#990000">)</font> <font color="#CC3333">{</font>
            <font color="#009900">$severity</font> <font color="#990000">=</font> <font color="#CC3333">"HIGH"</font><font color="#990000">;</font>
         <font color="#CC3333">}</font>
         <b><font color="#3366FF">elsif</font></b> <font color="#990000">(</font><b><font color="#3366FF">int</font></b><font color="#990000">(</font><font color="#009900">$score</font><font color="#990000">)</font> <font color="#990000">&gt;=</font> <font color="#993399">4</font><font color="#990000">)</font> <font color="#CC3333">{</font>
            <font color="#009900">$severity</font> <font color="#990000">=</font> <font color="#CC3333">"MEDIUM"</font><font color="#990000">;</font>
         <font color="#CC3333">}</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$sql</font> <font color="#990000">=</font> <b><font color="#3366FF">qq</font></b><font color="#CC3333">{ SELECT count(*) FROM nvdcve WHERE cve_id=? }</font><font color="#990000">;</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$sth</font> <font color="#990000">=</font> <font color="#009900">$dbh</font><font color="#990000">-&gt;</font><b><font color="#000000">prepare</font></b><font color="#990000">(</font> <font color="#009900">$sql</font> <font color="#990000">);</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$rc</font> <font color="#990000">=</font> <font color="#009900">$sth</font><font color="#990000">-&gt;</font><b><font color="#000000">execute</font></b><font color="#990000">(</font><font color="#009900">$cve</font><font color="#990000">);</font>
         <b><font color="#3366FF">if</font></b> <font color="#990000">(</font> <font color="#009900">$rc</font><font color="#990000">)</font> <font color="#CC3333">{</font>
            <b><font color="#3366FF">my</font></b><font color="#990000">(</font><font color="#009900">$exist</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#009900">$sth</font><font color="#990000">-&gt;</font><b><font color="#000000">fetchrow_array</font></b><font color="#990000">();</font>
            <b><font color="#3366FF">if</font></b> <font color="#990000">(!</font> <font color="#009900">$exist</font><font color="#990000">)</font> <font color="#CC3333">{</font>
                <font color="#009900">$sql</font> <font color="#990000">=</font> <b><font color="#3366FF">qq</font></b><font color="#CC3333">{</font> INSERT INTO nvdcve SET cve_id<font color="#990000">=?,</font>
published<font color="#990000">=?,</font> modified<font color="#990000">=?,</font> score<font color="#990000">=?,</font> severity<font color="#990000">=?,</font> vector<font color="#990000">=?,</font> complexity<font color="#990000">=?,</font>
authentication<font color="#990000">=?,</font> confidentiality<font color="#990000">=?,</font> integrity<font color="#990000">=?,</font>availability<font color="#990000">=?,</font> summary<font color="#990000">=?</font> <font color="#CC3333">}</font><font color="#990000">;</font>
               <font color="#009900">$sth</font> <font color="#990000">=</font> <font color="#009900">$dbh</font><font color="#990000">-&gt;</font><b><font color="#000000">prepare</font></b><font color="#990000">(</font> <font color="#009900">$sql</font> <font color="#990000">);</font>
               <font color="#009900">$rc</font> <font color="#990000">=</font> <font color="#009900">$sth</font><font color="#990000">-&gt;</font><b><font color="#000000">execute</font></b><font color="#990000">(</font><font color="#009900">$cve</font><font color="#990000">,</font><font color="#009900">$published</font><font color="#990000">,</font><font color="#009900">$modified</font><font color="#990000">,</font><font color="#009900">$score</font><font color="#990000">,</font>
<font color="#009900">$severity</font><font color="#990000">,</font><font color="#009900">$vector</font><font color="#990000">,</font><font color="#009900">$complexity</font><font color="#990000">,</font><font color="#009900">$authentication</font><font color="#990000">,</font>
<font color="#009900">$confidentiality</font><font color="#990000">,</font><font color="#009900">$integrity</font><font color="#990000">,</font><font color="#009900">$availability</font><font color="#990000">,</font><font color="#009900">$summary</font><font color="#990000">);</font>
            <font color="#CC3333">}</font>
         <font color="#CC3333">}</font>
      <font color="#CC3333">}</font>
   <font color="#CC3333">}</font>
<font color="#CC3333">}</font>
</tt></pre>
</p>
<p><h4><b>The Perl Program to Pull It All Together</b></h4>
</p>
<p>
The above subroutines use the Perl modules <a href="http://search.cpan.org/~gaas/libwww-perl-5.834/lib/LWP/UserAgent.pm">LWP::UserAgent</a>, <a href="http://search.cpan.org/~pajas/XML-LibXML-1.70/LibXML.pod">XML::LibXML</a>, <a href="http://search.cpan.org/~pajas/XML-LibXML-XPathContext/">XML::LibXML::XPathContext</a>, and <a href="http://search.cpan.org/~timb/DBI-1.609/">DBI</a>. A sample Perl program that calls the above subroutines to pull down the NVD CVE data and load it into a MySQL table would be:
</p>
<p>
<!-- Generator: GNU source-highlight 3.1.3<br />
by Lorenzo Bettini</p>
<p>http://www.lorenzobettini.it</p>
<p>http://www.gnu.org/software/src-highlite --></p>
<pre><tt><i><font color="#996633">#!/usr/local/bin/perl -w</font></i>
<b><font color="#3366FF">use</font></b> LWP<font color="#990000">::</font>UserAgent<font color="#990000">;</font>
<b><font color="#3366FF">use</font></b> XML<font color="#990000">::</font>LibXML<font color="#990000">;</font>
<b><font color="#3366FF">use</font></b> XML<font color="#990000">::</font>LibXML<font color="#990000">::</font>XPathContext<font color="#990000">;</font>
<b><font color="#3366FF">use</font></b> DBI<font color="#990000">;</font>
BEGIN<font color="#CC3333">{</font><b><font color="#3366FF">push</font></b> <font color="#009900">@INC</font><font color="#990000">,</font> <font color="#CC3333">"/home/jgerber/projects/nvd/perl"</font><font color="#CC3333">}</font>
<b><font color="#3366FF">use</font></b> nvdsubs <b><font color="#3366FF">qw</font></b><font color="#990000">(</font><font color="#009900">$db_host</font> <font color="#009900">$db</font> <font color="#009900">$mysql_user</font> <font color="#009900">$mysql_passwd</font> <font color="#009900">$mysql</font><font color="#990000">.</font>sock
readpage readxml <font color="#990000">);</font>
<i><font color="#996633"># Main</font></i>
<b><font color="#3366FF">my</font></b> <font color="#009900">$datadir</font> <font color="#990000">=</font> <font color="#CC3333">"/home/johngerber/projects/nvd/data"</font><font color="#990000">;</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">@timeData</font> <font color="#990000">=</font> <b><font color="#000000">localtime</font></b><font color="#990000">(</font>time<font color="#990000">);</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">$year</font> <font color="#990000">=</font> <font color="#993399">1900</font> <font color="#990000">+</font> <font color="#009900">$timeData</font><font color="#990000">[</font><font color="#993399">5</font><font color="#990000">];</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">$prev_year</font> <font color="#990000">=</font> <font color="#993399">1900</font> <font color="#990000">+</font> <font color="#009900">$timeData</font><font color="#990000">[</font><font color="#993399">5</font><font color="#990000">]</font> <font color="#990000">-</font> <font color="#993399">1</font><font color="#990000">;</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">$url</font> <font color="#990000">=</font> <font color="#CC3333">"http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-"</font> <font color="#990000">.</font>
    <font color="#009900">$year</font> <font color="#990000">.</font> <font color="#CC3333">".xml"</font><font color="#990000">;</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">$prev_url</font> <font color="#990000">=</font> <font color="#CC3333">"http://static.nvd.nist.gov/feeds/xml/cve/nvdcve-2.0-"</font> <font color="#990000">.</font>
    <font color="#009900">$prev_year</font> <font color="#990000">.</font> <font color="#CC3333">".xml"</font><font color="#990000">;</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">$nvd_file</font> <font color="#990000">=</font> <font color="#009900">$datadir</font>  <font color="#990000">.</font> <font color="#CC3333">"/nvdcve-"</font><font color="#990000">.</font> <font color="#009900">$year</font> <font color="#990000">.</font> <font color="#CC3333">".xml"</font><font color="#990000">;</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">$prev_nvd_file</font> <font color="#990000">=</font> <font color="#009900">$datadir</font>  <font color="#990000">.</font> <font color="#CC3333">"/nvdcve-"</font><font color="#990000">.</font> <font color="#009900">$prev_year</font> <font color="#990000">.</font> <font color="#CC3333">".xml"</font><font color="#990000">;</font>
<font color="#009900">$db</font> <font color="#990000">=</font> <font color="#CC3333">"vulnerabilities"</font><font color="#990000">;</font>
<b><font color="#3366FF">local</font></b><font color="#990000">(</font><font color="#009900">$dbh</font><font color="#990000">)</font> <font color="#990000">=</font> DBI<font color="#990000">-&gt;</font><b><font color="#000000">connect</font></b><font color="#990000">(</font><font color="#CC3333">"DBI:mysql:mysql_socket=$mysql.sock;$db:$db_host"</font><font color="#990000">,</font>
<font color="#009900">$mysql_user</font><font color="#990000">,</font> <font color="#009900">$mysql_passwd</font><font color="#990000">)</font> <font color="#990000">||</font> <b><font color="#3366FF">die</font></b> <font color="#CC3333">"ERROR: Connecting: $DBI::errstr\n"</font><font color="#990000">;</font>
<b><font color="#3366FF">my</font></b> <font color="#990000">(</font><font color="#009900">$pjstatus</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#990000">&amp;</font><b><font color="#000000">readpage</font></b><font color="#990000">(</font><font color="#009900">$prev_url</font><font color="#990000">,</font><font color="#009900">$prev_nvd_file</font><font color="#990000">);</font>
<b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$pjstatus</font><font color="#990000">)</font> <font color="#CC3333">{</font>
   <font color="#990000">&amp;</font><b><font color="#000000">readxml</font></b><font color="#990000">(</font><font color="#009900">$prev_nvd_file</font><font color="#990000">,</font><font color="#009900">$dbh</font><font color="#990000">);</font>
<font color="#CC3333">}</font>
<font color="#009900">$pjstatus</font> <font color="#990000">=</font> <font color="#990000">&amp;</font><b><font color="#000000">readpage</font></b><font color="#990000">(</font><font color="#009900">$url</font><font color="#990000">,</font><font color="#009900">$nvd_file</font><font color="#990000">);</font>
<b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$pjstatus</font><font color="#990000">)</font> <font color="#CC3333">{</font>
   <font color="#990000">&amp;</font><b><font color="#000000">readxml</font></b><font color="#990000">(</font><font color="#009900">$nvd_file</font><font color="#990000">,</font><font color="#009900">$dbh</font><font color="#990000">);</font>
<font color="#CC3333">}</font>
<b><font color="#3366FF">exit</font></b><font color="#990000">;</font>
</tt></pre>
</p>
<p>
The <b>nvdsubs.pm</b> file will not be included in this post.  The subroutines are defined and the only pieces missing are the MySQL database username and password.  You don&#8217;t need mine.  Add your own.  At this point, we have everything we need to finally use Google Visualization to create a graph.
</p>
<p><h3>Google Visualization</h3>
</p>
<p>
We are going to create a Perl program that will read our MySQL nvdcve table and generate the JavaScript that will render our charts on the client&#8217;s browser.  First, we want to define the JavaScript we want to produce.  Just to alleviate some concerns, with Google Visualization your data is only shared between your server and the client connecting.  This is unlike Google Charts where your data is sent to Google where it is made into a chart and the result is sent back.  Google states concerning the logging of chart data (via Google Charts), &#8220;The chart data included in the HTTP request is saved in temporary logs for no longer than two weeks for internal testing and debugging purposes.&#8221;  Every example in the Google Visualization Gallery will state the data policy.  For Google Charts, stated at the bottom of the page for each gadget description the data policy:
</p>
<p>
<img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/GoogleChartDataPolicy.png" />
</p>
<p>
While Google Visualization gadgets will have the following stated data policy:
</p>
<p>
<img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/GoogleVisDataPolicy.png" />
</p>
<p><h4><b>Loading Google Libraries</b></h4>
</p>
<p>
The first thing the JavaScript needs to do is load the required libraries.  This is accomplished with the lines:
</p>
<p><pre>
&lt;script type="text/javascript" src="http://www.google.com/jsapi"&gt;&lt;/script&gt;
</pre>
</p>
<p><h4><b>Area Chart and Table</b></h4>
</p>
<p>
In this example we are going to create an <a href="http://code.google.com/apis/visualization/documentation/gallery/columnchart.html">column chart</a>. In a later section, &#8220;Other Charting Options&#8221; (see below) we define different Google Visualization charting options.
</p>
<p>
JavaScript code for a sample column chart would be:
</p>
<p>
<!-- Generator: GNU source-highlight 3.1.3<br />
by Lorenzo Bettini</p>
<p>http://www.lorenzobettini.it</p>
<p>http://www.gnu.org/software/src-highlite --></p>
<pre><tt>    <font color="#990000">&lt;</font>script type<font color="#990000">=</font><font color="#CC3333">'text/javascript'</font><font color="#990000">&gt;</font>
      google<font color="#990000">.</font><b><font color="#000000">load</font></b><font color="#990000">(</font><font color="#CC3333">'visualization'</font><font color="#990000">,</font> <font color="#CC3333">'1'</font><font color="#990000">,</font> <font color="#CC3333">{</font>packages<font color="#990000">:[</font><font color="#CC3333">'columnchart'</font><font color="#990000">]</font><font color="#CC3333">}</font><font color="#990000">);</font>
      google<font color="#990000">.</font><b><font color="#000000">setOnLoadCallback</font></b><font color="#990000">(</font>drawChart<font color="#990000">);</font>
      <b><font color="#008080">function</font></b> <b><font color="#000000">drawChart</font></b><font color="#990000">()</font> <font color="#CC3333">{</font>
        <b><font color="#008080">var</font></b> data <font color="#990000">=</font> <b><font color="#008080">new</font></b> google<font color="#990000">.</font>visualization<font color="#990000">.</font><b><font color="#000000">DataTable</font></b><font color="#990000">();</font>
        data<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'date'</font><font color="#990000">,</font> <font color="#CC3333">'Date'</font><font color="#990000">);</font>
        data<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'High'</font><font color="#990000">);</font>
        data<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'Medium'</font><font color="#990000">);</font>
        data<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'Low'</font><font color="#990000">);</font>
        data<font color="#990000">.</font><b><font color="#000000">addRows</font></b><font color="#990000">([</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">0</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font><font color="#993399">92</font><font color="#990000">,</font><font color="#993399">97</font><font color="#990000">,</font><font color="#993399">3</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">1</font><font color="#990000">,</font> <font color="#993399">27</font><font color="#990000">),</font><font color="#993399">168</font><font color="#990000">,</font><font color="#993399">142</font><font color="#990000">,</font><font color="#993399">25</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">2</font><font color="#990000">,</font> <font color="#993399">31</font><font color="#990000">),</font><font color="#993399">141</font><font color="#990000">,</font><font color="#993399">165</font><font color="#990000">,</font><font color="#993399">9</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">3</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font><font color="#993399">132</font><font color="#990000">,</font><font color="#993399">203</font><font color="#990000">,</font><font color="#993399">12</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">4</font><font color="#990000">,</font> <font color="#993399">29</font><font color="#990000">),</font><font color="#993399">158</font><font color="#990000">,</font><font color="#993399">153</font><font color="#990000">,</font><font color="#993399">8</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">5</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font><font color="#993399">200</font><font color="#990000">,</font><font color="#993399">199</font><font color="#990000">,</font><font color="#993399">22</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">6</font><font color="#990000">,</font> <font color="#993399">31</font><font color="#990000">),</font><font color="#993399">190</font><font color="#990000">,</font><font color="#993399">195</font><font color="#990000">,</font><font color="#993399">11</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">7</font><font color="#990000">,</font> <font color="#993399">31</font><font color="#990000">),</font><font color="#993399">127</font><font color="#990000">,</font><font color="#993399">139</font><font color="#990000">,</font><font color="#993399">14</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">8</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font><font color="#993399">233</font><font color="#990000">,</font><font color="#993399">208</font><font color="#990000">,</font><font color="#993399">14</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">9</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font><font color="#993399">163</font><font color="#990000">,</font><font color="#993399">167</font><font color="#990000">,</font><font color="#993399">18</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">10</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font><font color="#993399">129</font><font color="#990000">,</font><font color="#993399">172</font><font color="#990000">,</font><font color="#993399">8</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">11</font><font color="#990000">,</font> <font color="#993399">31</font><font color="#990000">),</font><font color="#993399">200</font><font color="#990000">,</font><font color="#993399">211</font><font color="#990000">,</font><font color="#993399">19</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2010</font><font color="#990000">,</font> <font color="#993399">0</font><font color="#990000">,</font> <font color="#993399">29</font><font color="#990000">),</font><font color="#993399">157</font><font color="#990000">,</font><font color="#993399">139</font><font color="#990000">,</font><font color="#993399">14</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2010</font><font color="#990000">,</font> <font color="#993399">1</font><font color="#990000">,</font> <font color="#993399">26</font><font color="#990000">),</font><font color="#993399">137</font><font color="#990000">,</font><font color="#993399">143</font><font color="#990000">,</font><font color="#993399">12</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2010</font><font color="#990000">,</font> <font color="#993399">2</font><font color="#990000">,</font> <font color="#993399">31</font><font color="#990000">),</font><font color="#993399">252</font><font color="#990000">,</font><font color="#993399">242</font><font color="#990000">,</font><font color="#993399">18</font><font color="#990000">],</font>
           <font color="#990000">[</font><b><font color="#008080">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2010</font><font color="#990000">,</font> <font color="#993399">3</font><font color="#990000">,</font> <font color="#993399">13</font><font color="#990000">),</font><font color="#993399">92</font><font color="#990000">,</font><font color="#993399">118</font><font color="#990000">,</font><font color="#993399">17</font><font color="#990000">]</font>
        <font color="#990000">]);</font>
        <b><font color="#008080">var</font></b> chart <font color="#990000">=</font> <b><font color="#008080">new</font></b> google<font color="#990000">.</font>visualization<font color="#990000">.</font><b><font color="#000000">ColumnChart</font></b><font color="#990000">(</font>document<font color="#990000">.</font><b><font color="#000000">getElementById</font></b><font color="#990000">(</font><font color="#CC3333">'s4graph'</font><font color="#990000">));</font>
        chart<font color="#990000">.</font><b><font color="#000000">draw</font></b><font color="#990000">(</font>data<font color="#990000">,</font> <font color="#CC3333">{</font>displayAnnotations<font color="#990000">:</font><b><font color="#008080">true</font></b><font color="#990000">,</font> is3D<font color="#990000">:</font> <b><font color="#008080">true</font></b><font color="#990000">,</font> isStacked<font color="#990000">:</font> <b><font color="#008080">true</font></b><font color="#990000">,</font> min<font color="#990000">:</font> <font color="#993399">0</font><font color="#990000">,</font>
          allowHtml<font color="#990000">:</font> <b><font color="#008080">true</font></b><font color="#990000">,</font> colors<font color="#990000">:[</font><font color="#CC3333">{</font>color<font color="#990000">:</font><font color="#CC3333">'#E41B17'</font><font color="#990000">,</font> darker<font color="#990000">:</font><font color="#CC3333">'#C11B17'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#CC3333">{</font>color<font color="#990000">:</font><font color="#CC3333">'#FFA500'</font><font color="#990000">,</font> darker<font color="#990000">:</font><font color="#CC3333">'#E56717'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#CC3333">{</font>color<font color="#990000">:</font><font color="#CC3333">'#FFE87C'</font><font color="#990000">,</font> darker<font color="#990000">:</font><font color="#CC3333">'#C8B560'</font><font color="#CC3333">}</font><font color="#990000">]</font><font color="#CC3333">}</font><font color="#990000">);</font>
      <font color="#CC3333">}</font>
    <font color="#990000">&lt;/</font>script<font color="#990000">&gt;</font>
</tt></pre>
</p>
<p>
The resulting image would be the following column chart:
</p>
<p>
<img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/googlecolumn.png"  width=500 />
</p>
<p><h4><b>Rendering the Table</b></h4>
</p>
<p>
When providing qualitative results, I like to back them up with more accurate numeric values.  Let us include a table with links to the CVSS scores for each vulnerability.
</p>
<p>
<!-- Generator: GNU source-highlight 3.1.3<br />
by Lorenzo Bettini</p>
<p>http://www.lorenzobettini.it</p>
<p>http://www.gnu.org/software/src-highlite --></p>
<pre><tt>    <font color="#990000">&lt;</font>script type<font color="#990000">=</font><font color="#CC3333">'text/javascript'</font><font color="#990000">&gt;</font>
      google<font color="#990000">.</font><b><font color="#000000">load</font></b><font color="#990000">(</font><font color="#CC3333">'visualization'</font><font color="#990000">,</font> <font color="#CC3333">'1'</font><font color="#990000">,</font> <font color="#CC3333">{</font>packages<font color="#990000">:[</font><font color="#CC3333">'table'</font><font color="#990000">]</font><font color="#CC3333">}</font><font color="#990000">);</font>
      google<font color="#990000">.</font><b><font color="#000000">setOnLoadCallback</font></b><font color="#990000">(</font>drawChart<font color="#990000">);</font>
      <b><font color="#3366FF">function</font></b> <b><font color="#000000">drawChart</font></b><font color="#990000">()</font> <font color="#CC3333">{</font>
        <b><font color="#3366FF">var</font></b> data2 <font color="#990000">=</font> <b><font color="#3366FF">new</font></b> google<font color="#990000">.</font>visualization<font color="#990000">.</font><b><font color="#000000">DataTable</font></b><font color="#990000">();</font>
        data2<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'date'</font><font color="#990000">,</font> <font color="#CC3333">'Date'</font><font color="#990000">);</font>
        data2<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'High'</font><font color="#990000">);</font>
        data2<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'Medium'</font><font color="#990000">);</font>
        data2<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'Low'</font><font color="#990000">);</font>
        data2<font color="#990000">.</font><b><font color="#000000">addRows</font></b><font color="#990000">([</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">0</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-01"&gt;2009-01-30&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">92</font><font color="#990000">,</font><font color="#993399">97</font><font color="#990000">,</font><font color="#993399">3</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">1</font><font color="#990000">,</font> <font color="#993399">27</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-02"&gt;2009-02-27&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">168</font><font color="#990000">,</font><font color="#993399">142</font><font color="#990000">,</font><font color="#993399">25</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">2</font><font color="#990000">,</font> <font color="#993399">31</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-03"&gt;2009-03-31&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">141</font><font color="#990000">,</font><font color="#993399">165</font><font color="#990000">,</font><font color="#993399">9</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">3</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-04"&gt;2009-04-30&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">132</font><font color="#990000">,</font><font color="#993399">203</font><font color="#990000">,</font><font color="#993399">12</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">4</font><font color="#990000">,</font> <font color="#993399">29</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-05"&gt;2009-05-29&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">158</font><font color="#990000">,</font><font color="#993399">153</font><font color="#990000">,</font><font color="#993399">8</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">5</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-06"&gt;2009-06-30&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">200</font><font color="#990000">,</font><font color="#993399">199</font><font color="#990000">,</font><font color="#993399">22</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">6</font><font color="#990000">,</font> <font color="#993399">31</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-07"&gt;2009-07-31&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">190</font><font color="#990000">,</font><font color="#993399">195</font><font color="#990000">,</font><font color="#993399">11</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">7</font><font color="#990000">,</font> <font color="#993399">31</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-08"&gt;2009-08-31&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">127</font><font color="#990000">,</font><font color="#993399">139</font><font color="#990000">,</font><font color="#993399">14</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">8</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-09"&gt;2009-09-30&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">233</font><font color="#990000">,</font><font color="#993399">208</font><font color="#990000">,</font><font color="#993399">14</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">9</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-10"&gt;2009-10-30&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">163</font><font color="#990000">,</font><font color="#993399">167</font><font color="#990000">,</font><font color="#993399">18</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">10</font><font color="#990000">,</font> <font color="#993399">30</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-11"&gt;2009-11-30&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">129</font><font color="#990000">,</font><font color="#993399">172</font><font color="#990000">,</font><font color="#993399">8</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2009</font><font color="#990000">,</font> <font color="#993399">11</font><font color="#990000">,</font> <font color="#993399">31</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2009-12"&gt;2009-12-31&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">200</font><font color="#990000">,</font><font color="#993399">211</font><font color="#990000">,</font><font color="#993399">19</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2010</font><font color="#990000">,</font> <font color="#993399">0</font><font color="#990000">,</font> <font color="#993399">29</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2010-01"&gt;2010-01-29&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">157</font><font color="#990000">,</font><font color="#993399">139</font><font color="#990000">,</font><font color="#993399">14</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2010</font><font color="#990000">,</font> <font color="#993399">1</font><font color="#990000">,</font> <font color="#993399">26</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2010-02"&gt;2010-02-26&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">137</font><font color="#990000">,</font><font color="#993399">143</font><font color="#990000">,</font><font color="#993399">12</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2010</font><font color="#990000">,</font> <font color="#993399">2</font><font color="#990000">,</font> <font color="#993399">31</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2010-03"&gt;2010-03-31&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">252</font><font color="#990000">,</font><font color="#993399">242</font><font color="#990000">,</font><font color="#993399">18</font><font color="#990000">],</font>
           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font><b><font color="#3366FF">new</font></b> <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#993399">2010</font><font color="#990000">,</font> <font color="#993399">3</font><font color="#990000">,</font> <font color="#993399">13</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="/nvd/cvealerts.php?date=2010-04"&gt;2010-04-13&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#993399">92</font><font color="#990000">,</font><font color="#993399">118</font><font color="#990000">,</font><font color="#993399">17</font><font color="#990000">],</font>
        <font color="#990000">]);</font>
        <b><font color="#3366FF">var</font></b> table <font color="#990000">=</font> <b><font color="#3366FF">new</font></b> google<font color="#990000">.</font>visualization<font color="#990000">.</font><b><font color="#000000">Table</font></b><font color="#990000">(</font>document<font color="#990000">.</font><b><font color="#000000">getElementById</font></b><font color="#990000">(</font><font color="#CC3333">'s4graph_tab'</font><font color="#990000">));</font>
        table<font color="#990000">.</font><b><font color="#000000">draw</font></b><font color="#990000">(</font>data2<font color="#990000">,</font> <font color="#CC3333">{</font>showRowNumber<font color="#990000">:</font> <b><font color="#3366FF">true</font></b><font color="#990000">,</font> sortAscending<font color="#990000">:</font> <b><font color="#3366FF">false</font></b><font color="#990000">,</font> sortColumn<font color="#990000">:</font> <font color="#993399">0</font><font color="#990000">,</font> allowHtml<font color="#990000">:</font> <b><font color="#3366FF">true</font></b><font color="#CC3333">}</font><font color="#990000">);</font>
      <font color="#CC3333">}</font>
    <font color="#990000">&lt;/</font>script<font color="#990000">&gt;</font>
</tt></pre>
</p>
<p>
The JavaScript code assumes there is a PHP program called <b>cvealerts.php</b> under the <b>/nvd</b> directory on your web server.  Adjust to your environment.  A sample PHP program that could be used for cvealerts.php is provided below.  The resulting table chart would look like:
</p>
<p>
<img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/googletable.png" width=500 />
</p>
<p><h4><b>Handling Events: Interactions Between Graphs</b></h4>
</p>
<p>
We now have two different types of graphs representing the same data.  We want to add interaction between the graphs so the viewer can see the relationship.  With tables rows are selected when the user clicks, which correspond to the whole column of the stacked column chart.  It is not a perfect fit, but it does demonstrate nicely use of adding interactions.
</p>
<p>
<!-- Generator: GNU source-highlight 3.1.3<br />
by Lorenzo Bettini</p>
<p>http://www.lorenzobettini.it</p>
<p>http://www.gnu.org/software/src-highlite --></p>
<pre><tt>        <i><font color="#996633">// Set a 'select' event listener for the table.</font></i>
        <i><font color="#996633">// When the table is selected,</font></i>
        <i><font color="#996633">// we set the selection on the line graph.</font></i>
        google<font color="#990000">.</font>visualization<font color="#990000">.</font>events<font color="#990000">.</font><b><font color="#000000">addListener</font></b><font color="#990000">(</font>table<font color="#990000">,</font> <font color="#CC3333">'select'</font><font color="#990000">,</font> <b><font color="#3366FF">function</font></b><font color="#990000">()</font> <font color="#CC3333">{</font>
          chart<font color="#990000">.</font><b><font color="#000000">setSelection</font></b><font color="#990000">([</font><font color="#CC3333">{</font>row<font color="#990000">:</font> table<font color="#990000">.</font><b><font color="#000000">getSelection</font></b><font color="#990000">()[</font><font color="#993399">0</font><font color="#990000">].</font>row<font color="#990000">,</font> column<font color="#990000">:</font> <font color="#993399">1</font><font color="#CC3333">}</font><font color="#990000">]);</font>
         <font color="#CC3333">}</font><font color="#990000">);</font>
        <i><font color="#996633">// Set a 'select' event listener for the graph.</font></i>
        <i><font color="#996633">// When the graph is selected,</font></i>
        <i><font color="#996633">// we set the selection on the table.</font></i>
        google<font color="#990000">.</font>visualization<font color="#990000">.</font>events<font color="#990000">.</font><b><font color="#000000">addListener</font></b><font color="#990000">(</font>chart<font color="#990000">,</font> <font color="#CC3333">'select'</font><font color="#990000">,</font> <b><font color="#3366FF">function</font></b><font color="#990000">()</font> <font color="#CC3333">{</font>
           table<font color="#990000">.</font><b><font color="#000000">setSelection</font></b><font color="#990000">([</font><font color="#CC3333">{</font>row<font color="#990000">:</font> chart<font color="#990000">.</font><b><font color="#000000">getSelection</font></b><font color="#990000">()[</font><font color="#993399">0</font><font color="#990000">].</font>row<font color="#CC3333">}</font><font color="#990000">]);</font>
        <font color="#CC3333">}</font><font color="#990000">);</font>
</tt></pre>
</p>
<p><h4><b>Providing Detailed Information</b></h4>
</p>
<p>
When the table chart link is clicked, we would like to provide some detailed information about the vulnerability.  For this example, we will do this with a simple PHP program placed in the /nvd directory on the web server.  The program is called cvealerts.php.
</p>
<p>
<!-- Generator: GNU source-highlight 3.1.3<br />
by Lorenzo Bettini</p>
<p>http://www.lorenzobettini.it</p>
<p>http://www.gnu.org/software/src-highlite --></p>
<pre><tt><font color="#990000">&lt;?</font>
<b><font color="#000000">session_start</font></b><font color="#990000">();</font>
<b><font color="#3366FF">function</font></b> <b><font color="#000000">db_connect</font></b><font color="#990000">(</font><font color="#009900">$table</font><font color="#990000">)</font> <font color="#CC3333">{</font>
   <font color="#009900">$result</font> <font color="#990000">=</font> <b><font color="#000000">mysql_pconnect</font></b><font color="#990000">(</font><font color="#CC3333">"&lt;dbhost&gt;:&lt;dbport&gt;"</font><font color="#990000">,</font> <font color="#CC3333">"&lt;username&gt;"</font><font color="#990000">,</font> <font color="#CC3333">"&lt;password&gt;"</font><font color="#990000">);</font>
   <b><font color="#3366FF">if</font></b> <font color="#990000">(!</font><font color="#009900">$result</font><font color="#990000">)</font> <b><font color="#3366FF">return</font></b> false<font color="#990000">;</font>
   <b><font color="#3366FF">if</font></b> <font color="#990000">(!</font><b><font color="#000000">mysql_select_db</font></b><font color="#990000">(</font><font color="#009900">$table</font><font color="#990000">))</font> <b><font color="#3366FF">return</font></b> false<font color="#990000">;</font>
   <b><font color="#3366FF">return</font></b> <font color="#009900">$result</font><font color="#990000">;</font>
<font color="#CC3333">}</font>
<b><font color="#3366FF">function</font></b> <b><font color="#000000">do_html_header</font></b><font color="#990000">(</font><font color="#009900">$title</font><font color="#990000">,</font><font color="#009900">$checkuser</font><font color="#990000">,</font><font color="#009900">$logpage</font><font color="#990000">)</font> <font color="#CC3333">{</font>
<font color="#990000">?&gt;</font>
  <font color="#990000">&lt;</font>html<font color="#990000">&gt;</font> <font color="#990000">&lt;</font>head<font color="#990000">&gt;</font> <font color="#990000">&lt;</font>title<font color="#990000">&gt;&lt;?=</font><font color="#009900">$title</font><font color="#990000">?&gt;&lt;/</font>title<font color="#990000">&gt;&lt;/</font>head<font color="#990000">&gt;</font>
  <font color="#990000">&lt;</font>body bgcolor<font color="#990000">=</font><font color="#CC3333">"#FFFFFF"</font><font color="#990000">&gt;</font>
<font color="#990000">&lt;?</font>
<font color="#CC3333">}</font>
<b><font color="#3366FF">function</font></b> <b><font color="#000000">do_html_footer</font></b><font color="#990000">()</font> <font color="#CC3333">{</font>
<font color="#990000">?&gt;</font>
<font color="#990000">&lt;</font>table<font color="#990000">&gt;</font>
<font color="#990000">&lt;</font>tr<font color="#990000">&gt;&lt;</font>td ALIGN<font color="#990000">=</font>CENTER NOWRAP WIDTH<font color="#990000">=</font><font color="#CC3333">"590"</font><font color="#990000">&gt;&lt;/</font>font<font color="#990000">&gt;</font>
<font color="#990000">&lt;</font>font face<font color="#990000">=</font><font color="#CC3333">"Verdana, Arial, Helvetica"</font> size<font color="#990000">=-</font><font color="#993399">2</font><font color="#990000">&gt;</font>Notice to Users<font color="#990000">:</font> Use
of this system constitutes consent to security monitoring <b><font color="#3366FF">and</font></b> testing<font color="#990000">.</font>
<font color="#990000">&lt;</font>br<font color="#990000">&gt;</font>All activity is logged with your host name <b><font color="#3366FF">and</font></b> IP address<font color="#990000">.&lt;/</font>font<font color="#990000">&gt;</font>
<font color="#990000">&lt;/</font>td<font color="#990000">&gt;&lt;/</font>tr<font color="#990000">&gt;</font>
<font color="#990000">&lt;/</font>table<font color="#990000">&gt;</font>
<font color="#990000">&lt;/</font>body<font color="#990000">&gt;</font>
 <font color="#990000">&lt;/</font>html<font color="#990000">&gt;</font>
<font color="#990000">&lt;?</font>
<font color="#CC3333">}</font>
<i><font color="#996633">// Main</font></i>
<font color="#009900">$dates</font><font color="#990000">=</font> <b><font color="#3366FF">array</font></b><font color="#990000">();</font>
<font color="#009900">$stringlist</font> <font color="#990000">=</font> <font color="#CC3333">""</font><font color="#990000">;</font>
<b><font color="#3366FF">if</font></b> <font color="#990000">(</font><b><font color="#3366FF">isset</font></b><font color="#990000">(</font><font color="#009900">$_GET</font><font color="#990000">[</font><font color="#CC3333">'date'</font><font color="#990000">]))</font> <font color="#CC3333">{</font>
    <font color="#009900">$passdates</font> <font color="#990000">=</font> <b><font color="#000000">explode</font></b><font color="#990000">(</font><font color="#CC3333">","</font><font color="#990000">,</font><font color="#009900">$_GET</font><font color="#990000">[</font><font color="#CC3333">'date'</font><font color="#990000">]);</font>
    <b><font color="#3366FF">for</font></b> <font color="#990000">(</font><font color="#009900">$index</font><font color="#990000">=</font><font color="#993399">0</font><font color="#990000">;</font> <font color="#009900">$index</font><font color="#990000">&lt;</font><b><font color="#000000">count</font></b><font color="#990000">(</font><font color="#009900">$passdates</font><font color="#990000">);</font> <font color="#009900">$index</font><font color="#990000">++)</font> <font color="#CC3333">{</font>
       <b><font color="#000000">array_push</font></b><font color="#990000">(</font><font color="#009900">$dates</font><font color="#990000">,</font> <font color="#009900">$passdates</font><font color="#990000">[</font><font color="#009900">$index</font><font color="#990000">]);</font>
       <font color="#009900">$stringlist</font> <font color="#990000">.=</font> <font color="#009900">$passdates</font><font color="#990000">[</font><font color="#009900">$index</font><font color="#990000">]</font> <font color="#990000">.</font> <font color="#CC3333">" "</font><font color="#990000">;</font>
    <font color="#CC3333">}</font>
<font color="#CC3333">}</font>
<b><font color="#3366FF">else</font></b> <font color="#CC3333">{</font>
  <b><font color="#3366FF">print</font></b><font color="#990000">(</font><font color="#CC3333">"Confusion over how you arrived at this page.&lt;P&gt;\n"</font><font color="#990000">);</font>
  <b><font color="#3366FF">exit</font></b><font color="#990000">;</font>
<font color="#CC3333">}</font>
<font color="#009900">$stringlist</font> <font color="#990000">=</font> <b><font color="#000000">preg_replace</font></b><font color="#990000">(</font><font color="#CC3333">"/ $/"</font><font color="#990000">,</font> <font color="#CC3333">""</font><font color="#990000">,</font><font color="#009900">$stringlist</font><font color="#990000">);</font>
<b><font color="#000000">do_html_header</font></b><font color="#990000">(</font><font color="#CC3333">"Review NVD CVE Announcements for Month Ending $stringlist"</font><font color="#990000">,</font><font color="#993399">1</font><font color="#990000">,</font><font color="#993399">1</font><font color="#990000">);</font>
<font color="#009900">$nvd_host</font> <font color="#990000">=</font> <font color="#CC3333">"http://web.nvd.nist.gov/view/vuln/detail?vulnId="</font><font color="#990000">;</font>
<font color="#009900">$conn</font> <font color="#990000">=</font> <b><font color="#000000">db_connect</font></b><font color="#990000">(</font><font color="#CC3333">"vulnerabilities"</font><font color="#990000">);</font>
<b><font color="#3366FF">if</font></b> <font color="#990000">(!</font><font color="#009900">$conn</font><font color="#990000">)</font>
   <b><font color="#000000">logit</font></b><font color="#990000">(</font><font color="#CC3333">"Could not connect to database vulnerabilities - please try later.\n"</font><font color="#990000">,</font><font color="#993399">1</font><font color="#990000">);</font>
<b><font color="#3366FF">for</font></b> <font color="#990000">(</font><font color="#009900">$index</font><font color="#990000">=</font><font color="#993399">0</font><font color="#990000">;</font> <font color="#009900">$index</font><font color="#990000">&lt;</font><b><font color="#000000">count</font></b><font color="#990000">(</font><font color="#009900">$dates</font><font color="#990000">);</font> <font color="#009900">$index</font><font color="#990000">++)</font> <font color="#CC3333">{</font>
   <font color="#009900">$rule</font> <font color="#990000">=</font> <font color="#009900">$dates</font><font color="#990000">[</font><font color="#009900">$index</font><font color="#990000">];</font>
   <font color="#009900">$sql</font> <font color="#990000">=</font> <font color="#CC3333">"SELECT cve_id,score,published,vector,severity,complexity,left(summary,50)</font>
<font color="#CC3333">    FROM vulnerabilities.nvdcve</font>
<font color="#CC3333">      WHERE date_format(published,'%Y-%m')='$rule'</font>
<font color="#CC3333">       ORDER BY (score+0)"</font><font color="#990000">;</font>
   <font color="#009900">$result</font> <font color="#990000">=</font> <b><font color="#000000">mysql_query</font></b><font color="#990000">(</font><font color="#009900">$sql</font><font color="#990000">,</font><font color="#009900">$conn</font><font color="#990000">);</font>
   <b><font color="#3366FF">if</font></b> <font color="#990000">(!</font><font color="#009900">$result</font><font color="#990000">)</font>
       <b><font color="#000000">logit</font></b><font color="#990000">(</font><font color="#CC3333">"Problem with $sql\n"</font><font color="#990000">,</font><font color="#993399">1</font><font color="#990000">);</font>
   <b><font color="#3366FF">print</font></b><font color="#990000">(</font><font color="#CC3333">"&lt;table border=1&gt;&lt;tr&gt;&lt;td&gt;&lt;table border=0&gt;&lt;tr&gt;&lt;th bgcolor=\"#727D96\"&gt;</font>
<font color="#CC3333">&lt;font color=\"#ffffff\" face=\"arial,helvetica,sanserif\"&gt;Bulletin&lt;/font&gt;&lt;/th&gt;&lt;th bgcolor=\"#727D96\"&gt;</font>
<font color="#CC3333">&lt;font color=\"#ffffff\" face=\"arial,helvetica,sanserif\"&gt;Impact&lt;/font&gt;&lt;/th&gt;&lt;th bgcolor=\"#727D96\"&gt;</font>
<font color="#CC3333">&lt;font color=\"#ffffff\" face=\"arial,helvetica,sanserif\"&gt;Date&lt;/font&gt;&lt;/th&gt;&lt;th bgcolor=\"#727D96\"&gt;</font>
<font color="#CC3333">&lt;font color=\"#ffffff\" face=\"arial,helvetica,sanserif\"&gt;Vector&lt;/font&gt;&lt;/th&gt;&lt;th bgcolor=\"#727D96\"&gt;</font>
<font color="#CC3333">&lt;font color=\"#ffffff\" face=\"arial,helvetica,sanserif\"&gt;Severity&lt;/font&gt;&lt;/th&gt;&lt;th bgcolor=\"#727D96\"&gt;</font>
<font color="#CC3333">&lt;font color=\"#ffffff\" face=\"arial,helvetica,sanserif\"&gt;Complexity&lt;/font&gt;&lt;/th&gt;&lt;th bgcolor=\"#727D96\"&gt;</font>
<font color="#CC3333">&lt;font color=\"#ffffff\" face=\"arial,helvetica,sanserif\"&gt;Short Summary&lt;/font&gt;&lt;/th&gt;&lt;/tr&gt;\n"</font><font color="#990000">);</font>
   <b><font color="#3366FF">for</font></b> <font color="#990000">(</font><font color="#009900">$count</font> <font color="#990000">=</font> <font color="#993399">1</font><font color="#990000">;</font> <b><font color="#3366FF">list</font></b><font color="#990000">(</font><font color="#009900">$cve_id</font><font color="#990000">,</font> <font color="#009900">$score</font><font color="#990000">,</font> <font color="#009900">$date</font><font color="#990000">,</font> <font color="#009900">$vector</font><font color="#990000">,</font> <font color="#009900">$severity</font><font color="#990000">,</font><font color="#009900">$complexity</font><font color="#990000">,</font><font color="#009900">$shortsum</font><font color="#990000">)</font> <font color="#990000">=</font>
     <b><font color="#000000">mysql_fetch_array</font></b> <font color="#990000">(</font><font color="#009900">$result</font><font color="#990000">,</font> MYSQL_NUM<font color="#990000">);</font> <font color="#990000">++</font><font color="#009900">$count</font><font color="#990000">)</font> <font color="#CC3333">{</font>
<font color="#990000">?&gt;</font>
      <font color="#990000">&lt;</font>tr<font color="#990000">&gt;&lt;</font>td CLASS<font color="#990000">=</font><font color="#CC3333">"plfieldhdrleft"</font> WIDTH<font color="#990000">=</font><font color="#CC3333">"20%"</font> BGCOLOR<font color="#990000">=</font><font color="#CC3333">'#F0F5FF'</font><font color="#990000">&gt;</font>
      <font color="#990000">&lt;?</font>  <b><font color="#3366FF">print</font></b><font color="#990000">(</font><font color="#CC3333">"&lt;a href=\"$nvd_host$cve_id\"&gt;$cve_id&lt;/a&gt;"</font><font color="#990000">);</font> <font color="#990000">?&gt;</font>
      <font color="#990000">&lt;/</font>td<font color="#990000">&gt;</font>
      <font color="#990000">&lt;</font>td CLASS<font color="#990000">=</font><font color="#CC3333">"plfieldhdrleft"</font> BGCOLOR<font color="#990000">=</font><font color="#CC3333">'#F9FCFF'</font><font color="#990000">&gt;</font>
      <font color="#990000">&lt;?</font>  <b><font color="#3366FF">print</font></b><font color="#990000">(</font><font color="#009900">$score</font><font color="#990000">);</font> <font color="#990000">?&gt;</font>
      <font color="#990000">&lt;/</font>td<font color="#990000">&gt;</font>
      <font color="#990000">&lt;</font>td CLASS<font color="#990000">=</font><font color="#CC3333">"plfieldhdrleft"</font> BGCOLOR<font color="#990000">=</font><font color="#CC3333">'#F0F5FF'</font><font color="#990000">&gt;</font>
      <font color="#990000">&lt;?</font>  <b><font color="#3366FF">print</font></b><font color="#990000">(</font><font color="#009900">$date</font><font color="#990000">);</font> <font color="#990000">?&gt;</font>
      <font color="#990000">&lt;/</font>td<font color="#990000">&gt;</font>
      <font color="#990000">&lt;</font>td CLASS<font color="#990000">=</font><font color="#CC3333">"plfieldhdrleft"</font> BGCOLOR<font color="#990000">=</font><font color="#CC3333">'#F9FCFF'</font><font color="#990000">&gt;</font>
      <font color="#990000">&lt;?</font>  <b><font color="#3366FF">print</font></b><font color="#990000">(</font><font color="#009900">$vector</font><font color="#990000">);</font> <font color="#990000">?&gt;</font>
      <font color="#990000">&lt;/</font>td<font color="#990000">&gt;</font>
      <font color="#990000">&lt;</font>td CLASS<font color="#990000">=</font><font color="#CC3333">"plfieldhdrleft"</font> BGCOLOR<font color="#990000">=</font><font color="#CC3333">'#F0F5FF'</font><font color="#990000">&gt;</font>
      <font color="#990000">&lt;?</font>  <b><font color="#3366FF">print</font></b><font color="#990000">(</font><font color="#009900">$severity</font><font color="#990000">);</font> <font color="#990000">?&gt;</font>
      <font color="#990000">&lt;/</font>td<font color="#990000">&gt;</font>
      <font color="#990000">&lt;</font>td CLASS<font color="#990000">=</font><font color="#CC3333">"plfieldhdrleft"</font> BGCOLOR<font color="#990000">=</font><font color="#CC3333">'#F9FCFF'</font><font color="#990000">&gt;</font>
      <font color="#990000">&lt;?</font>  <b><font color="#3366FF">print</font></b><font color="#990000">(</font><font color="#009900">$complexity</font><font color="#990000">);</font> <font color="#990000">?&gt;</font>
      <font color="#990000">&lt;/</font>td<font color="#990000">&gt;</font>
      <font color="#990000">&lt;</font>td CLASS<font color="#990000">=</font><font color="#CC3333">"plfieldhdrleft"</font> BGCOLOR<font color="#990000">=</font><font color="#CC3333">'#F0F5FF'</font><font color="#990000">&gt;</font>
      <font color="#990000">&lt;?</font>  <b><font color="#3366FF">print</font></b><font color="#990000">(</font><font color="#009900">$shortsum</font><font color="#990000">);</font> <font color="#990000">?&gt;</font>
      <font color="#990000">&lt;/</font>td<font color="#990000">&gt;</font>
      <font color="#990000">&lt;/</font>tr<font color="#990000">&gt;</font>
<font color="#990000">&lt;?</font>
   <font color="#CC3333">}</font>
<font color="#CC3333">}</font>
<b><font color="#3366FF">print</font></b><font color="#990000">(</font><font color="#CC3333">"&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;"</font><font color="#990000">);</font>
<b><font color="#000000">do_html_footer</font></b><font color="#990000">();</font>
</tt></pre>
</p>
<p>
The PHP program would generate a HTML table displaying the NVD CVE alerts for that month.  The table would look like:
</p>
<p>
<img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/googletable3.png" width=500 />
</p>
<p>
When the CVE link is clicked on, the user is taken to the NIST NVD site where additional information is available.
</p>
<p>
<img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/nvdsite.png" width=500 />
</p>
<p><h4><b>Using Perl to Create the JavaScript</b></h4>
</p>
<p>
The Perl code is rather simple now that we have the MySQL tables defined and the JavaScript we want to generate.  Much of the code consists of the JavaScript listed above.
</p>
<p>
<!-- Generator: GNU source-highlight 3.1.3<br />
by Lorenzo Bettini</p>
<p>http://www.lorenzobettini.it</p>
<p>http://www.gnu.org/software/src-highlite --></p>
<pre><tt><i><font color="#996633">#!/usr/local/bin/perl -w</font></i>
<b><font color="#3366FF">use</font></b> DBI<font color="#990000">;</font>
<b><font color="#3366FF">use</font></b> Time<font color="#990000">::</font>Local<font color="#990000">;</font>
<b><font color="#3366FF">use</font></b> POSIX <b><font color="#3366FF">qw</font></b><font color="#990000">(</font>strftime<font color="#990000">);</font>
<b><font color="#3366FF">use</font></b> LWP<font color="#990000">::</font>UserAgent<font color="#990000">;</font>
BEGIN<font color="#CC3333">{</font><b><font color="#3366FF">push</font></b> <font color="#009900">@INC</font><font color="#990000">,</font> <font color="#CC3333">"/home/jgerber/projects/nvd/perl"</font><font color="#CC3333">}</font>
<b><font color="#3366FF">use</font></b> ornl_feds <b><font color="#3366FF">qw</font></b><font color="#990000">(</font><font color="#009900">$db_host</font> <font color="#009900">$db</font> <font color="#009900">$mysql_user</font> <font color="#009900">$mysql_passwd</font> <font color="#990000">);</font>
<b><font color="#3366FF">sub</font></b> slide_nvd_alerts <font color="#CC3333">{</font>
  <b><font color="#3366FF">my</font></b><font color="#990000">(</font><font color="#009900">$min_date</font><font color="#990000">,</font><font color="#009900">$graph_name</font><font color="#990000">,</font><font color="#009900">$web_link</font><font color="#990000">,</font><font color="#009900">$dbh</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#009900">@_</font><font color="#990000">;</font>
  <b><font color="#3366FF">my</font></b> <font color="#009900">$slide</font> <font color="#990000">=</font> <font color="#CC3333">""</font><font color="#990000">;</font>
  <b><font color="#3366FF">my</font></b> <font color="#009900">$slide_head</font> <font color="#990000">=</font> <b><font color="#3366FF">qq</font></b><font color="#990000">!</font>
    <font color="#CC3333">&lt;script type='text/javascript'&gt;</font>
      google<font color="#990000">.</font><b><font color="#000000">load</font></b><font color="#990000">(</font><font color="#CC3333">'visualization'</font><font color="#990000">,</font> <font color="#CC3333">'1'</font><font color="#990000">,</font> <font color="#CC3333">{</font>packages<font color="#990000">:[</font><font color="#CC3333">'columnchart,table'</font><font color="#990000">]</font><font color="#CC3333">}</font><font color="#990000">);</font>
      google<font color="#990000">.</font><b><font color="#000000">setOnLoadCallback</font></b><font color="#990000">(</font>drawChart<font color="#990000">);</font>
      function <b><font color="#000000">drawChart</font></b><font color="#990000">()</font> <font color="#CC3333">{</font>
        var data <font color="#990000">=</font> new google<font color="#990000">.</font>visualization<font color="#990000">.</font><b><font color="#000000">DataTable</font></b><font color="#990000">();</font>
        data<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'date'</font><font color="#990000">,</font> <font color="#CC3333">'Date'</font><font color="#990000">);</font>
        data<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'High'</font><font color="#990000">);</font>
        data<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'Medium'</font><font color="#990000">);</font>
        data<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'Low'</font><font color="#990000">);</font>
        data<font color="#990000">.</font><b><font color="#000000">addRows</font></b><font color="#990000">([</font>
<font color="#990000">!;</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$slide_head_table</font> <font color="#990000">=</font> <b><font color="#3366FF">qq</font></b><font color="#990000">!</font>
        var data2 <font color="#990000">=</font> new google<font color="#990000">.</font>visualization<font color="#990000">.</font><b><font color="#000000">DataTable</font></b><font color="#990000">();</font>
        data2<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'date'</font><font color="#990000">,</font> <font color="#CC3333">'Date'</font><font color="#990000">);</font>
        data2<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'High'</font><font color="#990000">);</font>
        data2<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'Medium'</font><font color="#990000">);</font>
        data2<font color="#990000">.</font><b><font color="#000000">addColumn</font></b><font color="#990000">(</font><font color="#CC3333">'number'</font><font color="#990000">,</font> <font color="#CC3333">'Low'</font><font color="#990000">);</font>
        data2<font color="#990000">.</font><b><font color="#000000">addRows</font></b><font color="#990000">([</font>
<font color="#990000">!;</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$table_div</font> <font color="#990000">=</font> <font color="#009900">$graph_name</font> <font color="#990000">.</font> <font color="#CC3333">"_tab"</font><font color="#990000">;</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$slide_tail</font> <font color="#990000">=</font> <b><font color="#3366FF">qq</font></b><font color="#990000">!</font>
        var chart <font color="#990000">=</font> new google<font color="#990000">.</font>visualization<font color="#990000">.</font><b><font color="#000000">ColumnChart</font></b><font color="#990000">(</font>document<font color="#990000">.</font><b><font color="#000000">getElementById</font></b><font color="#990000">(</font><font color="#CC3333">'$graph_name'</font><font color="#990000">));</font>
        chart<font color="#990000">.</font><b><font color="#000000">draw</font></b><font color="#990000">(</font>data<font color="#990000">,</font> <font color="#CC3333">{</font>displayAnnotations<font color="#990000">:</font>true<font color="#990000">,</font> is3D<font color="#990000">:</font> true<font color="#990000">,</font> isStacked<font color="#990000">:</font> true<font color="#990000">,</font> min<font color="#990000">:</font> <font color="#993399">0</font><font color="#990000">,</font> allowHtml<font color="#990000">:</font> true<font color="#990000">,</font>
 colors<font color="#990000">:[</font><font color="#CC3333">{</font>color<font color="#990000">:</font><font color="#CC3333">'#E41B17'</font><font color="#990000">,</font> darker<font color="#990000">:</font><font color="#CC3333">'#C11B17'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#CC3333">{</font>color<font color="#990000">:</font><font color="#CC3333">'#FFA500'</font><font color="#990000">,</font> darker<font color="#990000">:</font><font color="#CC3333">'#E56717'</font><font color="#CC3333">}</font><font color="#990000">,</font>
<font color="#CC3333">{</font>color<font color="#990000">:</font><font color="#CC3333">'#FFE87C'</font><font color="#990000">,</font> darker<font color="#990000">:</font><font color="#CC3333">'#C8B560'</font><font color="#CC3333">}</font><font color="#990000">]</font><font color="#CC3333">}</font><font color="#990000">);</font>
        var table <font color="#990000">=</font> new google<font color="#990000">.</font>visualization<font color="#990000">.</font><b><font color="#000000">Table</font></b><font color="#990000">(</font>document<font color="#990000">.</font><b><font color="#000000">getElementById</font></b><font color="#990000">(</font><font color="#CC3333">'$table_div'</font><font color="#990000">));</font>
        table<font color="#990000">.</font><b><font color="#000000">draw</font></b><font color="#990000">(</font>data2<font color="#990000">,</font> <font color="#CC3333">{</font>showRowNumber<font color="#990000">:</font> true<font color="#990000">,</font> sortAscending<font color="#990000">:</font> false<font color="#990000">,</font> sortColumn<font color="#990000">:</font> <font color="#993399">0</font><font color="#990000">,</font> allowHtml<font color="#990000">:</font> true<font color="#CC3333">}</font><font color="#990000">);</font>
            <font color="#CC3333">//</font> Set a <font color="#CC3333">'select'</font> event listener <b><font color="#3366FF">for</font></b> the table<font color="#990000">.</font>
        <font color="#CC3333">//</font> When the table is selected<font color="#990000">,</font>
        <font color="#CC3333">//</font> we set the selection on the line graph<font color="#990000">.</font>
        google<font color="#990000">.</font>visualization<font color="#990000">.</font>events<font color="#990000">.</font><b><font color="#000000">addListener</font></b><font color="#990000">(</font>table<font color="#990000">,</font> <font color="#CC3333">'select'</font><font color="#990000">,</font> <b><font color="#000000">function</font></b><font color="#990000">()</font> <font color="#CC3333">{</font>
          chart<font color="#990000">.</font><b><font color="#000000">setSelection</font></b><font color="#990000">([</font><font color="#CC3333">{</font>row<font color="#990000">:</font> table<font color="#990000">.</font><b><font color="#000000">getSelection</font></b><font color="#990000">()[</font><font color="#993399">0</font><font color="#990000">].</font>row<font color="#990000">,</font> column<font color="#990000">:</font> <font color="#993399">1</font><font color="#CC3333">}</font><font color="#990000">]);</font>
         <font color="#CC3333">}</font><font color="#990000">);</font>
      <font color="#CC3333">//</font> Set a <font color="#CC3333">'select'</font> event listener <b><font color="#3366FF">for</font></b> the graph<font color="#990000">.</font>
        <font color="#CC3333">//</font> When the graph is selected<font color="#990000">,</font>
        <font color="#CC3333">//</font> we set the selection on the table<font color="#990000">.</font>
        google<font color="#990000">.</font>visualization<font color="#990000">.</font>events<font color="#990000">.</font><b><font color="#000000">addListener</font></b><font color="#990000">(</font>chart<font color="#990000">,</font> <font color="#CC3333">'select'</font><font color="#990000">,</font> <b><font color="#000000">function</font></b><font color="#990000">()</font> <font color="#CC3333">{</font>
           table<font color="#990000">.</font><b><font color="#000000">setSelection</font></b><font color="#990000">([</font><font color="#CC3333">{</font>row<font color="#990000">:</font> chart<font color="#990000">.</font><b><font color="#000000">getSelection</font></b><font color="#990000">()[</font><font color="#993399">0</font><font color="#990000">].</font>row<font color="#CC3333">}</font><font color="#990000">]);</font>
        <font color="#CC3333">}</font><font color="#990000">);</font>
      <font color="#CC3333">}</font>
    <font color="#CC3333">&lt;/script&gt;</font>
<font color="#990000">!;</font>
   <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$min_date</font> <b><font color="#3366FF">eq</font></b> <font color="#CC3333">""</font><font color="#990000">)</font> <font color="#CC3333">{</font>
      <b><font color="#3366FF">my</font></b> <font color="#009900">$sql2</font> <font color="#990000">=</font> <b><font color="#3366FF">qq</font></b><font color="#CC3333">{ SELECT min(published) FROM vulnerabilities.nvdcve }</font><font color="#990000">;</font>
      <b><font color="#3366FF">my</font></b> <font color="#009900">$sth2</font> <font color="#990000">=</font> <font color="#009900">$dbh</font><font color="#990000">-&gt;</font><b><font color="#000000">prepare</font></b><font color="#990000">(</font> <font color="#009900">$sql2</font> <font color="#990000">);</font>
      <b><font color="#3366FF">my</font></b> <font color="#009900">$rc2</font> <font color="#990000">=</font> <font color="#009900">$sth2</font><font color="#990000">-&gt;</font><b><font color="#000000">execute</font></b><font color="#990000">();</font>
      <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$rc2</font><font color="#990000">)</font> <font color="#CC3333">{</font>
         <font color="#009900">$min_date</font> <font color="#990000">=</font> <font color="#009900">$sth2</font><font color="#990000">-&gt;</font><b><font color="#000000">fetchrow_array</font></b><font color="#990000">();</font>
      <font color="#CC3333">}</font>
   <font color="#CC3333">}</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$table_data</font> <font color="#990000">=</font> <font color="#CC3333">""</font><font color="#990000">;</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$graph_data</font> <font color="#990000">=</font> <font color="#CC3333">""</font><font color="#990000">;</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$sql2</font> <font color="#990000">=</font> <b><font color="#3366FF">qq</font></b><font color="#CC3333">{</font> <b><font color="#3366FF">select</font></b> <b><font color="#000000">date_format</font></b><font color="#990000">(</font>published<font color="#990000">,</font><font color="#CC3333">'%Y-%m'</font><font color="#990000">),</font>severity<font color="#990000">,</font><b><font color="#000000">count</font></b><font color="#990000">(</font>severity<font color="#990000">)</font>
      FROM vulnerabilities<font color="#990000">.</font>nvdcve where published <font color="#990000">&gt;=</font> <font color="#990000">?</font> group by <b><font color="#000000">date_format</font></b><font color="#990000">(</font>published<font color="#990000">,</font><font color="#CC3333">'%Y-%m'</font><font color="#990000">),</font>severity <font color="#CC3333">}</font><font color="#990000">;</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$sth2</font> <font color="#990000">=</font> <font color="#009900">$dbh</font><font color="#990000">-&gt;</font><b><font color="#000000">prepare</font></b><font color="#990000">(</font> <font color="#009900">$sql2</font> <font color="#990000">);</font>
   <b><font color="#3366FF">my</font></b> <font color="#009900">$rc2</font> <font color="#990000">=</font> <font color="#009900">$sth2</font><font color="#990000">-&gt;</font><b><font color="#000000">execute</font></b><font color="#990000">(</font><font color="#009900">$min_date</font><font color="#990000">);</font>
   <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$rc2</font><font color="#990000">)</font> <font color="#CC3333">{</font>
      <b><font color="#3366FF">my</font></b> <font color="#990000">(</font><font color="#009900">$change</font><font color="#990000">,</font><font color="#009900">$virgin</font><font color="#990000">,</font><font color="#009900">$ht</font><font color="#990000">,</font><font color="#009900">$mt</font><font color="#990000">,</font><font color="#009900">$lt</font><font color="#990000">,</font><font color="#009900">$mmax_date</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#990000">(</font><font color="#CC3333">""</font><font color="#990000">,</font><font color="#993399">1</font><font color="#990000">,</font><font color="#993399">0</font><font color="#990000">,</font><font color="#993399">0</font><font color="#990000">,</font><font color="#993399">0</font><font color="#990000">,</font><font color="#CC3333">""</font><font color="#990000">);</font>
      <b><font color="#3366FF">while</font></b> <font color="#990000">(</font><b><font color="#3366FF">my</font></b><font color="#990000">(</font><font color="#009900">$snapshot_date</font><font color="#990000">,</font> <font color="#009900">$severity</font><font color="#990000">,</font> <font color="#009900">$pcount</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#009900">$sth2</font><font color="#990000">-&gt;</font><b><font color="#000000">fetchrow_array</font></b><font color="#990000">())</font> <font color="#CC3333">{</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$sql3</font> <font color="#990000">=</font> <b><font color="#3366FF">qq</font></b><font color="#CC3333">{</font> SELECT <b><font color="#000000">max</font></b><font color="#990000">(</font>published<font color="#990000">)</font> FROM vulnerabilities<font color="#990000">.</font>nvdcve where
<b><font color="#000000">date_format</font></b><font color="#990000">(</font>published<font color="#990000">,</font><font color="#CC3333">'%Y-%m'</font><font color="#990000">)=?</font> <font color="#CC3333">}</font><font color="#990000">;</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$sth3</font> <font color="#990000">=</font> <font color="#009900">$dbh</font><font color="#990000">-&gt;</font><b><font color="#000000">prepare</font></b><font color="#990000">(</font> <font color="#009900">$sql3</font> <font color="#990000">);</font>
         <b><font color="#3366FF">my</font></b> <font color="#009900">$rc3</font> <font color="#990000">=</font> <font color="#009900">$sth3</font><font color="#990000">-&gt;</font><b><font color="#000000">execute</font></b><font color="#990000">(</font><font color="#009900">$snapshot_date</font><font color="#990000">);</font>
         <font color="#009900">$max_date</font> <font color="#990000">=</font>  <font color="#009900">$sth3</font><font color="#990000">-&gt;</font><b><font color="#000000">fetchrow_array</font></b><font color="#990000">();</font>
         <font color="#009900">$max_date</font> <font color="#990000">=~</font> <b><font color="#3366FF">s</font></b><font color="#FF6600">/ \S+$//</font><font color="#990000">;</font>
         <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$change</font> ne <font color="#009900">$snapshot_date</font><font color="#990000">)</font> <font color="#CC3333">{</font>
            <b><font color="#3366FF">if</font></b> <font color="#990000">(!</font> <font color="#009900">$virgin</font><font color="#990000">)</font> <font color="#CC3333">{</font>
                <b><font color="#3366FF">my</font></b><font color="#990000">(</font><font color="#009900">$year</font><font color="#990000">,</font><font color="#009900">$month</font><font color="#990000">,</font><font color="#009900">$day</font><font color="#990000">)</font> <font color="#990000">=</font> <b><font color="#3366FF">split</font></b><font color="#990000">(</font><font color="#CC3333">"-"</font><font color="#990000">,</font><font color="#009900">$mmax_date</font><font color="#990000">);</font>
                <b><font color="#3366FF">my</font></b> <font color="#009900">$mmonth</font> <font color="#990000">=</font> <font color="#009900">$month</font><font color="#990000">;</font>
                <font color="#009900">$month</font><font color="#990000">--;</font>
                <font color="#009900">$graph_data</font> <font color="#990000">.=</font> <b><font color="#3366FF">qq</font></b><font color="#990000">!</font>           <font color="#990000">[</font>new <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#009900">$year</font><font color="#990000">,</font> <font color="#009900">$month</font><font color="#990000">,</font> <font color="#009900">$day</font><font color="#990000">),</font><font color="#009900">$ht</font><font color="#990000">,</font><font color="#009900">$mt</font><font color="#990000">,</font><font color="#009900">$lt</font><font color="#990000">],</font>
<font color="#990000">!;</font>
                <font color="#009900">$table_data</font> <font color="#990000">.=</font> <b><font color="#3366FF">qq</font></b><font color="#990000">!</font>           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font>new <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#009900">$year</font><font color="#990000">,</font> <font color="#009900">$month</font><font color="#990000">,</font> <font color="#009900">$day</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="$web_link/cvealerts.php?date=$year-$mmonth"&gt;$mmax_date&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#009900">$ht</font><font color="#990000">,</font><font color="#009900">$mt</font><font color="#990000">,</font><font color="#009900">$lt</font><font color="#990000">],</font>
<font color="#990000">!;</font>
                <font color="#990000">(</font><font color="#009900">$ht</font><font color="#990000">,</font><font color="#009900">$mt</font><font color="#990000">,</font><font color="#009900">$lt</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#990000">(</font><font color="#993399">0</font><font color="#990000">,</font><font color="#993399">0</font><font color="#990000">,</font><font color="#993399">0</font><font color="#990000">);</font>
             <font color="#CC3333">}</font>
             <font color="#009900">$change</font> <font color="#990000">=</font> <font color="#009900">$snapshot_date</font><font color="#990000">;</font>
          <font color="#CC3333">}</font>
          <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$severity</font> <b><font color="#3366FF">eq</font></b> <font color="#CC3333">"HIGH"</font><font color="#990000">)</font> <font color="#CC3333">{</font> <font color="#009900">$ht</font> <font color="#990000">=</font> <font color="#009900">$pcount</font><font color="#990000">;</font> <font color="#CC3333">}</font>
          <b><font color="#3366FF">elsif</font></b> <font color="#990000">(</font><font color="#009900">$severity</font> <b><font color="#3366FF">eq</font></b> <font color="#CC3333">"MEDIUM"</font><font color="#990000">)</font> <font color="#CC3333">{</font> <font color="#009900">$mt</font> <font color="#990000">=</font> <font color="#009900">$pcount</font><font color="#990000">;</font> <font color="#CC3333">}</font>
          <b><font color="#3366FF">elsif</font></b> <font color="#990000">(</font><font color="#009900">$severity</font> <b><font color="#3366FF">eq</font></b> <font color="#CC3333">"LOW"</font><font color="#990000">)</font> <font color="#CC3333">{</font> <font color="#009900">$lt</font> <font color="#990000">=</font> <font color="#009900">$pcount</font><font color="#990000">;</font> <font color="#CC3333">}</font>
          <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$mmax_date</font> <b><font color="#3366FF">eq</font></b> <font color="#CC3333">""</font><font color="#990000">)</font> <font color="#CC3333">{</font> <font color="#009900">$mmax_date</font> <font color="#990000">=</font> <font color="#009900">$max_date</font><font color="#990000">;</font> <font color="#CC3333">}</font>
          <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$mmax_date</font> lt <font color="#009900">$max_date</font><font color="#990000">)</font> <font color="#CC3333">{</font> <font color="#009900">$mmax_date</font> <font color="#990000">=</font> <font color="#009900">$max_date</font><font color="#990000">;</font> <font color="#CC3333">}</font>
          <font color="#009900">$virgin</font> <font color="#990000">=</font> <font color="#993399">0</font><font color="#990000">;</font>
      <font color="#CC3333">}</font>
      <b><font color="#3366FF">my</font></b><font color="#990000">(</font><font color="#009900">$year</font><font color="#990000">,</font><font color="#009900">$month</font><font color="#990000">,</font><font color="#009900">$day</font><font color="#990000">)</font> <font color="#990000">=</font> <b><font color="#3366FF">split</font></b><font color="#990000">(</font><font color="#CC3333">"-"</font><font color="#990000">,</font><font color="#009900">$mmax_date</font><font color="#990000">);</font>
      <b><font color="#3366FF">my</font></b> <font color="#009900">$mmonth</font> <font color="#990000">=</font> <font color="#009900">$month</font><font color="#990000">;</font>
      <font color="#009900">$month</font><font color="#990000">--;</font>
      <font color="#009900">$graph_data</font> <font color="#990000">.=</font> <b><font color="#3366FF">qq</font></b><font color="#990000">!</font>           <font color="#990000">[</font>new <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#009900">$year</font><font color="#990000">,</font> <font color="#009900">$month</font><font color="#990000">,</font> <font color="#009900">$day</font><font color="#990000">),</font><font color="#009900">$ht</font><font color="#990000">,</font><font color="#009900">$mt</font><font color="#990000">,</font><font color="#009900">$lt</font><font color="#990000">]</font>
<font color="#990000">!;</font>
     <font color="#009900">$table_data</font> <font color="#990000">.=</font> <b><font color="#3366FF">qq</font></b><font color="#990000">!</font>           <font color="#990000">[</font><font color="#CC3333">{</font>v<font color="#990000">:</font>new <b><font color="#000000">Date</font></b><font color="#990000">(</font><font color="#009900">$year</font><font color="#990000">,</font> <font color="#009900">$month</font><font color="#990000">,</font> <font color="#009900">$day</font><font color="#990000">),</font>
              f<font color="#990000">:</font><font color="#CC3333">'&lt;a href="$web_link/cvealerts.php?date=$year-$mmonth"&gt;$mmax_date&lt;/a&gt;'</font><font color="#CC3333">}</font><font color="#990000">,</font> <font color="#009900">$ht</font><font color="#990000">,</font><font color="#009900">$mt</font><font color="#990000">,</font><font color="#009900">$lt</font><font color="#990000">],</font>
<font color="#990000">!;</font>
   <font color="#CC3333">}</font>
   <font color="#009900">$table_data</font> <font color="#990000">.=</font> <font color="#CC3333">"        ]);\n"</font><font color="#990000">;</font>
   <font color="#009900">$graph_data</font> <font color="#990000">.=</font> <font color="#CC3333">"        ]);\n"</font><font color="#990000">;</font>
   <font color="#009900">$slide</font> <font color="#990000">=</font> <font color="#009900">$slide_head</font> <font color="#990000">.</font>  <font color="#009900">$graph_data</font> <font color="#990000">.</font> <font color="#009900">$slide_head_table</font> <font color="#990000">.</font> <font color="#009900">$table_data</font> <font color="#990000">.</font> <font color="#009900">$slide_tail</font><font color="#990000">;</font>
   <b><font color="#3366FF">return</font></b><font color="#990000">(</font><font color="#009900">$slide</font><font color="#990000">);</font>
<font color="#CC3333">}</font>
<b><font color="#3366FF">sub</font></b> slide_body <font color="#CC3333">{</font>
  <b><font color="#3366FF">my</font></b><font color="#990000">(</font><font color="#009900">$graph_name</font><font color="#990000">,</font><font color="#009900">$title</font><font color="#990000">,</font><font color="#009900">$style</font><font color="#990000">)</font> <font color="#990000">=</font> <font color="#009900">@_</font><font color="#990000">;</font>
  <b><font color="#3366FF">my</font></b> <font color="#009900">$table_name</font> <font color="#990000">=</font> <font color="#009900">$graph_name</font> <font color="#990000">.</font> <font color="#CC3333">"_tab"</font><font color="#990000">;</font>
  <b><font color="#3366FF">my</font></b> <font color="#009900">$table_text</font> <font color="#990000">=</font> <font color="#CC3333">"div id=\"$table_name\""</font><font color="#990000">;</font>
  <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$style</font> ne <font color="#CC3333">""</font><font color="#990000">)</font> <font color="#CC3333">{</font>
     <font color="#009900">$table_text</font> <font color="#990000">.=</font> <font color="#CC3333">" style=\'$style\'"</font><font color="#990000">;</font>
  <font color="#CC3333">}</font>
  <b><font color="#3366FF">my</font></b> <font color="#009900">$slide2</font> <font color="#990000">=</font> <font color="#CC3333">"&lt;h3&gt;$title&lt;/h3&gt;\n"</font><font color="#990000">;</font>
  <b><font color="#3366FF">my</font></b> <font color="#009900">$itext</font> <font color="#990000">=</font> <font color="#CC3333">"div id=\"$graph_name\""</font><font color="#990000">;</font>
  <b><font color="#3366FF">if</font></b> <font color="#990000">(</font><font color="#009900">$style</font> ne <font color="#CC3333">""</font><font color="#990000">)</font> <font color="#CC3333">{</font>
     <font color="#009900">$itext</font> <font color="#990000">.=</font> <font color="#CC3333">" style=\'$style\'"</font><font color="#990000">;</font>
  <font color="#CC3333">}</font>
  <font color="#009900">$slide2</font> <font color="#990000">.=</font> <b><font color="#3366FF">qq</font></b><font color="#CC3333">{</font>
    <font color="#CC3333">&lt;table&gt;&lt;tr&gt;</font>
    <font color="#CC3333">&lt;td valign="top"&gt;&lt;$itext&gt;&lt;/div&gt;&lt;/td&gt;</font>
    <font color="#CC3333">&lt;td valign="top"&gt;&lt;$table_text&gt;&lt;/div&gt;&lt;/td&gt;</font>
    <font color="#CC3333">&lt;td valign="top"&gt;</font>   <font color="#CC3333">&lt;/td&gt;</font>
    <font color="#CC3333">&lt;td valign="top"&gt;&lt;div id="labels"&gt;&lt;/div&gt;&lt;/td&gt;</font>
    <font color="#CC3333">&lt;/tr&gt;&lt;/table&gt;</font>
  <font color="#CC3333">}</font><font color="#990000">;</font>
  <b><font color="#3366FF">return</font></b><font color="#990000">(</font><font color="#009900">$slide2</font><font color="#990000">);</font>
<font color="#CC3333">}</font>
<i><font color="#996633"># Main</font></i>
<b><font color="#3366FF">my</font></b> <font color="#009900">$web_link</font> <font color="#990000">=</font> <font color="#CC3333">"/nvd"</font><font color="#990000">;</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">$results_dir</font> <font color="#990000">=</font> <font color="#CC3333">"/data/html"</font> <font color="#990000">.</font> <font color="#009900">$web_link</font><font color="#990000">;</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">$result_file</font> <font color="#990000">=</font> <font color="#009900">$results_dir</font> <font color="#990000">.</font> <font color="#CC3333">"/nvdcve_stats.html"</font><font color="#990000">;</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">$debug</font> <font color="#990000">=</font> <font color="#993399">1</font><font color="#990000">;</font>
<b><font color="#3366FF">my</font></b> <font color="#009900">$db</font> <font color="#990000">=</font> <font color="#CC3333">"vulnerabilities"</font><font color="#990000">;</font>
<b><font color="#3366FF">local</font></b><font color="#990000">(</font><font color="#009900">$dbh</font><font color="#990000">)</font> <font color="#990000">=</font> DBI<font color="#990000">-&gt;</font><b><font color="#000000">connect</font></b><font color="#990000">(</font><font color="#CC3333">"DBI:mysql:$db:$db_host"</font><font color="#990000">,</font> <font color="#009900">$mysql_user</font><font color="#990000">,</font> <font color="#009900">$mysql_passwd</font><font color="#990000">)</font> <font color="#990000">||</font>
   <b><font color="#3366FF">die</font></b> <font color="#CC3333">"ERROR: Connecting: $DBI::errstr\n"</font><font color="#990000">;</font>
<font color="#009900">$slides_data</font> <font color="#990000">.=</font> <font color="#990000">&amp;</font><b><font color="#000000">slide_body</font></b><font color="#990000">(</font><font color="#CC3333">"s4graph"</font><font color="#990000">,</font><font color="#CC3333">"NVD CVE Alerts"</font><font color="#990000">,</font><font color="#CC3333">"width:700px; height:400px;"</font><font color="#990000">);</font>
<font color="#009900">$slides_head</font> <font color="#990000">.=</font> <font color="#990000">&amp;</font><b><font color="#000000">slide_nvd_alerts</font></b><font color="#990000">(</font><font color="#CC3333">""</font><font color="#990000">,</font><font color="#CC3333">"s4graph"</font><font color="#990000">,</font><font color="#009900">$web_link</font><font color="#990000">,</font><font color="#009900">$dbh</font><font color="#990000">);</font>
<b><font color="#3366FF">open</font></b><font color="#990000">(</font>OUTFILE<font color="#990000">,</font><font color="#CC3333">"&gt;$result_file"</font><font color="#990000">);</font>
<b><font color="#3366FF">print</font></b> OUTFILE <font color="#CC3333">"&lt;HTML&gt;\n&lt;HEAD&gt;&lt;TITLE&gt;NVD CVE Statistics&lt;/TITLE&gt;\n"</font><font color="#990000">;</font>
<b><font color="#3366FF">print</font></b> OUTFILE <font color="#CC3333">"&lt;script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"&gt;&lt;/script&gt;\n"</font><font color="#990000">;</font>
<b><font color="#3366FF">print</font></b> OUTFILE <font color="#009900">$slides_head</font><font color="#990000">;</font>
<b><font color="#3366FF">print</font></b> OUTFILE <font color="#CC3333">"&lt;/HEAD&gt;\n&lt;BODY&gt;\n"</font><font color="#990000">;</font>
<b><font color="#3366FF">print</font></b> OUTFILE <font color="#009900">$slides_data</font><font color="#990000">;</font>
<b><font color="#3366FF">print</font></b> OUTFILE <font color="#CC3333">"&lt;/BODY&gt;\n"</font><font color="#990000">;</font>
<b><font color="#3366FF">close</font></b><font color="#990000">(</font>OUTFILE<font color="#990000">);</font>
<b><font color="#3366FF">exit</font></b><font color="#990000">;</font>
</tt></pre>
</p>
<p><h3>Other Charting Options</h3>
</p>
<p>
Google, Google users, and other companies have <a href="http://code.google.com/apis/visualization/documentation/gallery.html">shared</a> some JavaScript visualizations built on the Google Visualization API to help you get started.  Below are some example:
</p>
<table class="gviz_gallery" id="gviz_gallery" cellpadding="2" cellspacing="0">
<tr class="gallery_filter_featured gallery_filter_charts gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/annotatedtimeline.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-annotatedtimeline.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://blog.securitymonks.com/apis/visualization/documentation/gallery/annotatedtimeline.html">Annotated Time Line</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">An animated time series chart.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_charts gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/areachart.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-areachart.png" height="60" width="120" /></a></td>
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/areachart.html"  class="gallery_doc_title">Area Chart </a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">Interactive area chart.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_charts gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/barchart.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-barchart.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://blog.securitymonks.com/apis/visualization/documentation/gallery/barchart.html">Bar Chart</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">Interactive bar chart.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_featured gallery_filter_charts gallery_filter_fun">
<td><a href="http://visapi-gadgets.googlecode.com/svn/trunk/barsofstuff/doc.html" onclick="return warn()"><br />
    <img src="http://visapi-gadgets.googlecode.com/svn/trunk/barsofstuff/icon.png" height="60" width="120" /></a></td>
<td><a href="http://visapi-gadgets.googlecode.com/svn/trunk/barsofstuff/doc.html" class="gallery_doc_title" onClick="return warn()">Bars of Stuff</a></p>
<p class="gallery_description">Fun bar charts using images of trains, chocolate, worms, and more.</p>
<p class="gallery_author">By: The visapi project</p>
</td>
</tr>
<tr class="gallery_filter_charts">
<td><a href="http://informatics.systemsbiology.net/visualizations/heatmap/bioheatmap.html" onclick="return warn()"><img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/bioheatmap_screenshot.png" height="60" width="120" /></a></td>
<td><a href="http://informatics.systemsbiology.net/visualizations/heatmap/bioheatmap.html" class="gallery_doc_title" onClick="return warn()">Bio Heat Map</a></p>
<p class="gallery_description">Heatmaps are a useful way to visualize matricies of data. Scientists often use green-black-red heatmaps to visualize gene expression data from microarrays. This visualization supports both three color heatmaps (ex: green to black to red) and two color heatmaps (ex: white to yellow).</p>
<p class="gallery_author">By: <a href="http://www.systemsbiology.org/">Institute for Systems Biology</a></p>
</td>
</tr>
<tr class="gallery_filter_charts gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/columnchart.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-columnchart.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://code.google.com/apis/visualization/documentation/gallery/columnchart.html">Column Chart</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">Interactive column chart.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_featured gallery_filter_project">
<td><a href="http://www.drasticdata.nl/DrasticTreemapGApi/index.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-drastictreemap.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://www.drasticdata.nl/DrasticTreemapGApi/index.html">Drastic Treemap</a></p>
<p class="gallery_description">A dynamic treemap in Flash.</p>
<p class="gallery_author">By: <a href="http://www.drasticdata.nl">DrasticData</a></p>
</td>
</tr>
<tr class="gallery_filter_featured gallery_filter_charts">
<td><a href="http://danvk.org/dygraphs/"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-dygraphs.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://danvk.org/dygraphs/">Dygraphs</a></p>
<p class="gallery_description">The dygraphs JavaScript library produces interactive, zoomable charts of time series.</p>
<p class="gallery_author">By: Dan Vanderkam</p>
</td>
</tr>
<tr class="gallery_filter_tables">
<td><a href="http://informatics.systemsbiology.net/visualizations/heatmap/FilterDataTableControl.html" onclick="return warn()"><img src="http://systemsbiology-visualizations.googlecode.com/svn/trunk/src/main/images/icon_filterDataTableControl.png" height="60" width="120" /></a></td>
<td><a href="http://informatics.systemsbiology.net/visualizations/heatmap/FilterDataTableControl.html" class="gallery_doc_title" onClick="return warn()">Filters </a></p>
<p class="gallery_description">A Visualization that acts as a control over other visualizations. It is rendered within the browser using HTML. This visualization offers the ability to select some criteria to filter the DataTable used by the controlled visualizations.</p>
<p class="gallery_author">By: <a href="http://www.systemsbiology.org/">Institute for Systems Biology</a></p>
</td>
</tr>
<tr class="gallery_filter_featured gallery_filter_charts gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/gauge.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04//icon-gauge.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://code.google.com/apis/visualization/documentation/gallery/gauge.html">Gauge</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">Each numeric value is displayed as a gauge.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_maps gallery_filter_featured gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/geomap.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04//icon-geomap.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://code.google.com/apis/visualization/documentation/gallery/geomap.html">Geo Map</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">A map of a country, continent, or region map, with colors and values assigned to specific regions. Values are displayed as a color scale, and you can specify optional hovertext for regions.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_maps gallery_filter_featured gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/intensitymap.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-intensitymap.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://code.google.com/apis/visualization/documentation/gallery/intensitymap.html">Intensity Map</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">An intensity map that highlights regions or countries based on relative values.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_charts gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/linechart.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-linechart.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://code.google.com/apis/visualization/documentation/gallery/linechart.html">Line Chart</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">Interactive line chart.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_featured gallery_filter_charts gallery_filter_tables gallery_filter_analytics">
<td><a href="http://magic-table.googlecode.com/svn/trunk/magic-table/google_visualisation/example_1.html" onclick="return warn()"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/scatterplot_google_thumb.png" height="60" width="120" /></a></td>
<td><a href="http://magic-table.googlecode.com/svn/trunk/magic-table/google_visualisation/example_1.html" class="gallery_doc_title" onClick="return warn()">Magic-Table</a></p>
<p class="gallery_description">The Magic Table is a JavaScript library that allows you to see more in your data by applying some simple visual techniques to transform a table. The table is displayed in the browser by the canvas element. Internet Explorer is not supported.</p>
<p class="gallery_author">By: <a href="http://code.google.com/p/magic-table/">Greg Ross</a></p>
</td>
</tr>
<tr class="gallery_filter_maps gallery_filter_featured gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/map.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-map.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://code.google.com/apis/visualization/documentation/gallery/map.html">Map</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">An interactive map that uses the <a href="http://code.google.com/apis/maps">Google Maps API</a>.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_featured gallery_filter_charts gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/motionchart.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-motionchart.png" height="60" width="120" /></a></td>
<td>
<p><a class="gallery_doc_title" href="http://code.google.com/apis/visualization/documentation/gallery/motionchart.html">Motion Chart</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">Motion Chart: A dynamic flash based chart to explore several indicators over time. Required columns: bubble name, time and 2 columns of numeric values. Optional columns: Numeric values or categories.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_featured gallery_filter_google gallery_filter_project">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/orgchart.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-orgchart.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://code.google.com/apis/visualization/documentation/gallery/orgchart.html">Organizational Chart</a></p>
<p class="gallery_description">A <a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a> simple organizational chart.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_charts">
<td><a href="http://parallel-coordinates.googlecode.com/svn/trunk/documentation/documentation.html" onclick="return warn()"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/parallelcords.jpg" height="60" width="120" /></a></td>
<td><a href="http://parallel-coordinates.googlecode.com/svn/trunk/documentation/documentation.html" class="gallery_doc_title" onClick="return warn()">Parallel Coordinates Chart</a></p>
<p class="gallery_description">Parallel Coordinates is a method of visualizing multivariate data. An n-dimensional space is represented as n parallel lines.  Works for browsers based on Gecko or Presto (does not work in IE). This is written in Javascript, no Flash required.</p>
<p class="gallery_author">By: <a href="http://sriharsha451.googlepages.com/">Sri Harsha Allamraju</a></p>
</td>
</tr>
<tr class="gallery_filter_charts gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/piechart.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-piechart.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://code.google.com/apis/visualization/documentation/gallery/piechart.html">Pie Chart</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">Interactive pie chart.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_featured gallery_filter_charts gallery_filter_fun">
<td><a href="http://visapi-gadgets.googlecode.com/svn/trunk/pilesofmoney/doc.html" onclick="return warn()"><br />
    <img src="http://visapi-gadgets.googlecode.com/svn/trunk/pilesofmoney/icon.png" height="60" width="120" /></a></td>
<td><a href="http://visapi-gadgets.googlecode.com/svn/trunk/pilesofmoney/doc.html" class="gallery_doc_title" onClick="return warn()">Piles of Money</a></p>
<p class="gallery_description">Column chart made of of money bills.</p>
<p class="gallery_author">By: The visapi project</p>
</td>
</tr>
<tr class="gallery_filter_charts gallery_filter_google">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/scatterchart.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-scatterchart.png" height="60" width="120" /></a></td>
<td><a class="gallery_doc_title" href="http://code.google.com/apis/visualization/documentation/gallery/scatterchart.html">Scatter Chart</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">Interactive scatter chart.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_google gallery_filter_tables">
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/table.html"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/icon-table.png" height="60" width="120" /></a></td>
<td><a href="http://code.google.com/apis/visualization/documentation/gallery/table.html"  class="gallery_doc_title">Table</a> (<a class="gallery_gwt_link" href="http://code.google.com/docreader/#p=gwt-google-apis&amp;s=gwt-google-apis&amp;t=Visualization">GWT Integrated</a>)</p>
<p class="gallery_description">A highly customizable table with sorting, paging and selection capabilities.</p>
<p class="gallery_author">By: Google</p>
</td>
</tr>
<tr class="gallery_filter_featured gallery_filter_text">
<td><a href="http://visapi-gadgets.googlecode.com/svn/trunk/termcloud/doc.html" onclick="return warn()"><br />
    <img src="http://visapi-gadgets.googlecode.com/svn/trunk/termcloud/icon.png" height="60" width="120" /></a></td>
<td><a href="http://visapi-gadgets.googlecode.com/svn/trunk/termcloud/doc.html" class="gallery_doc_title" onClick="return warn()">TermCloud</a></p>
<p class="gallery_description">A list of terms, where the size and color of each word is determined by a specified frequency value (typically the number of times it appears in some text).</p>
<p class="gallery_author">By: The visapi project</p>
</td>
</tr>
<tr class="gallery_filter_featured gallery_filter_maps">
<td><img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/thematicmapping.png" height="60" width="120" /></td>
<td><a href="http://thematicmapping.org/api/gvapi.php" class="gallery_doc_title" onClick="return warn()">Thematic Mapping API</a></p>
<p class="gallery_description">Enables visualization of data in Google Earth or other geobrowsers through the use of the Google Visualization API and KML.</p>
<p class="gallery_author"> By: <a href="http://thematicmapping.org/">Thematicmapping.org</a></p>
</td>
</tr>
<tr class="gallery_filter_text">
<td><a href="http://visapi-gadgets.googlecode.com/svn/trunk/wordcloud/doc.html" onclick="return warn()"><br />
    <img src="http://blog.securitymonks.com/wp-content/uploads/2010/04/worldcloud.png" height="60" width="120" /></a></td>
<td>
<p><a href="http://visapi-gadgets.googlecode.com/svn/trunk/wordcloud/doc.html" class="gallery_doc_title" onClick="return warn()">WordCloud</a>
      </p>
<p class="gallery_description">Displays all words in text with size and color based on the number of time each word appears.</p>
<p class="gallery_author">By: The visapi project</p>
</td>
</tr>
</table>
<p><h3>Additional Information</h3>
</p>
<p>
Below is the talk that Itai Raz, the lead engineer for the Visualization API product at Google, gave at <a href="http://code.google.com/events/io/2009/">Google I/O 2009</a> titled &#8220;Using the Visualization API with GWT:&#8221;
</p>
<p>
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/5PV8OH-ML-Q&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/5PV8OH-ML-Q&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"></embed></object>
</p>
<p><h3>Additional Possibilities</h3>
</p>
<p>
The work above is meant only to serve as a starting point.  There is a great deal more information to expand upon.  For example, we began this post pulling some information from the XML schema for CVE-2010-1228.  One field we did not pull out from the XML file is:
</p>
<p><pre>    &lt;vuln:cwe id="CWE-362" /&gt;
</pre>
</p>
<p>
The Common Weakness Enumeration (CWE) represents vulnerability types and NIST provides a <a href="http://nvd.nist.gov/cwe.cfm#cwes">CWE Cross Section Mapped into by NVD</a> table.  In the above example, we see an entry:
</p>
<table Border="1">
<tr>
<th>Name</th>
<th width="66">CWE-ID</th>
<th>Description</th>
</tr>
<tr>
<td>
<a name="CWE-362"/>Race Conditions
</td>
<td width="66">
<a href = "http://cwe.mitre.org/data/definitions/362.html" target = "blank">CWE-362</a>
</td>
<td>The state of a resource can change between the time the resource is checked to when it is accessed.</td>
</tr>
</table>
<p>
Clicking on the link will take us to the MITRE site that provides a great deal more information on CWE entries.  It is easy enough to expand on the above program to harvest this information for a richer information database.
</p>
<p>
Another possibility is to expand the above program to pull additional information on the CVE entry.  In additional to the data in the NVD CVE XML file, we could pull information from the NVD site.  Using CVE-2010-1228 as an example, we could have the program pull down the page:
</p>
<p><pre>http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-1228</pre>
</p>
<p>
Notice the line:
</p>
<p>
<span class="label">CVSS v2 Base Score:</span><a href="http://nvd.nist.gov/cvss.cfm?version=2&amp;name=CVE-2010-1228&amp;vector=(AV%3AN/AC%3AL/Au%3AN/C%3AC/I%3AC/A%3AC)" target="_blank">10.0</a> (HIGH) <a href="http://nvd.nist.gov/cvss.cfm?version=2&amp;name=CVE-2010-1228&amp;vector=(AV%3AN/AC%3AL/Au%3AN/C%3AC/I%3AC/A%3AC)" target="_blank">(AV:N/AC:L/Au:N/C:C/I:C/A:C)</a> (<a href="http://nvd.nist.gov/cvss.cfm?vectorinfo&amp;version=2" target="_blank">legend</a>)
</p>
<p>
The <b>(AV:N/AC:L/Au:N/C:C/I:C/A:C)</b> provides values that were used in determining the base score.  If you follow the link, you will see the values used in the calculations:
</p>
<ul>
<li><strong>CVSS Base Score</strong>: 10
<ul>
<li><b>Impact Subscore</b>: 10</li>
<li><b>Exploitability Subscore</b>: 10</li>
</ul>
</li>
<li><b>CVSS Temporal Score</b>: Undefined</li>
<li><strong>CVSS Environmental Score</strong>: Undefined</li>
<li><strong>Overall CVSS Score</strong>: 10</li>
</ul>
<p>
NVD has made available <a href="http://nvd.nist.gov/cvsseq2.htm">the equations</a> used in calculating the CVSS base score, temporal score, and environmental score.
</p>
<p>
Three other pieces of information that might provide interesting groupings are:
</p>
<ul>
<li><b>Access Complexity</b>:  Low  **NOTE: Access Complexity scored Low due to insufficient information</li>
<li><b>Authentication</b>:  Not required to exploit</li>
<li><b>Impact Type</b>:  Allows unauthorized disclosure of information; Allows unauthorized modification; Allows disruption of service</li>
</ul>
<p>
What information is of interest and how it is used will be dependent on your organization.  There is a great deal of information available and many directions you start examining.
</p>
<p><h3>Final Thoughts</h3>
</p>
<p>
I am often reminded of the old phrase, “Trust us, we are from the government.”   No one really trusts anyone, especially when it comes to matters they do not understand.  Just because you are from the security group at your organization, is that reason enough for the CEO to give you unlimited money and authority to do what you see fit?  Of course not.  While management might trust you, they may not believe that you are capable of seeing the big picture.  That is after all their job.
</p>
<p>
Another great old saying is that “the devil is in the details.”  Those details will likely fall in the security domain.  In organization across the planet there is a tug of war between the details and the big picture with multiple groups adding in their opinions and views.  You need to make the details understandable to your higher management to effectively argue your view.  Finding effective metrics and finding clear representation is essential in today&#8217;s business.  Google Visualization can be a useful tool in accomplishing this task.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2010/04/16/google-visualization-an-example-graphing-nvd-cve-data/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>COBIT 5 Joins Together COBIT 4.1, Risk IT, and Val IT 2.0</title>
		<link>http://blog.securitymonks.com/2010/03/23/cobit-5-cobit-4-1-risk-it-val-it-2-0/</link>
		<comments>http://blog.securitymonks.com/2010/03/23/cobit-5-cobit-4-1-risk-it-val-it-2-0/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 17:13:16 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[COBIT]]></category>
		<category><![CDATA[ISACA]]></category>
		<category><![CDATA[NIST]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Risk]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/?p=1787</guid>
		<description><![CDATA[ISACA just announced the release of COBIT® 5 Design (Exposure Draft).  COBIT 5 will consolidate and integrate the COBIT 4.1, Val IT 2.0 and Risk IT frameworks and also draw significantly from the Business Model for Information Security (BMIS) and ITAF

ISACA does a great job of mapping COBIT to other standards.  It will [...]]]></description>
			<content:encoded><![CDATA[<td><a href="http://blog.securitymonks.com/wp-content/uploads/2010/03/suggestion-box.jpg"><img src="http://blog.securitymonks.com/wp-content/uploads/2010/03/suggestion-box.jpg" width=130 align="left"/></a>ISACA just announced the release of <a href="http://www.isaca.org/cobit5">COBIT® 5 Design (Exposure Draft)</a>.  COBIT 5 will consolidate and integrate the <a href="http://www.isaca.org/Template.cfm?Section=COBIT6&#038;Template=/TaggedPage/TaggedPageDisplay.cfm&#038;TPLID=55&#038;ContentID=7981">COBIT 4.1</a>, <a href="https://www.isaca.org/Template.cfm?Section=Val_IT3&#038;Template=/TaggedPage/TaggedPageDisplay.cfm&#038;TPLID=80&#038;ContentID=51867">Val IT 2.0</a> and <a href="http://www.isaca.org/Template.cfm?Section=Risk_IT7&#038;Template=/ContentManagement/ContentDisplay.cfm&#038;ContentID=48811">Risk IT</a> frameworks and also draw significantly from the Business Model for Information Security (<a href="www.isaca.org/bmis">BMIS</a>) and <a href="http://www.isaca.org/Template.cfm?Section=ITAF2&#038;Template=/TaggedPage/TaggedPageDisplay.cfm&#038;TPLID=82&#038;ContentID=55901">ITAF</a></p>
<p>
ISACA does a great job of <a href="http://www.isaca.org/Template.cfm?Section=COBIT_Mapping1&#038;Template=/ContentManagement/ContentDisplay.cfm&#038;ContentID=30523">mapping COBIT</a> to other standards.  It will be interesting to see how much alignment there is between COBIT 5 and the recent work being done by the National Institute of Standards and Technology (NIST).  Just last month, NIST released <a href="http://csrc.nist.gov/publications/nistpubs/800-37-rev1/sp800-37-rev1-final.pdf">Special Publication 800-37 Rev. 1</a>, &#8220;Guide for Applying the Risk Management Framework to Federal Information Systems: A Security Life Cycle Approach.&#8221;  To quote <a href="http://fismapedia.org/">Dan Phillpott</a> over on <a href="http://www.guerilla-ciso.com/archives/1445">the Guerilla CISO</a> site, &#8220;This document describes the central processes involved in the authorization of information systems that support the federal government.  Notice I didn’t say Certification and Accreditation?  That’s because <b>C&#038;A is deader than a sheep at a wolf convention</b>. Want to know what replaces it?&#8221;  Dan suggest picking up a copy of NIST SP 800-37 Rev 1.
</p>
<p>
Much of the recent focus on risk management is fueled by the need to deal with changing technologies.  NIST SP 800-37 rev 1 is not the first NIST document concerning risk management and it certainly will not be the last.  Later this year NIST will release SP 800-39 Rev. 1, &#8220;Integrated Enterprise-Wide Risk Management: Organization, Mission, and Information System View&#8221; and  NIST SP 800-30 Rev. 1, &#8220;Guide for Conducting Risk Assessments.&#8221;  Dr. Ron Ross presented NIST&#8217;s view of the next generation of risk management in his talk, &#8220;<a href="http://scap.nist.gov/events/2009/itsac/presentations/day3/Day3_General_Ross.pdf">Next Generation Risk Management Information Security Transformation for the Federal Governmen</a>&#8221; at the 5th Annual Security Automation Conference.
</p>
<p>
Quoting from the &#8220;Changing Technologies and the Effects on Information System Boundaries&#8221; section of NIST SP 800-37 Rev 1.:</p>
<blockquote><p>Changes to current information technologies and computing paradigms add complications to the traditional tasks of establishing information system boundaries and protecting the missions and business processes supported by organizational information systems. In particular, net-centric architectures (e.g., service-oriented architectures [SOAs], <b>cloud computing</b>) introduce two important concepts: (i) dynamic subsystems; and (ii) external subsystems. While the concepts of dynamic subsystems and external subsystems (described in the following sections) are not new, the pervasiveness and frequency of their invocation in net-centric architectures can present organizations with significant new challenges.</p></blockquote>
<p>
Focusing back to COBIT 5, the planned primary improvements will consist of:</p>
<ul>
<li>Aligning COBIT 5 with ISACA’s TGF initiative as well as recent global governmental and market-driven enterprise and IT governance initiatives, such as sustainability and green IT.</li>
<li>Consolidating COBIT 5 into a single overarching framework and knowledge base, providing one consistent and integrated source of guidance.</li>
<li>COBIT 5 will be described in a high-level framework publication, providing an explanation of the objectives, scope, format and usage of COBIT 5 and enabling enterprises to strategically plan adoption of COBIT 5 and how to migrate to the new framework.</li>
<li>COBIT 5 will consist of a set of publications providing:
<ul>
<li>The content of COBIT 5 required for enterprise implementation and assurance activities</li>
<li>Focussed guidance publications on functional, responsibility and organisational views to help<br />
COBIT users with a specific area of interest to better understand how COBIT can support their role.</li>
</ul>
</li>
<li>Clarifying the distinction between governance and management with a revised process model that distinguishes between these domains while also showing how they relate to each other, and with processes integrating both business and IT responsibilities.</li>
<li>Aligning with the latest management practices as well as strengthening areas such as decision making, organisational structures, skill requirements, human factors, culture and change enablement. The new structure will be flexible, allowing future ISACA and non-ISACA standards, frameworks, regulations, etc., to be factored in.</li>
</ul>
<p>
If you want to learn more about risk management, a previous post &#8220;<a href="http://blog.securitymonks.com/2008/09/22/risk-assessment-a-starting-point">Risk Assessment: A Starting Point</a>&#8221; provides a good starting point with links to some great information sources.  Luke O&#8217;Connor over on Scribd, has provided some very nice graphics representation titled &#8220;How to Assess and Mitigate Risk&#8221; (a.k.a. &#8220;<a href="http://www.scribd.com/doc/26301480/Six-Risk-Management-Myths">Six Risk Management Myths</a>&#8220;):
</p>
<p>
<object id="doc_993937433770555" name="doc_993937433770555" height="500" width="100%" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;" ><param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"></param><param name="wmode" value="opaque"></param><param name="bgcolor" value="#ffffff"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><param name="FlashVars" value="document_id=26301480&#038;access_key=key-1zfpvjxlmbdc6yjkh5ff&#038;page=1&#038;viewMode=list"><embed id="doc_993937433770555" name="doc_993937433770555" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=26301480&#038;access_key=key-1zfpvjxlmbdc6yjkh5ff&#038;page=1&#038;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="500" width="100%" wmode="opaque" bgcolor="#ffffff"></embed></param></object>
</p>
<p>
ISACA is looking for feedback by the close 12 April 2010.  There is also a <a href="http://www.linkedin.com/groups?gid=2890204">LinkedIn Group</a> setup by <a href="http://www.linkedin.com/profile?viewProfile=&#038;key=18114306&#038;goback=%2Eanh_2890204&#038;trk=NUS_UNIU-creator">Grzegorz Albinowski</a> where you can discuss and stay informed on COBIT 5 developments.
</p>
</td>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2010/03/23/cobit-5-cobit-4-1-risk-it-val-it-2-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OMB Says Bring on the Clouds: Frightening or Funny?</title>
		<link>http://blog.securitymonks.com/2010/01/18/omb-says-bring-on-the-clouds-frightening-or-funny/</link>
		<comments>http://blog.securitymonks.com/2010/01/18/omb-says-bring-on-the-clouds-frightening-or-funny/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 23:13:04 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[NIST]]></category>
		<category><![CDATA[OMB]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Policies]]></category>
		<category><![CDATA[SCAP]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/?p=1743</guid>
		<description><![CDATA[Jason Miller, Executive Editor for FederalNewsRadio, write in his article, &#8220;Agencies to justify not using cloud computing to OMB&#8221; that OMB &#8220;will require agencies to develop an alternative analysis discussing how they could use cloud computing for all major technology projects for the fiscal 2012 budget.&#8221;  This is according to an internal budget documents [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.securitymonks.com/wp-content/uploads/2010/01/twisted_cloud_colored.jpg"><img src="http://blog.securitymonks.com/wp-content/uploads/2010/01/twisted_cloud.jpg" align="left" width=200 /></a><a href="http://www.linkedin.com/pub/jason-miller/4/375/6b6">Jason Miller</a>, Executive Editor for FederalNewsRadio, write in his article, &#8220;<a href="http://www.federalnewsradio.com/?sid=1836091&#038;nid=35">Agencies to justify not using cloud computing to OMB</a>&#8221; that OMB &#8220;will require agencies to develop an alternative analysis discussing how they could <b>use cloud computing for all major technology projects for the fiscal 2012 budget</b>.&#8221;  This is according to an internal budget documents obtained by FederalNewsRadio.  The document details OMB&#8217;s plans for such high-profile initiatives such as data center consolidation and the use of cloud computing and cybersecurity spending.</p>
<p>
Miller goes on to report that OMB will require &#8220;agencies <a href="http://www.federalnewsradio.com/?nid=35&#038;sid=1727634">launch a series of cloud computing pilots</a> across the government in 2010 using the E-Government Fund.&#8221;  In 2013, Miller reports, agencies must provide OMB &#8220;a complete alternatives analysis for mixed life cycle projects where agencies are spending new money-known as development, modernization and enhancement-and steady state or operations and maintenance funding for <b>how they could move to cloud computing</b>.&#8221;
</p>
<p>
Miller <a href="http://www.federalnewsradio.com/index.php?sid=1836879&#038;nid=35">quotes</a> a former government official as saying, &#8220;They are not saying use it, but are pushing us to look at it and do an analysis of alternatives and make a decision based on our business needs.  They are pushing us to look at it, yet giving us the ability to decide whether it makes sense.&#8221;
</p>
<p>
How well does your organization understand cloud computing?  How will security be handled?  What can you do to prepare?  During this time of tight budgets, maybe you do not have the funds and/or time to attend conferences and training events.  Fortunately, presentations are being posted regularly to the web, allowing you to keep informed on technological challenges.  For example, the <a href="http://www.zisc.ethz.ch/events/workshop2009">ZISC Workshop on Security in Virtualized Environments and Cloud Computing</a>, held September 10-11th in Zurich, recently posted all their presentations:
</p>
<table border=1>
<tr>
<td><a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-3545ca74-af7d-4e37-8036-c6df21fe3c01">Welcome note</a></td>
<td><a href="http://www.csg.ethz.ch/people/plattner">Bernhard Plattner</a> and <a href="http://blog.zzamboni.org/">Diego Zamboni</a></td>
</tr>
<tr>
<td>Talk 1: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-1e2160da-d654-4a1a-812f-aac874eb6523">Not Every Cloud has a Silver Lining</a></td>
<td><a href="http://www.technicalinfo.net/">Gunter Ollmann</a>, Damballa Inc., Atlanta GA, USA</td>
</tr>
<tr>
<td>Talk 2: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-5acafdc1-fb1b-4cb9-9b3c-752db1c716db">Virtualization and Cloud Computing: Security’s Golden or Gilded Age</a></td>
<td><a href="http://www.linkedin.com/in/kskap">Kevin Skapinetz</a>, IBM Internet Security Systems, Atlanta GA, USA</td>
</tr>
<tr>
<td>Talk 3: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-6256b225-9e82-41d2-a606-8404dfbca8af">Using virtualization technology for fault and intrusion tolerance</a></td>
<td><a href="http://homepages.lasige.di.fc.ul.pt/~hans/">Hans P. Reiser</a>, University of Lisbon, Portugal</td>
</tr>
<tr>
<td>Talk 4: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-10c3d477-a04a-4ac9-ae67-3456849f1f8a">A survey of current security-related operating systems research</a></td>
<td><a href="http://people.inf.ethz.ch/troscoe/">Timothy Roscoe</a>, ETH Zurich, Switzerland</td>
</tr>
<tr>
<td>Talk 5: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-8e677830-197a-437e-b008-f2222aa536e0">Of Cold Steam, Mist and Vapour: A View from the Inside of the Cloud</a></td>
<td><a href="http://www.hpl.hp.com/people/dirk_kuhlmann/">Dirk Kuhlmann</a>, HP Labs Bristol, UK</td>
</tr>
<tr>
<td>Talk 6: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-b7b06dcf-fed5-498d-814e-7bd25d97a9db">New Cloud Computing challenges: the security impact in the “social” world</a>.</td>
<td><a href="http://it.linkedin.com/in/mvillari">Massimo Villari</a>, University of Messina, Italy</td>
</tr>
<tr>
<td>Talk 7: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-f4eddba9-3747-4bbb-9603-703e250bcda7">Paradigms in virtualization based host security</a></td>
<td><a href="http://www.stanford.edu/~talg/">Tal Garfinkel</a>, VMware Inc., Palo Alto, CA, USA / Stanford University, Palo Alto CA, USA</td>
</tr>
<tr>
<td>Talk 8: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-1cb82827-e827-462b-9ec1-80ec0076d5b0">Cloud Computing and Security: a Googley Perspective</a></td>
<td><a href="http://ch.linkedin.com/pub/peter-dickman/1/748/121">Peter Dickman</a>, Google Inc., Zurich, Switzerland</td>
</tr>
<tr>
<td>Talk 9: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-9f03978d-9005-4c3c-a6c9-4e89a037adbb">A NIST Perspective on Cloud Computing</a></td>
<td><a href="http://www.zoominfo.com/people/Grance_Tim_63788691.aspx">Tim Grance</a>, National Institute of Standards and Technology, USA</td>
</tr>
<tr>
<td>Talk 10: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-1fb853c4-f793-46b8-ad12-ffdef166204e">ENISA Risk Assessment of Cloud Computing – Preliminary Results</a></td>
<td><a href="http://www.hogben.eu/">Giles Hogben</a>, ENISA, EU</td>
</tr>
<tr>
<td>Talk 11: <a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-90a68e85-a80f-405b-a4c3-473f40700971">Attack Graphs + Mechanically Generated Constraints</a></td>
<td><a href="http://www.zisc.ethz.ch/events/workshop2009/SpeakersBiosAbstracts.pdf">Lee Badger</a>, National Institute of Standards and Technology, USA</td>
</tr>
<tr>
<td><a href="http://www.multimedia.ethz.ch/conferences/2009/zisc/?doi=10.3930/ETHZ/AV-1c40fc7b-66c8-4386-b758-a91700bac0bc">Wrap-up and end</a></td>
<td>Bernhard Plattner and Diego Zamboni</td>
</tr>
</table>
<p>
Following NIST&#8217;s involvement in an area like cloud computing can help you judge the direction the government is heading.  Tim Grance presented at the <a href="http://scap.nist.gov/events/2009/itsac/presentations/">5th Annual IT Security Automation Conference and Expo Presentations</a> and the presentations have been made available.  Grance presented on the Security Content Automation Protocol (SCAP) (see my previous post &#8220;<a href="http://blog.securitymonks.com/2009/08/09/standardization-and-interoperability-in-security/">Standardization and Interoperability in Security</a>&#8221; for additional information on SCAP).  A cloud computing track consisting only of slides (no video) was also posted.  If lack of video does not concern you, the following conferences have posted slides on cloud security:</p>
<ul>
<li><a href="http://crypto.cs.stonybrook.edu/ccsw09/#program">CCSW 2009: The ACM Cloud Computing Security Workshop</a>, held November 13th, 2009 in Chicago.</li>
<li>Digital Government Institute&#8217;s <a href="http://federalcloudcomputing.wik.is/December_9,_2009">Cloud Computing 2010: Focus on Operational Efficiency and Security</a>, held December 9, 2009.</li>
<li><a href="http://federalcloudcomputing.wik.is/December_10%2c_2009">Cloud Interoperability Roadmaps Session</a> held in Long Beach, CA on December 10, 2009.</li>
</ul>
<p>If you prefer to listen and do not need to see slides, Tim Grance can be heard on Dana Gardner&#8217;s BriefingsDirect podcast, &#8220;<a href="http://www.briefingsdirect.com/index.php?post_id=514596">Panel Discussion: Is Cloud Computing More or Less Secure than On-Premises IT?</a>.&#8221;  The discussion includes a panel of all stars from the cloud security community, including <a href="http://blogs.sun.com/gbrunett/">Glenn Brunette</a>, distinguished engineer and chief security architect at Sun Microsystems and founding member of the Cloud Security Alliance (CSA); <a href="http://www.linkedin.com/pub/doug-howard/1/b62/239">Doug Howard</a>, chief strategy officer of Perimeter eSecurity and president of USA.NET; <a href="http://www.rationalsurvivability.com/blog/">Christofer Hoff</a>, technical adviser at CSA and director of Cloud and Virtualization Solutions at Cisco Systems; and <a href="http://www.enomaly.com/Management.432.0.html">Dr. Richard Reiner</a>, CEO of Enomaly.  The podcast was recorded at the <a href="http://www.opengroup.org/toronto2009-apc/">Open Group’s 23rd Enterprise Architecture Practitioners Conference</a> in Toronto on July 20-22, 1009, along with:</p>
<ul>
<li><a href="http://www.briefingsdirect.com/index.php?post_id=527007">Jericho Forum Aims to Guide Enterprises Through Risk Mitigation Landscape for Cloud Adoption</a> where Dana interviews Steve Whitlock, a member of the Jericho Board of Management.</li>
<li><a href="http://www.briefingsdirect.com/index.php?post_id=526087">Cloud and Security Join Boundaryless Information as Top-of-Mind Issues for The Open Group</a> where Dana talked with <a href="http://www.opengroup.org/contacts/bios/brown_bio.htm">Allen Brown</a>, president and CEO of The Open Group.</li>
<li><a href="http://www.briefingsdirect.com/index.php?post_id=521463">XDAS Standard Aims to Empower IT Audit Trails from Across Complex Events</a> where Dana talks with <a href="Ian Denis Dobson">Ian Dobson</a>, director of the Security Forum for The Open Group, as well as <a href="http://ch.linkedin.com/pub/jo%C3%ABl-winteregg/1/160/867">Joël Winteregg</a>, CEO and co-founder of NetGuardians.  XDAS is an open-source standard that is hopefully going to help in compliance and regulatory issues and in the automation of heterogeneous environments.</li>
<li><a href="http://www.briefingsdirect.com/index.php?post_id=519708">New Era Enterprise Architects Need Sweeping Skills to Straddle the IT-Business Alignment Chasm</a> where Dana is joined by <a href="http://www.theopengroup.org/contacts/bios/deraeve_bio.htm">James de Raeve</a>, vice president of certification at The Open Group; <a href="http://www.theopengroup.org/contacts/bios/fehskens_bio.htm">Len Fehskens</a>, vice president, Skills and Capabilities at The Open Group; <a href="http://www.footepartners.com/FPbiographies.htm">David Foote</a>, CEO and co-founder, as well as chief research officer, at <a href="http://www.footepartners.com/about_foote_partners_llc.htm">Foote Partners</a>, and <a href="http://www.opengroup.org/member/member-spotlight-uppal.htm">Jason Uppal</a>, chief architect at <a href="http://www.quickresponse.ca/">QRS</a>.</li>
<li><a href="http://www.briefingsdirect.com/index.php?post_id=512686">Cloud Pushes Enterprise Architects&#8217; Scope Beyond IT into Business Process Optimization Role</a> where Dana is joined by <a href="http://eadirections.wordpress.com/">Tim Westbrock</a>, managing director of <a href="http://www.eadirections.com/">EAdirections</a>; <a href="http://www.column2.com/about/">Sandy Kemsley</a>, an independent IT analyst and architect; and <a href="http://www.linkedin.com/in/johngotze">John Gotze</a>, international president for the <a href="http://www.aeaassociation.org/">Association of Enterprise Architects</a>.</li>
</ul>
<p>
For more video presentations on the cloud security, awhile back I posted &#8220;<a href="http://blog.securitymonks.com/2008/03/04/cert-cerias-and-google-video-training-online/">CERT, CERIAS, the Academy, and Google Video: Training Online</a>.&#8221;  Two other sources include the <a href="http://www.securitytube.net">SecurityTube</a> and <a href="http://oreilly.com/webcasts/">O&#8217;Reilly Webcasts</a>.  Below are a few examples of the presentations available:</p>
<ul>
<li><b><a href="http://www.securitytube.net/The-Belgian-Beer-Lovers-Guide-to-Cloud-Security-(Brucon-2009)-video.aspx">The Belgian Beer Lovers Guide to Cloud Security (Brucon 2009) Tutorial</a></b> by Craig Balding at Brucon 2009: In this presentation Craig covers why talking about &#8220;cloud&#8221; is akin to walking into a Belgian bar and asking for &#8220;beer&#8221;; the common cloud architectures and their implications for you &#8211; the security dude; what the beer brewing Trappist Monks can teach us about cloud security; attacking clouds (aka getting free beer); and dealing with the hangover: cloud incident response &#038; forensics.</li>
<li><b><a href="http://www.securitytube.net/Evolution-of-Security-(Fsecure)-video.aspx">Evolution of Security (Fsecure) Tutorial</a></b> by F-Secure: an animated series on the various threats out there on the Internet and also talks about their state of the art AV (self promotion) <img src='http://blog.securitymonks.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  They also talk about &#8220;cloud security&#8221; and how the next generation AV will be in the cloud and not isolated.</li>
<li><b><a href="http://www.securitytube.net/Cloud-Security-and-Privacy-(O%27Reilly-Webcast)-video.aspx">Cloud Security and Privacy</a></b> by Tim Mather, Subra Kumaraswamy, Shahed Latif: discusses cloud computing&#8217;s SPI delivery model, and its impact on various aspects of enterprise information security (e.g., infrastructure, data, identity and access management, security management), privacy, and compliance. Security-as-a-Service and the impact of cloud computing on corporate IT is also discussed.</li>
<li><b><a href="http://www.youtube.com/watch?v=189Nbc57_gg">Architecting Applications for the Cloud</a></b> by Jorge Noa: This presentation analyzes aspects of the Amazon EC2 IaaS cloud environment that differ from a traditional data center and introduces general best practices for ensuring data privacy, storage persistence, and reliable DBMS backup.</li>
<li><b><a href="http://www.oreillynet.com/pub/e/1372">Cloud Computing: The Next Frontier for Open Source</a></b> by <a herf="http://www.oreillynet.com/pub/au/1301">Bernard Golden</a>: discusses how the trends of open source and cloud computing reinforce one another, and why cloud computing is a significant driver of enterprise open source adoption.</li>
<li><b><a href="http://www.oreillynet.com/pub/e/1289">Getting Started with Amazon Web Services</a></b> by <a href="http://www.oreillynet.com/pub/au/429>George Reese</a>: Author of Cloud Application Architectures and enStratus founder and CTO provides this introduction into establishing a cloud infrastructure through Amazon Web Services.</li>
<li><b><a href="http://www.oreillynet.com/pub/e/1515">Cloud Security Deep Dive</a></b> by Subra Kumaraswamy, Shahed Latif, Tim Mather: will take a deep dive into cloud security issues and focus on three specific aspects: (1) data security; (2) identity management in the cloud, and; (3) governance in the cloud (in the context of managing a cloud service provider with respect to security obligations). Each of these three topics will be covered in a 30 minute segment that will include a presentation and Q&#038;A with the audience.</li>
<li><b><a href="http://www.securitytube.net/Cloudburst-(Hacking-3D-and-Breaking-Out-of-VMware)-Blackhat-2009-video.aspx">Cloudburst (Hacking 3D and Breaking Out of VMware)  Blackhat 2009</a></b> by Kostya Kortchinsky: VMware products include implement a lot of functionality, and as such have a decent chance to include some bugs. CLOUDBURST is the combination of 3 of those found in the virtualized video device (more specifically the 3D code). Combined, these allow a user in a Guest to execute code on the Host. Since the virtualized device code is the same for all the branches of the products, this impacts Workstation, as well as Fusion or ESX. Immunity, Inc. will present the various vulnerabilities and the techniques used to exploit the bug reliably, even on platforms with ASLR or DEP such as Vista SP1. Once exploited, Immunity will demonstrate how to establish MOSDEF between the Host and Guest.</li>
<li><b><a href="http://www.cerias.purdue.edu/news_and_events/events/calendar/cerias_event.php?uid=msm30u10kp4vh3cf340iqjug2k@google.com">Virtualization: Resource Coupling and Security across the Stack</a></b> by Dennis Moreau, Configuresoft: The session briefly addressed extension to the cloud and utility computing infrastructures to address how to use configuration and behavioral information to address the increased complexity of security, compliance and risk assessment in virtualized environments.</li>
</ul>
<p>Other <a href="http://blog.brucon.org/">BruCON</a> Security Conference (held September 18-19, 2009) videos are available at <a href="http://vimeo.com/channels/61997#6897223">their vimeo channel</a>.  O&#8217;Reilly maintains on YouTube an <a href="http://www.youtube.com/oreillymedia#p/c/30603FE448DB8FA1">O&#8217;Reilly Media Channel</a> along with an area to sign up for <a href="http://oreilly.com/webcasts/">future webcasts</a>.  <a href="http://www.blackhat.com/html/bh-dc-09/bh-dc-09-archives.html">Blackhat DC 2009</a> video, audio, whitepapers, and slides are also available.  Content is ever changing, so keep checking the sites.
</p>
<p>
Remember that <a href="http://en.wikipedia.org/wiki/Vivek_Kundra">Vivek Kundra</a>, Chief Information Officer (CIO) of the United States of America, outlined as his team&#8217;s <a href="http://www.fedscoopevents.com/upcoming-events.php">priorities</a>:</p>
<ol>
<li>Innovation</li>
<li>Lowering the cost of Government</li>
<li>Transparency</li>
<li>Engaging Citizens</li>
<li>Ensuring a safe computing environment</li>
</ol>
<p>In response, <a href="http://fedscoopevents.com/">FedScoop!</a> started hosting one event each quarter around these pillars.  On October 14 at the Newseum, they did their first event bringing together executives in the White House and federal CIO’s, CTO’s, and decision-makers to talk about <a href="http://www.vimeo.com/7529048">lowering the cost of government with technology</a>.  Check out the video of the <a href="http://www.vimeo.com/7529894">Cyber Security Panel</a>.  Since one of the topics was cloud computing, FedScoop! scheduled a follow-up event.  On December 9th, 2009, they hosted and posted the &#8220;<a href="http://www.vimeo.com/8066838">Cloud Computing Shoot Out</a>.&#8221;
</p>
<p>
FederalNewsRadio has posted a <a href="http://www.federalnewsradio.com/?nid=50&#038;sid=1662577">three part video series</a> on secure cloud computing.  The panelists include <a href="http://www.linkedin.com/pub/jim-flyzik/2/1a0/10">Jim Flyzik</a>, President of the Flyzik Group; <a href="http://henrysienkiewicz.com">Henry Sienkiewicz</a>, Technical Program Director, Computer Services, Defense Information Systems Agency; <a href="http://www.linkedin.com/pub/ron-bechtold/7/8bb/b2a">Ronald Bechtold</a>, Army Architecture Integration Center at Headquarters, Department of the Army, Chief Information Office/G6; <a href="http://www.linkedin.com/pub/curt-aubley/0/a97/897">Curt Aubley</a>, Chief Technology Officer CTO Operations &#038; Next Generation Solutions, Lockheed Martin Information Systems &#038; Global Services; <a href="http://www.linkedin.com/pub/dale-wickizer/2/218/4a9">Dale Wickizer</a>, Chief Technology Officer-Public Sector, NetApp, Inc.; and <a href="http://www.linkedin.com/pub/aileen-black/9/537/6a1">Aileen Black</a>, Vice President of Public Sector VMware Inc.
 </p>
<p>
CNET&#8217;s editor of Webware, <a href="http://www.cnet.com/profile/rafe/">Rafe Needleman</a> and senir writer <a href="http://news.cnet.com/underexposed/">Stephen Shankland</a> talked with Christofer Hoff on the Reporters&#8217; Roundtable podcast about the &#8220;<a href="http://www.cnet.com/8301-30976_1-10382405-10348864.html?tag=mncol;title">Dangers of Cloud Computing</a>.&#8221;  Chris also presented at Microsoft&#8217;s <a href="http://technet.microsoft.com/en-us/security/ee460903.aspx">BlueHat</a>, &#8220;<a href="http://technet.microsoft.com/en-us/security/ee834911.aspx">Cloudifornication: Indiscriminate Information Intercourse Involving Internet Infrastructure</a>.&#8221;  Any presentation with such a great title must be watched.  There is a <a href="View an interview with Chris Hoff">short interview</a> with Chris from Bluehat.
</p>
<p>
One of my favorite stories of Abraham Lincoln involved the <a href="http://www.lib.niu.edu/ipo/1995/ihy950230.html">McCormick-Manny case</a> of 1855 where Lincoln was one of Manny’s lawyers.  Lincoln basically was pushed aside and humiliated.  After the trial, he told Ralph Emerson, a young lawyer who was present at the trial, “I am going home. I am going home to study law.” Emerson asked, “Mr. Lincoln, you stand at the head of the bar in Illinois now! What are you talking about?” Lincoln replied, “Ah, yes, I do occupy a good position there, and I think that I can get along with the way things are done there now. But these college-trained men, who have devoted their whole lives to study, are coming West, don’t you see? And they study their cases as we never do. They have got as far as Cincinnati now. They will soon be in Illinois.” Emerson stated Lincoln turned to him, his countenance suddenly assuming that look of strong determination which those who knew him best sometimes saw upon his face, and said, “I am going home to study law! I am as good as any of them, and when they get out to Illinois, I will be ready for them.&#8221;</p>
<p />
<p>
Change is coming.  If you try just to get along, the future will overwhelm you.  While we do not live in a world of unlimited funds for conferences and training, people are sharing a wealth of information.  Take advantage of it and get ready for whatever might be heading your way.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2010/01/18/omb-says-bring-on-the-clouds-frightening-or-funny/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Suricata: A Next Generation IDS/IPS Engine</title>
		<link>http://blog.securitymonks.com/2010/01/05/suricata-a-next-generation-idsips-engine/</link>
		<comments>http://blog.securitymonks.com/2010/01/05/suricata-a-next-generation-idsips-engine/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 03:33:41 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[DHS]]></category>
		<category><![CDATA[IDS]]></category>
		<category><![CDATA[OISF]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/?p=1706</guid>
		<description><![CDATA[Last Thursday, I was very glad that the Open Information Security Foundation (OISF) released the first public beta version of Suricata.  It has been three years in the making.  Several new releases are expected this month culminating in a production quality release shortly thereafter.  OISF describes Suricata an &#8220;an Open Source Next [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.securitymonks.com/wp-content/uploads/2010/01/suricata.png" align="left" width=100 />Last Thursday, I was very glad that the Open Information Security Foundation (<a href="http://www.openinfosecfoundation.org/">OISF</a>) released the first public beta version of <b>Suricata</b>.  It has been three years in the making.  Several new releases are expected this month culminating in a production quality release shortly thereafter.  OISF describes Suricata an &#8220;an Open Source Next Generation Intrusion Detection and Prevention Tool, not intended to just replace or emulate the existing tools in the industry, but to <b>bring new ideas and technologies to the field</b>.&#8221;  It is looking very promising.</p>
<p>
The Suricata Engine and the HTP Library are <a href="http://www.openinfosecfoundation.org/index.php/download-suricata">available</a> to use under the GPLv2. The new engine supports &#8220;Multi-Threading, Automatic Protocol Detection (IP, TCP, UDP, ICMP, HTTP, TLS, FTP and SMB! ), Gzip Decompression, Fast IP Matching and coming soon hardware acceleration on CUDA and OpenCL GPU cards&#8221;.  <a href="http://en.wikipedia.org/wiki/Graphics_processing_unit">GPU</a> integration allows the use of graphic cards to accelerate operations.  Mike Cloppert in his post, &#8220;<a href="https://blogs.sans.org/computer-forensics/2010/01/05/">Detection, Bandwidth, and Moore’s Law</a>&#8221; pointed out:</p>
<blockquote><p>It appears the authors well understand the point in this post, and the corresponding state of the art in solving parallel computing problems.  GPU’s are emerging as a good commodity solution to parallel processing.  This is covered in depth by a number of recent publications discussing parallelism, and I am by no means an expert in this field, so I will simply leave follow-up on this point as an exercise for the reader.</p></blockquote>
<p>The <b>HTP Library</b> is an HTTP normalizer and parser written by <a href="http://blog.ivanristic.com/">Ivan Ristic</a>, creator of Mod Security and author of the soon to be released book &#8220;<a href=https://www.feistyduck.com/">ModSecurity Handbook</a>&#8220;.  This integrates and provides very advanced processing of HTTP streams. The HTP library is required by the engine, but may also be used independently in a range of applications and tools.  Additional details have been provided by Ivan in his post, &#8220;<a href="http://blog.ivanristic.com/2009/11/http-parser-for-intrusion-detection-and-web-application-firewalls.html">HTTP parser for intrusion detection and web application firewalls</a>.&#8221; Ivan writes concerning the development, &#8220;For the first release of the parser the goal is to be able to parse HTTP streams reliably. In the subsequent versions I will work in the parser&#8217;s security properties (such as the ability to see through evasion attacks).&#8221;
</p>
<p><h2>New Ideas and Concepts</h2>
<p>Quoting from the OISF <a href="http://www.openinfosecfoundation.org/index.php/component/content/article/1-latest-news/82-suricata-beta-available">announcement</a>, some of the next generation <b>capabilities</b> include:</p>
<ul>
<li><b>Multi-Threading</b>: so very necessary.</li>
<li><b>Automatic Protocol Detection</b>: the engine has keywords for IP, TCP, UDP, ICMP, HTTP, TLS, FTP and SMB.  Users can write rules to detect a match within a stream regardless of the port the stream occurs on. This is important for malware detection and control. Detections for more layer 7 protocols are being developed.</li>
<li><b>Gzip Decompression</b>: the HTP Parser will decode Gzip compressed streams.</li>
<li><b>Independent HTP Library</b>: the HTP Parser will be usable by other applications such as proxies, filters, etc. The parser is available as a library under GPLv2 for easy integration ito other tools. </li>
<li><b>Standard Input Methods</b>: support for NFQueue, IPFRing, and the standard LibPcap to capture traffic. IPFW support will be available soon.</li>
<li><b>Unified2 Output</b>: support for standard output tools and methods.</li>
<li><b>Flow Variables</b>: it is possible to capture information out of a stream and save that in a variable which can then be matched against later.</li>
<li><b>Fast IP Matching</b>: the engine will automatically use a special fast matching preprocessor on rules that are IP matches only (such as the RBN and compromised IP lists at Emerging Threats).</li>
<li><b>HTTP Log Module </b>: HTTP requests can be automatically output into an apache-style log format file for monitoring and logging activity completely independent of rulesets and matching.</li>
</ul>
<p>A few features to look forward to in a few weeks:</p>
<ul>
<li><b>Global Flow Variables</b>: the ability to store more information from a stream or match (actual data, not just setting a bit) over a period of time allowing comparing values across many streams and time.</li>
<li><b>Graphics Card Acceleration</b>: using CUDA and OpenCL to make use of the processing power of even old graphics cards to accelerate the IDS. Offloading the very computationally intensive functions of the sensor will greatly enhance performance. </li>
<li><b>IP Reputation</b>: will allow sensors and organizations to share intelligence and eliminate many false positives.</li>
<li><b>Windows Binaries</b>: will be released once there is a reasonably stable body of code.</li>
</ul>
<h2>Folks Behind It</h2>
<p>The <a href="http://www.openinfosecfoundation.org/index.php/team">team</a> is listed on the OISF site.  It is an all star cast including <a href="http://www.emergingthreats.net/">Matt Jonkman</a>, <a href="http://www.inliniac.net/blog/">Victor Julien</a>, <a href="http://node5.blogspot.com/">Will Metcalf</a>, <a href="http://www.linkedin.com/pub/nathan-jimerson/12/87a/376">Nathan Jimerson</a>, <a href="http://www.linkedin.com/in/margaretwskinner">Margaret Skinner</a>, Josh Smith, <a href="modsecurfity.org">Brian Rectanus</a>, <a href="http://www.milw0rm.com/author/952">Breno Silva Pinto</a>, <a href="http://groups.google.com/group/gsoc-india/web/profiles-introductions">Anoop Saldanha</a>, Gurvinder Singh Dahiya, <a href="http://www.spoke.com/info/pB71avu/JasonMacLulich">Jason MacLulich</a>, <a href="http://ca.linkedin.com/pub/jason-ish/0/272/576<br />
">Jason Ish</a>, <a href="http://www.linkedin.com/in/kkuehl">Kirby Kuehl</a>, Dennis Henderson, <a href="http://www.linkedin.com/pub/martin-solum/1/446/41a<br />
">Martin Solum</a>, <a href="http://blog.ivanristic.com/">Ivan Ristic</a>, <a href="http://es.linkedin.com/pub/pablo-rinc%C3%B3n-crespo/7/842/169<br />
">Pablo Rincon</a>, and <a href="http://www.linkedin.com/in/giglesias">Gerardo Iglesias Galvan</a>.
</p>
<p>
<img src="http://blog.securitymonks.com/wp-content/uploads/2010/01/hostchart.jpg" align="right" width=200 />I also wanted to point out some of the heavy hitting organizations involved.  The initial funding for OISF comes from the US Department of Homeland Security (<a href="http://www.dhs.gov/">DHS</a>), the US Navy&#8217;s Space and Warfare Command (<a href="http://enterprise.spawar.navy.mil/">SPAWAR</a>), and a number of private companies that participate in the <a href="http://www.openinfosecfoundation.org/index.php/consortium-members">OISF Consortium</a>. The OISF is a part of the DHS Homeland Open Security Technology (<a href="http://www.oss-institute.org/index.php?option=com_content&#038;task=blogcategory&#038;id=141&#038;Itemid=216">HOST</a>) program.  OISF works with <a href="http://www.oss-institute.org/">Open Source Software Institute</a> and has received legal guidance from the <a href="http://www.softwarefreedom.org/">Software Freedom Law Center</a>.
</p>
<p>
OISF is a US nonprofit, a 501c(3) and will not commercialize, sell, patent, copyright, or profit from the engine.  OISF Consortium members are donating coders, equipment, and financial support in exchange for the ability to commercialize the engine. The important take away is that OISF has long term support for future development of Suricata.
</p>
<h2>Final Thoughts</h2>
<p>Suricata is a very exciting and promising IDS/IPS engine.  It has a great group of people behind it and future development appears secured.  It is a project that is in the early stages.  Do not expect to download it and simply install on a production environment.  For testing the software and providing feedback, the engine and the HTP Library are <a href="http://www.openinfosecfoundation.org/index.php/download-suricata">available for download</a>.  To keep apprised of the latest developments join the <a href="http://lists.openinfosecfoundation.org/mailman/listinfo">oisf mailing lists</a> where you discuss and share feedback.  The <a href="http://www.inliniac.net/blog/">blog of Victor Julien</a>, Suricata&#8217;s lead developer, is another great source for the latest news and information. </p>
<p>
To finally answer the burning question: <b>why the name Suricata</b>?  According to the <a href="http://www.openinfosecfoundation.org/index.php/component/content/article/1-latest-news/78-we-have-an-official-name-and-mascot-for-the-oisf-engine">OISF site</a>, Suricata comes from the Latin genus name for the meerkat and &#8220;the Meerkat takes security and vigilance as a life or death responsibility. There is always at least one individual on guard, watching, ready to alert the entire organization. Very much like an IDS sensor. It is always watching, always ready to alert you to danger. Or something like that&#8230;&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2010/01/05/suricata-a-next-generation-idsips-engine/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Movement on the US Cyber Command</title>
		<link>http://blog.securitymonks.com/2010/01/05/movement-on-the-us-cyber-command/</link>
		<comments>http://blog.securitymonks.com/2010/01/05/movement-on-the-us-cyber-command/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 06:46:09 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Policies]]></category>
		<category><![CDATA[Security Policy]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/?p=1682</guid>
		<description><![CDATA[The US Cyber Command has been an interesting story to watch.  Similar to the old Charlie Brown comic strips where he continuously tried kicking the football only to have Lucy pull it away at the last minute.  Now Ellen Nakashima, from the Washington Post, is reporting that &#8220;Pentagon computer-network defense command delayed by [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.securitymonks.com/wp-content/uploads/2010/01/matrix19.jpg" align="left" width=200 />The US Cyber Command has been an interesting story to watch.  Similar to the old Charlie Brown comic strips where he continuously tried kicking the football only to have Lucy pull it away at the last minute.  Now <a href="http://projects.washingtonpost.com/staff/articles/ellen+nakashima/">Ellen Nakashima</a>, from the Washington Post, is reporting that &#8220;<a href="http://www.washingtonpost.com/wp-dyn/content/article/2010/01/02/AR2010010201903.html?nav=emailpage">Pentagon computer-network defense command delayed by congressional concerns</a>.&#8221;  Still, movement is occurring.  The Pentagon hopes to brief lawmakers this month to clear the way for confirmation hearing of the Cyber Command&#8217;s new director.  </p>
<p>
<img src="http://blog.securitymonks.com/wp-content/uploads/2010/01/charlie_brown_lucy_football.jpg" align="right" width=150 />For a little perspective, remember back in August 2008, the Air Force <a href="http://www.nextgov.com/nextgov/ng_20080812_7995.php">suspended</a> all efforts to the establishment of the Cyber Command.  This was after the Air Force was hyping the Cyber Command capabilities on TV, in Web video advertisement, and in presentations.  In September, the Pentagon decided that the <a href="http://www.stratcom.mil/">US Strategic Command</a> in Omaha, NE should create and run a version of the joint Cyber Command.  Deputy Secretary of Defense <a href="http://en.wikipedia.org/wiki/Gordon_R._England">Gordon England</a><a> wrote in a memo, &#8220;Because all the combatant commands, military departments and other defense components need the ability to work unhindered in cyberspace, the domain does not fall within the purview of any particular department or component.&#8221;<br />
</a></p>
<p>
In October, top Air Force leadership decided to continue efforts to stand up the Cyber Command.  At the time, Air Force Secretary <a href="http://www.defense.gov/bios/biographydetail.aspx?biographyid=43">Michael Donley</a> made the <a href="http://www.nextgov.com/nextgov/ng_20081007_1366.php">statement</a>, &#8220;The conduct of cyber operations is a complex issue, as [Defense] and other interagency partners have substantial equity in the cyber arena.  We will continue to do our part to increase Air Force cyber capabilities and institutionalize our cyber mission.&#8221;
</p>
<p>
Top military officials in May 2009 argued for a single joint command and went on to tell the media that a &#8220;<a href="http://www.securityfocus.com/brief/961">Cyber attack could bring U.S. military response</a>.&#8221;   In June 2009, Defense Secretary <a href="http://www.defense.gov/bios/biographydetail.aspx?biographyId=115">Robert M. Gates</a> in a <a href="http://info.publicintelligence.net/OSD05914.pdf">memo</a> Stated, &#8220;Our increasing dependency on cyberspace, alongside a growing array of cyber threats and vulnerabilities, adds a new element of risk to our national security.  To address this risk effectively and to secure freedom of action in cyberspace, the Department of Defense requires a command that possesses the required technical capability and remains focused on the integration of cyberspace operations.&#8221;
</p>
<p>
The Defense Department failed to meet an Oct. 1 target launch date.  There have been no confirmation hearing for the command&#8217;s first director.  Nakashima is reporting that the project was delayed by &#8220;congressional questions about its mission and possible privacy concerns.&#8221;
</p>
<p>
<a href="http://blog.securitymonks.com/wp-content/uploads/2010/01/cyberwarrior.jpg"><img src="http://blog.securitymonks.com/wp-content/uploads/2010/01/cyberwarrior.jpg" align="left" width=250/></a>NSA Deputy Director <a href="http://www.nsa.gov/about/leadership/bio_inglis.shtml">John (Chris) Inglis</a> said &#8220;90 percent&#8221; of the command&#8217;s focus will be on defensive measures because &#8220;that&#8217;s where we are way behind.&#8221;  The offensive measure lead to many policy and doctrinal questions involving cyber warfare.  Nakashima goes on to report one official familiar with the Pentagon&#8217;s plans, who was not authorized to speak for the record, stated &#8220;The rules can vary dramatically depending upon under what authority you&#8217;re doing something.  An offensive action is not a decision that can be taken very lightly. It is an extraordinary action because of the consequences that could result for either DOD or the intelligence community or critical U.S. industries.&#8221;
</p>
<p>
Offensive computing is a difficult topic to tackle.  Remember Col. Charles W. Williamson III?  He ran into a bit of controversy back in May 2008 when he posted &#8220;<a href="http://www.armedforcesjournal.com/2008/05/3375884">Carpet bombing in cyberspace: Why America needs a military botnet</a>.&#8221; He stated, &#8220;<em>America needs a network that can project power by building an af.mil robot network (botnet) that can direct such massive amounts of traffic to target computers that they can no longer communicate and become no more useful to our adversaries than hunks of metal and plastic</em>.&#8221;  Richard Bejtlich&#8217;s post, &#8220;<a href="http://taosecurity.blogspot.com/2008/05/mutually-assured-ddos.html">Mutually Assured DDoS</a>&#8221; points out several of the problems with a af.mil robot network.  Sean Sullivan from F-Secure also did a thoughtful response titled &#8220;<a href="http://www.f-secure.com/weblog/archives/00001434.html">US Air Force Colonel Proposes Skynet</a>.&#8221;  The problem will always be in cyberspace, attackers do not wear uniforms, nor do they necessarily come from a particular domain.  It is not so easy to identifying the enemy.  The intelligent attacker makes all effort to blend into the population.
</p>
<p>
<a href="http://www.goodharbor.net/team/kurtz.html">Paul B. Kurtz</a>, a cybersecurity expert who served in the George W. Bush and Clinton administrations stated, &#8220;I don&#8217;t think there&#8217;s any dispute about the need for Cyber Command. We need to do better defending DOD networks and more clearly think through what we&#8217;re going to do offensively in cyberspace. But the question is how does that all mesh with existing organizations and authorities? The devil really is in the details.&#8221;
</p>
<p>
Nakashima reports officials stated:<br />
<blockquote>&#8220;The initial operating plan for a cyber command is straightforward: to merge the Pentagon&#8217;s defensive unit, <a href="http://www.stratcom.mil/factsheets/gno/">Joint Task Force-Global Network Operations</a>, with its offensive outfit, the <a href="http://en.wikipedia.org/wiki/Joint_Functional_Component_Command_-_Network_Warfare">Joint Functional Command Component-Network Warfare</a>, at Fort Meade, home to the NSA. The new command, which would include about 500 staffers, would leverage the NSA&#8217;s technical capabilities but fall under the Pentagon&#8217;s Strategic Command.</p></blockquote>
<p>
<a href="http://www.nsa.gov/about/leadership/bio_alexander.shtml">Lt. Gen. Keith B. Alexander</a>, director of the NSA, has been nominated by President Obama to be the director of the Cyber Command.  Congressional staff have been briefed three times, and the Pentagon hopes to brief lawmakers this month.  Once the staff are satisfied the understand the command&#8217;s purpose and operating place, the <a href="http://armed-services.senate.gov/hearings.cfm">Senate Armed Service Committee</a> can hold the confirmation hearing for a new director.
</p>
<p>
<img src="http://blog.securitymonks.com/wp-content/uploads/2010/01/Peanuts_gang.png" align="right" width=200 /><a href="http://en.wikipedia.org/wiki/Edmund_Burke">Edmund Burke</a> once said, &#8220;<em>All that is necessary for evil to succeed is that good men do nothing</em>.&#8221;  Of course, <a href="http://en.wikipedia.org/wiki/Bernard_of_Clairvaux">Saint Bernard of Clairvaux</a> would have cautioned, &#8220;<a href="http://www.samueljohnson.com/road.html">Hell is full of good intentions or desires</a>.&#8221;  While there are many issues involved with the development of a US Cyber Command, steps are continuing to occur.  Issues are being considered.  Is it progress?  I believe so.  Stay tuned and we will all see what happens.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2010/01/05/movement-on-the-us-cyber-command/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Soon-To-Be Classic: A Geek Christmas Story</title>
		<link>http://blog.securitymonks.com/2009/12/23/soon-to-be-classic-a-geek-christmas-story/</link>
		<comments>http://blog.securitymonks.com/2009/12/23/soon-to-be-classic-a-geek-christmas-story/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 23:35:33 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Podcast]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/?p=1663</guid>
		<description><![CDATA[Folks have their favorite stories from the season.  According to a Harris poll America&#8217;s two favorite holiday movies are &#8220;A Christmas Story&#8221; and &#8220;It&#8217;s a Wonderful Life&#8221; (21% each).  A close third is &#8220;Miracle on 34th Street&#8221; (17%) followed by &#8220;National Lampoon’s Christmas Vacation&#8221; (13%) and &#8220;The Santa Clause&#8221; (9%).  The favorite [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.securitymonks.com/wp-content/uploads/2009/12/AlbumArt-AGCS.png" align="left" width=150 />Folks have their favorite stories from the season.  According to a <a href="http://www.harrisinteractive.com/harris_poll/pubs/Harris_Poll_2009_12_08.pdf">Harris poll</a> America&#8217;s two favorite holiday movies are &#8220;<a href="http://www.angryalien.com/aa/xmas_storybuns.asp">A Christmas Story</a>&#8221; and &#8220;<a href="http://www.angryalien.com/1204/wonderful_lifebuns.asp">It&#8217;s a Wonderful Life&#8221;</a> (21% each).  A close third is &#8220;Miracle on 34th Street&#8221; (17%) followed by &#8220;<a href="http://www.angryalien.com/aa/xmasvacaybuns.asp">National Lampoon’s Christmas Vacation</a>&#8221; (13%) and &#8220;The Santa Clause&#8221; (9%).  The favorite animated movie is&#8221;<a href="http://www.starzbunniestheater.com/">Rudolph the Red-Nose Reindeer</a>&#8220;.</p>
<p>
<img src="http://blog.securitymonks.com/wp-content/uploads/2009/12/xmasstorythumb2.gif" align="right"/>Thanks to Angry Alien Productions for providing links to 30-Second Bunnies Theatre.  If you have never watched these collection of movies re-enacted by animated bunnies in 30 seconds, more or less, follow the links.  If you enjoy the episodes, support the creative effort by buying the recently released <a href="http://www.amazon.com/30-Second-Bunnies-Theatre-Collectible-DVD/dp/B002GHCJHW/ref=sr_1_1?ie=UTF8&#038;s=dvd&#038;qid=1247695749&#038;sr=1-1">DVD through Amazon</a>.
</p>
<p>
For geeks, and those who love them, <a href="http://www.spyndle.com">Kreg Steppe</a> and <a href="http://douglasewelch.com/">Douglas E. Welch</a> have written a story that you are going to love, &#8220;<a href="http://www.friendsintech.com/index.php/archives/295">A Geek Christmas Story</a>.&#8221;  To quote the site, it is the story of &#8220;Mattie Stevens, a young boy of the early 80’s, dreams of owning a <a href="http://www.youtube.com/watch?v=NVVtOOZPuGM">Commodore 64</a>. He sets out to convince everyone this is the perfect gift. But, along the way runs into opposition from his parents and everyone around him including old Santa Claus&#8221;
</p>
<p>
Take a look at the all star cast of players from the podcasting community:<br />
<strong>Narrator:</strong> <a href="http://www.spyndle.com" >Kreg Steppe</a> &#8211; <a href="http://chuckchat.com/technorama" >Technorama</a><br />
<strong>Harvey Stevens</strong><strong>:</strong> Dad &#8211; <a href="http://kevindevin.com/">Kevin Devin</a><br />
<strong>Mandy Stevens</strong><strong>:</strong> Mom &#8211; Susie Murph &#8211; <a href="http://www.howtogrowyourgeek.net/" >How to Grow your Geek Podcast</a><br />
<strong>Mattie Stevens</strong><strong>:</strong> Son &#8211; Daniel Devin<br />
<strong>Sandy Stevens</strong><strong>:</strong> Little Brother &#8211; <a href="http://www.lego.com" >Spencer Holden</a><br />
<strong>Curtz Eisenberg</strong><strong>:</strong> Friend to Mattie &#8211; Harrison Steppe<br />
<strong>General Beringer</strong><strong>:</strong> General &#8211; <a href="http://DouglasEWelch.com/" >Douglas E. Welch</a><br />
<strong>Lieutenant</strong><strong>:</strong> Steve Holden &#8211; <a href="http://www.technewsradio.com" >Tech News Radio</a><br />
<strong>Mrs. Little</strong><strong>:</strong> Katie Floyd &#8211; <a href="http://macpowerusers.com/" >Mac Power Users Podcast</a><br />
<strong>Santa&#8217;s Helper</strong><strong>:</strong> Chuck Tomasi &#8211; <a href="http://chuckchat.com/" >Chuckchat.com</a><br />
<strong>Santa</strong><strong>:</strong> Larry Pesce &#8211; <a href="http://pauldotcom.com/" >Pauldotcom.com Podcast</a><br />
<strong>Judge</strong><strong>:</strong> Victor Cajiao &#8211; <a href="http://www.typicalmacuser.com/" >Typical Mac User Podcast</a> &#8211; <a href="http://www.typicalshutterbug.com/" >Typical Shutterbug Podcast</a><br />
<strong>Andrew Carnagie</strong><strong>:</strong> Andy Helsby &#8211; <a href="http://absoblogginlutely.net/" >Absoblogginlutely!</a><br />
<strong>J.P. Morgan</strong><strong>:</strong> Grant Bichocco &#8211; <a href="http://www.mrgrant.com/" >Mr.Grant.com</a><br />
<strong>UPS Guy</strong><strong>:</strong> Paul Asadoorian- <a href="http://pauldotcom.com/" >Pauldotcom.com Podcast</a><br />
<strong>Skipper</strong><strong>:</strong> Rylie Starcher
</p>
<p>
Not to leave anyone out, because they have all done such a great job, the show was produced by:
</p>
<p>
<a href="http://www.georgestarcher.net/"><b>George Starcher</b></a> &#8211; <a href="http://www.typicalmacuser.com/">Typical Mac User Podcast</a><br />
<b>Victor Cajiao</b> &#8211; <a href="http://www.typicalmacuser.com/" >Typical Mac User Podcast</a> -<a rel="nofollow" href="http://www.typicalmacuser.com/" ></a> &#8211; <a href="http://www.typicalshutterbug.com/" >Typical Shutterbug Podcast</a><br />
<b>Steve Holden</b> &#8211; <a href="http://www.technewsradio.com" >Tech News Radio</a> <a rel="nofollow" href="http://www.technewsradio.com/" ></a> -<a href="http://www.jerseyboyspodcast.com" > Jersey Boys Podcast</a> &#8211; <a href="http://AztecMedia.net" >AztecMedia.net</a>
</p>
<p>
The folks at FiT do fantastic, creative, stories around Halloween and Christmas (<a href="http://www.friendsintech.com/index.php/index.php/archives/11">Server Room of Horrors</a> – Halloween 2005; <a href="http://www.friendsintech.com/index.php/agcc">A Geek Christmas Carol</a> – Christmas 2005; <a href="http://www.friendsintech.com/index.php/index.php/archives/105">Server Room of Horrors</a> – Halloween 2006;  <a href="http://www.friendsintech.com/index.php/index.php/archives/120">Lucky the Reindeer and the Island of Misfit Geeks</a> – Christmas 2006;  <a href="http://www.friendsintech.com/index.php/index.php/archives/192">It’s the Great Server Chuck and Kreg!</a> – Halloween 2007).  Take the time to listen to this year&#8217;s Christmas story. You won&#8217;t be disappointed.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2009/12/23/soon-to-be-classic-a-geek-christmas-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Santa&#8217;s Secrets Leaked</title>
		<link>http://blog.securitymonks.com/2009/12/21/santas-secrets-leaked/</link>
		<comments>http://blog.securitymonks.com/2009/12/21/santas-secrets-leaked/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 22:00:11 +0000</pubDate>
		<dc:creator>John Gerber</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.securitymonks.com/?p=1626</guid>
		<description><![CDATA[In a stunning possible security breach, Gregory Mone reveals in his book, &#8220;The Truth About Santa: Wormholes, Robots, and What Really Happens on Christmas Eve&#8221; some of the sensitive data loss that has been occurring in Father Christmas&#8216; organization.  Answers to questions that have plagued human kind since the first report of the jolly [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.securitymonks.com/wp-content/uploads/2009/12/santa.jpg" align="left" width=120 />In a stunning possible security breach, <a href="http://gregorymone.com/">Gregory Mone</a> reveals in his book, &#8220;<a href="http://www.amazon.com/Truth-about-Santa-Wormholes-Christmas/dp/1596916184/ref=ntt_at_ep_dpi_1">The Truth About Santa: Wormholes, Robots, and What Really Happens on Christmas Eve</a>&#8221; some of the sensitive data loss that has been occurring in <a href="http://en.wikipedia.org/wiki/Father_Christmas">Father Christmas</a>&#8216; organization.  Answers to questions that have plagued human kind since the <a href="http://www.the-north-pole.com/history/index.htm">first report</a> of the jolly old elf are beginning to appear on the Internet.  Through heavy research and interviews with scientists and other field experts (management consultants, Berkeley astrophysicists, Navy SEALs) Mone was able to discover that <a href="http://wiki.answers.com/Q/What_do_they_call_Santa_Claus_in_Iraq">Baba Noel</a> accomplishes the seemingly impossible annual mission using advanced science and technology.  Mone claims no information was obtained through disgruntled elves.  </p>
<p>
On a mission to reveal the truth behind <a href="http://www.stcharleschristmas.com/perenoel.htm">Pere Noel</a>, Mone took time for <a href="http://www.npr.org/templates/story/story.php?storyId=121247367">an interview</a> on NPR&#8217;s Morning Edition and did <a href="http://thephoenix.com/BLOGS/blogs/phlog/Podcast/PODCAST_2009_TruthAboutSanta.mp3">an one hour lecture</a> at MIT.  <a href="http://thephoenix.com/BLOGS/members/Shaula-Clark.aspx">Shaula Clark</a> reporting for <a href="http://thephoenix.com/BLOGS/phlog/archive/2009/12/09/podcast-gregory-mone-quot-the-truth-about-santa-wormholes-robots-and-what-really-happens-on-christmas-eve-quot-mp3.aspx">the Boston Phoenix</a> on the MIT lecture, exposed some of <a href="http://www.amoretravelguides.com/blog/babbo-natale-is-italys-santa-claus.php">Babbo Natale</a>&#8217;s trade secrets:</p>
<ul>
<li><a href="http://gohawaii.about.com/od/festivals/a/hawaii_xmas_a.htm">Kanakaloka</a> is not immortal, but retains his jolly vigor with the help of organ printers. </li>
<li><a href="http://www.polishamericancenter.org/SwietyMikolaj.html">Swiety Mikolaj</a> does not, in fact, leave toys under the tree; instead, he comes bearing complex chemical reactions &#8212; toys assemble themselves in their packaging.</li>
<li><a href="http://en.wikipedia.org/wiki/Ded_Moroz">Ded Moroz</a>’s Christmas Eve rounds are actually accomplished via several teams of Santa-recruited lieutenants, a series of short-distance wormholes, and time travel.</li>
<li><a href="http://familycrafts.about.com/library/misc/blpapainoel.htm">Papai Noel</a>’s base of operations (actually in Greenland, not the North Pole) is greatly threatened by global warming &#8212; to keep his unfathomably large server farm cool, he needs the Arctic chill. Papai Noel’s own green initiatives include planting trees and cloning his elves (&#8220;because he wouldn&#8217;t want [them] breeding on their own&#8221;).</li>
</ul>
<p>
According to Mone, <a href="http://www.whychristmas.com/cultures/holland.shtml">Sinter Klaas</a> uses tools that are hundreds of years beyond what we have at our disposal.  For example, &#8220;Santa&#8217;s suit is laden with what are called metamaterials, which have the effect of bending light around a person so that they turn invisible&#8221; — which can come in handy if there are curious children peeking during his Christmas deliveries.
</p>
<p>
Questions on the Internet have been raised as to where Mone may have obtained his information.  At the beginning of the month, Mone traveled to Google allegedly to take part in the <a href="http://www.google.com/talks/authors/index.html">Authors@Google</a> series.  During the talk Mone discussed how implanted listening devices in the ornaments help <a href="http://www.the-north-pole.com/around/japan.html">Hoteiosho</a> keep the naughty and nice kids straight.  Also discussed was the use of cloning and wormhole technology to help Baba Chaghaloo get to every household.  A few posts on the Internet question whether Google could be providing information to <a href="http://wiki.answers.com/Q/What_does_'Sheng_Dan_Lao_Ren'_mean_in_Chinese">Shengdan Laoren</a> through advance data mining in exchange for some of the advance technologies.
</p>
<p>
Could the US government also be involved?  Those Internet posts point to the <a href="http://www.gearthblog.com/blog/archives/2009/12/norad_will_track_santa_once_again.html">partnership between Google and NORAD</a> (the North American Aerospace Defense Command), a bi-national United States and Canadian organization.  NORAD and Google are helping <a href="http://www.noradsanta.org/">children track</a> the journey of <a href="http://familycrafts.about.com/library/misc/bljolasveinarv.htm">Jolasveinar</a> around the world using Google Maps and Google Earth.  In a possible attempt to gain patents and disrupt Google market shares, there are even rumors that <a href="http://www.whychristmas.com/cultures/armenia.shtml">Gaghant Baba</a>&#8217;s workshop has been <a href="http://www.gomilpitas.com/humor/080.htm">purchased by Bill Gates</a>.  Could a secret message exist behind the <a href="http://www.microsoft.com/video/en/us/details/2384daa8-bc3e-499c-b934-d8b52b7360c2">Microsoft Bing commercial</a> about <a href="http://www.whychristmas.com/cultures/ireland.shtml">Daidi na Nollag</a>?
</p>
<p>
Google maintains that they take <a href="http://www.sacbee.com/opinion/story/2354179.html">user privacy very seriously</a>.  In this case, I believe them.  If there is trickery, <a href="http://en.wikipedia.org/wiki/Tomte">Tomten</a> would likely be behind it.  How can one trust a person who goes by so many names?  And what exactly is his past?  Every country provides a different story.  If he is a jolly old elf, there are <a href="http://en.wikipedia.org/wiki/Elf_deities">reports</a> that elves have used trickery as a means to an end.  Local and federal governments across the world have <a href="http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=2000_uscode&#038;docid=5usc7353">gift policies</a> limiting the the value and number of gifts that can be given to government employees.  Gifts can be used as bribes.  One could begin to wonder if the gift bearing holiday might be a cover for a massive yearly bribery event.  More troubling, attempts to trace those questioning Internet posts lead back to ISPs in Greenland.  Maybe Jack Bauer is needed to get at the truth.
</p>
<p>
<object width="500" ><param name="movie" value="http://www.youtube.com/v/X6yUCbqAGrg&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/X6yUCbqAGrg&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" ></embed></object>
</p>
<p>
I am not saying <a href="http://www.ajarnforum.net/vb/the-virtual-pub/27128-a-child-s-christmas-in-wales.html">Chimney John</a> is not a jolly nice fellow.  I am just not a great believer in security through obscurity.  There is a great deal we don&#8217;t know about <a href="http://www.astealerofhearts.com/2009/12/samichlaus.html">Samichlaus</a>.  As security minded people, we need to be always questioning.  Video of Mone&#8217;s Google talk has been made available.  View it below and judge for yourself:
</p>
<p>
<object width="500" ><param name="movie" value="http://www.youtube.com/v/ozflA5G46pM&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ozflA5G46pM&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" ></embed></object>
</p>
<p>
Wishing you a great holiday, wherever you may be and whatever you may believe.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.securitymonks.com/2009/12/21/santas-secrets-leaked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://thephoenix.com/BLOGS/blogs/phlog/Podcast/PODCAST_2009_TruthAboutSanta.mp3" length="35617936" type="audio/mpeg" />
		</item>
	</channel>
</rss>

