Selective layer deployment for container environments

The TLPMU and ODTLA engines facilitate selective layer updates in container environments by updating manifest attributes and constructing layer structures, addressing the challenge of applying security fixes efficiently and securely without disrupting the system.

WO2026082625A1PCT designated stage Publication Date: 2026-04-23INTERNATIONAL BUSINESS MACHINE CORPORATION +1
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
INTERNATIONAL BUSINESS MACHINE CORPORATION
Filing Date
2025-10-13
Publication Date
2026-04-23

AI Technical Summary

Technical Problem

Existing container environments face challenges in efficiently applying selective layer updates, particularly security fixes, without disrupting the stability of the existing system, due to the need to either wait for updates or redeploy lower versions, leading to potential security vulnerabilities and loss of functionality.

Method used

Implementing a system with a Target Layer Patch Mark Updater (TLPMU) engine and On-Demand Target Layer Adapter (ODTLA) engine to update the manifest attribute of specific layers and construct additional chainlD/difflD/cachelD structures, allowing selective deployment of security fixes without affecting unrelated layers.

Benefits of technology

Enables efficient and secure application of security fixes to specific container layers, maintaining system stability and security by ensuring only necessary updates are applied, thus minimizing exposure to vulnerabilities and preserving functionality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure EP2025079410_23042026_PF_FP_ABST
    Figure EP2025079410_23042026_PF_FP_ABST
Patent Text Reader

Abstract

Examples described herein provide a computer-implemented method for selective layer deployment for container environments. The method includes downloading a container image from an image repository. The method further includes deploying the container image as a container at a local graph, the container image comprising a plurality of image layers. The method further includes identifying an affected image layer of the plurality of image layers. The method further includes updating a manifest attribute of a target patch to be implemented for one of the plurality of image layers of the container image. The method further includes deploying the target patch to address the affected image layer, the target patch not being applied to any image layers unrelated to the affected image layer.
Need to check novelty before this filing date? Find Prior Art

Description

SELECTIVE LAYER DEPLOYMENT FOR CONTAINER ENVIRONMENTSBACKGROUND

[0001] The present disclosure relates to computing systems, and more specifically, to selective layer deployment for container environments.

[0002] Containers provide an application layer approach to virtualization. A container packages together code and its dependencies, and the container can be run on a physical processing system. Multiple containers can be run on the same physical processing system. This approach uses less resources than a virtual machine approach to virtualization.SUMMARY

[0003] According to an embodiment, a computer-implemented method for selective layer deployment for container environments is provided. The method includes downloading a container image from an image repository. The method further includes deploying the container image as a container at a local graph, the container image comprising a plurality of image layers. The method further includes identifying an affected image layer of the plurality of image layers. The method further includes updating a manifest attribute of a target patch to be implemented for one of the plurality of image layers of the container image. The method further includes deploying the target patch to address the affected image layer, the target patch not being applied to any image layers unrelated to the affected image layer.

[0004] Other embodiments described herein implement features of the above-described method in computer systems and computer program products.

[0005] The above features and advantages, and other features and advantages, of the disclosure are readily apparent from the following detailed description when taken in connection with the accompanying drawings.BRIEF DESCRIPTION OF THE DRAWINGS

[0006] The specifics of the exclusive rights described herein are particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other features and advantages of one or more embodiments described herein are apparentfrom the following detailed description taken in conjunction with the accompanying drawings in which:

[0007] FIG. 1 illustrates a computing environment having a target layer patch mark updater (TLPMU) and an on-demand target layer adapter (ODTLA) engine, according to an embodiment;

[0008] FIG. 2 illustrates a system diagram of the TLPMU and ODTLA engines of FIG. 1 interacting with a repository and local graph for on-demand layer updates, according to an embodiment;

[0009] FIG. 3 illustrates a process for setting a layer as a security fix using the TLPMU engine and updating a chainlD structure, according to an embodiment;

[0010] FIG. 4 illustrates the addressing of container layers using diffLD, chainlD, and cachelD, according to an embodiment;

[0011] FIG. 5 illustrates the addressing of container layers using diffLD, chainlD, and cachelD in a container environment, according to an embodiment;

[0012] FIG. 6 illustrates a flow diagram of a method of the functions of the TLPMU engine of FIG. 1, according to an embodiment;

[0013] FIG. 7 illustrates a flow diagram of a method of the functions of the ODTLA engine of FIG. 1, according to an embodiment; and

[0014] FIG. 8 illustrates a flow diagram of a method for deploying a target patch to address an affected image layer in a container image, according to an embodiment.

[0015] The detailed description explains embodiments of the disclosure, together with advantages and features, by way of example with reference to the drawings.DETAILED DESCRIPTION

[0016] One or more embodiments described herein relate to selective layer deployment for container environments. It should be appreciated that one or more embodiments described herein are not limited to any particular containerization software or particular container environment, and that one or more embodiments may be practiced utilizing anygenerally known types of containerization software or container environment including, but not limited to, Docker.

[0017] Descriptions of various embodiments of the present disclosure are presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.

[0018] Various aspects of the present disclosure are described by narrative text, flowcharts, block diagrams of computer systems and / or block diagrams of the machine logic included in computer program product (CPP) embodiments. With respect to any flowcharts, depending upon the technology involved, the operations can be performed in a different order than what is shown in a given flowchart. For example, again depending upon the technology involved, two operations shown in successive flowchart blocks may be performed in reverse order, as a single integrated step, concurrently, or in a manner at least partially overlapping in time.

[0019] A computer program product embodiment (“CPP embodiment” or “CPP”) is a term used in the present disclosure to describe any set of one, or more, storage media (also called “mediums”) collectively included in a set of one, or more, storage devices that collectively include machine readable code corresponding to instructions and / or data for performing computer operations specified in a given CPP claim. A “storage device” is any tangible device that can retain and store instructions for use by a computer processor. Without limitation, the computer readable storage medium may be an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, a mechanical storage medium, or any suitable combination of the foregoing. Some known types of storage devices that include these mediums include: diskette, hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or Flash memory), static random-access memory (SRAM), compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded device (such aspunch cards or pits / lands formed in a major surface of a disc) or any suitable combination of the foregoing. A computer readable storage medium, as that term is used in the present disclosure, is not to be construed as storage in the form of transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide, light pulses passing through a fiber optic cable, electrical signals communicated through a wire, and / or other transmission media. As will be understood by those of skill in the art, data is typically moved at some occasional points in time during normal operations of a storage device, such as during access, de-fragmentation or garbage collection, but this does not render the storage device as transitory because the data is not transitory while it is stored.

[0020] FIG. 1 illustrates a computing environment 100, according to an embodiment. Computing environment 100 contains an example of an environment for the execution of at least some of the computer code involved in performing the inventive methods, such as a container engine 150, which may be used for recovering layers of a container. The container engine 150 may include a target layer patch mark updater (TLPMU) engine 152 and an on- demand target layer adapter (ODTLA) engine 154. In addition to container engine 150, computing environment 100 includes, for example, computer 101, wide area network (WAN) 102, end user device (EUD) 103, remote server 104, public cloud 105, and private cloud 106. In this embodiment, computer 101 includes processor set 110 (including processing circuitry 120 and cache 121), communication fabric 111, volatile memory 112, persistent storage 113 (including operating system 122 and container engine 150, as identified above), peripheral device set 114 (including user interface (UI) device set 123, storage 124, and Internet of Things (loT) sensor set 125), and network module 115. Remote server 104 includes remote database 130. Public cloud 105 includes gateway 140, cloud orchestration module 141, host physical machine set 142, virtual machine set 143, and container set 144.

[0021] COMPUTER 101 may take the form of a desktop computer, laptop computer, tablet computer, smart phone, smart watch or other wearable computer, mainframe computer, quantum computer or any other form of computer or mobile device now known or to be developed in the future that is capable of running a program, accessing a network or querying a database, such as remote database 130. As is well understood in the art of computer technology, and depending upon the technology, performance of a computer- implemented method may be distributed among multiple computers and / or between multiplelocations. On the other hand, in this presentation of computing environment 100, detailed discussion is focused on a single computer, specifically computer 101, to keep the presentation as simple as possible. Computer 101 may be located in a cloud, even though it is not shown in a cloud in Figure 1. On the other hand, computer 101 is not required to be in a cloud except to any extent as may be affirmatively indicated.

[0022] PROCESSOR SET 110 includes one, or more, computer processors of any type now known or to be developed in the future. Processing circuitry 120 may be distributed over multiple packages, for example, multiple, coordinated integrated circuit chips. Processing circuitry 120 may implement multiple processor threads and / or multiple processor cores. Cache 121 is memory that is located in the processor chip package(s) and is typically used for data or code that should be available for rapid access by the threads or cores running on processor set 110. Cache memories are typically organized into multiple levels depending upon relative proximity to the processing circuitry. Alternatively, some, or all, of the cache for the processor set may be located “off chip.” In some computing environments, processor set 110 may be designed for working with qubits and performing quantum computing.

[0023] Computer readable program instructions are typically loaded onto computer 101 to cause a series of operational steps to be performed by processor set 110 of computer 101 and thereby effect a computer-implemented method, such that the instructions thus executed will instantiate the methods specified in flowcharts and / or narrative descriptions of computer-implemented methods included in this document (collectively referred to as “the inventive methods”). These computer readable program instructions are stored in various types of computer readable storage media, such as cache 121 and the other storage media discussed below. The program instructions, and associated data, are accessed by processor set 110 to control and direct performance of the inventive methods. In computing environment 100, at least some of the instructions for performing the inventive methods may be stored in container engine 150 in persistent storage 113.

[0024] COMMUNICATION FABRIC I l l is the signal conduction path that allows the various components of computer 101 to communicate with each other. Typically, this fabric is made of switches and electrically conductive paths, such as the switches and electrically conductive paths that make up busses, bridges, physical input / output ports and the like.Other types of signal communication paths may be used, such as fiber optic communication paths and / or wireless communication paths.

[0025] VOLATILE MEMORY 112 is any type of volatile memory now known or to be developed in the future. Examples include dynamic type random access memory (RAM) or static type RAM. Typically, volatile memory 112 is characterized by random access, but this is not required unless affirmatively indicated. In computer 101, the volatile memory 112 is located in a single package and is internal to computer 101, but, alternatively or additionally, the volatile memory may be distributed over multiple packages and / or located externally with respect to computer 101.

[0026] PERSISTENT STORAGE 113 is any form of non-volatile storage for computers that is now known or to be developed in the future. The non-volatility of this storage means that the stored data is maintained regardless of whether power is being supplied to computer 101 and / or directly to persistent storage 113. Persistent storage 113 may be a read only memory (ROM), but typically at least a portion of the persistent storage allows writing of data, deletion of data and re-writing of data. Some familiar forms of persistent storage include magnetic disks and solid-state storage devices. Operating system 122 may take several forms, such as various known proprietary operating systems or open-source Portable Operating System Interface-type operating systems that employ a kernel. The code included in container engine 150 typically includes at least some of the computer code involved in performing the inventive methods.

[0027] PERIPHERAL DEVICE SET 114 includes the set of peripheral devices of computer 101. Data communication connections between the peripheral devices and the other components of computer 101 may be implemented in various ways, such as Bluetooth connections, Near-Field Communication (NFC) connections, connections made by cables (such as universal serial bus (USB) type cables), insertion-type connections (for example, secure digital (SD) card), connections made through local area communication networks and even connections made through wide area networks such as the internet. In various embodiments, UI device set 123 may include components such as a display screen, speaker, microphone, wearable devices (such as goggles and smart watches), keyboard, mouse, printer, touchpad, game controllers, and haptic devices. Storage 124 is external storage, such as an external hard drive, or insertable storage, such as an SD card. Storage 124 may be persistent and / or volatile. In some embodiments, storage 124 may take the form of aquantum computing storage device for storing data in the form of qubits. In embodiments where computer 101 is required to have a large amount of storage (for example, where computer 101 locally stores and manages a large database) then this storage may be provided by peripheral storage devices designed for storing very large amounts of data, such as a storage area network (SAN) that is shared by multiple, geographically distributed computers. loT sensor set 125 is made up of sensors that can be used in Internet of Things applications. For example, one sensor may be a thermometer and another sensor may be a motion detector.

[0028] NETWORK MODULE 115 is the collection of computer software, hardware, and firmware that allows computer 101 to communicate with other computers through WAN 102. Network module 115 may include hardware, such as modems or Wi-Fi signal transceivers, software for packetizing and / or de-packetizing data for communication network transmission, and / or web browser software for communicating data over the internet. In some embodiments, network control functions and network forwarding functions of network module 115 are performed on the same physical hardware device. In other embodiments (for example, embodiments that utilize software-defined networking (SDN)), the control functions and the forwarding functions of network module 115 are performed on physically separate devices, such that the control functions manage several different network hardware devices. Computer readable program instructions for performing the inventive methods can typically be downloaded to computer 101 from an external computer or external storage device through a network adapter card or network interface included in network module 115.

[0029] WAN 102 is any wide area network (for example, the internet) capable of communicating computer data over non-local distances by any technology for communicating computer data, now known or to be developed in the future. In some embodiments, the WAN 102 may be replaced and / or supplemented by local area networks (LANs) designed to communicate data between devices located in a local area, such as a WiFi network. The WAN and / or LANs typically include computer hardware such as copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and edge servers.

[0030] END USER DEVICE (EUD) 103 is any computer system that is used and controlled by an end user (for example, a customer of an enterprise that operates computer 101), and may take any of the forms discussed above in connection with computer 101. EUD103 typically receives helpful and useful data from the operations of computer 101. For example, in a hypothetical case where computer 101 is designed to provide a recommendation to an end user, this recommendation would typically be communicated from network module 115 of computer 101 through WAN 102 to EUD 103. In this way, EUD 103 can display, or otherwise present, the recommendation to an end user. In some embodiments, EUD 103 may be a client device, such as thin client, heavy client, mainframe computer, desktop computer and so on.

[0031] REMOTE SERVER 104 is any computer system that serves at least some data and / or functionality to computer 101. Remote server 104 may be controlled and used by the same entity that operates computer 101. Remote server 104 represents the machine(s) that collect and store helpful and useful data for use by other computers, such as computer 101. For example, in a hypothetical case where computer 101 is designed and programmed to provide a recommendation based on historical data, then this historical data may be provided to computer 101 from remote database 130 of remote server 104.

[0032] PUBLIC CLOUD 105 is any computer system available for use by multiple entities that provides on-demand availability of computer system resources and / or other computer capabilities, especially data storage (cloud storage) and computing power, without direct active management by the user. Cloud computing typically leverages sharing of resources to achieve coherence and economies of scale. The direct and active management of the computing resources of public cloud 105 is performed by the computer hardware and / or software of cloud orchestration module 141. The computing resources provided by public cloud 105 are typically implemented by virtual computing environments that run on various computers making up the computers of host physical machine set 142, which is the universe of physical computers in and / or available to public cloud 105. The virtual computing environments (VCEs) typically take the form of virtual machines from virtual machine set 143 and / or containers from container set 144. It is understood that these VCEs may be stored as images and may be transferred among and between the various physical machine hosts, either as images or after instantiation of the VCE. Cloud orchestration module 141 manages the transfer and storage of images, deploys new instantiations of VCEs and manages active instantiations of VCE deployments. Gateway 140 is the collection of computer software, hardware, and firmware that allows public cloud 105 to communicate through WAN 102.

[0033] Some further explanation of virtualized computing environments (VCEs) will now be provided. VCEs can be stored as “images.” A new active instance of the VCE can be instantiated from the image. Two familiar types of VCEs are virtual machines and containers. A container is a VCE that uses operating-system-level virtualization. This refers to an operating system feature in which the kernel allows the existence of multiple isolated user-space instances, called containers. These isolated user-space instances typically behave as real computers from the point of view of programs running in them. A computer program running on an ordinary operating system can utilize all resources of that computer, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, programs running inside a container can only use the contents of the container and devices assigned to the container, a feature which is known as containerization.

[0034] PRIVATE CLOUD 106 is similar to public cloud 105, except that the computing resources are only available for use by a single enterprise. While private cloud 106 is depicted as being in communication with WAN 102, in other embodiments a private cloud may be disconnected from the internet entirely and only accessible through a local / private network. A hybrid cloud is a composition of multiple clouds of different types (for example, private, community or public cloud types), often respectively implemented by different vendors. Each of the multiple clouds remains a separate and discrete entity, but the larger hybrid cloud architecture is bound together by standardized or proprietary technology that enables orchestration, management, and / or data / application portability between the multiple constituent clouds. In this embodiment, public cloud 105 and private cloud 106 are both part of a larger hybrid cloud.

[0035] Containers package together code and its dependencies to provide for virtualization. Some approaches to implementing containers involve packaging the contents of image layers into an image and pushing the image to an image repository. The image can then be pulled from the image repository to be implemented on other systems, such as by end users. When pulling an image from the image repository, the contents of the image layers and any parent layers for the image are downloaded to a local graph. The local graph (also referred to as a “local graph node”) is a structure used for managing and visualizing dependencies, relationships, and / or states of Docker containers and services within a local environment (e.g., a user’s production environment). The local graph is managed by the Docker daemon (e.g., Dockerd), and the Docker command line interface (CLI) can be usedto interact with the local graph. For example, the Docker CLI can be used to list images, create containers, remove containers and images, inspect images and containers, and more. Once downloaded, the image can be stored on a local graph and deployed as a container. In other words, the layers of the image are uploaded to the image repository and then those layers are later downloaded to one or more local graphs for deployment as a container.

[0036] In some cases, after an image is released, it may be desirable to deliver new features or patches. Users at the enterprise level, for example, may not want to install all updated packages except potential outages or security fixes since most updates affect the existing production environment, which sometimes triggers unexpected results. This problem is particularly prominent in large-scale and frequently updated projects.

[0037] Take an example, an image having ten layers (LI - LIO, where LIO is the latest available update). Layer 8 (L8) includes fixes for security risks identified at Layer 5 (L5). Currently, the customers’ existing containers (e.g., container 1, container 2, . . . container n) on their environments, already deployed locally, have their top layers at Layer 5 (L5). The customer specifically requires to exploit Layer 8 to mitigate security risks on existing containers (e.g., container 1, container 2, . . . container n) and is not interested in Layer 6 (L6) or Layer 7 (L7). A situation may occur where a higher version of the image is used (e.g., a top layer of a user’s environment is Layer 8 (L8) in which L5 includes the patch in error followed by Layer 6 (L6) and Layer 7 (L7). In such cases, there are two options for the user: wait for the availability of L5 fixes (which may take several months to receive, for example) or to redeploy a lower safe version (e.g., the version for Layer 4 (L4) or lower) and abandon the newer functions or fixes on the higher layers (e.g., L6 and L7). Neither of these approaches is desirable due to the delay and loss of fixes and functionality (which may impact security vulnerability exposure, for example), respectively.

[0038] One approach to address these and other shortcomings is to provide an approach to ensure the better use of product capabilities, automation, and resiliency insights by exploiting the selective target layer on-demand locally while excluding uninterested or non-essential update layers in container environment. Such an approach can be achieved by introducing a new attribute “patchMark” to a manifest item associated with at target layer and constructing an additional chainlD / difflD / cachelD layer addressing specially for the target layer based on the existing container layer structure to help users promote the robustness of the enterprise-level production environments as soon as possible and avoid thesecurity vulnerability exposure as little as possible. This approach enables users to exploit security fixes or specified layers without sacrificing the stability of the existing system. The approach is transparent to both the developers of the image and the end users.

[0039] One or more embodiments provides a Docker command “docker exec on demand layer or security -fix-layer” to trigger on-demand deployment, where the “layer” could be a layer name or layer ID.

[0040] One or more embodiments provides a Docker command “docker set layer as security fixes” to update a target layer’s manifest attribute “patchMark” and push the updated manifest to the repository, where the “layer” could be a layer name or layer ID.

[0041] According to one or more embodiments, the manifest attribute “patchMark” is added to manifest and is assigned with security-fix-layer if the fix is related to a security issue.

[0042] The TLPMU engine 152 updates the manifest attribute “patchMark” with security -fix-layer and then pushes the updated manifest item to the manifest file for the target layer.

[0043] The ODTLA engine 154 constructs an additional chainlD / difflD / cachelD layer addressing for the target layer. According to one or more embodiments, the ODTLA engine 154 parses Docker commands (e.g., “docker exec on demand layer or security -fix-layer” and / or “docker set layer as security fixes”) and retrieves the difflD of the target layer. According to one or more embodiments, the ODTLA engine 154 constructs the chainlD of the target layer with the current top layer’s chainlD and target layer’s difflD. According to one or more embodiments, the ODTLA engine 154 makes the parent of the target layer’s chainlD point to the current top layer’s chainlD, makes the cache of the target layer’s chainlD point to the cachelD of the target layer, then makes the difflD of the target layer’s chainlD point to the difflD of the target layer.

[0044] As used herein, “diff ’ refers to a folder that stores a “difflD” and is used to check layer items on a root file system via a command “docker inspect image layer checksum ID,” which is obtained by calculating a tar data checksum of the image layer “diff’ folder. The “diff’ stores information about the content of a layer, such as updated file, new file, removedfile, directory file, and / or the like, including combinations and / or multiples thereof. The “difflD” is a unique identifier that identifies the layers of the image.

[0045] As used herein, “chainlD” refers to a unique identifier used in container environments to represent the hierarchical relationship between different layers of a container image. The “chainlD” is generated by hashing the parent layer’s chainlD and the current layer's difflD.

[0046] As used herein, “cache ID” refers to a unique identifier used in container environments to manage the caching of image layers. The “cachelD” is a randomly generated universally unique identifier (UUID) created locally when downloading a layer, which points to the actual location where the layer files are stored.

[0047] FIG. 2 illustrates a system 220 for selectively applying security fixes to container image layers in a container environment. The system 220 includes a repository 201 storing a container image 200 and a local graph 202 executing a container 210. Each of the container image 200 and the container 210 include layers as shown. The container image 200 is stored in an image repository 201 (also referred to as “repository 201” for brevity) and can be downloaded to and installed on the local graph 202 as the container 210. A container image (e.g., the container image 200) is a standalone executable software package that includes the information needed to run a piece of software, including the code, runtime, system tools, libraries, and settings. Container images are used to create containers, which are instances of the container images running as isolated processing on a host operating system (e.g., the operating system 122). For example, the container image 200 is used to create the container 210. According to an embodiment, the container 210 in FIG. 2 is a container image pulled from the image repository 201 to the local graph 202. According to another embodiment, consider the following example. Docker mounts layers (e.g., a base layer, layer LI, . . . Layer L7, Layer L8) at one mount point. These are called image layers, and the container 210 exploited with this image can share the image layers (e.g., read-only layers) and have their own container layer (read-write layer). For example, Docker runs three containers Cl, C2, C3 with image II, then the containers Cl, C2, C3 share the image layers of II, which is stored in local graph 202 as the container 210 shown.

[0048] According to one or more embodiments, the repository 201 stores the container image 200, which includes multiple image layers (LI to L10) and a manifest 203 associated with the container image 200. The manifest 203 is, for example, a JSON-formatted file thatprovides metadata about the container image 200, such as its layers, configuration, and other attributes. The manifest 203 serves as a blueprint for constructing the container image 200, detailing the sequence and properties of each layer. According to one or more embodiments, the manifest 203 includes information, such as the schema version, media type, and a list of layers with their respective digests (hashes), sizes, and media types. Additionally, the manifest 203 may contain custom attributes like “patchMark” to indicate specific characteristics, such as security fixes. The manifest ensures that the container image can be accurately reconstructed and verified, maintaining the integrity and consistency of the image across different environments. According to one or more embodiments, the manifest 203 includes the attribute “patchMark” which is used to identify layers containing security fixes (e.g., “security-fix-layer”). An example of the attribute “patchMark” is as follows: level L5 is identified as an affected image layer (e.g., L5 has a CVE), and level L8 fixes the security issue of the affected image layer (e.g., L5).

[0049] A non-limiting example of the manifest 203, such as for the layer L8, is as follows, with the inclusion of the “patchMark” attribute set to “security -fix-lay er”:L8 Manifest:{"schemaVersion": 2,"patchMark" : security-fix-layer"mediaType": "application / vnd.docker.distribution.manifest.v2+json", "config": {"mediaType": "application / vnd.docker.container.image.vl+json", "size": 1520,},"layers": [{"mediaType": "application / vnd.docker.image.rootfs.diff.tar.gzip", "size": 972, "digest": "sha256: e2e51ecd "}]}

[0050] The TLPMU engine 152 is responsible for updating the manifest 203 with the patchMark attribute. This process is triggered by a Docker command “docker set layer as security fixes.” The OTDLA engine 152 is used to construct the chainlD with the current top layer’s chainlD and target layer’s difflD for the specified layers or security fix layers. For example, as shown in FIG. 3, the TLPMU engine 152 is triggered by issuing the command “docker set L8 as security fixes.” Then, the TLPMU engine 152 updates the manifest 203 for L8 by setting the “patchMark” attribute as “security -fix-lay er.” The TLPMU engine 152 then pushes the updated manifest for L8 to the repository 201.

[0051] The ODTLA engine 154 is responsible for downloading the specified image layer (e.g., L8) (also referred to as a “target layer” or “target patch”) from the repository 201 to the local graph 202. This process is triggered by a Docker command “docker exec on demand layer or security -fix-lay er.” The ODTLA engine 154 is used to exploit selective target layer (e.g., security fix layer or specified layer on-demand locally while excluding uninterested or non-essential update layers in container environments) by constructing an additional chainlD / difflD / cachelD for the target layer based on current container layer structure on local. For example, as shown in FIG. 3, the ODTLA engine 154 parses the Docker command “docker exec on demand security-fix-layer” to retrieve the difflD (e.g., “sha256:e2e51ec. . .”) of the target layer (e.g., L8). The ODTLA engine 154 then generates the chainlD for L8 (e.g., “sha256: e2e51ecd22dcbc31...”) with the current top layer L5’s chainlD (e.g., “sha256: fervvfverbv33...”) and L8’s difflD (e.g., “sha256: e2e51ecd...”). According to one or more embodiments, chainID=sha256( Parent chain id + self diff id). The ODTLA engine 154 makes the parent of the target layer (e.g., L8) chainlD point to the chainlD of the current top layer (e.g., L5).

[0052] In the local graph 202, the specified layer (L8) is applied on top of the existing layers (L4 and L5), which may include layers with identified common vulnerabilities and exposures (CVEs).

[0053] The container 210 is then run at the local graph 202 with the updated layers (e.g., L8), ensuring that only the security fixes are applied without including non-essential updates (e.g., L6 and L7). This approach enhances the stability and security of the container environment by selectively applying patches.

[0054] FIG. 3 is now described in more detail. In particular, FIG. 3 illustrates a system 300 for selectively applying security fixes to container image layers in a containerenvironment. The system includes a repository 201, a diff ids structure 310 for storing difflDs, and a chainlD structure 312 for storing chainlDs.

[0055] The repository 201 stores the container image 200 multiple image layers (e.g., layers L5 to L10, among others) and is responsible for managing the container images. A docker command “docker set layer as security fixes” is used by the TLPMU engine 152 to trigger the process of marking a specific layer as a security fix.

[0056] The diff ids structure 310 stores information about the different layers of the container image 200, each identified by a unique diffID. In this example, the layers include L3 (sha256: fsc34vv...), L4 (sha256: wea4dvd...), L5 (sha256: 43eefe9...), and L8 (sha256: e2e51ecd...). The diffID can be a hash value generated using an encryption technique, such as SHA-256 or another suitable algorithm.

[0057] The chainlD structure 312 stores the hierarchical relationship between the layers of the container image 200. Each layer’s chainlD is generated by hashing a parent layer’s chainlD and the layer’s diffID. For example, the chainlD for L8 (sha256: 3a44b5d891ab...) is generated by combining the chainlD of its parent layer L5 (sha256: fervvfverbv33...) and its own diffID (sha256: e2e51ecd...). The chainlD structure 312 includes links to the parent layer, the diffID, and the cachelD for each layer.

[0058] When the docker command “docker exec on demand L8” is executed, a selective target layer (e.g. L8) is exploited. The system 300 then downloads the image layer (e.g., L8) from the repository 201 and updates the diff ids structure 310 and the chainlD structure 312 accordingly. This process ensures that the security fixes are applied without including non- essential updates or affecting other layers (e.g., L6, L7), thereby maintaining the stability and security of the container environment.

[0059] FIG. 4 illustrates the relationship between the diffID, chainlD, and cachelD stored in respective diff ids structure 310, chain ID structure 312, and cachelD structure 414 in a container environment, showcasing how layers are managed and linked to ensure efficient application of updates and security fixes.

[0060] The diff ids structure 310 represents the root filesystem (Root FS) identifiers for each layer of the container image 200. Each layer is uniquely identified by a diffID, which captures the changes introduced by that layer. In this example, the layers include L5 (sha256:4356eae0cef9...), L6 (sha256: eae0cef52...), L7 (sha256: e7e77ae6...), and L8 (sha256: e2e51ecd...).

[0061] The chainlD structure 312 stores the hierarchical relationship between the layers. Each layer’s chainlD is generated by hashing the parent layer’s chainlD and the layer’s diffID. For example, the chainlD for L8 (sha256: 3a44b5d891ab...) is generated by combining the chainlD of its parent layer L7 (sha256: 3alfad3f58fe6746...) and its own diffID (sha256: e2e51ecd...). The chainlD structure 312 includes links to the parent layer, the diffID, and the cachelD for each layer.

[0062] The cachelD structure 414 represents the cache identifiers for each layer, stored, for example, in the / overlay2 directory. Each layer’s cachelD is linked to its corresponding diffID and chainlD. For example, the cachelD for L8 (b206a6el8e27861b...) is linked to its diffID (sha256: e2e51ecd...) by its chainlD (sha256: 3a44b5d891ab...). The cachelD for a layer is stored in the chainlD for that layer. The cachelD structure 414 stores, for each cachelD, a link, a lower layer, and the diffID.

[0063] This figure demonstrates how the diffID, chainlD, and cachelD structures work together to manage container layers efficiently. By maintaining these relationships, one or more embodiments can selectively apply updates and security fixes to specific layers without affecting other layers, thereby ensuring the stability and security of the container environment.

[0064] FIG. 5 illustrates the relationship between the diffID, chainlD, and cachelD stored in respective diff ids structure 310, chain ID structure 312, and cachelD structure 414 in a container environment, showcasing how layers are managed and linked to ensure efficient application of updates and security fixes. This example, as compared to FIG. 4, shows the updated addressing of image layers for the container image 200 after a patchMark is applied to one of the layers (e.g., the layer L8). Particularly, the patchMark is applied to layer L8, but not layers L6 or L7, because the layer L8’s parent layer is layer L5.

[0065] FIG. 6 illustrates a flow diagram of a method of the functions of the TLPMU engine 152 of FIG. 1, according to an embodiment. The method 600 can be performed by any suitable computing system, device, or environment, such as those described herein (e.g., the computing environment 100 and / or the computer 101 of FIG. 1). According to one or more embodiments, the method 800 is performed, in whole or in part, using container engine150 (including one or more of the TLPMU engine 152 and / or the ODTLA engine 154) of FIG. 1. According to one or more embodiments, the TPLMU engine 152 can be disposed in a graph driver of the local graph 202 and the ODTLA engine 154 can be disposed in an engine driver of a docker daemon (not shown). Other configurations and arrangements may be possible in other embodiments in accordance with one or more embodiments described herein.

[0066] The method 600 is initiated by a container command “docker set layer as security fixes” as described herein. The method 600 begins at block 602 and proceeds to block 604. At block 604, the TLPMU engine 152 requests an update to the layer manifest with a patch mark. This step ensures that the system recognizes the desire to apply a security fix to a specific layer (e.g., L8). At block 606, the TLPMU engine 152 modifies the target layer’s manifest attribute (e.g., the attribute of the manifest of L8) to include the “patchMark” with the value “security-fix-layer.” This modification marks the layer (e.g., L8) as containing a security fix, distinguishing it from other layers (e.g., L6, L7). At block 608, the TLPMU engine 152 pushes the updated manifest of the target layer to the repository 201. This step ensures that the repository has the latest information about the security fix, making it available for deployment. The method concludes at block 610, where the process ends. The method 600 ensures that security fixes are applied efficiently and accurately to the desired layer(s) without affecting other layers, thereby maintaining the stability and security of the container environment.

[0067] Additional processes also may be included, and it should be understood that the processes depicted in FIG. 6 represent illustrations, and that other processes may be added or existing processes may be removed, modified, or rearranged without departing from the scope of the present disclosure. It should also be understood that the processes depicted in FIG. 6 may be implemented as programmatic instructions stored on a non-transitory computer-readable storage medium that, when executed by a processor (e.g., the processor set 110, the processing circuitry 120) of a computing system (e.g., the computer 101), cause the processor to perform the processes described herein.

[0068] FIG. 7 illustrates a flow diagram of a method 700 of the functions of the ODTLA engine 154 of FIG. 1, according to an embodiment. The method 700 can be performed by any suitable computing system, device, or environment, such as those described herein (e.g., the computing environment 100 and / or the computer 101 of FIG. 1). According to one ormore embodiments, the method 700 is performed, in whole or in part, using container engine 150 (including one or more of the TLPMU engine 152 and / or the ODTLA engine 154) of FIG. 1. According to one or more embodiments, the TPLMU engine 152 can be disposed in a graph driver of the local graph 202 and the ODTLA engine 154 can be disposed in an engine driver of a docker daemon (not shown). Other configurations and arrangements may be possible in other embodiments in accordance with one or more embodiments described herein.

[0069] The method 700 begins at block 702 and proceed to block 704. At block 704, the ODTLA engine 154 parses the docker command line, such as “docker exec layer or securityfix-layer.” At block 706, the ODTLA engine 154 retrieves the manifest of the top layer on the repository. At block 708, the ODTLA engine 154 checks if there is a “security -fix-lay er” in the command line. If yes, the method 700 proceeds to block 710; otherwise, the method 700 proceeds to block 709. At block 709, the TLPMU engine 152 checks if the current layer is the specified target layer. If yes, the method 700 returns to block 712; otherwise, the method 700 moves to block 730.

[0070] At block 710, the ODTLA engine 154 checks if the value of the manifest attribute patchMark is equal to “security-fix-layer.” If yes, the method 700 proceeds to block 712; otherwise, the method 700 moves to block 732.

[0071] At block 712, the ODTLA engine 154 pulls the target layer (L8) to the local graph (e.g., the local graph 202). At block 714, the ODTLA engine 154 uncompresses the target layer (L8) and retrieves the difflD from the layer’s metadata. At block 716, the ODTLA engine 154 generates the target layer’s chainlD (L8) by hashing the current top layer’s chainlD (L5) and the difflD of the target layer (L8). At block 718, the ODTLA engine 154 creates a folder named with the target layer’s chainlD (L8). At block 720, the ODTLA engine 154 makes the parent under the target layer’s chainlD (L8) point to the current top layer's chainlD (L5). At block 722, the ODTLA engine 154 creates a link diff to the target layer's difflD under the directory of the target layer’s chainlD (L8). At block 724, the ODTLA engine 154 creates a directory for the target layer's cachelD named with UUID (L8). At block 726, the ODTLA engine 154 points the cache of the target layer’s chainlD (L8) to the cachelD of the target layer (L8).

[0072] At block 728, the ODTLA engine 154 checks whether there is another specified layer or the keyword “security-fix-layer” in the command line. If yes, the method 700 proceeds to block 730; otherwise, the method 700 proceeds to block 736 and ends.

[0073] At block 730, the ODTLA engine 154 checks if the lower (parent) layer is the base layer. If yes, the method 700 moves to block 736 and ends; otherwise, the method 700 proceeds to block 732. At block 732, the lower (parent) layer’s manifest is retrieved.

[0074] Additional processes also may be included, and it should be understood that the processes depicted in FIG. 7 represent illustrations, and that other processes may be added or existing processes may be removed, modified, or rearranged without departing from the scope of the present disclosure. It should also be understood that the processes depicted in FIG. 7 may be implemented as programmatic instructions stored on a non-transitory computer-readable storage medium that, when executed by a processor (e.g., the processor set 110, the processing circuitry 120) of a computing system (e.g., the computer 101), cause the processor to perform the processes described herein.

[0075] FIG. 8 illustrates a flow diagram of a method 800 for deploying a target patch to address an affected image layer in a container image, according to an embodiment. The method 800 can be performed by any suitable computing system, device, or environment, such as those described herein (e.g., the computing environment 100 and / or the computer 101 of FIG. 1). According to one or more embodiments, the method 800 is performed, in whole or in part, using container engine 150 (including one or more of the TLPMU engine and / or the ODTLA engine) of FIG. 1.

[0076] At block 802, a container image (e.g., the container image 200) is downloaded from an image repository (e.g., the image repository 201). The image repository is a storage location where container images are stored and managed. These images include the components, such as code, runtime, system tools, libraries, and settings, for running a piece of software. The container image is downloaded to a local environment, referred to as a local graph (e.g., the local graph 202), where it can be deployed and managed.

[0077] At block 804, once the container image is downloaded, it is deployed as a container (e.g., the container 210) at the local graph (e.g., the local graph 202). The local graph is a structure used for managing and visualizing dependencies, relationships, and states of Docker containers and services within a local environment. The Docker daemon(Dockerd) manages the local graph, and the Docker command line interface (CLI) is used to interact with it. The container is an instance of the container image running as isolated processing on a host operating system (e.g., the computer 101). This step involves creating a container from the downloaded image and running it in the local environment.

[0078] At block 806, after deploying the container (e.g., the container 210), the container engine 150 identifies an affected image layer (e.g., L5 of the container image 200 of FIG. 2) of the plurality of image layers (e.g., the image layers of the container image 200). The affected image layer (e.g., L5) is an image layer that is considered an “affected” image layer because it includes a security vulnerability that needs to be addressed, such as a common vulnerabilities and exposures (CVE). According to one or more embodiments, the identification process involves scanning the image layers for known CVEs and pinpointing the specific layer that contains the vulnerability. According to one or more embodiments, the affected layer is identified based on CVEs to ensure that security vulnerabilities within the container environment are promptly and accurately addressed. CVEs are publicly disclosed information security vulnerabilities that provide a standardized identifier for known security issues. Identifying the affected layer based on CVEs offers several critical advantages, such as standardization (e.g., consistently and accurately identify which layers contain known security issues, ensuring that no vulnerabilities are overlooked), prioritization (e.g., prioritize which layers need immediate attention based on the severity of the vulnerabilities they contain where high-severity CVEs can be addressed first to mitigate the most critical security risks, for example), transparency (e.g., provides a clear and common language for discussing and addressing security issues, facilitating better communication and collaboration.), automation (e.g., automated tools can scan container layers for known CVEs, quickly identifying affected layers without manual intervention), compliance (e.g., helping organizations meet compliance requirements, ensuring that the organizations are taking the appropriate steps to secure their container environments), focused remediation (e.g., apply specific patches to the exact layers that contain the vulnerabilities), and / or the like, including combinations and / or multiples thereof. Identifying the affected layer based on CVEs ensures that security vulnerabilities are addressed efficiently, accurately, and in a standardized manner, enhancing the overall security and stability of the container environment.

[0079] At block 808, once the affected image layer is identified, the TLPMU engine 152 updates a manifest attribute of a target patch (e.g., L8 of FIG. 2) to be implemented for one of the plurality of layers of the container image. This step involves modifying the manifestfile of the target layer (e.g., L8 of FIG. 2) to include a new attribute “patchMark” with the value “security-fix-layer.” This attribute explicitly marks the layer as containing a security fix, ensuring that the system recognizes it as an update for addressing the identified CVE of the affected image layer (e.g., L5).

[0080] At block 810, the target patch is deployed using the ODTLA engine 154 to address the affected image layer. The deployment process involves pulling the target layer (e.g., L8) from the repository (e.g., the repository 201), uncompressing it, and applying the necessary changes to mitigate the CVE. The target patch is applied specifically to the affected image layer and is not applied to any image layers unrelated to the affected image layer (e.g., L6, L7). This selective deployment ensures that only the desired security fixes are applied, maintaining the stability and security of the container environment while avoiding the introduction of non-essential updates.

[0081] Additional processes also may be included, and it should be understood that the processes depicted in FIG. 8 represent illustrations, and that other processes may be added or existing processes may be removed, modified, or rearranged without departing from the scope of the present disclosure. It should also be understood that the processes depicted in FIG. 8 may be implemented as programmatic instructions stored on a non-transitory computer-readable storage medium that, when executed by a processor (e.g., the processor set 110, the processing circuitry 120) of a computing system (e.g., the computer 101), cause the processor to perform the processes described herein.

[0082] One or more embodiments described herein improves the functioning of a computer by optimizing the process of updating and maintaining container environments. Existing approaches require downloading and applying all image layers, including non- essential updates, which can be resource-intensive and time-consuming. One or more embodiments described herein provides a selective layer deployment mechanism that enhances efficiency and security in at least the following ways:

[0083] Resource Optimization: By allowing selective downloading and application of only the desired layers, such as security fixes, the one or more embodiments reduces the amount of data transferred and stored. This optimization leads to faster updates and lower storage requirements, freeing up computational resources for other tasks.

[0084] Enhanced Security: The introduction of the patchMark attribute enables precise identification and application of security fixes. This targeted approach ensures that critical vulnerabilities are addressed promptly without the risk of introducing instability from non- essential updates. As a result, one or more embodiments maintains a higher level of security with minimal disruption.

[0085] Improved Stability: By excluding uninterested or non-essential update layers, one or more embodiments minimizes the risk of unexpected results that can arise from applying unnecessary updates. This selective approach helps maintain the stability of the existing production environment, ensuring that applications continue to run smoothly.

[0086] Automation and Resiliency: One or more embodiments automates the process of identifying and applying updates through new docker commands and engines (e.g., the TLPMU engine 152 and the ODTLA engine 154). This automation reduces the manual effort for maintenance and enhances the computing environment resiliency by ensuring that updates are applied consistently and accurately.

[0087] Compatibility and Transparency: One or more embodiments is designed to be compatible with existing container tools, such as Docker and Podman. One or more embodiments operates transparently to both developers and end-users, ensuring seamless integration into current workflows without requiring significant changes to existing processes.

[0088] Overall, this invention streamlines the update process, enhances security, and maintains system stability, leading to a more efficient and reliable computing environment.

[0089] While the foregoing is directed to embodiments of the present disclosure, other and further embodiments of the present disclosure may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.

Claims

CLAIMS1. A computer-implemented method for selective layer deployment for container environments, the method comprising: downloading a container image from an image repository; deploying the container image as a container at a local graph, the container image comprising a plurality of image layers; identifying an affected image layer of the plurality of image layers; updating a manifest attribute of a target patch to be implemented for one of the plurality of image layers of the container image; and deploying the target patch to address the affected image layer, the target patch not being applied to any image layers unrelated to the affected image layer.

2. The computer-implemented method of claim 1, wherein the affected image layer includes at least one common vulnerabilities and exposures (CVE).

3. The computer-implemented method according to any of the previous claims, wherein updating the manifest attribute of the target patch comprises adding an attribute to a manifest of a target layer, the attribute indicating that the layer contains a security fix.

4. The computer-implemented method of claim 3, further comprising pushing an updated manifest having the attribute to a repository.

5. The computer-implemented method according to any of the previous claims, further comprising constructing a chain identifier for the target patch by hashing a current chain identifier for a top image layer of the plurality of image layers and a difif identifier for a target layer.

6. The computer-implemented method according to any of the previous claims, wherein the target patch is one of the plurality of image layers.

7. The computer-implemented method according to any of the previous claims, wherein deploying the target patch comprises creating a directory named with a chain identifier of the target patch and linking a parent of the chain identifier of the target patch to a current chain identifier of a current top image layer of the plurality of image layers.

8. A system comprising: a memory comprising computer readable instructions; anda processing device for executing the computer readable instructions, the computer readable instructions controlling the processing device to perform operations for selective layer deployment for container environments, the operations comprising: downloading a container image from an image repository; deploying the container image as a container at a local graph, the container image comprising a plurality of image layers; identifying an affected image layer of the plurality of image layers; updating a manifest attribute of a target patch to be implemented for one of the plurality of image layers of the container image; and deploying the target patch to address the affected image layer, the target patch not being applied to any image layers unrelated to the affected image layer.

9. The system of claim 8, wherein the affected image layer includes at least one common vulnerabilities and exposures (CVE).

10. The system according to any of the previous claims 8 to 9, wherein updating the manifest attribute of the target patch comprises adding an attribute to a manifest of a target layer, the attribute indicating that the layer contains a security fix.

11. The system of claim 10, wherein the operations further comprise pushing an updated manifest having the attribute to a repository.

12. The system according to any of the previous claims 8 to 11, wherein the operations further comprise constructing a chain identifier for the target patch by hashing a current chain identifier for a top image layer of the plurality of image layers and a diff identifier for a target layer.

13. The system according to any of the previous claims 8 to 12, wherein the target patch is one of the plurality of image layers.

14. The system according to any of the previous claims 8 to 13, wherein deploying the target patch comprises creating a directory named with a chain identifier of the target patch and linking a parent of the chain identifier of the target patch to a current chain identifier of a current top image layer of the plurality of image layers.

15. A computer program product compri sing : a set of one or more computer-readable storage media;program instructions, collectively stored in the set of one or more storage media, for causing a processor set to perform computer operations for selective layer deployment for container environments, the operations comprising: downloading a container image from an image repository; deploying the container image as a container at a local graph, the container image comprising a plurality of image layers; identifying an affected image layer of the plurality of image layers; updating a manifest attribute of a target patch to be implemented for one of the plurality of image layers of the container image; and deploying the target patch to address the affected image layer, the target patch not being applied to any image layers unrelated to the affected image layer.

16. The computer program product of claim 15, wherein the affected image layer includes at least one common vulnerabilities and exposures (CVE).

17. The computer program product according to any of the previous claims 15 to 16, wherein updating the manifest attribute of the target patch comprises adding an attribute to a manifest of a target layer, the attribute indicating that the layer contains a security fix.

18. The computer program product of claim 17, wherein the operations further comprise pushing an updated manifest having the attribute to a repository.

19. The computer program product according to any of the previous claims 15 to 18, wherein the operations further comprise constructing a chain identifier for the target patch by hashing a current chain identifier for a top image layer of the plurality of image layers and a diff identifier for a target layer.

20. The computer program product according to any of the previous claims 15 to 19, wherein the target patch is one of the plurality of image layers.

Citation Information

Patent Citations

  • Method and system for automatically identifying and correcting security vulnerabilities in containers

    EP3835987A1

  • Application aware graph driver

    US20180189122A1