← Últimos artículos
💬 NLP

Detecting Ladder Logic Bombs in IEC 61131-3 PLC Programs using ESBMC-PLC+: A Formal Verification Approach with Trigger Synthesis

Este artículo presenta ESBMC-LLB, un marco de verificación formal que extiende ESBMC-PLC+ para detectar Bombas de Lógica de Escalera en programas de PLC IEC 61131-3 mediante la exposición de la lógica oculta de los bloques de función y la síntesis de disparadores, logrando tasas de detección casi perfectas y robustez contra disparadores adaptativos en conjuntos de datos públicos donde los métodos existentes fallan.

Autores originales: Pierre Dantas, Lucas Cordeiro, Waldir Junior

Publicado 2026-07-10
📖 6 min de lectura🧠 Análisis profundo

Autores originales: Pierre Dantas, Lucas Cordeiro, Waldir Junior

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

Imagina un Controlador Lógico Programable (PLC) como el cerebro de una fábrica, ejecutando constantemente un bucle: observa los sensores, toma una decisión, mueve una máquina y luego comienza de nuevo en una fracción de segundo. Ahora, imagina a un hacker astuto escondiendo una "bomba lógica" dentro de este cerebro. Esta bomba es como un dragón durmiente; no hace nada mientras la fábrica funciona normalmente, pero en el momento en que ocurre una condición específica y oculta (como que un contador llegue a un cierto número), se despierta y causa el caos: ya sea congelando la máquina, mintiendo sobre las lecturas de los sensores o haciendo que una válvula se abra cuando debería permanecer cerrada.

Durante mucho tiempo, las herramientas utilizadas para revisar estos cerebros de fábrica tenían un punto ciego. Observaban el código principal pero ignoraban los "bloques de funciones" —que son como pequeñas subrutinas o miniprogramas dentro del código principal—. El artículo explica que los dragones durmientes (las bombas) se escondían dentro de estos bloques de funciones ignorados. Debido a que las herramientas antiguas descartaban estos bloques de su vista, el código malicioso y el código seguro parecían exactamente iguales para el revisor. Era como intentar encontrar a un espía en una multitud mirando solo los rostros de las personas, mientras el espía se escondía dentro de un abrigo al que el revisor ni siquiera miraba.

La Gran Solución: Abrir el Abrigo
Los autores, Pierre Dantas, Lucas Cordeiro y Waldir Junior, construyeron un nuevo método llamado ESBMC-LLB. Su truco principal fue simple pero poderoso: hicieron que el revisor mirara dentro de los bloques de funciones. Añadieron una "capa de traducción" que toma el código oculto dentro de estos bloques y lo despliega de forma plana para que el revisor pueda verlo.

Una vez que el código es visible, utilizan dos trucos ingeniosos para atrapar la bomba:

  1. El Cronómetro (Scan-Watchdog): Si la bomba intenta congelar la máquina haciendo que el programa entre en un bucle infinito, el revisor actúa como un árbitro estricto con un cronómetro. Dice: "Tienes 100 pasos para terminar esta tarea. ¡Si te pasas, estás fuera!". Si la bomba intenta buclear para siempre, el revisor la atrapa de inmediato.
  2. El Probador de Cables (Output Wiring): Si la bomba intenta mentir sobre un sensor o forzar el movimiento de una máquina, el revisor conecta los cables del código oculto con el sistema principal. Si el código oculto intenta enviar una "mentira" (como decirle a una válvula que se abra cuando no debería), el revisor ve cómo rompe las reglas de seguridad.

El Resultado Mágico: Encontrar el "Código Secreto"
Aquí está la parte más genial. Cuando el revisor encuentra una bomba, no se limita a decir "¡Error!". En realidad, escupe el disparador exacto. Es como si el revisor dijera: "Encontré al dragón, y aquí está la contraseña secreta que lo despierta: 'Si el contador llega a 12'". Esto se llama "síntesis de disparadores" (trigger synthesis).

¿Qué tan bien funcionó?
El equipo probó su método en varios conjuntos de datos y los resultados fueron impresionantes, pero con algunas limitaciones importantes:

  • La Prueba Pública: En un famoso conjunto de datos de 60 programas (30 seguros, 30 con bombas), su método encontró todos los 30 de las bombas. Capturó cada una de ellas y encontró el disparador secreto de cada una. También demostró que los 29 programas seguros eran realmente seguros. Un programa seguro era tan complejo que el revisor no pudo estar 100% seguro (dijo "no lo sé" en lugar de "seguro"), pero no acusó falsamente a dicho programa.
  • La Prueba del Hacker "Inteligente": Intentaron engañar a su sistema escondiendo el disparador en acertijos matemáticos (como usar un cálculo complejo en lugar de un número simple). Las herramientas antiguas que solo buscan patrones pasaron por alto estos trucos. Sin embargo, ESBMC-LLB entendió el significado de la matemática y detectó todos los 5 de estas versiones trucadas.
  • La Prueba de Gran Escala: Generaron 310 programas (155 seguros, 155 con bombas) para probar la velocidad. El sistema detectó el 100% de las bombas en un promedio de 70 milisegundos (¡eso es más rápido que un parpadeo!).
  • La Prueba de la Planta de Agua Real: Probaron esto en una simulación real de una planta de tratamiento de agua (el corpus SWaT).
    • En la versión más antigua de los datos (con disparadores de matemáticas simples), encontraron 149 de 150 bombas (99%) con cero falsas alarmas.
    • El Límite: Cuando probaron una versión más nueva con matemáticas no lineales muy complejas (como multiplicar un número por sí mismo repetidamente), el sistema se quedó trabado. La matemática era demasiado difícil para que el revisor la resolviera a tiempo, y la detección cayó al 49%. El artículo es muy claro en esto: su método es excelente para la lógica estándar y la matemática simple, pero choca contra un muro con la matemática no lineal compleja; en esos casos específicos, un tipo diferente de herramienta (un detector de triaje CFG) sigue siendo mejor.

Lo que No Reclaman
Los autores son muy honestos sobre lo que su herramienta no puede hacer. Establecen explícitamente que si una bomba está diseñada para terminar su tarea rápidamente (sin buclear infinitamente) y no rompe ninguna regla de seguridad específica que le indicaron al revisor, la herramienta podría pasarla por alto. No es una varita mágica que encuentra todo lo malo posible; encuentra aquellas que congelan el sistema o rompen las reglas de seguridad que ellos definieron.

La Conclusión
Este artículo muestra que, simplemente "abriendo el abrigo" para mirar dentro de los bloques de funciones y utilizando un revisor inteligente que entiende el significado del código, podemos atrapar bombas industriales astutas que antes se escondían a plena vista. Encuentra las bombas, nos dice exactamente cómo activarlas (para que podamos detenerlas) y demuestra que el resto del sistema es seguro, a menos que la matemática se vuelva demasiado loca, en cuyo caso necesitamos un tipo de detective diferente. Los autores presentan esto como una herramienta poderosa que trabaja junto a los métodos existentes, no como una que lo reemplaza todo.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →