- Unas 30 archivos de la UI web de administración del firmware de las cámaras Hanwha Vision incluían el mismo token de GitHub, y ese token tenía permisos de administrador sobre cientos de repositorios dentro de la organización.
- El
fwupgraderdel firmware restauraba una clave AES hardcodeada aplicando XOR con una tabla estática, y luego descifraba el sistema de archivos raíz conopenssl; la clave y el IV se reutilizaban en toda la misma familia de modelos. - Como una variable de build de Vite quedó configurada con todo
process.env, las variables de entorno del trabajo de CI terminaron grabadas en el resultado, e inclusoGITHUB_NPM_TOKENy varias configuraciones internas quedaron incluidas en el firmware de las cámaras. - Se revisaron unas 500 firmwares con el mismo método y se pudo extraer el 62%; los 3 firmwares donde apareció un token de GitHub contenían exactamente el mismo token.
- Hanwha revocó el token en menos de 12 horas tras el reporte, pero una configuración que inserta todo el entorno de CI en los artefactos del cliente puede exponer credenciales e información de infraestructura interna en el producto.
Obtención del firmware y primera capa de cifrado
- El sitio de Hanwha Vision publica las imágenes de firmware por modelo de cámara, por lo que fue posible descargar los archivos y analizarlos.
- Al inspeccionar la imagen con
binwalk, se encontró un tarball separado con componentes de IA para la cámara y unfwimage.tgzcifrado. - Siguiendo el análisis de descifrado del firmware Hanwha de Matt Brown, se usó una contraseña formada por
HTWy el número de modelo.- En el caso analizado, funcionó
HTWXNP-9300RW.
- En el caso analizado, funcionó
- Dentro del tarball extraído había otro
fwimage.tgzcifrado con un método distinto, así que no se podía reutilizar tal cual el procedimiento anterior.
Reconstrucción del método de descifrado desde fwupgrader
- Se analizó el binario
fwupgraderincluido en el tarball externo con Ghidra y Claude Code para extraer el sistema de archivos raíz real. fwupgradertenía ofuscación para ocultar el método de descifrado.- La clave AES se reconstruía en tiempo de ejecución tras aplicar XOR con una pequeña tabla de claves estática dentro del binario.
- El IV estaba en texto plano dentro del binario.
- Los fragmentos del comando
openssltambién estaban ofuscados con XOR de la misma forma.
- El comando reconstruido tenía esta forma, usando SHA-256 y AES-256-CBC:
openssl enc -md sha256 -aes-256-cbc -d \ -K <KEY> -iv <IV> -in <INPUT> -out <OUTPUT> - La clave y el IV estaban hardcodeados y se compartían en la misma familia de modelos.
KEY = dfa049bb922e63e2decc764af5628068e5b7a2662e479a615b14643e567579b0 IV = 53f926801b81454a4f889c9a390db6e6
Token de administrador de GitHub incluido en el firmware
- Al revisar el sistema de archivos raíz extraído con
trufflehog, el mismo token de GitHub apareció repetido en unos 30 archivos. - Ese token tenía permisos de administrador sobre cientos de repositorios dentro de la organización de GitHub de Hanwha.
- La UI de la cámara se construye con Vite, y se confirmó que una variable de build quedó configurada con todo
process.env, por lo que todo el entorno del trabajo de CI terminó grabado en los archivos generados.var W = { DATAPORT: "9090", GIT_LFS_SKIP_SMUDGE: "1", npm_command: "run-script", KUBERNETES_SERVICE_PORT_HTTPS: "443", GITHUB_NPM_TOKEN: "<snip>:ghp_…REDACTED…", npm_config_userconfig: "/home/docker/.npmrc", // etc } - No fue posible verificar el comportamiento real porque no se tenía una cámara física.
- Es posible que el token se haya enviado por red a usuarios que accedían a la UI de administración.
- También es posible que el archivo solo existiera en disco y en realidad no se sirviera.
Direcciones del DoD incluidas en el entorno de CI
- Entre las variables expuestas también había direcciones IP asignadas al Departamento de Defensa de EE. UU.
SWARM_MASTER_NFS_ADDRESS:55.101.212.23OTEL_ELASTIC_URL:http://55.101.212.21:5601/<snip>CIMIP:55.101.211.213
- No se pudo determinar si esas direcciones se usaban arbitrariamente para servicios internos sin comunicación externa, o si provenían de una relación entre Hanwha y el Departamento de Defensa de EE. UU.
- Hanwha Vision es una empresa de videovigilancia fundada como Samsung Techwin y una subsidiaria de Hanwha Group.
- Entre sus productos pasados figuran el obús autopropulsado K9 Thunder, el vehículo blindado de reabastecimiento de munición K10, subsistemas del K2 Black Panther y el robot de vigilancia SGR-A1.
- El SGR-A1 es un robot de vigilancia armado.
- Es posible que el CI lo proporcionara una organización central de Hanwha y que variables relacionadas se compartieran por requisitos de Hanwha Aerospace o Hanwha Defense USA, pero esto sigue siendo una especulación no confirmada.
Revisión de todo el firmware
- Para confirmar si era un caso aislado por accidente o si había más tokens distintos, se recopilaron firmwares de cámaras disponibles para descarga en el sitio de Hanwha.
- De unas 600 cámaras, se obtuvieron alrededor de 500 firmwares correspondientes a modelos con firmware publicado.
- Con el mismo método se pudo extraer el 62%, y no se pudo determinar por qué falló el resto.
- Hubo 3 firmwares que contenían tokens de GitHub, y los 3 incluían el mismo token.
Reporte y respuesta
- Se envió al correo público de reporte de seguridad de Hanwha la información mínima necesaria para identificar la ubicación del token.
- Hanwha respondió en menos de 12 horas tras el reporte y revocó ese token.
- Incluir un token de GitHub en el firmware fue un error, pero la recepción del reporte y la remediación fueron muy rápidas.
1 comentarios
Opiniones en Hacker News
Estoy buscando cámaras IP white-label o productos casi plug-and-play cuyo fabricante dé soporte, pero que permitan eliminar el rootfs si hace falta.
Antes solo había kits de desarrollo caros que ni siquiera tenían carcasa, pero ahora parece que hay opciones como GoodCam.
Las cámaras ONVIF son compatibles con la mayoría de los grabadores de video en red (NVR), y también hay varios NVR open source.
Si no expones al exterior cámaras PoE baratas, la seguridad del firmware del fabricante importa menos, pero hay que configurar las VLAN y la separación de redes con muchísimo cuidado.
La estabilidad es parecida a la de Apple HomeKit, o sea, no es particularmente buena.
Actualicé dos Sonoff Slim Gen2 sin problemas.
Stránka nenalezenayThere's been a glitch....Me parece que el problema mayor es que el firmware trae incrustadas direcciones IP del Departamento de Defensa de EE. UU., y siento que habría que evitar los productos de seguridad hechos en Corea.
Muchos proveedores usan valores predeterminados peligrosos, seguridad rota y valores hardcodeados.
Aunque la seguridad no sea la máxima prioridad, al menos hacen falta revisiones básicas como detectar credenciales hardcodeadas.
Lo mínimo es poner las cámaras en una VLAN separada y bloquear por completo el acceso a internet desde esa VLAN.
Hace tiempo revisé muchos dongles OBD-II y vi que se enviaban con la misma dirección MAC; como resultado, se podía acceder a toda la información de varios sitios web.
Este tipo de problemas sigue apareciendo aunque uno quiera evitarlos.
Si el sitio web usaba la dirección MAC proporcionada por el cliente como mecanismo de autenticación, es el típico fracaso de seguridad IoT.
Mejor sería quitar seguridad del nombre del producto y llamarla simplemente cámara.
Me molesta que este blog use mal el ícono de enlace externo.
a[href*="://"]::afterasume que los enlaces internos son rutas relativas comohref="/about", pero este sitio usa URL absolutas también en los enlaces de navegación, como[https://hhh.hn/about](https://hhh.hn/about), así que todos los enlaces reciben el ícono.Se puede resolver excluyendo los enlaces que empiezan con la dirección del sitio:
a[href*="://"]:not([href^="https://hhh.hn"])::afterUna luz ambiental de interior que compré hace poco no se podía controlar sin su app dedicada.
Descargué el APK de Google Store y lo analicé; tenía prácticamente expuestas tal cual claves de API del backend y de Shopify, entre otras, aunque todavía no he usado eso para hacer nada.
Un desarrollador que se preocupe por la seguridad usaría App Attest o la función equivalente de Google Store.
Dicho eso, por experiencia asesorando tiendas Shopify, la calidad del código que entregan consultores o diseñadores baratos suele ser desastrosa, así que no sorprende.
Había una compañía que protegía a investigadores frente a consecuencias legales, pero no recuerdo el nombre.
Por culpa de los LLM, la ofuscación de código quedó prácticamente inutilizada.
La ofuscación solo servía como obstáculo al volver tedioso el trabajo, pero a la IA no le molesta ese esfuerzo.
Los organismos estatales o grupos criminales de hackers están más que dispuestos a asumir ese esfuerzo.
He visto sistemas de este tipo en una feria de la industria de defensa de EE. UU., así que es muy probable que realmente se estén usando en algún lugar.