Bubblewrap 0.6 출시, 샌드박스 환경 생성을 위한 레이어

격리된 환경의 작업을 구성하기 위한 도구 릴리스 Bubblewrap 0.6을 사용할 수 있으며 일반적으로 권한이 없는 사용자의 개별 응용 프로그램을 제한하는 데 사용됩니다. 실제로 Bubblewrap은 Flatpak 프로젝트에서 패키지에서 시작된 애플리케이션을 격리하는 레이어로 사용됩니다. 프로젝트 코드는 C로 작성되었으며 LGPLv2+ 라이선스에 따라 배포됩니다.

격리를 위해 cgroup, 네임스페이스, Seccomp 및 SELinux 사용을 기반으로 하는 기존 Linux 컨테이너 가상화 기술이 사용됩니다. 컨테이너를 구성하기 위한 권한 있는 작업을 수행하기 위해 Bubblewrap은 루트 권한(suid 플래그가 있는 실행 파일)으로 시작된 다음 컨테이너가 초기화된 후 권한을 재설정합니다.

컨테이너에서 자신만의 별도 식별자 세트를 사용할 수 있도록 하는 네임스페이스 시스템의 사용자 네임스페이스 활성화는 작업에 필요하지 않습니다. 왜냐하면 많은 배포판에서 기본적으로 작동하지 않기 때문입니다(Bubblewrap은 제한된 suid 구현으로 위치합니다). 사용자 네임스페이스 기능의 하위 집합 - 현재 환경을 제외한 모든 사용자 및 프로세스 식별자를 환경에서 제외하려면 CLONE_NEWUSER 및 CLONE_NEWPID 모드가 사용됩니다. 추가 보호를 위해 Bubblewrap에서 실행되는 프로그램은 PR_SET_NO_NEW_PRIVS 모드에서 실행됩니다. 이는 예를 들어 setuid 플래그가 있는 경우 새 권한 획득을 금지합니다.

파일 시스템 수준의 격리는 기본적으로 tmpfs를 사용하여 빈 루트 파티션이 생성되는 새로운 마운트 네임스페이스를 생성하여 수행됩니다. 필요한 경우 외부 FS 파티션이 "mount —bind" 모드에서 이 파티션에 연결됩니다. 예를 들어 "bwrap —ro-bind /usr /usr" 옵션으로 시작하면 /usr 파티션이 기본 시스템에서 전달됩니다. 읽기 전용 모드에서). 네트워크 기능은 CLONE_NEWNET 및 CLONE_NEWUTS 플래그를 통한 네트워크 스택 격리를 사용하는 루프백 인터페이스에 대한 액세스로 제한됩니다.

setuid 시작 모델도 사용하는 유사한 Firejail 프로젝트와의 주요 차이점은 Bubblewrap의 컨테이너 생성 계층에는 필요한 최소 기능만 포함되어 있으며 그래픽 애플리케이션 실행, 데스크톱과 상호 작용 및 요청 필터링에 필요한 모든 고급 기능이 포함되어 있다는 것입니다. Pulseaudio로, Flatpak 측으로 전송되어 권한이 재설정된 후 실행됩니다. 반면 Firejail은 관련된 모든 기능을 하나의 실행 파일에 결합하므로 적절한 수준의 보안을 감사하고 유지하기가 어렵습니다.

새 릴리스에서:

  • Добавлена поддержка сборочной системы Meson. Поддержка сборки при помощи Autotools пока сохранена, но будет удалена в одном из следующих выпусков.
  • Реализована опция «—add-seccomp» для добавления более чем одной программы seccomp. Добавлено предупреждение о том, что при повторном указании опции «—seccomp» будет применён только последний параметр.
  • Ветка master в git-репозитории переименована в main.
  • Добавлена частичная поддержка спецификации REUSE, унифицирующей процесс указания сведений о лицензиях и авторских правах. Во многие файлы с кодом добавлены заголовки SPDX-License-Identifier. Следование рекомендациям REUSE позволяет упростить автоматическое определение какая лицензия применяется к каким из частей кода приложения.
  • Добавлена проверка значения счётчика аргументов командной строки (argc) и реализован экстренный выход в случае если счётчик равен нулю. Изменение позволяет блокировать проблемы с безопасностью, вызванные некорректной обработкой передаваемых аргументов командной строки, такие как CVE-2021-4034 в Polkit.

출처 : opennet.ru

코멘트를 추가