seccomp

seccomp
seccomp
원본 작성자안드레아 아르칸젤리
초기 릴리즈2005년 3월 8일; 16년(2005-03-08)
기록 위치C
운영 체제리눅스
유형샌드박스킹
면허증GNU 일반 공중 사용권
웹사이트code.google.com/archive/p/seccompsandbox/wikis/overview.wiki

seccomp(보안 컴퓨팅 모드의 줄임말)은 리눅스 커널컴퓨터 보안 시설이다.seccomp는 프로세스시스템 호출을 수행할 수 없는 "보안" 상태로 단방향 전환을 할 수 있도록 허용한다.exit(),sigreturn(),read()그리고write()이미 열려 있는 파일 설명자로 이동하십시오.다른 시스템 호출을 시도할 경우 커널은 이벤트를 기록하거나 SIGKILL 또는 SIGSYS로 프로세스를 종료한다.[1][2]이런 의미에서 시스템 자원을 가상화하는 것이 아니라 그 프로세스와 그 프로세스를 완전히 분리한다.

seccomp 모드는 를 사용하여 시스템 호출을 통해 활성화됨PR_SET_SECCOMP인수 또는 시스템 호출을 통한 (Linux[3] 커널 3.17 이후)[4]파일에 기록함으로써 활성화되는 seccomp 모드,/proc/self/seccomp, 그러나 이 방법은 에 찬성하여 제거되었다.prctl().[5] 일부 커널 버전에서 seccomp는RDTSC 전원을 켠 후 경과된 프로세서 사이클 수를 반환하는 x86 명령으로, 고주파 타이밍에 사용된다.[6]

seccomp-bpf버클리 패킷 필터 규칙을 사용하여 구현된 구성 가능한 정책을 사용하여 시스템 호를 필터링할 수 있는 seccomp의[7] 확장이다.오픈에서 사용한다.SSHvsftpd뿐만 아니라 Chrome OS 및 Linux의 Google Chrome/Chromium 웹 브라우저.[8] (이 점에서 seccomp-bpf는 더 이상 Linux에서 지원되지 않는 것으로 보이는 이전 시스템과의 유사한 기능을 더 유연하고 더 높은 성능으로 달성한다.)

일부에서는 seccompon이 OpenBSD 서약 (2) 및 FreeB에 필적한다고 생각한다.SD Capsicum(4).

역사

seccomp는 2005년 1월 Andrea Arcangeli가 공공 그리드 컴퓨팅에 사용하기 위해 처음 고안한 것으로 원래 신뢰할 수 없는 컴퓨팅 바인딩 프로그램을 안전하게 실행하기 위한 수단이었다.2005년 3월 8일 발매된 커널 버전 2.6.12에서 리눅스 커널 메인라인으로 합병되었다.[9]

seccomp 또는 seccomp-bpf를 사용하는 소프트웨어

  • 안드로이드안드로이드 8.0 오레오 이후 zygote에 seccomp-bpf 필터를 사용한다.[10]
  • systemd샌드박스 옵션은 seccomp를 기반으로 한다.[11]
  • KVM과 함께 현대 가상화의 핵심 구성 요소인 QEMU, Quick Emulator는 파라미터에 seccompon을 사용한다.--sandbox[12]
  • 도커 – 격리된 용기 내부에서 응용 프로그램을 실행할 수 있는 소프트웨어Docker는 다음을 사용하여 seccomp 프로필을 컨테이너에 연결할 수 있다.--security-opt매개 변수
  • 아르칸젤리의 CPU헤어는 한동안 seccomp의 유일한 사용자로 알려져 있었다.[13]리누스 토발즈는 2009년 2월에 쓴 글에서 seccomp가 실제로 누구에 의해 사용되는지에 대해 의문을 표시한다.[14]그러나 구글의 한 엔지니어는 구글이 크롬 웹브라우저 샌드박스를 만들기 위해 seccomp를 사용하는 방안을 검토하고 있다고 답했다.[15][16]
  • 파이어제일리눅스 네임스페이스, Seccomp 등 커널 수준의 보안 기능을 활용해 리눅스 및 와인 애플리케이션을 샌드박스하는 오픈소스 리눅스 샌드박스 프로그램이다.[17]
  • Chrome 버전 20을 기준으로 seccomp-bpf는 Adobe Flash Player 샌드박스에 사용된다.[18]
  • 크롬 버전 23을 기준으로 seccomp-bpf는 렌더러의 샌드박스에 사용된다.[19]
  • 스냅은 seccomp, AppAffire 및 기타 보안 구성[20] 요소로 변환되는 "인터페이스"를 사용하여 응용 프로그램 샌드박스의 모양을 지정하십시오.
  • vsftpd는 3.0.0 버전에서 seccomp-bpf 샌드박싱을 사용한다.[21]
  • OpenSSH는 버전 6.0 이후 seccomp-bpf를 지원해왔다.[22]
  • 엠박스는 seccomp-bpf와 함께 ptrace를 사용해 ptrace 단독보다 오버헤드가 적은 안전한 샌드박스를 만든다.[23]
  • LXD, 컨테이너용[24][25] Ubuntu "하이퍼바이저"
  • seccomp-bpf를[26][27] 사용하는 FirefoxFirefox OS
  • Tor는 0.2.5.1-알파[28] 이후 seccomp를 지원한다.
  • Dropbox가 개발한 JPEG 압축 툴인 Lipton은 seccomp를[29] 사용한다.
  • Kafel은 읽을 수 있는 정책을 seccompb-bpf 바이트[30] 코드로 변환하는 구성 언어다.
  • 서브그래프 OS에서 seccomp-bpf[31][32] 사용
  • 공정 분리[33] 위해 seccomp를 사용하는 플랫팍
  • 버블랩(Bubblewrap)은 플랫팩에서[34] 개발한 경량 샌드박스 애플리케이션이다.
  • Minijail은[35] 프로세스 격리를[36] 위해 seccomp를 사용한다.
  • 시드박스는[37][38][39][40] seccomp-bpf를[41][42][43][44][45] 사용하여 ExherboLinux[46] 배포에서 샌드박스 패키지 빌드에 사용되는 ptracesandboxing런타임보안을 개선하여 파일 시스템네트워크 리소스에 대한 원치 않는 프로세스 액세스를 방지한다.판도라는[47] ptrace와 seccomp 기반 샌드박스인 시드박스를 도와 샌드박스를 실용화한다.이를 통해 최종 사용자가 보안 컴퓨팅을 실용적으로 쉽게 사용할 수 있다.시드박스 git 저장소는 Firefox를 샌드박스로 만드는 예를 가지고 있다.[48]ptrace 기능은 ptrace 시스템 호출에 대한 래퍼인 PinkTrace[49][50][51][52] 라이브러리에 의해 제공된다.프로세스 추적을 위한 강력한 API를 제공한다.핑크트레이스는 수년간 스트레이스로부터 코드를 빌려서 필요에 따라 다시 제출해 왔다.[53][54]시드박스 2.0.1은[55][56] 더 이상 ptrace를 사용하지 않으며 seccomp의 새 모델에 전적으로 의존함SECCOMP_USER_NOTIF_FLAG_CONTINUE[57][58][59] 사용자가 정의한 보안 컴퓨팅 필터에서 프로그램을 추적하도록 플래그 지정사용자는 CIDR 표기법에서 와일드카드 문자, IPv4 또는 IPv6 주소를 포함한 경로명 또는 UNIX 소켓 주소를 사용하여 사용자가 지정한 허용 및 거부 목록과 일치하는 SiddBox 비참조 문자열 및 네트워크 주소 인수를 사용하여 커널 공간에서 완전히 필터링하거나 사용자 공간의 일부를 필터링하도록 선택할 수 있다.

참조

  1. ^ Corbet, Jonathan (2015-09-02). "A seccomp overview". lwn. Retrieved 2017-10-05.
  2. ^ "Documentation/prctl/seccomp_filter.txt". Retrieved 2017-10-05.
  3. ^ "Linux kernel 3.17, Section 11. Security". kernelnewbies.org. 2013-10-05. Retrieved 2015-03-31.
  4. ^ "seccomp: add "seccomp" syscall". kernel/git/torvalds/linux.git - Linux kernel source tree. kernel.org. 2014-06-25. Retrieved 2014-08-22.
  5. ^ Arcangeli, Andrea (2007-06-14). "[PATCH 1 of 2] move seccomp from /proc to a prctl". Retrieved 2013-08-02.
  6. ^ Tinnes, Julien (2009-05-28). "Time-stamp counter disabling oddities in the Linux kernel". cr0 blog. Retrieved 2013-08-02.
  7. ^ Corbet, Jonathan (2012-01-11). "Yet another new approach to seccomp". lwn. Retrieved 2013-08-02.
  8. ^ Tinnes, Julien (2012-11-19). "A safer playground for your Linux and Chrome OS renderers". The Chromium Blog. Retrieved 2013-08-02.
  9. ^ "[PATCH] seccomp: secure computing support". Linux kernel history. Kernel.org git repositories. 2005-03-08. Archived from the original on 2013-04-15. Retrieved 2013-08-02.
  10. ^ "Seccomp filter in Android O". Android Developers Blog.
  11. ^ "systemd.exec — Execution environment configuration". freedesktop.org. Retrieved 2017-10-14.
  12. ^ Otubo, Eduardo (2017-09-15). "QEMU Sandboxing new model pull request". qemu-devel mailing list archive.
  13. ^ van de Ven, Arjan (2009-02-28). "Re: [stable] [PATCH 2/2] x86-64: seccomp: fix 32/64 syscall hole". Linux Kernel Mailing List. Retrieved 2013-08-02.
  14. ^ Torvalds, Linus (2009-02-28). "Re: [PATCH 2/2] x86-64: seccomp: fix 32/64 syscall hole". Linux Kernel Mailing List. Retrieved 2013-08-02.
  15. ^ Gutschke, Markus (2009-05-06). "Re: [PATCH 2/2] x86-64: seccomp: fix 32/64 syscall hole". Retrieved 2013-08-02.
  16. ^ Gutschke, Markus (2009-05-06). "Re: [PATCH 2/2] x86-64: seccomp: fix 32/64 syscall hole". Linux Kernel Mailing List. Retrieved 2013-08-02.
  17. ^ "Firejail". Firejail. Retrieved 2016-11-26.
  18. ^ Evans, Chris (2012-07-04). "Chrome 20 on Linux and Flash sandboxing". Retrieved 2013-08-02.
  19. ^ Tinnes, Julien (2012-09-06). "Introducing Chrome's next-generation Linux sandbox". cr0 blog. Retrieved 2013-08-02.
  20. ^ "Snap security policy". Archived from the original on 2017-02-04. Retrieved 2017-02-03.
  21. ^ Evans, Chris (2012-04-09). "vsftpd-3.0.0 and seccomp filter sandboxing is here!". Retrieved 2013-08-02.
  22. ^ "Openssh 6.0 release notes". Retrieved 2013-10-14.
  23. ^ "MBOX". Retrieved 2014-05-20.
  24. ^ "LXD an "hypervisor" for containers (based on liblxc)". Retrieved 2014-11-08.
  25. ^ "Where We're Going With LXD". Retrieved 2014-11-08.
  26. ^ Destuynder, Guillaume (2012-09-13). "Firefox Seccomp sandbox". Mozilla Bugzilla. Retrieved 2015-01-13.
  27. ^ Destuynder, Guillaume (2012-09-13). "Firefox Seccomp sandbox". Mozilla Wiki. Retrieved 2015-01-13.
  28. ^ "Tor ChangeLog".
  29. ^ "Lepton image compression: saving 22% losslessly from images at 15MB/s". Dropbox Tech Blog. Retrieved 2016-07-15.
  30. ^ "Kafel: A language and library for specifying syscall filtering policies".
  31. ^ "Subgraph OS". Subgraph. Retrieved 2016-12-18.
  32. ^ "LoganCIJ16: Future of OS". YouTube. Archived from the original on 2021-12-21. Retrieved 2016-12-18.
  33. ^ "The flatpak security model – part 1: The basics". Retrieved 2017-01-21.
  34. ^ "bubblewrap". Retrieved 2018-04-14.
  35. ^ "Chromium OS Sandboxing - the Chromium Projects".
  36. ^ "Minijail [LWN.net]". lwn.net. Retrieved 2017-04-11.
  37. ^ "ptrace and seccomp based sandbox". dev.exherbo.org. Retrieved 2021-05-31.
  38. ^ "index: sydbox-1.git - Ptrace based Sandbox". git.exherbo.org. Retrieved 2021-05-31.
  39. ^ "path: root/packages/sys-apps/sydbox/sydbox.exlib". Retrieved 2021-05-31.
  40. ^ "path: root/packages/sys-apps/sydbox/sydbox.exheres-0". Retrieved 2021-05-31.
  41. ^ "core/trace/use_seccomp". dev.exherbo.org. Retrieved 2021-05-31.
  42. ^ "Specifying Magic Commands:Commands:core/restrict/file_control". dev.exherbo.org. Retrieved 2021-05-31.
  43. ^ "Specifying Magic Commands:Commands:core/restrict/shared_memory_writable". dev.exherbo.org. Retrieved 2021-05-31.
  44. ^ "improve seccomp for read only open calls". git.exherbo.org. Retrieved 2021-05-31.
  45. ^ "new functionality core/restrict/shared_memory_writable". git.exherbo.org. Retrieved 2021-05-31.
  46. ^ "Exherbo - Welcome". exherbo.org. Retrieved 2021-05-31.
  47. ^ "crates.io: Rust Package Registry: Pandora's Box: A helper for SydBox, a ptrace & seccomp based sandbox to make sandboxing practical". crates.io. Retrieved 2021-05-31.
  48. ^ "SydBox Profile for Mozilla Firefox 88.0.1". git.exherbo.org. Retrieved 2021-05-31.
  49. ^ "pinktrace Version 0.9.5". dev.exherbo.org. Retrieved 2021-05-31.
  50. ^ "index: pinktrace-1.git - pink's tracing library". git.exherbo.org. Retrieved 2021-05-31.
  51. ^ "path: root/packages/dev-libs/pinktrace/pinktrace.exlib". git.exherbo.org. Retrieved 2021-05-31.
  52. ^ "path: root/packages/dev-libs/pinktrace/pinktrace.exlib". git.exherbo.org. Retrieved 2021-05-31.
  53. ^ "path: root/pinktrace/read.c -- Based in part upon strace". git.exherbo.org. Retrieved 2021-05-31.
  54. ^ "Work around conflict between <sys/ptrace.h> and <linux/ptrace.h>". gitlab.com. Retrieved 2021-05-31.
  55. ^ "Sydbox v2.0.1: This release is noticably faster than Sydbox-1.2.1 in that it does not ptrace stop the processes anymore. The benchmark at the end of this post has the details. This release also fixes a multithreaded execve race condition which caused hangs". pink.exherbo.org. Retrieved 2021-06-15.
  56. ^ "Pandora v0.5.2: This version of Pandora updates configuration format to Sydbox API Version 2 and only works with SydBox v2.0.1 or newer". pink.exherbo.org. Retrieved 2021-06-15.
  57. ^ "seccomp: add SECCOMP_USER_NOTIF_FLAG_CONTINUE". git.kernel.org. Retrieved 2021-06-15.
  58. ^ "seccomp: avoid overflow in implicit constant conversion". git.kernel.org. Retrieved 2021-06-15.
  59. ^ "seccomp: test SECCOMP_USER_NOTIF_FLAG_CONTINUE". git.kernel.org. Retrieved 2021-06-15.

외부 링크