Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A análise de firmware identifica chamadas de função potencialmente inseguras em arquivos executáveis compatíveis extraídos de imagens de firmware. Esses resultados podem ajudar você a encontrar padrões de implementação que exigem revisão adicional de segurança e priorizar binários com base em sua exposição potencial.
Este artigo explica os sinais de chamada de função inseguros que você pode ver nos resultados da análise de firmware. Ele descreve arquivos suportados, limitações de cobertura e como avaliar os achados 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 é usada, se entradas não confiáveis podem 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 das Chamadas de Função Não Seguras realiza uma análise estática dos executáveis em formato executável e encadernável (ELF) compatíveis. Ele identifica referências a funções que podem contribuir para problemas de segurança quando são usadas sem validação de entrada adequada, verificação de limites, validação do tamanho do buffer ou outros controles de codificação seguros.
Algumas funções de manuseio 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 de código afetado e das mitigações disponíveis, um atacante pode usar essas condições para interromper o dispositivo ou executar código não autorizado.
Cada resultado representa um sinal, e não uma determinação de vulnerabilidade. Avalie os sinais juntos 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 confiabilidade dos dados que processam. Por exemplo, funções como strcpy e strcat podem contribuir para condições de estouro de buffer se um programa copiar entradas excessivamente grandes ou não confiá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. Isso não estabelece que a função foi usada incorretamente. A função pode ser usada com salvaguardas, como verificar o comprimento de entrada, fornecer espaço suficiente para o destino ou limitar a entrada a dados confiáveis.
Ao modificar o código-fonte, use funções de gerenciamento 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 seja terminado com caractere nulo e trate truncamentos ou erros. Funções limitadas como strncpy e strncat podem reduzir o risco em comparação com alternativas ilimitadas, mas ainda devem ser usadas com cálculos corretos do tamanho do buffer.
O conjunto de funções rastreadas pode mudar conforme essa funcionalidade evolui. Interprete o nome da função e a contagem como ponto de partida para 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 à rede são identificadas em um executável analisado. Use esse sinal para ajudar a priorizar executáveis para revisão posterior. Ele não determina se o executável aceita conexões remotas, se comunica fora do dispositivo ou se é acessível no ambiente implantado.
Ao priorizar descobertas, considere revisar executáveis que contenham tanto chamadas de função inseguras quanto chamadas relacionadas à rede primeiro. Esses executáveis podem processar dados recebidos de uma rede e podem 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. Contagens de chamadas de função indicam quantas referências a uma função rastreada foram identificadas para aquele executável. Uma contagem maior pode indicar mais locais para revisar, mas isso 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 artefato do fornecedor.
Arquivos suportados e cobertura
A análise de Chamadas de Função Inseguras está disponível em versão prévia e se aplica a executáveis ELF de espaço do usuário compatíveis extraídos de imagens de firmware baseadas em Linux.
Os arquivos do módulo do kernel Linux (.ko) não estão incluídos porque a visualização se limita à análise de executáveis em espaço de usuário.
A prévia suporta as seguintes arquiteturas de processadores:
- AMD64 ou x86-64
- ARM64 ou AArch64
- ARM32
Requisitos binários
O executável deve reter informações que permitam a análise de firmware identificar as funções que utiliza. Um binário vinculado estaticamente ou despojado pode não produzir resultados quando nomes de funções ou outras informações necessárias não estão disponíveis.
Uma imagem de firmware pode concluir outras atividades de análise com sucesso sem gerar resultados de chamadas de função inseguras. Cada analisador de firmware possui seus próprios arquivos, arquitetura e requisitos de metadados.
Uso dos dados de chamada à função não seguros juntos
Cada sinal oferece uma perspectiva diferente sobre o risco potencial:
| Sinal | O que ela ajuda você a entender |
|---|---|
| Caminho executável | Qual executável extraído contém as chamadas identificadas. |
| Número de chamadas de função insegura | O número total de chamadas de funções inseguras identificadas no executável. |
| Número de chamadas de rede | Se o comportamento relacionado à rede justificaria priorizar o executável para revisão posterior. A contagem não determina se algo pode ser alcançado remotamente. |
Número de <function name> chamadas |
Quantas referências à função nomeada foram identificadas no executável. Use a contagem específica de função para focar na revisão adicional dos controles de segurança aplicáveis, como dimensionamento do buffer, validação de entrada, tratamento de strings de formato, permissões de memória ou validação de comando-entrada. |
Contagens específicas por função são fornecidas para as seguintes funções:
strcpystrcatprintffprintfsprintfsystemmmappopen
Em vez de depender de um único campo, avalie esses sinais juntos para entender quais executáveis exigem uma revisão mais imediata.
Considerações importantes
Interpretando resultados com valor zero e resultados vazios
Os resultados podem mostrar uma contagem igual a zero para um executável ou omitir um executável por completo. Uma contagem zero significa que o executável foi analisado, mas nenhuma chamada rastreada foi identificada para aquele campo.
Se um executável não aparecer nos resultados, não presuma que ele não contém chamadas de função inseguras. A análise de firmware pode não ter conseguido analisá-la porque o executável usa uma arquitetura não suportada ou não contém as informações necessárias para identificar referências de funções.
Uma lista de resultados vazia significa que não há resultados das Chamadas à Função Não Seguras disponíveis para a imagem de firmware. Isso não significa que o firmware não contenha chamadas de função inseguras.
Nenhum resultado pode aparecer quando:
- Nenhum executável ELF em espaço de usuário foi extraído.
- Os executáveis extraídos usam arquiteturas não suportadas.
- Um binário estático ou sem símbolos não contém informações de identificação suficientes.
- O arquivo extraído é um módulo do kernel Linux excluído.
- A imagem do firmware foi analisada antes de a análise de Chamadas de Função 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ção inseguras. Para receber a análise mais recente de uma imagem que foi processada antes de a versão prévia de Chamadas de Função Inseguras estar disponível, envie a imagem do firmware novamente.
Para aprender como enviar uma imagem e visualizar seus resultados, veja Analisar uma imagem de firmware com o serviço de análise de firmware. Para avaliar as proteções relacionadas ao compilador e ao vinculador, consulte a aba Binary Hardening do mesmo executável.