man visudo
explica que o visudo não usará (por padrão) variáveis EDITOR
de VISUAL
ambiente.
Afirma que
"Não há uma maneira fácil de impedir que um usuário obtenha um shell root se o editor usado pelo visudo permitir escapes de shell."
Agora estou confuso onde reside o risco de segurança. Acredito que
- somente o root pode usar o visudo para editar
/etc/sudoers
- somente o root pode alterar as variáveis de ambiente do root
- root já tem um shell de root
Provavelmente existe um caso de uso em que isso não se aplica, mas não consigo pensar nisso.
Responder1
Não acho que haja um risco adicional de segurança ao executar um editor arbitrário, visudo
estritamente falando. Claramente, o usuário em execução visudo
já possui permissões para editar /etc/sudoers
e, portanto, tem a capacidade de adicionar regras que permitirão a execução de quaisquer outros comandos no sistema. Portanto, independentemente de qual editor seja executado, um usuário visudo
já pode executar o que quiser indiretamente, adicionando uma nova regra sudo.
Acho que o aviso na documentação sobre as EDITOR
variáveis VISUAL
de ambiente e é sobre a execução de um shell root (ou comando arbitrário) enquanto ignora o log padrão do sudo. Por padrão, o sudo registra todas as autenticações bem-sucedidas e malsucedidas no syslog. Isso fornece ao administrador do sistema uma trilha de auditoria sobre quais usuários estão executando quais comandos por meio do sudo. Se um usuário mudar /etc/sudoers
com visudo
, isso poderá ser visto somando a verificação ou revisando o arquivo. No entanto, se um usuário conseguir obter um shell root visudo
, ele poderá executar comandos arbitrários sem qualquer trilha de auditoria.
Portanto, o risco de segurança é o mesmo que conceder permissão para executar sudo bash
, ou seja, que um usuário com esse privilégio possa obter um shell root e executar código arbitrário sem qualquer restrição ou registro dos comandos executados.