EP4154141A1 - Method for securing a system call, method for implementing an associated security policy and devices for carrying out such methods - Google Patents

Method for securing a system call, method for implementing an associated security policy and devices for carrying out such methods

Info

Publication number
EP4154141A1
EP4154141A1 EP21732967.1A EP21732967A EP4154141A1 EP 4154141 A1 EP4154141 A1 EP 4154141A1 EP 21732967 A EP21732967 A EP 21732967A EP 4154141 A1 EP4154141 A1 EP 4154141A1
Authority
EP
European Patent Office
Prior art keywords
security
kernel
namespace
security policy
ker
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
EP21732967.1A
Other languages
German (de)
French (fr)
Inventor
Maxime BELAIR
Sylvie Laniepce
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
Orange SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Orange SA filed Critical Orange SA
Publication of EP4154141A1 publication Critical patent/EP4154141A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2113Multi-level security, e.g. mandatory access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Definitions

  • the invention relates to the general field of securing computer programs and more particularly to that of securing the system calls of a kernel by the processes of a software stack running in a user space.
  • the protection of a system call consists more particularly in protecting the accesses (read / create / modify / delete %) to sensitive kernel resources (inodes, files, ...) which can be triggered in the code of the system call from the user space, for example to manage sensitive operations of opening a file, sending a package, creating an "inode", ...
  • this protection consists in checking, just before access to these sensitive resources, whether the access can be validated.
  • the invention finds a preferred but non-limiting application in Linux-type environments.
  • the LSM (Linux Security Module) infrastructure is the standard means of improving the security of a software stack in a Linux environment, and in particular access to sensitive kernel resources. It makes it possible to set up in the form of Linux security modules additional security policies to Discretionary Access Control (DAC), which are in particular:
  • RBAC Role-Based Access Control
  • policies are applied at the kernel level in “hooks” (primitives allowing the LSM modules to execute arbitrary “pieces of code” during sensitive operations (opening a file, receiving a file). network packet, 7)).
  • LSMs Today there are LSMs that allow you to define and apply differentiated security policies for different software stacks in user space. However, these modules are difficult to maintain because they integrate both the security policy itself and its implementation. In addition, these LSMs enforce security policies by process or by process hierarchy. In this case, it is possible that an elevation of privilege will occur. For example, a process may have greater rights than those of the process that requested its creation because it inherits the rights of the process that created it. The latter is not in the hierarchy of processes of the one who has requested creation when the process creation is done through another process with which the requesting process is not related. In this case, the policies of the requesting process are not applied to the created process, which is undesirable from a security perspective.
  • One of the aims of the invention is to remedy shortcomings / drawbacks of the state of the art and / or to make improvements thereto.
  • the invention relates to a method for securing at least one system call triggered by a current process of a user space of a software system.
  • This method is implemented by a kernel of the software system before executing at least one operation triggered by said at least one system call and comprises:
  • the invention proposes a mechanism allowing a process or a set of processes in the user space to define its own security policies to be implemented by the kernel.
  • the invention finds a preferred application in the Linux environment but can be applied to any operating system offering a mechanism for isolating resources by namespace. Indeed, the invention proposes to define a new namespace dedicated to security management and to define the security policies in these namespaces.
  • this securing mechanism proposes associating the security policies with a namespace of the kernel instead of integrating the policy with the LSM module itself. This characteristic makes it possible very advantageously to benefit from all the mechanisms for managing the namespaces of the kernel.
  • the invention relates to a method for setting up a security policy, this method being implemented by a software stack of a user space of a software system to secure at least one system call likely to to be triggered by a process in the software stack.
  • This method comprises a step of loading the security policy into an area of the core of said system, said security policy being associated with a namespace dedicated to security management associated with an operation capable of being triggered by said at least one. a system call of this process.
  • the security policy can be loaded by the software stack in the kernel, including when the latter does not benefit from privileged administration rights. This characteristic is particularly advantageous because the LSMs modules of the current state of the art require that the policies be put in place by an entity of the user space having administration rights.
  • the invention is also aimed at a device comprising a user space and a kernel, the user space comprising at least one process capable of triggering at least one system call of the kernel.
  • This device is characterized in that:
  • the kernel comprises a security control infrastructure and a security module, this infrastructure being configured to execute the security module before executing at least one operation triggered by the system call;
  • said security module being configured for:
  • the method (or the device) for securing at least one system call determines whether the namespace of the current process includes at least one ancestor. If this is the case, the method (or the device) implements, for each of these ancestor namespaces, processing identical to that implemented for the namespace associated with the current process.
  • the method comprises:
  • a step for determining whether this or these name space include (s) a security policy associated with the operation and recorded in a zone of the kernel;
  • the software stack is a container and the loading of the security policy is defined by an instruction from a configuration file of the container.
  • This configuration file can, for example, comply with the specifications defined by the OCI (Open Container Initiative) or a file of type Dockerfile.
  • OCI Open Container Initiative
  • a Dockerfile type file is a text file that contains the commands necessary for generating the image of a container.
  • the security policies can be loaded by the software stack or by the “hot” container, that is to say during the execution of the container.
  • the operation triggered by a system call of the current process causes the execution of the security policy (s) associated with this operation in the namespace of this process, but also in the spaces of naming ancestors of the namespace of this process, if they exist.
  • the processes of a container inherit the security policies defined in the ancestor namespaces.
  • the process to which the security policy applies cannot have rights greater than those defined by the security policy (s) defined in the ancestor namespaces.
  • the proposed method makes it possible to stack personalized security policies for the processes of a namespace.
  • the software stack or the user space container constructs an executable code which contains its own security policies applicable to particular operations (opening a file, receiving a network packet, etc.).
  • This code can be loaded at runtime (ie dynamically) through a system interface to the kernel. It is then executed by the kernel when these operations (or events) occur for a process belonging to this container. Since this code is not necessarily executed by a trusted (potentially malicious) process, it should not be able to interfere with the rest of the system or the kernel. Thus, the security policies are only applied if they actually refer to the container at the origin of the policy applicable to the event.
  • a security policy cannot be disabled or modified from the user space, in particular by a software stack or a container belonging to a namespace for which this policy was defined.
  • the proposed securing method comprises a step of deleting at least one security policy by the kernel if this security policy is not included in a namespace dedicated to security associated with the. minus an active user-space process.
  • the proposed securing method comprises a step for determining whether the system call is associated with a sensitive operation and the securing method is implemented only for sensitive operations (file opening, sending package, execution of a function, ). This determination can in particular be carried out by the kernel system call manager.
  • the processing step consists in executing the operation if the result of the execution of said at least one security policy does not detect any security problem and in triggering a security action if the result of the execution of said at least one said security policy detects at least one security problem.
  • the security action comprises the destruction of the current process.
  • a security policy is a file in binary language obtained by compiling a program in eBPF language (for “Extended Berkeley Packet Filter”).
  • This characteristic advantageously makes it possible to prevent critical attacks, for example to recover information, modify the integrity or the availability of the rest of the system.
  • the proposed technique thus enables a software stack to set up security policies without compromising the security of the system. It allows in particular the application of hardened policies after initialization of the software stack to subsequently block behaviors which would only be acceptable on initialization.
  • At least one security policy calls at least one support function external to this policy and loaded in a dedicated kernel area by a user space entity with administrative rights.
  • support functions in English “helpers” can be loaded “hot”, ie during the execution of the kernel. They can be called by an eBPF security policy to perform critical processing such as access to kernel structures for the eBPF code. These support functions can only be written by an entity with administration rights and are not subject to the limitations related to the eBPF verifier.
  • This particular embodiment makes it possible, by deporting the critical accesses and complex processing operations to the support functions, the implementation by the containers of policies developed without compromising the security of the system and with low performance overheads.
  • At least one support function is a dynamic function that can be executed independently of its position, this dynamic function being called by a static support function compiled with the kernel and called by the security policy.
  • this dynamic function being called by a static support function compiled with the kernel and called by the security policy.
  • the method of setting up a proposed security policy comprises a step of analyzing a log file (better known under the term logs) comprising at least one result of the execution of a security policy executed by a security method as mentioned above.
  • the securing method and the method for implementing a security policy proposed are implemented by computer programs.
  • the invention also relates to a computer program on a recording medium, this program being capable of being implemented in a device or more generally in a computer.
  • This program includes instructions allowing the implementation of a method as described above.
  • This program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any other. desirable shape.
  • the invention also relates to an information medium or a recording medium readable by a computer, and comprising instructions of a computer program as mentioned above.
  • the information or recording medium can be any entity or device capable of storing the programs.
  • the media can comprise a storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or else a magnetic recording means, for example a floppy disk or a disk. hard, or flash memory.
  • the information or recording medium can be a transmissible medium such as an electrical or optical signal, which can be routed via an electrical or optical cable, by radio link, by wireless optical link or by other ways.
  • the proposed computer program can in particular be downloaded from an Internet type network.
  • the information or recording medium can be an integrated circuit in which a program is incorporated, the circuit being adapted to execute or to be used in the execution of one of the methods as described above.
  • FIG. 1 shows a device in accordance with a particular embodiment and the main steps of a method of setting up a security policy in accordance with a particular embodiment
  • FIG. 2 represents a process table that can be used in a particular embodiment
  • FIG. 3 represents a control table that can be used in a particular embodiment
  • FIG. 4 represents in the form of a flowchart the main steps of a securing method in accordance with a particular embodiment.
  • FIG. 1 represents a device 100 in accordance with the invention.
  • this device 100 has the hardware architecture of a computer. It comprises in particular a processor 10, a random access memory of the RAM 11 type, a read-only memory of the ROM type 12, and communication means 13.
  • This device comprises a SYS software system, this system comprising a KER kernel or operating system, and a USR user space.
  • the KER operating system is of the Linux type (registered trademark).
  • the user space USR comprises a process p0 (), two software stacks of container type C1, C2 and an administration tool ADM.
  • the process p0 () and the software stacks C1, C2 are associated with user level rights and the administration tool ADM with administrator level rights.
  • the software stacks C1, C2 of the user space USR are containers, each comprising a set of processes isolated from the rest of the software system SYS.
  • the processes of the USR user space can be isolated thanks to the known mechanism of namespaces.
  • the Linux operating system offers, in the current state of the art, several namespaces (for example: Network, IPC, PID, User) ... which can be used to isolate processes in a mechanism. in which sets of processes are defined, so that the processes of a given set cannot see the resources used by another set of processes.
  • KER kernel includes a GAS system call manager in which these system calls are implemented.
  • the invention proposes a security management mechanism for securing system calls triggering sensitive operations within the meaning of Linux Security Modules (LSM).
  • LSM Linux Security Modules
  • open file oper_open (), send packet oper_send () and function execute oper_exec () operations are considered to be sensitive operations.
  • the pO process does not call the open () send (), exec () system calls.
  • the invention proposes to use a new ENSECURE namespace dedicated to security management.
  • the process pO is associated with the security management namespace ENSECUREO
  • the container C1 is associated with the security management namespace ENSECURE1
  • the container C2 is associated with the namespace ENSECURE2.
  • FIG. 2 represents in detail a TABPID table of the processes p0, p1 and p2 stored in the kernel KER.
  • a process consists of a structure comprising several fields making it possible to manage the life cycle of the process such as its process identifier PID, its flags, its stack, etc.
  • the data structure corresponding to the current process can be recovered using the current instruction (see step E30, FIG. 4).
  • This structure also has an nsproxy field which has pointers to namespaces.
  • this nsproxy field includes an ENSECURE pointer to the namespace dedicated to the management of the security associated with the process.
  • This namespace defines a data structure which includes in particular the security policy defined in eBPF language. In the embodiment described here, these structures are recorded in a zone of security policies ZPS of the KER kernel.
  • the ENSECURE namespace of a process has a link to the ENSECURE namespace of the parent of the namespace of that process.
  • ENSECURE1 and ENSECURE2 associated respectively with the containers C1 and C2 point to the namespace ENSECUREO of the process p0.
  • the ENSECURE namespaces therefore form a tree.
  • a process can change the namespace to join the namespace of one of its child processes, for example by using the unshare () command.
  • the process p0 () has defined a security policy PSOFp0 to secure calls to the sensitive operation of opening the oper_open () file. It is assumed that it has not defined a security policy to secure calls to the sensitive packet send operation on the oper_send () network.
  • the processes of a container inherit the security policies defined by all of its ancestor ENSECURE namespaces.
  • the container C1 has defined its own security policy PSOFC1 to secure the calls by its processes, in this case pl (), to the sensitive operation of opening the oper_open file. (), in addition to the PSOFpO policy defined by the p0 () process.
  • the container C1 has defined a security policy PSTPC1 to secure the calls by its processes, in this case pl (), to the sensitive operation of sending a packet oper_send ().
  • the p2 () process of this container inherits the PSOFpO security policy defined by the p0 () process to secure its calls to the sensitive open file operation. But it does not define any security function to check the sensitive packet send operation.
  • each of the security policies PSOFp0, PSOFC1, PSTPC1 is defined by a software function in eBPF language compiled in binary. These security policies are recorded in the read only memory 12 of the device 100 and intended to be loaded into the security policy zone ZPS of the KER core.
  • This loading (step F10) can be done in different ways.
  • the read only memory 12 comprises an OCI (Open Container Initiative) type configuration file for each container, namely a FOCIC1 configuration file for the C1 container and a FOCIC2 configuration file for the C2 container.
  • OCI Open Container Initiative
  • the OCI configuration of a container is specified under the name config.json and details the characteristics of the container to be created.
  • This configuration file specifies in particular the files that the container must contain, its system interfaces, its namespaces, etc.
  • the OCI configuration file of a container includes instructions for the container to load its security policies into the security policy zone ZPS of the KER kernel.
  • the security policies PSOFC1 and PCTPC1 of the C1 container are copied from the read only memory 12 into a memory M1 of the C1 container.
  • the security policies are transferred from the memory M1, into the ZPS area of the kernel.
  • the loading of the security policy of a container in the KER core is defined by an instruction of a higher level container building method, for example the Dockerfile method.
  • the code of the container C1 also includes load_ps () instructions making it possible to load a security policy in the form of an eBPF file compiled in binary form in the security policy zone ZPS of the KER kernel.
  • This particular embodiment makes it possible in particular to load a new security policy which will be applied after the start of the container C1.
  • This load_ps () function consists of opening the eBPF file included in the read only memory 12 and copying it to an interface with the KER kernel.
  • the KER kernel comprises an ICS security control infrastructure for managing the Linux security modules, a Linux security module LSM1 in accordance with the invention and possibly at least one other security module LSM2, for example example, a SELinux module or an AppAmor module as mentioned previously.
  • the KER kernel includes a TABCTR control table which defines, for each sensitive OPS operation (opening a file, sending a packet on the network, etc.) whether the security module LSM1 wants to control or not these sensitive operations.
  • This TABCTR table is shown in Figure 3.
  • FIG. 4 represents in the form of a flowchart the main steps of a securing method in accordance with a particular embodiment.
  • this method is implemented by the GAS system call manager, the ICS security control infrastructure (LSM framework in English) and by the LSM1 security module.
  • the GAS system call manager determines, during a step E10, whether a system call triggered by a process in the user space must perform a sensitive operation. If so, it triggers the KER kernel ICS security monitoring infrastructure.
  • the ICS infrastructure determines that the sensitive operation OPS listed in the TABCTR table is supervised by the security module LSM1, the ICS infrastructure triggers the execution of the security module LSM1 during a step E20.
  • the security module LSM1 determines the namespace associated with the current process at the origin of this call. It uses the current process from the TABPID process table for this.
  • the security module LSM1 then executes a loop to execute the policies of the namespace of the current process linked to this sensitive operation. In a particular embodiment, the security module LSM1 then executes a loop to execute the policies of its ancestor namespaces if they exist.
  • the security module LSM1 determines whether the current namespace has defined one or more security policies to verify the validity of the sensitive operation.
  • the relevant security module LSM1 executes during a step E50 the security policy or policies defined in the namespace dedicated to the ENSECURE security management of the current process for this sensitive operation.
  • the security policy PSOFC1 is executed. This security policy returns a result RET of this execution to the security module LSM1.
  • a security policy and in particular the PSOFC1 security policy, returns a negative RET result if it detects a security problem (for example reflecting malicious or abnormal behavior) and a positive result if it does not detect any security problem.
  • the security module determines, if it exists, the parent namespace of the namespace of the current process (step E60) and the loop is repeated.
  • the security policy PSOFpO of the ENSECUREO namespace of the process pO is executed. If a security policy returns a negative RET result, the security module records this result in a KER kernel FLOG log file during a step E70 and sends this negative RET result to the security infrastructure ICS.
  • This FLOG log file can be analyzed (step F30) by the administrator by means of the administration tool ADM.
  • the LSM1 security module sends a positive RET result to the ICS security infrastructure (test E90).
  • the RET security infrastructure receives a positive RET result, it does not trigger any particular action and the system call is executed, unless an action is triggered by another LSM2 security module.
  • another LSM2 security module for example, a SELinux module and an AppAmor module.
  • the control infrastructure ICS triggers a security action AS during a step E80.
  • This action can consist of destroying the process that initiated the call and raising an alert in the FLOG log file.
  • this namespace when no process remains in a namespace dedicated to security management, this namespace is automatically destroyed by the kernel. This operation destroys the security policies associated with these namespaces.
  • this security policy is deleted by the kernel.
  • the security policies in compiled eBPF language can call functions of the KER kernel external to these policies, in order to implement critical operations which cannot be done directly by the security policy in eBPF language itself. -same. Such functions are known to those skilled in the art under the name of eBPF support functions (in English “Helper eBPF”).
  • such an FSUP support function can be written by an administrator, for example in C language, then compiled like a conventional kernel module with GCC (in English “GNU Compiler Collection”) .
  • this executable code is transformed so that it can be executed independently of its position according to the PIC (Position Independent Code) mechanism known to those skilled in the art.
  • PIC Position Independent Code
  • These dynamic FSUP support functions can be loaded (step F20) in a dedicated area of the kernel KER without interrupting the execution of the kernel.
  • these dynamic FSUP support functions can be invoked by the eBPF code of a security policy using a single static FSUPSTAT support function.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

Method for securing a system call, method for implementing an associated security policy and devices for carrying out such methods. The securing method secures at least one system call triggered by a current process of a user space of a software system. Said method is implemented by a kernel of the software system before executing at least one operation triggered by the at least one system call and comprises: a step (E30) of obtaining at least one namespace of the kernel, the namespace being dedicated to the security management associated with the current process; a step (E50) of executing a security policy associated with the operation and recorded in an area (ZPS) of the kernel (KER), which area is defined in the namespace; a step (E30) of obtaining at least one namespace (ENSECURE0) dedicated to the security management and ancestor of the namespace (ENSECURE1) of the current process (pl); a step (E50) of executing a security policy associated with the operation and recorded in an area (ZPS) of the kernel (KER) defined in the ancestor namespace; and a step of processing the system call according to a result (RET) of the executions.

Description

Procédé de sécurisation d'un appel système, procédé de mise en place d'une politique de sécurité associée et dispositifs mettant en oeuvre ces procédés Method for securing a system call, method for setting up an associated security policy and devices implementing these methods
L'invention se rapporte au domaine général de la sécurisation des programmes informatiques et plus particulièrement à celui de la sécurisation des appels système d'un noyau par les processus d'une pile logicielle s'exécutant dans un espace utilisateur. The invention relates to the general field of securing computer programs and more particularly to that of securing the system calls of a kernel by the processes of a software stack running in a user space.
Dans ce document, la protection d'un appel système consiste plus particulièrement à protéger les accès (lecture/création/modification/suppression...) aux ressources sensibles du noyau (inodes, fichiers, ...) qui peuvent être déclenchés dans le code de l'appel système depuis l'espace utilisateur par exemple pour gérer les opérations sensibles d'ouverture d'un fichier, d'envoi d'un paquet, de création d'un « inode », ... In this document, the protection of a system call consists more particularly in protecting the accesses (read / create / modify / delete ...) to sensitive kernel resources (inodes, files, ...) which can be triggered in the code of the system call from the user space, for example to manage sensitive operations of opening a file, sending a package, creating an "inode", ...
Plus précisément, cette protection consiste à vérifier, juste avant l'accès à ces ressources sensibles, si l'accès peut être validé. More precisely, this protection consists in checking, just before access to these sensitive resources, whether the access can be validated.
L'invention trouve une application privilégiée mais non limitative dans les environnements de type Linux. The invention finds a preferred but non-limiting application in Linux-type environments.
Dans l'état actuel de la technique, l'infrastructure LSM (Linux Security Module) est le moyen standard d'améliorer la sécurité d'une pile logicielle dans un environnement Linux, et en particulier l'accès aux ressources sensibles du noyau. Elle permet de mettre en place sous forme de modules de sécurité Linux des politiques de sécurité additionnelles au contrôle d'accès discrétionnaire (Discretionary Access Control - DAC) que sont en particulier : In the current state of the art, the LSM (Linux Security Module) infrastructure is the standard means of improving the security of a software stack in a Linux environment, and in particular access to sensitive kernel resources. It makes it possible to set up in the form of Linux security modules additional security policies to Discretionary Access Control (DAC), which are in particular:
- le contrôle d'accès obligatoire (Mandatory Access Control - MAC), notamment proposé par le module AppArmor ; - mandatory access control (Mandatory Access Control - MAC), in particular offered by the AppArmor module;
- le contrôle d'accès à base de rôle (Role-Based Access Control - RBAC), notamment proposé par le module SELinux ; et - Role-Based Access Control (RBAC), notably offered by the SELinux module; and
- le contrôle d'intégrité, notamment proposé par le module IMA. - integrity control, in particular offered by the IMA module.
De façon connue de l'homme du métier, ces politiques sont appliquées au niveau noyau dans des « hooks » (primitives permettant aux modules LSM d'exécuter des « bouts de codes » arbitraires lors d'opérations sensibles (ouverture de fichier, réception de paquet réseau, ...)). In a manner known to those skilled in the art, these policies are applied at the kernel level in “hooks” (primitives allowing the LSM modules to execute arbitrary “pieces of code” during sensitive operations (opening a file, receiving a file). network packet, ...)).
Il existe aujourd'hui des modules LSM qui permettent de définir et d'appliquer des politiques de sécurité différentiées pour différentes piles logicielles en espace utilisateur. Cependant, ces modules sont difficiles à maintenir car ils intègrent à la fois la politique de sécurité elle-même et sa mise en oeuvre. De plus, ces modules LSM appliquent des politiques de sécurité par processus ou par hiérarchie de processus. Dans ce cas, il est possible qu'une élévation de privilège se produise. Par exemple, un processus peut avoir des droits supérieurs à ceux du processus qui a demandé sa création car il hérite des droits du processus qui l'a créé. Ce dernier n'est pas dans la hiérarchie de processus de celui qui a demandé la création lorsque la création de processus se fait à travers un autre processus avec qui le processus demandeur n'a pas de lien de parenté. Dans ce cas, les politiques du processus demandeur ne sont pas appliquées au processus créé, ce qui n'est pas souhaitable sur le plan de la sécurité. Today there are LSMs that allow you to define and apply differentiated security policies for different software stacks in user space. However, these modules are difficult to maintain because they integrate both the security policy itself and its implementation. In addition, these LSMs enforce security policies by process or by process hierarchy. In this case, it is possible that an elevation of privilege will occur. For example, a process may have greater rights than those of the process that requested its creation because it inherits the rights of the process that created it. The latter is not in the hierarchy of processes of the one who has requested creation when the process creation is done through another process with which the requesting process is not related. In this case, the policies of the requesting process are not applied to the created process, which is undesirable from a security perspective.
Un des buts de l'invention est de remédier à des insuffisances/inconvénients de l'état de la technique et/ou d'y apporter des améliorations. One of the aims of the invention is to remedy shortcomings / drawbacks of the state of the art and / or to make improvements thereto.
Plus précisément, et selon un premier aspect, l'invention concerne un procédé de sécurisation d'au moins un appel système déclenché par un processus courant d'un espace utilisateur d'un système logiciel. Ce procédé est mis en oeuvre par un noyau du système logiciel avant d'exécuter au moins une opération déclenchée par ledit au moins un appel système et comporte : More precisely, and according to a first aspect, the invention relates to a method for securing at least one system call triggered by a current process of a user space of a software system. This method is implemented by a kernel of the software system before executing at least one operation triggered by said at least one system call and comprises:
- une étape d'obtention d'au moins un espace de nommage du noyau dédié à la gestion de sécurité associé au processus courant; a step of obtaining at least one namespace of the kernel dedicated to security management associated with the current process;
- une étape pour déterminer si ledit au moins un espace de nommage comporte une politique de sécurité associée à ladite opération et enregistrée dans une zone du noyau ; a step for determining whether said at least one namespace includes a security policy associated with said operation and recorded in a zone of the kernel;
- une étape d'exécution de la politique de sécurité ; et - a step of execution of the security policy; and
- une étape de traitement de l'appel système en fonction d'un résultat de cette exécution. a step of processing the system call as a function of a result of this execution.
Ainsi, et d'une façon générale, l'invention propose un mécanisme permettant à un processus ou à un ensemble de processus de l'espace utilisateur de définir ses propres politiques de sécurité à mettre en oeuvre par le noyau. Thus, and in general, the invention proposes a mechanism allowing a process or a set of processes in the user space to define its own security policies to be implemented by the kernel.
L'invention trouve une application privilégiée dans l'environnement Linux mais peut être appliquée à tout système d'exploitation offrant un mécanisme d'isolation des ressources par espace de nommage (en anglais « Namespace »). En effet, l'invention propose de définir un nouvel espace de nommage dédié à la gestion de sécurité et de définir les politiques de sécurité dans ces espaces de nommage. The invention finds a preferred application in the Linux environment but can be applied to any operating system offering a mechanism for isolating resources by namespace. Indeed, the invention proposes to define a new namespace dedicated to security management and to define the security policies in these namespaces.
Contrairement aux modules LSM de l'état de la technique, ce mécanisme de sécurisation propose d'associer les politiques de sécurité à un espace de nommage du noyau au lieu d'intégrer la politique au module LSM lui-même. Cette caractéristique permet fort avantageusement de bénéficier de tous les mécanismes de gestion des espaces de nommage du noyau. Unlike the LSM modules of the state of the art, this securing mechanism proposes associating the security policies with a namespace of the kernel instead of integrating the policy with the LSM module itself. This characteristic makes it possible very advantageously to benefit from all the mechanisms for managing the namespaces of the kernel.
Selon un deuxième aspect, l'invention concerne un procédé de mise en place d'une politique de sécurité, ce procédé étant mis en oeuvre par une pile logicielle d'un espace utilisateur d'un système logiciel pour sécuriser au moins un appel système susceptible d'être déclenché par un processus de la pile logicielle. Ce procédé comporte une étape de chargement de la politique de sécurité dans une zone du noyau dudit système, ladite politique de sécurité étant associée à un espace de nommage dédié à la gestion de sécurité associé à une opération susceptible d'être déclenchée par ledit au moins un appel système de ce processus. Ainsi, et de façon très avantageuse, la politique de sécurité peut être chargée par la pile logicielle dans le noyau, y compris quand celle-ci ne bénéficie pas de droits privilégiés d'administration. Cette caractéristique est particulièrement avantageuse car les modules LSMs de l'état actuel de la technique imposent que les politiques soient mises en place par une entité de l'espace utilisateur ayant des droits d'administration. According to a second aspect, the invention relates to a method for setting up a security policy, this method being implemented by a software stack of a user space of a software system to secure at least one system call likely to to be triggered by a process in the software stack. This method comprises a step of loading the security policy into an area of the core of said system, said security policy being associated with a namespace dedicated to security management associated with an operation capable of being triggered by said at least one. a system call of this process. Thus, and very advantageously, the security policy can be loaded by the software stack in the kernel, including when the latter does not benefit from privileged administration rights. This characteristic is particularly advantageous because the LSMs modules of the current state of the art require that the policies be put in place by an entity of the user space having administration rights.
L'invention vise aussi un dispositif comportant un espace utilisateur et un noyau, l'espace utilisateur comportant au moins un processus apte à déclencher au moins un appel système du noyau. Ce dispositif est caractérisé en ce que : The invention is also aimed at a device comprising a user space and a kernel, the user space comprising at least one process capable of triggering at least one system call of the kernel. This device is characterized in that:
- le noyau comporte une infrastructure de contrôle de sécurité et un module de sécurité, cette infrastructure étant configurée pour exécuter le module de sécurité avant d'exécuter au moins une opération déclenchée par l'appel système; the kernel comprises a security control infrastructure and a security module, this infrastructure being configured to execute the security module before executing at least one operation triggered by the system call;
- ledit module de sécurité étant configuré pour : - said security module being configured for:
- obtenir au moins un espace de nommage du noyau dédié à la gestion de sécurité associé au processus; - Obtain at least one namespace of the kernel dedicated to the security management associated with the process;
- déterminer si ledit au moins un espace de nommage comporte une politique de sécurité associée à l'opération et enregistrée dans une zone dudit noyau ; et determining whether said at least one namespace includes a security policy associated with the operation and recorded in a zone of said kernel; and
- exécuter ladite au moins une politique de sécurité. - execute said at least one security policy.
Dans un mode de réalisation, le procédé (ou le dispositif) de sécurisation d'au moins un appel système détermine si l'espace de nommage du processus courant comporte au moins un ancêtre. Si c'est le cas, le procédé (ou le dispositif) met en oeuvre pour chacun de ces espaces de nommage ancêtre, un traitement identique à celui mis en oeuvre pour l'espace de nommage associé au processus courant. In one embodiment, the method (or the device) for securing at least one system call determines whether the namespace of the current process includes at least one ancestor. If this is the case, the method (or the device) implements, for each of these ancestor namespaces, processing identical to that implemented for the namespace associated with the current process.
Plus précisément, dans ce mode de réalisation, le procédé comporte : More precisely, in this embodiment, the method comprises:
- une étape d'obtention du ou des espaces de nommage dédié(s) à la gestion de sécurité et ancêtre(s) de l'espace nommage du processus courant ; - a step of obtaining the name space (s) dedicated to security management and ancestor (s) of the namespace of the current process;
- une étape pour déterminer si ce ou ces espace(s) de nommage comporte(nt) une politique de sécurité associée à l'opération et enregistrée dans une zone du noyau ; a step for determining whether this or these name space (s) include (s) a security policy associated with the operation and recorded in a zone of the kernel;
- une étape d'exécution de cette politique de sécurité ; et - a stage of execution of this security policy; and
- une étape de traitement de l'appel système en fonction d'un résultat de cette exécution.a step of processing the system call as a function of a result of this execution.
Dans un mode de réalisation du procédé de mise en place d'une politique de sécurité proposé, la pile logicielle est un conteneur et le chargement de la politique de sécurité est défini par une instruction d'un fichier de configuration du conteneur. Ce fichier de configuration peut par exemple être conforme à aux spécifications définies par l'OCI (Open Container Initiative) ou un fichier de type Dockerfile. On rappelle qu'un fichier de type Dockerfile est un fichier texte qui comporte les commandes nécessaires à la génération de l'image d'un conteneur. In one embodiment of the method for setting up a proposed security policy, the software stack is a container and the loading of the security policy is defined by an instruction from a configuration file of the container. This configuration file can, for example, comply with the specifications defined by the OCI (Open Container Initiative) or a file of type Dockerfile. Remember that a Dockerfile type file is a text file that contains the commands necessary for generating the image of a container.
De façon particulièrement avantageuse, les politiques de sécurité peuvent être chargées par la pile logicielle ou par le conteneur « à chaud », c'est-à-dire pendant l'exécution du conteneur. In a particularly advantageous manner, the security policies can be loaded by the software stack or by the “hot” container, that is to say during the execution of the container.
Ainsi, l'opération déclenchée par un appel système du processus courant entraîne l'exécution de la ou les politique(s) de sécurité associée(s) à cette opération dans l'espace de nommage de ce processus, mais aussi dans les espaces de nommage ancêtres de l'espace de nommage de ce processus, s'ils existent. Thus, the operation triggered by a system call of the current process causes the execution of the security policy (s) associated with this operation in the namespace of this process, but also in the spaces of naming ancestors of the namespace of this process, if they exist.
Ainsi, et en particulier, les processus d'un conteneur héritent des politiques de sécurité définies dans les espaces de nommage ancêtres. Le processus sur lequel la politique de sécurité s'applique ne peut avoir des droits supérieurs à ceux définis par la ou les politiques de sécurité définies dans les espaces de nommage ancêtres. Thus, and in particular, the processes of a container inherit the security policies defined in the ancestor namespaces. The process to which the security policy applies cannot have rights greater than those defined by the security policy (s) defined in the ancestor namespaces.
En ce sens, il peut être dit que le procédé proposé permet d'empiler des politiques de sécurité personnalisées pour les processus d'un espace de nommage. In this sense, it can be said that the proposed method makes it possible to stack personalized security policies for the processes of a namespace.
Dans un mode de réalisation particulier, la pile logicielle ou le conteneur de l'espace utilisateur construit un code exécutable qui contient ses propres politiques de sécurité applicables à des opérations particulières (ouverture de fichier, réception de paquet réseau, ...). Ce code peut être chargé à l'exécution (c'est-à-dire dynamiquement) à travers une interface système vers le noyau. Il est alors exécuté par le noyau quand ces opérations (ou événements) se produisent pour un processus appartenant à ce conteneur. Puisque ce code n'est pas forcément exécuté par un processus de confiance (potentiellement malveillant), il ne doit pas être en mesure d'interférer avec le reste du système ou le noyau. Ainsi, les politiques de sécurité ne sont appliquées que si elles se réfèrent bien au conteneur à l'origine de la politique applicable à l'évènement. In a particular embodiment, the software stack or the user space container constructs an executable code which contains its own security policies applicable to particular operations (opening a file, receiving a network packet, etc.). This code can be loaded at runtime (ie dynamically) through a system interface to the kernel. It is then executed by the kernel when these operations (or events) occur for a process belonging to this container. Since this code is not necessarily executed by a trusted (potentially malicious) process, it should not be able to interfere with the rest of the system or the kernel. Thus, the security policies are only applied if they actually refer to the container at the origin of the policy applicable to the event.
De façon avantageuse, puisqu'il est possible qu'une pile logicielle soit compromise, une politique de sécurité ne peut pas être désactivée ou modifiée depuis l'espace utilisateur, en particulier par une pile logicielle ou un conteneur appartenant à un espace de nommage pour lequel cette politique a été définie. Advantageously, since it is possible for a software stack to be compromised, a security policy cannot be disabled or modified from the user space, in particular by a software stack or a container belonging to a namespace for which this policy was defined.
Dans un mode de réalisation particulier, le procédé de sécurisation proposé comporte une étape de suppression d'au moins une politique de sécurité par le noyau si cette politique de sécurité n'est pas comprise dans un espace de nommage dédié à la sécurité associé à au moins un processus actif de l'espace utilisateur. In a particular embodiment, the proposed securing method comprises a step of deleting at least one security policy by the kernel if this security policy is not included in a namespace dedicated to security associated with the. minus an active user-space process.
Dans un mode de réalisation particulier, le procédé de sécurisation proposé comporte une étape pour déterminer si l'appel système est associé à une opération sensible et le procédé de sécurisation n'est mis en oeuvre que pour les opérations sensibles (ouverture de fichier, envoi de paquet, exécution d'une fonction, ...). Cette détermination peut notamment être effectuée par le gestionnaire d'appels système du noyau. Dans un mode de réalisation du procédé de sécurisation proposé, l'étape de traitement consiste à exécuter l'opération si le résultat de l'exécution de ladite au moins une politique de sécurité ne détecte aucun problème de sécurité et à déclencher une action de sécurité si le résultat de l'exécution de ladite au moins une dite politique de sécurité détecte au moins un problème de sécurité. In a particular embodiment, the proposed securing method comprises a step for determining whether the system call is associated with a sensitive operation and the securing method is implemented only for sensitive operations (file opening, sending package, execution of a function, ...). This determination can in particular be carried out by the kernel system call manager. In one embodiment of the proposed security method, the processing step consists in executing the operation if the result of the execution of said at least one security policy does not detect any security problem and in triggering a security action if the result of the execution of said at least one said security policy detects at least one security problem.
Dans un mode de réalisation du procédé de sécurisation proposé, l'action de sécurité comporte la destruction du processus courant. In one embodiment of the proposed securing method, the security action comprises the destruction of the current process.
Dans un mode de réalisation du procédé de sécurisation proposé, une politique de sécurité est un fichier en langage binaire obtenu par compilation d'un programme en langage eBPF (pour « Extended Berkeley Packet Filter »). In one embodiment of the proposed securing method, a security policy is a file in binary language obtained by compiling a program in eBPF language (for “Extended Berkeley Packet Filter”).
De façon connue, ce langage est volontairement limité en termes de fonctionnalités (pas de boucle, pas d'arithmétique de pointeur, pas d'accès direct aux structures noyau, ...) mais possède de fortes propriétés de sécurité de sorte qu'il est inapte à attaquer le reste du système. As is known, this language is deliberately limited in terms of functionalities (no loop, no pointer arithmetic, no direct access to kernel structures, ...) but has strong security properties so that it is incapable of attacking the rest of the system.
Cette caractéristique permet avantageusement d'empêcher les attaques critiques, par exemple pour récupérer des informations, modifier l'intégrité ou la disponibilité du reste du système. This characteristic advantageously makes it possible to prevent critical attacks, for example to recover information, modify the integrity or the availability of the rest of the system.
La technique proposée permet ainsi à une pile logicielle de mettre en place des politiques de sécurité sans compromettre la sécurité du système. Elle permet en particulier l'application de politiques durcies après l'initialisation de la pile logicielle pour bloquer ultérieurement des comportements qui ne seraient acceptables qu'à l'initialisation. The proposed technique thus enables a software stack to set up security policies without compromising the security of the system. It allows in particular the application of hardened policies after initialization of the software stack to subsequently block behaviors which would only be acceptable on initialization.
Les possibilités offertes par le langage eBPF étant limitées, dans un mode de réalisation du procédé de mise en place d'une politique de sécurité proposé, au moins une politique de sécurité appelle au moins une fonction de support externe à cette politique et chargée dans une zone dédiée du noyau par une entité de l'espace utilisateur bénéficiant de droits d'administration. The possibilities offered by the eBPF language being limited, in one embodiment of the method for setting up a proposed security policy, at least one security policy calls at least one support function external to this policy and loaded in a dedicated kernel area by a user space entity with administrative rights.
Ces fonctions de support (en anglais « helpers ») peuvent être chargées « à chaud », c'est à dire pendant l'exécution du noyau. Elles peuvent être appelées par une politique de sécurité eBPF pour réaliser des traitements critiques comme les accès aux structures noyau pour le code eBPF. Ces fonctions support ne peuvent être écrites que par une entité bénéficiant de droits d'administration et ne sont pas soumises aux limitations liées au vérifieur eBPF. These support functions (in English "helpers") can be loaded "hot", ie during the execution of the kernel. They can be called by an eBPF security policy to perform critical processing such as access to kernel structures for the eBPF code. These support functions can only be written by an entity with administration rights and are not subject to the limitations related to the eBPF verifier.
Ce mode de réalisation particulier permet, en déportant les accès critiques et les traitements complexes vers les fonctions support, la mise en place par les conteneurs de politiques élaborées sans compromettre la sécurité du système et avec des surcoûts en performance faibles. This particular embodiment makes it possible, by deporting the critical accesses and complex processing operations to the support functions, the implementation by the containers of policies developed without compromising the security of the system and with low performance overheads.
Dans un mode de réalisation particulier, au moins une fonction de support est une fonction dynamique exécutable indépendamment de sa position, cette fonction dynamique étant appelée par une fonction de support statique compilée avec le noyau et appelée par la politique de sécurité. Pour plus de renseignements sur la notion de code indépendant de sa position (en anglais « position independent code »), l'homme du métier peut se reporter au document disponible à l'adresse https://fr.qwe.wiki/wiki/Position-independent_code. In a particular embodiment, at least one support function is a dynamic function that can be executed independently of its position, this dynamic function being called by a static support function compiled with the kernel and called by the security policy. For more information on the concept of a code independent of its position (in English "position independent code ”), those skilled in the art can refer to the document available at the address https://fr.qwe.wiki/wiki/Position-independent_code.
Dans un mode de réalisation particulier, le procédé de mise en place d'une politique de sécurité proposé comporte une étape d'analyse d'un fichier journal (plus connu sous le terme logs) comportant au moins un résultat d'exécution d'une politique de sécurité exécutée par un procédé de sécurisation tel que mentionné ci-dessus. In a particular embodiment, the method of setting up a proposed security policy comprises a step of analyzing a log file (better known under the term logs) comprising at least one result of the execution of a security policy executed by a security method as mentioned above.
Le procédé de sécurisation et le procédé de mise en place d'une politique de sécurité proposés sont mis en oeuvre par des programmes d'ordinateur. The securing method and the method for implementing a security policy proposed are implemented by computer programs.
Par conséquent, l'invention vise également un programme d'ordinateur sur un support d'enregistrement, ce programme étant susceptible d'être mis en oeuvre dans un dispositif ou plus généralement dans un ordinateur. Ce programme comporte des instructions permettant la mise en oeuvre d'un procédé tel que décrit ci-dessus. Consequently, the invention also relates to a computer program on a recording medium, this program being capable of being implemented in a device or more generally in a computer. This program includes instructions allowing the implementation of a method as described above.
Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. This program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any other. desirable shape.
L'invention vise aussi un support d'information ou un support d'enregistrement lisibles par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus. The invention also relates to an information medium or a recording medium readable by a computer, and comprising instructions of a computer program as mentioned above.
Le support d'information ou d'enregistrement peut être n'importe quelle entité ou dispositif capable de stocker les programmes. Par exemple, les supports peuvent comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy dise) ou un disque dur, ou une mémoire flash. The information or recording medium can be any entity or device capable of storing the programs. For example, the media can comprise a storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or else a magnetic recording means, for example a floppy disk or a disk. hard, or flash memory.
D'autre part, le support d'information ou d'enregistrement peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par lien radio, par lien optique sans fil ou par d'autres moyens. On the other hand, the information or recording medium can be a transmissible medium such as an electrical or optical signal, which can be routed via an electrical or optical cable, by radio link, by wireless optical link or by other ways.
Le programme d'ordinateur proposé peut être en particulier téléchargé sur un réseau de type Internet. The proposed computer program can in particular be downloaded from an Internet type network.
Alternativement, le support d'informations ou d'enregistrement peut être un circuit intégré dans lequel un programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution de l'un des procédés tels que décrits précédemment. Alternatively, the information or recording medium can be an integrated circuit in which a program is incorporated, the circuit being adapted to execute or to be used in the execution of one of the methods as described above.
D'autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent un exemple de réalisation dépourvu de tout caractère limitatif. Sur les figures : - la figure 1 représente un dispositif conforme à un mode particulier de réalisation et les principales étapes d'un procédé de mise en place d'une politique de sécurité conforme à un mode particulier de réalisation ; Other characteristics and advantages of the present invention will emerge from the description given below, with reference to the appended drawings which illustrate an exemplary embodiment thereof without any limiting nature. In the figures: - Figure 1 shows a device in accordance with a particular embodiment and the main steps of a method of setting up a security policy in accordance with a particular embodiment;
- la figure 2 représente une table de processus pouvant être utilisée dans un mode particulier de réalisation ; FIG. 2 represents a process table that can be used in a particular embodiment;
- la figure 3 représente une table de contrôle pouvant être utilisée dans un mode particulier de réalisation ; FIG. 3 represents a control table that can be used in a particular embodiment;
- la figure 4 représente sous forme d'ordinogramme les principales étapes d'un procédé de sécurisation conforme à un mode particulier de réalisation. FIG. 4 represents in the form of a flowchart the main steps of a securing method in accordance with a particular embodiment.
La figure 1 représente un dispositif 100 conforme à l'invention. Dans l'exemple de réalisation décrit ici, ce dispositif 100 a l'architecture matérielle d'un ordinateur. Il comporte notamment un processeur 10, une mémoire vive de type RAM 11, une mémoire morte de type ROM 12, et des moyens de communication 13. FIG. 1 represents a device 100 in accordance with the invention. In the exemplary embodiment described here, this device 100 has the hardware architecture of a computer. It comprises in particular a processor 10, a random access memory of the RAM 11 type, a read-only memory of the ROM type 12, and communication means 13.
Ce dispositif comporte un système logiciel SYS, ce système comportant un noyau ou système d'exploitation KER, et un espace utilisateur USR. Dans le mode de réalisation décrit ici, le système d'exploitation KER est de type Linux (marque déposée). This device comprises a SYS software system, this system comprising a KER kernel or operating system, and a USR user space. In the embodiment described here, the KER operating system is of the Linux type (registered trademark).
Dans le mode de réalisation décrit ici, l'espace utilisateur USR comporte un processus p0(), deux piles logicielles de type conteneur Cl, C2 et un outil d'administration ADM. Le processus p0() et les piles logicielles Cl, C2 sont associées à des droits de niveau utilisateur et l'outil d'administration ADM à des droits de niveau administrateur. In the embodiment described here, the user space USR comprises a process p0 (), two software stacks of container type C1, C2 and an administration tool ADM. The process p0 () and the software stacks C1, C2 are associated with user level rights and the administration tool ADM with administrator level rights.
Dans l'exemple de réalisation décrit ici, les piles logicielles Cl, C2 de l'espace utilisateur USR sont des conteneurs, chacun comportant un ensemble de processus isolés du reste du système logiciel SYS. In the exemplary embodiment described here, the software stacks C1, C2 of the user space USR are containers, each comprising a set of processes isolated from the rest of the software system SYS.
Dans cet exemple, la création des conteneurs Cl et C2 est demandée par le processus p0().In this example, the creation of containers C1 and C2 is requested by the process p0 ().
On rappelle que les processus de l'espace utilisateur USR peuvent être isolés grâce au mécanisme connu d'espaces de nommage. De façon connue, le système d'exploitation Linux propose dans l'état actuel de la technique, plusieurs espaces de nommage (par exemple : Network, IPC, PID, User)... qui peuvent être utilisés pour isoler des processus dans un mécanisme dans lequel on définit des ensembles de processus, de sorte que les processus d'un ensemble donné ne puissent pas voir les ressources utilisées par un autre ensemble de processus. It is recalled that the processes of the USR user space can be isolated thanks to the known mechanism of namespaces. As is known, the Linux operating system offers, in the current state of the art, several namespaces (for example: Network, IPC, PID, User) ... which can be used to isolate processes in a mechanism. in which sets of processes are defined, so that the processes of a given set cannot see the resources used by another set of processes.
Dans l'exemple de la figure 1: In the example of figure 1:
- le processus pO est associé respectivement à des espaces de nommage ENNETWORKO (pour l'espace Network), ENIPC0 (pour IPC), ENPID0 (pour PID), ENUserO (pour User) ... ; - the process pO is associated respectively with namespaces ENNETWORKO (for the Network space), ENIPC0 (for IPC), ENPID0 (for PID), ENUserO (for User) ...;
- les processus du conteneur Cl, en l'occurrence le processus pl(), sont associés à des espaces de nommage différents ENNETWORK1, ENIPC1, ENIPD1, ENUserl; et - les processus du conteneur C2, en l'occurrence le processus p2(), sont associés à des espaces de nommage différents ENNETWORK2, ENIPC2, ENIPD2, ENUser2. - the processes of the container C1, in this case the process pl (), are associated with different namespaces ENNETWORK1, ENIPC1, ENIPD1, ENUserl; and - the processes of container C2, in this case the process p2 (), are associated with different namespaces ENNETWORK2, ENIPC2, ENIPD2, ENUser2.
Certains processus du système SYS peuvent faire appel à des fonctions système du noyau KER. Le noyau KER comporte un gestionnaire d'appel système GAS dans lequel sont implémentés ces appels système. Some SYS system processes may call on KER kernel system functions. The KER kernel includes a GAS system call manager in which these system calls are implemented.
L'invention propose un mécanisme de gestion de sécurité pour sécuriser les appels système déclenchant des opérations sensibles au sens des Modules de Sécurité Linux (LSM). The invention proposes a security management mechanism for securing system calls triggering sensitive operations within the meaning of Linux Security Modules (LSM).
Dans le mode de réalisation décrit ici, on considère que les opérations oper_open() d'ouverture de fichier, oper_send() d'envoi de paquets et oper_exec() d'exécution de fonction sont des opérations sensibles. In the embodiment described here, the open file oper_open (), send packet oper_send () and function execute oper_exec () operations are considered to be sensitive operations.
Dans l'exemple de la figure 1 le processus pl du conteneur Cl et le processus p2 du conteneur C2 appellent : In the example of figure 1 the process pl of the container C1 and the process p2 of the container C2 call:
- l'appel système open() d'ouverture de fichier qui génère lors de son exécution, l'opération sensible oper_open(); et - the open () system call for opening a file which generates, during its execution, the sensitive operation oper_open (); and
- l'appel système send() d'envoi de paquets qui génère lors de son exécution, l'opération sensible oper_send(). - the send () system call for sending packets which generates during its execution, the sensitive operation oper_send ().
Dans l'exemple de la figure 1, le processus pO ne fait pas appel aux appels système open() send(), exec(). In the example of Figure 1, the pO process does not call the open () send (), exec () system calls.
Dans le mode de réalisation décrit ici, l'invention propose d'utiliser un nouvel espace de nommage ENSECURE dédié à la gestion de la sécurité. In the embodiment described here, the invention proposes to use a new ENSECURE namespace dedicated to security management.
Par exemple, le processus pO est associé à l'espace de nommage de gestion de la sécurité ENSECUREO, le conteneur Cl est associé à l'espace de nommage de gestion de la sécurité ENSECURE1 et le conteneur C2 est associé à l'espace de nommage ENSECURE2. For example, the process pO is associated with the security management namespace ENSECUREO, the container C1 is associated with the security management namespace ENSECURE1 and the container C2 is associated with the namespace ENSECURE2.
La figure 2 représente en détail une table TABPID des processus pO, pl et p2 mémorisée dans le noyau KER. Dans le noyau KER, un processus est constitué d'une structure comportant plusieurs champs permettant de gérer le cycle de vie du processus comme son identifiant de processus PID, ses drapeaux (flags en anglais), sa pile ... FIG. 2 represents in detail a TABPID table of the processes p0, p1 and p2 stored in the kernel KER. In the KER kernel, a process consists of a structure comprising several fields making it possible to manage the life cycle of the process such as its process identifier PID, its flags, its stack, etc.
Dans l'espace noyau, on peut récupérer la structure de données correspondant au processus courant à l'aide de l'instruction current (voir étape E30, figure 4). In kernel space, the data structure corresponding to the current process can be recovered using the current instruction (see step E30, FIG. 4).
Cette structure comporte également un champ nsproxy qui comporte des pointeurs vers les espaces de nommage. Conformément à ce mode de réalisation particulier, ce champ nsproxy comporte un pointeur ENSECURE vers l'espace de nommage dédié à la gestion de la sécurité associé au processus. Cet espace de nommage définit une structure de données qui comprend notamment la politique de sécurité définie en langage eBPF. Dans le mode de réalisation décrit ici, ces structures sont enregistrées dans une zone de politiques de sécurité ZPS du noyau KER. L'espace de nommage ENSECURE d'un processus comporte un lien vers l'espace de nommage ENSECURE du parent de l'espace de nommage de ce processus. Dans l'exemple décrit ici, ENSECURE1 et ENSECURE2 associés respectivement aux conteneurs Cl et C2 pointent vers l'espace de nommage ENSECUREO du processus pO. This structure also has an nsproxy field which has pointers to namespaces. In accordance with this particular embodiment, this nsproxy field includes an ENSECURE pointer to the namespace dedicated to the management of the security associated with the process. This namespace defines a data structure which includes in particular the security policy defined in eBPF language. In the embodiment described here, these structures are recorded in a zone of security policies ZPS of the KER kernel. The ENSECURE namespace of a process has a link to the ENSECURE namespace of the parent of the namespace of that process. In the example described here, ENSECURE1 and ENSECURE2 associated respectively with the containers C1 and C2 point to the namespace ENSECUREO of the process p0.
Les espaces de nommage ENSECURE forment donc un arbre. The ENSECURE namespaces therefore form a tree.
De façon connue de l'homme du métier un processus peut changer d'espace de nommage pour rejoindre l'espace de nommage d'un de ses processus fils, par exemple en utilisant la commande unshare(). In a manner known to those skilled in the art, a process can change the namespace to join the namespace of one of its child processes, for example by using the unshare () command.
Depuis l'espace utilisateur USR, il est possible d'accéder à l'identifiant d'un espace de nommage mais il n'est pas possible de modifier sa structure. Cette caractéristique permet avantageusement d'empêcher toute modification ou désactivation d'une politique de sécurité par un conteneur. From the USR user space, it is possible to access the identifier of a namespace but it is not possible to modify its structure. This feature advantageously makes it possible to prevent any modification or deactivation of a security policy by a container.
Dans l'exemple de réalisation décrit ici, on suppose que le processus p0() a défini une politique de sécurité PSOFpO pour sécuriser les appels à l'opération sensible d'ouverture de fichier oper_open(). On suppose qu'il n'a pas défini de politique de sécurité pour sécuriser les appels à l'opération sensible d'envoi de paquet sur le réseau oper_send(). In the exemplary embodiment described here, it is assumed that the process p0 () has defined a security policy PSOFp0 to secure calls to the sensitive operation of opening the oper_open () file. It is assumed that it has not defined a security policy to secure calls to the sensitive packet send operation on the oper_send () network.
Dans le mode de réalisation décrit ici, les processus d'un conteneur héritent des politiques de sécurité définies par tous ses espaces de nommage ENSECURE ancêtres. In the embodiment described here, the processes of a container inherit the security policies defined by all of its ancestor ENSECURE namespaces.
Dans l'exemple de réalisation décrit ici, on suppose que le conteneur Cl a défini sa propre politique de sécurité PSOFC1 pour sécuriser les appels par ses processus, en l'occurrence pl(), à l'opération sensible d'ouverture de fichier oper_open(), en complément de la politique PSOFpO définie par le processus p0(). In the exemplary embodiment described here, it is assumed that the container C1 has defined its own security policy PSOFC1 to secure the calls by its processes, in this case pl (), to the sensitive operation of opening the oper_open file. (), in addition to the PSOFpO policy defined by the p0 () process.
On suppose que le conteneur Cl a défini une politique de sécurité PSTPC1 pour sécuriser les appels par ses processus, en l'occurrence pl(), à l'opération sensible d'envoi de paquet oper_send(). It is assumed that the container C1 has defined a security policy PSTPC1 to secure the calls by its processes, in this case pl (), to the sensitive operation of sending a packet oper_send ().
On suppose que le conteneur C2 n'a défini aucune politique de sécurité propre. Le processus p2() de ce conteneur hérite de la politique de sécurité PSOFpO définie par le processus p0() pour sécuriser ses appels à l'opération sensible d'ouverture de fichier. Mais il ne définit aucune fonction de sécurité pour vérifier l'opération sensible d'envoi de paquet. It is assumed that the container C2 has not defined any own security policy. The p2 () process of this container inherits the PSOFpO security policy defined by the p0 () process to secure its calls to the sensitive open file operation. But it does not define any security function to check the sensitive packet send operation.
Dans le mode de réalisation décrit ici, chacune des politiques de sécurité PSOFpO, PSOFC1, PSTPC1 est définie par une fonction logicielle en langage eBPF compilée en binaire. Ces politiques de sécurité sont enregistrées dans la mémoire morte 12 du dispositif 100 et destinées à être chargées dans la zone ZPS de politiques de sécurité du noyau KER. In the embodiment described here, each of the security policies PSOFp0, PSOFC1, PSTPC1 is defined by a software function in eBPF language compiled in binary. These security policies are recorded in the read only memory 12 of the device 100 and intended to be loaded into the security policy zone ZPS of the KER core.
Ce chargement (étape F10) peut se faire de différentes façons. This loading (step F10) can be done in different ways.
Dans le mode de réalisation décrit ici, la mémoire morte 12 comporte un fichier de configuration de type OCI (Open Container Initiative) pour chaque conteneur, à savoir un fichier de configuration FOCIC1 pour le conteneur Cl et un fichier de configuration FOCIC2 pour le conteneur C2. De façon connue, la configuration OCI d'un conteneur est spécifiée sous le nom config.json et détaille les caractéristiques du conteneur à créer. Ce fichier de configuration précise notamment les fichiers que doit contenir le conteneur, ses interfaces système, ses espaces de nommage, ... In the embodiment described here, the read only memory 12 comprises an OCI (Open Container Initiative) type configuration file for each container, namely a FOCIC1 configuration file for the C1 container and a FOCIC2 configuration file for the C2 container. . In a known manner, the OCI configuration of a container is specified under the name config.json and details the characteristics of the container to be created. This configuration file specifies in particular the files that the container must contain, its system interfaces, its namespaces, etc.
Dans le mode de réalisation décrit ici, le fichier de configuration OCI d'un conteneur comporte des instructions pour que le conteneur charge ses politiques de sécurité dans la zone ZPS de politiques de sécurité du noyau KER. In the embodiment described here, the OCI configuration file of a container includes instructions for the container to load its security policies into the security policy zone ZPS of the KER kernel.
Quand un conteneur est créé, par exemple Cl, les politiques de sécurité PSOFC1 et PCTPC1 du conteneur Cl sont copiées de la mémoire morte 12 dans une mémoire Ml du conteneur Cl. Une fois que le conteneur Cl est construit, il est exécuté et à l'exécution, les politiques de sécurité sont transférées de la mémoire Ml, dans la zone ZPS du noyau. When a container is created, for example C1, the security policies PSOFC1 and PCTPC1 of the C1 container are copied from the read only memory 12 into a memory M1 of the C1 container. Once the C1 container is built, it is executed and executed. At execution, the security policies are transferred from the memory M1, into the ZPS area of the kernel.
L'écriture manuelle de fichier de configuration OCI peut néanmoins s'avérer complexe, et dans un autre mode de réalisation de l'invention, le chargement de la politique de sécurité d'un conteneur dans le noyau KER est définie par une instruction d'une méthode de construction de conteneur de plus haut niveau, par exemple de la méthode Dockerfile. The manual writing of the OCI configuration file can nevertheless prove to be complex, and in another embodiment of the invention, the loading of the security policy of a container in the KER core is defined by an instruction of a higher level container building method, for example the Dockerfile method.
Par ailleurs, le chargement d'une politique de sécurité propre à un conteneur dans la mémoire du noyau peut être effectué à tout moment du cycle de vie du conteneur, pas seulement à son initialisation. Dans le mode de réalisation décrit ici, le code du conteneur Cl comporte également des instructions load_ps() permettant de charger une politique de sécurité sous forme d'un fichier eBPF compilé sous forme binaire dans la zone ZPS de politiques de sécurité du noyau KER. Ce mode de réalisation particulier permet en particulier de charger une nouvelle politique de sécurité qui va être appliquée après le démarrage du conteneur Cl. Cette fonction load_ps() consiste à ouvrir le fichier eBPF compris dans la mémoire morte 12 et à le copier vers une interface avec le noyau KER. In addition, loading a container-specific security policy into kernel memory can be done at any time during the container lifecycle, not just when it is initialized. In the embodiment described here, the code of the container C1 also includes load_ps () instructions making it possible to load a security policy in the form of an eBPF file compiled in binary form in the security policy zone ZPS of the KER kernel. This particular embodiment makes it possible in particular to load a new security policy which will be applied after the start of the container C1. This load_ps () function consists of opening the eBPF file included in the read only memory 12 and copying it to an interface with the KER kernel.
Dans le mode de réalisation décrit ici, le noyau KER comporte une infrastructure de contrôle de sécurité ICS de gestion des Modules de sécurité Linux, un module de sécurité Linux LSM1 conforme à l'invention et éventuellement au moins un autre module de sécurité LSM2, par exemple, un module SELinux ou un module AppAmor tels que mentionnés précédemment. In the embodiment described here, the KER kernel comprises an ICS security control infrastructure for managing the Linux security modules, a Linux security module LSM1 in accordance with the invention and possibly at least one other security module LSM2, for example example, a SELinux module or an AppAmor module as mentioned previously.
Dans l'exemple de réalisation décrit ici, le noyau KER comporte une table de contrôle TABCTR qui définit, pour chaque opération sensible OPS (ouverture de fichier, envoi de paquet sur le réseau, ...) si le module de sécurité LSM1 veut contrôler ou non ces opérations sensibles. Cette table TABCTR est représentée à la figure 3. In the exemplary embodiment described here, the KER kernel includes a TABCTR control table which defines, for each sensitive OPS operation (opening a file, sending a packet on the network, etc.) whether the security module LSM1 wants to control or not these sensitive operations. This TABCTR table is shown in Figure 3.
Dans l'exemple de vérification décrit ici, on suppose que le module de sécurité LSM1 ne souhaite vérifier que l'opération sensible d'ouverture de fichiers. In the verification example described here, it is assumed that the security module LSM1 only wishes to verify the sensitive operation of opening files.
La figure 4 représente sous forme d'ordinogramme les principales étapes d'un procédé de sécurisation conforme à un mode particulier de réalisation. Dans le mode de réalisation décrit ici, ce procédé est mis en oeuvre par le gestionnaire d'appel système GAS, l'infrastructure de contrôle de sécurité ICS (en anglais framework LSM) et par le module de sécurité LSM1. Dans l'exemple de réalisation décrit ici, le gestionnaire d'appel système GAS détermine, au cours d'une étape E10, si un appel système déclenché par un processus de l'espace utilisateur doit réaliser une opération sensible. Si c'est le cas, il déclenche l'infrastructure de contrôle de sécurité ICS du noyau KER. FIG. 4 represents in the form of a flowchart the main steps of a securing method in accordance with a particular embodiment. In the embodiment described here, this method is implemented by the GAS system call manager, the ICS security control infrastructure (LSM framework in English) and by the LSM1 security module. In the exemplary embodiment described here, the GAS system call manager determines, during a step E10, whether a system call triggered by a process in the user space must perform a sensitive operation. If so, it triggers the KER kernel ICS security monitoring infrastructure.
Si l'infrastructure ICS détermine que l'opération sensible OPS répertoriée dans la table TABCTR est supervisée par le module de sécurité LSM1, l'infrastructure ICS déclenche l'exécution du module de sécurité LSM1 au cours d'une étape E20. If the ICS infrastructure determines that the sensitive operation OPS listed in the TABCTR table is supervised by the security module LSM1, the ICS infrastructure triggers the execution of the security module LSM1 during a step E20.
Dans l'exemple de réalisation décrit ici, si un processus souhaite réaliser l'opération sensible envoyer un paquet (oper_send()) ou exécuter un nouveau processus en espace utilisateur (oper_exec()) par appel à la fonction exec(), comme ces opérations sensibles ne sont pas vérifiées par le module de sécurité LSM1, le résultat de l'étape de détermination est négatif. Ces opérations peuvent néanmoins être vérifiées par le module de sécurité LSM2, hors contexte de l'invention, par exemple SELinux et un module AppAmor. In the exemplary embodiment described here, if a process wishes to perform the sensitive operation send a packet (oper_send ()) or execute a new process in user space (oper_exec ()) by calling the exec () function, like these sensitive operations are not verified by the security module LSM1, the result of the determination step is negative. These operations can nevertheless be verified by the security module LSM2, outside the context of the invention, for example SELinux and an AppAmor module.
Au cours d'une étape E30, le module de sécurité LSM1 détermine l'espace de nommage associé au processus courant à l'origine de cet appel. Il utilise pour cela le processus courant de la table des processus TABPID. During a step E30, the security module LSM1 determines the namespace associated with the current process at the origin of this call. It uses the current process from the TABPID process table for this.
Le module de sécurité LSM1 exécute ensuite une boucle pour exécuter les politiques de l'espace de nommage du processus courant liées à cette opération sensible. Dans un mode de réalisation particulier, le module de sécurité LSM1 exécute ensuite une boucle pour exécuter les politiques de ses espaces de nommage ancêtres s'ils existent. The security module LSM1 then executes a loop to execute the policies of the namespace of the current process linked to this sensitive operation. In a particular embodiment, the security module LSM1 then executes a loop to execute the policies of its ancestor namespaces if they exist.
Au cours d'une étape E40 le module de sécurité LSM1 détermine si l'espace de nommage courant a défini une ou plusieurs politiques de sécurité pour vérifier la validité de l'opération sensible. During a step E40, the security module LSM1 determines whether the current namespace has defined one or more security policies to verify the validity of the sensitive operation.
Si tel est le cas, le module de sécurité concerné LSM1 exécute au cours d'une étape E50 la ou les politiques de sécurité définies dans l'espace de nommage dédié à la gestion de sécurité ENSECURE du processus courant pour cette opération sensible. If this is the case, the relevant security module LSM1 executes during a step E50 the security policy or policies defined in the namespace dedicated to the ENSECURE security management of the current process for this sensitive operation.
En l'espèce, au cours de la première itération, la politique de sécurité PSOFC1 est exécutée. Cette politique de sécurité renvoie un résultat RET de cette exécution au module de sécurité LSM1. In this case, during the first iteration, the security policy PSOFC1 is executed. This security policy returns a result RET of this execution to the security module LSM1.
Dans le mode de réalisation décrit ici, une politique de sécurité, et en particulier la politique de sécurité PSOFC1, renvoie un résultat RET négatif si elle détecte un problème de sécurité (traduisant par exemple un comportement malveillant ou anormal) et un résultat positif si elle ne détecte aucun problème de sécurité. In the embodiment described here, a security policy, and in particular the PSOFC1 security policy, returns a negative RET result if it detects a security problem (for example reflecting malicious or abnormal behavior) and a positive result if it does not detect any security problem.
Si cette valeur RET est positive, le module de sécurité détermine, s'il existe, l'espace de nommage parent de l'espace de nommage du processus courant (étape E60) et la boucle se répète. If this RET value is positive, the security module determines, if it exists, the parent namespace of the namespace of the current process (step E60) and the loop is repeated.
En l'espèce, au cours de la deuxième itération la politique de sécurité PSOFpO de l'espace de nommage ENSECUREO du processus pO est exécutée. Si une politique de sécurité renvoie un résultat RET négatif, le module de sécurité enregistre ce résultat dans un fichier de log FLOG du noyau KER au cours d'une étape E70 et envoie ce résultat négatif RET à l'infrastructure de sécurité ICS. Ce fichier de log FLOG peut être analysé (étape F30) par l'administrateur au moyen de l'outil d'administration ADM. In this case, during the second iteration the security policy PSOFpO of the ENSECUREO namespace of the process pO is executed. If a security policy returns a negative RET result, the security module records this result in a KER kernel FLOG log file during a step E70 and sends this negative RET result to the security infrastructure ICS. This FLOG log file can be analyzed (step F30) by the administrator by means of the administration tool ADM.
Lorsque toutes les politiques de sécurité de toute l'arborescence d'espaces de nommages ont été exécutées avec un résultat RET positif, le module de sécurité LSM1 envoie un résultat positif RET à l'infrastructure de sécurité ICS (test E90). When all the security policies of the entire namespace tree have been executed with a positive RET result, the LSM1 security module sends a positive RET result to the ICS security infrastructure (test E90).
Dans le mode de réalisation décrit ici, si l'infrastructure de sécurité RET reçoit un résultat RET positif, elle ne déclenche pas d'action particulière et l'appel système est exécuté, sauf si une action est déclenchée par un autre module de sécurité LSM2, par exemple, un module SELinux et un module AppAmor. In the embodiment described here, if the RET security infrastructure receives a positive RET result, it does not trigger any particular action and the system call is executed, unless an action is triggered by another LSM2 security module. , for example, a SELinux module and an AppAmor module.
Dans le mode de réalisation décrit ici, si l'infrastructure de sécurité RET reçoit un résultat RET négatif, l'infrastructure de contrôle ICS déclenche une action de sécurité AS au cours d'une étape E80. Cette action peut consister à détruire le processus à l'origine de l'appel et à lever une alerte dans le fichier de log FLOG. In the embodiment described here, if the security infrastructure RET receives a negative RET result, the control infrastructure ICS triggers a security action AS during a step E80. This action can consist of destroying the process that initiated the call and raising an alert in the FLOG log file.
Dans le mode de réalisation décrit ici, lorsqu'aucun processus ne reste dans un espace de nommage dédié à la gestion de sécurité, cet espace de nommage est détruit automatiquement par le noyau. Cette opération détruit les politiques de sécurité associées à ces espaces de nommage. In the embodiment described here, when no process remains in a namespace dedicated to security management, this namespace is automatically destroyed by the kernel. This operation destroys the security policies associated with these namespaces.
Par exemple, dans l'exemple de réalisation décrit ici, dès lors que le processus pl meurt, il n'y a plus dans le système SYS de processus dont l'espace de nommage dédié à la gestion de sécurité est ENSECURE1 si bien que les politiques de sécurité PSOFC1 et PSTPC1 peuvent être détruites. For example, in the exemplary embodiment described here, as soon as the process pl dies, there is no longer any process in the SYS system whose namespace dedicated to security management is ENSECURE1 so that the PSOFC1 and PSTPC1 security policies can be destroyed.
Dans le mode de réalisation décrit ici, si une politique de sécurité n'est pas comprise dans un espace de nommage dédié à la sécurité associé à au moins un processus actif de l'espace utilisateur, cette politique de sécurité est supprimée par le noyau. In the embodiment described here, if a security policy is not included in a namespace dedicated to security associated with at least one active process of the user space, this security policy is deleted by the kernel.
Conformément à l'invention, les politiques de sécurité en langage eBPF compilé peuvent appeler des fonctions du noyau KER externes à ces politiques, pour mettre en oeuvre des opérations critiques qui ne peuvent pas l'être directement par la politique de sécurité en langage eBPF elle-même. De telles fonctions sont connues de l'homme du métier sous le nom de fonctions de support eBPF (en anglais « Helper eBPF »). In accordance with the invention, the security policies in compiled eBPF language can call functions of the KER kernel external to these policies, in order to implement critical operations which cannot be done directly by the security policy in eBPF language itself. -same. Such functions are known to those skilled in the art under the name of eBPF support functions (in English “Helper eBPF”).
Dans un mode particulier de mise en oeuvre de l'invention, une telle fonction de support FSUP peut être écrite par un administrateur, par exemple en langage C, puis compilée comme un module noyau classique avec GCC (en anglais « GNU Compiler Collection »). In a particular embodiment of the invention, such an FSUP support function can be written by an administrator, for example in C language, then compiled like a conventional kernel module with GCC (in English “GNU Compiler Collection”) .
Dans le mode de réalisation décrit ici, ce code exécutable est transformé pour pouvoir être exécuté indépendamment de sa position selon le mécanisme PIC (Position Independent Code) connu de l'homme du métier. Ces fonctions de support FSUP dynamiques peuvent être chargées (étape F20) dans une zone dédiée du noyau KER sans interrompre l'exécution du noyau. In the embodiment described here, this executable code is transformed so that it can be executed independently of its position according to the PIC (Position Independent Code) mechanism known to those skilled in the art. These dynamic FSUP support functions can be loaded (step F20) in a dedicated area of the kernel KER without interrupting the execution of the kernel.
Une fois chargées dans le noyau, ces fonctions de support dynamiques FSUP peuvent être appelées par le code eBPF d'une politique de sécurité à l'aide d'une unique fonction de support statique FSUPSTAT. Once loaded into the kernel, these dynamic FSUP support functions can be invoked by the eBPF code of a security policy using a single static FSUPSTAT support function.

Claims

REVENDICATIONS
1. Procédé de sécurisation d'au moins un appel système déclenché par un processus courant (pl) d'un espace utilisateur (USR) d'un système logiciel (SYS), ledit procédé étant mis en oeuvre par un noyau (KER) dudit système logiciel (SYS) avant d'exécuter au moins une opération déclenchée par ledit au moins un appel système, et comportant : 1. Method for securing at least one system call triggered by a current process (pl) of a user space (USR) of a software system (SYS), said method being implemented by a kernel (KER) of said software system (SYS) before executing at least one operation triggered by said at least one system call, and comprising:
- une étape (E30) d'obtention d'au moins un espace de nommage (ENSECURE1) du noyau (KER) dédié à la gestion de sécurité associé audit processus courant (pl) ; a step (E30) of obtaining at least one namespace (ENSECURE1) of the kernel (KER) dedicated to the security management associated with said current process (pl);
- une étape (E50) d'exécution d'une politique de sécurité définie dans l'espace de nommage associée à ladite opération et enregistrée dans une zone (ZPS) dudit noyau (KER) ; a step (E50) for executing a security policy defined in the namespace associated with said operation and recorded in a zone (ZPS) of said kernel (KER);
- une étape (E30) d'obtention d'au moins un espace de nommage (ENSECUREO) dédié à la gestion de sécurité et ancêtre de l'espace nommage (ENSECURE1) dudit processus courant (pl) ; - a step (E30) of obtaining at least one namespace (ENSECUREO) dedicated to the security management and ancestor of the namespace (ENSECURE1) of said current process (pl);
- une étape (E50) d'exécution d'une politique de sécurité définie dans l'espace de nommage ancêtre associée à ladite opération et enregistrée dans une zone dudit noyau; et a step (E50) for executing a security policy defined in the ancestor namespace associated with said operation and recorded in a zone of said kernel; and
- une étape de traitement dudit appel système en fonction d'un résultat (RET) desdites exécutions. a step of processing said system call as a function of a result (RET) of said executions.
2. Procédé de sécurisation d'au moins un appel système selon la revendication 1, comportant une étape (E10) pour déterminer si ladite opération est une opération sensible. 2. A method of securing at least one system call according to claim 1, comprising a step (E10) for determining whether said operation is a sensitive operation.
3. Procédé de sécurisation d'au moins un appel système selon l'une quelconque des revendications 1 à 2, dans lequel ladite étape de traitement consiste à exécuter ladite opération si le résultat de l'exécution de ladite au moins une politique de sécurité ne détecte aucun problème de sécurité et à déclencher (E80) une action de sécurité si le résultat de l'exécution d'au moins une dite politique de sécurité détecte un problème de sécurité. 3. A method of securing at least one system call according to any one of claims 1 to 2, wherein said processing step consists of executing said operation if the result of the execution of said at least one security policy does not. detects no security problem and to trigger (E80) a security action if the result of the execution of at least one said security policy detects a security problem.
4. Procédé de sécurisation d'au moins un appel système selon la revendication 3, dans lequel ladite action de sécurité comporte la destruction dudit processus courant (pl). 4. A method of securing at least one system call according to claim 3, wherein said security action comprises the destruction of said current process (pl).
5. Procédé de sécurisation d'au moins un appel système selon l'une quelconque des revendications 1 à 4, comportant une étape de suppression d'au moins une dite politique de sécurité par ledit noyau (KER) si ladite politique de sécurité n'est pas comprise dans un espace de nommage dédié à la sécurité associé à au moins un processus actif dudit espace utilisateur (USR). 5. A method of securing at least one system call according to any one of claims 1 to 4, comprising a step of deleting at least one said security policy by said kernel (KER) if said security policy does not. is not included in a namespace dedicated to security associated with at least one active process of said user space (USR).
6. Procédé de mise en place d'une politique de sécurité, ledit procédé étant mis en oeuvre par une pile logicielle (Cl) d'un espace utilisateur (USR) d'un système logiciel (SYS) pour sécuriser au moins un appel système susceptible d'être déclenché par un processus (pl) de ladite pile logicielle (Cl), ledit procédé comportant une étape (F10) de chargement de ladite politique de sécurité dans une zone (ZPS) d'un noyau (KER) dudit système (SYS), ladite politique de sécurité étant définie dans un espace de nommage (ENSECURE1) du noyau dédié à la gestion de sécurité associé à une opération susceptible d'être déclenchée par ledit au moins un appel système dudit processus (pl), ledit espace de nommage comprenant un lien vers un espace de nommage ancêtre. 6. A method of setting up a security policy, said method being implemented by a software stack (C1) of a user space (USR) of a software system (SYS) to secure at least one system call. capable of being triggered by a process (pl) of said software stack (C1), said method comprising a step (F10) of loading said security policy into an area (ZPS) of a kernel (KER) of said system ( SYS), said security policy being defined in a namespace (ENSECURE1) of the kernel dedicated to security management associated with a operation capable of being triggered by said at least one system call of said process (pl), said namespace comprising a link to an ancestor namespace.
7. Procédé de mise en place d'une politique de sécurité selon la revendication 6, dans lequel ladite pile logicielle (Cl) est un conteneur, ledit chargement étant défini par une instruction d'un fichier de configuration dudit conteneur (Cl), ledit fichier de configuration (FOCIC1) étant conforme aux spécifications définies par l'OCI (Open Container Initiative) ou un fichier de type Dockerfile.7. A method of setting up a security policy according to claim 6, in which said software stack (C1) is a container, said loading being defined by an instruction from a configuration file of said container (C1), said loading. configuration file (FOCIC1) conforming to the specifications defined by the OCI (Open Container Initiative) or a Dockerfile type file.
8. Procédé de mise en place d'une politique de sécurité selon la revendication 6 ou 7 dans lequel ladite au moins une politique de sécurité appelle au moins une fonction de support (FSUP) externe à ladite politique et chargée (F20) dans une zone dédiée du noyau (KER) par une entité dudit espace utilisateur (USR) bénéficiant de droits d'administration. 8. A method of setting up a security policy according to claim 6 or 7 wherein said at least one security policy calls at least one support function (FSUP) external to said policy and loaded (F20) in an area. dedicated kernel (KER) by an entity of said user space (USR) benefiting from administration rights.
9. Procédé de mise en place d'une politique de sécurité selon la revendication 8 dans lequel ladite au moins une fonction de support (FSUP) est une fonction dynamique exécutable indépendamment de sa position, cette fonction dynamique (FSUP) étant appelée par une fonction de support statique (FSUPSTAT) compilée avec ledit noyau (KER) et appelée par ladite politique de sécurité. 9. A method of implementing a security policy according to claim 8 wherein said at least one support function (FSUP) is a dynamic function that can be executed independently of its position, this dynamic function (FSUP) being called by a function. of static support (FSUPSTAT) compiled with said kernel (KER) and called by said security policy.
10. Procédé de mise en place d'une politique de sécurité selon l'une quelconque des revendications 6 à 9, comportant une étape (F30) d'analyse d'un fichier journal (FLOG) comportant au moins un résultat (RET) d'exécution d'une politique de sécurité exécutée par un procédé de sécurisation selon l'une quelconque des revendications 1 à 4. 10. A method of setting up a security policy according to any one of claims 6 to 9, comprising a step (F30) of analyzing a log file (FLOG) comprising at least one result (RET) d execution of a security policy executed by a securing method according to any one of claims 1 to 4.
11. Procédé selon l'une quelconque des revendications 1 à 10 dans lequel ladite au moins une politique de sécurité est un fichier en langage binaire obtenu par compilation d'un programme en langage eBPF. 11. A method according to any one of claims 1 to 10 wherein said at least one security policy is a binary language file obtained by compiling a program in eBPF language.
12. Dispositif (100) comportant un espace utilisateur (USR) et un noyau (KER), l'espace utilisateur (USR) comportant au moins un processus (pl) apte un déclencher au moins un appel système dudit noyau (KER), ledit dispositif (100) comprenant : 12. Device (100) comprising a user space (USR) and a kernel (KER), the user space (USR) comprising at least one process (pl) capable of triggering at least one system call of said kernel (KER), said device (100) comprising:
- ledit noyau (KER) comporte une infrastructure de contrôle de sécurité (ICS) et un module de sécurité (LSM1), ladite infrastructure (ISC) étant configurée pour exécuter ledit module de sécurité (LSM1) avant d'exécuter au moins une opération déclenchée par ledit au moins un appel système;- said kernel (KER) comprises a security control infrastructure (ICS) and a security module (LSM1), said infrastructure (ISC) being configured to execute said security module (LSM1) before executing at least one triggered operation by said at least one system call;
- ledit module de sécurité (LSM1) étant configuré pour : - said security module (LSM1) being configured for:
- obtenir au moins un espace de nommage (ENSECURE1) du noyau (KER) dédié à la gestion de sécurité associé audit processus (pl) ; - obtain at least one namespace (ENSECURE1) of the kernel (KER) dedicated to the security management associated with said process (pl);
- obtenir au moins un espace de nommage (ENSECURE0) dédié à la gestion de sécurité et ancêtre de l'espace nommage dudit processus courant ; - obtain at least one namespace (ENSECURE0) dedicated to security management and ancestor of the namespace of said current process;
- exécuter une politique de sécurité définie dans l'espace de nommage associée à ladite opération et enregistrée dans une zone (ZPS) dudit noyau (KER) ; et - exécuter une politique de sécurité définie dans l'espace de nommage ancêtre associée à ladite opération et enregistrée dans une zone dudit noyau. - execute a security policy defined in the namespace associated with said operation and recorded in a zone (ZPS) of said kernel (KER); and executing a security policy defined in the ancestor namespace associated with said operation and recorded in a zone of said kernel.
EP21732967.1A 2020-05-20 2021-05-18 Method for securing a system call, method for implementing an associated security policy and devices for carrying out such methods Pending EP4154141A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2005153A FR3110726A1 (en) 2020-05-20 2020-05-20 Method for securing a system call, method for implementing an associated security policy and devices implementing these methods.
PCT/FR2021/050860 WO2021234267A1 (en) 2020-05-20 2021-05-18 Method for securing a system call, method for implementing an associated security policy and devices for carrying out such methods

Publications (1)

Publication Number Publication Date
EP4154141A1 true EP4154141A1 (en) 2023-03-29

Family

ID=72644323

Family Applications (1)

Application Number Title Priority Date Filing Date
EP21732967.1A Pending EP4154141A1 (en) 2020-05-20 2021-05-18 Method for securing a system call, method for implementing an associated security policy and devices for carrying out such methods

Country Status (5)

Country Link
US (1) US20230195884A1 (en)
EP (1) EP4154141A1 (en)
CN (1) CN115917539A (en)
FR (1) FR3110726A1 (en)
WO (1) WO2021234267A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3133087A1 (en) * 2022-02-28 2023-09-01 Orange Method and module for detecting computer attack attempts in a computer park.
CN116991449B (en) * 2023-09-28 2024-03-08 阿里云计算有限公司 Method, device and storage medium for upgrading kernel subsystem thermally

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10356127B2 (en) * 2016-06-06 2019-07-16 NeuVector, Inc. Methods and systems for applying security policies in a virtualization environment
US11126740B2 (en) * 2016-11-04 2021-09-21 Microsoft Technology Licensing, Llc Storage isolation for containers
WO2019127399A1 (en) * 2017-12-29 2019-07-04 浙江大学 Fine-grained sandbox policy execution method for linux container

Also Published As

Publication number Publication date
FR3110726A1 (en) 2021-11-26
CN115917539A (en) 2023-04-04
US20230195884A1 (en) 2023-06-22
WO2021234267A1 (en) 2021-11-25

Similar Documents

Publication Publication Date Title
EP2372974B1 (en) Method for securing data and / or applications in cloud computing architecture
EP4154141A1 (en) Method for securing a system call, method for implementing an associated security policy and devices for carrying out such methods
EP2649522B1 (en) Method for providing an application as a library in a virtual machine
CN109255235B (en) Mobile application third-party library isolation method based on user state sandbox
WO2013050602A1 (en) Method of generating, from an initial package file comprising an application to be secured and an initial configuration file, a package file for securing the application, and associated computer program product and computing device
FR3017725A1 (en) METHOD OF DEPLOYING A SOFTWARE APPLICATION SET (S)
EP2958040B1 (en) Method and device for encoding source files for the secure delivery of source code
EP1649363B1 (en) Method of managing software components that are integrated into an embedded system
FR2961922A1 (en) SELECTIVE COMPILATION METHOD, DEVICE AND CORRESPONDING COMPUTER PROGRAM PRODUCT.
EP3588359A1 (en) Method for determining validity of an application code, corresponding device and computer program product
WO2007068706A1 (en) Method for making secure execution of an intermediate language software code in a portable appliance
WO2005073860A2 (en) Method for determining operational characteristics of a program
FR3012643A1 (en) SYSTEM FOR DETECTING INTRUSION IN A DEVICE COMPRISING A FIRST OPERATING SYSTEM AND A SECOND OPERATING SYSTEM
WO2022184998A1 (en) Method and module for installing a mitigation program in the kernel of a computing device
EP4123492A1 (en) Sharing of a function of an application defined in object oriented language
EP1054332B1 (en) System and method for managing attributes in an object-oriented environment
WO2023161105A1 (en) Method and module for detecting attempted cyber attacks in a fleet of computers
FR3067486A1 (en) METHOD FOR NON-INTRUSIVE DETECTION OF SAFETY FAILURES OF A COMPUTER PROGRAM
WO2023222330A1 (en) Method and module for detecting security vulnerabilities in a computer farm
EP3411821B1 (en) Method for storing content, method for consulting content, method for managing content and content readers
FR2911022A1 (en) Resource e.g. value added service, accessing application transmitting method for mobile telephone terminal, involves transmitting application sent from secured access unit accessing resource, and generated certificate to terminal
FR2859548A1 (en) Monitoring procedure for computer program includes use of description file which is checked prior to operations to ensure program actions are as initially intended
EP2579177A1 (en) Mobile terminal capable of dynamically modifying its security level and associated method
EP4394631A1 (en) Method for controlling an on-board computer able to control a critical system, associated computer and vehicle
EP2449495A1 (en) Method for remotely validating executable code

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20221214

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
RAP3 Party data changed (applicant data changed or rights of an application transferred)

Owner name: ORANGE

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20240717