Thursday, September 27, 2012

CVSS for Penetration Test Results (Part II: Attack Sequences)

CVSS for Penetration Test Results (Part II: Attack Sequences):

CVSS needs to be extended to accommodate combinations of vulnerabilities.  The current documentation explicitly states:
"Vulnerability scoring should not take into account any interaction with
other vulnerabilities."  But interaction among vulnerabilities is
crucial for understanding the implication of particular vulnerabilities existing
in an organization's environment.
Without rehashing Part I of this post, here's a simple,
but real-world example.  The use of
Telnet receives a CVSS score of X, and a network's vulnerability to ARP cache
poisoning receives a CVSS score of Y.  The risk of these vulnerabilities occurring
together should be significantly higher than the risk of these vulnerabilities occurring
independently.  A network where these two
vulnerabilities are present is equivalent to a network where unencrypted
usernames and passwords are broadcast to every node on the network.

When I made these points in the
context of a talk I gave at Shmoocon this year, a member of the audience
brought up CAPEC as a potential solution.
CAPEC is a distant relative of CVE, a Mitre-sponsored program for
"Common Attack Pattern Enumeration and Classification."  But CAPEC is out to solve a different set of
problems for a different audience.  The
"attack patterns" that CAPEC enumerates are not multiple distinct
exploits chained together during a multi-phased attack, but instead are common
patterns used by attackers in exploiting code.
The audience is the software development community, and the patterns
describe what is in my terminology a single exploit, such as "SQL
Injection".
So what are we to do?  One potential solution may be to introduce a
new environmental score that can be used in a generic way to take compounded
vulnerabilities into account.  Call the
new metric "CoexistentVulnerability", which takes "High",
"Medium" and "Low" values depending on how severely a
neighboring vulnerability impacts a vulnerability's risk.  In my example above, the Telnet and ARP
spoofing vulnerabilities might receive a mid-level score, but when occurring
together, the "CoexistentVulnerability: High" metric would push them
each to high-risk scores.
But I suspect a real solution will have to
introduce a new metric that is applied to tuples or sets of vulnerabilities.
 One possibility would be to use "Attack Sequences."  Trustwave
has recently added Attack Sequences to PenTest Manager, our
web portal for penetration test results.  Attack Sequences are somewhat like
attack trees.  An attack tree is built on a root node that represents the
ultimate target, and then displays branching nodes depicting the possible
avenues that could be pursued by an attacker to reach the root node.  (For more on attack trees see Bruce Shneier's
classic article
from Dr. Dobbs Journal
.)
An Attack Sequence, on the other hand, is
rooted on a particular event -- such as the acquisition of target data or the
exploitation of a vulnerability -- that occurred during a penetration test, and
displays branching nodes depicting the vulnerabilities exploited by the
penetration tester that were part of the sequence.  Attack Sequences are flexible with regard to
temporal relations. For example, the root node could be the exploitation of a relatively
low-risk vulnerability, say verbose error messages from a web server, which led
to the discovery of several additional vulnerabilities, including one that led
to the compromise of target data.  In the
Attack Sequence pictured below, the arrows represent a relation like "led
to the discovery of".
Screen shot 2012-09-23 at 3.08.38 PM Alternatively, the root node could represent
the acquisition of target data with child nodes representing the
vulnerabilities that came together to make the compromise possible.  This is depicted in the Attack Sequence below,
where the arrows represent a relation like "was dependent upon".
Screen shot 2012-09-23 at 2.31.11 PM
Merely possible or incidental paths are not
displayed, but only those nodes on the "critical path" -- the nodes
that played a direct role in the ultimate compromise of target data. This means
that the severity of risk attached to each vulnerability in the sequence should
be directly related to the other vulnerabilities in the sequence and the risk
associated with the ultimate compromise.
Vulnerabilities arranged in an Attack
Sequence could receive an additional CVSS score that takes into account the overall
risk presented by this particular sequence of vulnerabilities.  Perhaps this could take the form of a fourth
optional CVSS scoring group: Base, Environmental, Temporal and Sequence.
Development is already well underway for CVSS Version 3, but it's
too early to tell whether this issue will receive any attention from the CVSS
authors.  

No comments:

Wiredwizrd

Morgan Todd Lewistown, PA

Experienced Information Technology Manager with a strong knowledge of technical guidance, IT best practices, security protocols, team leadership, and analyzing business requirements.
Google