Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A análise de firmware identifica chamadas de funções potencialmente inseguras em ficheiros executáveis suportados extraídos de imagens de firmware. Estes resultados podem ajudá-lo a encontrar padrões de implementação que exijam uma revisão de segurança adicional e a priorizar binários com base na sua potencial exposição.
Este artigo explica os sinais de chamada de funções inseguras que podes ver nos resultados da análise de firmware. Descreve ficheiros suportados, limitações de cobertura e como avaliar os resultados no contexto do executável e do dispositivo.
Note
A presença de uma chamada de função insegura não significa necessariamente que um executável ou dispositivo seja vulnerável. O risco real depende de como a função é utilizada, se a entrada não confiável consegue alcançá-la e como o executável é exposto e protegido.
Sinais de chamada de função inseguros na análise de firmware
A análise de chamadas a funções inseguras realiza uma análise estática de executáveis no formato executável e ligável (ELF) suportados. Identifica referências a funções que podem contribuir para problemas de segurança quando são usadas sem validação adequada de entrada, verificação de limites, validação do tamanho do buffer ou outros controlos de codificação seguros.
Algumas funções de manipulação de memória podem contribuir para excesso de buffer ou outras condições de corrupção de memória quando usadas incorretamente. Dependendo do caminho do código afetado e das mitigações disponíveis, um atacante pode usar estas condições para perturbar o dispositivo ou executar código não autorizado.
Cada resultado representa um sinal em vez de uma determinação de vulnerabilidade. Avaliar os sinais em conjunto e no contexto do papel do executável no firmware.
Funções potencialmente inseguras
Algumas funções de biblioteca podem ser arriscadas porque não garantem inerentemente o tamanho ou a fiabilidade dos dados que processam. Por exemplo, funções como strcpy e strcat podem contribuir para situações de transbordo de buffer se um programa copiar dados de entrada demasiado grandes ou não fiáveis para um buffer de destino.
Uma referência reportada indica que a análise de firmware identificou uma função rastreada no executável. Não estabelece que a função seja usada incorretamente. A função pode ser usada com salvaguardas, como verificar o comprimento de entrada, fornecer espaço suficiente de destino ou limitar a dados confiáveis.
Ao modificar código-fonte, utilize funções de manipulação de strings que aceitem o tamanho do buffer de destino e valide os comprimentos de entrada antes de copiar ou concatenar dados. Certifique-se de que o resultado está terminado por nulo e trate de truncamentos ou erros. Funções limitadas como strncpy e strncat podem reduzir o risco em comparação com alternativas ilimitadas, mas ainda assim devem ser usadas com cálculos corretos do tamanho do buffer.
O conjunto de funções rastreadas pode mudar à medida que esta funcionalidade evolui. Interprete o nome da função e a contagem como ponto de partida para a revisão de código, em vez de um inventário completo de todos os riscos de segurança de memória ou execução de comandos.
Informações sobre chamadas de rede
A análise de firmware também indica quando chamadas de funções relacionadas com a rede são identificadas num executável analisado. Utilize este sinal para ajudar a priorizar executáveis para revisão adicional. Não determina se o executável aceita ligações remotas, comunica fora do dispositivo ou é acessível no ambiente implementado.
Ao priorizar resultados, considere analisar primeiro os executáveis que contenham tanto chamadas de função inseguras como chamadas de rede. Estes executáveis podem processar dados recebidos de uma rede e justificar uma investigação mais antecipada.
Caminho executável e contagens de chamadas
Os resultados estão associados ao caminho executável extraído da imagem do firmware. As contagens de chamadas de função indicam quantas referências a uma função rastreada foram identificadas para esse executável. Uma contagem mais alta pode indicar mais locais para rever, mas por si só não indica maior gravidade ou explorabilidade.
O mesmo executável pode aparecer em múltiplos locais extraídos, e diferentes executáveis podem conter referências à mesma função. Use o caminho do extrator e a versão do firmware para identificar o componente de origem correto ou o artefacto do fornecedor.
Ficheiros suportados e cobertura
A análise de Chamadas de Funções Inseguras está disponível em versão preliminar e aplica-se a executáveis ELF de espaço de utilizador suportados, extraídos de imagens de firmware baseadas em Linux.
Os ficheiros dos módulos do núcleo do Linux (.ko) não estão incluídos porque a pré-visualização está circunscrita à análise de executáveis no espaço do utilizador.
A pré-visualização suporta as seguintes arquiteturas de processadores:
- AMD64 ou x86-64
- ARM64 ou AArch64
- ARM32
Requisitos binários
O executável deve reter informação que permita a análise de firmware identificar as funções que utiliza. Um binário estaticamente ligado ou despojado pode não produzir resultados quando nomes de funções ou outra informação necessária não estão disponíveis.
Uma imagem de firmware pode concluir com êxito outras atividades de análise sem produzir resultados de chamadas de função inseguras. Cada analisador de firmware tem os seus próprios requisitos de ficheiros, arquitetura e metadados.
Utilização conjunta de dados de chamadas de funções inseguras
Cada sinal oferece uma perspetiva diferente sobre o risco potencial:
| Sinal | O que te ajuda a perceber |
|---|---|
| Caminho executável | Que executável extraído contém as chamadas identificadas? |
| Número de chamadas de funções inseguras | O número total de chamadas de funções inseguras identificadas no executável. |
| Número de chamadas de rede | Se o comportamento relacionado com a rede justificaria priorizar o executável para uma revisão adicional. A contagem não estabelece a acessibilidade remota. |
Número de chamadas <function name> |
Quantas referências à função nomeada foram identificadas no executável. Utilize a contagem específica por função para concentrar a revisão adicional nos controlos de segurança aplicáveis, como o dimensionamento do buffer, a validação de entrada, o tratamento de strings de formato, as permissões de memória ou a validação da entrada de comandos. |
São fornecidas contagens específicas de função para as seguintes funções:
strcpystrcatprintffprintfsprintfsystemmmappopen
Em vez de depender de um único campo, avalie estes sinais em conjunto para perceber quais os executáveis que requerem uma revisão mais imediata.
Considerações importantes
Interpretação de resultados nulos e vazios
Os resultados podem mostrar uma contagem zero para um executável ou omitir completamente um executável. Uma contagem zero significa que o executável foi analisado, mas não foram identificadas chamadas rastreadas para esse campo.
Se um executável não aparecer nos resultados, não presuma que não contém chamadas de funções inseguras. A análise de firmware pode não ter conseguido analisá-la porque o executável utiliza uma arquitetura não suportada ou não contém a informação necessária para identificar referências de funções.
Uma lista de resultados vazia significa que não há resultados de Chamadas de Função Inseguras disponíveis para a imagem do firmware. Isso não significa que o firmware não contenha chamadas de função inseguras.
Não podem aparecer resultados quando:
- Não foram extraídos executáveis do espaço de utilizador ELF.
- Os executáveis extraídos utilizam arquiteturas não suportadas.
- Um binário estático ou despojado não contém informação identificativa suficiente.
- O ficheiro extraído é um módulo do kernel Linux excluído.
- A imagem do firmware foi analisada antes de a análise de Chamadas a Funções Inseguras ficar disponível.
- A extração ou análise não foi concluída com sucesso.
Note
Um resultado vazio não confirma que o firmware não contém chamadas de funções inseguras. Para receber a análise mais recente de uma imagem que foi processada antes de a versão preliminar das Chamadas de Função Inseguras ter sido disponibilizada, carregue novamente a imagem do firmware.
Para saber como carregar uma imagem e visualizar os seus resultados, consulte Analisar uma imagem de firmware com o serviço de análise de firmware. Para avaliar as proteções relacionadas com o compilador e o linker, consulte o separador Binary Hardening do mesmo executável.