Tuesday, February 21, 2006

Vulnerabilidade "congênita" em software para sysadmin

Há uma intensa e inacabável discussão sobre softwares que facilitem a administração de serviços e servidores, debate esse que fica ainda mais acalorado quando se menciona administradores em interface web.

O ponto principal do debate é que, para que se dê acesso limitado da administração de serviços a um usuário, o software vai precisar enjaular esse usuário muito bem, fazendo um controle de acesso muito complexo e com diversos possíveis pontos de falha.

No caso do Webmin, por exemplo, o daemon roda com usuário root e é necessário gerenciar não só a autenticação do usuário, como também controlar seu acesso. Para quem não conhece, o webmin permite delegar a um usuário o controle de apenas um serviço X, ou ainda apenas a componentes específicos de X (como controlar sistemas de arquivo, porém modificar os dados apenas do diretório /var/www/usuario/).

O histórico do webmin mostra que a complexidade dos seus mecanismos de controle de acesso e o potencial impacto ("root remoto", direto) da descoberta de vulnerabilidade no programa levaram à descoberta de diversas vulnerabilidade, algumas, se não me falha a memória, ainda na fase pré-autenticação(!!).
Recentemente o webmin foi retirado do Debian-sid, depois que o mantenedor compreensivelmente jogou a toalha, culpando inclusive a qualidade dos pacotes do webmin:
It is better to drop them now rather than perpetrate the cruel joke
that these are Debian-quality packages; especially because newbies often
rely on webmin to administer their systems and keep them secure. And we owe
it to Jamie Cameron, the author of webmin, not to besmirch his name and product
with buggy crap.

Mesmo que todos saibam do riscos que essas interfaces de gerenciamento possam representar, a oferta de ferramentas semelhantes só aumenta. Recentemente ouvi falar de outras duas: o ebox e o gosa.

Sistemas para facilitar a administração de servidores são ferramentas essenciais para os iniciantes e, considerando-se nessa categoria aqueles softwares de grande porte como o cpanel, há milhares de empresas cuja continuidade e segurança dos negócios dependem de interfaces de administração de serviços (penso numa empresa de hosting).

Eu mesmo me confesso simpático e reconhecedor da utilidade dessas ferramentas, desde que muito bem desenhadas e implementadas. Estou tendo uma grande preocupação com o desenvolvimento do meu nwu, visto que envolve a execução de tarefas como root nas máquinas gerenciadas.

Minha estratégia para tentar garantir um nível razoável de segurança passa por: utilizar criptografia na transmissão (HTTPS) e na autenticação (HMAC) das mensagens; não supor que o cliente seja confiável, mesmo que autenticado e; principalmente, mapear todos os possíveis pontos de risco da aplicação e auditá-los sempre.

Não tenho dúvida que fazer software seguro exige muito esforço e, tcha-na-nãs, tempo livre. Afinal de contas, só consideram questões de segurança quando não há prazo a ser cumprido :-).