Usando o Seccomp para limitar a superfície de ataque do kernel

Projeto de Sistemas Operaionais

Aluno: Elisandro Mello Corrêa

Professor: Roland Teodorowitsch

Sistemas Linux

O sistema operacional Linux possui algumas centenas de chamadas de sistema, mas a maioria deles não é utilizado por nenhum processo. Essa estrutura possibilita que um processo possa ser “ludibriado” em utilizar outras chamadas de sistema, podendo causar uma vulnerabilidade de segurança que pode resultar no comprometimento de todo o sistema.

O que é os Filtos Seccomp

A filtragem do Linux “seccomp”, permite especificar ao sistema, que um processo deve operar em área reduzida do “kernel”, limitando a área exposta aos aplicativos. Sendo útil para:

  • Restringir aplicativos de invocar “syscalls ” que podem afetar o host;
  • Reduzir a superfície de ataque do “kernel” em caso de erros de segurança

O que não é?

A documentação oficial do Kernel.org (2017) nos apresenta que a filtragem não é uma caixa de areia.

Mas sim, uma solução que fornece um mecanismo, claramente definido, para minimizar a área de atuação de um processo ou aplicativo.

Seccomp

A primeira versão do “seccomp”  foi adicionada ao “Kernel ” em 2005 no Linux 2.6.12:

habilitando a regra para: /proc/PID/seccomp.

O Processo pode realizar somente 4 chamadas:

  • read()
  • write()
  • exit()
  • sigreturn().

A grande mudança ocorreu no "modo Seccomp 2" (ou "modo de filtro Seccomp") que foi adicionado ao Linux 3.5 em 2012.

  • SECCOMP_MODE_FILTER

Apartir, desse modo, os processos podem especificar quais chamadas de sistema são permitidas;

  • BPF - berkeley packet filter;

Utilizando um miniprograma no idioma do filtro de pacotes Berkeley (BPF)

  • Filtragem Personalizada

Os processos podem restringir as "syscalls" inteiramente ou apenas para determinados valores de argumento;

Referências

Kernel.Org (USA).Documentação oficial. Em: https://www.kernel.org/doc/Documentation/prctl/seccomp_filter.txt>. Acesso em: 02 outubro 2017.

KERRISK, Michael. Linux Programmer’s Manual. Em: < http://man7.org/linux/man-pages/man2/seccomp.2.html>. Acesso em: 02 outubro 2017.

HERLIHY, Maurice; SHAVIT, Nir. The Art of Multiprocessor Programming. Burlington: Morgan Kaufmann Publishers, 2008.

Sistema Colabotativo ProfileIT

By elisandro

Sistema Colabotativo ProfileIT

  • 268