1. Cuentas de prueba de puerta trasera.
Los ingenieros a menudo incluyen mecanismos de puerta trasera y cuentas de prueba en hardware para fines de depuración, con medidas de seguridad triviales o sin ningún tipo de protección para protegerlos. Desafortunadamente, una gran cantidad de dispositivos llegan al mercado sin tener estos mecanismos y cuentas desactivados, lo que permite a los atacantes obtener acceso ilegítimo al dispositivo.
2. Protocolos de gestión de red no seguros.
Muchos dispositivos implementan SNMP o UPnP para la administración remota, pero no implementan incluso niveles básicos de seguridad a su alrededor. El equipo de oficina, el hardware de red, los sistemas de control industrial, etc. a menudo filtran datos sensibles (como la tabla de enrutamiento) a través de SNMP, y pueden proporcionar varias funciones de control a través de UPnP. Muchos dispositivos habilitados para UPnP implementan las funciones estándar de administración de la interfaz de red, que permiten a un atacante deshabilitar una interfaz de red. Otras funciones pueden permitir que un atacante dañe permanentemente el dispositivo, o causar problemas graves con la funcionalidad.
3. Desbordamientos de búfer.
Las implementaciones de hardware son notoriamente malas por no verificar los tamaños del búfer de destino y pueden permitir la corrupción completa del estado de la memoria. Esto puede resultar en la ejecución del código, pero más comúnmente simplemente se traduce en una condición de denegación de servicio, donde el dispositivo debe reiniciarse por hardware antes de que se pueda usar nuevamente.
4. Desbordamientos / subflujos de enteros.
Se producen cuando una entrada de entero sin signo se trata como firmada, o un tipo de entero más grande se convierte directamente en un tipo de entero más pequeño. Ambos de estos problemas pueden dar lugar a casos en los que un valor está fuera del rango esperado, lo que puede hacer que las comprobaciones de rango de matriz y las comprobaciones de longitud del búfer pasen a pesar de que el búfer de entrada sea demasiado grande. Esto también puede dar lugar a condiciones de lectura en cualquier lugar, donde un índice de matriz negativo conduce a operaciones de memoria que acceden a regiones de memoria anteriores.
5. Insuficientes controles de cordura.
Por lo general, se considera que los valores de entrada en las implementaciones de hardware tienen una integridad sólida, por lo que a menudo no se realizan controles de integridad. Esto podría permitir a un usuario malintencionado proporcionar un valor inesperado y cambiar el comportamiento del dispositivo. Un ejemplo común de esto es cuando se utiliza un conjunto de indicadores de bits y se establecen bits en conflicto.
6. Secretos compartidos y codificados en el disco duro incrustados en la memoria no volátil.
Los diseñadores de hardware a veces están bajo la ilusión de que debido a que algo se almacena en un chip EEPROM en una placa, los datos que contiene no pueden ser leídos por alguien que desea interferir con el dispositivo. Es común encontrar claves criptográficas codificadas y otras credenciales almacenadas en el firmware de un dispositivo. Estos pueden usarse para comprometer el dispositivo o sus comunicaciones, y suelen ser los mismos en todos los dispositivos del mismo modelo.
7. Crypto de mala calidad, autodiseñado o faltante.
A menudo, es complicado implementar algoritmos criptográficos adecuados en sistemas integrados, especialmente cuando se trabaja con microcontroladores y microprocesadores de velocidad más amplia. Las implementaciones de referencia a menudo asumen arquitecturas de tipo x86 o de tipo ARM, lo que aumenta el factor de trabajo. Los ingenieros también suelen carecer del conocimiento y la experiencia para implementar correctamente la criptografía. Como tal, los algoritmos criptográficos que se encuentran en los sistemas integrados tienden a estar mal implementados, o son diseños caseros con fallas de seguridad graves. Muchos sistemas carecen completamente de cualquier forma de hashing en las contraseñas y otras credenciales. Este tipo de datos generalmente se puede extraer de la memoria no volátil usando herramientas disponibles.
8. Falta de una sólida integridad y comprobación de autenticidad en las actualizaciones de firmware.
La integridad del firmware del dispositivo a menudo se verifica a través de un hash CRC32 o MD5, pero rara vez se autentica a través de un medio fuerte. Muchos fabricantes confían en la oscuridad como medida de seguridad. Si bien el costo de la ingeniería inversa puede ser considerable, el firmware de un dispositivo lo está reduciendo con la llegada de las arquitecturas de microprocesadores comunes (por ejemplo, ARM) en sistemas integrados. Una vez que un atacante obtiene la capacidad de cargar una imagen de firmware, puede subvertir completamente el sistema.
9. Varias fallas de aplicaciones web en los paneles de control.
Muchas de las fallas de las principales aplicaciones web de OWASP son inquietantemente comunes en los paneles de control web para dispositivos integrados. CSRF, XSS y el robo de sesión se encuentran altamente en la lista de vulnerabilidades comunes, aunque SQLi es menos común debido a la cantidad relativamente baja de sistemas que implementan una base de datos relacional completa.
10. Servicios de red enlazados incorrectamente.
Muchos servicios de red en dispositivos integrados están configurados para vincularse a 0.0.0.0, en lugar de hacerlo directamente a una dirección IP de LAN. Esto puede permitir que un atacante se comunique con el dispositivo desde fuera de la LAN. La segregación adecuada y la configuración del firewall pueden ayudar a mitigar esto, pero sigue siendo una preocupación.