<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title><![CDATA[[SecurityRatty] tag: helpful]]></title>
    <link>http://securityratty.com/tag/helpful</link>
    <description></description>
    <pubDate>Mon, 21 Jul 2008 13:00:00 +0000</pubDate>
    <generator>iRatty Engine</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <item>
      <title><![CDATA[A tip on using ASP.NET validation controls]]></title>
      <link>http://securityratty.com/article/20fc43ecdf7ca60d64f9285d0e374a62</link>
      <guid>http://securityratty.com/article/20fc43ecdf7ca60d64f9285d0e374a62</guid>
      <description><![CDATA[Executive summary
ValidationSummary controls look at the ErrorMessage field to figure out what to display, so always use ErrorMessage in a verbose enough way that it will be helpful from a...]]></description>
      <content:encoded><![CDATA[<p>Executive summary:</p> <ul> <li>ValidationSummary controls look at the ErrorMessage field to figure out what to display, so always use ErrorMessage in a verbose enough way that it will be helpful from a ValidationSummary control.</li> <li>If you need a shorter message to display inline (i.e., where the validation control is on the form, as opposed to the ValidationSummary) use the body of the control to define it.</li></ul> <p>In the past, I&#39;ve used RequiredFieldValidator controls on my web forms to remind users that certain fields are required. I would set the ErrorMessage to something vanilla like, &quot;This field is required&quot;, or even something simpler like &quot;*&quot; (an asterisk) if I didn&#39;t have much room on the form to display more prose for an error.</p> <p>A friend was recently testing a new feature that I&#39;d built for our sales team and she had a hard time seeing the little red asterisks that were showing up next to required fields. It felt to her as though she was pushing the submit button on the form but nothing was happening. It was clear that a ValidationSummary control would be helpful, especially if placed close to the submit button for the form.</p> <p>I&#39;ve been a bit lazy in the past about using ValidationSummary controls, partially because most of my forms are simple enough that they feel a bit redundant. But on a more complicated form, they can be very helpful to guide users back to the places on the form where there&#39;s problems.</p> <p>So I threw one of those puppies on the form and immediately saw that there was a problem - my error message was set to &quot;*&quot;, which meant that my validation summary was pretty useless - it just displayed a bunch of red asterisks! And in places where I&#39;d used the prose, &quot;This field is required&quot;, well that was pretty useless as an error message in the summary.</p> <p>After a bit of research and experimentation, I discovered that the ValidationSummary control looks at the ErrorMessage property on each validation control in order to figure out what to display in the summary. So it&#39;s important to use ErrorMessage with a summary in mind! Don&#39;t use text like &quot;*&quot; or &quot;This field is required&quot;. Be more specific so the user can find her way up to the problem field, as in, &quot;PostalCode is required&quot;.</p> <p>But if you make ErrorMessage verbose so that it&#39;s helpful in a summary, it may make your form really ugly when displayed inline next to the control being validated. The trick is to use the body of the validation control element to specify the inline error message. Then you end up with two messages: a verbose one that&#39;s used in your summary, and a more localized, brief message that shows up right next to the control being validated. Note the asterisk that&#39;s in the body of the RequiredFieldValidator below:</p><pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">asp:RequiredFieldValidator</span>
      <span class="attr">ErrorMessage</span><span class="kwrd">=&quot;Zip/postal code is required&quot;</span>
      <span class="attr">ControlToValidate</span><span class="kwrd">=&#39;txtPostalCode&#39;</span>
      <span class="attr">ValidationGroup</span><span class="kwrd">=&#39;BasicInfo&#39;</span>
      <span class="attr">Display</span><span class="kwrd">=&quot;Dynamic&quot;</span>
      <span class="attr">runat</span><span class="kwrd">=&#39;server&#39;</span><span class="kwrd">&gt;</span>*<span class="kwrd">&lt;/</span><span class="html">asp:RequiredFieldValidator</span><span class="kwrd">&gt;</span></pre>
<p>I&#39;ve learned a lesson from all of this. In the future when I use validation controls I&#39;ll always provide a summary-friendly message in the ErrorMessage field, and if I need something different (typically shorter) to display inline, I&#39;ll put it in the body of the validation control element.</p>
<p>Hope this helps!</p><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52816" width="1" height="1">]]></content:encoded>
      <pubDate>Wed, 03 Sep 2008 13:16:35 +0000</pubDate>
      <category domain="http://securityratty.com/tag/shorter message">shorter message</category>
      <category domain="http://securityratty.com/tag/message">message</category>
      <category domain="http://securityratty.com/tag/inline error message">inline error message</category>
      <category domain="http://securityratty.com/tag/validation control element">validation control element</category>
      <category domain="http://securityratty.com/tag/control">control</category>
      <category domain="http://securityratty.com/tag/inline">inline</category>
      <category domain="http://securityratty.com/tag/display inline">display inline</category>
      <category domain="http://securityratty.com/tag/errormessage">errormessage</category>
      <category domain="http://securityratty.com/tag/errormessage property">errormessage property</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/09/03/a-tip-on-using-asp-net-validation-controls.aspx">A tip on using ASP.NET validation controls</source>
    </item>
    <item>
      <title><![CDATA[Consumer Reports Responds]]></title>
      <link>http://securityratty.com/article/6c99136056552315f93619486db85f54</link>
      <guid>http://securityratty.com/article/6c99136056552315f93619486db85f54</guid>
      <description><![CDATA[Consumer Reports has sent a response to my recent column Security Software Reviews Done Wrong , which criticized their recent story on computer security and review of security products. This statement...]]></description>
      <content:encoded><![CDATA[Consumer Reports has sent a response to my recent column <A href="http://www.eweek.com/c/a/Security/The-Wrong-Way-To-Review-Security-Software/">Security Software Reviews Done Wrong</A>, which criticized their recent story on computer security and review of security products.

This statement is from Jeff Fox, Technology Editor, Consumer Reports:
<blockquote><i>At Consumer Reports, we have always believed that scientific testing is the best way to evaluate products. We also use a statistically-valid survey methodology to measure consumer experiences. In preparing our September security reports, we employed both methods as we have for many decades. Some additional notes on this column:

<ul>
	<li>The story was not, as you state, "filled with data sourced to eMarketer." That service provided just two pieces of data, namely the current number of Internet- and broadband-using U.S. Households</li>
	<li>Using a separate credit card for online transactions avoids having to cancel your main card should fraud occur.</li>
	<li>We test software against modified versions of actual malware because such threats are what security software will often be called upon to recognize on the job.</li>
</ul>

Finally, a note about your claim that Consumer Reports was invited to respond. Your e-mail to us requesting a comment was time-stamped on the same Saturday evening as your column is labeled as having posted. That left fewer than six hours to respond, on a weekend. It would have been helpful to have had more time.</i></blockquote>

It's true, as I said in the column, that I didn't give them much time to respond. I hope I can make up for that some by putting this response out now and including it in the column itself.<img src="http://feedproxy.google.com/~r/RSS/cheap_hack/~4/jvhoWp-SQns" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 19 Aug 2008 12:12:41 +0000</pubDate>
      <category domain="http://securityratty.com/tag/consumer reports">consumer reports</category>
      <category domain="http://securityratty.com/tag/column">column</category>
      <category domain="http://securityratty.com/tag/measure consumer experiences">measure consumer experiences</category>
      <category domain="http://securityratty.com/tag/products">products</category>
      <category domain="http://securityratty.com/tag/online transactions avoids">online transactions avoids</category>
      <category domain="http://securityratty.com/tag/recent story">recent story</category>
      <category domain="http://securityratty.com/tag/story">story</category>
      <category domain="http://securityratty.com/tag/september security reports">september security reports</category>
      <category domain="http://securityratty.com/tag/security products">security products</category>
      <source url="http://feeds.ziffdavisenterprise.com/~r/RSS/cheap_hack/~3/jvhoWp-SQns/consumer_reports_responds.html">Consumer Reports Responds</source>
    </item>
    <item>
      <title><![CDATA[Serializable XmlDocument]]></title>
      <link>http://securityratty.com/article/94c84cd2ea7a6ea71c9712991d27722d</link>
      <guid>http://securityratty.com/article/94c84cd2ea7a6ea71c9712991d27722d</guid>
      <description><![CDATA[It's surprising that XmlDocument isn't marked [Serializable], because it's very natural to serialize one into a stream. I wanted to put an object into ASP.NET ViewState the other day, and quickly ran...]]></description>
      <content:encoded><![CDATA[<p>It&#39;s surprising that XmlDocument isn&#39;t marked [Serializable], because it&#39;s very natural to serialize one into a stream. I wanted to put an object into ASP.NET ViewState the other day, and quickly ran into this roadblock, because part of the object included an XmlDocument, which is not serializable. A quick search revealed that most people deal with this problem by storing a string instead. Indeed, that was where I started, but I quickly realized that there are multiple places in my code where I want to do this sort of thing, and I don&#39;t want to have to mess with it in each data structure that contains an XmlDocument.</p>
<p>So I put together a simple class that holds an XmlDocument and implements ISerializable and called it SerializableXmlDocument. I&#39;m sharing the source code here in the hopes that</p>
<blockquote>
<p>a) somebody will find it useful, and</p>
<p>b) somebody smarter than I am will point out how I screwed it up and help me make it better.</p>
</blockquote>
<p>SerializableXmlDocument includes implicit conversion operators to make it easy to convert to/from an XmlDocument. It holds the actual document in a property called Value. This &quot;isomorph&quot; pattern is one that I picked up from <a href="http://www.pluralsight.com/community/blogs/craig/default.aspx" target="_blank">Craig</a>.</p>
<p>While writing this code, I also wrote a helpful extension method for getting a byte array out of a MemoryStream that is exactly the length of the data written to the stream so far (CopyUpToSeekPointer). So don&#39;t go looking in the docs for MemoryStream for this method :) This is obviously not the most efficient way to consume bytes written to a MemoryStream since it copies the data into a new byte array, but it&#39;s very convenient in many scenarios.</p>
<p>Here is SerializableXmlDocument.cs:</p>
<pre class="csharpcode"><span class="kwrd">using</span> System;<br /><span class="kwrd">using</span> System.Runtime.Serialization;<br /><span class="kwrd">using</span> System.Xml;<br /><span class="kwrd">using</span> System.IO;<br /><br /><span class="kwrd">namespace</span> Pluralsight.Samples<br />{<br />    [Serializable]<br />    <span class="kwrd">public</span> <span class="kwrd">class</span> SerializableXmlDocument : ISerializable<br />    {<br />        <span class="kwrd">public</span> SerializableXmlDocument() { }<br />        <span class="kwrd">public</span> SerializableXmlDocument(XmlDocument <span class="kwrd">value</span>)<br />        {<br />            <span class="kwrd">this</span>.Value = <span class="kwrd">value</span>;<br />        }<br /><br />        <span class="kwrd">public</span> XmlDocument Value { get; set; }<br /><br />        <span class="preproc">#region</span> ISerializable implementation<br />        <span class="kwrd">public</span> SerializableXmlDocument(SerializationInfo info,<br />                                       StreamingContext context)<br />        {<br />            <span class="kwrd">byte</span>[] serializedData = (<span class="kwrd">byte</span>[])info.GetValue(<span class="str">&quot;doc&quot;</span>,<br />                <span class="kwrd">typeof</span>(<span class="kwrd">byte</span>[]));<br />            <span class="kwrd">if</span> (<span class="kwrd">null</span> != serializedData)<br />                <span class="kwrd">this</span>.Value = Deserialize(serializedData);<br />        }<br /><br />        <span class="kwrd">public</span> <span class="kwrd">void</span> GetObjectData(SerializationInfo info,<br />                                  StreamingContext context)<br />        {<br />            <span class="kwrd">byte</span>[] serializedData = <span class="kwrd">null</span>;<br />            <span class="kwrd">if</span> (<span class="kwrd">null</span> != Value)<br />                serializedData = Serialize(Value);<br />            info.AddValue(<span class="str">&quot;doc&quot;</span>, serializedData);<br />        }<br />        <span class="preproc">#endregion</span><br /><br />        <span class="preproc">#region</span> <span class="kwrd">implicit</span> conversion to/from XmlDocument<br />        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">implicit</span> <span class="kwrd">operator</span> SerializableXmlDocument(<br />            XmlDocument doc)<br />        {<br />            <span class="kwrd">return</span> <span class="kwrd">new</span> SerializableXmlDocument(doc);<br />        }<br />        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">implicit</span> <span class="kwrd">operator</span> XmlDocument(<br />            SerializableXmlDocument sdoc)<br />        {<br />            <span class="kwrd">return</span> sdoc.Value;<br />        }<br />        <span class="preproc">#endregion</span><br /><br />        <span class="preproc">#region</span> Xml serialization helper methods<br />        <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">byte</span>[] Serialize(XmlDocument doc)<br />        {<br />            MemoryStream stream = <span class="kwrd">new</span> MemoryStream();<br />            doc.Save(stream);<br />            <span class="kwrd">return</span> stream.CopyUpToSeekPointer();<br />        }<br />        <span class="kwrd">private</span> <span class="kwrd">static</span> XmlDocument Deserialize(<span class="kwrd">byte</span>[] serializedData)<br />        {<br />            XmlDocument doc = <span class="kwrd">new</span> XmlDocument();<br />            doc.Load(<span class="kwrd">new</span> MemoryStream(serializedData, <span class="kwrd">false</span>));<br />            <span class="kwrd">return</span> doc;<br />        }<br />        <span class="preproc">#endregion</span><br />    }<br />}</pre>
<p>...and here&#39;s the CopyUpToSeekPointer extension method for MemoryStream:</p>
<pre class="csharpcode"><span class="kwrd">using</span> System;<br /><span class="kwrd">using</span> System.IO;<br /><br /><span class="kwrd">namespace</span> Pluralsight.Samples<br />{<br />    <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">class</span> MemoryStreamExtensionMethods<br />    {<br />        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">byte</span>[] CopyUpToSeekPointer(<br />            <span class="kwrd">this</span> MemoryStream stream)<br />        {<br />            <span class="rem">// copy only the part of the buffer</span><br />            <span class="rem">// that contains the serialized document</span><br />            <span class="kwrd">long</span> length = stream.Position;<br />            <span class="kwrd">byte</span>[] buffer = stream.GetBuffer();<br />            <span class="kwrd">byte</span>[] result = <span class="kwrd">new</span> <span class="kwrd">byte</span>[length];<br />            <span class="kwrd">for</span> (<span class="kwrd">int</span> i = 0; i &lt; length; ++i)<br />                result[i] = buffer[i];<br />            <span class="kwrd">return</span> result;<br />        }<br />    }<br />}</pre>
<p>...and here&#39;s a sample object that uses SerializableXmlDocument:</p>
<pre class="csharpcode"><span class="kwrd">using</span> System;<br /><br /><span class="kwrd">namespace</span> Pluralsight.Samples<br />{<br />    [Serializable]<br />    <span class="kwrd">public</span> <span class="kwrd">class</span> Item<br />    {<br />        <span class="kwrd">public</span> <span class="kwrd">string</span> Name { get; set; }<br />        <span class="kwrd">public</span> SerializableXmlDocument Data { get; set; }<br /><br />        <span class="kwrd">public</span> <span class="kwrd">void</span> Print()<br />        {<br />            Console.WriteLine(<span class="str">&quot;Name: {0}&quot;</span>, Name);<br />            Console.WriteLine(Data.Value.OuterXml);<br />        }<br />    }<br />}</pre>
<p>...and here&#39;s a sample program that creates an instance of Item, serializes it, then deserializes it, printing diagnostics along the way to show that it&#39;s working properly.</p>
<pre class="csharpcode"><span class="kwrd">using</span> System;<br /><span class="kwrd">using</span> System.Xml;<br /><span class="kwrd">using</span> System.Runtime.Serialization.Formatters.Binary;<br /><span class="kwrd">using</span> System.IO;<br /><span class="kwrd">using</span> Pluralsight.Samples;<br /><br /><span class="kwrd">class</span> DemoProgram<br />{<br />    <span class="kwrd">static</span> <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[] args)<br />    {<br />        XmlDocument doc = <span class="kwrd">new</span> XmlDocument();<br />        doc.LoadXml(<span class="str">&quot;&lt;root&gt;&lt;child&gt;text&lt;/child&gt;&lt;/root&gt;&quot;</span>);<br /><br />        Item item = <span class="kwrd">new</span> Item<br />        {<br />            Name = <span class="str">&quot;Testing 123&quot;</span>,<br />            Data = doc,<br />        };<br /><br />        <span class="rem">// print object before serialization</span><br />        item.Print();<br /><br />        BinaryFormatter formatter = <span class="kwrd">new</span> BinaryFormatter();<br />        MemoryStream stream = <span class="kwrd">new</span> MemoryStream();<br />        formatter.Serialize(stream, item);<br /><br />        <span class="kwrd">byte</span>[] serializedItem = stream.CopyUpToSeekPointer();<br /><br />        Console.WriteLine(<span class="str">&quot;Serialized data (base64): {0}&quot;</span>,<br />            Convert.ToBase64String(serializedItem));<br /><br />        item = (Item)formatter.Deserialize(<br />            <span class="kwrd">new</span> MemoryStream(serializedItem, <span class="kwrd">false</span>));<br /><br />        <span class="rem">// print object after deserialization</span><br />        item.Print();<br />    }<br />}</pre>
<p>Here&#39;s the output of the previous sample program:</p>
<p><a href="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/keith/sample_2D00_output_5F00_2.jpg"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" alt="sample-output" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/keith/sample_2D00_output_5F00_thumb.jpg" width="422" border="0" height="214" /></a>&nbsp;</p>
<p>Flame away!</p><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52538" width="1" height="1">]]></content:encoded>
      <pubDate>Mon, 18 Aug 2008 22:58:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/public class item">public class item</category>
      <category domain="http://securityratty.com/tag/public">public</category>
      <category domain="http://securityratty.com/tag/public void getobjectdata">public void getobjectdata</category>
      <category domain="http://securityratty.com/tag/public static byte">public static byte</category>
      <category domain="http://securityratty.com/tag/xmldocument">xmldocument</category>
      <category domain="http://securityratty.com/tag/return doc">return doc</category>
      <category domain="http://securityratty.com/tag/return">return</category>
      <category domain="http://securityratty.com/tag/static byte">static byte</category>
      <category domain="http://securityratty.com/tag/public class">public class</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/08/18/serializable-xmldocument.aspx">Serializable XmlDocument</source>
    </item>
    <item>
      <title><![CDATA[Keylogger Or False Positive Detected in Wall-E Demo?]]></title>
      <link>http://securityratty.com/article/bdaaa16ca0ffbacb4a405b5a248888de</link>
      <guid>http://securityratty.com/article/bdaaa16ca0ffbacb4a405b5a248888de</guid>
      <description><![CDATA[I woke this morning to find an interesting set of blog entries regarding the Wall-E demo game from THQ - someone downloaded the demo and found their AV scanner flagging it as potentially dangerous

A...]]></description>
      <content:encoded><![CDATA[
        I woke this morning to find an interesting set of blog entries regarding the Wall-E demo game from THQ - someone downloaded the demo and found their AV scanner flagging it as potentially dangerous.<br /><br />A quick roundup of posts:<br /><br /><b>1)</b> Security researcher Timeless Prototype downloads the Wall-E demo, only to find his <a href="http://www.timelessprototype.com/tpdc/blog/post/2008/08/Keylogger-Detected-in-Wall-E-Demo-PC-Game.aspx">antivirus software going crazy</a>. It has detected <a href="http://securityresponse.symantec.com/security_response/writeup.jsp?docid=2004-052616-5512-99">Spyware.Ardakey</a>.<br /><br /><b>2)</b> Over at Spyware Sucks, Sandi Hardmeier decides to try <a href="http://msmvps.com/blogs/spywaresucks/archive/2008/08/03/1643166.aspx">downloading versions of the game from different regions</a>, only to find the French, German ,Danish and Italian versions are all 177MB in size, whereas the US version is "only" 133MB. Furthermore, the 177MB versions all have different filenames. Note that (so far) it's the UK version (clocking in at 177MB) that has been snagged by an antivirus program. As Sandi notes, there is no way an extra 40-odd MB are needed for a keylogger, so why the extra filesize?<br /><br />3) Wayne Porter <a href="http://www.wayneporter.com/2008/08/02/keyloggers-games/">contacted Cachefly</a> (who manage the servers the game is downloading from), and they said this:<br /><br /><i>"I can confirm that our servers were not compromised, beyond that I can't offer much else.<br /><br />Obviously we'd like to be as helpful as possible, but since it's related to customer data we're rather limited in what we can discuss. I've opened a ticket to make THQ aware of this, and we can/will work them on tracking stuff down if we need to (we do have a history of all versions of a file w/ filesizes/md5 checksums, and the dates/times/src ip of all revisions)."</i><br /><br />The 177MB file is still available to download, I grabbed it a little earlier on today:<br /><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="walle3.jpg" src="http://blog.spywareguide.com/images/walle3.jpg" class="mt-image-none" style="" height="186" width="380" /></span>
<br /><br />What we <i>really</i> need to know, is if this is anything to be worried about or not. I would have contacted THQ UK directly, but they <a href="http://www.thq-games.com/uk/pages/contact">don't seem to be available</a> on a Sunday. Until this is resolved one way or another, I'd have to advise people not to download this demo as a precaution until THQ (or Norton, whose AV program flagged the file) have clarified exactly what is going on here. We're currently running some more antivirus / antispyware scans against the download in question, but as you can imagine, this takes some time. A particular problem here is that there are issues submitting a file like this to sites such as <a href="http://www.virustotal.com/">Virustotal.com</a>, because of their 10MB file size limit.<br /><br />Sorting this one out might take a while...<br /><br />/ Update - some people are saying AVAST <a href="http://games.internode.on.net/forums/viewtopic.php?p=1844560">flags the file</a>, too.<br />
        
    ]]></content:encoded>
      <pubDate>Sun, 03 Aug 2008 07:23:19 +0000</pubDate>
      <category domain="http://securityratty.com/tag/demo">demo</category>
      <category domain="http://securityratty.com/tag/wall-e demo">wall-e demo</category>
      <category domain="http://securityratty.com/tag/177mb versions">177mb versions</category>
      <category domain="http://securityratty.com/tag/versions">versions</category>
      <category domain="http://securityratty.com/tag/wall-e demo game">wall-e demo game</category>
      <category domain="http://securityratty.com/tag/177mb">177mb</category>
      <category domain="http://securityratty.com/tag/file">file</category>
      <category domain="http://securityratty.com/tag/177mb file">177mb file</category>
      <category domain="http://securityratty.com/tag/10mb file">10mb file</category>
      <source url="http://blog.spywareguide.com/2008/08/walle.html">Keylogger Or False Positive Detected in Wall-E Demo?</source>
    </item>
    <item>
      <title><![CDATA[ASP.NET Health Monitoring doesn't log inner exception stack trace]]></title>
      <link>http://securityratty.com/article/b3299c7401f4189ad9619ab42a4a438e</link>
      <guid>http://securityratty.com/article/b3299c7401f4189ad9619ab42a4a438e</guid>
      <description><![CDATA[This can be a problem, especially when an ObjectDataSource starts throwing exceptions. The stack trace looks the same because of the way the methods are invoked (via reflection) - you end up with a...]]></description>
      <content:encoded><![CDATA[<p>This can be a problem, especially when an ObjectDataSource starts throwing exceptions. The stack trace looks the same because of the way the methods are invoked (via reflection) - you end up with a stack trace for a TargetInvocationException, which basically says, &quot;I used reflection to invoke some method, and it threw an exception. See the inner exception for details.&quot;</p>
<p>ASP.NET&#39;s health monitoring system does list the inner exceptions (apparently up to a maximum depth of two, from spelunking the code with <a href="http://www.aisto.com/roeder/dotnet/">reflector</a>), but it does not emit the stack traces for these exceptions, which would be <i>really helpful</i>. I&#39;ve spent some time this morning trying to figure out how I&#39;d customize things to emit this, and it looks like what I&#39;d have to do is catch the exception and generate a custom WebEvent that overrides ToString(bool, bool) and does everything that WebRequestErrorEvent does, but also generate the inner stack trace.</p>
<p>That seems a bit ugly. A search for &quot;ASP.NET web event inner exception stack trace&quot; yielded no interesting results, so if you&#39;ve dealt with this and have a cleaner solution, let me know. I&#39;ll post my solution once I get it worked out.</p><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52306" width="1" height="1">]]></content:encoded>
      <pubDate>Fri, 01 Aug 2008 12:21:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/exception stack trace">exception stack trace</category>
      <category domain="http://securityratty.com/tag/exception">exception</category>
      <category domain="http://securityratty.com/tag/stack trace">stack trace</category>
      <category domain="http://securityratty.com/tag/net">net</category>
      <category domain="http://securityratty.com/tag/net web event">net web event</category>
      <category domain="http://securityratty.com/tag/asp">asp</category>
      <category domain="http://securityratty.com/tag/exceptions">exceptions</category>
      <category domain="http://securityratty.com/tag/solution">solution</category>
      <category domain="http://securityratty.com/tag/cleaner solution">cleaner solution</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/08/01/asp-net-health-monitoring-doesn-t-log-inner-exception-stack-trace.aspx">ASP.NET Health Monitoring doesn't log inner exception stack trace</source>
    </item>
    <item>
      <title><![CDATA[CISA and CISSP Preparation]]></title>
      <link>http://securityratty.com/article/4990229406d5e949151cc28d8d8799b9</link>
      <guid>http://securityratty.com/article/4990229406d5e949151cc28d8d8799b9</guid>
      <description><![CDATA[Recently I have received a number of questions seeking preparation tips and insights for the CISA and CISSP certifications. I hold both of these certifications, and passed them both on the first...]]></description>
      <content:encoded><![CDATA[<p>Recently I have received a number of questions seeking preparation tips and insights for the CISA and CISSP certifications. I hold both of these certifications, and passed them both on the first attempt using very different preparation approaches. I took the CISA first, and based on a few lessons learned, I radically changed my preparation plan for the CISSP.<br />
<br />
FYI, the official preparation information, qualification requirements, exam requirements, etc. can be found at:</p>
<ul>
<li>Certified Information Systems Auditor (CISA) : <a href="http://www.isaca.org/cisa/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.isaca.org/cisa/');" target="_blank">http://www.isaca.org/cisa/</a></li>
<li>Certified Information Systems Security Professional : <a href="https://www.isc2.org/cissp" onclick="javascript:pageTracker._trackPageview('/outbound/article/https://www.isc2.org/cissp');">https://www.isc2.org/cissp</a></li>
</ul>
<p><strong>Are You Ready ?</strong><br />
A few basic questions to ask yourself to gauge how ready you are:</p>
<ul>
<li>Do I meet the spirit, and not just the letter, of the experience requirements ?</li>
<li>Has there been sufficient diversity in my experience ?</li>
</ul>
<p></p>
<div>Both of these exams cover a very broad spectrum of subjects. It is my personal belief that the experience requirements exist as an aid to whittle test takers down to candidates who have the professional experiences required to be successful, and to discourage people from taking the exams before they are ready. If you truly meet the background requirements, then you should have had some contact with many of the core topic areas for the exam.</div>
<p></p>
<div>If you are looking at the core content of the examination, and do not believe that you really have the breadth of exposure to be able to describe and discuss each domain at a high level, then you may be better served by delaying the exam in favor of working with your management to gain broader professional experience.</div>
<p><strong>Five Step Approach to CISA or CISSP Exam Preparation</strong></p>
<ol>
<li>Perform an initial benchmark and assessment of your readiness</li>
<li>Read a &#8220;survey&#8221; level preparation guide cover to cover</li>
<li>Perform a secondary benchmark, and compare your readiness</li>
<li>Review official, or &#8220;deep dive&#8221;, preparation materials on areas identified as your weaknesses</li>
<li>Re-benchmark, and repeat targeted reviews until ready</li>
</ol>
<p></p>
<div>For the first certification that I prepared for, I did not perform the first three steps outlined above. I went directly to the official source materials and began trying to review them cover to cover. I passed the exam, but I also spent a lot of time &amp; energy reviewing things that I already knew &#8220;well enough&#8221;, and was burned out when reviewing the areas which could have been richer learning opportunities. No matter what your professional background, no one knows-it-all or does-it-all, so there is always  an opportunity to learn new things while you are preparing for the certification exam. The goal of this five step approach is to focus your time where you have the greatest learning opportunities. Hopefully this focuses your time and energy in the most rewarding way.</div>
<p></p>
<div><strong>Performing the Benchmarks</strong></div>
<div>For the Benchmarks, I like to complete a timed half-length or full-length examination.</div>
<p></p>
<div>It is my feeling that a half-length exam is long enough that fatigue, maintaining focus, and pace are all stressed, as they will be on examination day. This of course requires access to a large set of test questions or sample tests, preferably with explanations of incorrect answers. In addition to commercial third-party test preparation tools, there are good (and free) test preparation quizzes available from <a href="http://www.cccure.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.cccure.org/');">www.cccure.org</a>.</div>
<p></p>
<div><strong>Survey Materials</strong></div>
<div>I find the &#8220;Exam Cram&#8221; series to be very useful survey literature. I purchase books from this series when I want a high-level and quick handling of an entire subject matter area. As a result, I own survey books from the series in topic areas which I have no intention of pursuing certification for. Obviously the books I recommend for these certifications are:</div>
<p><a href="http://www.amazon.com/gp/product/078973446X?ie=UTF8&amp;tag=artofinfosecu-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=078973446X" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.amazon.com/gp/product/078973446X?ie=UTF8&amp;tag=artofinfosecu-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=078973446X');"><img src="http://artofinfosec.com/wp-content/uploads/cissp_exam_cram.jpg" border="0" alt="" /></a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=artofinfosecu-20&amp;l=as2&amp;o=1&amp;a=078973446X" border="0" alt="" width="1" height="1" /> <a href="http://www.amazon.com/gp/product/0789732726?ie=UTF8&amp;tag=artofinfosecu-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0789732726" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.amazon.com/gp/product/0789732726?ie=UTF8&amp;tag=artofinfosecu-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0789732726');"><img src="http://artofinfosec.com/wp-content/uploads/cisa_exam_cram.jpg" border="0" alt="" /></a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=artofinfosecu-20&amp;l=as2&amp;o=1&amp;a=0789732726" border="0" alt="" width="1" height="1" /></p>
<div><strong>Deep Dive Materials</strong></div>
<div>There are exam preparation materials available from a variety of sources that fit the bill in this area. What we are looking for are books that contain solid coverage of the areas where benchmarking has shown the most significant need for improvement. In addition to the materials from (ISC)2 and ISACA that I list below, consult your local library - often they will have books that fit the bill. (And, of course, consider arranging a donation of good materials if they do not.)</div>
<p><a href="http://www.amazon.com/gp/product/0849382319?ie=UTF8&amp;tag=artofinfosecu-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0849382319" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.amazon.com/gp/product/0849382319?ie=UTF8&amp;tag=artofinfosecu-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0849382319');"><img src="http://artofinfosec.com/wp-content/uploads/official_cissp.jpg" border="0" alt="" /></a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=artofinfosecu-20&amp;l=as2&amp;o=1&amp;a=0849382319" border="0" alt="" width="1" height="1" /> <a href="http://www.amazon.com/gp/product/1933284935?ie=UTF8&amp;tag=artofinfosecu-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1933284935" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.amazon.com/gp/product/1933284935?ie=UTF8&amp;tag=artofinfosecu-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1933284935');"><img src="http://artofinfosec.com/wp-content/uploads/cisa_review_2008.jpg" border="0" alt="" /></a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=artofinfosecu-20&amp;l=as2&amp;o=1&amp;a=1933284935" border="0" alt="" width="1" height="1" /></p>
<div><strong>Final Thoughts</strong></div>
<div>Good luck on your journey toward Information Security or Audit certification. One word of caution: Make sure that you have realistic expectations about what actually being certified will mean. Although I do think being certified helps a person establish credibility more quickly, and is helpful when searching for new employment, often people are underwhelmed by the &#8220;Congratulations, that&#8217;s nice&#8221; from their current employer. If your expectation is that a big raise, bonus, promotion, etc. is hinging on your being certified, then I would strongly encourage you to reality-check that with peers in your organization.</div>
<p></p>
<div>Cheers, Erik</div>
<p></p>
<p><a href="http://artofinfosec.com/60/cisa-and-cissp-preparation/" >CISA and CISSP Preparation</a></p>
<img src="http://feeds.feedburner.com/~r/artofinfosec/~4/351541992" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 31 Jul 2008 09:14:07 +0000</pubDate>
      <category domain="http://securityratty.com/tag/exam">exam</category>
      <category domain="http://securityratty.com/tag/exam requirements">exam requirements</category>
      <category domain="http://securityratty.com/tag/cissp exam preparation">cissp exam preparation</category>
      <category domain="http://securityratty.com/tag/half-length exam">half-length exam</category>
      <category domain="http://securityratty.com/tag/exam cram series">exam cram series</category>
      <category domain="http://securityratty.com/tag/certification exam">certification exam</category>
      <category domain="http://securityratty.com/tag/exam preparation materials">exam preparation materials</category>
      <category domain="http://securityratty.com/tag/preparation materials">preparation materials</category>
      <category domain="http://securityratty.com/tag/cissp">cissp</category>
      <source url="http://feeds.feedburner.com/~r/artofinfosec/~3/351541992/">CISA and CISSP Preparation</source>
    </item>
    <item>
      <title><![CDATA[Security Through Visibility - Montego, Lancope and NetFlow]]></title>
      <link>http://securityratty.com/article/03c1f11d6787944e11b9ab1baec0352e</link>
      <guid>http://securityratty.com/article/03c1f11d6787944e11b9ab1baec0352e</guid>
      <description><![CDATA[We've probably all heard that you can't secure what you can't see and that statement is even more profound when it comes to virtual environments. This is because it is extremely challenging to see...]]></description>
      <content:encoded><![CDATA[
<div xmlns="http://www.w3.org/1999/xhtml"><p>We've probably all heard that you can't secure what you can't see and that statement is even more profound when it comes to virtual environments.&nbsp; This is because it is extremely challenging to see what is going on at a micro vs. macro level within a virtual environments network.&nbsp; The virtualization vendors such as VMWare and Citrix have provided embedded tools into their management consoles that show a macro level of visibility but its not enough to identify security events in the environment.&nbsp; Take a look at the attached picture.&nbsp; It simply shows VMWare's ability to monitor virtual network performance statistics from a bits per second perspective.</p>

<p><a href="http://vmwaresecurity.typepad.com/.shared/image.html?/photos/uncategorized/2008/07/30/performancescreen.jpg" onclick="window.open(this.href, '_blank', 'width=800,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img height="187" width="300" border="0" alt="Performancescreen" title="Performancescreen" src="http://vmwaresecurity.typepad.com/security_in_the_virtual_w/images/2008/07/30/performancescreen.jpg" style="margin: 0px 5px 5px 0px; float: left;" /></a>
<br />&lt;-Click To Enlarge</p>

<p>With only this level of detail how can one determine which network applications are causing spikes.&nbsp; Is it FTP traffic that is occuring at a high volume at an unuseal time of day?&nbsp; If that were occuring, could that be indicative of either a breach or some sort of problem? What if FTP isn't even an authorized service in the virtual environment but there is a high volume of it?&nbsp; Did someone install a rouge FTP service so they could steal information from the server at will? </p>

<p>These types of questions can't really be answered without a micro level of detail into the packets flowing in, out and within the virtual environment.&nbsp; Now, what I am highlighting is not security in the traditional sense of prevention but using visibility as a means to first identify, then pin point the source of an issue so that it can properly be mitigated.&nbsp; Having constant visibility can also ensure that other security products in the environment are performing as expected.&nbsp; What if a Montego HyperSwitch with firewalling enabled is configured with many policies but someone forgot to create an FTP block policy.&nbsp; One could think they are protected from rouge FTP services transmiting data out of the network, but without constant visibility monitoring, can you be certain?</p>

<p>Some vendors, namely Reflex Security will get you to believe that their IPS / IDS solution that is inline and running in the virtual environment is the right and only approach.&nbsp; Or they will tell you to hang a virtual IDS off a span port in the virtual environment and you will at least have visibility into the attacks that are taking place.&nbsp; Well, sure... You now have attack visibility but at the performance cost of your virtual environment.&nbsp; Signature matching technologies are great, I'm a huge believer; however they don't scale very well in shared computing environments such as virtual ones.&nbsp; IDS systems also don't typically track protocol and network service (FTP, HTTP, etc.) utilizations; which is another important part of visibility.</p>

<p>So, what do we do to gain visibility without the performance headache?&nbsp; Well, for starters its probably best to put your IDS/IPS solutions in the physical environment where performance will be less of a concern.&nbsp; In fact, you can span a virtual switch's traffic out to a physical NIC as easy as you can to a virtual one.&nbsp; So why do it virtual and have to pay a 60% CPU utilization tax?&nbsp; Another solution is to IDS inspect only the things you care about.&nbsp; Why IDS inspect SSL traffic if you know your solution can't unencrypt SSL.&nbsp; Its just a waste of compute cycles isnt it?&nbsp; Policy based switching helps you with directing only the things you care about to an IDS (attack visualization product).&nbsp; Montego's HyperSwitch also can help you with the traffic redirection of only the things you care about. </p>

<p>Another method of visibility which I tend to be a fan of is one of packet analysis (aka NetFlow).&nbsp; NetFlow was invented by Cisco some time ago and has gained popularity in the physical world and definately has a use in the virtual world.&nbsp; NetFlow is lightweight.&nbsp; Let me say that again, its light weight!&nbsp; It only sends a summation of packet detail to an analytical engine which can do some number crunching, packet comparison, etc. etc. to make some sense out of whats going on.&nbsp; <a href="http://www.lancope.com">Lancope</a>, an Atlanta based visibility company that provides Network Visibility, Security Visibility and User Visibility has this tool on their website that is a Netflow Bandwidth calculator.&nbsp; You'll see from playing with this ( <a href="http://www.lancope.com/netflowcalculator.aspx">http://www.lancope.com/netflowcalculator.aspx</a> ) calculator that it doesn't consume a lot of network bandwidth to transmit these network accounting records.&nbsp; It also doesn't cause a lot of CPU overhead to send these records to an analytical engine sitting somewhere in the network.</p>

<p>Lancope's analytical engines have the ability to do the following for you within your virtual environment:</p><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="ProgId" content="PowerPoint.Slide" /><meta name="Generator" content="Microsoft PowerPoint 11" /><title><p>&lt;p&gt;Slide 3&lt;/p&gt;</p></title><meta name="Description" content="7/30/2008" /><style>
.O
	{color:black;
	font-size:149%;}
a:link
	{color:#CC9900 !important;}
a:active
	{color:#9B2D1F !important;}
a:visited
	{color:#96A9A9 !important;}
</style><style media="print">
&amp;lt;!--.sld
	{left:0px !important;
	width:6.0in !important;
	height:4.5in !important;
	font-size:103% !important;}
--&amp;gt;
</style><o:shapelayout v:ext="edit"></o:shapelayout><o:idmap v:ext="edit" data="1"></o:idmap><p:colorscheme colors="#ffffff,#000000,#e9e5dc,#696464,#d34817,#9b2d1f,#cc9900,#96a9a9">&nbsp;</p:colorscheme><p:colorscheme colors="#ffffff,#000000,#e9e5dc,#696464,#d34817,#9b2d1f,#cc9900,#96a9a9"><div v:shape="_x0000_s1026" class="O">

<ol><li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">•</span></span><span style="font-size: 10pt;">Monitor and Alert network behavior of VMs
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">•</span></span><span style="font-size: 10pt;">Track Vmotion movement of VMs accross physical servers</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">•</span></span><span style="font-size: 10pt;">Monitor and Alert on communication between VMs
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">•</span></span><span style="font-size: 10pt;">Identify users accessing VMs
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">•</span></span><span style="font-size: 10pt;">Identify unauthorized or rouge VMs
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">•</span></span><span style="font-size: 10pt;">Monitor and Alert when VM’s go online or offline
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">•</span></span><span style="font-size: 10pt;">Identify network services running on VMs
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">•</span></span><span style="font-size: 10pt;">Monitor Network / Application performance of VMs<br />Display active hosts accessing VMs</span></li></ol>















<div></div>

</div>

</p:colorscheme><p>...and probably a slew of other things I'm not aware of.&nbsp; A screen shot of their product is bellow:</p>

<p><a href="http://vmwaresecurity.typepad.com/.shared/image.html?/photos/uncategorized/2008/07/30/lancopescreen.jpg" onclick="window.open(this.href, '_blank', 'width=800,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img height="187" width="300" border="0" alt="Lancopescreen" title="Lancopescreen" src="http://vmwaresecurity.typepad.com/security_in_the_virtual_w/images/2008/07/30/lancopescreen.jpg" style="margin: 0px 5px 5px 0px; float: left;" /></a> &lt;- Click to enlarge</p>

<p>You'll notice from the screenshot that you are able to visualize who is talking to who, how much traffic they have sent and received and something called a concern index (not seen on this screenshot).</p>

<p>Now, a concern index is a number that increases as Lancopes analytical engines monitor suspicious activity on a session.&nbsp; A high counter can be indicative of a security problem.&nbsp; Its another way of identifying (visualizing) compromised hosts (virtual machines) without having to do signature matching like a heavy weight IPS engine.&nbsp; Example:&nbsp; Lets say you have a VM that has a BOT on it and is &quot;owned&quot;.&nbsp; The Lancope product is monitoring this long life session.&nbsp; Let's say that session is established for several hours or maybe even days or months.&nbsp; Lets also say that the conversation appears to be mostly unidirectional from a public ip address not belonging to your enterprise.&nbsp; Lancope would increase a the concern index on this since this server hasn't typically had this type of behavior.&nbsp; Once the concern index reached a certain level it could then fire off an email, send you a text message or something saying:&nbsp; <strong>Warning, Warning, Danger, Danger Will Robinson!!! You're virtual server may be infected with a BOT, please investigate immediately!!!</strong></p>

<p>This example is VISIBILITY which helps you with SECURITY.&nbsp; There are a number of other things you can do with NetFlow and Lancope products that have less to do with security and more to do with operational efficiencies.&nbsp; Things like, helping you answer questions of:&nbsp; How do I know what network applications are taking up the most bandwidth?&nbsp; When should I move those applications over to a server with more horsepower?&nbsp; When did these VM's vmotion over here and was there a traffic condition / CPU condition that caused that to occur?&nbsp; I could go on and on but thats a topic for another blog entry.</p>

<p>So, my suggestion is to take a look at what NetFlow has to offer.&nbsp; Montego Networks supports NetFlow transmission and Lancope supports NetFlow analytics and with both you can regain what was lost visibility.</p>

<p>I hope this was helpful to you all!</p>

<p>-John Peterson</p></div>
]]></content:encoded>
      <pubDate>Wed, 30 Jul 2008 17:57:06 +0000</pubDate>
      <category domain="http://securityratty.com/tag/network">network</category>
      <category domain="http://securityratty.com/tag/network visibility">network visibility</category>
      <category domain="http://securityratty.com/tag/visibility">visibility</category>
      <category domain="http://securityratty.com/tag/environments">environments</category>
      <category domain="http://securityratty.com/tag/virtual environments network">virtual environments network</category>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/network bandwidth">network bandwidth</category>
      <category domain="http://securityratty.com/tag/bandwidth">bandwidth</category>
      <category domain="http://securityratty.com/tag/virtual">virtual</category>
      <source url="http://feeds.feedburner.com/~r/SecurityInTheVirtualWorld/~3/350982407/security-throug.html">Security Through Visibility - Montego, Lancope and NetFlow</source>
    </item>
    <item>
      <title><![CDATA[Security Through Visibility - Montego, Lancope and NetFlow]]></title>
      <link>http://securityratty.com/article/5b6ed1101dc183f8ebcfa1e481566982</link>
      <guid>http://securityratty.com/article/5b6ed1101dc183f8ebcfa1e481566982</guid>
      <description><![CDATA[We've probably all heard that you can't secure what you can't see and that statement is even more profound when it comes to virtual environments. This is because it is extremely challenging to see...]]></description>
      <content:encoded><![CDATA[
<div xmlns="http://www.w3.org/1999/xhtml"><p>We've probably all heard that you can't secure what you can't see and that statement is even more profound when it comes to virtual environments.&nbsp; This is because it is extremely challenging to see what is going on at a micro vs. macro level within a virtual environments network.&nbsp; The virtualization vendors such as VMWare and Citrix have provided embedded tools into their management consoles that show a macro level of visibility but its not enough to identify security events in the environment.&nbsp; Take a look at the attached picture.&nbsp; It simply shows VMWare's ability to monitor virtual network performance statistics from a bits per second perspective.</p>

<p><a href="http://vmwaresecurity.typepad.com/.shared/image.html?/photos/uncategorized/2008/07/30/performancescreen.jpg" onclick="window.open(this.href, '_blank', 'width=800,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img height="187" width="300" border="0" alt="Performancescreen" title="Performancescreen" src="http://vmwaresecurity.typepad.com/security_in_the_virtual_w/images/2008/07/30/performancescreen.jpg" style="margin: 0px 5px 5px 0px; float: left;" /></a>
<br />&lt;-Click To Enlarge</p>

<p>With only this level of detail how can one determine which network applications are causing spikes.&nbsp; Is it FTP traffic that is occuring at a high volume at an unuseal time of day?&nbsp; If that were occuring, could that be indicative of either a breach or some sort of problem? What if FTP isn't even an authorized service in the virtual environment but there is a high volume of it?&nbsp; Did someone install a rouge FTP service so they could steal information from the server at will? </p>

<p>These types of questions can't really be answered without a micro level of detail into the packets flowing in, out and within the virtual environment.&nbsp; Now, what I am highlighting is not security in the traditional sense of prevention but using visibility as a means to first identify, then pin point the source of an issue so that it can properly be mitigated.&nbsp; Having constant visibility can also ensure that other security products in the environment are performing as expected.&nbsp; What if a Montego HyperSwitch with firewalling enabled is configured with many policies but someone forgot to create an FTP block policy.&nbsp; One could think they are protected from rouge FTP services transmiting data out of the network, but without constant visibility monitoring, can you be certain?</p>

<p>Some vendors, namely Reflex Security will get you to believe that their IPS / IDS solution that is inline and running in the virtual environment is the right and only approach.&nbsp; Or they will tell you to hang a virtual IDS off a span port in the virtual environment and you will at least have visibility into the attacks that are taking place.&nbsp; Well, sure... You now have attack visibility but at the performance cost of your virtual environment.&nbsp; Signature matching technologies are great, I'm a huge believer; however they don't scale very well in shared computing environments such as virtual ones.&nbsp; IDS systems also don't typically track protocol and network service (FTP, HTTP, etc.) utilizations; which is another important part of visibility.</p>

<p>So, what do we do to gain visibility without the performance headache?&nbsp; Well, for starters its probably best to put your IDS/IPS solutions in the physical environment where performance will be less of a concern.&nbsp; In fact, you can span a virtual switch's traffic out to a physical NIC as easy as you can to a virtual one.&nbsp; So why do it virtual and have to pay a 60% CPU utilization tax?&nbsp; Another solution is to IDS inspect only the things you care about.&nbsp; Why IDS inspect SSL traffic if you know your solution can't unencrypt SSL.&nbsp; Its just a waste of compute cycles isnt it?&nbsp; Policy based switching helps you with directing only the things you care about to an IDS (attack visualization product).&nbsp; Montego's HyperSwitch also can help you with the traffic redirection of only the things you care about. </p>

<p>Another method of visibility which I tend to be a fan of is one of packet analysis (aka NetFlow).&nbsp; NetFlow was invented by Cisco some time ago and has gained popularity in the physical world and definately has a use in the virtual world.&nbsp; NetFlow is lightweight.&nbsp; Let me say that again, its light weight!&nbsp; It only sends a summation of packet detail to an analytical engine which can do some number crunching, packet comparison, etc. etc. to make some sense out of whats going on.&nbsp; <a href="http://www.lancope.com">Lancope</a>, an Atlanta based visibility company that provides Network Visibility, Security Visibility and User Visibility has this tool on their website that is a Netflow Bandwidth calculator.&nbsp; You'll see from playing with this ( <a href="http://www.lancope.com/netflowcalculator.aspx">http://www.lancope.com/netflowcalculator.aspx</a> ) calculator that it doesn't consume a lot of network bandwidth to transmit these network accounting records.&nbsp; It also doesn't cause a lot of CPU overhead to send these records to an analytical engine sitting somewhere in the network.</p>

<p>Lancope's analytical engines have the ability to do the following for you within your virtual environment:</p><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="ProgId" content="PowerPoint.Slide" /><meta name="Generator" content="Microsoft PowerPoint 11" /><title><p>&lt;p&gt;Slide 3&lt;/p&gt;</p></title><meta name="Description" content="7/30/2008" /><style>
.O
	{color:black;
	font-size:149%;}
a:link
	{color:#CC9900 !important;}
a:active
	{color:#9B2D1F !important;}
a:visited
	{color:#96A9A9 !important;}
</style><style media="print">
&amp;lt;!--.sld
	{left:0px !important;
	width:6.0in !important;
	height:4.5in !important;
	font-size:103% !important;}
--&amp;gt;
</style><o:shapelayout v:ext="edit"></o:shapelayout><o:idmap v:ext="edit" data="1"></o:idmap><p:colorscheme colors="#ffffff,#000000,#e9e5dc,#696464,#d34817,#9b2d1f,#cc9900,#96a9a9">&nbsp;</p:colorscheme><p:colorscheme colors="#ffffff,#000000,#e9e5dc,#696464,#d34817,#9b2d1f,#cc9900,#96a9a9"><div v:shape="_x0000_s1026" class="O">

<ol><li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">???</span></span><span style="font-size: 10pt;">Monitor and Alert network behavior of VMs
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">???</span></span><span style="font-size: 10pt;">Track Vmotion movement of VMs accross physical servers</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">???</span></span><span style="font-size: 10pt;">Monitor and Alert on communication between VMs
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">???</span></span><span style="font-size: 10pt;">Identify users accessing VMs
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">???</span></span><span style="font-size: 10pt;">Identify unauthorized or rouge VMs
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">???</span></span><span style="font-size: 10pt;">Monitor and Alert when VM???s go online or offline
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">???</span></span><span style="font-size: 10pt;">Identify network services running on VMs
</span></li>

<li><span style="font-size: 56%;"><span style="position: absolute; left: -0.85%;">???</span></span><span style="font-size: 10pt;">Monitor Network / Application performance of VMs<br />Display active hosts accessing VMs</span></li></ol>















<div></div>

</div>

</p:colorscheme><p>...and probably a slew of other things I'm not aware of.&nbsp; A screen shot of their product is bellow:</p>

<p><a href="http://vmwaresecurity.typepad.com/.shared/image.html?/photos/uncategorized/2008/07/30/lancopescreen.jpg" onclick="window.open(this.href, '_blank', 'width=800,height=500,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img height="187" width="300" border="0" alt="Lancopescreen" title="Lancopescreen" src="http://vmwaresecurity.typepad.com/security_in_the_virtual_w/images/2008/07/30/lancopescreen.jpg" style="margin: 0px 5px 5px 0px; float: left;" /></a> &lt;- Click to enlarge</p>

<p>You'll notice from the screenshot that you are able to visualize who is talking to who, how much traffic they have sent and received and something called a concern index (not seen on this screenshot).</p>

<p>Now, a concern index is a number that increases as Lancopes analytical engines monitor suspicious activity on a session.&nbsp; A high counter can be indicative of a security problem.&nbsp; Its another way of identifying (visualizing) compromised hosts (virtual machines) without having to do signature matching like a heavy weight IPS engine.&nbsp; Example:&nbsp; Lets say you have a VM that has a BOT on it and is &quot;owned&quot;.&nbsp; The Lancope product is monitoring this long life session.&nbsp; Let's say that session is established for several hours or maybe even days or months.&nbsp; Lets also say that the conversation appears to be mostly unidirectional from a public ip address not belonging to your enterprise.&nbsp; Lancope would increase a the concern index on this since this server hasn't typically had this type of behavior.&nbsp; Once the concern index reached a certain level it could then fire off an email, send you a text message or something saying:&nbsp; <strong>Warning, Warning, Danger, Danger Will Robinson!!! You're virtual server may be infected with a BOT, please investigate immediately!!!</strong></p>

<p>This example is VISIBILITY which helps you with SECURITY.&nbsp; There are a number of other things you can do with NetFlow and Lancope products that have less to do with security and more to do with operational efficiencies.&nbsp; Things like, helping you answer questions of:&nbsp; How do I know what network applications are taking up the most bandwidth?&nbsp; When should I move those applications over to a server with more horsepower?&nbsp; When did these VM's vmotion over here and was there a traffic condition / CPU condition that caused that to occur?&nbsp; I could go on and on but thats a topic for another blog entry.</p>

<p>So, my suggestion is to take a look at what NetFlow has to offer.&nbsp; Montego Networks supports NetFlow transmission and Lancope supports NetFlow analytics and with both you can regain what was lost visibility.</p>

<p>I hope this was helpful to you all!</p>

<p>-John Peterson</p></div>
]]></content:encoded>
      <pubDate>Wed, 30 Jul 2008 17:57:06 +0000</pubDate>
      <category domain="http://securityratty.com/tag/network">network</category>
      <category domain="http://securityratty.com/tag/network visibility">network visibility</category>
      <category domain="http://securityratty.com/tag/visibility">visibility</category>
      <category domain="http://securityratty.com/tag/environments">environments</category>
      <category domain="http://securityratty.com/tag/virtual environments network">virtual environments network</category>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/network bandwidth">network bandwidth</category>
      <category domain="http://securityratty.com/tag/bandwidth">bandwidth</category>
      <category domain="http://securityratty.com/tag/virtual">virtual</category>
      <source url="http://vmwaresecurity.typepad.com/security_in_the_virtual_w/2008/07/security-throug.html">Security Through Visibility - Montego, Lancope and NetFlow</source>
    </item>
    <item>
      <title><![CDATA[Controlling column width in a GridView]]></title>
      <link>http://securityratty.com/article/ae0aa0fbe27711f6caa8fb16924a9208</link>
      <guid>http://securityratty.com/article/ae0aa0fbe27711f6caa8fb16924a9208</guid>
      <description><![CDATA[I've been building some internal pages for our sales team here at Pluralsight , and many of those pages make use of the ASP.NET GridView control to display rectangular data. It's generally a really...]]></description>
      <content:encoded><![CDATA[<p>I&#39;ve been building some internal pages for our sales team here at <a href="http://www.pluralsight.com/main/" target="_blank">Pluralsight</a>, and many of those pages make use of the ASP.NET GridView control to display rectangular data. It&#39;s generally a really easy to use control, but I&#39;ve always struggled with getting column widths to look right.</p>  <p>My goal is to fix the width of each column at design time, and any field that contains text that may be longer than my fixed width should wrap around, taking up more vertical space in the table. If you are trying to accomplish this goal, you might find these tips helpful.</p>  <blockquote>   <p>1) Set up a CssClass for the GridView itself and include the <a href="http://www.w3.org/TR/REC-CSS2/tables.html#fixed-table-layout" target="_blank">table-layout:fixed</a> style. This tells the browser that you&#39;re going to specify the width of each cell. You may also want to include the overall width of the grid here as I mention in (3).</p>    <p>2) The first row of the table sets the width for each cell, and that&#39;s usually the HEADER row, not the item row, so use either HeaderStyle-CssClass or HeaderStyle-Width to set the width of the cell. I wasted a lot of time trying to set the width using the ItemStyle.</p>    <p>3) Make certain the table itself is wide enough to hold all of the cells. I added up all of my cell widths and used that to set the width via the CssClass attribute on the GridView.</p> </blockquote>  <p>Using these guidelines, I&#39;m having much better luck controlling the layout of my GridView controls. I hope this simple advise helps someone else!</p><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52286" width="1" height="1">]]></content:encoded>
      <pubDate>Wed, 30 Jul 2008 13:23:27 +0000</pubDate>
      <category domain="http://securityratty.com/tag/width">width</category>
      <category domain="http://securityratty.com/tag/gridview">gridview</category>
      <category domain="http://securityratty.com/tag/fixed width">fixed width</category>
      <category domain="http://securityratty.com/tag/gridview controls">gridview controls</category>
      <category domain="http://securityratty.com/tag/net gridview control">net gridview control</category>
      <category domain="http://securityratty.com/tag/column">column</category>
      <category domain="http://securityratty.com/tag/control">control</category>
      <category domain="http://securityratty.com/tag/table">table</category>
      <category domain="http://securityratty.com/tag/row">row</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/07/30/controlling-column-width-in-a-gridview.aspx">Controlling column width in a GridView</source>
    </item>
    <item>
      <title><![CDATA[Speaking of Security Podcast #114]]></title>
      <link>http://securityratty.com/article/ec60f9a9867a5ba85716c819cc65402e</link>
      <guid>http://securityratty.com/article/ec60f9a9867a5ba85716c819cc65402e</guid>
      <description><![CDATA[Click to Download/Listen (05:51

New co-host Amanda Van Veen interviews Linda Lynch, RSA Conference Europe Manager, about this year's Conference in October. Learn about the early bird registration...]]></description>
      <content:encoded><![CDATA[<a href="http://www.rsa.com/blog/blog_entry.aspx?id=1312">Click to Download/Listen</a> (05:51)<br>
<br />
New co-host Amanda Van Veen interviews Linda Lynch, RSA&reg; Conference Europe Manager, about this year's Conference in October. Learn about the early bird registration special as well as other helpful travel hints and session highlights. Register today: <a href="http://www.rsaconference.com/2008/Europe" target="_blank">www.rsaconference.com/2008/europe</a>.<br /><br />]]></content:encoded>
      <pubDate>Mon, 21 Jul 2008 13:00:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/helpful travel hints">helpful travel hints</category>
      <category domain="http://securityratty.com/tag/co-host amanda van">co-host amanda van</category>
      <category domain="http://securityratty.com/tag/interviews linda lynch">interviews linda lynch</category>
      <category domain="http://securityratty.com/tag/bird registration special">bird registration special</category>
      <category domain="http://securityratty.com/tag/session highlights">session highlights</category>
      <category domain="http://securityratty.com/tag/october">october</category>
      <category domain="http://securityratty.com/tag/register">register</category>
      <category domain="http://securityratty.com/tag/click">click</category>
      <category domain="http://securityratty.com/tag/rsaconference">rsaconference</category>
      <source url="http://www.rsa.com/blog/blog_entry.aspx?id=1312">Speaking of Security Podcast #114</source>
    </item>
  </channel>
</rss>
