<?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>Web Admin Blog &#187; application</title>
	<atom:link href="http://www.webadminblog.com/index.php/tag/application/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webadminblog.com</link>
	<description>Real Web Admins.  Real World Experience.</description>
	<lastBuildDate>Wed, 25 May 2011 03:02:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Building an In-House Application Security Assessment Team</title>
		<link>http://www.webadminblog.com/index.php/2009/11/13/building-an-in-house-application-security-assessment-team/</link>
		<comments>http://www.webadminblog.com/index.php/2009/11/13/building-an-in-house-application-security-assessment-team/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 19:05:04 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[OWASP AppSec DC 2009]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[assessment]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[contractor]]></category>
		<category><![CDATA[in-house]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=340</guid>
		<description><![CDATA[This presentation was by Keith Turpin from The Boeing Company.   About three years ago, all of Boeing's assessments were coming from outsourced service providers.  They realized that they were unable to have control over the people and process and had difficulties integrating the controls into the SDLC and decided to bring these functions in house.  [...]]]></description>
			<content:encoded><![CDATA[<p>This presentation was by Keith Turpin from The Boeing Company.   About three years ago, all of Boeing's assessments were coming from outsourced service providers.  They realized that they were unable to have control over the people and process and had difficulties integrating the controls into the SDLC and decided to bring these functions in house.  The goal of this presentation is to show some of the issues they ran into and how they addressed those problems.  My notes from the presentation are below:</p>
<p><span style="text-decoration: underline;"><strong>Contraced Services Considerations</strong></span></p>
<ul>
<li>Some Advantages:
<ul>
<li>Highly skilled</li>
<li>Established tools, processes, and standards</li>
<li>Unbiased</li>
<li>Available as needed</li>
</ul>
</li>
<li>Some Disadvantages:
<ul>
<li>Expensive, especially for an extended engagement</li>
<li>Less control and flexibility</li>
<li>Not familiar with company processes and culture</li>
<li>Rotating staff</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Planning</strong></span></p>
<ul>
<li>Considerations for establishing an internal team:
<ul>
<li>Time to staff and train the team</li>
<li>Overlap of external and internal teams</li>
<li>Development of processes and standards</li>
<li>Acquiring necessary tools</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Service Model</strong></span></p>
<ul>
<li>Define the services your team will provide.  This will be greatly influenced by:
<ul>
<li>The team's size and skills</li>
<li>The number of applications you have to support</li>
<li>The tools available</li>
<li>The level of executive support</li>
<li>The funding model
<ul>
<li>Who pays for your services</li>
</ul>
</li>
<li>The team's role
<ul>
<li>Development support, pre-deployment testing or post deployment auditing and pen testing</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><span id="more-340"></span></p>
<p><span style="text-decoration: underline;"><strong>Staffing the Team</strong></span></p>
<ul>
<li>Decide how to staff your team and what skills you need.  Possible candidates include:
<ul>
<li>Experienced Application Testers
<ul>
<li>This is ideal from a skills standpoint, but people in this category may be harder to find, cost more, may not be familiar with your company and or fit its culture.</li>
</ul>
</li>
<li>Experienced Developers
<ul>
<li>Developers will have a good understanding of the technologies, but may not understand security principles.  Their focus is on what an application is intended to do, not what it can be made to do.</li>
</ul>
</li>
<li>Other IT Security Professionals
<ul>
<li>They have a good understanding of security principles, but may lack specific technical skills.  However, some skills may provide a useful overlap, like experienced OS or network testers.</li>
</ul>
</li>
<li>Service and Project Managers
<ul>
<li>Building a new team, defining processes and standards, managing work flow and handling customer relations requires a set of skills as important, but distinct, from technical testing skills.</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Selecting Tools</strong></span></p>
<ul>
<li>There are a lot of options when it comes to tools.  What you choose depends on the services you want to provide, your team's skills and your budget.
<ul>
<li>Commercial vs. Free or Low Cost Tools
<ul>
<li>Commercial tools scale to support enterprise use, utilize a higher degree of automation and come with product support.  They also come with a big price tag.</li>
<li>Open source and low cost tools allow for more customization, and are free or inexpensive, usually have a supportive user community, but often require a higher degree of user knowledge and skill.</li>
</ul>
</li>
<li>Types of Tools
<ul>
<li>Vulnerability Scanners
<ul>
<li>Commercial examples include IBM AppScan, HP WebInspect and Cenzic Hailstorm</li>
</ul>
</li>
<li>Source Code Analysis
<ul>
<li>There are commercial options like Fortify or open source tools like the OWASP Yasca Project</li>
</ul>
</li>
<li>Client Side Web Proxies
<ul>
<li>Options include WebScarab, Burp Suite and Charles Proxy</li>
</ul>
</li>
<li>Other Tools
<ul>
<li>These include password crackers, hex editors, text extractors, browser plug-ins, integrated development environments, network mapping, network traffic analysis, and exploitation tools</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>What to Assess</strong></span></p>
<ul>
<li>Measuring an application's risk:
<ul>
<li>The Types of Users
<ul>
<li>Privileged Users, employees, suppliers, customers or the general public</li>
</ul>
</li>
<li>The Sensitivity of the Data
<ul>
<li>Intellectual Property, PII or other regulatory requirements</li>
</ul>
</li>
<li>Availability and Integrity Requirements
<ul>
<li>The impact to the business if compromised</li>
</ul>
</li>
<li>Technology and Environmental Consideration
<ul>
<li>What technologies are used, where is it deployed,...</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Gather Necessary Information</strong></span></p>
<ul>
<li>Before starting an assessment you will need to gather important information:
<ul>
<li>Application contacts</li>
<li>Server contacts</li>
<li>The process for getting accounts</li>
<li>A description of what the application does</li>
<li>The description or diagram of the system architecture</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Assessment Planning Meeting</strong></span></p>
<ul>
<li>Meet with the application development and support teams:
<ul>
<li>Get a demonstration of the application</li>
<li>Review the information gathered to support the assessment</li>
<li>Discuss the testing process and ground rules
<ul>
<li>No changes to the code during testing</li>
<li>Backups of the application servers and databases</li>
<li>How to address system crashes during testing</li>
<li>Database corruption issues</li>
<li>Emails generated by the application</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Testing Notifications</strong></span></p>
<ul>
<li>You should have a process to notify affected parties before the actual testing begins.
<ul>
<li>Key system contacts</li>
<li>Intrusion detection teams</li>
<li>Other assessors</li>
</ul>
</li>
<li>Information to include in the notification:
<ul>
<li>Source IP addresses</li>
<li>Target IP addresses, URL, system name</li>
<li>Testing schedule</li>
<li>Assessment team contacts</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Conducting the Assessment</strong></span></p>
<ul>
<li>If you are using automated scanning tools, beware of false positives and negatives
<ul>
<li>Pattern recognition has limitations</li>
<li>Combine various testing methods
<ul>
<li>Automated scanning</li>
<li>Code review</li>
<li>Manual testing</li>
</ul>
</li>
<li>Learn what your tools do and do not do well</li>
<li>Validate every finding</li>
<li>Keep detailed notes</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Establish Standards</strong></span></p>
<ul>
<li>Assessments performed by two different people or the same person over time, may result in the same finding being presented very differently
<ul>
<li>This may result in inconsistent descriptions of the vulnerability or different recommendations for remediation</li>
<li>Without standard findings you may also find it difficult to produce meaningful metrics about discovered vulnerabilities</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Standard Findings</strong></span></p>
<ul>
<li>Opinions about how to standardize software vulnerabilities are like noses, everyone has one.</li>
<li>At Boeing we have categorized vulnerabilities into approximately 70 standard findings like:
<ul>
<li>SQL Injection</li>
<li>Path Traversal</li>
<li>Session Fixation</li>
<li>Excessive Authentication Attempts</li>
<li>Forced Browsing</li>
<li>System information Leakage</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Data Elements for Standard Findings</strong></span></p>
<ul>
<li>Each finding is made up of the following data elements:
<ul>
<li>Name</li>
<li>Control Classification</li>
<li>Severity (Likelihood + Impact)</li>
<li>Company Policy References</li>
<li>Industry References</li>
<li>Summary Description (one sentence)</li>
<li>Impact Statement (one sentence)</li>
<li>Detailed Description (basic introduction to vulnerability + detailed description of how it manifests within their application)</li>
<li>Recommendation (standard remediation recommendations tied into SDLC practices)</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Control Classifications</strong></span></p>
<ul>
<li>We group individual vulnerabilities into control classifications.  This helps us determine how effective we are at implementing control types.</li>
<li>Our classifications:
<ul>
<li>Input and output controls</li>
<li>Authentication and password management</li>
<li>Authorization and access management</li>
<li>Sensitive information storage or transmission</li>
<li>System configuration and management</li>
<li>General coding errors</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Reporting Findings</strong></span></p>
<ul>
<li>Developing a standardized reporting template will allow you to deliver a consistent, branded message
<ul>
<li>Cover Page
<ul>
<li>Provides information necessary to identify the assessment, what was assessed and who the key people were</li>
</ul>
</li>
<li>Executive Summary</li>
<li>Findings Summary</li>
<li>Detailed Findings</li>
<li>Conclusion
<ul>
<li>Summary of assessment results, discussion of next steps and links to additional resources</li>
</ul>
</li>
<li>Appendixes
<ul>
<li>Information on how severity ratings are determined, description of control classifications</li>
</ul>
</li>
<li>Attachments
<ul>
<li>Typically raw scan files</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Managing Corrective Actions</strong></span></p>
<ul>
<li>Once a report is issued you need a closed loop process to ensure serious issues are addressed.  Considerations include:
<ul>
<li>Tracking Findings:
<ul>
<li>Critical and high findings should be tracked to resolution</li>
<li>Medium findings are less straight forward</li>
<li>Low or informational findings may not be value added</li>
</ul>
</li>
<li>Customer Responses to Findings:
<ul>
<li>Implement a technical fix to address the finding</li>
<li>Implement a process fix to address the finding</li>
<li>The business formally accepts the risk of not remediating</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>When to Re-Evaluate an Application</strong></span></p>
<ul>
<li>Depending on the number of applications you support and the frequency with which they change you may need to establish re-evaluation guidelines.  Soem criteria to consider include:
<ul>
<li>Fixes to previously accepted risk</li>
<li>User population changes</li>
<li>Data sensitivity changes</li>
<li>Business's dependency on the application has increased</li>
<li>Authentication mechanism has changed</li>
<li>Authorization mechanism has changed</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Application Assessment Process Flow Version</strong></span></p>
<ul>
<li>Create a document that shows the process flow for both requested and targeted assessment (ask for document from presenter?)</li>
<li>Formal closure process</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Conclusion</strong></span></p>
<ul>
<li>Building an assessment team from the ground up takes:
<ul>
<li>Executive Support</li>
<li>A lot of planning</li>
<li>Staffing</li>
<li>The right tools</li>
<li>Training</li>
<li>Standards</li>
<li>Supporting Processes</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2009/11/13/building-an-in-house-application-security-assessment-team/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OWASP Top 10 &#8211; 2010</title>
		<link>http://www.webadminblog.com/index.php/2009/11/13/owasp-top-10-2010/</link>
		<comments>http://www.webadminblog.com/index.php/2009/11/13/owasp-top-10-2010/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 16:25:53 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[OWASP AppSec DC 2009]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[broken]]></category>
		<category><![CDATA[critical]]></category>
		<category><![CDATA[cross]]></category>
		<category><![CDATA[direct]]></category>
		<category><![CDATA[forgery]]></category>
		<category><![CDATA[forwards]]></category>
		<category><![CDATA[injection]]></category>
		<category><![CDATA[insecure]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[misconfiguration]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[owasp]]></category>
		<category><![CDATA[redirects]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[request]]></category>
		<category><![CDATA[risks]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[top 10]]></category>
		<category><![CDATA[unvalidated]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=336</guid>
		<description><![CDATA[This presentation was by Dave WIchers, COO of Aspect Security and an OWASP Board Member.  My notes are below: What's Changed? It's about Risks, not just vulnerabilities New title is: "The Top 10 Most Critical Web Application Security Risks" OWASP Top 10 Risk Rating Methodology Based on the OWASP Risk Rating Methodology, used to prioritize [...]]]></description>
			<content:encoded><![CDATA[<p>This presentation was by Dave WIchers, COO of Aspect Security and an OWASP Board Member.  My notes are below:</p>
<p><span style="text-decoration: underline;"><strong>What's Changed?</strong></span></p>
<ul>
<li>It's about Risks, not just vulnerabilities
<ul>
<li>New title is: "The Top 10 Most Critical Web Application Security Risks"</li>
</ul>
</li>
<li>OWASP Top 10 Risk Rating Methodology
<ul>
<li>Based on the OWASP Risk Rating Methodology, used to prioritize Top 10</li>
</ul>
</li>
<li>2 Risks Added, 2 Dropped
<ul>
<li>Added: A6 - Security Misconfiguration
<ul>
<li>Was A10 in 2004 Top 10: Insecure Configuration Management</li>
</ul>
</li>
<li>Added: A8 - Unvalidated Redirects and Forwards
<ul>
<li>Relatively common and VERY dangerous flaw that is not well know</li>
</ul>
</li>
<li>Removed: A3 - Malicious File Execution
<ul>
<li>Primarily a PHP flaw that is dropping in prevalence</li>
</ul>
</li>
<li>Removed: A6 - Information Leakage and Improper Error Handling
<ul>
<li>A very prevalent flaw, that does not introduce much risk (normally)</li>
</ul>
</li>
</ul>
</li>
</ul>
<ol>
<li><strong>A1- </strong><strong>Injection: </strong>Tricking an application into including unintended commands in the data sent to an interpreter. (http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet)</li>
<li><strong>A2 - Cross Site Scripting (XSS):</strong> Raw data from attacker is sent to an innocent user's browser.  For large chunks of user supplied HTML, use OWASP's AntiSamy to sanitize this HTML to make it safe.  (http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet)</li>
<li><strong>A3 - Broken Authentication and Session Management:</strong> Means credentials have to go with every request.  Should use SSL for everything requiring authentication.</li>
<li><strong>A4 - Insecure Direct Object Reference:</strong> This is part of enforcing proper "Authorization", along with A7 - Failure to Restrict URL Access.</li>
<li><strong>A5 - Cross Site Request Forgery (CSRF):</strong> An attack where the victim's browser is tricked into issuing a command to a vulnerable web application.  Vulnerability is caused by browsers automatically including user authentication data with each request.  (Check out OWASP CSRFGuard, OWASP CSRFTester, http://www.owasp.org/index.php/CSRF_Prevention_Cheat_Sheet)</li>
<li><strong>A6 - Security Misconfiguration:</strong> All through the network and platform.  Don't forget the development environment.  Think of all the places your source code goes.  All credentials should change in production.</li>
<li><strong>A7 - Failure to Restrict URL Access:</strong> This is part of enforcing proper "authorization", along with A4 - Insecure Direct Object References.</li>
<li><strong>A8 - Unvalidated Redirects and Forwards:</strong> Web application redirects are very common and frequently include user supplied parameters in the destination URL.  If they aren't validated, attacker can send victim to a site of their choice.</li>
<li><strong>A9 - Insecure Cryptographic Storage:</strong> Storing sensitive data insecurely.  Failure to identify all sensitive data.  Failure to identify all the places that this sensitive data gets stored.  Failure to properly protect this data in every location.</li>
<li><strong>A10 - Insufficient Transport Layer Protection</strong></li>
</ol>
<p><span style="text-decoration: underline;"><strong>OWASP Top 10 Risk Rating Methodology</strong></span></p>
<ul>
<li>Attack Vector (How hard for an attacker to use this flaw - 1 (Easy), 2 (Average), 3 (Difficult))</li>
<li>Weakness Prevalence (How often is it found - 1 (Widespread), 2 (Common), 3 (Uncommon))</li>
<li>Weakness Detectability (How hard is it for an attacker to find the flaw - 1 (Easy),  2 (Average), 3 (Difficult))</li>
<li>Technical Impact (1 (Severe), 2 (Moderate), 3 (Minor))</li>
</ul>
<p>This is generic across the internet, not specific to any organization.</p>
<p>Started a new "Prevention Cheatsheet Series" that the Top 10 references (XSS, SQL Injection, Transport Layer Security, CSRF, Direct Object Reference).</p>
<p>What is actually being released is RC1 of the Top 10 and they are encouraging people to provide comments through the end of the year and then use that feedback to post the final Top 10 in January 2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2009/11/13/owasp-top-10-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Application Security Metrics from the Organization on Down to the Vulnerabilities</title>
		<link>http://www.webadminblog.com/index.php/2009/11/13/application-security-metrics-from-the-organization-on-down-to-the-vulnerabilities/</link>
		<comments>http://www.webadminblog.com/index.php/2009/11/13/application-security-metrics-from-the-organization-on-down-to-the-vulnerabilities/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 15:35:08 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[Metrics]]></category>
		<category><![CDATA[OWASP AppSec DC 2009]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[attack]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[probability]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[vulnerability]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=334</guid>
		<description><![CDATA[This presentation was by Chris Wysopal, the CTO of Veracode.  My notes are below: "To measure is to know." - James Clerk Maxwell "Measurement motivates." - John Kenneth Galbraith Metrics do Matter Metrics quantify the otherwise unquantifiable Metrics can show trends and trends matter more than measurements do Metrics can show if we are doing [...]]]></description>
			<content:encoded><![CDATA[<p>This presentation was by Chris Wysopal, the CTO of Veracode.  My notes are below:</p>
<p>"To measure is to know." - James Clerk Maxwell</p>
<p>"Measurement motivates." - John Kenneth Galbraith</p>
<p><span style="text-decoration: underline;"><strong>Metrics do Matter</strong></span></p>
<ol>
<li>Metrics quantify the otherwise unquantifiable</li>
<li>Metrics can show trends and trends matter more than measurements do</li>
<li>Metrics can show if we are doing a good job or bad job</li>
<li>Metrics can show if you have no idea where you are</li>
<li>Metrics establish where "You are here" really is</li>
<li>Metrics build bridges to managers</li>
<li>Metrics allow cross sectional comparisons</li>
<li>Metrics set targets</li>
<li>Metrics benchmark yourself against the opposition</li>
<li>Metrics create curiosity</li>
</ol>
<p><span style="text-decoration: underline;"><strong>Metrics Don't Matter (Mike Rothman)<br />
</strong></span></p>
<ul>
<li>It is too easy to count things for no purpose other than to count them</li>
<li>You cannot measure security so stop</li>
<li>This following is all that matters and you can't map security metrics to them:
<ul>
<li>Maintenance of availability</li>
<li>Preservation of wealth</li>
<li>Limitation on corporate liability</li>
<li>Compliance</li>
<li>Shepherding the corporate brand</li>
</ul>
</li>
<li>Cost of measurement not worth the benefit</li>
</ul>
<p>Bad metrics are worse than no metrics</p>
<p><span style="text-decoration: underline;"><strong>Security Metrics Can Drive Executive Decision Making</strong></span></p>
<ul>
<li>How secure am I?</li>
<li>Am I better off than this time last year?</li>
<li>Am I spending the right about of money?</li>
<li>How do I compare to my peers?</li>
<li>What risk transfer options to I have?</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Goals of Application Security Metrics</strong></span></p>
<ul>
<li>Provide quantifiable information to support enterprise risk management and risk-based decision making</li>
<li>Articulate progress towards goals and objectives</li>
<li>Provides a repeatable, quantifiable way to assess, compare, and track improvements in assurance</li>
<li>Focus activities on risk mitigation in order of priority and exploitability</li>
<li>Facilitate adoption and improvement of secure software design and development processes</li>
<li>Provide and objective means of comparing and benchmarking projects, divisions, organizations, and vendor products</li>
</ul>
<p><span id="more-334"></span></p>
<p><span style="text-decoration: underline;"><strong>Use Enumerations</strong></span></p>
<ul>
<li>Enumerations help identify specific software-related items that can be counted, aggregated, evaluated over time</li>
<li>CVE - Common Vulnerabilities and Exposures</li>
<li>CWE - Common Weakness Enumeration</li>
<li>CAPEC - Common Attack Pattern Enumeration and Classification</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Organizational Metrics</strong></span></p>
<ul>
<li>Percentage of application inventory developed with SDLC (which version of SDLC?)</li>
<li>Business criticality of each application in inventory</li>
<li>Percentage of application inventory tested for security (what level of testing?)</li>
<li>Percentage of application inventory remediated and meeting assurance requirements</li>
<li>Roll up of testing results</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Organizational Metrics</strong></span></p>
<ul>
<li>Cost to fix defects at different points in the software lifecycle</li>
<li>Cost of data breaches related to software vulnerabilities</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Testing Metrics</strong></span></p>
<ul>
<li>Number of threats identified in threat model</li>
<li>Size of attack surface identified</li>
<li>Percentage code coverage (static and dynamic)</li>
<li>Coverage of defect categories (CWE)</li>
<li>Coverage of attack pattern categories (CAPEC)</li>
</ul>
<p>SANS Top 25 Mapped to Application Security Methods (CWE, Title, Education?, Manual Process?, Tools?, Threat Model?)</p>
<p>Weakness Class Prevalence based on 2008 CVE data (Mitre?)</p>
<p><span style="text-decoration: underline;"><strong>Basic Metrics: Defect Counts</strong></span></p>
<ul>
<li>Design and implementation defects
<ul>
<li>CWE identifier</li>
<li>CVSS score</li>
<li>Severity</li>
<li>Likelihood of exploit</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Automated Code Analysis Techniques</strong></span></p>
<ul>
<li>Static Analysis (White Box Testing)</li>
<li>Dynamic Analysis (Black Box Testing)</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Manual Analysis</strong></span></p>
<ul>
<li>Manual Penetration Testing</li>
<li>Manual Code Review</li>
<li>Manual Design Review</li>
<li>Threat Modeling</li>
</ul>
<p><span style="text-decoration: underline;"><strong>WASC Web Application Security Statistics Project 2008</strong></span></p>
<ul>
<li>Goals
<ul>
<li>Identify the prevalence and probability of different vulnerability classes</li>
<li>Compare testing methodologies against what types of vulnerabilities they are likely to identify</li>
</ul>
</li>
<li>Summary
<ul>
<li>12186 web applications with 97554 detected vulnerabilities</li>
<li>More than 13% of all reviewed sites can be compromised completely automatically</li>
<li>About 49% of web applications contain vulnerabilities of high risk level detected by scanning</li>
<li>Manual and automated assessment by white box method allows to detect these high risk level vulnerabilities with the probability up to 80-96%</li>
<li>99% of web applications are not compliant with PCI DSS standard</li>
</ul>
</li>
<li>Compare to 2007 WASC Project
<ul>
<li>Number of sites with SQL Injection fell by 13%</li>
<li>Number of sites with Cross-site Scripting fell 20%</li>
<li>Number of sites with different types of Information Leakage rose by 24%</li>
<li>Probability to compromise a host automatically rose from 7 to 13%</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2009/11/13/application-security-metrics-from-the-organization-on-down-to-the-vulnerabilities/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The ESAPI Web Application Firewall</title>
		<link>http://www.webadminblog.com/index.php/2009/11/12/the-esapi-web-application-firewall/</link>
		<comments>http://www.webadminblog.com/index.php/2009/11/12/the-esapi-web-application-firewall/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 20:55:54 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[OWASP AppSec DC 2009]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[esapi]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[owasp]]></category>
		<category><![CDATA[waf]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=309</guid>
		<description><![CDATA[This presentation was by Arshan Dabirsiaghi and was about the OWASP ESAPI Web Application Firewall (WAF) project.  My notes are below: WAF Fallacies (at least in regards to OWASP ESAPI WAF) WAFs add attack surface WAFs can create culture problems WAFs can't fix business logic vulnerabilities WAFs are way too expensive WAFs complicate networks Why [...]]]></description>
			<content:encoded><![CDATA[<p>This presentation was by Arshan Dabirsiaghi and was about the OWASP ESAPI Web Application Firewall (WAF) project.  My notes are below:</p>
<p><span style="text-decoration: underline;"><strong>WAF Fallacies (at least in regards to OWASP ESAPI WAF)</strong></span></p>
<ul>
<li>WAFs add attack surface</li>
<li>WAFs can create culture problems</li>
<li>WAFs can't fix business logic vulnerabilities</li>
<li>WAFs are way too expensive</li>
<li>WAFs complicate networks</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Why fix in ESAPI WAF vs Fix in code?</strong></span></p>
<ul>
<li>Changing in ESAPI WAF is just a text file</li>
<li>Shorter gap between time discovered and WAF fix vs code fix</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Advantages of WAF</strong></span></p>
<ul>
<li>Performance - Only your rules are checked, plus state is already managed by the app server</li>
<li>Capability - being closer to the app lets us do more</li>
<li>Process - Rules are closer to application owner, shortening discovery-to-patch time, also fix-to-patch-removal time</li>
</ul>
<p>Principle: Make common tasks easy, uncommon tasks possible</p>
<p>General virtual patching functionality is easy to understand</p>
<p>Ability to write custom script rules as well "bean-shell-rules"<br />
Fixing Injection Flaws is easy</p>
<p>Can fix business logic flaws with the WAF (missing authentication, missing functional access control, missing data layer access control)</p>
<p>Can add "outbound" security as well</p>
<ul>
<li>Add anti-clickjacking header</li>
<li>Set uniform content-type</li>
<li>Add HttpOnly flag</li>
<li>Add secure flag</li>
<li>Detect outbound information</li>
<li>Replace outbound information</li>
</ul>
<p>Takes advantage of early failing to make rules as optimized as possible</p>
<p>Now we see the tool demonstrated with several different vulnerabilities in a real-world application (JForum):</p>
<ul>
<li>Cross-Site Scripting Flaw (JForum XSS flaw is unable to be fixed with a WAF because of dynamic URLs)</li>
<li>Unchecked Redirect</li>
<li>Add HttpOnly</li>
<li>Add anti-clickjacking header</li>
<li>Privilege escalation</li>
</ul>
<p><span style="text-decoration: underline;"><strong>3 Different WAF Modes</strong></span></p>
<ul>
<li>Log</li>
<li>Block</li>
<li>Redirect</li>
</ul>
<p>Latency with all of the rules turned on is about 5%.  With selected rules is closer to 0%.  Basically an order of n magnitude where n is the number of rules enabled.  Comes out to milliseconds.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2009/11/12/the-esapi-web-application-firewall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enterprise Application Security &#8211; GE&#8217;s Approach to Solving Root Cause</title>
		<link>http://www.webadminblog.com/index.php/2009/11/12/enterprise-application-securit/</link>
		<comments>http://www.webadminblog.com/index.php/2009/11/12/enterprise-application-securit/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 16:30:28 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[OWASP AppSec DC 2009]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[ge]]></category>
		<category><![CDATA[metrics]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=299</guid>
		<description><![CDATA[The first presentation of the day that I went to  was by GE's Darren Challey and was about GE's application security program and how he took a holistic approach to securing the enterprise.  My notes on this presentation are below: Why is AppSec so hard? AppSec changes rapidly (look at difference between 2004, 2007, and [...]]]></description>
			<content:encoded><![CDATA[<p>The first presentation of the day that I went to  was by GE's Darren Challey and was about GE's application security program and how he took a holistic approach to securing the enterprise.  My notes on this presentation are below:</p>
<p>Why is AppSec so hard?</p>
<ul>
<li>AppSec changes rapidly (look at difference between 2004, 2007, and 2010 Top 10)</li>
<li>Changing landscape
<ul>
<li>Increase skill and talen t pool of technically proficient individuals willing to break the law</li>
<li>Growing volume of financially valuable data online</li>
<li>Development of criminal markets (black markets) to facilitate conversion to money</li>
</ul>
</li>
<li>"Attackers now have effective skills, something to steal, and a place to sell it"</li>
</ul>
<ul>
<li>Application Security is a complete one-sided game</li>
<li>Need to become an enabler (not a barrier)</li>
<li>Must inject application security earlier through Guidance, Education, and Tools</li>
<li>Must understand the development and deployment process and integrate rather than mandate</li>
<li>NIST study on cost to repair defects when found at different stages of software development (http://www.nist.gov/director/prog-ofc/report02-3.pdf)</li>
<li>Solving the problem of the enterprise (Culture Change)</li>
<li>Success factors</li>
<li>Form a mission and strategy</li>
<li>Develop policy (but not corporate "mandate")</li>
<li>Gain executive buy-in (cost / benefit / risk)</li>
<li>Understand the magnitude of problem (metrics)</li>
<li>Asset inventory and vulnerability management</li>
<li>Develop standards (what should I do and when?)</li>
<li>Establish a formal program (strong leadership)</li>
<li>Focus on education and training materials</li>
<li>Develop in-house expertise, services and "COE"</li>
<li>Continuous improvement, measurement, KPI</li>
<li>Communicate!</li>
<li>Drive a culture change (shared need, WIIFM)</li>
<li>Communicate expectations with vendors</li>
<li>Implement incentives (and penalties)</li>
<li>Digitize after the process is solid (tools)</li>
<li>AppSec program mission &amp; structure</li>
<li>AppSec program strategy</li>
<li>Policy (guidance) -&gt; Standards (Guidance) -&gt; Training (Education) -&gt; Metrics (tools) -&gt; Security tools (tools) -&gt; Inventory &amp; tracking (tools) -&gt; Monitor &amp; Improve</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Guidance</strong></span></p>
<ul>
<li>"GE Application Security Working Group" (Talking to the businesses is critical!  Meet every 2 weeks.)</li>
<li>Secure Coding Guidelines</li>
<li>Vulnerability Remediation Guide</li>
<li>Secure Deployment</li>
<li>Quick Reference Card</li>
<li>Contractual Language</li>
<li>Desk Calendars</li>
<li>Metrics: AppSec calendars helped increase visitors to key Guidance materials  (track hits to website docs when certain activities take place)</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Education</strong></span></p>
<ul>
<li>CBT1: Intro to AppSec at GE (60 min for any IT person) - why AppSec is important and what happens when you don't do it</li>
<li>CBT2: GE Best Practices for Secure Coding (90 min)</li>
<li>CBT3: Attack Profiles &amp; Countermeasures (120 min for security people)</li>
<li>Developer Awareness Assessment:
<ul>
<li>100's of internally-developed questions</li>
<li>Randomized questions, timed completion</li>
<li>Vendors track their own resutls</li>
<li>Allows tailoring of training/awareness programs</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Tools</strong></span></p>
<ul>
<li>- COE AppSec assessment services</li>
<li>Vendor framework &amp; Metrics</li>
<li>Compliance handbook</li>
<li>Common objects repository</li>
<li>GE Enterprise Application Security</li>
<li>Scanning and Monitoring tools</li>
<li>Automation is the way to go (but the tools are not quite there yet)</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Metrics</strong></span></p>
<ul>
<li>Measure Vendor AppSec Performance (Avg % Critical/High Vulnerabilities per Assessment vs % Assessments with Zero Critical/High Vulnerabilities)</li>
<li>Is it making a difference (map avg of critical/high vulnerabilities per assessment)</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Forming a Center of Excellence</strong></span></p>
<ul>
<li>Combines the best available people, processes and tools</li>
<li>Formal training &amp; defined roles (Comprehensive training program for all auditors to ensure skills are kept current and that auditors can provide more than one type of service)</li>
<li>COE Team structure (tools, research, operations, stakeholder management, queue management, application security auditors</li>
<li>Application Assessment Types (black/grey box vs white box)</li>
<li>Application assessment process (map of the workflow with "swim lanes" of who does each step)</li>
<li>Measure number of vulnerabilities and severities</li>
<li>Measure customer satisfaction (overall, ease of engagement, responsiveness)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2009/11/12/enterprise-application-securit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assessing Your Web App Manually Without Hacking It</title>
		<link>http://www.webadminblog.com/index.php/2009/03/23/assessing-your-web-app-manually-without-hacking-it/</link>
		<comments>http://www.webadminblog.com/index.php/2009/03/23/assessing-your-web-app-manually-without-hacking-it/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 21:00:50 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[TRISC 2009]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[assessment]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[penetration]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=206</guid>
		<description><![CDATA[After giving my presentation on "Using Proxies to Secure Applications and More" at the TRISC 2009 conference, I decided to attend the presentation by Robert "RSnake" Hansen and Rob MacDougal entitled "Assessing Your Web App Manually Without Hacking It".  The gist of this presentation was that with a few simple tools (Web Developer Toolbar, NoScript, [...]]]></description>
			<content:encoded><![CDATA[<p>After giving my presentation on "Using Proxies to Secure Applications and More" at the TRISC 2009 conference, I decided to attend the presentation by Robert "RSnake" Hansen and Rob MacDougal entitled "Assessing Your Web App Manually Without Hacking It".  The gist of this presentation was that with a few simple tools (Web Developer Toolbar, NoScript, you web browser) you can spend about an hour looking at the characteristics of a web application in order to determine what types and how many vulnerabilities it may have.  My notes on the presentation are below:</p>
<p><span id="more-206"></span><!--[if gte mso 9]><xml> <w :WordDocument> </w><w :View>Normal</w> <w :Zoom>0</w> <w :TrackMoves /> <w :TrackFormatting /> <w :PunctuationKerning /> <w :ValidateAgainstSchemas /> <w :SaveIfXMLInvalid>false</w> <w :IgnoreMixedContent>false</w> <w :AlwaysShowPlaceholderText>false</w> <w :DoNotPromoteQF /> <w :LidThemeOther>EN-US</w> <w :LidThemeAsian>X-NONE</w> <w :LidThemeComplexScript>X-NONE</w> <w :Compatibility> <w :BreakWrappedTables /> <w :SnapToGridInCell /> <w :WrapTextWithPunct /> <w :UseAsianBreakRules /> <w :DontGrowAutofit /> <w :SplitPgBreakAndParaMark /> <w :DontVertAlignCellWithSp /> <w :DontBreakConstrainedForcedTables /> <w :DontVertAlignInTxbx /> <w :Word11KerningPairs /> <w :CachedColBalance /> </w> <m :mathPr> <m :mathFont m:val="Cambria Math" /> <m :brkBin m:val="before" /> <m :brkBinSub m:val="&#45;-" /> <m :smallFrac m:val="off" /> <m :dispDef /> <m :lMargin m:val="0" /> <m :rMargin m:val="0" /> <m :defJc m:val="centerGroup" /> <m :wrapIndent m:val="1440" /> <m :intLim m:val="subSup" /> <m :naryLim m:val="undOvr" /> </m> </xml>< ![endif]--><!--[if gte mso 9]><xml> <w :LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w :LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w :LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w :LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w :LsdException Locked="false" Priority="39" Name="toc 1" /> <w :LsdException Locked="false" Priority="39" Name="toc 2" /> <w :LsdException Locked="false" Priority="39" Name="toc 3" /> <w :LsdException Locked="false" Priority="39" Name="toc 4" /> <w :LsdException Locked="false" Priority="39" Name="toc 5" /> <w :LsdException Locked="false" Priority="39" Name="toc 6" /> <w :LsdException Locked="false" Priority="39" Name="toc 7" /> <w :LsdException Locked="false" Priority="39" Name="toc 8" /> <w :LsdException Locked="false" Priority="39" Name="toc 9" /> <w :LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w :LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w :LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w :LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w :LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w :LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w :LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w :LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w :LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w :LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w :LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w :LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w :LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w :LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w :LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w :LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w :LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w :LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w :LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w :LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w :LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w :LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w :LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w :LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w :LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w :LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w :LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w :LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w :LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w :LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w :LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w :LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w :LsdException Locked="false" Priority="37" Name="Bibliography" /> <w :LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w> </xml>< ![endif]--><br />
Step 1: Exploit Overachievers</p>
<ul>
<li>Maximize value by using free tools</li>
<li>OWASP (Open Web Application Security Project)</li>
<li>WASC (Web Application Security Consortium)</li>
</ul>
<p>Step 2: Learn</p>
<ul>
<li>Security is not an arcane art reserved for people with a special gift.  It’s campfire knowledge.
<ul>
<li>Assess your security posture regularly</li>
<li>Do not neglect any aspect of your security; bad guys don’t (Social Engineering, Internal Network, Firewall, Web Apps, etc)</li>
</ul>
</li>
</ul>
<p>Step 3: Chase Your Tail</p>
<ul>
<li>Remember where you started
<ul>
<li>Free tools can provide extreme amounts of value
<ul>
<li>OWASP (Eg: OWASP Testing Guide)</li>
<li>WASC</li>
</ul>
</li>
<li>There is no magic to security</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Tools Needed</strong></span></p>
<ul>
<li>Web Developer Toolbar
<ul>
<li>POST to GET</li>
<li>Response headers</li>
</ul>
</li>
<li>NoScript or QuickJava</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Estimating Vulnerabilities</strong></span></p>
<ul>
<li>Site Age – Care &amp; Feeding
<ul>
<li>“Copyright 2003”</li>
<li>Alexa</li>
<li>Archive.org</li>
<li>Whois</li>
<li>Last modified date</li>
<li>Old server + modules version #’s</li>
</ul>
</li>
<li>2-3 years (2), 3-5 years (3), 5-10 years (4), 10+ (5)</li>
<li>Programming Language
<ul>
<li>.cfm (1)</li>
<li>AJAX (1)</li>
<li>.do/.jsp (1)</li>
<li>.cgi/.pl/.shtml (2)</li>
<li>.asp (2)</li>
<li>.php (2)</li>
<li>.aspx/.jspx/.html (0)</li>
<li>Languages + Demographics theory</li>
</ul>
</li>
<li>Size of the Site Logic Complexity
<ul>
<li>Surf around manually
<ul>
<li>Sitemap</li>
</ul>
</li>
<li>Google inurl: search</li>
<li>Spider (added download + added time)</li>
<li>Small (0), Medium – typical retailer (1), Large – Yahoo (3)</li>
</ul>
</li>
<li>Search
<ul>
<li>XSS tests (1)
<ul>
<li>“Company”</li>
<li>I &lt;3 U</li>
</ul>
</li>
<li>SQL injection (1)
<ul>
<li>O’Malley</li>
</ul>
</li>
<li>DoS (.5)
<ul>
<li>a AND b AND c …</li>
</ul>
</li>
</ul>
</li>
<li>Registration
<ul>
<li>Does it exist?  Yes (1)</li>
<li>Email validation and/or CAPTCHA (1-2)</li>
<li>Password complexity? (1)</li>
<li>Can you choose “admin” as a username? (1)</li>
</ul>
</li>
<li>Security Functions
<ul>
<li>Does change password enforce password complexity rules</li>
<li>Does change password require the existing password</li>
<li>Can you change email address without a password</li>
<li>Can emails be changed without validating them</li>
<li>Are secret questions “strong”</li>
</ul>
</li>
<li>Contact forms
<ul>
<li>Do they have an email address in a hidden field (1)</li>
<li>Submit a blank contact
<ul>
<li>Does it work without an error (1)</li>
</ul>
</li>
<li>With and without JavaScript
<ul>
<li>Does it say “Thanks” without JS but errors when JS is turned on (1)</li>
</ul>
</li>
<li>Can users contact other users on the site (Eg: Private message) (2)</li>
</ul>
</li>
<li>Login
<ul>
<li>Does it use SSL (1)</li>
<li>Does it allow auto complete (1)</li>
<li>Does it stop me from being able to type failed logins (3)
<ul>
<li>Horizontal, Vertical, &amp; Diagonal Brute Force attacks</li>
</ul>
</li>
<li>Can you switch POST to GET (1)
<ul>
<li>Session fixation</li>
<li>CSRF (1 per major site function, EG: change password, change secret question, change email address, etc)</li>
</ul>
</li>
<li>Does it auto-logout (1)</li>
<li>javascript:alert(document.cookie) (1)</li>
</ul>
</li>
<li>Forgot password flow
<ul>
<li>Does it send the plaintext password (1)</li>
<li>Does it send a “small” key (1) – 20 bits or less</li>
<li>Does it tell you if your username is valid or not (.5)</li>
</ul>
</li>
<li>File Upload
<ul>
<li>Does it check file extensions (.5)</li>
<li>Does it check file types (.5)</li>
<li>Does it allow re-displaying of the file (1)</li>
</ul>
</li>
<li>HTML/JS/CSS Comments
<ul>
<li>Intranet IPs/addresses (.5)</li>
<li>Passwords (1)</li>
<li>Functionality comments (.5)</li>
</ul>
</li>
<li>URL Structure
<ul>
<li>function?path=/files/file.asp (1)</li>
<li>something?id=104 (1)</li>
<li>search?q=bob&amp;charset=UTF-8 (1)
<ul>
<li>alternate charset</li>
<li>header injection</li>
</ul>
</li>
<li>redir?url=http://www.cnn.com/ (.5)</li>
<li>chngpasswd?usr=bob&amp;pass=1234 (2)</li>
<li>/images/ If it shows a directory (1)</li>
</ul>
</li>
<li>Obvious admin interfaces (2)
<ul>
<li>/admin/</li>
<li>/blog/wp-admin/</li>
<li>/administrator/</li>
<li>/adm/</li>
<li>admin.url.com</li>
</ul>
</li>
<li>Outdated Open Source or Commercial Programs
<ul>
<li>PHP nuke</li>
<li>WordPress</li>
<li>Drupal</li>
<li>3/instance</li>
<li>+1 for every major revision out of date</li>
</ul>
</li>
<li>Other questions
<ul>
<li>Does it allow rich HTML user comments (1)</li>
<li>Does it have a send-to-friend function (1)</li>
<li>Virtual host? (MSN IP search) (1)</li>
</ul>
</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Things this doesn’t cover</strong></span></p>
<ul>
<li>Timing attacks, buffer overflows, etc</li>
<li>Network infrastructure flaws (including DNS)</li>
<li>Predictable file locations (VCS trees, etc)</li>
<li>Logic flaws</li>
<li>Backup files/folders/CVS trees, etc</li>
<li>Alternate paths of exploitation (email, FTP, APIs, etc)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2009/03/23/assessing-your-web-app-manually-without-hacking-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cryptography for Penetration Testers &#8211; OWASP AppSec NYC 2008</title>
		<link>http://www.webadminblog.com/index.php/2008/09/25/cryptography-for-penetration-testers-owasp-appsec-nyc-2008/</link>
		<comments>http://www.webadminblog.com/index.php/2008/09/25/cryptography-for-penetration-testers-owasp-appsec-nyc-2008/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 20:45:53 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[OWASP AppSec NYC 2008]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[appsec]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[owasp]]></category>
		<category><![CDATA[penetration]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[testers]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=127</guid>
		<description><![CDATA[This presentation was on "Cryptography for Penetration Testers" and was by Chris Eng, the Senior Director of Security Research at VeraCode. The Premise How much do you really have to know about cryptography in order to detect and exploit crypto weaknesses in web apps. Goals Learn basic techniques for identifying and analyzing cryptographic data Learn [...]]]></description>
			<content:encoded><![CDATA[<p>This presentation was on "Cryptography for Penetration Testers" and was by Chris Eng, the Senior Director of Security Research at VeraCode.</p>
<p><span style="text-decoration: underline;"><strong>The Premise</strong></span></p>
<p>How much do you really have to know about cryptography in order to detect and exploit crypto weaknesses in web apps.</p>
<p><span style="text-decoration: underline;"><strong>Goals</strong></span></p>
<ul>
<li>Learn basic techniques for identifying and analyzing cryptographic data</li>
<li>Learn black-box heauristics for recorgnizing weak crypto implementation</li>
<li>Apply techniques</li>
</ul>
<p>The Crypto that Matters in 6 Short Slides</p>
<p><span style="text-decoration: underline;"><strong>Types of Ciphers</strong></span></p>
<ul>
<li><strong>Block Ciphers:</strong> Operates on fixed-length groups of bits, called blocks.  Block sizes vary depending on the algorithm.  Several different modes of operation for encrypting messages longer than the basic block size.  Example ciphers include DES, 3DES, Blowfish, AES</li>
<li><strong>Stream Ciphers:</strong> Operates on plaintext one bit at a time</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Block Ciphers: Electronic Code Book (ECB) Mode</strong></span></p>
<ul>
<li>Fixed-size blocks of plaintext are encrypted independently</li>
<li>Each plaintext block is substituted with ciphertext block, like a codebook</li>
<li>Weaknesses: Structure in plaintext is reflected in ciphertext.  Ciphertext blocks can be modified without detection.</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Bliock Ciphers: Cipher Block Chaining (CBC) Mode</strong></span></p>
<ul>
<li>Each block of plaintext is XORed with the previous ciphertext block before being encrypted</li>
<li>Change of message affects all following ciphertext blocks</li>
<li>Initialization Vector (IV) is used to encrypt first block</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Stream Ciphers</strong></span></p>
<ul>
<li>Plaintext message is processed byte by byte (as a stream)</li>
<li>Key scheduler algorithm generates a keystream using a key and an Initialization Vector (IV combined (XOR) with plaintext bit by bit</li>
<li>Encrypt by XORing plaintext with the generated keystream</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Common Crypto Mistakes</strong></span></p>
<ul>
<li>Insecure cipher mode (usually ECB)</li>
<li>Inappropriate key reuse</li>
<li>Poor key selection</li>
<li>Insufficient key length</li>
<li>Insecure random number generation</li>
<li>Proprietary or home-grown encryption algorithms (Don't do this ever!)</li>
</ul>
<p><strong>Analysis Techniques</strong></p>
<p><span style="text-decoration: underline;"><strong>Dealing with Gibberish Data</strong></span></p>
<p>What do you do when you are pen testing a web application and you encounter data that is not easy to interpret?</p>
<ul>
<li>Cookies</li>
<li>Hidden fields</li>
<li>Query string parameters</li>
<li>POST parameters</li>
</ul>
<p>How random is it?</p>
<ul>
<li>Output of cryptographic algorithms should be evenly distributed, given a sufficiently large sample size.</li>
<li>Tools such as ENT (http://www.fourmilab.ch/random) will calculate entropy per byte, chi-square distribution, arithmetic mean, serial correlation, etc</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Observe Characteristics</strong></span></p>
<p>Is the length a multiple of a common block size?</p>
<ul>
<li>Indicates that the application may be using a block cipher</li>
</ul>
<p>Is the length the same as a known hash algorithm?</p>
<ul>
<li>For example, MD5 is usually represented as 32 hex characters</li>
<li>May also indicate the presence of an HMAC</li>
<li>Still may be worthwhile to hash various permutations of known data in case a simple unkeyed hash is being used</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Stimulus, Response</strong></span></p>
<p>Does the length of the token change based on the length of some value that you can supply?</p>
<p>For a block cipher, you can determine the block size by incrementing input one byte at a time and observing when the encrypted output length jumps by multiple bytes (ie, the block size)</p>
<p>How does the token change in response to user-supplied data?</p>
<ul>
<li>Figure out how changing different parts of the input affects the output</li>
<li>Is more than one block affected by a single character change in the input?</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Deeper Block Cipher Inspection</strong></span></p>
<p>Are there any blocks of data that seem to repeat in the same token or over multiple tokens?</p>
<ul>
<li>Possibly ECB mode, this doesn't just happen by coincidence</li>
</ul>
<p><span style="text-decoration: underline;"><strong>EXAMPLE</strong></span></p>
<p>Context:  A public-facing web portal for a large ISP.  Used an encrypted cookie to authenticate identity.  A new cookie is issued on each request.  Base64 decoded EE cookies.  Divided by 8 and found 8 byte blocks.  Noticed some repetition in the same position.  The only variable blocks are the last two (possibly a "last accessed" timestamp or similar timeout mechanism).  Register a new account with a username of 'c' x 32, the maximum length permitted, and observe the value of the EE cookie.</p>
<p>'c' x 32 is Perl notation for "cccccccccccccccccccccccccccccccc"</p>
<p>The token is longer, meaning the username is probably stored in the cookie.  Still noticed repition in same position.  Register another account with a username of 'c' x 16 and compare to the EE cookie generated in the previous step.  Didn't see two identical blocks for 'c' x 16 and four identical blocks for 'c' x 32.  Reason is padding.  The username doesn't align perfectly with the block offset.  Want to figure out what position in the cookie the usernaem is located.  Additional user accounts were created with specific usernames in order to determine if there is any initial padding in the first block.  Now you know where the username is in the ciphertext.</p>
<p>Able to successfully subvert the authentication mechanism without any knowledge of the algorithm or the key, based solely on observed patterns in the ciphertext.  The root cause was the insecure cipher mode and the lack of a verification mechanism.  ECB mode shoul dnot be used (use CBC instead).</p>
<p><span style="text-decoration: underline;"><strong>EXAMPLE</strong></span></p>
<p>Token values observed in URLs.  Changed every time we logged on to the application.  Never the same for any two sessions or any two users.  Base64 decoded values for several different "stmt" tokens.  Statement numbers were displayed in the browser.  Looked for correlations between statement number and cipher-text.  Conclusion: It looks like a stream cipher.  Use XOR to calculate 10 bytes of the keystream based on the known plain-text (ie. the statement number).  Now try the same things against one of the other collected tokens, such as the one called "Ctxt".  Get ASCII text that allows you to infer what it would say.  Expand it out more and more to get the keystream.  Repeat over and over until you have enough of the key to figure out anything in the application.</p>
<p>Through this iterative process, we can obtain the entire keystream (or rather, a sufficient amount of the keystream to encrypt and decrypt all of the cipher-text we encounter).  Can replace the statement number with another valid statement number and view the contents.</p>
<p>Able to subvert the encryption mechanism without any knowledge of the algorithm or the key based solely on observed patterns in the ciphertext.  They were using RC4 with a unique key generated for each user session.  Root cause of the vulnerability is the re-use of the keystream.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2008/09/25/cryptography-for-penetration-testers-owasp-appsec-nyc-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Practical Advanced Threat Modeling &#8211; OWASP AppSec NYC 2008</title>
		<link>http://www.webadminblog.com/index.php/2008/09/25/practical-advanced-threat-modeling-owasp-appsec-nyc-2008/</link>
		<comments>http://www.webadminblog.com/index.php/2008/09/25/practical-advanced-threat-modeling-owasp-appsec-nyc-2008/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 18:53:45 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[OWASP AppSec NYC 2008]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[advanced]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[appsec]]></category>
		<category><![CDATA[modeling]]></category>
		<category><![CDATA[owasp]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[threat]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=122</guid>
		<description><![CDATA[This presentation was by John Steven who is the Senior Director of Advanced Technology Consulting at Cigital, Inc. What is a threat? An agent who attacks you? An attack? An attack's consequence? A risk? What is a threat model? Depiction of the system's attack surface, threats who can attack the system, and assets threats may [...]]]></description>
			<content:encoded><![CDATA[<p>This presentation was by John Steven who is the Senior Director of Advanced Technology Consulting at Cigital, Inc.</p>
<p><span style="text-decoration: underline;"><strong>What is a threat?</strong></span></p>
<ul>
<li>An agent who attacks you?</li>
<li>An attack?</li>
<li>An attack's consequence?</li>
<li>A risk?</li>
</ul>
<p><span style="text-decoration: underline;"><strong>What is a threat model?</strong></span></p>
<ul>
<li>Depiction of the system's attack surface, threats who can attack the system, and assets threats may compromise.</li>
<li>Some leverage risk management practices.  Estimate probability of attack.  Weigh impact of successful attack.</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Elements of a threat model</strong></span></p>
<ul>
<li>Structural view</li>
<li>Threat actors</li>
<li>Assets</li>
<li>Attack vectors</li>
<li>Privilege/"trust"</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Threat</strong></span></p>
<ul>
<li>Capability: Access to the system, able to reverse engineer binaries, able to sniff the network</li>
<li>Skill Level: Experienced hacker, script kiddie, insiders</li>
<li>Resources and Tools: Simple manual execution, distributed bot army, well-funded organization, access to private information</li>
<li>Threats help encourage thorough throught about how intentions for misuse and determine "out of bounds" scenarios.</li>
</ul>
<p><span style="text-decoration: underline;"><strong>A Few Words on STRIDE</strong></span></p>
<ul>
<li>A conceptual checklist backed by data flow diagrams</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Attack Trees</strong></span></p>
<ul>
<li>Aggregate attack possibilites</li>
<li>Use OR, AND</li>
<li>Allow for decoration (probability, cost, skills required, etc)</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Threat Modeling as a Process</strong></span></p>
<ul>
<li>Use threat modeling to identify where potential threats exist relative to the architecture, how threats escalate privilege, specify vectors of attack, identifies components and assets worth protecting.</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Leading Up to Threat Modeling</strong></span></p>
<ul>
<li>Identify threats</li>
<li>Enumerate doomsday scenarios</li>
<li>Document misuse/abuse</li>
<li>Diagram structure, assets</li>
<li>Annotate diagram with threats</li>
<li>Enumerate attack vectors</li>
<li>Iterate</li>
</ul>
<p>Input: Goals, Doomsday Scenarios</p>
<p>Misuse/Abuse Cases (use case view and component view)</p>
<p>Inputs: Security Requirements (specified security features - "128 bit encryption", "software security != security software")</p>
<p><span style="text-decoration: underline;"><strong>Anchor in Software Architecture</strong></span></p>
<p>Consider where attacks occur:</p>
<ul>
<li>Top-down: enumerate business objects (sensitive data, privileged functionality)</li>
<li>Bottom-Up: enumerate application</li>
</ul>
<p>Output: Security Assessment &amp; Test Design.  Threat models drive assessments, Test design.  Establish rules of engagement.  Prioritize areas of interest.  Manage a team in risk-based fashion.  Establish a single tie between vulnerability and control.</p>
<p>Application Structure: No "One Size Fits All"</p>
<p>Application Structure: Topology - Coloration shows authorization by role.  Arrows indicate resolution of principal/assertion propagation.  Use structure to separate privilege.</p>
<p>Application Structure: Components - Component diagrams show critical choke points for security controls (input validation, authentication, output encoding).</p>
<p>Application Structure: Frameworks - Showing frameworks indicates where important service contracts exist "up" and "down".</p>
<p>Assets: Flow - Assets exist not only in rest, but also flow through the system.  Use different types of flags to represent data flow of assets.</p>
<p>Use different colored arrows to represent each different attack vector.</p>
<p>Target Using Layered Attacks: Bootstrap later attacks with those that "deliver".  Use one layer to exploit another (net, app).  Combine attacks to reach desired target.</p>
<p><span style="text-decoration: underline;"><strong>Take Homes</strong></span></p>
<ul>
<li>Base threat model in software architecture</li>
<li>When specific use (cases) and high-level architecture are defined: inventory roles, entitlements, if one doesn't exist and inventory assets, sensitive data, privileged components</li>
<li>Enumerate initial attack vectors.  Use common low hanging fruit.</li>
<li>Elaborate more attacks.  Find opportunities for privilege escalation.  Layer attacks to target or "hop" to assets.  Fill in gaps by "inventing" attacks.</li>
<li>Use threat modeling to drive security testing</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2008/09/25/practical-advanced-threat-modeling-owasp-appsec-nyc-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lotus Notes/Domino Web Application Security &#8211; OWASP AppSec NYC 2008</title>
		<link>http://www.webadminblog.com/index.php/2008/09/25/lotus-notesdomino-web-application-security-owasp-appsec-nyc-2008/</link>
		<comments>http://www.webadminblog.com/index.php/2008/09/25/lotus-notesdomino-web-application-security-owasp-appsec-nyc-2008/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 17:34:24 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[OWASP AppSec NYC 2008]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[appsec]]></category>
		<category><![CDATA[domino]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[lotus]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[owasp]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=120</guid>
		<description><![CDATA[This presentation was by Jian Hui Wang (girl) who is a security professional, but "a nobody in NYC".  Talking about Lotus Notes/Domino web application architecture and security features, web application common development mistakes and fixes, and test methodology. Lotus Notes/Domino History Lotus Notes is client and Domino is the server.  Supports multiple protocols with one [...]]]></description>
			<content:encoded><![CDATA[<p>This presentation was by Jian Hui Wang (girl) who is a security professional, but "a nobody in NYC".  Talking about Lotus Notes/Domino web application architecture and security features, web application common development mistakes and fixes, and test methodology.</p>
<p><span style="text-decoration: underline;"><strong>Lotus Notes/Domino History</strong></span></p>
<p>Lotus Notes is client and Domino is the server.  Supports multiple protocols with one interface (HTTP, LDAP, SMTP/POP/IMAP, file sharing).  Strong on workflow application and collaborative application.  Used by .gov, .edu, .com.  Google search shows 66 million notes databases facing the internet.  People use it because it's easy to develop and deploy a simple application, granular access control, good logging method, and it integrates well with e-mails.</p>
<p><span style="text-decoration: underline;"><strong>Notes Databases</strong></span></p>
<p>Notes databse is building block of Domino application (.nsf or .ntf).  Notes Database is a container for data (document, message, web page), design elements (form, page, view, folder, navigator, agent, frameset, outline).</p>
<p>Two components in Domino server architecture.  There is an HTTP Server and a Domino Engine (URL Parser, Command Handler, and Database).</p>
<p><span style="text-decoration: underline;"><strong>Web Access Syntax</strong></span></p>
<ul>
<li>http://host/data/base/NotesObject?Action&amp;Arguments</li>
<li>Database = Notes Database</li>
<li>NotesObject  = the web accessible design element</li>
<li>Action = the action on NotesObject</li>
<li>Arguments = the qualifiers for the action (optional)</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Notes Database Access Control List (ACL)</strong></span></p>
<ul>
<li>Define users and groups access privileges on the database</li>
<li>Seven access levels (manager, designer, editor, author, reader, depositor, and no access)</li>
<li>Eight access options for each level (create/delete documents, create/delete folders/views, create/delete agents, create/delete public documents)</li>
<li>Anonymous and -Default-</li>
<li>Maximum internet and password access: only works for name-password authentication but not for certificate authentication.  A web user cannot get the access greater than the "Maximum" access even if the access explicitly given is higher</li>
<li>Further restriction can be done by conjunction with reader field, author field, and access list of documents for granular read and write access control</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Notes Web Authentication</strong></span></p>
<ul>
<li>Anonymous user - who does not have Person documents in DOmino Directory (names.nsf)</li>
<li>Authentication occurs if anonymous access is disabled on server configuration document and Notes objects</li>
<li>Name-password authentication: user/pass are authenticated to Person document and internet password in Domino directory (names.nsf).  Basic authentication and session-based authentication.  Internet password lockout function (Notes 8 only)</li>
<li>SSL client certificate authentication</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Common Security Mistakes in Development</strong></span></p>
<ol>
<li>Unauthorized Access: Anonymous access.  Anonymous privilege is assigned to Default access level if there is no anonymous group explicitly set.  Default access level is Designer and Maximum Internet and Password Access is Editor of most built-in templates.  Forceful browsing.  Solutions are to setup anonymous group and assign it "no access".  Review the ACLs of all databases and confidential documents.</li>
<li>Using Default Objects (Databases):  Default databases are statrep.nsf, schema.nsf, reports.nsf, names.nsf, log.nsf, events.nsf, doladmin.nsf, dbdirman.nsf certsrv.nsf, certlog.nsf, admin4.nsf, ...  Anonymous users should not be allowed to access these databases.</li>
<li>Default Objects (view): $DefautlView?OpenView, $DefaultNav?OpenNav, $DefaultForm?OpenForm, help?OpenHelp, $about?OpenAbout, $searchform?searchdomain, $searchform?searchsite, $searchform?searchview, $Icon?OpenIcon, $first, $file.  Solutions are to use the URL redirection and mapping on server document, customize the default pages, and apply the appropriate access control.</li>
<li>SQL Injection: Places to process User Input (@Commands, WebQueryOpen, WebQuerySave, WebQueryClose, @URLQueryString, OpenAgent, RunAgent).  Solutions is input validation in fields by formula or lotus scripts</li>
<li>Cross Site Scripting: Most cross site scripting vulnerabilities are persistent.  Solutions are to use input validaton or to HTMLencode.</li>
<li>Session Management: By default uses basic authentication.  Username and password are sent in clear-text in teh packet of every request.  Solution is to configure the server document to use session-based authentication.  Do not append sensitive data to Querystring.</li>
<li>Information Leakage: Hard coding username and password.  Solutions are to remove the sensitive information from the source code and log and customize the error message.</li>
<li>Operating System Interaction: LotusScript has system commands such as Shell, OSLoadProgram, OSLoadLibrary, FileCopy, Open, Kill, Get, Input, Close.  Solution is to hardcode the path and validate the filename input.</li>
</ol>
<p>Testing security is challenging but it can be done:</p>
<ul>
<li>Lotus Notes Designer (Design Synopsis)</li>
<li>Grep</li>
<li>A good text editor</li>
<li>Paros</li>
</ul>
<p><span style="text-decoration: underline;"><strong>References</strong></span></p>
<ul>
<li>Secure Domino Application</li>
<li>Lotus Security Handbook</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2008/09/25/lotus-notesdomino-web-application-security-owasp-appsec-nyc-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Buildng and Stopping Next Generation XSS Worms &#8211; OWASP AppSec NYC 2008</title>
		<link>http://www.webadminblog.com/index.php/2008/09/25/buildng-and-stopping-next-generation-xss-worms-owasp-appsec-nyc-2008/</link>
		<comments>http://www.webadminblog.com/index.php/2008/09/25/buildng-and-stopping-next-generation-xss-worms-owasp-appsec-nyc-2008/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 16:47:49 +0000</pubDate>
		<dc:creator>Josh</dc:creator>
				<category><![CDATA[OWASP AppSec NYC 2008]]></category>
		<category><![CDATA[Web Application Security]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[appsec]]></category>
		<category><![CDATA[cross]]></category>
		<category><![CDATA[owasp]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[site]]></category>
		<category><![CDATA[worms]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://www.webadminblog.com/?p=117</guid>
		<description><![CDATA[I was originally planning on going upstairs for the SaaS Security presentation, but I had to come downstairs again to get my lunch and this topic seemed interesting, especially given the prevalence of cross site scripting in websites (see OWASP Top 10).  The presentation was by Arshan Dabirsiaghi, the director of research at Aspect Security.  [...]]]></description>
			<content:encoded><![CDATA[<p>I was originally planning on going upstairs for the SaaS Security presentation, but I had to come downstairs again to get my lunch and this topic seemed interesting, especially given the prevalence of cross site scripting in websites (see OWASP Top 10).  The presentation was by Arshan Dabirsiaghi, the director of research at Aspect Security.  He actually began by talking about Clickjacking and said that Jeremiah  Grossman and RSnake gave up enough clues for him to figure out the exploit as far as Adobe flash goes and says that he'd rate the vulnerability a 7/10 in flash and an overall 10/10.  Example non-weaponized exploit at http://i8jesus.com/stuff/clickjacking/test1.html using iframes and CSS.  Suggested fix is to apply framebreakers to your page.</p>
<p>Is an XSS worm really a worm?</p>
<p><span style="text-decoration: underline;"><strong>5 components of a worm:</strong></span></p>
<ul>
<li>Reconnaissance - "[the worm] has to hunt out other network nodes to infect"</li>
<li>Attack - "[components] used to launch an attack against an identified target system"</li>
<li>Communication - "nodes in the network can talk to each other"</li>
<li>Command - "nodes in the worm network can be issued operation commands"</li>
<li>Intelligence - "the worm network needs to know the location of the nodes as well as characteristics about them"</li>
</ul>
<p>Short answer: 3/5 - probably</p>
<p><span style="text-decoration: underline;"><strong>How are XSS worms different from traditional?</strong></span></p>
<ol>
<li>Infection model - Current model requires user interaction, worm strictly contained within web application, passive and localized, no Warhol worms (15 mins of fame).</li>
<li>Payload capability - Perform any application function (money transfer, close account).  XSSProxy/Attack API.  Malware (yikes)</li>
<li>Target shift - Internet worms can own everything both in front of and behind a firewall (island hopping).</li>
<li>Penetration - Need to trick the user into spreading between sites using a 3rd party proxy.</li>
</ol>
<p><span style="text-decoration: underline;"><strong>Traits of Current XSS Worms</strong></span></p>
<ul>
<li>Static payloads</li>
<li>Passive infection strategy</li>
<li>Staty on the same domain (don't say nduja)</li>
<li>Uncontrolled growth</li>
<li>No command and control</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Current Incident Response Options</strong></span></p>
<ul>
<li>Fix the vulnerability</li>
<li>Manual purging - can only be done by experts and doesn't scale</li>
<li>Database snapshot restore - effectively removes all worm data from tained columns, but forces loss of other application data</li>
<li>Search &amp; Destory - works now.  Tricky in the future, but possible.</li>
</ul>
<p><strong>Next Gen XSS Worm Reconnaissance:</strong> A reconnaissance component will be added to the client side to find more web applications to infect.  Nodes can use HTML5 Workers/Google Gears WorkerPool/&lt;insert tomorrow's new RIA technology&gt;.  What about SOP?  Old and busted: utilize 3rd party proxy (a la jikto ~2007).  What attackers should be doing now: malware - no SOP!  Next gen hotness: cross-site XHR, XDR, postMessage.  Allows cross-site bidirectional communication.  Servers must opt in, like Flash, so absolutely no security issues there (kidding)</p>
<p><span style="text-decoration: underline;"><strong>Cross-site communication in HTML5</strong></span></p>
<ul>
<li>postMessage(): Cross-domain communication based on strings.  What do developers do with strings?    JSON/eval()  SiteA + JSON + SiteB = Shared Security</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Staniford, Paxson &amp; Weaver's Reconnaisance Techniques</strong></span></p>
<ul>
<li>"hit list scanning"</li>
<li>Permutation Scanning</li>
<li>Topological Scanning (not without malware, cross-site XHR)</li>
</ul>
<p><strong>Next Gen XSS Worm Attack:</strong> An attack component will be added to the client side.  New client side piece delivered with reconnaissance piece to attack other off-domain web apps.  85% of websites have XSS (how much is reflected vs stored?)  How likely is it to fnd a stored XSS in another web app</p>
<p>Polymorphic Javascript: javascript can be highly mutated</p>
<p><strong>Next Gen XSS Worm Communication:</strong> A communication component will never occur in a XSS worm.  Can't communicate directly from victim browser to another victim browser.  "centralization" in worms is just another word for weakness.</p>
<p><strong>Next Gen XSS Worm Command:</strong> A command component will be added to the worm payload.  Communicationw ith operator necessary for command-and-control structure, data delivery (new target info, soruce updates, etc)</p>
<ol>
<li>Attacker quietly posts signed payloads</li>
<li>Victim creates token</li>
<li>Victim queries Google form token using JSON</li>
<li>Victim finds a signed result</li>
<li>Executes the signed payload</li>
</ol>
<p><strong>Next Gen XSS Worm Intelligence:</strong> An intelligence component will be used after initial worm stages, it can't be trusted (adversaries can poison).  XSS worms probably don't need this, they typically follow a pattern where the first 24 hours it reaches massive infections through epic growth rate.  After that, gone and never seen again.</p>
<p><span style="text-decoration: underline;"><strong>Ways to Prevent Next Gen XSS Worms</strong></span></p>
<ul>
<li>search+destroying polymorphed javascript</li>
<li>on demand exploit egress filters: popular sites need agile response techniques</li>
<li>OWASP AntiSamy - safe rich input validation.  Uses a positive security model for rich input validation.  High assurance mechanism for stopping XSS (and phishing) attacks</li>
<li>utilizing cross-domain workflows: letting the browser SOP protection prevent cookie disclosure + sensitive application information</li>
<li>browser content restrictions: Doesn't make sense in a DOM.  Requires parsers to honor end tag attributes.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.webadminblog.com/index.php/2008/09/25/buildng-and-stopping-next-generation-xss-worms-owasp-appsec-nyc-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

