Foi identificada uma vulnerabilidade nos gerenciadores de pacotes Nix e Lix que permite a execução de código com os privilégios do processo em segundo plano, que em NixOS e instalações multiusuário é executado sob o usuário root. O problema (CVE não atribuído) se manifesta no processo em segundo plano nix-daemon, utilizado para fornecer acesso a usuários não privilegiados para operações de construção e armazenamento de pacotes.
A vulnerabilidade surge devido à ausência de limitações na manipulação recursiva de diretórios no código que analisa arquivos NAR (Nix Archive), o que pode ser explorado para induzir o esgotamento da pilha de corrotinas e sobrescrever o conteúdo do heap localizado após a pilha, sem páginas de guarda de memória. O problema pode ser explorado por qualquer usuário capaz de estabelecer conexões com o nix-daemon. Por padrão, todos os usuários têm essa capacidade, permitindo elevar suas permissões para o usuário root em instalações multiusuário do Nix.
O problema foi resolvido com a limitação do nível de recursão a 64 diretórios aninhados, a adição de páginas de guarda de memória entre a pilha e o heap, e a implementação de verificações adicionais para links simbólicos em NAR. No Nix, a vulnerabilidade se manifesta a partir da versão 2.24.4 e foi corrigida nas versões 2.34.7, 2.33.6, 2.32.8, 2.31.5, 2.30.5, 2.29.4, 2.28.7. No Lix, a vulnerabilidade surgiu na versão 2.93.0 e foi corrigida nas atualizações 2.93.4, 2.94.2 e 2.95.2. O gerenciador de pacotes Guix não é afetado por essa vulnerabilidade.
Além disso, nas atualizações publicadas do Nix, foi corrigida outra vulnerabilidade (CVE ausente), que foi classificada com um nível médio de severidade (4.3 em 10). O problema se manifesta a partir da versão 2.24.7 do Nix e permite a gravação de arquivos em áreas fora do diretório raiz onde o arquivo está sendo descompactado. Esta vulnerabilidade é explorada através da criação de elementos com caminhos de arquivo absolutos em arquivos tar. Ao descompactar esses arquivos usando o comando "nix-prefetch-url —unpack" ou "nix store prefetch-file —unpack", os arquivos com caminhos absolutos são extraídos como estão, sem conversão para um caminho relativo.
Fonte: opennet.ru
