De ontwerpers gaan voor 'cover your ass' en 'obscuriteit'. Het zijn vaak oudere systemen (want in theorie is dat 'bewezen' stabiel) gebaseerd op oude OS/2 of Windows versies, op hardware met weinig bescherming. De software zelf is behalve een brak OS ook vaak wat matig; de beveiliging komt neer op het equivalent van een paar if-statements in de code, en cryptografische ondertekening van de hardware onderdelen. Vaak geen ASLR, geen sandboxing, geen pointer authentication of control flow guarding.
Als je ergens een I/O poort kan vinden waar je bij kan ben je in 99% van de gevallen binnen, zij het via DMA (bijv. als je de USB controller via de USB poort kan kraken - nog voor dat je bij het OS en de USB driver komt) of juist het OS en de drivers pakt bij bijvoorbeeld netwerk of USB packets - zat overflow en logic errors waarmee je een automaat kan overnemen.
Sommige voorbeelden zijn wel heel triest; zo waren er automaten die op Flash draaien in een soort van kiosk-mode browser op windows. De 'bescherming' was dat je in theorie niet uit de browser kan. Probleem is dat er een help functie in zat, die een optie voor een context menu had, daar kan je de flash settings mee openen, en in de flash settings kan je een file browser openen. In de file browser kan je arbitraire binaries starten, en om dat ze dachten dat het een goed plan was om dat als SYSTEM te draaien heb je feitelijk het hele systeem onder je controle. En door dat er een barcode scanner op zat kan je daarna relatief snel met een telefoon, tablet of simpelweg een geprint A4'tje tekst invoeren (die scanners zijn in de meest basale configuratie slechts als HID device of PS/2 keyboard aangesloten op het OS).
Afhankelijk van wat je wil doen heb je dan een set opties:
- remote control van de cassettes
- remote control van de happy flow (kaart er in, pin er in, praten met de bank)
- kaartlezer / entry uitlezen
- extra functionaliteit toevoegen zodat iemand lokaal via de hardware knoppen controle heeft over de automaat
Elke keer als er een automaat, billboard of ander publiek systeem opgezet wordt en men denkt goedkoop af te zijn door gewoon een soort van PC met desktop software en randapparatuur in een facade te drukken heb je eigenlijk al toegeven het inzicht niet te hebben om het goed te doen. Zodra je een desktop-achtige setup met desktop-achtige input aan de buitenkant toegankelijk vraagt is het een kwestie van tijd tot je compleet overgenomen wordt. En zo'n setup is niet eens goedkoper dan een goede embedded oplossing, slechts toegankelijker voor aanbestedingsprocedures en detacheringsbedrijven die zelf al in een vendor lock-in zitten (bijv. bij Microsoft of Oracle).
Je hoeft niet alles van nul zelf te bouwen, maar alles bij een generic vendor ophalen en 'hopen dat het werkt' levert meer problemen dan duurzame oplossingen op.
[Reactie gewijzigd door johnkeates op 23 juli 2024 06:06]