What is a vulnerability and what is not? It looks like a pretty simple question. I used it to started my MIPT lecture. But actually the answer is not so obvious. There are lots of formal definitions of a vulnerability. For example in NIST Glossary there are 17 different definitions. The most popular one (used in 13 documents) is:
Vulnerability is a weakness in an information system, system security procedures, internal controls, or implementation that could be exploited or triggered by a threat source
NISTIR 7435 The Common Vulnerability Scoring System (CVSS) and Its Applicability to Federal Agency Systems
But I prefer this one, it’s from the glossary as well:
Vulnerability is a bug, flaw, weakness, or exposure of an application, system, device, or service that could lead to a failure of confidentiality, integrity, or availability.
I think the best way to talk about vulnerabilities is to treat them as bugs and errors. Because people deal with such entities more often in a form of software freezes and BSODs. 😉
You probably heard a joke, that a bug can be presented as a feature if it is well-documented and the software developers don’t want to fix it.
Vulnerability is also a specific bug that can lead to some security issues. Or at least it is declared.
Is this particular bug a Vulnerability or not?
Here is also a mind game. How can we say if these particular bug is a vulnerability or not? Well, we can say, that if Confidentiality, Availability or Integrity are affected, it is a vulnerability. For some cases, like my examples of Vulnerable Web-Applications, it’s obvious that those bugs are in fact vulnerabilities. But it’s not always like this.
Should the application data be stored in encrypted form?
For example, in October of last year there was a news that Telegram Messenger stores data on a device in unencrypted SQLite database:
But should each application store it’s data in encrypted form? Telegram CEO, Pavel Durov, released a statement (rus) that it was NOT a vulnerability: “If I had access to Your computer, I would be able to read Your messages”. And he may be right or may be not, depends on your position.
Vulnerability or default misconfiguration?
Another vulnerability that was discovered last October. Unprivileged Linux user could add arbitrary string to X server logs and redirect these logs to /etc/shadows file. Thus, it was possible to change root password.
I tried and it actually worked:
Of course, it was only possible because the X server was installed with the setuid bit set by default. So, was it a vulnerability of X server, default misconfiguration of a Linux distro or maybe even just a feature? It also depends on your point of view. But any way, an attacker still could exploit it.
Vulnerabilities exploitable in very specific conditions
The previous two examples were obviously exploitable, but it’s not the fact that they were, strictly speaking, software vulnerabilities. How about issues that certainly looks like vulnerabilities, but it’s not the fact that they are actually exploitable? It’s very often situation with cryptography issues, with SSL especially.
For example vulnerabilities of 64-bit block ciphers exploitable through sweet32 attack. You might face it during your perimeter PCI ASV scans and will have to deal with it to get a certificate. The problem with this attack is that it needs 32 GB of traffic to decrypt only one session. The researchers say that “is easily reached in practice”, but actually I don’t think so. Most services don’t operate with such amounts of traffic and the session will expire much faster. So, it will be also up to you to decide if this vulnerability is real or not.
In conclusion
Beauty is in the eye of the beholder
And vulnerability in the eye of the analyst. Software vendors and vulnerability researchers can argue as long as they want about the terms, criticality, who is responsible and who should fix it. But the final decision whether we are dealing with something dangerous or it’s some kind of nonsense makes the security analyst of a particular organization. This analyst also decides what to do next: how to actually fix the vulnerability or what workarounds can be used.
Hi! My name is Alexander and I am a Vulnerability Management specialist. You can read more about me here. Currently, the best way to follow me is my Telegram channel @avleonovcom. I update it more often than this site. If you haven’t used Telegram yet, give it a try. It’s great. You can discuss my posts or ask questions at @avleonovchat.
А всех русскоязычных я приглашаю в ещё один телеграмм канал @avleonovrus, первым делом теперь пишу туда.
Pingback: MIPT/PhysTech guest lecture: Vulnerabilities, Money and People | Alexander V. Leonov
Pingback: Vulnerability Life Cycle and Vulnerability Disclosures | Alexander V. Leonov