### Resumo Quando um plugin de verificação coloca o usuário fornecido dentro de um comando que é passado para `shell_exec`, um atacante pode abusar disto para executar comandos arbitrários. Isto é principalmente perigoso para plug- ins que estão listados no arquivo Sudoers, porque isso permite que um atacante que controla o usuário de nagios obtenha privilégios de root. ### Detalhes Um exemplo para isso é o plugin `restic-check`, onde o argumento `-- repo` é colocado dentro do argumento de comando de `shell_exec`. Como exemplo, um atacante poderá usar o argumento `-- repo` `. touch / root/ nagios- was- here. O comando restico completo é montado na string ` restic --json --repo=. touch /root/nagios- was- here. --password- file= check` antes de ser passado para `shell_exec`. `shell_exec`, em seguida, divide o comando em três partes nos limites de. e executa as partes separadamente, o que também executa o comando embutido ` touch /root/nagios- was- here`.

### PoC Este PoC mostra como o usuário de nagios pode usar isso para criar um arquivo dentro de `/root`. ``` nagios@test- vm:/$ sudo /usr/lib 64 /nagios/plugins/restic-check -- repo '' touch / root/nagios- was- here` ``` ### Impacto A vulnerabilidade é uma escalada de privilégios locais.

#### Mude de. para um array Remova a funcionalidade de dividir. Em vez disso, modifique o shell_exec para aceitar uma string ou uma array de strings. Se for fornecido um array, os comandos são encadeados como estão atualmente ao usar. Se for fornecida uma string, não deverá ser executada nenhuma divisão. Você também pode introduzir uma função separada como `shell_exec_with_user_input()` que implementa esta função de modo que a função shell_exec atual possa permanecer como está. Isto deixa o problema de que um atacante ainda pode especificar argumentos arbitrários dentro de um comando. Um exemplo para isso seria usar o argumento `-- repo` `sftp://example.com --cache- dir /tmp`, que levaria à execução de: ` restic --json --repo=sftp://example.com --cache- dir /tmp --password-file=Nenhuma verificação`. Por favor, note que este exemplo deve destacar principalmente o problema em geral. Para evitar o problema, há fuga ou novamente sínta de array. Escapar usaria `shlex. quote` para colocar o argumento fornecido pelo usuário dentro das citações e que também escapa de tudo o que precisa ser escapado. Usar a sintaxe de array significaria fornecer o comando completo como um array como `['restic', '--json', '--repo', 'sftp://example.com']'. O array pode ser então dado como- é para `Popen`. Com este método, o proposto `shell_exec_with_user_input` aceitaria uma array de array de strings.

A correção segue a abordagem de array-syntax proposta acima. * `linuxfabrik-lib` 5.0.0: `lib.shell.shell_exec()` requer o comando como uma lista de argumentos (argv) e sempre executa com `shell=False`. A funcionalidade ``` dividir, as cadeias de comandos e o parâmetro `shell=` foram removidos, assim a entrada fornecida pelo usuário não pode mais ser desativada de um comando. `lib.shell.safe_cli_value()` adicionalmente guarda argumentos posicionais (como um destino ssh ou um alvo ping) contra a injeção de opção, e `lib.ssh` compila listas de argumentos também. * Linuxfabrik Monitoring Plugins: todos os plugins montam seus comandos externos como listas argv (commit) 23 bb 570 f 4 ). Contido em cada versão após v 5.2.0. Registro de aconselhamento: GHSA- 798 h- hpph- m 24 j. Identificadores relacionados: CVE- 2026 - 55426.

Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 06 T 21: 13: 38.000 Z e lista a sua última modificação como 2026 - 07 - 06 T 21: 13: 38.000 Z. Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H.

Software afetado e informações de versão: pacote PyPI linuxfabrik-lib — ECOSYSTEM: introduzido 0, corrigido 5.0.0.

Classificação e evidência: identificadores de fraqueza CWE- 78. O registro contém 2 suporte de referências nestes tipos: WEB, PACKAGE.