Detecting Ladder Logic Bombs in IEC 61131-3 PLC Programs using ESBMC-PLC+: A Formal Verification Approach with Trigger Synthesis
Dit artikel presenteert ESBMC-LLB, een formeel verificatieframework dat ESBMC-PLC+ uitbreidt om Ladder Logic Bombs in IEC 61131-3 PLC-programma's te detecteren door verborgen function-block-logica bloot te leggen en triggers te synthetiseren, waarbij bijna perfecte detectiepercentages en robuustheid tegen adaptieve triggers worden bereikt op publieke datasets waar bestaande methoden falen.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je een Programmable Logic Controller (PLC) voor als het brein van een fabriek, dat constant een lus uitvoert: het kijkt naar sensoren, neemt een beslissing, beweegt een machine en begint dan binnen een fractie van een seconde opnieuw. Stel je nu voor dat een sluwe hacker een "logic bomb" (logische bom) verstopt in dit brein. Deze bom is als een slapende draak; hij doet niets zolang de fabriek normaal draait, maar op het moment dat een specifieke, verborgen conditie optreedt (zoals een teller die een bepa certain getal bereikt), wordt hij wakker en veroorzaakt hij chaos—of het nu de machine bevriest, liegt over sensorwaarden, of een klep laat openen terwijl deze dicht moet blijven.
Lange tijd hadden de tools die deze fabrieksbreinen controleerden een blinde vlek. Ze keken naar de hoofdcode, maar negeerden de "function blocks" (functieblokken)—die zijn als kleine subroutines of mini-programma's binnen de hoofdcode. Het artikel legt uit dat de slapende draken (de bommen) verborgen zaten binnen deze genegeerde functieblokken. Omdat de oude tools deze blokken uit hun gezichtsveld lieten vallen, zagen de kwaadaardige code en de veilige code er voor de controleur exact hetzelfde uit. Het was alsof je probeert een spion in een menigte te vinden door alleen naar de gezichten van de mensen te kijken, terwijl de spion zich verstopte in een jas waar de controleur niet eens naar keek.
De Grote Fix: De Jas Openen
De auteurs, Pierre Dantas, Lucas Cordeiro en Waldir Junior, hebben een nieuwe methode gebouwd genaamd ESBMC-LLB. Hun belangrijkste truc was simpel maar krachtig: ze zorgden ervoor dat de controleur ín de functieblokken keek. Ze voegden een "translatielaag" toe die de verborgen code binnen deze blokken neemt en deze plat legt, zodat de controleur het kan zien.
Zodra de code zichtbaar is, gebruiken ze twee slimme trucs om de bom te vangen:
- De Stopwatch (Scan-Watchdog): Als de bom probeert de machine te bevriezen door het programma in een eindeloze lus te laten draaien, gedraagt de controleur zich als een strenge scheidsrechter met een stopwatch. Het zegt: "Je hebt 100 stappen om deze taak te voltooien. Als je eroverheen gaat, lig je eruit!" Als de bom probeert eeuwig te loopen, vangt de controleur dit onmiddellijk op.
- De Draadtester (Output Wiring): Als de bom probeert te liegen over een sensor of een machine dwingt te bewegen, verbindt de controleur de draden van de verborgen code met het hoofdsysteem. Als de verborgen code probeert te "liegen" (zoals een klep vertellen te openen wanneer dat niet mag), ziet de controleur dat dit de veiligheidsregels overtreedt.
Het Magische Resultaat: De "Geheime Code" Vinden
Hier is het coolste deel. Wanneer de controleur een bom vindt, zegt hij niet alleen "Error!" Het geeft zelfs de exacte trigger uit. Het is alsof de controleur zegt: "Ik heb de draak gevonden, en hier is het geheime wachtwoord dat hem wakker maakt: 'Als de teller 12 bereikt'." Dit wordt "trigger synthesis" genoemd.
Hoe Goed Werkte het?
Het team heeft hun methode getest op verschillende datasets, en de resultaten waren indrukwekkend, maar met enkele belangrijke beperkingen:
- De Publieke Test: Op een beroemde dataset van 60 programma's (30 veilig, 30 met bommen) vond hun methode alle 30 bommen. Het ving elke enkele bom en vond de geheime trigger voor elk geval. Het bewees ook dat de 29 veilige programma's echt veilig waren. Eén veilig programma was zo complex dat de controleur er niet 100% zeker van kon zijn (het zei "ik weet het niet" in plaats van "veilig"), maar het beschuldigde het programma niet onterecht.
- De "Slimme" Hacker Test: Ze probeerden hun systeem te misleiden door de trigger te verbergen in wiskundige puzzels (zoals het gebruiken van een complexe berekening in plaats van een simpel getal). Oude tools die alleen naar patronen zoeken, misten deze trucjes. ESBMC-LLB begreep echter de betekenis van de wiskunde en ving alle 5 van deze verraderlijke versies.
- De Grote Schaal Test: Ze genereerden 310 programma's (155 veilig, 155 met bommen) om de snelheid te testen. Het systeem ving 100% van de bommen in een gemiddelde van 70 milliseconden (dat is sneller dan een knipoog!).
- De Real-World Waterplant Test: Ze testten dit op een echte simulatie van een waterzuiveringsinstallatie (de SWaT corpus).
- Op de oudere versie van de data (met eenvoudige wiskundige triggers) vonden ze 149 van de 150 bommen (99%) met nul valse alarmen.
- De Limiet: Toen ze een nieuwere versie testten met zeer complexe, niet-lineaire wiskunde (zoals een getal herhaaldelijk met zichzelf vermenigvuldigen), liep het systeem vast. De wiskunde was te moeilijk voor de controleur om binnen de tijd op te lossen, en de detectie daalde naar 49%. Het artikel is hier heel duidelijk over: hun methode is geweldig voor standaard logica en eenvoudige wiskunde, maar loopt tegen een muur aan bij complexe, niet-lineaire wiskunde. In die specifieke gevallen is een ander type tool (een CFG-triage detector) nog steeds beter.
Wat Ze Niet Beclaimen
De auteurs zijn zeer eerlijk over wat hun tool niet kan. Ze geven expliciet aan dat als een bom is ontworpen om zijn taak snel te voltooien (zonder eeuwig te loopen) en geen specifieke veiligheidsregel overtreedt waar de controleur naar moet kijken, de tool het zou kunnen missen. Het is geen toverstaf die elke mogelijke slechte gebeurtenis vindt; het vindt de boel die ofwel het systeem bevriest of de veiligheidsregels overtreedt die zij hebben gedefinieerd.
De Kern van het Verhaal
Dit artikel laat zien dat door simpelweg "de jas te openen" om in de functieblokken te kijken en een slimme controleur te gebruiken die de betekenis van de code begrijpt, we sluwe industriële bommen kunnen vangen die voorheen onopgemerkt bleven. Het vindt de bommen, vertelt ons precies hoe we ze kunnen triggeren (zodat we ze kunnen stoppen), en bewijst dat de rest van het systeem veilig is—tenzij de wiskunde te extreem wordt, in welk geval we een ander soort detective nodig hebben. De auteurs presenteren dit als een krachtig nieuw hulpmiddel dat naast bestaande methoden werkt, en niet als een vervanging voor alles.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.