TechKnowSurge
VideoSecurityFree

Common Software Vulnerabilities

Software vulnerabilities fall into two broad categories: weaknesses in purchased business applications and flaws introduced during in-house software development. Understanding both is essential for maintaining a secure enterprise environment.

Complete this video to capture a CTF flag worth 1 point.

About this video

Software can be broadly categorized as system software, which includes operating systems, drivers, and utilities, and application software, which encompasses the programs used to carry out business and personal tasks. Web applications represent a further subcategory with their own distinct security considerations. From an enterprise security standpoint, the approach to managing software risk differs significantly depending on whether an organization is consuming software from a vendor or producing it internally. For purchased business applications, the most common vulnerabilities stem from misconfiguration and inadequate patch management. Default credentials left unchanged, improperly configured settings, and open or unused ports all create exploitable attack surfaces. Vendors bear primary responsibility for secure development, but organizations must verify compliance and ensure that software is evaluated, configured correctly, and kept up to date. The vulnerability lifecycle illustrates why timely patching is critical: a zero-day vulnerability exists from the moment software is released, often unknown to anyone, and the period between public disclosure on sources like the Common Vulnerabilities and Exposures list and the deployment of a patch is when organizations are most exposed. Malicious updates also present a risk, which is why validating patches before deployment is a standard security practice. When software is developed in-house, the scope of concern expands considerably. Development teams must account for buffer overflow vulnerabilities, injection attacks such as SQL injection, cross-site scripting, race conditions, poor exception handling, and the accidental embedding of secrets within source code. Reliance on third-party libraries and external dependencies introduces additional risk, as vulnerabilities in those components can propagate into the finished application. A thorough understanding of these development-level vulnerabilities is fundamental for security professionals working in environments where custom software is built or maintained.

What you'll learn

What's covered

Common Software Vulnerabilities

Key terms

Vulnerability
A weakness in a system, application, or process that can be exploited by a threat actor.
Zero-Day
A vulnerability that is unknown to the vendor and has no available patch at the time of exploitation.
Patch Management
The process of acquiring, testing, and installing software updates to fix vulnerabilities and improve functionality.
Exploit
A piece of software or technique that takes advantage of a vulnerability to gain unauthorized access or cause harm.
Misconfiguration
An incorrect or insecure system or service setting made by an administrator that can expose vulnerabilities affecting confidentiality, integrity, or availability.
SQL Injection
SQLi
An attack that inserts malicious SQL code into a query to manipulate a database.
Buffer Overflow
A software vulnerability that occurs when a program writes more data to a fixed-size memory buffer than it can hold, overwriting adjacent memory. Attackers exploit buffer overflows to crash programs or execute arbitrary malicious code.
Malicious Update
A software update that has been tampered with or compromised to deliver malicious code to systems that install it.
Common Vulnerabilities and Exposures
CVE
Common Vulnerabilities and Exposures is a publicly maintained dictionary that assigns unique identifiers to known software and hardware vulnerabilities, providing a common reference point for vulnerability tracking, disclosure, and remediation.

Topics

Software Vulnerabilities Vulnerability Lifecycle Zero Day Exploits Patch Management Secure Software Development Application Security Misconfiguration Risks

Transcript

Two categories of software vulnerability

When we are working with software, what tends to come up is these common vulnerabilities. When we are talking about software vulnerabilities, I feel like there are two different approaches, or two different categories, that we can talk about.

The first one is the business application side. This is software that we purchase as a company. Maybe it is video conferencing software. We are going to go out and find the right vendor that is going to supply this video conferencing software, we are going to implement it, and then our users within our network are going to manage and use it.

That is a little different approach than if we are a company that is a SaaS company or some sort of software company. If we are developing software in house at all, there are a different set of concerns. If we are writing code, there are things that we need to watch out for. We still have to watch out for these in code that we purchase, but the thing is that the vendor should be taking care of that. For the most part, we are going to do an evaluation from a security perspective to make sure the vendor is doing their part to keep their software secure, but we are going to evaluate things on a different level than if we had in-house development. Then we take a different look into what that code looks like and whether there are common software vulnerabilities inside that code.

As an example, let us say we need to purchase some sort of video conferencing. We need to evaluate and purchase this video conferencing, and maybe we are choosing between Microsoft Teams and Zoom. Those are our two selections, and we need to make sure that the companies are compliant with our security and with the level of security that we need for this video conferencing. That is going to be a very different scenario, purchasing that and then setting up and making sure it is configured correctly so there are no security holes, than if we were developing something in-house.

Let us say we are developing something in house that is video conferencing. At that point in time we have a whole bunch of other stuff we need to be concerned about. For instance, maybe it is buffer overflow, or injection attacks, or those types of vulnerabilities.

Here I am primarily going to be addressing business applications and what that looks like, as a brief overview, and then I will briefly mention software development. In another module we get heavier into software development and some vulnerabilities that we would see when we are developing software, and things that we need to watch out for as security professionals.

System software, applications and web applications

Software is a broad category that just says anything that is lines of code that tell the computer what to do. We can break it down into system software and application software.

System software is more like the operating system, which is the base set of instructions for the computer and what it is supposed to be doing; the drivers, which are how it interfaces with the physical equipment; and the utilities that help us manage the computer.

Then under applications, those are all of the different applications or different programs that allow us to carry out and do our jobs. They allow us to perform certain tasks for our jobs, or maybe it is for entertainment, for personal life, or whatever the case may be. But it really is about doing tasks and doing different things for us.

Then from a security standpoint I would also make a subcategory of web applications, because there is a whole other set of concerns when it comes to web applications.

Common business application vulnerabilities

Some of the common vulnerabilities that I see with these business applications are that they are just misconfigured, or they are not updated. A lot of times they come with some sort of default credentials, and when you have default credentials then anybody can access that, understand what these default credentials are, get in there and start manipulating and changing things. Even if you change the default credentials, there could be some other misconfigurations within the system that expose that software to whoever is trying to hack the system.

Then of course we need to make sure that whatever we have is being patched on a regular basis. It is critical to keep our systems patched and updated. This is where a lot of the vulnerabilities come into play when it comes to the software we are running on our enterprise networks.

The vulnerability life cycle

Vulnerabilities do have a life cycle. Some sort of software is released and it has a vulnerability that exposes a risk. At this point in time we call this a zero day. A zero day means that whoever developed the software and released this vulnerability has had zero days to actually fix anything. They do not even know that it exists.

At some point in time it gets discovered. Somebody discovers that this is an issue. Maybe it is internal; somebody discovers it, hopefully, and they can release a fix right away. Or maybe it is external, and some sort of hacker discovers that there is an issue. Now we have a problem: somebody understands there is a vulnerability and can exploit that vulnerability for some sort of malicious purpose.

Then at some point in time it gets reported and it goes on the common vulnerabilities and exposures list. Now everybody has access to see what this exposure is, and now there is a real danger. There was danger when it was first discovered, but now that everybody can see it, it becomes a real problem.

Then whoever released this software creates a patch for it, they put the patch out there, and then the company deploys it. So between the time when we deploy it as security professionals and when it gets discovered, this is the window that is really critical. As soon as we can, we do this patching, because this is when we are opened up for some sort of attack.

Malicious updates and hardening

There is such a thing as a malicious update as well. We are going to patch our systems and update those systems, but there are times when the updates themselves can either have that vulnerability, or perhaps somebody has snuck code into that malicious update, where maybe we are not getting it from the right source, or maybe the source is infected, or whatever the case may be, and that malicious update can cause problems on our machine as well. That is one of the reasons we typically will validate some sort of update before we actually deploy it, similar to hardware and firmware and the different things that we roll out.

Same thing with software: it is going to have a lot of open ports or unused ports, or software that is running that opens us up for vulnerabilities as well. So one thing we want to do is go and harden our equipment, making sure that they do not have vulnerabilities opened up on this equipment.

Vulnerabilities in software we develop

There are definitely concerns over business applications and how we set those up, but there are even more concerns when we are developing software in-house. Just to name a few, and I get more in depth into this in other lessons:

  • Buffer overflow vulnerabilities.
  • Embedded secrets inside the software, which is problematic because you are exposing those secrets to other people if they can see that code or that software.
  • Poor exception handling: what happens when there is some sort of exception, and how does your program handle that.
  • Race conditions.
  • Injections, where we can inject some sort of code. One example of that is SQL code injected into there.
  • Cross-site scripting.
  • A lot of times when we are developing software we rely on other dependencies or third-party libraries, and that has its own concerns.

About TechKnowSurge

TechKnowSurge builds IT and cybersecurity professionals through hands-on, concept-first training built around real understanding — not memorization. Free interactive tools, structured programs, and 25+ years of real-world experience, all in one place.

Explore free tools and programs →