CVSS needs to be extended to accommodate combinations of vulnerabilities. The current documentation explicitly states:"Vulnerability scoring should not take into account any interaction withother vulnerabilities." But interaction among vulnerabilities iscrucial for understanding the implication of particular vulnerabilities existingin an organization's environment.
Without rehashing Part I of this post, here's a simple,but real-world example. The use ofTelnet receives a CVSS score of X, and a network's vulnerability to ARP cachepoisoning receives a CVSS score of Y. The risk of these vulnerabilities occurringtogether should be significantly higher than the risk of these vulnerabilities occurringindependently. A network where these twovulnerabilities are present is equivalent to a network where unencryptedusernames and passwords are broadcast to every node on the network.
When I made these points in thecontext of a talk I gave at Shmoocon this year, a member of the audiencebrought up
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 ofproblems for a different audience. The"attack patterns" that CAPEC enumerates are not multiple distinctexploits chained together during a multi-phased attack, but instead are commonpatterns used by attackers in exploiting code. The audience is the software development community, and the patternsdescribe what is in my terminology a single exploit, such as "SQLInjection".
So what are we to do? One potential solution may be to introduce anew environmental score that can be used in a generic way to take compoundedvulnerabilities into account. Call thenew metric "CoexistentVulnerability", which takes "High","Medium" and "Low" values depending on how severely aneighboring vulnerability impacts a vulnerability's risk. In my example above, the Telnet and ARPspoofing vulnerabilities might receive a mid-level score, but when occurringtogether, the "CoexistentVulnerability: High" metric would push themeach to high-risk scores.
But I suspect a real solution will have tointroduce a new metric that is applied to tuples or sets of vulnerabilities. One possibility would be to use "Attack Sequences." Trustwavehas recently added Attack Sequences to PenTest Manager, ourweb portal for penetration test results. Attack Sequences are somewhat likeattack trees. An attack tree is built on a root node that represents theultimate target, and then displays branching nodes depicting the possibleavenues that could be pursued by an attacker to reach the root node. (For more on attack trees see Bruce Shneier'sclassic articlefrom Dr. Dobbs Journal.)
An Attack Sequence, on the other hand, isrooted on a particular event -- such as the acquisition of target data or theexploitation of a vulnerability -- that occurred during a penetration test, anddisplays branching nodes depicting the vulnerabilities exploited by thepenetration tester that were part of the sequence. Attack Sequences are flexible with regard totemporal relations. For example, the root node could be the exploitation of a relativelylow-risk vulnerability, say verbose error messages from a web server, which ledto the discovery of several additional vulnerabilities, including one that ledto the compromise of target data. In theAttack Sequence pictured below, the arrows represent a relation like "ledto the discovery of".
Alternatively, the root node could representthe acquisition of target data with child nodes representing thevulnerabilities 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".
Merely possible or incidental paths are notdisplayed, but only those nodes on the "critical path" -- the nodesthat played a direct role in the ultimate compromise of target data. This meansthat the severity of risk attached to each vulnerability in the sequence shouldbe directly related to the other vulnerabilities in the sequence and the riskassociated with the ultimate compromise.
Vulnerabilities arranged in an AttackSequence could receive an additional CVSS score that takes into account the overallrisk presented by this particular sequence of vulnerabilities. Perhaps this could take the form of a fourthoptional CVSS scoring group: Base, Environmental, Temporal and Sequence.
Development is already well underway for CVSS Version 3, but it'stoo early to tell whether this issue will receive any attention from the CVSSauthors. Stay tuned.