Suponho que você esteja seguindo o Guia de implementação técnica de segurança do RHEL 5 .
“O meu sistema Linux suporta a tabela syscall de 32 bits?” é uma questão muito interessante e, como Gilles menciona, não uma que tenha sido abordada de forma conclusiva no site. Também é uma pergunta difícil de responder.
Vou começar reduzindo-o para o contexto STIG, ie “Meu sistema Linux suporta a tabela syscall do i386?” (Nós revisitaremos o problema mais geral depois). Você não pode obter uma lista definitiva de syscalls suportados de um kernel em execução , mas neste caso não precisamos: tudo o que precisamos fazer é procurar pelos pontos de entrada do syscall. Os pontos de entrada do i386 são convenientemente denominados: as funções visíveis externamente usadas pelas chamadas nativas de 32 bits e pela camada de emulação de 64 a 32 bits são do_fast_syscall_32
e do_int80_syscall_32
. A melhor maneira de verificar isso é procurá-los em /proc/kallsyms
(espero que não haja outra regra STIG que proíba isso ...). Se eles estiverem presentes, o kernel atual suporta chamadas do sistema i386 e você precisa da regra de auditoria lchown32
.
Ao ler as outras respostas sobre esse tipo de tópico, você verá que uma forma típica de testar o suporte a chamadas do sistema em um sistema em execução é tentar fazer a chamada do sistema. Ao auditar um sistema que pode não ser apropriado, ele deve acionar uma regra de auditoria. Ele também pode resultar em falsos negativos durante a auditoria, já que normalmente se baseia tanto no kernel que suporta a chamada de sistema relevante quanto no sistema que fornece a estrutura necessária.
Usar os resultados de lscpu
e outras ferramentas semelhantes também é enganoso, pois eles relatam os recursos da CPU instalada, não os do sistema. Por exemplo, lscpu
de equivalências de códigos rígidos: lm
, zarch
ou sun4[uv]
nos sinalizadores de CPU informam que há suporte a 32 e 64 bits, o que é da perspectiva da CPU, mas lscpu
não determina se o resto do sistema também suporta (nem deveria).
Revisitando a questão mais geral, “Meu sistema Linux suporta a tabela syscall de 32 bits?”, determinar a resposta sempre dependerá da arquitetura. Se tentarmos examinar as chamadas do sistema para determinar a resposta, precisamos levar em conta o histórico de chamadas do sistema na arquitetura; Por exemplo, chown32
e irmãos não são necessariamente suportados em arquiteturas de 32 bits. Da mesma forma, procurar pontos de entrada depende da arquitetura.
Assim, não acho que haja uma resposta geral para sua pergunta; as respostas devem levar em conta pelo menos a arquitetura de destino.