Серия уязвимостей в Firejail
В системе для изолированного выполнения приложений Firejail выявлено десять уязвимостей, большинство из которых позволяют повысить свои привилегии в основной системе до пользователя root. Firejail использует для изоляции механизм пространств имен (namespaces), AppArmor и фильтрацию системных вызовов (seccomp-bpf) в Linux, но для настройки изолированного запуска требует повышенных привилегий, которые получает через привязку к утилите флага suid root или запуск при помощи sudo.
Первой была опубликована информация об уязвимости CVE-2017-5180, найденной участниками SuSE Security Team и использующей манипуляцию с файлом /etc/ld.so.preload для запуска своего кода с правами root. Как оказалось безопасность Firejail находится в весьма печальном состоянии и многие опции и пользовательские данные обрабатываются под euid 0. Следом было выявлено еще шесть уязвимостей, позволяющих совершить атаку через манипуляцию с tmpfs (CVE-2016-10117, CVE-2016-10119), /etc/resolv.conf (CVE-2016-10118), из-за монтирования /dev, /dev/shm, /var/tmp и /var/lock в режиме 0777 (CVE-2016-10120, CVE-2016-10121), из-за неочистки переменных окружения (CVE-2016-10122) и из-за возможности использования режима "--chroot" без seccomp (CVE-2016-10123).
Например, firejail позволяет непривилегированному пользователю примонтировать tmpfs-раздел для любой директории, в том числе прикрепить свой tmpfs-раздел вместо /etc - "firejail --noprofile --tmpfs=/etc". Или можно загрузить с правами root стороннюю библиотеку из-за неочистки переменной окружения LD_PRELOAD при запуске программ в режиме x11 (X-сервер запускается с правами root) - "firejail --x11=xorg --env=LD_PRELOAD=$PWD/rootshell.so". В дополнение было выявлено еще две уязвимости: выход из изолированного окружения через ptrace при запуске в режиме "--allow-debuggers" (CVE-2017-5207) и выполнение кода с правами root через манипуляции с опциями --bandwidth и --shell (CVE-2017-5206).