Seccomp

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Seccomp는 2005년 안드레아 아르칸젤리에 의해 처음 개발된 리눅스 커널 기능으로, 안전하게 신뢰할 수 없는 코드를 실행하기 위해 설계되었다. 2005년 3월 리눅스 커널 2.6.12에 통합되었으며, 샌드박싱 기술의 핵심 요소로 활용된다. 안드로이드, systemd, QEMU, 도커, 크롬, 파이어폭스 등 다양한 소프트웨어에서 seccomp를 사용하여 보안을 강화하고 있으며, 컨테이너 기술 및 웹 브라우저의 샌드박싱에 널리 사용된다.

Seccomp - [IT 관련 정보]에 관한 문서
📚 더 읽어볼만한 페이지
  • 리눅스 커널 특징 - 커널 기반 가상 머신
    커널 기반 가상 머신(KVM)은 리눅스 커널의 가상화 확장 기능으로, CPU와 메모리 가상화를 지원하며 QEMU와 함께 완전한 가상화 솔루션을 구성하고 다양한 관리 도구를 제공한다.
  • 리눅스 커널 특징 - AppArmor
    AppArmor는 리눅스 보안 모듈로, 프로그램의 정상적인 동작을 정의하는 프로필을 통해 비정상적인 행위를 차단하며 SELinux의 대안으로 제시되었으나 보안 취약점, 성능, 설정, 호환성 등에 대한 논란도 있다.
  • 컴퓨터 보안 - 얼굴 인식 시스템
    얼굴 인식 시스템은 디지털 이미지나 비디오에서 사람 얼굴을 감지하고 식별하는 기술로, 다양한 알고리즘 발전을 거쳐 보안, 신원 확인 등에 활용되지만, 편향성, 개인 정보 침해, 기술적 한계와 같은 윤리적 문제도 야기한다.
  • 컴퓨터 보안 - 워터마크
    워터마크는 종이 제조 시 두께 차이를 이용해 만들어지는 표식으로, 위조 방지를 위해 지폐나 여권 등에 사용되며 댄디 롤 등의 제작 기법을 통해 만들어지고 컴퓨터 프린터 인쇄 기술로도 활용된다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
    브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다.
  • 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
    광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.

2. 역사

seccomp는 2005년 1월 안드레아 아르칸젤리(Andrea Arcangeli)가 개발했다. 이는 공개 그리드 컴퓨팅에서 사용하기 위한 것으로, 신뢰할 수 없는 코드를 안전하게 실행하는 수단으로 의도되었다. seccomp는 2005년 3월 8일에 릴리스된 커널 버전 2.6.12의 리눅스 커널 메인라인에 병합되었다.

2.1. 개발 배경

seccomp는 2005년 1월 안드레아 아르칸젤리(Andrea Arcangeli)가 처음 고안했으며, 그리드 컴퓨팅을 공개적으로 사용하기 위한 목적으로, 원래는 안전하게 신뢰할 수 없는 계산 중심 프로그램을 실행하는 수단으로 의도되었다. 2005년 3월 8일에 출시된 커널 버전 2.6.12에 리눅스 커널 메인라인에 병합되었다.

2.2. 리눅스 커널 통합

seccomp는 2005년 1월 안드레아 아르칸젤리(Andrea Arcangeli)가 처음 고안했으며, 그리드 컴퓨팅을 공개적으로 사용하기 위한 목적으로, 원래는 안전하게 신뢰할 수 없는 계산 중심 프로그램을 실행하기 위한 수단으로 의도되었다. 2005년 3월 8일에 출시된 커널 버전 2.6.12에 리눅스 커널 메인라인에 병합되었다.

2.3. Seccomp-bpf 확장

seccomp-bpf는 seccomp의 확장 기능이다.

이는 다음과 같은 소프트웨어 등에서 활용된다.

* OpenSSH
* vsftpd영어
* 구글 크롬/크로미움 (크롬OS 및 리눅스)

seccomp-bpf는 구식이 된 systrace (리눅스에서는 더 이상 지원되지 않음)와 동등한 기능을 구현하지만, 유연성과 성능이 향상되었다.

3. Seccomp-bpf를 활용하는 소프트웨어

Seccomp-bpf는 systrace와 동등한 기능을 구현하면서도 유연성과 성능이 향상되어 다양한 소프트웨어에서 활용되고 있다.

👆
좌우로 밀어서 보기
소프트웨어 종류소프트웨어 이름 및 버전 정보설명
컨테이너 관련안드로이드 8.0 이상, systemd, 퀵 에뮬레이터, 도커, Firejail, 스냅, LXD, 플랫팩, Bubblewrap, minijail샌드박싱 옵션, `--sandbox` 매개변수, `--security-opt` 매개변수, 리눅스 네임스페이스 활용, "인터페이스" 사용, 프로세스 격리 등 다양한 방식으로 seccomp-bpf를 활용한다.
웹 브라우저크롬 20 이상, 파이어폭스파이어폭스 OS어도비 플래시 플레이어 및 렌더러 샌드박스에 활용된다.
기타Arcangeli의 CPUShare, vsftpd 3.0.0 이상, OpenSSH 6.0 이상, Mbox, Tor 0.2.5.1-alpha, 드롭박스의 Lepton, Kafel, 서브그래프 OS, SydBox, File, 자투라, 트래커ptrace와 함께 사용, JPEG 압축, 바이트코드 변환, 런타임 환경 제한, 다양한 샌드박스 모드 구현, 미디어 파일 파싱 취약점 방지 등 다양한 목적으로 활용된다.


리누스 토르발스는 2009년 2월에 seccomp의 실제 사용 여부에 대해 의문을 제기하기도 했지만, 현재는 위에 언급된 것처럼 다양한 소프트웨어에서 널리 활용되고 있다.

3.1. 컨테이너 기술

* 안드로이드는 안드로이드 8.0 오레오부터 zygote에서 seccomp-bpf 필터를 사용한다.
* systemd의 샌드박싱 옵션은 seccomp를 기반으로 한다.
* 퀵 에뮬레이터는 KVM과 함께 최신 가상화의 핵심 구성 요소이며, `--sandbox` 매개변수에서 seccomp를 사용한다.
* 도커는 애플리케이션을 격리된 컨테이너 내에서 실행할 수 있게 해주는 소프트웨어이다. 도커는 `--security-opt` 매개변수를 사용하여 seccomp 프로파일을 컨테이너와 연결할 수 있다.
* Firejail은 리눅스 네임스페이스, Seccomp 및 기타 커널 수준 보안 기능을 활용하여 리눅스 및 와인 애플리케이션을 샌드박스하는 오픈 소스 리눅스 샌드박스 프로그램이다.
* 스냅은 snapd가 seccomp, AppArmor 및 기타 보안 구조로 변환하는 "인터페이스"를 사용하여 애플리케이션 샌드박스의 형태를 지정한다.
* LXD는 컨테이너용 우분투 "하이퍼바이저"이다
* 플랫팩은 프로세스 격리를 위해 seccomp를 사용한다.
* Bubblewrap은 플랫팩에서 개발된 경량 샌드박스 애플리케이션이다.
* minijail은 프로세스 격리를 위해 seccomp를 사용한다.

3.2. 웹 브라우저

구글의 엔지니어들은 크롬 웹 브라우저를 샌드박스하기 위해 seccomp 사용을 검토하고 있다고 밝혔다.

크롬 버전 20부터 seccomp-bpf는 어도비 플래시 플레이어를 샌드박스하는 데 사용되었고, 크롬 버전 23부터는 렌더러를 샌드박스하는 데 사용되고 있다.

파이어폭스파이어폭스 OS도 seccomp-bpf를 사용한다.

3.3. 기타 소프트웨어

* 안드로이드는 안드로이드 8.0 오레오부터 zygote에서 seccomp-bpf 필터를 사용한다.
* systemd의 샌드박싱 옵션은 seccomp를 기반으로 한다.
* QEMU 퀵 에뮬레이터는 KVM과 함께 최신 가상화의 핵심 구성 요소이며, `--sandbox` 매개변수에서 seccomp를 사용한다.
* 도커는 애플리케이션을 격리된 컨테이너 내에서 실행할 수 있게 해주는 소프트웨어이다. 도커는 `--security-opt` 매개변수를 사용하여 seccomp 프로파일을 컨테이너와 연결할 수 있다.
* Arcangeli의 CPUShare는 한동안 seccomp를 사용하는 유일한 사용자였다. 리누스 토르발스는 2009년 2월에 seccomp가 실제로 사용되는지 의문을 제기했다. 그러나, 구글 엔지니어는 구글이 크롬 웹 브라우저를 샌드박스하기 위해 seccomp 사용을 탐색하고 있다고 답변했다.
* Firejail은 리눅스 및 와인 애플리케이션을 샌드박스하기 위해 리눅스 네임스페이스, Seccomp 및 기타 커널 수준 보안 기능을 활용하는 오픈 소스 리눅스 샌드박스 프로그램이다.
* 크롬 버전 20부터 seccomp-bpf는 어도비 플래시 플레이어를 샌드박스하는 데 사용된다.
* 크롬 버전 23부터 seccomp-bpf는 렌더러를 샌드박스하는 데 사용된다.
* 스냅은 snapd가 seccomp, AppArmor 및 기타 보안 구조로 변환하는 "인터페이스"를 사용하여 애플리케이션 샌드박스의 형태를 지정한다.
* vsftpd는 버전 3.0.0부터 seccomp-bpf 샌드박싱을 사용한다.
* OpenSSH는 버전 6.0부터 seccomp-bpf를 지원한다.
* Mbox는 ptrace만 사용하는 것보다 적은 오버헤드로 안전한 샌드박스를 만들기 위해 ptrace와 seccomp-bpf를 함께 사용한다.
* LXD는 컨테이너용 우분투 "하이퍼바이저"이다.
* 파이어폭스 및 파이어폭스 OS는 seccomp-bpf를 사용한다.
* Tor는 0.2.5.1-alpha부터 seccomp를 지원한다.
* 드롭박스가 개발한 JPEG 압축 도구인 Lepton은 seccomp를 사용한다.
* Kafel은 읽을 수 있는 정책을 seccomp-bpf 바이트코드로 변환하는 구성 언어이다.
* 서브그래프 OS는 seccomp-bpf를 사용한다.
* 플랫팩은 프로세스 격리를 위해 seccomp를 사용한다.
* Bubblewrap은 플랫팩에서 개발된 경량 샌드박스 애플리케이션이다.
* minijail은 프로세스 격리를 위해 seccomp를 사용한다.
* SydBox는 Exherbo Linux 배포판에서 패키지 빌드를 샌드박스하는 데 사용되는 ptrace 샌드박싱의 런타임 및 보안을 개선하기 위해 seccomp-bpf를 사용한다.
* 파일 형식을 결정하는 Unix 프로그램인 File은 seccomp를 사용하여 런타임 환경을 제한한다.
* 최소한의 문서 뷰어인 자투라는 seccomp 필터를 사용하여 다양한 샌드박스 모드를 구현한다.
* 트래커는 GNOME 데스크톱 환경용 인덱싱 및 미리 보기 애플리케이션으로, 미디어 파일의 파싱 취약점을 자동 악용하는 것을 방지하기 위해 seccomp를 사용한다.