php2shell patches (CVE-2026-109618 and CVE-2026-109619) for EOL PHP are out now. With sales replies slower than usual due to high demand, the fastest route to patched packages is to buy ELS for Runtimes online (opens in new tab). Read the patch FAQ

Go straight to an AI summary of this blog post instead

  • Summarize this post with Perplexity
  • Summarize this post with Gemini

Key Takeaways

  • There are five distinct types of patching – traditional, virtual, firmware, live, and cloud/container – each with its own downtime, risk, and compliance profile.
  • Most teams still default to patch-and-reboot, which leaves systems exposed for days or weeks while change windows queue up.
  • Live patching applies kernel and library fixes to running systems without a reboot, collapsing remediation time from weeks to hours.
  • The right patching strategy depends on your uptime requirements, regulatory SLAs, and which layers of your stack you actually own.

It’s 11pm on a Sunday. Someone on your team is babysitting a maintenance window because three production boxes need a kernel CVE patch, and the only safe way to apply it – according to the playbook from 2014 – is to reboot. The patch itself is two megabytes. The downtime burns 40 minutes per host. Multiply that across a fleet of a few hundred servers and the whole “quick security fix” turns into a quarter you don’t get back.

This is why the types of patching you choose actually matter. The right approach can cut a maintenance window from hours to seconds – or eliminate it entirely. The wrong one keeps you exposed to a known CVE for weeks because you can’t get sign-off to reboot.

Some so-called “patching” methods are not even patching at all. This is your one-stop guide to making sense of the different patching offerings out there.

What Is Software Patching?

software-patching-lifecycle

Software patching is both an IT process and a fundamental security practice. It is generally described as the process of fixing issues or adding features to a given system by adding or replacing existing components with updated ones. This can be done at many different levels, such as updating code at the subsystem, dependency, or core functionality level. Similarly, you can patch specific applications, operating systems, drivers, or any other component.

While the goal is always to have a more up-to-date version of whatever is being patched, how you go about accomplishing this is the differentiator between the multiple patching approaches – and treating them as one category is how teams end up with months of unpatched vulnerabilities sitting on production.

As with other terms in IT, like debugging, patching derives from a physical process. It referred to the actual covering of holes in punch cards, i.e., you would “patch” a section of the code. This seems to have dropped out of fashion, so we’ll cover the more modern approaches instead.

The Difference Between a Patch, an Update, and a Full Release

Before getting into the types of patching, it’s worth clearing up a terminology issue that causes real confusion in practice. The terms patch, update, and full release get used interchangeably – sometimes by the same person in the same conversation – but they describe meaningfully different things, especially when you’re scoping work or talking to a compliance auditor.

 

Patch

Update

Full Release

Definition

Targeted fix for a specific bug, CVE, or regression

Bundle of patches plus minor enhancements

New major version with architectural or feature changes

Scope

Narrow – often a single binary or kernel module

Moderate – multiple components

Wide – entire product, sometimes new dependencies

Downtime Impact

Minimal to none (with live patching, zero)

Reboot or service restart usually required

Significant – may require a migration plan

Typical Trigger

CVE disclosure, hotfix, regression report

Scheduled monthly or quarterly cadence

Roadmap milestone, EOL of previous version

A reasonable rule of thumb: if you can describe the change in one sentence, it’s a patch. If it ships with release notes longer than a paragraph, it’s an update. If it comes with a migration guide, it’s a full release.

One thing the table can’t capture: vendors sometimes mislabel things to make them sound less disruptive. A “minor update” that quietly swaps the underlying database driver is, functionally, closer to a full release. Read the changelog before you trust the label.

Main Types of Patching: A Complete Breakdown

The types below cover the vast majority of what most security and DevOps teams will encounter. Some overlap – a firmware patch is also a security patch, and live patching applies to both traditional Linux servers and containerized workloads. The categories aren’t mutually exclusive, but they each describe a distinct delivery mechanism with its own operational profile.

types-of-patching-infographic

Traditional Patching

This is what most people will recognize as patching. It consists of downloading updated versions of a given software, then replacing the corresponding files on disk with the new versions.

It’s relatively simple to implement and straightforward to understand: you have an old version of a given software that gets replaced by a new version, either entirely or partially. You need to restart the application or reboot the system to pick up the new version, but there are no other moving parts. Of course, therein also lies the biggest drawback – restarting applications or rebooting entire systems is a slow operation that causes significant disruption to whatever workload is running. Because of this, it’s not something that can be done in an ad-hoc manner, so it usually takes place in what is called a “maintenance window” – a pre-approved period of time where systems are expected to have availability or performance issues.

This is slow to set up and prone to go over predicted time allotments in case of issues. According to a Ponemon Institute report sponsored by TuxCare, 56% of organizations take anywhere from five weeks to a year to fix critical or high-priority vulnerabilities – and over 55% reported experiencing a cybersecurity incident caused by a patch that was already available but hadn’t been applied. That delay is overwhelmingly driven by change-window scheduling, not the installation itself.

Use it when you have a tolerable maintenance window, a stable test environment, and no compliance constraint demanding faster remediation. Don’t rely on it as your only strategy if you run anything that can’t take a regular reboot.

Virtual Patching

This is something that has “patching” in the name and appears to provide patching results at face value, but in fact operates at a completely different level. There is no actual code replacement or correction taking place with virtual patching. It consists of implementing threat detection at the firewall level, blocking known attack patterns. From an attacker’s perspective, the attack fails, so the attacker might assume the system is patched when, in fact, it isn’t.

This method of “patching” has several disadvantages: you don’t actually get corrected code into the systems at any point, the protection only covers known attack patterns – which immediately ignores local-only issues – and it can be tricked by modifications in the network traffic corresponding to a given threat.

If the disadvantages don’t immediately disqualify this approach, then the pros include no disruption (since nothing is actually done inside a system), the ability for a single deployment to cover multiple systems, and immediate protection against new remote-only threats as they’re added.

Treat virtual patching as triage, not a destination. When a significant vulnerability is disclosed and your team needs days rather than weeks to roll out the real fix, a virtual patch buys valuable breathing room. If it’s still in place six months after disclosure, however, you’ve stopped patching and started gambling.

Use it when you need to mitigate a CVE faster than you can apply the real fix, or you’re running end-of-life software that no longer receives vendor patches.

Firmware Patching

Firmware updating is a specific case of traditional patching, with the added caveat that you’re patching code contained in usually difficult-to-update storage media – directly into EPROM (erasable programmable read-only memory) chips. This used to be the norm for early smart devices and first-generation IoT devices. The software would be loaded in the factory and would rarely – if ever – get any updates. This was due in part to the fact that updating and security were not primary concerns like they are today, but also because the way the software was stored made it difficult to update. More recent devices will have the code, completely or partially, written to more standard media like SSDs, SD cards, or similar, which are much easier to modify.

When you had code running on chips that had to be connected to specialized writing hardware with proprietary software requirements and cables, it added a layer of complexity that made the whole process very unappealing to most IT teams. As a result, those devices would simply never see an update throughout their entire useful lifetime. Unfortunately, many are still around – print servers, IP cameras, and data center sensors are all good examples of devices that operate in this way.

Firmware patching is also the most operationally risky type. A botched BIOS flash bricks the machine, and the rollback story is frequently “you can’t.” Vendors are inconsistent about how often they ship firmware updates and how reliably they test them – server vendors are generally solid, but IoT and consumer-grade hardware is a different story.

For IoT and embedded devices running Linux, there is a middle ground worth knowing about. TuxCare’s KernelCare IoT delivers rebootless kernel patching for ARM64 devices – supporting Raspberry Pi, Ubuntu, and Yocto-based distributions across chipsets including Arm Neoverse, NXP, and AWS Graviton, with Microsoft Azure IoT Hub integration for fleet management – which sidesteps the traditional firmware update problem entirely for the kernel layer.

Use it on a defined cadence – quarterly is reasonable for most fleets – always after testing on representative hardware, and never skip the post-flash verification step.

Live Patching

Live patching is the process of modifying running code and replacing known buggy sections, or functions, with corrected versions of those same sections. This is done entirely in memory and does not require the application to be restarted for new changes to be picked up. One moment the software contains a bug in a function; the next, a corrected version of that function is used instead.

There are no restarts, no reboots, and no disruption. Because of this, patches can be deployed immediately – the operation does not require a maintenance window, allowing for faster response to emerging threats. Rather than waiting weeks or months for a patch to be deployed, as in traditional patching, it can now happen within hours or even minutes of a patch being available.

The added complexity of live patching happens at patch creation time. The patch has to be created in such a way that it can be loaded into the right memory space using the same variable sizes and alignments as the original code. This complexity is hidden from the users of a live patching solution – it is only visible to the live patch provider.

A live patching subsystem has been able to deploy patches inside the Linux kernel for over 10 years now, and multiple different solutions have been created. TuxCare’s KernelCare is one such solution, handling live patching of the Linux kernel across all major distributions. LibCare extends this to critical userspace libraries – including OpenSSL and glibc, which underpin encryption and core system calls across virtually every Linux workload – without requiring a service restart. Together, they cover the highest-risk attack surface on a Linux server without touching a maintenance window.

There are also many variations of live patching, including temporary and permanent approaches, relating to whether the live patching process is implemented as a stop-gap or a more permanent alternative to traditional patching.

Use it when you operate Linux at any meaningful scale, run regulated workloads with tight remediation SLAs, or have stakeholders who treat any unplanned reboot as a critical incident.

Cloud and Container Patching

Cloud and container workloads change the model in ways worth understanding clearly, because the assumptions that apply to traditional servers don’t carry over cleanly.

Containers are typically patched by rebuilding the image and rolling out a new deployment – the old container is replaced by a new one carrying the fix. There’s intentionally no in-place modification of a running container in most workflows; immutability is the design principle, and it’s a sound one. It does mean, however, that a vulnerable base image can quietly persist across many running containers if the rebuild process isn’t well-governed.

Cloud environments split responsibility under the shared-responsibility model. With IaaS, the provider patches the hypervisor and physical hosts; you own the guest OS, runtime, and application layer. With PaaS, the provider handles more of the stack. With SaaS, you’re mostly concerned with agents and integrations. Knowing exactly which layer you own is half the battle – teams have been burned badly by assuming “the cloud handles it” for something the provider explicitly doesn’t cover.

What the container model doesn’t change: the Linux kernel underneath the container runtime still needs patching. Those are real systems running real kernels with real CVEs, and live patching applies to them just as it does to any other Linux host.

Use it when you run Kubernetes, ECS, or any container orchestration platform. Pair image rebuilds with live patching or traditional patching for the underlying host OS – the container abstraction doesn’t make the kernel beneath it magically secure.

How to Choose the Right Patching Strategy

There are many ways to approach patching, and no single method covers every situation. The right choice depends on a combination of factors – some technical, some organizational – that together push you toward one approach or another.

patching-strategy-decision-flowchart

A few variables that matter most:

Uptime requirements: If a 5-minute reboot is a non-event, traditional patching covers most cases. If unplanned downtime is a critical incident, live patching changes the equation significantly.

Remediation SLAs: Frameworks like PCI DSS and HIPAA specify how quickly critical patches must be applied. If your SLA is 30 days and your change windows are monthly, you have no margin for anything going wrong.

Stack composition: Linux-heavy fleets benefit most from live patching. Windows fleets lean on traditional patching with virtual patching as a stopgap. Embedded and IoT devices need firmware patching that most teams chronically underinvest in.

Operational maturity: Automated test environments and solid rollback procedures change which strategies are viable. Without them, every patch type carries more risk than it should.

A practical frame for common situations:

  • Non-negotiable uptime, Linux fleet → live patching for the kernel and critical shared libraries, traditional patching for everything else on a relaxed cadence
  • Tolerable maintenance windows, homogeneous environment → traditional patching with strong automation covers most needs
  • Stuck on EOL software you can’t yet replace → virtual patching plus aggressive monitoring is the only sensible interim position
  • Fleet includes physical servers, network gear, or IoT → budget for firmware patching as its own program, separate from OS patching

For any organization with even the smallest concern for keeping their systems, data, and users secure, patching is one of the fundamental concerns that has to be addressed at the strategic and operational level. Each environment will have its own quirks – be sure to choose the right process for your specific situation.

Still Rebooting to Patch? There’s a Better Way

If your current workflow is “schedule a reboot, hope nothing breaks, repeat next month,” you’re carrying more overhead than you need to and accepting a longer exposure window than you should. Live patching exists because the reboot-as-necessity model isn’t a physical law – it’s a habit inherited from an era when there was no alternative.

TuxCare’s KernelCare and LibCare provide live patching for Linux kernels and critical shared libraries – including OpenSSL and glibc – across all major distributions. Same servers, no reboots, no maintenance windows required for security patches. And if your fleet includes IoT or embedded devices, KernelCare IoT extends the same rebootless patching to ARM64 devices running Raspberry Pi, Ubuntu, and Yocto-based distributions.

 

FAQs

Can a patch itself introduce new vulnerabilities?

Yes. Patches are code, and code has bugs. Regression – where a fix breaks something that previously worked, or introduces a new flaw – is a known and documented risk. This is why a test environment that mirrors production isn’t optional, and why staged rollouts beat fleet-wide simultaneous deployment.

Who is responsible for patch management in an organization?

Usually a shared responsibility between IT operations, security, and the application teams that own specific workloads. Security defines the SLA and prioritizes by CVE severity. Ops handles deployment. Application owners validate that nothing broke. In smaller organizations, one person wears all three hats.

How often should systems be patched?

Critical security patches: as fast as your SLA allows, ideally within 7–14 days of vendor release. Routine updates: monthly is a common cadence. Firmware: quarterly for most fleets. The faster patches can be applied without breaking things, the smaller the exposure window – and live patching is the primary way to compress that timeline without sacrificing testing rigor.

What is the difference between patching and system hardening?

Patching fixes specific known vulnerabilities by applying vendor-released code changes. System hardening reduces overall attack surface through configuration – disabling unused services, enforcing least privilege, tightening firewall rules. Patching addresses known holes; hardening makes the unknown ones harder to exploit. You need both.

Do containerized or cloud-native environments still need patching?

Yes. Containers inherit vulnerabilities from their base images, and the host OS underneath the container runtime is still a Linux system that needs kernel patches. The model shifts – rebuild the image rather than modify the running container – but the obligation doesn’t disappear. The shared-responsibility model divides patching responsibility; it doesn’t eliminate it.

Summary
Types of Patching: A Breakdown for Security and DevOps Teams
Article Name
Types of Patching: A Breakdown for Security and DevOps Teams
Description
Learn the different types of patching, including security, OS, and live patching. Understand when to use each and how to keep systems secure.
Author
Publisher Name
TuxCare
Publisher Logo

Join 4,500+ Linux & Open Source Professionals!

2x a month. No spam.

Table of Contents
Get the open-source security answers you need

Join 4,500+ Linux & Open Source Professionals!

2x a month. No spam.