KR20210152624A - 컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치 - Google Patents

컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치 Download PDF

Info

Publication number
KR20210152624A
KR20210152624A KR1020200069082A KR20200069082A KR20210152624A KR 20210152624 A KR20210152624 A KR 20210152624A KR 1020200069082 A KR1020200069082 A KR 1020200069082A KR 20200069082 A KR20200069082 A KR 20200069082A KR 20210152624 A KR20210152624 A KR 20210152624A
Authority
KR
South Korea
Prior art keywords
software
file system
software list
list
layer
Prior art date
Application number
KR1020200069082A
Other languages
English (en)
Other versions
KR102340021B1 (ko
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 KR1020200069082A priority Critical patent/KR102340021B1/ko
Priority to US16/991,362 priority patent/US11669622B2/en
Publication of KR20210152624A publication Critical patent/KR20210152624A/ko
Application granted granted Critical
Publication of KR102340021B1 publication Critical patent/KR102340021B1/ko

Links

Images

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치가 개시된다. 본 발명의 일실시예에 따른 컨테이너 이미지에 대한 보안 가시성 제공 방법은, 컨테이너 이미지를 구성하는 레이어를 분석하여 소프트웨어 목록을 생성하는 단계, 상기 소프트웨어 목록을 기반으로 취약점 점검결과를 생성하는 단계 및 상기 소프트웨어 목록 및 상기 취약점 점검결과를 기반으로 컨테이너 이미지 콘텐츠 보고서를 생성하는 단계를 포함한다.

Description

컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치{METHOD AND APPARATUS FOR PROVIDING VISIBILITY OF SECURITY INTO CONTAINER IMAGES}
본 발명은 컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치에 관한 것으로써, 컨테이너 이미지를 구성하는 레이어별로 소프트웨어를 분석하고, 각각의 소프트웨어에 대한 취약점을 시각적으로 출력할 수 있는 기술에 관한 것이다.
본 명세서에서 달리 표시되지 않는 한, 이 섹션에 설명되는 내용들은 이 출원의 청구항들에 대한 종래 기술이 아니며, 이 섹션에 포함된다고 하여 종래 기술이라고 인정되는 것은 아니다.
컨테이너는 가상머신과 더불어 클라우드 서비스를 위한 인프라 기술로 널리 이용되고 있다.
컨테이너는 가볍고, 독립적이며, 빠른실행이 가능하다는 특성 때문에 클라우드 네이티브한 어플리케이션 개발 및 배포를 위한 최적의 기술로 여겨진다.
또한, 컨테이너는 어플리케이션의 인프라로서 활용도가 높아진 덕분에 근래에는 어플리케이션 컨테이너라는 용어로 불리기도 한다.
컨테이너 이미지와 컨테이너 레지스트리는 전술한 어플리케이션 컨테이너의 특성을 지원하는 가장 기본적인 요소들이다.
컨테이너 이미지는 컨테이너 실행에 필요한 번들로써, 어느 환경에서든 실행 가능하도록 특정 어플리케이션 실행에 필요한 모든 것을 컨테이너 이미지 내에 미리 구성한다.
구성은 컨테이너 이미지 빌드라는 과정을 통하여 진행되며, 이렇게 구성된 컨테이너 이미지는 컨테이너 레지스트리에 업로드되고, 필요시 다운로드된다.
업로드를 통해 컨테이너 레지스트리에 등록된 컨테이너 이미지는 주로 개발자나 컨테이너 오케스트레이터에 의해 이용되는데, 새로운 컨테이너 이미지를 빌드하기 위한 기반 이미지나, 컨테이너의 자동 확장 및 분산 배치 등의 용도로 이용될 수 있다.
도커 허브와 같은 컨테이너 레지스트리 서비스는 기반 이미지로 사용하기 편리한 다양한 공식 이미지를 관리하며, 자유롭게 공유할 수 있는 환경을 제공하고 있다.
하지만 컨테이너 레지스트리에 등록된 컨테이너 이미지를 사용하는 것은 오픈 소스나 라이브러리 등을 가져다 쓰는 것과 유사한 보안 위협에 노출될 수 있다.
소프트웨어 공급 프로세스는 오픈소스나 라이브러리 등을 쉽게 다운로드 할 수 있는 공유 저장소를 포함하고 있는데, 상기 공유 저장소를 공격하여 저장물을 조작하거나, 고의적으로 악성코드를 포함하는 저장물을 배포하는 등의 보안위협이 발생할 수 있다.
OWASP(Open Web Application Security Project)는 이러한 공급망 공격의 대응 방안으로 소프트웨어에 대한 투명성을 제공할 수 있는 구성요소 분석(Component analysis) 프로세스를 도입하여, 소프트웨어의 성분 목록(Software Bill Of Materials; SBOM)을 수집하고 분석할 것을 권고하고 있다.
한국공개특허 제10-2017-0022028호, 2017년 03월 02일 공개(명칭: 컨테이너 이미지 보안 검사 방법 및 그 장치)
본 발명의 목적은 불투명한 컨테이너 이미지에 대한 보안 가시성을 확보하기 위한 것이다.
또한, 본 발명의 목적은 컨테이너 이미지를 직접적 또는 간적접으로 구성하는 소프트웨어들을 최대한 식별하는 것이다.
또한, 본 발명의 목적은 컨테이너 이미지를 구성하는 레이어 유형별로 구분되는 소프트웨어 식별 방법을 제공하는 것이다.
또한, 본 발명의 목적은 컨테이너 이미지를 구성하는 소프트웨어들의 취약점을 점검하는 것이다.
또한 상술한 바와 같은 목적들로 한정되지 않으며, 이하의 설명으로부터 또 다른 목적이 도출될 수도 있음은 자명하다.
상기한 목적을 달성하기 위하여 본 발명의 일실시예에 따른 컨테이너 이미지에 대한 보안 가시성 제공 방법은 컨테이너 이미지를 구성하는 레이어를 분석하여 소프트웨어 목록을 생성하는 단계, 상기 소프트웨어 목록을 기반으로 취약점 점검결과를 생성하는 단계 및 상기 소프트웨어 목록 및 상기 취약점 점검결과를 기반으로 컨테이너 이미지 콘텐츠 보고서를 생성하는 단계를 포함한다.
이 때, 상기 소프트웨어 목록을 생성하는 단계는, 상기 컨테이너 이미지의 레이어 유형을 분석하는 단계 및 상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성하는 단계를 포함할 수 있다.
이 때, 상기 레이어 유형을 분석하는 단계는, 시스템이 실행되기 위한 기본 디렉토리 및 유틸리티를 포함하는 루트파일시스템 레이어를 식별하는 단계 및 상기 루트파일시스템 레이어를 기준으로 수정내용을 포함하는 알파 레이어를 식별하는 단계를 포함할 수 있다.
이 때, 상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성하는 단계는, 상기 레이어 유형이 루트파일시스템 레이어인 경우, 상기 컨테이너 이미지의 루트파일시스템과 동일한 루트파일시스템의 바닐라(Vanilla) 버전의 메타데이터를 획득하는 단계, 상기 루트파일시스템의 메타데이터와 바닐라 버전의 메타데이터를 비교하여, 상기 루트파일시스템의 바닐라상태 여부를 판단하는 단계 및 상기 바닐라상태 여부의 판단결과에 기반하여 소프트웨어 목록을 생성하는 단계를 포함할 수 있다.
이 때, 상기 바닐라상태 여부를 판단하는 단계는, 상기 루트파일시스템의 메타데이터를 상기 바닐라 버전의 메타데이터와 비교하여 변경사항이 없으면 바닐라(Vanilla)상태로 판단하고, 변경사항이 있으면 논바닐라(Non-Vanilla)상태로 판단할 수 있다.
이 때, 상기 바닐라상태 여부의 판단결과에 기반하여 소프트웨어 목록을 생성하는 단계는, 상기 루트파일시스템이 바닐라상태로 판단된 경우, 상기 루트파일시스템의 패키지 관리파일을 기반으로 소프트웨어 목록을 생성하고, 상기 루트파일시스템이 논바닐라상태로 판단된 경우, 상기 루트파일시스템의 메타데이터에 기반하여 상기 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하는 단계, 상기 루트파일시스템의 패키지 관리파일을 기반으로 패키지 소프트웨어 목록을 추출하는 단계, 상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 패키지 소프트웨어 목록과 중복된 이름을 제거하여 비 패키지 소프트웨어 목록을 추출하는 단계 및 상기 패키지 소프트웨어 목록 및 상기 비 패키지 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성하는 단계를 포함할 수 있다.
이 때, 상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성하는 단계는, 상기 레이어 유형이 알파 레이어인 경우, 상기 컨테이너 이미지의 루트파일시스템 정보를 획득하는 단계, 상기 알파 레이어의 파일시스템 메타데이터를 생성하는 단계, 상기 알파 레이어에 맵핑된 히스토리 정보를 기반으로 제1 소프트웨어 목록을 추출하는 단계, 상기 알파 레이어의 패키지 관리파일을 기반으로 제2 소프트웨어 목록을 추출하는 단계, 상기 알파 레이어의 파일시스템 메타데이터와 상기 컨테이너 이미지의 루트파일시스템 정보를 비교하여, 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하는 단계, 상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 제1 소프트웨어 목록 및 상기 제2 소프트웨어 목록과 중복된 이름을 제거하여 제3 소프트웨어 목록을 추출하는 단계 및 상기 제1 소프트웨어 목록, 상기 제2 소프트웨어 목록 및 상기 제3 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성하는 단계를 포함할 수 있다.
이 때, 상기 취약점 점검결과를 생성하는 단계는, 상기 소프트웨어 목록을 정제하는 단계, 정제된 상기 소프트웨어 목록에 기반하여 취약점 데이터베이스로부터 취약점 목록을 추출하는단계, 정제된 상기 소프트웨어 목록 및 상기 취약점 목록을 기반으로 상기 취약점 점검결과를 생성하는 단계를 포함할 수 있다.
이 때, 상기 정제하는 단계는, 상기 소프트웨어 목록 중 타 레이어로부터 추출된 소프트웨어 또는 사용자의 선택에 의해 제외된 소프트웨어를 제거할 수 있다.
또한, 상기한 목적을 달성하기 위하여 본 발명의 일실시예에 따른 컨테이너 이미지에 대한 보안 가시성 제공 장치는, 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은, 컨테이너 이미지를 구성하는 레이어를 분석하여 소프트웨어 목록을 생성하고, 상기 소프트웨어 목록을 기반으로 취약점 점검결과를 생성하고, 상기 소프트웨어 목록 및 상기 취약점 점검결과를 기반으로 컨테이너 이미지 콘텐츠 보고서를 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 컨테이너 이미지의 레이어 유형을 분석하고, 상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 시스템이 실행되기 위한 기본 디렉토리 및 유틸리티를 포함하는 루트파일시스템 레이어를 식별하고, 상기 루트파일시스템 레이어를 기준으로 수정내용을 포함하는 알파 레이어를 식별할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 레이어 유형이 루트파일시스템 레이어인 경우, 상기 컨테이너 이미지의 루트파일시스템과 동일한 루트파일시스템의 바닐라(Vanilla) 버전의 메타데이터를 획득하고, 상기 루트파일시스템의 메타데이터와 바닐라 버전의 메타데이터를 비교하여 상기 루트파일시스템의 바닐라상태 여부를 판단하고, 상기 바닐라상태 여부의 판단결과에 기반하여 소프트웨어 목록을 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 루트파일시스템의 메타데이터를 상기 바닐라 버전의 메타데이터와 비교하여 변경사항이 없으면 바닐라(Vanilla)상태로 판단하고, 변경사항이 있으면 논바닐라(Non-Vanilla)상태로 판단할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 루트파일시스템이 바닐라상태로 판단된 경우, 상기 루트파일시스템의 패키지 관리파일을 기반으로 소프트웨어 목록을 생성하고, 상기 루트파일시스템이 논바닐라상태로 판단된 경우, 상기 루트파일시스템의 메타데이터에 기반하여 상기 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하고, 상기 루트파일시스템의 패키지 관리파일을 기반으로 패키지 소프트웨어 목록을 추출하고, 상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 패키지 소프트웨어 목록과 중복된 이름을 제거하여 비 패키지 소프트웨어 목록을 추출하고, 상기 패키지 소프트웨어 목록 및 상기 비 패키지 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 레이어 유형이 알파 레이어인 경우, 상기 컨테이너 이미지의 루트파일시스템 정보를 획득하고, 상기 알파 레이어의 파일시스템 메타데이터를 생성하고, 상기 알파 레이어에 맵핑된 히스토리 정보를 기반으로 제1 소프트웨어 목록을 추출하고, 상기 알파 레이어의 패키지 관리파일을 기반으로 제2 소프트웨어 목록을 추출하고, 상기 알파 레이어의 파일시스템 메타데이터와 상기 컨테이너 이미지의 루트파일시스템 정보를 비교하여, 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하고, 상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 제1 소프트웨어 목록 및 상기 제2 소프트웨어 목록과 중복된 이름을 제거하여 제3 소프트웨어 목록을 추출하고, 상기 제1 소프트웨어 목록, 상기 제2 소프트웨어 목록 및 상기 제3 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 소프트웨어 목록을 정제하고, 정제된 상기 소프트웨어 목록에 기반하여 취약점 데이터베이스로부터 취약점 목록을 추출하고, 정제된 상기 소프트웨어 목록 및 상기 취약점 목록을 기반으로 상기 취약점 점검결과를 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 소프트웨어 목록 중 타 레이어로부터 추출된 소프트웨어 또는 사용자의 선택에 의해 제외된 소프트웨어를 제거하여 상기 소프트웨어 목록을 정제할 수 있다.
본 발명에 따르면, 불투명한 컨테이너 이미지에 대한 보안 가시성을 확보할 수 있다.
또한, 본 발명에 따르면, 컨테이너 이미지를 직접적 또는 간적접으로 구성하는 소프트웨어들을 최대한 식별할 수 있다.
또한, 본 발명에 따르면, 컨테이너 이미지를 구성하는 레이어 유형별로 구분되는 소프트웨어 식별 방법을 제공할 수 있다.
또한, 본 발명에 따르면, 컨테이너 이미지를 구성하는 소프트웨어들의 취약점을 점검할 수 있다.
본 실시 예들의 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치의 블록흐름도이다.
도 2는 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치의 블록도이다.
도 3은 빌드된 어플리케이션 컨테이너 이미지의 예시도이다.
도 4는 종래 컨테이너 이미지 취약점 점검과정을 나타내는 흐름도이다.
도 5는 본 발명의 일실시에 따른 컨테이너 이미지 취약점 점검과정을 나타내는 흐름도이다.
도 6은 본 발명의 일실시예에 따른 이미지 구성요소 분석기의 모듈 블록도이다.
도 7은 본 발명의 일실시예에 따른 이미지 취약점 분석기의 모듈 블록도이다.
도 8은 본 발명의 일실시예에 따른 취약점 정보 관리기의 모듈 블록도이다.
도 9는 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치의 동작 흐름도이다.
도 10은 본 발명의 일실시예에 따라 취약점 점검결과를 생성하는 흐름도이다.
도 11은 본 발명의 일실시예에 따라 루트파일시스템(RootFS) 레이어를 분석하는 흐름도이다.
도 12는 본 발명의 일실시예에 따라 알파 레이어를 분석하는 흐름도이다.
도 13은 본 발명의 일실시예에 따른 컨테이너 이미지에 대한 보안 가시성 제공 방법의 흐름도이다.
도 14는 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 도면이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
컨테이너 이미지는 쉽게 공유하고 가져다 쓸 수 있지만, 실제 내용물이 무엇인지 알기 어려워, 컨테이너 오케스트레이터 또는 개발자에 의해 쉽게 전파될 수 있다.
상술한 문제의 실 사례로 2018년에 도커 및 쿠버네티스 인스턴스를 실행하는 클라우드 서버에서 크립토마이닝 공격이 보고되었는데, 클립토마이너를 숨긴 컨테이너 이미지가 도커 허브를 통해 공유되었고, 해당 악의적인 이미지는 5백만 회 이상 다운로드된 것으로 분석되었다.
NIST(National Institute of Standards and Technology)는 이와 같은 보안 위협의 대책으로 컨테이너에 특화된 취약점 관리도구나 프로세스를 활용하여, 운영환경에서 실행하기 전에 컨테이너 이미지를 점검할 것을 권고하고 있다.
Anchore, Aqua Security, Snyk, Veracode 등의 보안업체와 구글, 레드햇 등의 컨테이너 플랫폼 제공업체는 보안을 위한 컨테이너 이미지 점검 및 가시성의 필요성을 강고하고 있으며, 이를 해결하기 위한 도구나 서비스들을 제공하고 있다.
NIST는 효과적인 도구가 가져야할 요건들을 제시하고 있는데, 컨테이너 이미지의 모든 계층(이미지의 기본계층, 어플리케이션 프레임워크, 커스텀 소프트웨어)에서의 취약점에 대한 가시성을 가져야한다는 내용이 포함되어 있다.
하지만, 현재의 컨테이너 이미지 점검 도구나 서비스들은 상술한 내용의 일부분만을 만족시키고 있다.
대부분의 컨테이너 이미지 점검 도구나 서비스들은 알려진 취약점을 점검하는데, 취약점 점검을 위한 소프트웨어의 식별을 패키지 관리자에 의존하고 있다.
패키지 관리자는 운영체제나 프로그래밍 언어의 라이브러리 설치 등에 많이 이용되는 도구로써, 복잡해진 소프트웨어의 종속성을 관리할 수 있다.
상기 방식은 패키지 관리 목록 하에 있는 소프트웨어들만이 점검의 대상으로 식별되므로, 알려진 취약점 점검 결과 또한 해당 소프트웨어들로 한정된다는 문제점이 남아있다.
컨테이너로 실행되는 웹 어플리케이션들은 다양한 프레임워크를 활용하는데, 이러한 프레임워크들은 컨테이너 이미지에 주로 바이너리의 다운로드 및 압축해제와 같은 방식으로 설치된다.
이와 같은 다양한 설치 방법을 고려하지 않으면, 점검 대상 소프트웨어 미식별에 따른 취약점 점검결과의 누락으로 이어질 수 있다.
컨테이너 이미지의 특성을 파악하여, 구성요소를 상세히 분석하고 콘텐츠를 식별할 수 있다면, 취약점 점검결과의 정확도를 높여 컨테이너 이미지와 이를 운영하는 환경의 보안성을 향상시킬 수 있을 것이다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
이하에서 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치는 컨테이너 이미지에 대한 보안 가시성 제공 장치와 동일한 장치일 수 있고, 컨테이너 이미지에 대한 보안 가시성 제공 방법과 동일한 방식으로 동작할 수 있다.
도 1은 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치의 블록흐름도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치(100)는 컨테이너 이미지(111)를 입력 값으로 하여, 내부 모듈들의 상호작용을 통해, 최종적으로 컨테이너 이미지 콘텐츠에 대한 보고서(113)를 제공할 수 있다.
또한, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치(100)는 이미지 구성요소 분석 및 취약점 정보 관리를 위하여, 외부의 컨테이너 루트파일시스템(RootFS) 관리 또는 저장소(121)의 데이터와 취약점 정보 자원(123)들을 수집 및 분석할 수 있다.
이 때, 외부의 컨테이너 루트파일시스템 관리 또는 저장소(121)는 우분투(Ubuntu), 알파인(Alpine) 및 데비안(Debian) 등의 컨테이너 루트파일시스템 데이터를 수집 및 저장하며, 바닐라 루트파일시스템 정보를 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치(100)로 제공할 수 있다.
이 때, 취약점 정보 자원(123)은 시큐리티 피드(Security Feeds), NVD(National Vulnerability Database)으로부터 알려진 취약점 정보에 관한 것으로써, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치(100)에 수집될 수 있다.
이 때, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치(100)에 따르면, 컨테이너 이미지의 콘텐츠 식별력과 취약점 정보의 관리방법을 향상시킬 수 있으며, 이를 통해 컨테이너를 운영하는 환경의 보안성을 강화할 수 있다.
이 때, 컨테이너 이미지 콘텐츠 보고서(113)는 SBOM(software Bill Of Materials)에 대한 것으로써, 취약점 점검결과를 포함할 수 있다.
도 2는 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치(100)의 블록도이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치(100)는 이미지 구성요소 분석기(210), 이미지 취약점 분석기(220), 취약점 정보 관리기(230)를 포함할 수 있다.
이 때, 이미지 구성요소 분석기(210)는, 컨테이너 이미지 내의 소프트웨어 목록을 식별하고, 식별된 상기 소프트웨어 목록을 이미지 취약점 분석기(220)로 전달하고, 이미지 취약점 분석기(220)로부터 취약점 점검결과를 전달받아 컨테이너 이미지 콘텐츠 보고서를 생성할 수 있다.
이 때, 이미지 취약점 분석기(220)는, 이미지 구성요소 분석기(210)로부터 소프트웨어 목록을 전달받고, 취약점 정보 관리기(230)에 소프트웨어의 취약점 검색을 요청하고, 취약점 정보 관리기(230)로부터 소프트웨어와 매칭된 취약점 정보를 전달받아, 취약점 점검결과를 생성하고, 이를 이미지 구성요소 분석기(210)에 전달할 수 있다.
이 때, 취약점 정보 관리기(230)는, 외부 데이터베이스로부터 소프트웨어의 취약점 정보 등을 수집 및 관리하고, 이미지 취약점 분석기(220)로부터 전달받은 소프트웨어 목록에 대응하는 취약점을 매칭하고, 매칭된 취약점 정보를 이미지 취약점 분석기(220)로 전달할 수 있다.
보다 상세하게는, 도 6 내지 도 8을 참조하여 후술하도록 한다.
도 3은 빌드된 어플리케이션 컨테이너 이미지의 예시도이다.
도 3을 참조하여 설명하면, 컨테이너 이미지는 본 발명의 입력 값으로써, 컨테이너를 실행하는 데 필요한 파일 및 환경설정 값들의 묶음일 수 있다.
이 때, 컨테이너 이미지는 컨테이너 엔진을 통한 빌드 과정을 통하여 생성될 수 있다.
가장 널리 알려진 컨테이너 엔진인 도커(Docker)를 예로 들면, 컨테이너 이미지 빌드 과정은 컨테이너 이미지 빌드를 위하여 먼저 Dockerfile이라는 빌드 파일을 준비한다.
이 때, Dockerfile은 이미지를 구성 및 실행할 때 필요한 내용들을 포함하고 있으며, 도 3의 좌측 구성이 Dockerfile이고, 우측은 상기 Dockerfile을 통하여 빌드된 결과물인 컨테이너 이미지이다.
이 때, Dockerfile은 스프링(java) 기반의 웹 어플리케이션을 컨테이너로 배포하는데 필요한 컨테이너 이미지를 만들기 위해 개발자들이 흔히 이용하는 방법이다.
이 때, Dockerfile은 빌드 시 컨테이너 이미지들의 공개 저장소인 도커 허브로부터 tomcat:latest 이미지를 가져와서 /usr/local/tomcat/webapps/에 spring-web.war 파일을 복사하는 명령을 포함하고 있다.
이 때, 빌드 결과물인 컨테이너 이미지를 살펴보면, Dockerfile에 기술하지 않은 소프트웨어들이 컨테이너 이미지 내에 포함된 것을 확인할 수 있다.
이 때, Dockerfile에 기술하지 않은 소프트웨어들이 포함된 이유는 빌드 시 가져온 tomcat:latest 이미지의 빌드 종속성과 관련이 있으며, 도커 허브에 공개되어 있는 해당 이미지의 Dockerfile을 분석하면 일부 해답을 찾을 수 있다.
공개된 tomcat:latest의 Dockerfile을 분석하면, tomcat:latest 이미지는 openjdk:8-jdk 이미지를 기반으로, openjdk:8-jdk 이미지는 debian:buster-slim 이미지를 기반으로 빌드되었기 때문에 관련 소프트웨어들이 컨테이너 이미지의 구성요소가 되었음을 유추할 수 있다.
이처럼 컨테이너 이미지 또는 컨테이너는 상세한 분석 없이는 어떤 콘텐츠들이 존재하는지 확인하기 어렵기 때문에, 보안성 확보의 어려움이 증가된다.
도 4는 종래 컨테이너 이미지 취약점 점검과정을 나타내는 흐름도이고, 도 5는 본 발명의 일실시에 따른 컨테이너 이미지 취약점 점검과정을 나타내는 흐름도이다.
도 4를 참조하면, 종래 컨테이너 이미지 취약점 점검과정은 컨테이너 이미지 에 설치 또는 구성된 소프트웨어들을 식별하는 단계와 해당 소프트웨어들에 알려진 취약점이 있는지 확인하는 단계를 포함한다.
이를 위하여, 종래의 취약점 점검도구들은 컨테이너 이미지에 설치 또는 구성된 소프트웨어를 식별하기 위한 기능과 알려진 취약점을 수집 및 관리하는 기능을 포함한다.
상술한 식별 기능과 취약점을 수집 및 관리하는 기능은 본 발명에도 공통적으로 적용될 수 있다.
이 때, 본 발명의 일실시예에 따른 컨테이너 이미지 취약점 점검과정은 컨테이너 이미지에 설치 또는 구성된 소프트웨어를 식별하는 단계에서 새로운 분석방법을 제안하여, 취약점 점검 결과의 누락문제와 불투명한 컨테이너 이미지의 사용에 따른 문제점을 해결하고자 한다.
도 5를 참조하여 살펴보면, 본 발명의 일실시예에 따른 컨테이너 이미지 취약점 점검과정은 컨테이너 이미지를 구성하는 레이어의 유형을 식별하고, 레이어 유형에 맞는 소프트웨어 식별 방법을 적용함으로써, 패키지 소프트웨어뿐만 아니라 비 패키지 소프트웨어를 취약점 점검의 대상으로 추출할 수 있다.
도 4에 도시된 종래 컨테이너 이미지 취약점 점검과정은 debian 운영체제와 그에 속한 요소들에 한하여 취약점 점검을 수행하나, 도 5에 도시된 본 발명의 일실시예에 따른 컨테이너 이미지 취약점 점검과정은 운영체제뿐만 아니라 패키지 관리자로 설치되지 않은 openjdk, tomcat과 같은 프레임워크 및 spring-web과 같은 어플리케이션 요소를 식별할 수 있으며, 식별된 비 패키지 소프트웨어까지 취약점 점검대상 범위를 확장할 수 있어, 점검결과의 정확도를 향상시킬 수 있다.
도 2를 참조하면 상술한 바와 같이, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치는 이미지 구성요소 분석기, 이미지 취약점 분석기 및 취약점 정보 관리기를 포함할 수 있다.
이 때, 이미지 구성요소 분석기는 컨테이너 이미지내의 구성 콘텐츠 식별과 보고서를 생성하는 역할을 수행할 수 있고, 이미지 취약점 분석기는 취약점 검색을 요청하고 점검결과를 생성하는 역할을 수행할 수 있고, 취약점 정보 관리기는 취약점 정보를 관리하고, 취약점 검색 요청에 대한 결과를 응답하는 역할을 수행할 수 있다.
도 6은 본 발명의 일실시예에 따른 이미지 구성요소 분석기(210)의 모듈 블록도이다.
도 6을 참조하여 보다 상세하게 살펴보면, 이미지 구성요소 분석기(210)의 기능은 이미지 및 구성 레이어 유형 탐지(601), 빌드 히스토리 분석(603), 레이어 파일시스템 분석(605), Vanilla RootFS 수집관리(607), 소프트웨어 목록 생성(609) 및 콘텐츠 보고서 생성(611)을 포함할 수 있다.
컨테이너와 관련된 표준을 다루는 OCI(Open Container Initiative)의 프로젝트에서 제공하는 표준 이미지 사양을 살펴보면, 컨테이너 이미지는 1개 이상의 레이어와 이를 설명하는 메타데이터를 포함한다.
이 때, 상기 메타데이터는 이미지 및 구성 레이어에 대한 정보를 포함하고, 압축파일로 존재하는 각각의 레이어들은 파일시스템으로써, 디렉토리와 파일들을 포함한다.
이 때, 이미지 구성요소 분석기(210)는 취약점 점검결과를 포함하는 컨테이너 이미지 콘텐츠 보고서 생성을 위하여 레이어들의 파일시스템을 상세히 분석(605)하고, 소프트웨어 목록을 생성(609)할 수 있다.
이 때, 이미지 구성요소 분석기(210)는 컨테이너 이미지에 대한 정보 획득과 레이어 파일시스템의 분석방법을 결정하기 위하여, 컨테이너 이미지 및 구성 레이어 유형을 탐지할 수 있다(601).
빌드 히스토리 분석(603) 및 Vanilla RootFS 수집관리(607)는 레이어 파일시스템으로부터 소프트웨어 목록을 추출할 때 참조하는 데이터를 획득하기 위한 것일 수 있다.
이 때, 빌드 히스토리는 표준 컨테이너 이미지의 메타데이터 내에 포함된 정보로써, 이미지 빌드시 이용한 Dockerfile과 대응될 수 있다.
또한, 빌드 히스토리는 레이어 생성의 근거, 컨테이너 이미지 내의 소프트웨어를 설치 또는 구성하기 위해 사용한 방법이나 설정한 환경변수 등을 일부 확인할 수 있어, 컨테이너 이미지 내에 설치 또는 구성된 소프트웨어 정보를 추출할 때 활용될 수 있다.
도커 허브를 통해 다운로드할 수 있는 우분투(Ubuntu) 데비안(Debian), 센트OS(CentOS) 및 알파인(Alpine)과 같은 공식 리눅스 배포판 컨테이너 이미지는 1개의 레이어로 구성되며, 루트파일시스템에 해당하는 상기 레이어는 루트파일시스템(RootFS) 레이어라 불린다.
상기 컨테이너 이미지는 일반적으로 리눅스 배포판별로 공식사이트에서 제공하는 루트파일시스템을 기반으로 만들어지는데, 루트파일시스템은 표준 리눅스 파일시스템의 기본 디렉토리 구조 및 리눅스 배포판별로 유사한 콘텐츠를 포함한다.
따라서, 상기 루트파일시스템(RootFS) 레이어와 동일한 리눅스 배포한의 루트파일시스템을 참조하면, 기본적인 구성 정보들을 예측할 수 있으며, 이러한 특징을 분석에 활용하기 위해, 리눅스 배포판별 공식사이트에서 제공하는 최초의 루트파일시스템으로부터 커스터마이징되지 않은 상태를 바닐라(Vanilla)로 정의할 수 있다.
Vanilla RootFS 수집관리(607)는 리눅스 배포판별 공식사이트에서 제공하는 루트파일시스템을 지속적으로 수집하고, 해당 파일시스템의 메타데이터를 변경사항이 없는 Vanilla한 상태로서 저장 및 유지할 수 있다.
이 때, 저장된 메타데이터는 분석대상인 컨테이너 이미지의 루트파일시스템(RootFS) 레이어와 비교하여, 바닐라(Vanilla)상태 또는 논바닐라(Non-Vanilla)상태인지 판단하고, 소프트웨어 목록 추출시 참조할 수 있다.
도 7은 본 발명의 일실시예에 따른 이미지 취약점 분석기의 모듈 블록도이다.
도 7을 참조하여 상세하게 살펴보면, 이미지 취약점 분석기(220)는 이미지 구성요소 분석기와 취약점 정보 관리기 사이에서 상호작용에 필요한 데이터들을 생성 및 수정할 수 있으며, 세부 기능은 소프트웨어 목록 정제(701), 알려진 취약점 검색 요청(703) 및 취약점 점검결과 생성(705)을 포함할 수 있다.
이 때, 이미지 구성요소 분석기가 추출한 소프트웨어 목록은 취약점 점검의 대상을 증가시켜 점검속도에 영향을 미칠 수 있다.
따라서, 이미지 취약점 분석기(220)는 취약점 정보 검색 요청 전에 전달할 소프트웨어 목록을 정제하는 기능(701)을 제공할 수 있다.
예를 들면, 소프트웨어 목록 정제 기능(701)은 이미 점검한 레이어로부터 추출된 소프트웨어 목록은 제외하거나, 취약점 분석 수준을 조정할 수 있는 선택 옵션을 제공하여 소프트웨어 목록을 정제할 수 있다.
이 때, 취약점 검색 요청 기능(703)은 취약점 정보 관리기를 호출하는 것으로써, 응답받고자하는 정보에 따라 아래 두가지 요청방법 중 하나를 선택하여 필요한 데이터를 전달할 수 있다.
상기 요청방법은 소프트웨어와 일치하는 취약점 정보를 응답받기 위하여 소프트웨어 이름을 전달하는 방법과 취약점 정보와 일치하는 소프트웨어 정보를 응답받기 위하여 취약점 고유 식별자(CVE ID)를 전달하는 방법을 포함할 수 있다.
이 때, 검색해야 할 정보가 많은 경우, 취약점 정보 관리기가 받아들일 수 있는 형태로 데이터를 변경하여 전달할 수 있다.
이 때, 취약점 점검 결과 생성 기능(705)은 검색 요청에 따른 응답결과를 이미지 구성요소 분석기에 전달하기 위한 포맷으로 변환할 수 있다.
도 8은 본 발명의 일실시예에 따른 취약점 정보 관리기의 모듈 블록도이다.
도 8을 참조하여 상세하게 살펴보면, 취약점 정보 관리기(230)의 세부 기능은 알려진 취약점 정보 수집(801), 검색(803), 분석 및 저장(805), 업데이트(807)를 포함할 수 있다.
이 때, 취약점 정보 관리기(230)의 가장 기본적인 기능은 다양한 출처로부터 알려진 취약점 정보를 수집(801)하고, 지속적으로 업데이트(807)하는 것이다.
이 때, 알려진 취약점 정보의 출처는 벤더에서 관리하는 경우(RHSA-Red Hat Security Advisory, USN-Ubuntu Security Note 등)를 제외하고는 공통적으로 CVE(Common Vulnerability Enumeration)에 공개된 취약점 고유 식별자(CVE ID)에 기반할 수 있다.
공개된 취약점의 검색(803)은 CVE와 NVD 사이트를 통해 가능하며, NVD는 보다 상세한 정보를 제공한다.
이 때, 취약점 정보 관리기(230)는 리눅스 배포판 별로 관리하는 취약점 데이터 피드(Feed)와 취약점 데이터의 상위집합인 NVD의 데이터 피드 두 종류의 출처로부터 알려진 취약점 정보를 수집(801)할 수 있다.
상기 취약점 데이터 피드는 종래의 시스템들과 같이 설치된 패키지의 취약점을 확인하기 위해 수집하는 것이고, 상기 NVD의 데이터 피드는 본 발명의 실시에 따라, 패키지 관리자 외의 방법으로 설치된 다양한 소프트웨어들의 취약점을 확인하기 위해 수집하는 것이다.
이 때, 취약점 정보 관리기(230)는 검색의 정확도 및 속도를 향상시키기 위하여, 수집한 NVD 데이터를 상세히 분석하고 이를 저장(805)할 수 있다.
이 때, 취약점 정보 관리기(230)는 NVD 데이터에서 취약한 소프트웨어에 대한 정보를 담고 있는 필드들을 식별하고, 필드의 값에 따라 서로 다른 분석 및 저장방식을 적용할 수 있다.
이 때, 취약점에 영향을 받는 소프트웨어 정보를 알기 위해 기본적으로 참고할 수 있는 필드는 affects 또는 configurations 인데, 해당 필드에 값이 있는 경우와 없는 경우로 구분될 수 있다.
상기 필드에 값이 있는 경우에는 NIST의 소프트웨어 및 패키지에 대한 명령 체계인 CPE(Common Platform Enumeration)로 등록된 소프트웨어가 있는 것이고, 반대의 경우에는 없는 것이다.
따라서, 등록된 이름 외에 소프트웨어 이름의 다양성을 확인할 수 있는 필드도 식별 및 분석해야 한다.
예를 들어, NVD 데이터에는 description 필드가 존재하는데, 필드의 값은 취약점의 등록자가 작성한 취약점에 대한 설명일 수 있다.
상기 description 필드는 취약한 소프트웨어의 이름과 버저, 종속 소프트웨어 이름 등의 다양한 내용이 포함되어 있을 수 있다.
이 때, 필드의 값은 영어 문장일 수 있으므로, 구문분석을 통하여 소프트웨어 이름으로 추정되는 단어들을 추출할 수 있고, 이를 키워드로 저장하는 방식을 적용할 수도 있다.
이 때, 정보 검색 기능(803)은 이미지 취약점 분석기의 검색 요청을 분석하여, 최적의 질의 문(query)을 생성하고 결과를 응답할 수 있다.
이 때, 정보 검색 기능(803)은 우선 검색 요청 데이터로부터 검색할 키워드들을 추출하는데, 소프트웨어 목록이 전달받은 데이터라면, 소프트웨어 이름, 버전, 종속관계인 소프트웨어 이름 등을 키워드로 추출할 수 있다.
이 때, 정보 검색 기능(803)은 질의 문을 생성하기 위하여 검색할 피드와 키워드의 일치 정도, 단 건과 복수 건의 검색 및 응답 등을 고려할 수 있다.
예를 들어, 1개의 소프트웨어 이름에 대한 검색 요청 건이라면, 일치하는 다수의 CVE ID들을 응답하기 위한 질의 문을 생성할 수 있고, 1개의 CVE ID에 대한 요청에는 일치하는 다수의 소프트웨어 이름을 응답하기 위한 질의 문을 생성할 수 있다.
도 9는 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치의 동작 흐름도이다.
도 9를 참조하면, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치는, 컨테이너 이미지 파일이 전달되면, 이미지 구성 요소 분석기를 통하여 컨테이너 이미지의 콘텐츠 식별을 위한 분석을 단계적으로 수행할 수 있고, 이미지 취약점 분석기 및 취약점 정보 관리기를 호출하여 취약점 점검결과 생성 및 컨테이너 이미지 콘텐츠 보고서를 생성할 수 있다.
보다 상세하게 살펴보면, 본 발명의 일실시예에 다른 컨테이너 이미지 콘텐츠 분석 장치는 먼저 컨테이너 이미지의 압축을 해제하여, 구성 레이어와 메타데이터를 분석할 수 있다(S901).
또한, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치는 분석 정보를 바탕으로 컨테이너 이미지의 유형을 탐지하는데, 앞서 설명한 OCI의 표준 이미지 사양에 근거하여, 표준 메타데이터 파일이 존재하면 표준 이미지 유형으로, 반대의 경우 비표준 이미지 유형으로 결정할 수 있다(S903).
이 때, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치는 이미지 유형이 비표준인 경우, 바로 다음 단계인 레이어 유형 분석을 수행할 수 있다(S907).
이 때, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치는 이미지 유형이 표준인 경우, 메타데이터로부터 빌드 히스토리 정보를 추출하고, 이를 분석하여 레이어들의 주체와 객체를 파악할 수 있다(S905).
이 때, 단계(S905)는 빌드 히스토리 정보 내 ENV 명령 행이 존재하는 경우, 정의된 이름을 참조하는 문자열들은 모두 할당 문자로 치환하고, 레이어 생성의 주체인 명령 행을 맵핑하여 저장할 수 있다.
상기 레이어 유형은 레이어 생성정보 및 계층구조, 레이어 파일시스템의 분석을 통해 판단될 수 있으며, 루트파일시스템(RootFS) 레이어와 알파(a)레이어로 결정될 수 있다(S907).
이 때, 루트파일시스템 레이어는 시스템이 돌아가는데 필요한 기본 디렉토리 및 유틸리티들을 포함하는 루트파일시스템을 의미하며, 알파 레이어는 루트파일시스템 레이어를 기준으로 추가, 변경, 삭제 등의 행위를 통해 발생한 변화들을 포함하는 파일시스템을 의미한다.
이 때, 루트파일시스템 레이어 여부를 판단하는 방법은 탐지된 이미지 유형에 따라 달리하며, 표준 이미지 유형의 루트파일시스템 레이어 판별 기준은 레이어가 1개이거나 여러 개의 레이어 중 최하위 레이어(부모가 없는)인 것이고, 비표준 이미지의 경우 레이어 파일시스템 내 최소 디렉토리 세트, 기본 유틸리티 등이 있는지를 비교하여 판단할 수 있다.
또한, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치는 탐지된 레이어 유형이 루트파일시스템 레이어인 경우에는 루트파일시스템 레이어 분석 방법을 적용(S909)하고, 알파 레이어인 경우에는 알파 레이어 분석방법을 적용(S911)하여 레이어 정보 추출 및 소프트웨어 목록을 생성(S913)하고 이를 통해 취약점 점검결과를 생성할 수 있다(S915).
이 때, 단계(S915)는 이미지 구성 요소 분석기를 통하여 레이어 정보 및 소프트웨어 목록을 상술한 이미지 취약점 분석기로 전달하고 취약점 점검결과에 대한 응답을 수신하는 방식으로 실시될 수도 있다.
또한, 단계(S915)를 수행하는 상세한 방법은 도 10을 통하여 후술하도록 한다.
또한, 레이어 유형별 분석방법(S907)은 각각의 레이어와 파일시스템의 특징을 활용하며, 상세한 방법은 도 11 및 도 12를 통하여 후술하도록 한다.
또한, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치는 자체 분석한 레이어 정보와 취약점 점검결과를 취합하여 레이어 콘텐츠 정보를 생성하고 저장할 수 있다(S917).
이 때, 본 발명의 일실시예에 따른 컨테이너 이미지 콘텐츠 분석 장치는 상술한 S907 단계부터 S917 단계까지의 실행과 연동을 반복할 수 있고, 모든 레이어에 대한 레이어 콘텐츠 정보 생성 및 저장이 완료되면, 이를 기반으로 컨테이너 이미지 콘텐츠 보고서를 생성하고 종료할 수 있다(S919).
도 10은 본 발명의 일실시예에 따라 취약점 점검결과를 생성하는 흐름도이다.
도 10을 참조하면, 취약점 점검결과를 생성하는 단계(S915)는, 취약점을 점검할 대상 소프트웨어의 최종집합을 만들기 위하여, 소프트웨어 목록을 정제할 수 있다(S1001).
또한, 취약점 점검결과를 생성하는 단계(S915)는, 정제된 소프트웨어 목록에 대응하는 취약점을 검색할 수 있다(S1003).
또한, 취약점 점검결과를 생성하는 단계(S915)는, 상기 소프트웨어 목록과 대응하는 취약점 목록을 생성할 수 있다(S1005).
또한, 취약점 점검결과를 생성하는 단계(S915)는, 상기 소프트웨어 목록과 대응하는 취약점 목록을 기반으로 취약점 점검결과를 생성할 수 있다(S1007).
또한, 취약점 점검결과를 생성하는 단계(S915)는, 상술한 이미지 구성요소 분석기, 이미지 취약점 분석기 및 취약점 정보 관리기를 통하여 실시될 수도 있다.
이 때, 이미지 취약점 분석기의 취약점 점검은 이미지 구성요소 분석기의 호출로부터 시작되며, 취약점을 점검할 대상 소프트웨어의 최종집합을 만들기 위하여, 전달 받은 소프트웨어 목록을 정제할 수 있다.
이 때, 이미지 취약점 분석기는 정제된 소프트웨어 목록을 취약점 정보 관리기로 전달하고 응답을 기다릴 수 있다.
이 때, 취약점 정보 관리기의 취약점 정보 검색은 이미지 취약점 분석기의 호출로부터 시작되며, 관리하고 있는 알려진 취약점 정보에서 전달받은 정제된 소프트웨어 목록을 검색할 수 있다.
이 때, 취약점 정보 관리기는 검색결과로 취약점 목록이 나오면 해당 매칭 취약점 목록을 이미지 취약점 분석기에 응답하고 종료할 수 있다.
이 때, 이미지 취약점 분석기는 응답받은 취약점 목록을 통하여 취약점 점검결과를 생성할 수 있고, 이를 이미지 구성요소 분석기에 응답으로 전달할 수 있다.
도 11은 본 발명의 일실시예에 따라 루트파일시스템(RootFS) 레이어를 분석하는 흐름도이다.
도 11은 도 9의 루트파일시스템 레이어 분석 단계(S909)에 관한 것으로써, 루트파일시스템 레이어 분석 단계(S909)는 레이어 유형 분석을 통해 루트파일시스템 레이어로 탐지되면, 컨테이너 이미지의 루트파일시스템이 가지는 특징들을 반영하여 파일시스템을 분석할 수 있다.
이 때, 루트파일시스템이 가지는 특징은 1) 루트파일시스템에는 리눅스 배포판을 설명하는 파일이 존재한다는 점과 2) 루트파일시스템에는 패키지 관리파일이 존재한다는 점, 3) 커스터마이징하지 않은 루트파일시스템은 리눅스 배포판 사이트에서 제공하는 동일 버전의 파일시스템과 형태가 같다는 점(예를 들면, amazonlinux, cflinuxfs와 같은 컨테이너 이미지는 루트파일시스템(RootFS) 레이어만을 포함하고, 루트파일시스템은 각각 CentOS, Ubuntu를 기반으로 하나, IaaS 또는 PaaS에서 사용하기 위한 소프트웨어들을 추가로 구성하는 경우, CentOS, Ubuntu의 루트파일시스템과 그 형태가 달라짐), 4) 루트파일시스템은 사용할 수 있는 빌드 히스토리 정보가 없다는 점이 있다.
따라서, 루트파일시스템 레이어 분석 단계(S909)는 상술한 특징을 기반으로 레이어의 압축파일을 풀어 파일시스템을 분석할 수 있다.
먼저 루트파일시스템 레이어 분석 단계(S909)는 파일시스템으로부터 배포판 명, 버전(패치 버전까지) 정보를 탐지할 수 있다(S1101).
또한, 루트파일시스템 레이어 분석 단계(S909)는 수집 관리 중인 Vanilla RootFS로부터, 탐지한 배포판과 동일 또는 유사한 버전의 Vanilla RootFS 메타데이터를 획득할 수 있다(S1103).
또한, 루트파일시스템 레이어 분석 단계(S909)는 레이어의 파일시스템의 메타데이터를 생성할 수 있다(S1105).
이 때, 메타데이터에는 디렉토리, 파일명, 파일유형, 파일사이즈, 수정일 정보 등을 포함할 수 있다.
또한, 루트파일시스템 레이어 분석 단계(S909)는 생성한 메타데이터와 가져온 Vanilla RootFS의 메타데이터를 비교하여, 루트파일시스템의 상태를 결정할 수 있다(S1107).
이 때, 단계(S1107)는 파일시스템에 변경사항이 없다면 바닐라(Vanilla) 반대의 경우 논바닐라(Non-Vanilla)로 탐지할 수 있으며, 앞서 예로 들은 amazonlinux, cflinuxfs의 RootFS 레이어의 루트파일시스템은 논바닐라(Non-Vanilla)로 탐지될 수 있다.
이 때, 루트파일시스템 레이어 분석 단계(S909)는 상기 레이어의 파일시스템이 바닐라 상태로 결정되면, 패키지 관리파일을 통하여 소프트웨어 이름과 버전을 추출하고, 점검할 소프트웨어 목록을 생성(S1109)할 수 있으며, 논바닐라 상태로 결정되면 바닐라 상태와의 비교를 통하여 차이 값을 식별할 수 있다.
상기 차이 값은 두가지 측면으로 나타날 수 있는데, 첫 번째는 패키지 관리파일이 다른 경우이고, 두 번째는 새로운 디렉토리 또는 파일이 존재하는 경우이다.
이 때, 패키지 관리파일이 다른 경우는 두 번째 경우도 성립하지만 패키지 관리파일은 동일한데, 새로운 디렉토리 또는 파일이 존재하는 경우는 패키지 매니저에 의해 관리되지 않은 소프트웨어가 설치되었음을 시사한다.
이 때, 루트파일시스템 레이어 분석 단계(S909)는 상술한 두가지 측면을 통하여 논바닐라 상태로 결정되면, 바닐라 상태에는 존재하지 않는 경로의 디렉토리 또는 파일로부터 소프트웨어 이름과 정보를 추출할 수 있다(S1111).
그리고, 루트파일시스템 레이어 분석 단계(S909)는 패키지 관리파일로부터 소프트웨어 이름을 추출(S1113)하고, 전 단계에서 추출한 소프트웨어 이름들과의 비교를 통해 중복이름을 제거(S1115)하여 비 패키지 목록으로 추출할 수 있다(S1119).
또한, 루트파일시스템 레이어 분석 단계(S909)는 패키지 관리파일에서 패키지 목록을 추출(S1117)할 수 있고, 비 패키지 목록과 패키지 목록을 병합하여 점검할 소프트웨어 목록을 생성할 수 있다(S1121).
도 12는 본 발명의 일실시예에 따라 알파 레이어를 분석하는 흐름도이다.
도 12는 도 9의 알파 레이어 분석 단계(S911)에 관한 것으로써, 알파 레이어 분석 단계(S911)은 레이어 유형 분석을 통해 알파 레이어로 탐지되면, 컨테이너 이미지의 알파 파일시스템이 가지는 특징들을 반영하여 파일시스템을 분석할 수 있다.
이 때, 알파 파일시스템이 가지는 특징은 1) 표준 이미지의 알파 파일시스템 생성과 내용물은 빌드 히스토리의 RUN 명령행과 대응된다는 점, 2) 패키지 매니저로 패키지를 설치하였다면, 패키지 관리파일이 파일시스템에 존재한다는 점, 3) 패키지 매니저로 설치하지 않았다면, 패키지 관리파일이 파일시스템에 존재하지 않는다는 점, 4) 알파 레이어의 파일시스템에는 변경 값들만 존재하지만, 루트파일시스템 레이어와 부모 레이어의 리눅스 배포판 및 파일시스템의 기본 정보를 상속받으므로, 루트파일시스템 레이어와 부모 레이어의 정보도 참조해야한다는 점이 있다.
따라서, 알파 레이어 분석 단계(S911)는 상술한 특징을 기반으로 레이어의 압축파일을 풀어 파일시스템을 분석할 수 있다.
먼저 알파 레이어 분석 단계(S911)는 기존에 분석한 루트파일시스템 레이어 콘텐츠 정보로부터 리눅스 배포판 정보를 획득(S1201)하고, 레이어의 파일시스템 메타데이터를 생성할 수 있다(S1203).
또한, 알파 레이어 분석 단계(S911)는 해당 레이어에 맵핑된 히스토리가 있는지 찾고, 이를 분석하여 소프트웨어 설치 및 구성과 관련되는 히스토리 정보의 존재여부를 확인할 수 있다(S1205).
이 때, 히스토리 정보가 존재하는 경우에 알파 레이어 분석 단계(S911)는 히스토리로부터 소프트웨어 이름과 버전을 추출(S1207)하고, 비 패키지 및 패키지 목록을 추출할 수 있다(S1209).
이 때, 히스토리로부터 소프트웨어 이름과 버전을 추출하는 방법은 패키지 매니저로 설치하지 않은 소프트웨어를 찾아내는 유용한 방법일 수 있으며, 정확성이 높다.
이 때, 도커 허브의 공식 이미지들을 참고하면, 바이너리 형태의 소프트웨어들을 구성하는 것은 거의 표준화된 방식을 사용한다는 것을 확인할 수 있다.
이 때, 레이어 히스토리 정보 확인에 대한 간략한 순서는 구성할 소프트웨어의 저장소로부터 바이너리 압축파일을 다운로드하는 단계, 바이너리를 검증하는 단계, 압축을 해제하는 단계로 구분할 수 있다.
이 때, 다운로드하는 단계는, 다운로드를 위한 URL 문자열이 존재하는데, 주로 소프트웨어 이름과 버전이 포함되므로, 이와 같은 패턴을 소프트웨어 정보를 추출하는데 이용할 수 있다.
보다 상세하게는 레이어와 매칭되는 히스토리 명령 지시자가 RUN인지 확인하고, 뒤따르는 명령이 wget이나 curl 도구와 함께 URL을 호출하는 경우인지 확인 후, URL 문자열에서 '소프트웨어이름-버전.압축파일확장자' 패턴을 찾을 수 있다.
또한, 알파 레이어 분석 단계(S911)는 레이어 히스토리 정보를 확인하였다면, 패키지 관리파일의 존재여부를 확인할 수 있다(S1211).
이 때, 패키지 관리파일의 존재는 패키지 매니저를 이용하여 특정 소프트웨어를 설치하였다는 것을 의미할 수 있다.
또한, 특정 스크립트 파일만을 실행하여 생성된 레이어의 경우, 스크립트 내에서 해당 설치방법이 사용되었음을 파악할 수 있다.
이 때, 알파 레이어 분석 단계(S911)는 패키지 관리파일이 존재한다면 패키지 관리파일로부터 소프트웨어 이름을 추출(S1213)하고, 패키지 목록을 추출할 수 있다(S1215).
또한, 알파 레이어 분석 단계(S911)는 파일시스템 메타데이터의 새로운 디렉토리 및 파일로부터 소프트웨어 이름과 정보를 추출할 수 있다(S1217).
또한, 알파 레이어 분석 단계(S911)는 상기 단계(S1217)에서 추출한 정보를 레이어 히스토리 정보와 패키지 관리파일로부터 추출한 소프트웨어 이름과 비교하여 중복 이름을 제거(S1219)하고 비 패키지 목록으로 추출할 수 있다(S1221).
또한, 알파 레이어 분석 단계(S911)는 각각의 단계를 통해 추출한 목록들의 결과를 병합하여, 점검할 소프트웨어 목록을 생성할 수 있다(S1223).
상술한 도 11 및 도 12의 파일시스템 메타데이터의 새로운 디렉토리 및 파일로부터 소프트웨어 이름 및 정보를 추출하는 단계(S1111, S1217)는 비 패키지 소프트웨어를 찾아내기 위한 방법의 하나로써, 소프트웨어를 구성 또는 설치하였을 때의 파일시스템 변화 특성들을 활용하는 것이다.
예를 들면, 소프트웨어를 구성 또는 설치하였을때, 파일시스템은 소프트웨어 명과 동일한 이름의 디렉토리가 생성되면, 디렉토리 또는 파일명에 숫자패턴은 버전정보를 의미할 수 있다.
이 외에도, 파일시스템에 나타나는 다양한 변화들을 분석하여, 소프트웨어 정보의 최대 데이터 셋을 생성할 수 있다.
또한, 중복 이름 제거 단계(S1115, S1219)는 정확한 소프트웨어 정보로 식별된 이름은 제외시켜, 방대한 데이터 셋으로부터 유의미한 소프트웨어 이름을 추려낼 수 있다.
이와 같은 분석 방법을 통해 생성된 각각의 소프트웨어 목록은 패키지와 비 패키지를 모두 포함하며, 취약점 점검 요청 대상으로 이미지 취약점 분석기에 전달된 후, 점검 결과와 함께 레이어의 콘텐츠 정보로 보고될 수 있다.
도 13은 본 발명의 일실시예에 따른 컨테이너 이미지에 대한 보안 가시성 제공 방법의 흐름도이다.
도 13을 참조하면, 본 발명의 일실시예에 따른 컨테이너 이미지에 대한 보안 가시성 제공 방법은 컴퓨터 장치를 통하여 컨테이너 이미지에 대한 보안 가시성을 제공하는 방법에 있어서, 먼저 컨테이너 이미지를 구성하는 레이어를 분석하여 소프트웨어 목록을 생성한다(S1301).
이 때, 단계(S1301)는, 상기 컨테이너 이미지의 레이어 유형을 분석하는 단계 및 상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성하는 단계를 포함할 수 있다.
이 때, 단계(S1301)는, 시스템이 실행되기 위한 기본 디렉토리 및 유틸리티를 포함하는 루트파일시스템 레이어를 식별하는 단계 및 상기 루트파일시스템 레이어를 기준으로 수정내용을 포함하는 알파 레이어를 식별하는 단계를 포함할 수 있다.
이 때, 상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성하는 단계는, 상기 레이어 유형이 루트파일시스템 레이어인 경우, 상기 컨테이너 이미지의 루트파일시스템과 동일한 루트파일시스템의 바닐라(Vanilla) 버전의 메타데이터를 획득하는 단계, 상기 루트파일시스템의 메타데이터와 바닐라 버전의 메타데이터를 비교하여, 상기 루트파일시스템의 바닐라상태 여부를 판단하는 단계 및 상기 바닐라상태 여부의 판단결과에 기반하여 소프트웨어 목록을 생성하는 단계를 포함할 수 있다.
이 때, 상기 바닐라상태 여부를 판단하는 단계는, 상기 루트파일시스템의 메타데이터를 상기 바닐라 버전의 메타데이터와 비교하여 변경사항이 없으면 바닐라(Vanilla)상태로 판단하고, 변경사항이 있으면 논바닐라(Non-Vanilla)상태로 판단할 수 있다.
이 때, 상기 바닐라상태 여부의 판단결과에 기반하여 소프트웨어 목록을 생성하는 단계는, 상기 루트파일시스템이 논바닐라상태로 판단된 경우, 상기 루트파일시스템의 패키지 관리파일을 기반으로 소프트웨어 목록을 생성하고, 상기 루트파일시스템이 논바닐라상태로 판단된 경우, 상기 루트파일시스템의 메타데이터에 기반하여 상기 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하는 단계, 상기 루트파일시스템의 패키지 관리파일을 기반으로 패키지 소프트웨어 목록을 추출하는 단계, 상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 패키지 소프트웨어 목록과 중복된 이름을 제거하여 비 패키지 소프트웨어 목록을 추출하는 단계 및 상기 패키지 소프트웨어 목록 및 상기 비 패키지 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성하는 단계를 포함할 수 있다.
이 때, 상기 수정 디렉토리 및 수정 파일은, 상기 컨테이너 이미지의 바닐라 버전의 메타데이터와 비교했을 때, 새롭게 추가된 디렉토리 및 파일이거나 수정된 디렉토리 및 파일일 수 있다.
이 때, 상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성하는 단계는, 상기 레이어 유형이 알파 레이어인 경우, 상기 컨테이너 이미지의 루트파일시스템 정보를 획득하는 단계, 상기 알파 레이어의 파일시스템 메타데이터를 생성하는 단계, 상기 알파 레이어에 맵핑된 히스토리 정보를 기반으로 제1 소프트웨어 목록을 추출하는 단계, 상기 알파 레이어의 패키지 관리파일을 기반으로 제2 소프트웨어 목록을 추출하는 단계, 상기 알파 레이어의 파일시스템 메타데이터와 상기 컨테이너 이미지의 루트파일시스템 정보를 비교하여, 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하는 단계, 상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 제1 소프트웨어 목록 및 상기 제2 소프트웨어 목록과 중복된 이름을 제거하여 제3 소프트웨어 목록을 추출하는 단계 및 상기 제1 소프트웨어 목록, 상기 제2 소프트웨어 목록 및 상기 제3 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성하는 단계를 포함할 수 있다.
또한, 본 발명의 일실시예에 따른 컨테이너 이미지에 대한 보안 가시성 제공 방법은 상기 소프트웨어 목록을 기반으로 취약점 점검결과를 생성한다(S1303).
또한, 본 발명의 일실시예에 따른 컨테이너 이미지에 대한 보안 가시성 제공 방법은 상기 소프트웨어 목록 및 상기 취약점 점검결과를 기반으로 컨테이너 이미지 콘텐츠 보고서를 생성한다(S1305).
이 때, 단계(S11303)는, 상기 소프트웨어 목록을 정제하는 단계, 정제된 상기 소프트웨어 목록에 기반하여 취약점 데이터베이스로부터 취약점 목록을 추출하는단계, 정제된 상기 소프트웨어 목록 및 상기 취약점 목록을 기반으로 상기 취약점 점검결과를 생성하는 단계를 포함할 수 있다.
이 때, 상기 정제하는 단계는, 상기 소프트웨어 목록 중 타 레이어로부터 추출된 소프트웨어 또는 사용자의 선택에 의해 제외된 소프트웨어를 제거할 수 있다.
도 14는 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 도면이다.
도 14를 참조하면, 본 발명의 실시예는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템에서 구현될 수 있다. 도 14에 도시된 바와 같이, 컴퓨터 시스템(1400)은 버스(1420)를 통하여 서로 통신하는 하나 이상의 프로세서(1410), 메모리(1430), 사용자 인터페이스 입력 장치(1440), 사용자 인터페이스 출력 장치(1450) 및 스토리지(1460)를 포함할 수 있다. 또한, 컴퓨터 시스템(1400)은 네트워크(1480)에 연결되는 네트워크 인터페이스(1470)를 더 포함할 수 있다. 프로세서(1410)는 중앙 처리 장치 또는 메모리(1430)나 스토리지(1460)에 저장된 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1430) 및 스토리지(1460)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들어, 메모리는 ROM(1431)이나 RAM(1432)을 포함할 수 있다.
이 때, 본 발명의 일실시예에 따른 컨테이너 이미지에 대한 보안 가시성 제공 장치는 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은, 컨테이너 이미지를 구성하는 레이어를 분석하여 소프트웨어 목록을 생성하고, 상기 소프트웨어 목록을 기반으로 취약점 점검결과를 생성하고, 상기 소프트웨어 목록 및 상기 취약점 점검결과를 기반으로 컨테이너 이미지 콘텐츠 보고서를 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 컨테이너 이미지의 레이어 유형을 분석하고, 상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 시스템이 실행되기 위한 기본 디렉토리 및 유틸리티를 포함하는 루트파일시스템 레이어를 식별하고, 상기 루트파일시스템 레이어를 기준으로 수정내용을 포함하는 알파 레이어를 식별할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 레이어 유형이 루트파일시스템 레이어인 경우, 상기 컨테이너 이미지의 루트파일시스템과 동일한 루트파일시스템의 바닐라(Vanilla) 버전의 메타데이터를 획득하고, 상기 루트파일시스템의 메타데이터와 바닐라 버전의 메타데이터를 비교하여 상기 루트파일시스템의 바닐라상태 여부를 판단하고, 상기 바닐라상태 여부의 판단결과에 기반하여 소프트웨어 목록을 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 루트파일시스템의 메타데이터를 상기 바닐라 버전의 메타데이터와 비교하여 변경사항이 없으면 바닐라(Vanilla)상태로 판단하고, 변경사항이 있으면 논바닐라(Non-Vanilla)상태로 판단할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 루트파일시스템이 바닐라상태로 판단된 경우, 상기 루트파일시스템의 패키지 관리파일을 기반으로 소프트웨어 목록을 생성하고, 상기 루트파일시스템이 논바닐라상태로 판단된 경우, 상기 루트파일시스템의 메타데이터에 기반하여 상기 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하고, 상기 루트파일시스템의 패키지 관리파일을 기반으로 패키지 소프트웨어 목록을 추출하고, 상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 패키지 소프트웨어 목록과 중복된 이름을 제거하여 비 패키지 소프트웨어 목록을 추출하고, 상기 패키지 소프트웨어 목록 및 상기 비 패키지 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성할 수 있다.
이 때, 상기 수정 디렉토리 및 수정 파일은, 상기 컨테이너 이미지의 바닐라 버전의 메타데이터와 비교했을 때, 새롭게 추가된 디렉토리 및 파일이거나 수정된 디렉토리 및 파일일 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 레이어 유형이 알파 레이어인 경우, 상기 컨테이너 이미지의 루트파일시스템 정보를 획득하고, 상기 알파 레이어의 파일시스템 메타데이터를 생성하고, 상기 알파 레이어에 맵핑된 히스토리 정보를 기반으로 제1 소프트웨어 목록을 추출하고, 상기 알파 레이어의 패키지 관리파일을 기반으로 제2 소프트웨어 목록을 추출하고, 상기 알파 레이어의 파일시스템 메타데이터와 상기 컨테이너 이미지의 루트파일시스템 정보를 비교하여, 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하고, 상기 수정 디렉토리 및 파일로부터 추출된 소프트웨어 이름에서 상기 제1 소프트웨어 목록 및 상기 제2 소프트웨어 목록과 중복된 이름을 제거하여 제3 소프트웨어 목록을 추출하고, 상기 제1 소프트웨어 목록, 상기 제2 소프트웨어 목록 및 상기 제3 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 소프트웨어 목록을 정제하고, 정제된 상기 소프트웨어 목록에 기반하여 취약점 데이터베이스로부터 취약점 목록을 추출하고, 정제된 상기 소프트웨어 목록 및 상기 취약점 목록을 기반으로 상기 취약점 점검결과를 생성할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은, 상기 소프트웨어 목록 중 타 레이어로부터 추출된 소프트웨어 또는 사용자의 선택에 의해 제외된 소프트웨어를 제거하여 상기 소프트웨어 목록을 정제할 수 있다.
따라서, 본 발명의 실시예는 컴퓨터로 구현된 방법이나 컴퓨터에서 실행 가능한 명령어들이 기록된 비일시적인 컴퓨터에서 읽을 수 있는 매체로 구현될 수 있다. 컴퓨터에서 읽을 수 있는 명령어들이 프로세서에 의해서 수행될 때, 컴퓨터에서 읽을 수 있는 명령어들은 본 발명의 적어도 한 가지 측면에 따른 방법을 수행할 수 있다.
이상에서와 같이 본 발명에 따른 컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치는 상기한 바와 같이 설명한 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
100 : 컨테이너 이미지 콘텐츠 분석 장치
111 : 컨테이너 이미지 압축파일
113 : 컨테이너 이미지 콘텐츠 보고서
210 : 이미지 구성요소 분석기
220 : 이미지 취약점 분석기
230 : 취약점 정보 관리기

Claims (18)

  1. 컴퓨터 장치를 통하여 컨테이너 이미지에 대한 보안 가시성을 제공하는 방법에 있어서,
    컨테이너 이미지를 구성하는 레이어를 분석하여 소프트웨어 목록을 생성하는 단계;
    상기 소프트웨어 목록을 기반으로 취약점 점검결과를 생성하는 단계; 및
    상기 소프트웨어 목록 및 상기 취약점 점검결과를 기반으로 컨테이너 이미지 콘텐츠 보고서를 생성하는 단계; 를 포함하는 컨테이너 이미지에 대한 보안 가시성 제공 방법.
  2. 청구항 1에 있어서,
    상기 소프트웨어 목록을 생성하는 단계는,
    상기 컨테이너 이미지의 레이어 유형을 분석하는 단계; 및
    상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성하는 단계; 를 포함하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 방법.
  3. 청구항 2에 있어서,
    상기 레이어 유형을 분석하는 단계는,
    시스템이 실행되기 위한 기본 디렉토리 및 유틸리티를 포함하는 루트파일시스템 레이어를 식별하는 단계; 및
    상기 루트파일시스템 레이어를 기준으로 수정내용을 포함하는 알파 레이어를 식별하는 단계; 를 포함하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 방법.
  4. 청구항 3에 있어서,
    상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성하는 단계는,
    상기 레이어 유형이 루트파일시스템 레이어인 경우,
    상기 컨테이너 이미지의 루트파일시스템과 동일한 루트파일시스템의 바닐라(Vanilla) 버전의 메타데이터를 획득하는 단계;
    상기 루트파일시스템의 메타데이터와 바닐라 버전의 메타데이터를 비교하여, 상기 루트파일시스템의 바닐라상태 여부를 판단하는 단계; 및
    상기 바닐라상태 여부의 판단결과에 기반하여 소프트웨어 목록을 생성하는 단계; 를 포함하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 방법.
  5. 청구항 4에 있어서,
    상기 바닐라상태 여부를 판단하는 단계는,
    상기 루트파일시스템의 메타데이터를 상기 바닐라 버전의 메타데이터와 비교하여 변경사항이 없으면 바닐라(Vanilla)상태로 판단하고, 변경사항이 있으면 논바닐라(Non-Vanilla)상태로 판단하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 방법.
  6. 청구항 5에 있어서,
    상기 바닐라상태 여부의 판단결과에 기반하여 소프트웨어 목록을 생성하는 단계는,
    상기 루트파일시스템이 바닐라상태로 판단된 경우,
    상기 루트파일시스템의 패키지 관리파일을 기반으로 소프트웨어 목록을 생성하고,
    상기 루트파일시스템이 논바닐라상태로 판단된 경우,
    상기 루트파일시스템의 메타데이터에 기반하여 상기 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하는 단계;
    상기 루트파일시스템의 패키지 관리파일을 기반으로 패키지 소프트웨어 목록을 추출하는 단계; 상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 패키지 소프트웨어 목록과 중복된 이름을 제거하여 비 패키지 소프트웨어 목록을 추출하는 단계; 및
    상기 패키지 소프트웨어 목록 및 상기 비 패키지 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성하는 단계; 를 포함하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 방법.
  7. 청구항 3에 있어서,
    상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성하는 단계는,
    상기 레이어 유형이 알파 레이어인 경우,
    상기 컨테이너 이미지의 루트파일시스템 정보를 획득하는 단계;
    상기 알파 레이어의 파일시스템 메타데이터를 생성하는 단계;
    상기 알파 레이어에 맵핑된 히스토리 정보를 기반으로 제1 소프트웨어 목록을 추출하는 단계;
    상기 알파 레이어의 패키지 관리파일을 기반으로 제2 소프트웨어 목록을 추출하는 단계;
    상기 알파 레이어의 파일시스템 메타데이터와 상기 컨테이너 이미지의 루트파일시스템 정보를 비교하여, 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하는 단계;
    상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 제1 소프트웨어 목록 및 상기 제2 소프트웨어 목록과 중복된 이름을 제거하여 제3 소프트웨어 목록을 추출하는 단계; 및
    상기 제1 소프트웨어 목록, 상기 제2 소프트웨어 목록 및 상기 제3 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성하는 단계; 를 포함하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 방법.
  8. 청구항 1에 있어서,
    상기 취약점 점검결과를 생성하는 단계는,
    상기 소프트웨어 목록을 정제하는 단계;
    정제된 상기 소프트웨어 목록에 기반하여 취약점 데이터베이스로부터 취약점 목록을 추출하는단계;
    정제된 상기 소프트웨어 목록 및 상기 취약점 목록을 기반으로 상기 취약점 점검결과를 생성하는 단계; 를 포함하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 방법.
  9. 청구항 8에 있어서,
    상기 정제하는 단계는,
    상기 소프트웨어 목록 중 타 레이어로부터 추출된 소프트웨어 또는 사용자의 선택에 의해 제외된 소프트웨어를 제거하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 방법.
  10. 하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리;
    를 포함하고,
    상기 적어도 하나 이상의 프로그램은,
    컨테이너 이미지를 구성하는 레이어를 분석하여 소프트웨어 목록을 생성하고, 상기 소프트웨어 목록을 기반으로 취약점 점검결과를 생성하고, 상기 소프트웨어 목록 및 상기 취약점 점검결과를 기반으로 컨테이너 이미지 콘텐츠 보고서를 생성하는 컨테이너 이미지에 대한 보안 가시성 제공 장치.
  11. 청구항 10에 있어서,
    상기 적어도 하나 이상의 프로그램은,
    상기 컨테이너 이미지의 레이어 유형을 분석하고, 상기 레이어를 유형별로 분석하여 소프트웨어 목록을 생성하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 장치.
  12. 청구항 11에 있어서,
    상기 적어도 하나 이상의 프로그램은,
    시스템이 실행되기 위한 기본 디렉토리 및 유틸리티를 포함하는 루트파일시스템 레이어를 식별하고, 상기 루트파일시스템 레이어를 기준으로 수정내용을 포함하는 알파 레이어를 식별하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 장치.
  13. 청구항 12에 있어서,
    상기 적어도 하나 이상의 프로그램은,
    상기 레이어 유형이 루트파일시스템 레이어인 경우,
    상기 컨테이너 이미지의 루트파일시스템과 동일한 루트파일시스템의 바닐라(Vanilla) 버전의 메타데이터를 획득하고, 상기 루트파일시스템의 메타데이터와 바닐라 버전의 메타데이터를 비교하여 상기 루트파일시스템의 바닐라상태 여부를 판단하고, 상기 바닐라상태 여부의 판단결과에 기반하여 소프트웨어 목록을 생성하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 장치.
  14. 청구항 13에 있어서,
    상기 적어도 하나 이상의 프로그램은,
    상기 루트파일시스템의 메타데이터를 상기 바닐라 버전의 메타데이터와 비교하여 변경사항이 없으면 바닐라(Vanilla)상태로 판단하고, 변경사항이 있으면 논바닐라(Non-Vanilla)상태로 판단하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 장치.
  15. 청구항 14에 있어서,
    상기 적어도 하나 이상의 프로그램은,
    상기 루트파일시스템이 바닐라상태로 판단된 경우,
    상기 루트파일시스템의 패키지 관리파일을 기반으로 소프트웨어 목록을 생성하고,
    상기 루트파일시스템이 논바닐라상태로 판단된 경우,
    상기 루트파일시스템의 메타데이터에 기반하여 상기 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하고, 상기 루트파일시스템의 패키지 관리파일을 기반으로 패키지 소프트웨어 목록을 추출하고, 상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 패키지 소프트웨어 목록과 중복된 이름을 제거하여 비 패키지 소프트웨어 목록을 추출하고, 상기 패키지 소프트웨어 목록 및 상기 비 패키지 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 장치.
  16. 청구항 12에 있어서,
    상기 적어도 하나 이상의 프로그램은,
    상기 레이어 유형이 알파 레이어인 경우,
    상기 컨테이너 이미지의 루트파일시스템 정보를 획득하고, 상기 알파 레이어의 파일시스템 메타데이터를 생성하고, 상기 알파 레이어에 맵핑된 히스토리 정보를 기반으로 제1 소프트웨어 목록을 추출하고, 상기 알파 레이어의 패키지 관리파일을 기반으로 제2 소프트웨어 목록을 추출하고, 상기 알파 레이어의 파일시스템 메타데이터와 상기 컨테이너 이미지의 루트파일시스템 정보를 비교하여, 변경사항에 상응하는 수정 디렉토리 및 수정 파일로부터 소프트웨어 이름 및 정보를 추출하고, 상기 수정 디렉토리 및 수정 파일로부터 추출된 소프트웨어 이름에서 상기 제1 소프트웨어 목록 및 상기 제2 소프트웨어 목록과 중복된 이름을 제거하여 제3 소프트웨어 목록을 추출하고, 상기 제1 소프트웨어 목록, 상기 제2 소프트웨어 목록 및 상기 제3 소프트웨어 목록을 병합하여 소프트웨어 목록을 생성하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 장치.
  17. 청구항 10에 있어서,
    상기 적어도 하나 이상의 프로그램은,
    상기 소프트웨어 목록을 정제하고, 정제된 상기 소프트웨어 목록에 기반하여 취약점 데이터베이스로부터 취약점 목록을 추출하고, 정제된 상기 소프트웨어 목록 및 상기 취약점 목록을 기반으로 상기 취약점 점검결과를 생성하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 장치.
  18. 청구항 17에 있어서,
    상기 적어도 하나 이상의 프로그램은,
    상기 소프트웨어 목록 중 타 레이어로부터 추출된 소프트웨어 또는 사용자의 선택에 의해 제외된 소프트웨어를 제거하여 상기 소프트웨어 목록을 정제하는 것을 특징으로 하는 컨테이너 이미지에 대한 보안 가시성 제공 장치.
KR1020200069082A 2020-06-08 2020-06-08 컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치 KR102340021B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200069082A KR102340021B1 (ko) 2020-06-08 2020-06-08 컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치
US16/991,362 US11669622B2 (en) 2020-06-08 2020-08-12 Method and apparatus for providing visibility of security into container images

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200069082A KR102340021B1 (ko) 2020-06-08 2020-06-08 컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20210152624A true KR20210152624A (ko) 2021-12-16
KR102340021B1 KR102340021B1 (ko) 2021-12-21

Family

ID=78817609

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200069082A KR102340021B1 (ko) 2020-06-08 2020-06-08 컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치

Country Status (2)

Country Link
US (1) US11669622B2 (ko)
KR (1) KR102340021B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102518980B1 (ko) * 2022-11-17 2023-04-06 에스지에이솔루션즈 주식회사 컨테이너 이미지에 대한 악성 코드를 분석 및 처리하는 방법, 장치 및 컴퓨터-판독 가능 기록 매체

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102380434B1 (ko) * 2020-10-06 2022-03-31 숭실대학교 산학협력단 도커 파일 분석을 수행하는 도커 이미지 취약점 검사 장치 및 방법
US11972252B2 (en) * 2021-08-02 2024-04-30 Micro Focus Llc Docker installed software/hardware discovery
US20230125342A1 (en) * 2021-10-27 2023-04-27 Micro Focus Llc Cross-platform application containerized execution
US20230289448A1 (en) * 2022-03-10 2023-09-14 Denso Corporation Securing software package composition information
CN116150768B (zh) * 2023-03-01 2024-01-30 上海弘积信息科技有限公司 Docker容器运行状态下漏洞检测方法、系统及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150081638A (ko) * 2014-01-06 2015-07-15 삼성전자주식회사 전자장치 및 전자장치에서의 웹 플랫폼 동작방법
KR20170022028A (ko) 2015-08-19 2017-03-02 삼성에스디에스 주식회사 컨테이너 이미지 보안 검사 방법 및 그 장치
US20200082095A1 (en) * 2018-09-11 2020-03-12 Ca, Inc. Independent development environment configured to annotate source code of container images with notifications of security vulnerabilities

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10223534B2 (en) * 2015-10-15 2019-03-05 Twistlock, Ltd. Static detection of vulnerabilities in base images of software containers
US10778446B2 (en) * 2015-10-15 2020-09-15 Twistlock, Ltd. Detection of vulnerable root certificates in software containers
US20200097662A1 (en) * 2018-09-25 2020-03-26 Ca, Inc. Combined threat score for container images
US10528337B1 (en) * 2018-10-24 2020-01-07 International Business Machines Corporation Container image layer reordering
US11062022B1 (en) * 2019-05-01 2021-07-13 Intuit Inc. Container packaging device
US11042366B2 (en) * 2019-05-14 2021-06-22 International Business Machines Corporation Managing software programs

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150081638A (ko) * 2014-01-06 2015-07-15 삼성전자주식회사 전자장치 및 전자장치에서의 웹 플랫폼 동작방법
KR20170022028A (ko) 2015-08-19 2017-03-02 삼성에스디에스 주식회사 컨테이너 이미지 보안 검사 방법 및 그 장치
US20200082095A1 (en) * 2018-09-11 2020-03-12 Ca, Inc. Independent development environment configured to annotate source code of container images with notifications of security vulnerabilities

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102518980B1 (ko) * 2022-11-17 2023-04-06 에스지에이솔루션즈 주식회사 컨테이너 이미지에 대한 악성 코드를 분석 및 처리하는 방법, 장치 및 컴퓨터-판독 가능 기록 매체

Also Published As

Publication number Publication date
US11669622B2 (en) 2023-06-06
KR102340021B1 (ko) 2021-12-21
US20210382997A1 (en) 2021-12-09

Similar Documents

Publication Publication Date Title
KR102340021B1 (ko) 컨테이너 이미지에 대한 보안 가시성 제공 방법 및 장치
US7865874B2 (en) System and method for information collection for an adaptive software dependency model
US9971633B1 (en) Operation efficiency management with respect to application compile-time
US9582268B2 (en) Automatic communications graphing for a source application
KR101944570B1 (ko) 변형 컨텍스트-인식 데이터 소스 관리
US7752158B2 (en) System and method for generating an adaptive software knowledge model incorporating new information with model dependency analysis
US9875090B2 (en) Program analysis based on program descriptors
EP2015173A1 (en) Method of maintaining software updates by means of dependency expressions
US7870539B2 (en) System and method for cross-channel dependency resolution in a dependency model
US10169005B2 (en) Consolidating and reusing portal information
US7761395B2 (en) System and method for scalable processing of collected knowledge by creating knowledge generation nodes
US20220198003A1 (en) Detecting added functionality in open source package
Openja et al. Studying the practices of deploying machine learning projects on docker
KR20190102456A (ko) 어플리케이션 클러스터링 방법 및 그 장치
CN117693734A (zh) 前端项目处理方法、装置、设备、管理系统及存储介质
KR102380434B1 (ko) 도커 파일 분석을 수행하는 도커 이미지 취약점 검사 장치 및 방법
Li Mining androzoo: A retrospect
CN114417347A (zh) 应用程序的漏洞检测方法、装置、设备、存储介质和程序
US20130218928A1 (en) Information processing device
Rossini et al. Smart contracts vulnerability classification through deep learning
Zynda et al. RollingGantryCrane: Automation for unpacking containers into HPC environments
CN104199774A (zh) 程序安全测试方法和装置
Feichtner et al. Mind the Gap: Finding what Updates have (really) changed in Android Applications
CN115022096B (zh) 下载软件方法和装置
CN116932027A (zh) 安装程序的生成方法、装置、设备、存储介质及程序产品

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant