KR20240031717A - 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법 - Google Patents

커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법 Download PDF

Info

Publication number
KR20240031717A
KR20240031717A KR1020220110784A KR20220110784A KR20240031717A KR 20240031717 A KR20240031717 A KR 20240031717A KR 1020220110784 A KR1020220110784 A KR 1020220110784A KR 20220110784 A KR20220110784 A KR 20220110784A KR 20240031717 A KR20240031717 A KR 20240031717A
Authority
KR
South Korea
Prior art keywords
hot patch
container
code
ebpf
kernel
Prior art date
Application number
KR1020220110784A
Other languages
English (en)
Inventor
정수환
단티엔북
곽송이
Original Assignee
숭실대학교산학협력단
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 숭실대학교산학협력단 filed Critical 숭실대학교산학협력단
Priority to KR1020220110784A priority Critical patent/KR20240031717A/ko
Priority to US18/210,396 priority patent/US20240078319A1/en
Publication of KR20240031717A publication Critical patent/KR20240031717A/ko

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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • 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/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치에 관한 것으로, 핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드(Container-aware code)를 생성하는 컨테이너 어웨어 코드 생성부; 및 상기 컨테이너 어웨어 코드에 기초해 상기 대상 컨테이너에 핫패치를 부착하기 위한 eBPF 기반의 핫패치 코드를 구성하는 핫패치 구성부를 포함한다. 이에 의해 리부트 및 프리징 없이 런타임에 커널과 관련된 CVE를 핫패칭함으로써 컨테이너 시스템에 대한 알려진 취약점인 CVE를 기반으로 한 공격을 방지할 수 있다.

Description

커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법{EBPF-BASED HOT PATCH ENGINE DEVICE FOR PROTECTING KERNEL VULNERABILITIES, SYSTEM AND METHOD INCLUDING THE SAME}
본 발명은 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법에 관한 것으로, 보다 상세하게는 커널의 새로운 버전 등을 패치할 수 있는 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법에 관한 것이다.
컴퓨팅에서 시스템 콜(system call)은 컴퓨터 프로그램이 실행되는 운영 체제의 커널로부터 서비스를 요청하는 프로그래밍 방식이고, 이러한 시스템 콜은 프로그램이 운영 체제와 상호 작용할 수 있도록 도와주는 방법이다.
이에 컴퓨터 프로그램은 운영 체제의 커널에 서비스를 요청을 할 때 시스템 콜을 호출하게 되며, 시스템 콜은 응용프로그램 인터페이스(API)로서 운영 체제의 서비스를 사용자 프로그램에 제공할 수 있다.
한편 컨테이너 기술은 최근 몇 년 사이 빠르게 발전해 마이크로서비스, 에지 서비스, 클라우드 네이티브 등 클라우드 컴퓨팅 시스템 구축에 폭넓게 적용되고 있다.
이러한 컨테이너가 사용하는 커널 공간에 새로운 버전 등을 즉시 패치하는 핫패치의 경우, 시스템을 패치하기 위한 커널 버전의 업데이트는 머신의 리부트(reboot)를 요구하지만, 이는 컨테이너 환경이 적용된 클라우드 환경에서는 가용성에 영향을 줄 수 있다.
따라서 리부트를 요구하지 않는 핫패치가 필요하다. 하지만 리부트 없는 핫패치의 목적 하에 종래의 솔루션에서는, 패치가 필요할 때마다 시스템의 메모리를 프리즈(freeze)하여 프리징 타임(freezing time) 동안 패치를 적용한다.
하지만 이는 실행 중인 시스템을 정지해야하므로 리부트 자체는 실행되지 않는다 하더라도 효율적이지 않으므로 리부트를 필요로 하지 않는 동시에 실행 중인 시스템에 영향을 주지 않는 핫패치가 필요하다.
또한 새로운 버전의 업데이트는 시스템을 불안정하게 할 수 있다는 문제가 있다. 오래된 버전의 시스템에서는 모든 서비스가 안정적으로 돌아가는 반면, 시스템을 업데이트하는 경우 커널 기능 등의 디프리케이트(deprecate) 등으로 소프트웨어 간에 충돌이 발생될 수 있다.
따라서 커널의 취약한 기능 또는 잘못된 방식으로 커널 기능을 사용하는 취약한 소프트웨어에만 영향을 미치는 핫패치가 필요하다. 즉 시스템 전체가 아닌 특정 프로세스, 즉 특정 취약점을 가진 컨테이너에만 영향을 미치도록 하는 핫패치가 필요하다.
한국공개특허공보 제10-2019-0038065호
본 발명은 상기와 같은 문제를 해결하기 위해 안출된 것으로, 본 발명의 목적은 서비스의 리부트 및 프리징 없이 런타임에 커널과 관련된 CVE를 핫패칭함으로써 컨테이너 시스템에 대한 알려진 취약점인 CVE를 기반으로 한 공격을 방지할 수 있는 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법을 제공하는 것이다.
그리고 본 발명의 다른 목적은 컨테이너 시스템 전체가 아닌 개별 컨테이너 또는 여러 개의 컨테이너에 다수의 패치가 독립적으로 적용될 수 있는 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법을 제공하는 것이다.
본 발명의 또 다른 목적은 eBPF 기술을 이용해 패칭함으로써 서비스가 구동되는 호스트 혹은 컨테이너 시스템을 방해하지 않고 올바르게 동작할 수 있도록 하는 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법을 제공하는 것이다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치는, 핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드(Container-aware code)를 생성하는 컨테이너 어웨어 코드 생성부; 및 상기 컨테이너 어웨어 코드에 기초해 상기 대상 컨테이너에 핫패치를 부착하기 위한 eBPF 기반의 핫패치 코드를 구성하는 핫패치 구성부를 포함한다.
그리고 상기 핫패치 구성부는, 커널 취약점인 CVE(CVE, Common Vulnerabilities and Exposures)에 대한 패칭 코드가 상기 대상 컨테이너가 사용하는 커널 공간(Kernel space)에 패치될 수 있도록, eBPF 기반의 핫패치 코드를 구성할 수 있다.
또한 상기 컨테이너 어웨어 코드 생성부는, 컨테이너 시스템에 포함되는 컨테이너 정보에 기초하여 상기 컨테이너 어웨어 코드를 생성하고, 상기 컨테이너에 대한 정보는, 컨테이너 시스템에 포함되는 컨테이너 ID 및 컨테이너의 런타임 정보 중 적어도 하나를 포함할 수 있다.
그리고 상기 컨테이너 ID는, 해당 컨테이너의 이름 및 해시를 포함할 수 있다.
또한 상기 핫패치 구성부는, 사전에 설정된 핫패치 템플릿을 로딩하고, 상기 핫패치 템플릿에 상기 패칭 코드 및 상기 컨테이너 어웨어 코드에 포함된 정보가 입력되도록 하여 상기 eBPF 기반의 핫패치 코드를 구성할 수 있다.
그리고 BPF 시스템 콜을 사용하여 상기 핫패치 코드가 상기 대상 컨테이너가 사용하는 커널 공간에 패치되도록 하고, 패치된 핫패치 코드의 취약점이 트리거(trigger)되면 알림을 수신하는 핫패치 컨트롤부를 더 포함할 수 있다.
또한 상기 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치는, 해당 커널 공간을 사용하는 상기 대상 컨테이너에서만 상기 핫패치 코드가 개별적으로 패치되도록 하고, 상기 컨테이너 시스템은 실행 가능하도록 할 수 있다.
그리고 상기 컨테이너 어웨어 코드는, 마운트 네임스페이스 아이디(mount namespace ID)를 포함할 수 있다.
한편 상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치에서의 eBPF 기반의 핫패치 방법은, 핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드(Container-aware code)를 생성하는 단계; 및 상기 컨테이너 어웨어 코드에 기초해 상기 대상 컨테이너에 핫패치를 부착하기 위하여 eBPF 기반의 핫패치 코드를 구성하는 단계를 포함한다.
그리고 상기 핫패치 코드를 구성하는 단계에서는, 커널 취약점인 CVE(CVE, Common Vulnerabilities and Exposures)에 대한 패칭 코드가 상기 대상 컨테이너가 사용하는 커널 공간(Kernel space)에 패치될 수 있도록, eBPF 기반의 핫패치 코드를 구성할 수 있다.
또한 상기 컨테이너 어웨어 코드(Container-aware code)를 생성하는 단계에서는, 컨테이너 시스템에 포함되는 컨테이너 정보에 기초하여 상기 컨테이너 어웨어 코드를 생성하고, 상기 컨테이너에 대한 정보는, 컨테이너 시스템에 포함되는 컨테이너 ID 및 컨테이너의 런타임 정보 중 적어도 하나를 포함할 수 있다.
그리고 상기 컨테이너 ID는, 해당 컨테이너의 이름 및 해시를 포함할 수 있다.
또한 상기 핫패치 코드를 구성하는 단계에서는, 사전에 설정된 핫패치 템플릿을 로딩하고, 상기 핫패치 템플릿에 상기 패칭 코드 및 상기 컨테이너 어웨어 코드에 포함된 정보가 입력되도록 하여 상기 eBPF 기반의 핫패치 코드를 구성할 수 있다.
그리고 상기 핫패치 코드가 상기 대상 컨테이너가 사용하는 커널 공간에 패치되도록 하고, 패치된 핫패치 코드의 취약점이 트리거되면 알림을 수신하는 단계를 더 포함할 수 있다.
또한 상기 eBPF 기반의 핫패치 방법은, 해당 커널 공간을 사용하는 상기 대상 컨테이너에서만 상기 핫패치 코드가 개별적으로 패치되도록 하고, 상기 컨테이너 시스템은 실행 가능하도록 할 수 있다.
그리고 상기 컨테이너 어웨어 코드는, 마운트 네임스페이스 아이디(mount namespace ID)를 포함할 수 있다.
한편 상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 시스템은, 적어도 하나의 컨테이너를 포함하는 컨테이너 시스템; 및 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치로서, 상기 컨테이너 시스템에서 핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드를 생성하고, 상기 컨테이너 어웨어 코드에 기초하여 eBPF 기반의 핫패치 코드를 구성하며, 상기 핫패치 코드가 상기 대상 컨테이너가 사용하는 커널 공간에 패치되도록 하는 eBPF 기반의 핫패치 엔진장치를 포함한다.
그리고 상기 eBPF 기반의 핫패치 엔진장치는, 핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드(Container-aware code)를 생성하는 컨테이너 어웨어 코드 생성부; 상기 컨테이너 어웨어 코드에 기초해 상기 대상 컨테이너에 핫패치를 부착하기 위한 eBPF 기반의 핫패치 코드를 구성하는 핫패치 구성부; 및 BPF 시스템 콜을 사용하여 상기 핫패치 코드가 상기 커널 공간에 패치되도록 하고, 패치된 핫패치 코드의 취약점이 트리거되면 알림을 수신하는 핫패치 컨트롤부를 포함할 수 있다.
상술한 본 발명의 일측면에 따르면, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법을 제공함으로써, 리부트 및 프리징 없이 런타임에 커널과 관련된 CVE를 핫패칭함으로써 컨테이너 시스템에 대한 알려진 취약점인 CVE를 기반으로 한 공격을 방지할 수 있다.
또한 컨테이너 시스템 전체가 아닌 개별 컨테이너 또는 여러 개의 컨테이너에 다수의 패치가 독립적으로 적용될 수 있다.
그리고 eBPF 기술을 이용해 패칭함으로써 서비스가 구동되는 호스트 혹은 컨테이너 시스템을 방해하지 않고 올바르게 동작할 수 있도록 할 수 있다.
도 1 및 도 2는 본 발명의 실시예에 따른 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 시스템을 설명하기 위한 도면,
도 3 및 도 4는 본 발명의 실시예에 따른 eBPF 기반의 핫패치 엔진장치를 설명하기 위한 도면,
도 5는 본 발명의 실시예에 따른 eBPF 기반의 핫패치 엔진장치에서 사용되는 파라미터를 설명하기 위한 도면,
도 6은 본 발명의 실시예에 따른 eBPF 기반의 핫패치 엔진장치에서 사용되는 핫패치 템플릿을 설명하기 위한 도면,
도 7은 본 발명의 실시예에 따른 eBPF 기반의 핫패치 엔진장치에서 핫패치 코드를 구성하기 위해 사용되는 실제 패칭 코드를 설명하기 위한 도면,
도 8은 본 발명의 실시예에 따른 eBPF 기반의 핫패치 엔진장치에서 도 7의 CVE를 해결하기 위한 핫패치 코드를 구성하는 과정을 설명하기 위한 도면, 그리고,
도 9는 도 3 및 도 4의 eBPF 기반의 핫패치 엔진장치에서의 eBPF 기반의 핫패치 방법에 대한 흐름도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예와 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
본 발명에 따른 구성요소들은 물리적인 구분이 아니라 기능적인 구분에 의해서 정의되는 구성요소들로써 각각이 수행하는 기능들에 의해서 정의될 수 있다. 각각의 구성요소들은 하드웨어 또는 각각의 기능을 수행하는 프로그램 코드 및 프로세싱 유닛으로 구현될 수 있을 것이며, 두 개 이상의 구성요소의 기능이 하나의 구성요소에 포함되어 구현될 수도 있을 것이다. 따라서 이하의 실시예에서 구성요소에 부여되는 명칭은 각각의 구성요소를 물리적으로 구분하기 위한 것이 아니라 각각의 구성요소가 수행되는 대표적인 기능을 암시하기 위해서 부여된 것이며, 구성요소의 명칭에 의해서 본 발명의 기술적 사상이 한정되지 않는 것임에 유의하여야 한다.
이하에서는 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
도 1 및 도 2는 본 발명의 실시예에 따른 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 시스템(10)을 설명하기 위한 도면이다.
본 발명의 eBPF 기반의 핫패치 시스템(10, 이하 시스템)은 리눅스 커널 취약점 방지를 위한 핫패칭 시스템을 빌드하기 위해 마련된다. 구체적으로 시스템(10)은 커널 기능(함수)을 후킹 및 추적할 수 있도록 하는 eBPF 기술의 장점을 이용하기 위해 eBPF 기반의 핫패치 코드를 구성할 수 있다. 또한 시스템(10)은 핫패치 코드를 커널 공간에 부착할 수 있다.
도 1 및 도 2를 참조하면 본 발명에 따른 시스템(10)은 컨테이너 시스템(200) 및 핫패치 엔진장치(100)를 포함하여 마련될 수 있다.
본 발명의 시스템(10)은 eBPF 기반의 핫패치 방법을 수행하기 위한 소프트웨어(애플리케이션)가(이) 설치되어 실행될 수 있다. 그리고 컨테이너 시스템(200) 및 핫패치 엔진장치(100)의 구성은 시스템(10)에서 실행되는 eBPF 기반의 핫패치 방법을 수행하기 위한 소프트웨어에 의해 제어될 수 있다.
컨테이너 시스템(200)은 적어도 하나의 컨테이너(C1, C2, ??, CN)를 포함할 수 있다. 그리고 컨테이너 시스템(200)은 핫패치 엔진장치(100)와 연동될 수 있으며, 핫패치 엔진장치(100)에 의해 패칭을 지원받을 수 있다.
핫패치 엔진장치(100, 이하 장치)는 커널 취약점을 방어하기 위한 eBPF에 기반한 장치로서, 컨테이너에 부착되는 패치들을 관리하고 패칭 프로세스를 제어하기 위해 마련된다.
또한 장치(100)는 특정한 컨테이너에 대한 패칭을 지원함으로써 컨테이너-어웨어니스(CONTAINER-AWARENESS)를 제공할 수 있다.
따라서 본 발명의 실시예에 따른 장치(100)는 컨테이너 시스템(200)에 포함되는 컨테이너 중 특정한 컨테이너, 즉 대상 컨테이너에 핫패치를 부착 및 분리(attach and detach)할 수 있다.
보다 구체적으로 장치(100)는 컨테이너 시스템(200)에서 핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드를 생성할 수 있다.
그리고 장치(100)는 컨테이너 어웨어 코드에 기초하여 eBPF 기반의 핫패치 코드를 구성할 수 있다.
또한 장치(100)는 도 2에서와 같이 대상 컨테이너가 사용하는 커널 공간(kernel space)에 핫패치 코드가 패치되도록 할 수 있다.
특히 본 발명의 실시예에 따른 장치(100)는 개발자 또는 사용자가 커널 공간을 이해하는 노력 없이 핫패치 코드를 작성할 수 있도록 할 수 있다.
이러한 장치(100)에 대한 구체적인 구성은 후술할 도 3 내지 도 8에서 보다 자세히 설명하기로 한다.
도 2에서 점선 화살표(Before patch)는 패칭 전 취약한 커널 함수(vulnerable kernel functions)를 호출하는 경우의 컨테이너의 콜 흐름을 의미한다.
그리고 도 2에서 실선 화살표(After patch)는 장치(100)를 통해 핫패치가 부착된 후 취약한 커널 함수(kernel functions)를 호출하는 경우의 컨테이너의 콜 흐름을 의미한다.
도 2를 통해 알 수 있듯이, 본 발명의 시스템(10)은 eBPF 기반의 핫패치 코드를 이용함으로써 커널 함수의 콜(call) 전, 후를 후킹(hooking)하여 커널 취약점을 동적으로 패치할 수 있다.
한편 도 3 및 도 4는 본 발명의 실시예에 따른 eBPF 기반의 핫패치 엔진장치(100)를 설명하기 위한 도면이다.
장치(100)는 리부트를 필요로 하지 않는 동시에, 실행 중인 컨테이너 시스템(200)에 영향을 주지 않는 핫패치 코드를 구성할 수 있다.
그리고 장치(100)는 구성된 핫패치 코드를 핫패치 부착의 대상 컨테이너에만 패치되도록 할 수 있다.
이를 위해 장치(100)는 컨테이너 어웨어 코드 생성부(110), 핫패치 구성부(130) 및 핫패치 컨트롤부(150)를 포함할 수 있다.
컨테이너 어웨어 코드 생성부(110)는 핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드(Container-aware code)를 생성할 수 있다.
그리고 컨테이너 어웨어 코드 생성부(110)는 컨테이너 시스템(200)에 포함되는 컨테이너 정보에 기초하여 컨테이너 어웨어 코드를 생성할 수 있다.
여기서 컨테이너에 대한 정보는, 도 4에서와 같이 컨테이너 시스템(200)에 포함되는 컨테이너 ID(container ID) 및 컨테이너의 런타임 정보(container runtime) 중 적어도 하나를 포함할 수 있다.
구체적으로 컨테이너 ID는, 해당 컨테이너의 이름 및 해시를 포함할 수 있으며, 컨테이너의 런타임 정보는 예컨대, docker, containerd 등일 수 있다.
그리고 컨테이너 어웨어 코드 생성부(110)는 이러한 컨테이너 ID 및 런타임 정보에 기반하여 마운트 네임스페이스 아이디(mount namespace ID) 및 cGroup ID를 계산할 수 있다.
각 ID들은 컨테이너 격리를 제어하는데 사용되며, 리눅스 컨테이너 기술의 중요 메커니즘 중 하나이다.
컨테이너 어웨어 코드 생성부(110)가 마운트 네임스페이스 아이디(mount namespace ID) 및 cGroup ID를 계산하는 것은 컨테이너의 개념은 유저 공간(user space)에서 프로세스를 독립하도록 만들어진 것으로, 커널 공간에는 이러한 개념이 존재하지 않기 때문이다.
즉, 컨테이너의 격리는 네임스페이스 아이디를 기반으로 하는데, 이는 하나의 프로세스, 또는 그 자식 프로세스에게 할당된다. 따라서 본 발명의 컨테이너 어웨어 코드 생성부(110)는 마운트 네임스페이스 아이디가 컨테이너 어웨어 코드에 포함되도록 할 수 있다.
그리고 보안 정책 시행의 일종인 SELinux 또는 Apparmor와 같은 강제적 접근 제어(MAC, Mandatory Access Control)나 기타 메커니즘은 컨테이너 내부에서 프로세스의 권한을 제어하기 위해 사용될 수 있다. 이에 본 발명의 컨테이너 어웨어 코드 생성부(110)는 컨테이너 어웨어를 위해 커널 공간에서 AppArmor infor, cGroup ID 또는 SELinux info와 같은 정보들을 사용할 수도 있으나, 이는 선택적일 수 있다.
반면, 네임스페이스 ID(namespace ID)는 대체될 수 없는 유니크(unique)한 정보이므로, 컨테이너 어웨어 코드 생성부(110)는 컨테이너 어웨어 코드 생성부(110)에 마운트 네임스페이스가 필수적으로 포함되도록 한다.
그리고 컨테이너 어웨어 코드 생성부(110)는 컨테이너 어웨어 코드를 핫패치 구성부(130)로 전달할 수 있다.
한편 핫패치 구성부(130)는 컨테이너 어웨어 코드에 기초해 대상 컨테이너에 핫패치를 부착하기 위한 eBPF 기반의 핫패치 코드(eBPF code)를 구성할 수 있다.
버클리 패킷 필터(BPF, Berkerley Packet Filter)는 특정 컴퓨터 운영체제에서 사용되는 기술로써 특히 네트워크 트래픽 분석을 위한 프로그램에 사용되는 기술이다.
이러한 BPF는 데이터 링크 계층에 로(raw) 인터페이스를 제공하여 링크 계층의 로 패킷이 전송 및 수신될 수 있도록 한다. 따라서 BPF는 패킷 필터링을 지원하므로 유저 스페이스 프로세스가 수신하고자 하는 패킷을 지정하는 필터 프로그램을 제공할 수 있다.
예를 들어 tcpdump 프로세스는 TCP 연결을 시작하는 패킷만 수신하려고 할 수 있다.
그리고 BPF는 프로세스에서 제공하는 필터를 통과하는 패킷만 반환할 수 있으며, 이를 통해 운영 체제 커널에서 프로세스로 원치 않는 패킷을 복사하지 않으므로 성능이 크게 향상될 수 있다.
한편, eBPF(리눅스 커널의 확장된 BPF JIT 가상 머신)은 운영 체제 커널에서 샌드박스된 프로그램을 실행할 수 있는 리눅스 커널에서 유래한 혁신적인 기술이다.
이러한 eBPF는 커널 소스 코드를 변경하거나 커널 모듈을 로드할 필요 없이 커널의 기능을 안전하고 효율적으로 확장하기 위해 사용되고 있다.
또한 널리 알려진 커널 취약점인 CVEs(Common Vulnerabilities and Exposures)는 최근 점점 더 취약점을 악용하기 위해 사용되고 있다.
이러한 취약점을 악용한 공격에 맞서기 위해서는 커널의 새로운 버전 등을 패치해야 하지만, 안정적인 서비스를 제공해야 하는 클라우드 시스템은 적시에 업데이트를 수행하지 못할 수 있다.
종래의 방화벽이나 접근 제어 솔루션들은 해당 솔루션들이 필요한 순간에만 작용하는 것과 같이 일시적이며 우회될 가능성이 매우 높다. 따라서 CVE 번호가 부여된 알려진 취약점에 대한 패치가 필요하다.
이에 본 발명의 핫패치 구성부(130)는 커널 취약점인 CVE(CVE, Common Vulnerabilities and Exposures)에 대한 패칭 코드(patching code)가 대상 컨테이너가 사용하는 커널 공간(Kernel space)에 패치될 수 있도록 eBPF 기반의 핫패치 코드(eBPF code)를 구성할 수 있다.
여기서 패칭 코드(patching code)는 시스템 관리자 또는 Linux Foundation에 의해 알려진 실제 패칭 코드를 의미할 수 있다.
그리고 핫패치 구성부(130)는 사전에 설정된 핫패치 템플릿을 로딩할 수 있다.
본 발명의 핫패치 템플릿은 개발자 또는 사용자가 커널 공간을 이해하는 노력 없이도 핫패치 코드(eBPF code)를 작성하도록 하기 위한 재사용가능하고 직관적인 템플릿일 수 있다.
핫패치 템플릿에 패칭 코드(patching code) 및 컨테이너 어웨어 코드에 포함된 정보가 입력되도록 하여 eBPF 기반의 핫패치 코드(eBPF code)를 구성할 수 있다.
핫패치 구성부(130)는 상술한 실제 패칭 코드를 기반으로 C 언어로 작성된 핫패치 코드(eBPF code)를 구성할 수 있다.
이를 통해 핫패치 구성부(130)는 다수의 CVE에 대한 실제 패칭 코드를 커널 공간에 부착시킬 수 있는 완전한 eBPF 코드인 핫패치 코드(eBPF code)를 구성할 수 있다.
그리고 핫패치 구성부(130)는 eBPF 기반의 핫패치 코드(eBPF code)를 핫패치 컨트롤부(150)로 전달할 수 있다.
한편, 핫패치 컨트롤부(150)는 BPF 시스템 콜을 사용하여 핫패치 코드(eBPF code)가 대상 컨테이너가 사용하는 커널 공간에 패치되도록 할 수 있다.
그리고 핫패치 컨트롤부(150)는 패치된 핫패치 코드(eBPF code)의 취약점이 트리거되면 알림을 수신할 수 있다.
따라서 본 발명에 따른 장치(100)는, 해당 커널 공간을 사용하는 대상 컨테이너에서만 핫패치 코드(eBPF code)가 개별적으로 패치되도록 하고, 컨테이너 시스템(200) 전체는 실행 가능하도록 할 수 있다.
따라서 본 발명에 따른 장치(100)는 리부트 및 프리징 없이 런타임에 커널과 관련된 CVE를 핫패칭함으로써 컨테이너 시스템(200)에 대한 알려진 취약점인 CVE를 기반으로 한 공격을 방지할 수 있다.
또한 장치(100)는 컨테이너 시스템 전체가 아닌 개별 컨테이너 또는 여러 개의 컨테이너에 다수의 패치가 독립적으로 적용될 수 있다.
그리고 장치(100)는 eBPF 기술을 이용해 패칭함으로써 서비스가 구동되는 호스트 혹은 컨테이너 시스템을 방해하지 않고 올바르게 동작할 수 있도록 할 수 있다.
이하에서는 본 발명의 장치(100)에서 실제 패칭 코드를 이용해 핫패치 코드(eBPF code)가 구성되는 과정에 대한 구체적인 예제를 설명하기로 한다.
도 5는 본 발명의 실시예에 따른 eBPF 기반의 핫패치 엔진장치(100)에서 사용되는 파라미터를 설명하기 위한 도면, 도 6은 본 발명의 실시예에 따른 eBPF 기반의 핫패치 엔진장치(100)에서 사용되는 핫패치 템플릿을 설명하기 위한 도면, 도 7은 본 발명의 실시예에 따른 eBPF 기반의 핫패치 엔진장치(100)에서 핫패치 코드(eBPF code)를 구성하기 위해 사용되는 실제 패칭 코드를 설명하기 위한 도면, 그리고 도 8은 본 발명의 실시예에 따른 eBPF 기반의 핫패치 엔진장치(100)에서 도 7의 CVE를 해결하기 위한 핫패치 코드(eBPF)를 구성하는 과정을 설명하기 위한 도면이다.
본 발명의 장치(100) 및 장치(100)를 포함하는 시스템(10)은 커널 버전 5.7x부터 eBPF 시스템이 디폴트로 활성화되어 있으므로, 커널 버전 5.7x 이상을 사용하는 것이 바람직할 수 있다.
그리고 본 발명의 핫패치 템플릿은 개발자 또는 사용자가 커널 공간을 이해하는 노력 없이도 핫패치 코드(eBPF code)를 작성하도록 하기 위한 재사용가능하고 직관적인 템플릿일 수 있다.
다만 본 발명의 장치(100)를 포함하는 시스템(10)을 사용하기 위해서, 시스템 관리자에게는 특정 CVE가 어떻게 패치되는지 등의 애플리케이션 보안에 대한 기본적인 지식이 요구된다.
이에 핫패치 코드(eBPF code)는 상술한 바와 같이 리눅스 커널과 같은 C 언어로 작성될 수 있고, 핫패치 구성부(130) 및 핫패치 컨트롤부(150)는 이러한 핫패치 코드(eBPF code)를 자동으로 컴파일할 수 있다.
따라서 관리자 또는 사용자는 낮은 레벨에서의 컴파일링의 진행 과정 등에 대한 염려없이 본 발명의 장치(100)를 포함하는 시스템(10)을 사용할 수 있다.
그리고 개발자는 패치가 필요한 취약한 기능과 관련된 라이브러리의 리스트와 로그 할 정보에 대한 필요한 파라미터를 정의할 수 있다.
구체적으로, 예를 들면 핫패치 템플릿 내의 <Dependency libraries> 부분에서 개발자는 패치가 필요한 취약한 기능과 관련된 라이브러리의 리스트를 정의해야 하는데, 예를 들면 하기와 같은 라이브러리들을 정의할 수 있다.
#include <linux/cgroup.h>
#include <trace/events/cgroup.h>
#include <linux/cgroupstats.h>
그리고 개발자는 핫패치 템플릿 내의 <eBPF perf data structure> 부분인 struct data 부분에 입력되어야 하는 로그 할 정보에 필요한 파라미터를 정의할 수 있다. 예컨대 로그 할 정보에 필요한 파라미터는 도 5에 도시된 바와 같을 수 있다.
도 5에 도시된 eBPF perf data structure는 보다 구체적으로 설명하면 도 8에 도시된 핫패치 템플릿 내에서 8번째 줄의 struct data_t data={};에 사용될 수 있다.
도 6은 핫패치 구성부(130)가 핫패치 코드를 구성하기 위해 사용하는 핫패치 템플릿의 구체적인 예시이다. 도 6에서와 같이 본 발명의 핫패치 구성부(130)는 핫패치 템플릿의 <patching function> 부분이 수정되도록 할 수 있다.
구체적으로 핫패치 구성부(130)는 로딩한 핫패치 템플릿을 Linux Kernel git에 발표된 특정 취약점의 실제 패칭 코드에 따라 수정되도록 하여 핫패치 코드(eBPF code)를 구성할 수 있다.
예컨대 도 6을 참조하여 설명하면, 핫패치 템플릿 내에는 패칭 펑션(patching function)의 네임이 입력하는 영역(N)이 포함될 수 있다.
그리고 핫패치 템플릿 내에는 로그할 정보에 필요한 파라미터가 입력되는 영역(P)이 포함될 수 있다.
또한 핫패치 템플릿 내에는 대상 컨테이너가 지정되는 영역(ID) 및 후킹을 위한 조건이 입력되는 영역(C)가 포함될 수 있다.
이러한 핫패치 템플릿 내에서의 영역들(N, P, ID, C)은 핫패치 코드(eBPF code)를 구성하기 위해 수정이 필요한 부분들이다.
도 7은 핫패치 코드(eBPF code)를 구성하기 위해 사용되는 CVE 넘버가 부여된 실제 패칭 코드의 예시로써, CVE-2022-0492를 참조하였다.
해당 CVE는 취약점을 수정하기 위해 cgroup_release_agent_write 함수를 수정해야 한다. 그리고 sanity check를 이용한 실제 패칭 코드는 도 8에 도시된 바와 같다.
도 7에서 P1 영역(P1)은 함수 이름(function name), P2 영역(P2)은 로그 할 정보에 필요한 파라미터, P3 영역(P3)은 조건(Condition)으로써 해당 부분을 통해 해당 취약점을 해결할 수 있다.
따라서 핫패치 구성부(130)는 도 7과 같은 CVE 넘버가 부여된 실제 패칭 코드에 기초하여 도 6의 핫패치 템플릿을 도 8과 같이 수정함으로써 핫패치 코드를 구성할 수 있다.
보다 구체적으로 도 8에서 패칭 펑션의 네임이 입력되는 영역(N)에는 도 7의 P1 영역(P1)의 함수 이름이 입력된다.
그리고 로그 할 정보에 필요한 파라미터가 입력되는 영역(P)에는 도 7의 P2 영역(P2)의 파라미터가 입력될 수 있다.
대상 컨테이너가 지정되는 영역(ID)에는 마운트 네임스페이스 아이디(mount namespace ID)를 포함하는 컨테이너 어웨어 코드가 입력될 수 있다.
그리고 후킹을 위한 조건이 입력되는 영역(C)에는 도 7의 P3 영역(P3)의 조건(Condition)이 입력될 수 있다.
이러한 과정을 통해 핫패치 구성부(130)는 커널 취약점인 CVE에 대한 패칭 코드가 대상 컨테이너가 사용하는 커널 공간(Kernel space)에 패치될 수 있도록, eBPF 기반의 핫패치 코드(eBPF code)를 구성할 수 있게 된다.
그리고 핫패치 컨트롤부(150)는 이렇게 구성된 핫패치 코드(eBPF code)는 BPF 시스템 콜을 사용해 커널 공간에 부착할 수 있다.
핫패치 코드(eBPF code)가 부착되고 나면 장치(100)를 포함하는 시스템(10)은, 부착된 핫패치 코드(eBPF code)에 선언된 취약한 기능을 추적할 수 있다. 그리고 시스템(10)은 취약점이 트리거되는지 확인할 수 있다.
이상에서 설명한 바와 같이 장치(100)는 핫패치 템플릿과 Linux Kernel git에서 발표된 실제 패칭 코드의 sanity check를 사용하여 eBPF 기반의 핫패치 코드를 작성하므로 sanity check가 보장될 수 있다.
그리고 취약점이 트리거될 때마다 커널 공간의 eBPF 프로그램이 핫패치 컨트롤부로 알림을 보낼 수 있다.
도 9는 도 3 및 도 4의 eBPF 기반의 핫패치 엔진장치(100)에서의 eBPF 기반의 핫패치 방법을 설명하기 위한 흐름도로써, 본 발명의 일 실시예에 따른 eBPF 기반의 핫패치 방법은 도 1 내지 도 4에 도시된 장치(100) 및 장치(100)를 포함하는 시스템(10)과 실질적으로 동일한 구성 상에서 진행되므로, 도 1 내지 도 4에 도시된 장치(100) 및 장치(100)를 포함하는 시스템(10)과 동일한 구성요소에 대해 동일한 도면 부호를 부여하고, 반복되는 설명은 생략하기로 한다.
본 발명의 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치(100)에서의 eBPF 기반의 핫패치 방법은, 컨테이너 어웨어 코드(Container-aware code)를 생성하는 단계(S110), eBPF 기반의 핫패치 코드를 구성하는 단계(S130) 및 핫패치 코드가 대상 컨테이너가 사용하는 커널 공간에 패치되도록 하는 단계(S150)를 포함할 수 있다.
컨테이너 어웨어 코드를 생성하는 단계(S110)에서는, 컨테이너 어웨어 코드 생성부(110)가 핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드(Container-aware code)를 생성할 수 있다.
그리고 컨테이너 어웨어 코드를 생성하는 단계(S110)에서는, 컨테이너 시스템(200)에 포함되는 컨테이너 정보에 기초하여 컨테이너 어웨어 코드를 생성할 수 있다.
여기서 컨테이너에 대한 정보는 컨테이너 시스템(200)에 포함되는 컨테이너 ID 및 컨테이너의 런타임 정보 중 적어도 하나를 포함할 수 있다. 그리고 컨테이너 ID는 해당 컨테이너의 이름 및 해시를 포함할 수 있다.
따라서 컨테이너 어웨어 코드는 마운트 네임스페이스 아이디(mount namespace ID)를 포함할 수 있다.
한편 핫패치 코드를 구성하는 단계(S130)에서는, 핫패치 구성부(130)가 컨테이너 어웨어 코드에 기초해 대상 컨테이너에 핫패치를 부착하기 위하여 eBPF 기반의 핫패치 코드를 구성할 수 있다.
이때 한편 핫패치 코드를 구성하는 단계(S130)에서 핫패치 구성부(130)는 커널 취약점인 CVE(CVE, Common Vulnerabilities and Exposures)에 대한 패칭 코드가 대상 컨테이너가 사용하는 커널 공간(Kernel space)에 패치될 수 있도록, eBPF 기반의 핫패치 코드를 구성할 수 있다.
또한 핫패치 코드를 구성하는 단계(S130)에서는, 핫패치 코드(eBPF code)를 구성하기 위해 사전에 설정된 핫패치 템플릿을 로딩할 수 있다.
그리고 핫패치 코드를 구성하는 단계(S130)에서는 로딩된 핫패치 템플릿에 CVE에 대한 패칭 코드 및 컨테이너 어웨어 코드에 포함된 정보가 입력되도록 하여 eBPF 기반의 핫패치 코드를 구성할 수 있다.
한편 핫패치 코드(eBPF code)가 대상 컨테이너가 사용하는 커널 공간에 패치되도록 하는 단계(S150)에서는, 핫패치 코드를 구성하는 단계(S130)에서 구성된 핫패치 코드를 커널 공간에 패치할 수 있다.
이를 통해 핫패치 코드가 패치되고 나면 핫패치 코드에 선언된 취약한 기능을 추적하여 취약점이 트리거되는지 확인할 수 있다.
그리고 핫패치 코드(eBPF code)가 대상 컨테이너가 사용하는 커널 공간에 패치되도록 하는 단계(S150)에서는, 핫패치 코드를 패치하고 나서 패치된 핫패치 코드의 취약점이 트리거되면 커널 공간의 eBPF 프로그램으로부터 알림을 수신할 수 있다.
이를 통해 본 발명의 실시예에 따른 eBPF 기반의 핫패치 방법은, 해당 커널 공간을 사용하는 대상 컨테이너에서만 핫패치 코드가 개별적으로 패치되도록 하고, 컨테이너 시스템(200)은 실행 가능하도록 할 수 있다.
이와 같은 본 발명의 eBPF 기반의 핫패치 방법은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD 와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서는 본 발명의 다양한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
10 : eBPF 기반의 핫패치 시스템 100 : eBPF 기반의 핫패치 엔진장치
110 : 컨테이너 어웨어 코드 생성부 130 : 핫패치 구성부
150 : 핫패치 컨트롤부 200 : 컨테이너 시스템

Claims (18)

  1. 핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드(Container-aware code)를 생성하는 컨테이너 어웨어 코드 생성부; 및
    상기 컨테이너 어웨어 코드에 기초해 상기 대상 컨테이너에 핫패치를 부착하기 위한 eBPF 기반의 핫패치 코드를 구성하는 핫패치 구성부를 포함하는, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치.
  2. 제1항에 있어서,
    상기 핫패치 구성부는,
    커널 취약점인 CVE(CVE, Common Vulnerabilities and Exposures)에 대한 패칭 코드가 상기 대상 컨테이너가 사용하는 커널 공간(Kernel space)에 패치될 수 있도록, eBPF 기반의 핫패치 코드를 구성하는 것을 특징으로 하는, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치.
  3. 제2항에 있어서,
    상기 컨테이너 어웨어 코드 생성부는,
    컨테이너 시스템에 포함되는 컨테이너 정보에 기초하여 상기 컨테이너 어웨어 코드를 생성하고,
    상기 컨테이너 정보는,
    컨테이너 시스템에 포함되는 컨테이너 ID 및 컨테이너의 런타임 정보 중 적어도 하나를 포함하는 것을 특징으로 하는, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치.
  4. 제3항에 있어서,
    상기 컨테이너 ID는,
    해당 컨테이너의 이름 및 해시를 포함하는 것을 특징으로 하는, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치.
  5. 제2항에 있어서,
    상기 핫패치 구성부는,
    사전에 설정된 핫패치 템플릿을 로딩하고, 상기 핫패치 템플릿에 상기 패칭 코드 및 상기 컨테이너 어웨어 코드에 포함된 정보가 입력되도록 하여 상기 eBPF 기반의 핫패치 코드를 구성하는 것을 특징으로 하는, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치.
  6. 제2항에 있어서,
    BPF 시스템 콜을 사용하여 상기 핫패치 코드가 상기 대상 컨테이너가 사용하는 커널 공간에 패치되도록 하고, 패치된 핫패치 코드의 취약점이 트리거되면 알림을 수신하는 핫패치 컨트롤부를 더 포함하는 것을 특징으로 하는, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치.
  7. 제6항에 있어서,
    상기 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치는,
    해당 커널 공간을 사용하는 상기 대상 컨테이너에서만 상기 핫패치 코드가 개별적으로 패치되도록 하고, 상기 컨테이너 시스템은 실행 가능하도록 하는 것을 특징으로 하는, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치.
  8. 제1항에 있어서,
    상기 컨테이너 어웨어 코드는,
    마운트 네임스페이스 아이디(mount namespace ID)를 포함하는 것을 특징으로 하는, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치.
  9. 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치에서의 eBPF 기반의 핫패치 방법은,
    핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드(Container-aware code)를 생성하는 단계; 및
    상기 컨테이너 어웨어 코드에 기초해 상기 대상 컨테이너에 핫패치를 부착하기 위하여 eBPF 기반의 핫패치 코드를 구성하는 단계를 포함하는 eBPF 기반의 핫패치 방법.
  10. 제9항에 있어서,
    상기 핫패치 코드를 구성하는 단계에서는,
    커널 취약점인 CVE(CVE, Common Vulnerabilities and Exposures)에 대한 패칭 코드가 상기 대상 컨테이너가 사용하는 커널 공간(Kernel space)에 패치될 수 있도록, eBPF 기반의 핫패치 코드를 구성하는 것을 특징으로 하는, eBPF 기반의 핫패치 방법.
  11. 제10항에 있어서,
    상기 컨테이너 어웨어 코드(Container-aware code)를 생성하는 단계에서는,
    컨테이너 시스템에 포함되는 컨테이너 정보에 기초하여 상기 컨테이너 어웨어 코드를 생성하고,
    상기 컨테이너에 대한 정보는,
    컨테이너 시스템에 포함되는 컨테이너 ID 및 컨테이너의 런타임 정보 중 적어도 하나를 포함하는 것을 특징으로 하는, eBPF 기반의 핫패치 방법.
  12. 제11항에 있어서,
    상기 컨테이너 ID는,
    해당 컨테이너의 이름 및 해시를 포함하는 것을 특징으로 하는, eBPF 기반의 핫패치 방법.
  13. 제10항에 있어서,
    상기 핫패치 코드를 구성하는 단계에서는,
    사전에 설정된 핫패치 템플릿을 로딩하고, 상기 핫패치 템플릿에 상기 패칭 코드 및 상기 컨테이너 어웨어 코드에 포함된 정보가 입력되도록 하여 상기 eBPF 기반의 핫패치 코드를 구성하는 것을 특징으로 하는, eBPF 기반의 핫패치 방법.
  14. 제10항에 있어서,
    상기 핫패치 코드가 상기 대상 컨테이너가 사용하는 커널 공간에 패치되도록 하고, 패치된 핫패치 코드의 취약점이 트리거되면 알림을 수신하는 단계를 더 포함하는 것을 특징으로 하는, eBPF 기반의 핫패치 방법.
  15. 제14항에 있어서,
    상기 eBPF 기반의 핫패치 방법은,
    해당 커널 공간을 사용하는 상기 대상 컨테이너에서만 상기 핫패치 코드가 개별적으로 패치되도록 하고, 상기 컨테이너 시스템은 실행 가능하도록 하는 것을 특징으로 하는, eBPF 기반의 핫패치 방법.
  16. 제9항에 있어서,
    상기 컨테이너 어웨어 코드는,
    마운트 네임스페이스 아이디(mount namespace ID)를 포함하는 것을 특징으로 하는, eBPF 기반의 핫패치 방법.
  17. 적어도 하나의 컨테이너를 포함하는 컨테이너 시스템; 및
    커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진장치로서, 상기 컨테이너 시스템에서 핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드를 생성하고, 상기 컨테이너 어웨어 코드에 기초하여 eBPF 기반의 핫패치 코드를 구성하며, 상기 핫패치 코드가 상기 대상 컨테이너가 사용하는 커널 공간에 패치되도록 하는 eBPF 기반의 핫패치 엔진장치를 포함하는, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 시스템.
  18. 제17항에 있어서,
    상기 eBPF 기반의 핫패치 엔진장치는,
    핫패치 부착의 대상 컨테이너를 식별하기 위한 컨테이너 어웨어 코드(Container-aware code)를 생성하는 컨테이너 어웨어 코드 생성부;
    상기 컨테이너 어웨어 코드에 기초해 상기 대상 컨테이너에 핫패치를 부착하기 위한 eBPF 기반의 핫패치 코드를 구성하는 핫패치 구성부; 및
    BPF 시스템 콜을 사용하여 상기 핫패치 코드가 상기 커널 공간에 패치되도록 하고, 패치된 핫패치 코드의 취약점이 트리거되면 알림을 수신하는 핫패치 컨트롤부를 포함하는 것을 특징으로 하는, 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 시스템.
KR1020220110784A 2022-09-01 2022-09-01 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법 KR20240031717A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220110784A KR20240031717A (ko) 2022-09-01 2022-09-01 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법
US18/210,396 US20240078319A1 (en) 2022-09-01 2023-06-15 Ebpf-based hot patch engine device for protecting kernel vulnerabilities, system and method including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220110784A KR20240031717A (ko) 2022-09-01 2022-09-01 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20240031717A true KR20240031717A (ko) 2024-03-08

Family

ID=90060923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220110784A KR20240031717A (ko) 2022-09-01 2022-09-01 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법

Country Status (2)

Country Link
US (1) US20240078319A1 (ko)
KR (1) KR20240031717A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190038065A (ko) 2017-09-29 2019-04-08 숭실대학교산학협력단 리눅스 기반 안드로이드 컨테이너 플랫폼, 이를 탑재한 장치 및 리눅스 기반 안드로이드 컨테이너 환경에서의 보안 시스템 구축 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190038065A (ko) 2017-09-29 2019-04-08 숭실대학교산학협력단 리눅스 기반 안드로이드 컨테이너 플랫폼, 이를 탑재한 장치 및 리눅스 기반 안드로이드 컨테이너 환경에서의 보안 시스템 구축 방법

Also Published As

Publication number Publication date
US20240078319A1 (en) 2024-03-07

Similar Documents

Publication Publication Date Title
US9208328B2 (en) Security system and method for operating systems
US7945958B2 (en) Constraint injection system for immunizing software programs against vulnerabilities and attacks
RU2377637C2 (ru) Эффективное исправление программ
US9672078B2 (en) Deployment and management of virtual containers
RU2377638C2 (ru) Эффективное исправление программ
RU2495487C1 (ru) Система и способ для определения доверия при обновлении разрешенного программного обеспечения
US7865952B1 (en) Pre-emptive application blocking for updates
US7590841B2 (en) Automatic update of computer-readable components to support a trusted environment
US20150332043A1 (en) Application analysis system for electronic devices
US7650492B2 (en) Automatic update of computer-readable components to support a trusted environment
KR100706176B1 (ko) 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템
US8806439B1 (en) System and method for program stack security
Armando et al. Breaking and fixing the android launching flow
Jia et al. Programmable system call security with ebpf
US20220391506A1 (en) Automated Interpreted Application Control For Workloads
US9390275B1 (en) System and method for controlling hard drive data change
Röpke et al. Retaining control over SDN network services
EP3769247B1 (en) System and method for preventing unwanted bundled software installation
KR20240031717A (ko) 커널 취약점을 방어하기 위한 eBPF 기반의 핫패치 엔진 장치, 이를 포함하는 시스템 및 방법
US20240152602A1 (en) Method and module for installing a mitigation program in the kernel of a computing device
Nazar et al. Rooting Android–Extending the ADB by an auto-connecting WiFi-accessible service
Belleville et al. KALD: Detecting direct pointer disclosure vulnerabilities
KR102370848B1 (ko) 분할된 보안 모듈을 구비하는 컴퓨터 장치 및 보안 모듈 업데이트 방법
Chevalier Detecting and Surviving Intrusions: Exploring New Host-Based Intrusion Detection, Recovery, and Response Approaches
WO2024074199A1 (en) Device and method for securely applying a live patch to an application