Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El análisis de firmware identifica llamadas a funciones potencialmente inseguras en archivos ejecutables compatibles extraídos de imágenes de firmware. Estos resultados pueden ayudarte a encontrar patrones de implementación que requieran una revisión adicional de seguridad y a priorizar los binarios según su posible exposición.
Este artículo explica las señales de llamada a funciones inseguras que podrías ver en los resultados del análisis de firmware. Describe los archivos soportados, las limitaciones de cobertura y cómo evaluar los hallazgos en el contexto del ejecutable y el dispositivo.
Note
La presencia de una llamada a función insegura no significa necesariamente que un ejecutable o dispositivo sea vulnerable. El riesgo real depende de cómo se utilice la función, si la entrada no confiable puede llegar a ella y cómo se expone y protege el ejecutable.
Indicadores de llamadas a funciones inseguras en el análisis de firmware
El análisis de llamadas a funciones no seguras realiza un análisis estático de los ejecutables en formato ejecutable y enlazable (ELF) soportados. Identifica referencias a funciones que pueden contribuir a problemas de seguridad cuando se utilizan sin la validación adecuada de entrada, comprobación de límites, validación del tamaño del búfer u otros controles de codificación seguros.
Algunas funciones de gestión de memoria pueden contribuir a desbordamientos de búfer u otras condiciones de corrupción de memoria si se usan incorrectamente. Dependiendo de la ruta de código afectada y de las mitigaciones disponibles, un atacante podría usar estas condiciones para interrumpir el dispositivo o ejecutar código no autorizado.
Cada resultado representa una señal más que una determinación de vulnerabilidad. Evalúa las señales juntos y en el contexto del papel del ejecutable en el firmware.
Funciones potencialmente inseguras
Algunas funciones de biblioteca pueden ser arriesgadas porque no garantizan por sí mismas el tamaño ni la fiabilidad de los datos que procesan. Por ejemplo, funciones como strcpy y strcat pueden contribuir a condiciones de desbordamiento de búfer si un programa copia entradas sobredimensionadas o no confiables en un búfer de destino.
Una referencia reportada indica que el análisis de firmware identificó una función rastreada en el ejecutable. No establece que la función se use incorrectamente. La función puede utilizarse con salvaguardas, como comprobar la longitud de entrada, proporcionar suficiente espacio de destino o limitar la entrada a datos confiables.
Al modificar el código fuente, utiliza funciones de gestión de cadenas que acepten el tamaño del búfer de destino y valida las longitudes de entrada antes de copiar o concatenar datos. Asegúrate de que el resultado esté terminado en nulo y gestiona el truncamiento o errores. Las funciones acotadas como strncpy y strncat pueden reducir el riesgo en comparación con alternativas no acotadas, pero deben usarse con cálculos correctos del tamaño del búfer.
El conjunto de funciones rastreadas puede cambiar a medida que esta característica evoluciona. Interpreta el nombre y el conteo de la función como punto de partida para la revisión de código en lugar de como un inventario completo de todos los riesgos de seguridad de memoria o de ejecución de comandos.
Información de llamadas de red
El análisis de firmware también indica cuándo se identifican llamadas a funciones relacionadas con la red en un ejecutable analizado. Utiliza esta señal para ayudar a priorizar los ejecutables para una revisión posterior. No determina si el ejecutable acepta conexiones remotas, se comunica fuera del dispositivo o es accesible en el entorno desplegado.
Al priorizar los hallazgos, considera revisar primero ejecutables que contengan tanto llamadas a funciones inseguras como llamadas relacionadas con la red. Estos ejecutables pueden procesar datos recibidos de una red y justificar una investigación más temprana.
Ruta ejecutable y conteos de llamadas
Los resultados se asocian con la ruta ejecutable extraída de la imagen del firmware. Los conteos de llamadas a funciones indican cuántas referencias a una función rastreada se identificaron para ese ejecutable. Un recuento más alto puede indicar más lugares para revisar, pero por sí solo no indica mayor gravedad o explotabilidad.
El mismo ejecutable puede aparecer en múltiples ubicaciones extraídas, y diferentes ejecutables pueden contener referencias a la misma función. Utiliza la ruta del extractor y la versión del firmware para identificar el componente fuente correcto o el artefacto del proveedor.
Archivos compatibles y cobertura
El análisis de llamadas a funciones no seguras está disponible en vista previa y se aplica a ejecutables ELF de espacio de usuario compatibles extraídos de imágenes de firmware basado en Linux.
Los archivos de módulos del kernel de Linux (.ko) no se incluyen porque la vista previa se limita al análisis de ejecutables en el espacio de usuario.
La vista previa soporta las siguientes arquitecturas de procesadores:
- AMD64 o x86-64
- ARM64 o AArch64
- ARM32
Requisitos binarios
El ejecutable debe conservar información que permita el análisis de firmware para identificar las funciones que utiliza. Un binario enlazado estáticamente o despojado puede no producir resultados cuando no se dispone de nombres de funciones u otra información requerida.
Una imagen de firmware puede completar con éxito otras actividades de análisis sin generar resultados de Unsafe Function Calls. Cada analizador de firmware tiene sus propios requisitos de archivo, arquitectura y metadatos.
Uso conjunto de datos de llamada a funciones no seguras
Cada señal ofrece una perspectiva diferente sobre el riesgo potencial:
| Señal | Qué te ayuda a entender |
|---|---|
| Ruta ejecutable | ¿Qué archivo ejecutable extraído contiene las llamadas identificadas? |
| Número de llamadas a funciones inseguras | El número total de llamadas a funciones inseguras identificadas en el ejecutable. |
| Número de llamadas a la red | Si el comportamiento relacionado con la red podría justificar priorizar el ejecutable para una revisión más profunda. El recuento no determina la accesibilidad remota. |
Número de llamadas <function name> |
Cuántas referencias a la función nombrada se identificaban en el ejecutable. Utiliza el recuento específico de función para centrar una revisión adicional en los controles de seguridad aplicables, como el tamaño del búfer, la validación de entrada, el manejo de cadenas de formato, permisos de memoria o validación de comando-entrada. |
Se proporcionan recuentos específicos de función para las siguientes funciones:
strcpystrcatprintffprintfsprintfsystemmmappopen
En lugar de depender de un solo campo, evalúa estas señales juntos para entender qué ejecutables requieren una revisión más inmediata.
Consideraciones importantes
Interpretar resultados nulos y vacíos
Los resultados pueden mostrar un recuento cero para un ejecutable o omitir un ejecutable por completo. Un recuento cero significa que el ejecutable fue analizado, pero no se identificaron llamadas rastreadas para ese campo.
Si no aparece un ejecutable en los resultados, no asumas que no contiene llamadas a funciones inseguras. El análisis de firmware puede que no haya podido analizarlo porque el ejecutable utiliza una arquitectura no soportada o no contiene la información necesaria para identificar referencias de funciones.
Una lista de resultados vacía significa que no hay resultados de Llamadas de Función Inseguras disponibles para la imagen del firmware. No significa que el firmware no contenga llamadas a funciones inseguras.
No pueden aparecer resultados cuando:
- No se extrajeron ejecutables del espacio de usuario ELF.
- Los ejecutables extraídos utilizan arquitecturas no soportadas.
- Un binario estático o despojado no contiene suficiente información identificativa.
- El archivo extraído es un módulo excluido del núcleo de Linux.
- La imagen de firmware fue analizada antes de que el análisis de llamadas a funciones no seguras estuviera disponible.
- La extracción o el análisis no se completaron con éxito.
Note
Un resultado vacío no confirma que el firmware no contenga llamadas a funciones inseguras. Para recibir el análisis actual de una imagen que se procesó antes de que la vista previa de Llamadas de Función Inseguras estuviera disponible, suba de nuevo la imagen del firmware.
Para aprender a subir una imagen y ver sus resultados, consulta Analizar una imagen de firmware con el servicio de análisis de firmware. Para evaluar las protecciones relacionadas del compilador y enlazador, revise la pestaña de Endurecimiento Binario del mismo ejecutable.