Home
Untersuchung von Angriffsmöglichkeiten auf Feldgeräte in
Contents
1. user opt eldk3 1 ppc_8xx usr src linux gt make TOM850L_config user opt eldk3 1 ppc_8xx usr src linux gt export ARCH ppc user opt eldk3 1 ppc_8xx usr src linux gt make menuconfig user opt eldk3 1 ppc_8xx usr src linux gt make dep user opt eldk3 1 ppc_8xx usr src linux gt make ulmage user opt eldk3 1 ppc_8xx usr src linux gt make modules user opt eldk3 1 ppc_8xx usr src linux gt sudo make modules_install INSTALL_MOD_PATH opt eldk3 1 ppc_8xx Abbildung 20 ELDK kernel Das Image opt eldk3 1 ppc_8xx arch ppc boot images ulmage muss nur noch in das Verzeichnis des TFTP Servers opt eldk3 1 ppc_8xx images kopiert werden 9 3 Installation und Konfiguration des Minimoduls Das Minimodul wird werkseitig mit eigener Firmware dem TQMonitor ausgeliefert Diese Firmware ist in ihrer Funktionalit t allerdings sehr beschr nkt Der TQMonitor dient dazu Software als Intel Hexformat oder Motorola Srecord zu laden in den Flash Speicher zu schreiben und auszuf hren das Programm bietet allerdings keinerlei Funktionalit t f r Booten ber Netzwerk oder Skripten Daher wird dringend empfohlen den TQMonitor durch das Open Source Projekt U Boot U Boot dem universal Bootloader zu ersetzen Die Installationsanleitung wurde mit Hilfe des Denx U Boot and Linux Guides von Wolfgang Denk DULG erstellt Dort sind weitergehende Informationen zu diesem Thema zu finden
2. RUN_DEAMON startet den Dienst beim Systemstart OPTION sind Argumente f r den Server Interessant ist hier lediglich der Pfad wo die Kernel Images zu finden sind dies wird mit der Option s angegeben Weitere m gliche Optionen finden sich in der Manpage f r tftpd 59 9 2 3 2 Konfiguration des NFS Servers Der NFS Server wird ber etc exports konfiguriert HOSE elek Iope Se 192 168 2 0 255 255 255 0 av ino Oor _Scmasia Sync Abbildung 18 etc exports Mit diesem Eintrag wird das Rootdateisystem fiir das Subnetz 192 168 2 0 exportiert die Optionen sind auf lesen und schreiben gesetzt rw Die Option no_root_squash muss gesetzt sein so dass root auf dem Zielsystem auch Dateien mit Administratorrechten auf dem Hostsystem ndern kann Dies stellt kein Sicherheitsrisiko f r das Hostsystem dar da der Superuser des Zielsystems nur innerhalb freigegebenen Ordners operieren kann 9 2 3 3 DHCP Server Soll das Zielsystem v llig dynamisch ohne serielle Konsole ber das Netzwerk konfiguriert werden bietet der DHCP Server alle n tigen Informationen an Unter Ubuntu Linux reicht ein Eintrag einer Zone in die Datei etc dhcp dhcpd conf S bner 192 1868 2 0 ven maul 259 255 235 0 option routers 192 168 2 533 option subnet mask 2599299925940 option domain name embedded sys host PLATINE hardware ethernet REI fixed address 192 168 2 1273 option root path Wope dee
3. Critical Se Vere Minor Bugs hy Implementation Language Abbildung 6 Vergleich der Fehler in Ada mit C StZe1995 33 5 Angriffe auf Automatisierungsgerate Je nach Art des Automatisierungssystems existieren unterschiedliche Gefahren und Ziele Es sind verschiedene Angriffsmotivationen und Angreiferklassen die die Sicherheit eines Systems bedrohen Dieses Kapitel f hrt nach den Angriffsmotiven Standards zur Klassifizierung von Angreifern ihren Angriffen und den Angegriffenen Systemen ein 5 1 Angriffsmotivation Je nach Art des Automatisierungssystems existieren f r verschiedene Gruppen unterschiedliche Angriffsmotivationen und Ziele Der Faktor durch Malware ber hmt zu werden spielt anders als in der klassischen IT weniger eine Rolle So genannte Script Kiddies die ohne tief greifende technische Kenntnisse durch einfache Skripts wie seinerzeit der I love you Virus gro en wirtschaftlichen Schaden anrichten existieren in der Automatisierungstechnik bisher gl cklicherweise noch nicht Mehr als der blo e Spa am Anrichten von Schaden und um zweifelhaften Ruhm zu erreichen spielen hier handfeste wirtschaftliche Motive eine Rolle Angriffe auf Automatisierungsanlagen k nnen erhebliche finanzielle Sch den nach sich ziehen wenn dadurch Menschen die Umwelt oder andere Anlagen besch digt werden Ein Ziel das sich daraus ergibt ist Sabotage Der Urheber kann aber im Gegensatz zu einfacher Sabotage durch physikalisch
4. BUG auskommentiert ist wird mit Debuginformationen bersetzt ist Gr e des Treibers 1 3 MB was f r eine Ramdisk zu gro ist DEBUG y ifndef KERNELDIR endif KERNELDIR opt eldk3 1 ppc_8xx usr src linux Abbildung 48 Ocan Makefile Mit dem Befehl make clean amp amp make ARCH ppc wird der Treiber bersetzt 70 Die Installation insbesondere auf einer Ramdisk ist problematischer da direkt im Ramdisk Image einige Werkzeuge fehlen Au erdem ist es nicht m glich das Root Dateisystem der Ramdisk ber die gebootete Ramdisk selbst dauerhaft zu ndern Der einfachste Weg ist es das Embedded System ber ein Netzwerk mit demselben Kernel zu booten der auch f r die Stand Alone Installation mit Ramdisk verwendet wird Danach kann per Telnet oder mit der seriellen Konsole make install auf dem Embedded System ausgef hrt werden make install legt das Kernelmodule in SNFS_ROOT 1lib modules SKERNELVERSION misc und die Userspace Tools in usr local bin Mit dem Befehl ocan_load wird ber insmod das Modul ocan geladen und dynamisch Device Nodes in dev erstellt root MiniLinux usr src ocan gt make install root MiniLinux gt ocan_load type 8 8 irq 8 8 base 1 2 Abbildung 49 Ocan installieren und laden Die installierten Dateien m ssen nun auf ein Ramdisk Image gebracht werden Das Ramdisk Image wird wie in Abbil
5. Eine Runtimeumgebung ist eine Programmbibliothek die dem Programmierer viele Aufgaben abnimmt Gegen diese Bibliothek kann dynamisch gelinkt werden wenn sie auf dem Zielsystem von mehreren Programmen benutzt wird oder statisch in das Programm gelinkt werden wenn es exklusiv auf dem Prozessor l uft Beispiele f r Programme die in einer Runtimeumgebung ausgef hrt werden sind Applikationen auf einem Mobiltelefon in Java Die Java Runtime ist fest auf dem Mobiltelefon installiert und die Benutzerprogramme benutzen die Funktionalit t der Runtime diese Technik spart erheblich Speicheplatz ein Je nach Bedarf kann eine Runtime um weitere Funktionen erweitert werden Eine Runtime bernimmt oft auch Aufgaben eines 24 Betriebssystems wie Speicherverwaltung oder Echtzeit Scheduling eine bekannte Runtimebibliothek fiir Echtzeitanwendungen ist Ada Jedoch nicht immer ersetzt eine Runtime ein Betriebssystem 3 1 3 Betriebsystem Unter einem Betriebssystem versteht man eine Software die die Hardware abstrahiert und vordefinierte Schnittstellen zum Zugriff auf die Hardware bereitstellt Es bietet weiterhin M glichkeiten zur Prozesskommunikation Prozessscheduling und bernimmt die Speicherverwaltung Die Abstraktion der Hardware bedeutet nicht nur dass ein Programm nicht mehr direkt auf die Hardware zugreifen kann Jeder Prozess hat seinen eigenen Speicheradressraum Prozesse auf einem Betriebsystem k nnen ebenfalls ber Runtimebibliotheken m
6. sind f r den Kernel reserviert Dieses Vorgehen ist sehr effizient auch wenn kein NX Bit auf der Zielarchitektur existiert der Nachteil ist das nur der halbe Adressraum zur Verf gung steht f r Feldger te ist dies aber irrelevant da hier meist keine 3 GB Speicher ben tigt werden 2001 wurde au erdem ASLR Address Space Layout Randomization eingef hrt Diese Technik nimmt zuf llige Adressen f r den Anfang des Stacks und des Heaps beim Start eines Programms dadurch wird es f r Angreifer extrem schwierig R cksprungadressen zu erraten und diese auf dem Stack abzulegen wikiPaX PAX 51 8 1 3 Exec Shield fur Linux Exec Shield bietet Schutz gegen Stack und Heapbasierte Buffer Overflow Angriffe und andere Arten von Exploits die darauf basieren Speicherstrukturen mit ausf hrbarem Code zu berschreiben und sp ter dorthin zu springen ExecShield arbeitet mit der Eigenschaft des Linux Kernels das Mapping der ausf hrbaren Seiten im virtuellen Speicher zu verfolgen Wiederum wird hier eine maximale Speicheradresse des ausf hrbaren Codes verwendet das so genannte exec limit Der Scheduler benutzt bereits dieses exec limit bei jedem Context Switch um das Programmcode Segment zu aktualisieren Da jeder Prozess ein anderes exec limit besitzt muss der Scheduler das exec limit f r jeden Prozess aktualisieren Der Kernel h lt die Code Segment Beschreibungen in einem Cache so dass der Overhead de
7. MON gt sethwi TQOM860LCBOA3SR50 202 10134873 00D093001234 4 Hardware information written to 4001FFCO MON gt Abbildung 35 TQMonitor Hardwareinformationen wiederherstellen 9 3 3 Umgang mit U Boot 9 3 3 1 Die Kommandozeile U Boot bietet einige elementare Befehle zur Administration des Embedded Systems Zu jedem Kommando gibt es eine kurze Beschreibung die mit help lt Kommando gt eingesehen werden kann help ohne weiteres Argument gibt eine Liste aller verf gbarer Befehle aus Das Verhalten wird ber Umgebungsvariablen gesteuert Wichtig f r das Laden von Images in das Flash Rom sind folgende Befehle Laden einer Datei ins RAM Als Zieladresse bieten sich Adressen ber 0x100000 an die untere Adressbereich wird von U Boot belegt gt loadb lt Zieladresse gt Abbildung 36 U Boot loadb L schen des Flashspeichers gt erase lt Startadresse gt lt Endadresse gt Abbildung 37 U Boot erase Kopieren vom RAM ins Flash gt cp b lt Quelladresse gt lt Zeiladresse gt lt Anzahl von Bytes gt Abbildung 38 U Boot cp Achtung hier unterscheidet sich U Boot von der im DULG beschriebenen Vorgehen Es muss das Suffix b angegeben werden da sonst Worte und nicht Bytes kopiert werden was zu Fehler wie copy outside of available ROM oder Flash not erased f hrt 65 9 3 3 2 Umgebungsvariablen Alle gesetzten Variablen k nnen mit prin
8. Universitat Stuttgart A Institut fur Automatisierungs und Softwaretechnik Prof Dr Ing Dr h c P G hner ww 15 12 2006 Studienarbeit Thomas Ruschival 2105 SA Untersuchung von Angriffs m glichkeiten auf Feldger te von Automatisierungssystemen Betreuer Prof Dr Ing Dr h c Peter G hner Prof Dr Ing Vicente Lucena Dipl Ing Felix Gutbrodt Dipl Ing Thomas Stiedl Inhaltsverzeichnis Abbildunssverzeichnis ua u aaa eh iii Tabellenverzeichns 05a v Abk rzungsverzeichniS sesssesoosseesoesocesessoesoossosssesoossosssessossosssessossocssessossoossossoesoossosssessossosssese vi Begriffsyerzeichns EE Viii PUS ALTO TE 9 VaT n i TU OEE EE S AAEE EE E suanacesssenstesssheassensise 10 Einleitung iisssisssssssstesessosersesr srsti eebe eebe Eere eieae 11 1 Beetle E EE EET OS OL T EIEEE SEN OAEI A 12 1 1 Definition von Safety und eeinty aaa EI 12 1 2 E EE ERT 13 1 2 1 Produktautomatisierung und Anlagenautomatsterung 13 1 2 2 Komponenten von Automatisierungssystemen cccceesseeeteceseeeeeeeeeeeseeees 13 1 23 Miktopro2essoren EE 14 124 e BEE 15 1 2 5 Mikrocontroller er HERR 15 2 Hardware in Automatisierungssystemen s essossessossensnssessnssensnsenssnsennssnenssssennsssennsssesssnnenne 17 2 1 Programmspeichertechnologien nasse sales 17 2 1212 Statische speicher ab aa ea 18 2 2 Hardwareschnittstellen Sasse ee fies 20 2 2 1 SPl Serial Peripheralnteffare nenn aeg nn 20 2
9. ACHTUNG Bei Fehlerhafte Installation kann der Firmware kann das Minimodul unbrauchbar gemacht werden 9 3 1 Universaler Bootloader U Boot Im Folgenden wird beschrieben wie U Boot auf dem Hostrechner kompiliert wird und in das Flash ROM des Minimoduls installiert wird 9 3 1 1 Kompilieren von U Boot Beim Kompilieren von U Boot Version 1 1 4 traten Probleme auf die Makefile f r Beispieldateien enth lt eine nicht erf llte Abh ngigkeit Das Problem l sst sich durch das Erstellen leerer Dateien mit dem Programm touch l sen 61 user opt eldk3 1 ppc_8xx usr src u boot gt touch hello_world srec timer srec sched srec hello_world bin timer bin sched bin Abbildung 21 Makefile workaround Um die Quellencode Dateien fiir das Board zu konfigurieren existieren spezielle Maketargets In diesem Beispielfall ist dies TOM850L_config user opt eldk3 1 ppc_8xx usr src u boot gt make TOM850L_config Abbildung 22 U Boot Konfiguration Danach kann das Paket kompiliert werden Dabei ist darauf zu achten dass sich die PPC Crosscompiler im Pfad befinden siehe Installation des ELDK user opt eldk3 1 ppc_8xx usr src u boot gt make all Abbildung 23 U Boot kompilieren 9 3 2 Installation des Bootloaders im ROM 9 3 2 1 Auslesen der Hardwareinformationen Fir das erfolgreiche Einrichten der Software sind Seriennummer und MAC Adresse des Ethernetcontrollers erforderlic
10. dadurch eine u erst verlockende Motivation f r Betrugsversuche ergibt m ssen Systeme die Anforderungen der FIPS 1 Level 4 erf llen Schon Anfang der 90er Jahre wurden erste sichere Mikrocontroller von Herstellern vertrieben Beispiele f r Chips die soweit als sicher gelten sind der DS5002FP und der Nachfolger DS5240 der Firma Dallas Semiconductors Viele gro e Hersteller bieten heute sichere Mikrocontroller zu relativ geringem Preis an Im Folgenden sollen nun die verschiedenen Schutzmechanismen eines solchen als sicher geltenden Chips erl utert werden Beide Mikrocontroller sind kompatibel zur 8051 Familie der Firma Intel Es sind 8 Bit Rechner der klassischen Harvard Architektur mit getrennten 16 Bit Adressr umen f r Daten und Programmspeicher beim DS5240 steht ein erweiterter Adressraum bis zu 8 MB externen RAM zur Verf gung F r den Anschluss von nicht sicherheitskritischer Peripherie besitzt der Chip vier bidirektionale 8 Bit Ports f r den Speicherbus ist ein separates Interface vorgesehen Interessant sind die Schl sselspeicher des Controllers Dabei handelt es sich um 64 Bit SRAM Zellen die von einer externen Batterie mit Spannung versorgt werden m ssen SRAM ben tig allerdings so wenig Strom dass eine kleine Lithium Batterie den Speicher f r 10 Jahre mit dem ben tigten Strom versorgen kann Auch der externe Programmspeicher ist als SRAM ausgef hrt und kann innerhalb von 100ns gel scht werden Die Prozessoren verf gen
11. int a 1 b 7 retval 0 retval funcl a b Seas Hacke 50 val Sel Na Cretval re amp cval s return retval Funktion mit Bufferoverflow diate Zuel sume parl ly tog joeuez_ ni Abr eeval ile Shai owie LZ gt zweiter Funktionsaufruf notva icine 2 pari il jose iL 2 Lesen eines Eingabestrings in den Puffer die Lang E imak laye iblevsucjenebucie i x7 gets buf return retval_l Normale Funktion zur Demonstration des Anlegen eines Stackframes HIME MEZ ame Sal 2 ine eege 2 dime wetcyvelll 2p retval parl_2 par2_2 global return retval_2 Abbildung 7 C Code Beispiel Wird ein Eingabestring innerhalb der Grenzen bergeben so wird vom Programm die Zahl 4 als Wert f r retval zur ckgegeben Selbst wenn ein doppelt so langer String eingegeben wird f hrt dies nicht zu einem falschen Wert f r retval oder dem Absturz des Programms da der Compiler einen gro z gigen Stackframe anlegt der mehr Daten als n tig aufnehmen kann dieses Verhalten ist aber nicht f r jeden Compiler garantiert Erst bei einer Eingabel nge von 30 Zeichen wird der Speicher von retval berschrieben das Programm st rzt aber immer noch nicht ab Ab einer L nge von 40 Zeichen wird der gesicherte ebp berschrieben was zu einem Segmentation Fault SIGSEV nach der R ckkehr aus der main Funktion f hrt Im Disassembler wird deutlich was bei einem Funktionsaufruf geschieht 00401050 l
12. r Mikrocontroller bezeichnet Es kommuniziert ber die Standardkommunikationskan le des Systems und kann von au en zum Beispiel ber einen Interrupt gestartet werden Soll also eine neue Version der Software auf das Feldger t geladen werden so wird zun chst die Programmieranforderung an das Ger t gesendet Der Controller f hrt daraufhin den Bootloader aus welches Daten vom Master empf ngt und gem den Anforderungen ein neues Programm oder eine andere Konfiguration in den gew hlten Speicher schreibt Ist der Vorgang beendet beendet sich der Bootloader und veranlasst den Prozessor den neuen Code auszuf hren Dieses 22 Vorgehen hat offensichtlich erhebliche Vorteile gegen ber der direkten Programmierung Neben der Fernwartung erm glicht es auch beliebig komplexe Kommunikationsprotokolle mit Verschl sselung und Authentifizierung Ferner k nnen nach dem erstmaligen beschreiben des Controllers mit dem Ladeprogramm die direkten Schnittstellen JTAG oder SPI abgeschaltet werden wodurch es unm glich wird den Chip direkt auszulesen oder zu berschreiben 23 3 Software in Automatisierungssytemen Dadurch dass Hardware nach optimaler Erf llung der Aufgabe bei geringstm glichen Kosten ausgesucht wird muss die Software noch viel st rker optimiert sein Im gleichen Zuge aber m ssen hohe Anforderungen and die Safety erf llt werden Damit unterscheiden sich die Software und die eingesetzten Programmiertechniken der Automatisierungssy
13. und der Prozess wird mit einem Segmentation Fault SIGSEV beendet Problematisch wird es erst wenn die Rticksprungadresse eing ltige Adresse des Programmcodes ist Dies kann vom Betriebsystem nicht bemerkt werden da es ein zul ssiger Vorgang ist und das Programm f hrt eine zuf llige Codesequenz aus Dieses Verhalten tritt ohne b swilliges Zutun eines Angreifers auf 42 Interessant ist das Einschleusen von fremdem Code ber einen solchen Puffer berlauf auf den Stack Wie beschrieben kann die R cksprungadresse beliebig ver ndert werden Der Puffer kann den Code aufnehmen der ausgef hrt werden soll Allerdings besteht f r einen erfolgreichen Angriff mit fremdem Code eine weitere Reihe von Problemen Erstens muss die Anfangsadresse des Puffers bekannt sein um an die richtige Stelle zu springen Zweitens muss der Angreifer wissen wie viele Bytes er in den Buffer schreiben muss bis dieser alle lokalen Variablen den gesicherten ebp und die R cksprungadresse berschreibt Drittens muss der Puffer gro genug sein um den Code aufzunehmen Der Angreifer wei nicht wo an welcher Adresse auf dem Stack sein Code beginnt um die R cksprungadresse dementsprechend zu ver ndern dass sie auf den Anfang des fremden Programmcodes zeigt Der fremde Code muss au erdem so geschrieben sein dass er mit relativer Adressierung auskommt Der Angriff muss erfolgreich sein ohne den Quellcode zu kennen Der Angreifer kann keine Aussage ber den Functi
14. 0x4 Sesp mov 0x8 Sebp eax mov Seax esp cali 8048493 lt func2 gt mov Seax Oxffffffec ebp lea OxfffffffO Sebp seax mov Seax Tesp Canip 80482ec lt gets plt gt mov Oxffffffec ebp seax mov Oxfffffffc Sebp sedx xor gs 0x14 Sedx Vergleich mit Carnary je 8048491 lt funcl 0x4c gt Korrekter Inhalt call 80482fc lt __stack_chk_fail plt gt Wird bei ver ndretem Carnary erreicht leave mele Abbildung 10 Funktion func1 mit StackGuard 8 3 Fazit zu Softwareschutzmechanismen Es existiert leider kein Schutz der absolut vor Angriffe auf Softwareebene sch tzt Eine Kombination der vorgestellten Methoden ist sinnvoll wenn es die Zielarchitektur zul sst Dadurch wird es f r den Angreifer erheblich erschwert die Security und somit auch die Safety des Systems zu kompromittieren F r die Entwicklung eines sicheren Systems sind regelm ige Code Audits des Entwicklerteams unerl sslich Zus tzlich helfen moderne Compiler mit Warnungen beim bersetzen des Quelltextes Dar ber hinaus sollten Tools die Code automatisch auf Sicherheitsl cken berpr fen wie z B Flawfinder Flaw oder Splint Splint eingesetzt werden um automatisiert Schwachstellen zu finden Diese Tools sind allerdings keine Garantie f r sicheren Code Generell sollte so weit m glich eine sichere Programmiersprache wie Ada eingesetzt werden um zumindest die Schwachstellen der Sprache zu eliminieren F
15. 2 2 JTAG IEEE 1149 1 Standard Test Access Port and Boundary Scan e nassen nase 21 2 2 3 H here Ereegnes EEN 21 A Software in Automatisierungssytemen s scessessoesocssessoesocssessossoosscssoesocesessoesoossoessesoossosse 23 3 1 Pro tammumsebins sosna ana a a i a aa iai 23 IAA Stand Alone ee eene 23 3 1 2 e E EE 23 3133 BSCE HS YS E 24 3 2 Speicherort gansalon EE 25 3 2 1 ELF Executable and Linkable Format 25 3 2 2 Speicherabbild eines Prozessen anne a u 27 3 2 3 Dynamische Speicherverwaltung al een 28 4 Sprachen in der Automatisierungstechnik eeesooesoocssocessecssocesocesooessocessccssocesocesoosssoesssee 31 5 Angriffe auf Automatisierungsger te eessssssossssonsensnnsensnnsensnssnnsnsnensnsnessnsnnssnnnessnssnssnnense 33 Kg ME Ee STO TIVATION EE 33 SE E EE 34 5 3 Klassifizierung von Angreifern ae 35 K DEE E EE 35 6 Security Probleme in Software 000000s0020000000000000000000000002000002000000n0000s00000s00000s000000000000 38 DL B ffer Overflow auf dem Stack nn ea ae anal 38 6 2 Bufferoverflow auf dem Heap ee eier 43 7 Schutz geistigen Eigentums in Embedded Systems ccssccssssscssssscssssscsssccsssssesssssees 45 7 1 Einfache Sch tzvorkehrungen u un ala 45 LH Sichere Mikr conttoller u ehe en Eee catia 47 8 Sicherheitsmassnahmen gegen das Ausf hren von Daten cssssscssssesssssensossennssnennssnenne 49 8 1 Sicherheitsmechanismen moderner Betri
16. 32 Bit Maschinen wird der Stackpointer bei jeder PUSH POP Operation um vier dekrementiert bzw inkrementiert der Prozessor kann nur auf Speicherworte von vier Byte zugreifen das hei t dass eine Variable auf dem Stack immer mindestens vier Byte in Anspruch nimmt F r Jede lokale Variable wird der Stackpointer um vier dekrementiert Hat ein Array eine nicht durch vier teilbare Gr e so muss aufgerundet werden ein Array mit einer Gr e von beispielsweise neun Byte nimmt drei Speicherworte zw lf Byte in Anspruch Vor dem Funktionsaufruf werden die Parameter f r die Funktion auf dem Stack relativ zum Framebasepointer abgelegt 0x4 ebp bedeutet ein positives Displacement von zwei Speicherworten zum Inhalt von Framebasepointer ebp Die Anweisung CALL legt den Instructionpointer eip auf den Stack und springt zur Zieladresse Abbildung 4 illustriert einen typischen Stackframe Die bergabeparameter an eine Funktion haben also ein positives Displacement zum Framebasepointer die lokalen Variablen ein negatives Durch diese Technik mit einem zweiten Zeiger dem Framebasepointer ist es leichter m glich auf variable Parameterzahl beim Funktionsaufruf zu reagieren au erdem kann der Stack so auch vom Programmierer innerhalb der Funktion benutzt werden ohne dass sich das Displacement bei der Referenzierung ndert Die Variablen und Parameter k nnen immer ber das gleiche konstante Displacement vom Framebasepointer aus angesprochen werden Nach
17. Bit Wikipedia org PaX Federal Information Processing Standards Publication 140 1 Security Requirements for Cryptographic Modules Januar 1994 77 SeSk2005 Sergei P Skorobogatov Semi invasive attacks A new approach to hardware security analysis University of Cambridge 2005 UCAM CL TR 630 ISSN 1476 2986 Flaw Flawfinder http www dwheeler com flawfinder Splint Splint http www splint org 78 Erklarung Hiermit versichere ich diese Arbeit selbststandig verfasst und nur die angegebenen Quellen benutzt zu haben Unterschrift Stuttgart den 15 12 2006
18. CD ROMs standardm ig mit noexec In opt eldk3 1 ppc_8xx befindet sich nun ein komplettes Root Dateisystem f r das Embedded System Um dieses als Root Dateisystem ber NFS benutzen zu k nnen m ssen noch die Device Nodes in opt eldk3 1 ppc_8xx dev angelegt werden Dies erfordert Superuserrechte auf dem Hostsystem Der ELDK bietet f r das erstellen der Device Nodes ein 57 Skript ELDK_MAKEDEV Dies muss als root in opt eldk3 1 ppc_8xx ausgef hrt werden und hat keine Optionen user opt eldk3 1 ppc_8xx dev gt sudo cdrom ELDK_MAKEDEV Abbildung 12 Device Nodes erstellen Danach m ssen noch Dateiberechtigungen angepasst werden da manche Werkzeuge des ELDK das SUID Bit ben tigen Dies geschieht mit dem Skript ELDK_FIXOWNER das wiederum in opt eldk3 1 ppc_8xx ausgef hrt werden muss Um die Rechte und Besitzer zu korrigieren und Programme mit SUID Bit korrekt auszuf hren m ssen bin sbin und proc root geh ren user opt eldk3 1 ppc_8xx dev gt sudo cdrom ELDK_FIXOWNER user opt eldk3 1 ppc_8xx gt sudo chown R root root bin user opt eldk3 1 ppc_8xx gt sudo chown R root root sbin user opt eldk3 1 ppc_8xx gt sudo chown R root root proc user opt eldk3 1 ppc_8xx gt sudo chown R root root etc Abbildung 13 Dateirechte anpassen Zudem ist es niitzlich die Dateistruktur des Hostrechners im
19. RAM Dynamic RAM Non Volatile RAM In System Programming Serial Programming Interface Joint Test Action Group Master In Slave Out Master Out Slave In Boundary Scan Descrition Language Executable and Linkable Format Memory Management Unit Translation Lookaside Buffer ASLR ITLB DTLB GNU GCC vii Address Space Layout Randomization Instruction Translation Lookaside Buffer Data Translation Lookaside Buffer Gnu is Not Unix GNU Compiler Collection viii Begriffsverzeichnis Puffer berlauf oder Buffer Overflow OPCodes Master Slave Toolchain Compiler Pr prozessor Linker Stack Heap Es werden mehr Daten als vom Programmierer vorgesehen in einen Speicherbereich geschrieben das f hrt zum berschreiben anderer Daten Elementare Prozessorbefehle aus denen Programe bestehen Moderator einer Kommunikation Instanz die die Kommunikation steuert Kommunikationsteilnehmer meist passiv nimmt nur nach Aufforderung durch den Master an der Kommunikation aktiv teil Werkzeugkette mehrere kleine Werkzeuge die im h ufig in einer festen Reihenfolge hintereinander auf Daten Angewandt werden Beispiel hierf r w re Pr prozessor Compiler Linker Ubersetzungsprogramm das Programme in h heren Programmiersprachen in Maschinencode tibersetzt Parser f r Programmcode der Makros expandiert und Quellcode modifiziert vor dieser kompiliert wird Programm das Objectcodedateien miteinand
20. Ramdisk installiert werden user opt eldk3 1 ppc_8xx usr src busybox gt make amp amp sudo make install PREF IX mnt Abbildung 45 BusyBox kompilieren Sind alle gew nschten nderungen am Dateisystem vorgenommen wird es mit umount entfernt und mit gzip gepackt Danach muss aus der Datei wieder eine Ramdisk erstellt werden da hei t es wird ein Dateiheader mit Name Pr fsummen und anderen Metainformationen dazu erstellt ELDK bietet dazu das Werkzeug mkimage user opt eldk3 1 ppc_8xx images user opt eldk3 1 ppc_8xx images user opt eldk3 1 ppc_8xx images lt Neuer Name gt d ramdisk_image gz gt sudo umount mnt gt gzip v9 ramdisk_image Smkimage T ramdisk gzip a uRamdisk Abbildung 46 ELDK Ramdisk erstellen Dieses Image kann ber die serielle Verbindung an einen freien Speicherplatz im Flash geladen werden Zun chst muss im U Boot das Flash ROM gel scht werden danach wird das Image ins RAM des Embedded Systems geladen und von dort in das Flash ROM geschrieben gt erase 40100000 403FFFFF SE done Erased 24 sectors gt loadb 100000 Ready for binary LETREN E kermit download to 0x00100000 at 115200 bps 69 Back at localhost C Kermit gt send opt eldk3 1 ppc_8xx images uRamdisk home user home user C Kermit gt connect tecal Size 0x0
21. Reihe von Informationen n tig Die grundlegenden Informationen die das System ben tigt um ein Prozessabbild im Speicher zu erstellen sind in der Bin rdatei selbst gespeichert Beispiele f r solche Container mit Metainformationen sind das inzwischen berholte a out COFF oder das heutzutage weit verbreitete ELF Executable and Linkable Format TIS2000 ELF wurde von den Unix System Laboratories USL entwickelt und 1995 in den TIS Tool Interface Standards ver ffentlicht um die Nachteile der Portabilit t von a out abzuschaffen und ein Dateiformat zu entwickeln das alle notwendige Metadaten f r das Ausf hren oder Binden enth lt Es ist das Standardformat unter Sun Solaris GNU Linux BSD und SGI Irix und ein flexibles Dateiformat f r Objektcode Bibliotheken sogenannete Libraries und Ausf hrbare Dateien Executables F r die weitere Betrachtung dieser Arbeit ist nur das Format der Executable von Bedeutung Eine Ausf hrbare Datei enth lt nicht nur den eigenen Maschinencode sondern meistens auch Informationen ber dynamische Bibliotheken die zur Laufzeit geladen werden m ssen Jede ELF Datei beginnt mit dem ELF Header der die Organisation der Bin rdatei beschreibt Darauf folgt bei der Executable der Program Header und meist mehrere so genannte Segmente He die den Programmcode und Daten enthalten Die Position der Segmente und die des Programheaders sind nicht vorgeschrieben nur der ELF Header muss am Dateianf
22. Root Verzeichnis des Zielssystems zu replizieren um beim kompilieren festgelegte Dateipfade benutzen zu k nnen Dies ist insbesondere f r Kernelmodule wichtig user opt eldk3 1 ppc_8xx gt mkdir p opt eldk3 1 ppc_8xx usr user opt eldk3 1 ppe _8xx gt In s usr sre A Zeng Zelteils 2 1 ppe Geesen Abbildung 14 Dateistruktur replizieren Um den Crosscompiler und die Tools zur Erstellung von Programmen auf dem Hostsystem benutzen zu k nnen muss der User vor der Benutzung einige Umgebungsvariablen anpassen Die Variable CROSS_COMPILE gibt das Zielsystem an im erweiterten Pfad sind die Tools f r das Hostsystem zu finden Eine bequeme Variante ist in profile oder bashrc diese Zeilen hinzuzuf gen export CROSS_COMPILE ppc_8xx export PATH SPATH opt eldk3 1 bin opt eldk3 1 usr kin Abbildung 15 Umgebungsvariablen Unbedingt erforderlich ist eine Terminalemulation f r den Hostrechner Im Beispielfall wurde das Paket Kermt unter Linux benutzt f r Microsoft Windows Hostrechner wird Teraterm Teraterm empfohlen Kermit bietet die M glichkeit Konfigurationen f r unterschiedliche Zielhosts abzuspeichern und besitzt einen reichhaltigen Funktionsumfang Beispielkonfiguration f r Kermit zum Verbinden ber das serielle Device Node dev ttyUSBO In Anderen Installationen muss dev ttyUSBO durch das entsprechende 58 Device ersetzt werden meist ist dies
23. ablegt Dazu wird ein passender Funktionsepilog erstellt der den Carnary auf dem Stack gegen ein Original gepr ft Sind die beiden Carnarywerte ungleich so wird das Programm abgebrochen Verschiedene Versionen von StackGuard hatten unterschiedliche Ans tze f r die Art des Carnary Version 2 0 1 legte die Konstante 0x000aff0d die ASCII NUL LF 255 und CR auf den Stack Der Gedanke dabei ist dass die Bibliotheksfunktionen die ber Formatstringattacken 52 angreifbar sind mindestens eines der Zeichen als Terminator erkennen und die Eingabe abbrechen das hei t kein der Angreifer kann diesen Carnary nicht in seinen Eingabestring legen und danach noch ein R cksprungadresse ablegen In fr heren Versionen beruhte der Carnary auf einem Zufallswert Der Zufallswert wird bei jedem Funktionsaufruf neu generiert und im data Segment gesichert Der Angreifer kann den Carnary nicht erraten da er erst zu Laufzeit generiert wird und sich laufend ndert Der Laufzeit Overhead der durch StackGuard entsteht ist minimal Lediglich ein Maschinenbefehl im Prolog und zwei Anweisungen im Epilog 8 2 2 Stackshield StackShield verfolgt eine andere Idee die R cksprungadresse zu validieren Es wird vom Compiler ein zweiter separater Stack in einem andern Speichersegment angelegt Auf diesem Stack wird im Funktionsprolog eine Kopie der Returnadresse abgelegt Beim R cksprung aus der Funktion wird die Adresse auf dem Stack gegen die gesicherte Version
24. auf dem Heap zeigen jp85 Ein berlauf auf dem Heap ist aber dennoch nicht ungef hrlich Wird mehr in einen Block auf dem Heap geschrieben als dieser aufnehmen kann so werden zun chst die Verwaltungsdaten der nachfolgenden Speicherbl cke berschrieben Dadurch wird die Heapstruktur zerst rt die Systembibliothek kann nicht mehr entscheiden ob ein Block frei oder belegt ist oder wo der Block beginnt und wo er endet Dies f hrt fr her oder sp ter zu einem Programmabsturz durch einen Aufruf von free auf einem ung ltigen Speicherblock Bis das Programm aber abst rzt wird es mit fehlerhaften Daten Arbeiten was unkontrolliertes und gef hrliches Programmverhalten hervorruft 45 7 Schutz geistigen Eigentums in Embedded Systems Dieses Kapitel befasst sich mit den M glichkeiten die Daten und den Programmcode direkt aus dem Speicher des Systems auszulesen Der Angreifer hat direkten physikalischen Zugriff auf die Ger te Diese Art von Spionage oder Produktpiraterie ist in Produktautomatisierungs oder Kommunikationssystemen interessant Der Entwickler muss sich vor Augen halten dass der Aufwand ein System zu sch tzen bzw ein System zu kompromittieren immer in Relation zu dem zu sch tzenden Gut stehen muss Security ist ein nicht vernachl ssigbarer Kostenfaktor Der Schutz muss f r das gesamte System bestehen Es darf keine Schwachstellen geben der Angreifer wird diese finden Viele Firmen insbesondere kleinere sind heutzutage imme
25. dev ttyS0 Folgende Eintr ge m ssen in kermrc vorgenommen werden set line dev ttyUSBO set speed 115200 set carrier watch off set handshake none set flow control none robust set file type bin set file name lit Abbildung 16 kermre 9 2 3 Installation einer Netzwerkbootarchitektur Soll das Embedded System ber ein Netzwerk gebootet werden so m ssen alle Informationen von einem Hostrechner bereitgestellt werden Dies geschieht mit den bekannten Verfahren DHCP TFTP und NFS DHCP das Dynamic Host Configuration Protokoll ist in RFC 2131 beschrieben es stellt Informationen ber die Netzwerkarchitektur bereit TFTP das Trivial File Transfer Protocol ist in den RFCs RFC1350 und RFC2347 beschrieben und dient dazu Bootimages des Kernels f r das Embedded System bereitzustellen NFS das Network File System stellt dem Kernel das Root Dateisystem ber ein TCP IP Netzwerk bereit Im vorliegenden Beispielfall wurde NFS Version 3 eingesetzt das in RFC1813 beschrieben wird F r die Installation sind auf Ubuntu Linux sind folgende Pakete erforderlich e nfs common e nfs user server e tftpd hpa e dhcp3 server 9 2 3 1 Konfiguration des TFTP Servers Die Konfiguration des TFTP Servers befindet sich in etc default tftpd hpa und enth lt folgende Informationen RUN_DAEMON yes OPLIONS 1 u root s osc Silelk3 i pac_Cscx images A Abbildung 17 etc default tftpd hpa
26. gepr ft Vom Compiler wird standardm ig eine Array mit 256 Elementen f r die gesicherten R cksprungadressen angelegt die Gr e kann beim kompilieren allerdings eingestellt werden Ist kein Platz mehr im Array zum Beispiel wenn die Rekursionstiefe zu gro ist dann wird keine Kopie abgelegt der Stackpointer dieses Stacks aber dennoch inkrementiert so dass festgestellt werden kann ab wann die R cksprungadressen wieder gepr ft werden sollen StackShield unterst tzt aber auch andere Sicherheitsmechanismen die auf der Aufteilung des Speichers des Prozessimages beruhen So kann sichergestellt werden dass R cksprungadressen immer unterhalb einer maximalen Adressgrenze liegen Da der Stack meist bei der h chsten Adresse beginnt kann somit verhindert werden dass in den Stack gesprungen wird und dort Daten als Programmcode ausgef hrt werden Auch bei StackShield ist der Laufzeit Overhead vernachl ssigbar gering 8 2 3 SSP Stack Smashing Protector fr her Propolice Stackshield und Stackguard sichern lediglich die R cksprungadresse vor einem berschreiben Funktionsparameter bleiben ungesch tzt Das Hauptproblem wenn lediglich mit Carnaries gearbeitet wird besteht darin dass ein Angriff erst bei der R ckkehr aus einer Funktion bemerkt wird die Funktion selbst arbeitet nach dem Angriff allerdings mit falschen Daten Bei IBM wurde von Hioaki Etoh eine Compilertechnik entwickelt die den Framepointer die lokalen variablen die Funktionspa
27. interessant wenn der angegriffene Prozess mit Administratorrechten l uft dies erm glicht das Ausf hren von beliebigen Betriebsystembefehlen mit Administratorrechten Auf Feldger teebene w re zum Beispiel denkbar dass der Angreifer ein Wartungs oder Debugprogramm startet und so beliebige Aktionen durchf hren kann 6 2 Bufferoverflow auf dem Heap Auf dem Heap wird Speicher dynamisch alloziert W hrend der Laufzeit des Programms werden Speicherbereiche f r das Programm von Systembibliotheken reserviert Ein reservierter Speicherbereich auf dem Heap enth lt ebenfalls Verwaltungsdaten wie Informationen ber die Gr e und Zeiger auf angrenzende Bl cke Das Einschleusen von fremden Code ber einen Puffer berlauf auf dem Heap ist wesentlich schwieriger da hier keine Verwaltungsdaten des Programmflusses wie R cksprungadressen und Framepointer in der N he der Daten liegen F r erfolgreiche Angriffe ist eine sehr genaue 44 Kenntnis des Heaplayouts und der verwendeten Bibliotheken erforderlich um Code der dort eingeschleust wurde auch auszuf hren Dies ist m glich wenn der Angreifer die Art der Objekte auf dem Heap kennt Wird mit Funktionszeigern in dynamischen Speicherobjekten gearbeitet wie dies der Fall bei objektorientierten Programmiersprachen ist so kann der Angreifer diese Funktionszeiger so berschreiben dass diese wiederum nicht auf den ausf hrbaren Code der Klasse im text Segment sondern auf den eingeschleusten Code
28. sind mindestens 8 Byte aligned und haben einen Overhead von 8 16 Byte zur Verwaltung Die Komplexit t des Algorithmus ist O 1 DoLe2000 31 4 Sprachen in der Automatisierungstechnik Die am weitesten verbreitete Programmiersprache in der Automatisierungstechnik ist nach wie vor C Der Grund daf r ist der Bekanntheitsgrad unter den Entwicklern und der Toolsupport der Hersteller Das erste was f r einen neuen Chip erscheint ist ein C Compiler da es f r den Hersteller wichtig ist bestehende Programme auf neue Hardware portierbar zu machen au erdem muss nur das Codegenerator Backend der alten Compiler angepasst werden Zu Anfang werden in diesem Teil oft auch nur die Opcodes ge ndert die Optimierung f r den Chip wird erst sp ter in einer zweiten Version durchgef hrt Time to Market ist hier essentiell da kein Kunde Prozessoren kauft f r die keine Compiler existieren Die Verwendung von reinem Assembler geht auch in der Automatisierungstechnik zur ck Assembler wird meist nur noch inline in C Code eingebettet Inline Assembler wird verwendet wenn Hardwareregister direkt angesprochen werden m ssen beispielsweise wenn der Stackpointer ver ndert werden soll oder f r die ersten Schritte des Bootvorgangs F r gro e Programme ist reiner Assembler allerdings viel zu fehleranf llig und zu teuer in der Wartung Die Compilertechnologie ist auch so weit fortgeschritten dass automatisch generierter Code meist schneller ist als handg
29. von Komponenten in Standardrechnern Jedoch sind die verwendeten Bausteine viel mehr unter dem Gesichtspunkt der optimalen L sunge einer speziellen Aufgabe ausgesucht Es k nnen somit kleinere und g nstigere Bauteile verwendet werden Dieses Kapitel geht tiefer auf die Komponenten Speicher und Kommunikation ein 2 1 Programmspeichertechnologien Je nach Verwendungszweck werden in Feldger ten unterschiedliche Speichertechnologien als Programmspeicher eingesetzt Prinzipiell werden ROM Read Only Memory als Programmspeicher eingesetzt da diese Technologie die Daten auch ohne Spannungsversorgung dauerhaft speichert ROM bedeutet allerdings nicht dass der Chip nicht geschrieben werden kann zum Schreiben der Daten ist ein verh ltnism ig hoher Zeit und Energieaufwand n tig so dass es w hrend der Programmausf hrung nicht wahlfrei geschrieben und gelesen werden kann Oft sind auf einem Chip f r verschiedene Speicher angeordnet So wird zum Beispiel bei Atmel AtmegaXX Mikrocontroller Familie die Software in ein Flash ROM geschrieben dem Programmierer steht aber zur Speicherung von Daten die w hrend der Programmausf hrung dauerhaft gespeichert werden sollen ein EEPROM zur Verf gung Die prominentesten ROM Technologien heutzutage sind UV EPROM Mask ROM EEPROM FLASH und Static RAM Flash UV Static EEPROM EPROM EEPROM RAM Lesezeit mittel schnell schnell mittel mittel Schnell ca 50ns ca 5 ns ca 20 ns ca 50ns ca 50 ns ca 1
30. werden dort wird sie mit dem Schl ssel des Firmwaremonitors verschl sselt und im externen SRAM Programmspeicher abgelegt Mit einem speziellen Firmwarekommando wird der Firmwaremonitor deaktiviert nachdem die Software in den Speicher geschrieben ist Das einzige Firmwarekommando das noch zur Verf gung steht dient dem Chipreset das erm glicht den gesamten Inhalt zu l schen und neu zu programmieren Die Grundidee dahinter ist das niemand nicht einmal der Hersteller dazu in der Lage ist den Speicherinhalt zu entschl sseln da der Schl ssel nur im sicheren Bereich der CPU existiert Jedoch ist es m glich mit der Software schreibend auf den Programmspeicher zuzugreifen das hei t die das Programm darf sich selbst ver ndern dies erm glicht einfache Softwareupdates wie oben beschrieben wenn das System im Feld eingesetzt wird Obwohl dieser Mikrocontroller als weitestgehend sicher betrachtet wird stellt Markus Kuhn in MaKu1998 erfolgreiche Angriffe auf die Busverschl sselung des DS5002FP vor Dennoch wird diese Familie von Prozessoren vom Hersteller Dallas Semiconductors Maxim als sicher verkauft DS5240 49 8 Sicherheitsmassnahmen gegen das Ausfuhren von Daten Nachdem im letzten Kapitel detailliert die verschiedenen Angriffsm glichkeiten auf Systeme vorgestellt wurden soll nun auf die Schadens oder Angriffsabwehr eingegangen werden Angriffe mit eingeschleustem Code sind ein schwerwiegendes Security Problem Jedoch wurden im Lauf
31. 0 ns Schreibzeit langsam mittel langsam langsam Schnell ca 10 ms ca 10 ms ca 10ms ca 1 ms ca 10 ns Datensicherheit gt 10 Jahre gt 100 Jahre gt 10Jahre gt 40 Jahre gt 5 Jahre abhangig von Batterie Schreibzyklen 10 10 100 10 10 Kosten mittel niedrig niedrig Hoch Mittel Hoch Tabelle 1 Speichertechnologien SeSk05 18 2 1 1 Statische Speicher Generell kann man zwei unterschiedliche Klassen unterscheiden Zum einem gibt es Chips die sich nur ein einziges Mal schreiben lassen so genannte OPT One Time Programmable Chips und andere die mehrmals beschrieben werden k nnen Eine weitere Unterscheidung l sst sich danach treffen ob die Speicher elektronisch im System geschrieben und gel scht werden k nnen Mask ROM PROM und EPROM sind nicht f r die Programmierung im System geeignet diese Speicherbausteine m ssen mit speziellen Programmierger ten geschrieben und eventuell gel scht werden EEPROM Static RAM und Flash EEPROM lassen sich elektronisch wiederbeschreiben Mask ROM ist die einfachste und billigste Alternative falls kein generischer Mikrocontroller eingesetzt werden soll und die Software nicht aktualisiert werden muss Wird ein ASIC Application Specific Integrated Circuit fiir eine spezielle Anwendung entworfen so kann ein Teil der Chipflache als Speicher ausgelegt werden Die Daten sind die Halbleiterstruktur selbst das Programm wird also fest verdrahtet in den Chip geschrieben
32. 01a5c72 Start Addr 0x00100000 gt cp b 100000 40100000 1A5C72 Copa Omics heya lees gt imls Image at 40100000 Image Name Universal Created 2008 11 22 Image Type Data Size 1727538 Bytes Load Address 00000000 Entry Point 00000000 Verifying Checksum OK Image at 40400000 Image Name 3258326 UNE PowerPC Linux RAMDisk Image Earl 25m 13237826 UNE PowerPC Linux Kernel Image Created 2006 09 27 Image Type Data Size 642526 Bytes Load Address 00000000 Entry Peint 00000000 Verifying Checksum OK 1727602 Bytes der letzte Parameter is die toral Size gzip compressed 1 6 IMs gzip compressed 62725 Es Abbildung 47 U Boot Images laden Auf gleiche Weise kann ein Kernel Image an eine andere Stelle im Flash geschrieben werden Hier in der Beispielkonfiguration wurde der Kernel an die Adresse 0x40400000 geladen 9 4 1 2 Der CAN Bus Treiber Als CAN Bustreiber wurde Allesandro Rubinis ocan Treiber Version 0 92 verwendet der als Quellcode vorliegt ocan Zum Kompilieren f r das Embedded System sind einige Vorkehrungen n tig Zun chst kann der Treiber auf dem Entwicklungsrechner mit dem Crosscompiler bersetzt werden Dazu ist lediglich erforderlich in der Makefile die Variable YK ERN ELDIR auf den Pfad der verwendeten Kernelquellen zu setzen Weiterhin sollte berpr ft werden ob die Variable DE
33. 0860323307206327 RAMDISK driver initialized 16 RAM disks of 4096K size 1024 blocksize TOM8xxLO Found 2 x16 devices at 0x0 in 32 bit mode TOM8xxL0 Found 2 x16 devices at 0x400000 in 32 bit mode Amd Fujitsu Extended Query Table at 0x0040 t teg Cue Cw Calogs 2 cfi_cmdset_0002 Disabling erase suspend program due to code brokenness TOM flash bank 0 Using static image partition definition Creating 7 MTD Be em Eet AMORE 0x00000000 0x00040000 u boot 0x00040000 0x00100000 kernel 0x00100000 0x00200000 user 0x00200000 0x00400000 initrd 0x00400000 0x00600000 cramfs 0x00600000 0x00800000 S 0x00400000 0x00800000 big_fs CPM load tracking RR SReviston 17055 NSIS tint WLP 1 0 ror Nard 0 IP Protocols ICMP UDP TCP IP routing cache hash table of 512 buckets 4Kbytes TCP Hash tables configured established 1024 bind 2048 TES CONE Conmjoleces Greet aelche 192 163 2 127 teil e W192 Lt SE host Minilinux domain nis domain none bootserver 192 168 2 55 rootserver 192 168 2 55 rootpath NET4 Unix domain sockets 1 0 SMP for Linux NET4 0 RAMDISK Compressed image found at block 0 Freeing initrd memory 1687k freed VFS Mounted root ext2 filesystem Freeing unused kernel memory 60k init lade Scarcees Bus ywBex whl 2 2 2006 11 22 03331 0000 meer lag elt BUSyVBO WiloZo2 2006 11 622 083 SUsOOOO T nt Lem Schrett asia acei helo ror a lise Or Jon D s emmsraels z
34. 22 1D Bopl Konfizurtion es 61 Abbildung 23 U Boot kompilieren u 0b 61 Abbildung 24 TQMonitor Hardwareinformation 0sssssssssessnnsnennnnennnennnnnsnnnenn nenn 61 Abbildung 25 TQMonitor Flash l schen nennen 62 Abbildung 26 TQMonitor Datetempfang nennen 62 Abbildung 27 D Boet Upsad nn ea Ka Ba eaten theres 62 Abbildung 28 TQMonitor Download pr fen nenn 62 Abbildung 29 TQMonitor Schreibschutz deaktvieren nenn 63 Abbildung 30 TQMonitor Flash l schen cccecccsccessecsecesecseeeeescecsaeceseeseceeeseecaeceeeseeeeenees 63 Abbildung 31 TQMonitor U Boot laden 0 cece eececsccsseceseeeeeeeescecaeceseeseeeeeseecueeneeneeeensees 63 Abbildung 32 TQMonitor Installation venftzieren eee eee seeeeceeseceeecesecneeeaeeeeeeeeceaeenseeneeess 63 Abbildung 33 TQMonitor Flash l schen cecccecscsssecseceseceeeeeesceceecescceeeeeeaeecaeceeeseeeennees 63 Abbildung 34 TQMonitor Monitor wiederbherstellen 64 Abbildung 35 TQMonitor Hardwareinformationen wiederherstellen ee 64 Abbildung 36 U Boot loadb un nn alle 64 Abbildung 37 U Boot erase u a en 64 Abbildung 33 U Bost ep ser alien 64 Abbildung 39 U Boot printenv Seege EENS end 66 Abbildung 40 passwd T00t ee AA E AEA AAR aa iasi 66 Abbildung 41 EEDR Ramdisk mount eelere Eege geed 67 Abbildung 42 ELDK Ramdisk Jeteimmahb nen 67 Abbildung 43 BusyBox Crosscompiler c ccccccessecessece
35. 3FFFF Erasing FLASH from 40100000h to 4013FFFFh Please wait Abbildung 25 TQMonitor Flash l schen Jetzt kann die Software mit Offset 0x100000 das Flash ROM geladen werden Die Srecord Datei kann als ASCII Format mit der Terminalemulationssoftware geladen werden Platine f r Dateiempfang vorbereiten MON gt load 100000 flash ready for s record downloading into FLASH Abbildung 26 TQMonitor Dateiempfang Datei senden diese Anweisung ist f r Kermit auf dem Hostrechner CTR el gt send U Boot srec e EIDEN Abbildung 27 U Boot Upload Download berpr fen MON gt read 40100000 40100000 27 05 19 56 50 50 43 42 OF Ar TA 20 21 28 80 28 01000103 SO 2D VO 72 65 32 20 26 HA 75 Oh 20 20 33 20 92 201000203 30 30 31 20 2D 20 32 535 SA 33 38 SA 54 30 2 00 40100030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 eee In MEI Een 1 0 O pre2 Jun 3 2 OO Z3sS8s20 o Abbildung 28 TQMonitor Download priifen 9 3 2 3 U Boot installieren Jetzt kann das U Boot an die Startadresse des Flash Speichers kopiert werden Dazu muss der Schreibschutz f r den Firmwaremonitor aufgehoben werden 63 MON gt protect 1234 Protection for sectors containing MON8xx disabled Abbildung 29 TQMonitor Schreibschutz deaktivieren MON gt erase 40000000 4003ffff Erasing FLASH from 40000000h to 4003FFFFh Please wait Abbildung 30 TQMo
36. 7 ANE 200 On node 0 totalpages 4096 zone 0 4096 pages zone 1 0 pages zone 2 0 pages Kernel command line root dev ram rw ee 16S 2 1273192 168 2 553192165 2 55 8253562555255 tre lanv Lori nee il Decrementer Frequency 187500000 60 Calibrating delay loop 49 86 BogoMIPS Use Preset loops_per_jiffy 249344 for preset 1pj Memory 12952k available 1116k kernel code 360k data 60k init Ok highmem Dentry cache hash table entries 2048 order 2 16384 bytes Inode cache hash table entries 1024 order 1 8192 bytes Mount cache hash table entries 512 order 0 4096 bytes Buffer cache hash table entries 1024 order 0 4096 bytes Page cache hash table entries 4096 order 2 16384 bytes POSIX conformance testing by UNIFIX Linux NET4 0 for Linux 2 4 Based upon Swansea University Computer Society NET3 039 Initializing RT netlink socket 72 Starting kswapd dE version 2 25 C ZOOI ZOWS REC lec TAC CPM UART driver version 0 04 ttysO at 0x0280 is on SMC1 using BREL ttySl at 0x0380 is on SMC2 using BRG2 Er 256 Wisi joys Eer tere Found 2x16bit 4MByte CFI flash device of type AMD Fujitsu standard at 40000000 Registered flash device dev flasha minor 0 4 partitions Found 2x16bit 4MByte CFI flash device of type AMD Fujitsu standard at 40400000 Registered flash device dev flashb minor 8 2 partitions Status LED driver SRevision 1 0 initialized et but EM HN Version 0 2 om SCCZ 0
37. Der Nachteil dass die Daten nicht ge ndert werden k nnen ist allerdings so gravierend dass diese Technik f r gro e Programme ungeeignet ist Mask ROM Speicher werden beispielsweise in RFID Chips eingesetzt PROM Programmable ROM k nnen nur ein einziges Mal programmiert werden soll die Software ausgetauscht werden muss der PROM Chip ausgetauscht werden Ein PROM ist ein Spezialfall einer programmierbaren logischen Anordnung Prinzipiell nichts anderes als ein Array von Dioden so genannte Fuses Beim Programmiervorgang werden mit einer erh hten Spannung gezielt einzelnen Fuses durchgebrannt mit anderen Worten zerst rt Daraus ergibt sich wie im Falle einer Maske eine Struktur aus leitenden und nicht leitenden Stellen die ein Bitmuster darstellen Das PROM ist nach einem fehlerhaften Schreibvorgang zerst rt Die Halbleitertechnik ist aber heutzutage weiter ausgereift und diese urspr ngliche Technologie wird kaum mehr verwendet sie wurde praktisch von UV EPROMS abgel st EPROM Erasable Programmable ROM ist eine weitere nichtfl chtige Speichertechnologie Die Halbleiterstuktur besteht aus einer Anordnung besonderer MOSFETs bei denen die Gateelektrode isoliert ist Jeder Transistor kann ein Bit speichern Fiir das Schreiben eines EPROMS ist wiederum eine erh hte Spannung n tig Die Schreibspannung wird ber l ngere Zeit an das isolierte Gate angelegt durch den Tunneleffekt wird Ladung auf das Gate gebracht das danach leitend
38. Die Speicheranforderung an das Betriebsystem wird durch den sbrk Systemcall ausgef hrt diese Methode ist allerdings unflexibel und unkomfortabel deshalb stellen Bibliotheken Funktionen zur Speicherverwaltung bereit C selbst verf gt nicht ber die M glichkeiten Speicher dynamisch zu allozieren der ANSI Standard definiert jedoch verschiedenen Funktionen f r die dynamische Speicherverwaltung diese sind in Runtimebibliotheken wie glibc implementiert ANSI C schreibt folgende Funktionen vor 29 e void calloc size_t nmemb size_t size belegt Speicher f r ein Array von nmemb Elementen von jeweils size Byte und gibt einen Zeiger auf den Speicherbereich zur ck Der Speicher wird auf Null gesetzt e void malloc size_t size belegt size Byte und gibt einen Zeiger auf den belegten Speicherbereich zur ck Der Speicher wird nicht mit Nullen beschrieben e void free void ptr gibt den Speicher frei auf den ptr zeigt welcher von einem fr heren Aufruf von malloc calloc oder realloc zur ckgegeben worden sein muss Wenn ptr NULL ist wird keine Operation ausgef hrt e void realloc void ptr size_t size ndert die Gr e des Speicherblocks auf den ptr zeigt auf size Byte Der Inhalt bleibt unver ndert bis zum Minimum von alter und neuer Gr e neu angeforderter Speicher bleibt uninitialisiert Wenn ptr NULL ist ist der Aufruf quivalent zu malloc size wenn die Gr e size gleich 0 ist ist der Aufruf quival
39. Ee deeg 73 101 1 NEE EE 73 10 152 Inhaltlich ns EE 73 ee 74 Tete PATIL VEN ZEICHINIS siccis ocsceiccscacecdescecescecoccassecoacadsescacsedessasecdesoscesseoescassessacsedeosacassasoaceeseseacesseceves 75 iii Abbildungsverzeichnis Abbildung 1 Schichten von Automatisierungssystemen G PA1 eee 14 Abbildung 2 SPI Kommunikation Master Slave DaK a2002 nn nnnnnneneeensseessesenssessessessressessess 20 Abbildung 3 parallele Prozesse in Betriebsystem a in Runtime mit Taskscheduler b 24 Abbildung 4 Stackframe auf Linux Intel vg 28 Abbildung 5 Speicherorganisation eines Prozesses uesssssssesssnsnensnensnnnnnnennneennnnnnnnene nen 28 Abbildung 6 Vergleich der Fehler in Ada mit ClStGeiogoal cccceeseeeeeeseeeeecseeeeeeeennees 32 Abbildung 7 C Code Beispiel 1 eu em ine EE 39 Abbildung 8 Disassembler zum Beispiel u un nsn asenuiean el nah kechus 40 Abbildung 9 Stackframe mit eingeschleustem Code nenn 43 Abbildung 10 Funktion funcl mit StackGuatd nenn 53 Abbildung 11 Installation HUD ann aan 56 Abbildung 12 Device Nodes erstellen een een 57 Abbildung 13 Dateirechte E 57 Abbildung 14 Dateistruktur replizieren eege Eege 57 Abbildung 15 Umgebungsvariablen u a 57 Abbild ns Mr ere 58 Abbildung 17 etc default tftpd hp EE 58 Abbildung E e E 59 Abbildung 19 ete dhep dhe pd EE 59 Abbildung 20 BLIDK kernel nina ne a 60 Abbildung 21 Makefile workaround nenn 61 Abbildung
40. Inhalt nicht aus Allerdings muss das Betriebsystem in der Lage sein diesen Hardwaremechanismus zu nutzen Eines der ersten Betriebsysteme die dieses Bit nutzten war OpenBSD 3 3 das am 1 Mai 2003 ver ffentlicht wurde OpenBSD implementiert die so genannte W X Technologie W X steht f r Write XOR Execute Seiten des virtuellen Speichers k nnen entweder geschrieben oder ausgef hrt werden Bemerkenswert ist dass falls der Prozessor keine Hardwareregister daf r bereitstellt wird dies vom Betriebsystem mit minimalem Mehraufwand emuliert Ist kein Hardwarebit vorhanden so nutzt OpenBSD f r W X die Eigenschaft des Prozessimages aus dass ausf hrbarer Code im niederen Adressraum liegt Es wird eine Grenze im Adressraum definiert oberhalb derer Speicherinhalt als Daten interpretiert wird und nicht ausf hrbar ist 50 Linux unterstiitzt den NX Bit Mechanismus auf 32 Bit CPUs seit Kernelversion 2 6 8 standardm ig ber Ingo Molnars ExecShield Implementierung Windows nutzt das NX Bit seit WindowsXP Service Pack 2 Allerdings existiert keine Emulation wenn der Prozessor das NX Bit nicht bereitstellt Die Verwendung von Sicherheitsmechanismen auf Hardware und Betriebsystemebene ist besonders sicher da der Angreifer keinen Zugriff auf die Betriebsystem Verwaltungsdaten der Speicherseiten hat WikiNX 8 1 2 PaX mit Linux PaX existiert als Patch fiir Linux Kernel seit Oktober 2000 wurde aber bisher nicht in den Source Tree bernommen PaX bie
41. Linux wird dies ber die Datei etc inittab erreicht dort findet sich der Eintrag Start user application respawn bin application Abbildung 42 ELDK Ramdisk etc inittab Die Beispielapplikation kann gel scht werden und der Eintrag auskommentiert werden Sinnvoll w re zum Beispiel die Installation eines kleinen Webservers auch das beinhaltet BusyBox der ber init gestartet wird 68 Die Konfiguration einer neuen BusyBox ist relativ einfach es steht eine ncurses basierte Menuoberfl che hnlich der des Linux Kernels zur Verf gung Die dort wichtigste Option ist die Auswahl des Crosscompilers unter in diesem Beispielfall BusyBox Settings gt Saut lel Opresoms gt opt eldk3 1 usr bin ppc_8xx Cross Compiler prefix Abbildung 43 BusyBox Crosscompiler Es kann auch auftreten dass wenn zu viele Werkzeuge mitkompiliert werden dass das Dateisystem meldet es sei kein Speicherplatz mehr vorhanden Dieser Fehler ist unter Umst nden irref hrend und nicht richtig es ist Speicherplatz vorhanden Aber es sind keine inodes mehr frei In diesem Fall sollte zun chst versucht werden bei der Konfiguration die symbolische Links die je einen inode belegen durch Hardlinks zu ersetzen BusyBox Settings gt mert al ent nn CGocLons gt Applets links as hard links Abbildung 44 BusyBox Hardlinks Danach muss BusyBox kompiliert und in die
42. a Abbildung 53 Erster Boot aus dem Flash 73 10 Erfahrungen und Probleme 10 1 Erfahrungen 10 1 1 Vorgehensmodell Wahrend der Arbeit habe ich zun chst gelernt in wissenschaftlichen Arbeiten zu recherchieren und ohne fremde Hilfe Informationen zu organisieren Dadurch dass ich meine Arbeit in Brasilien durchgefiihrt habe und keinen direkten Kontakt mit meinen Betreuern in Deutschland hatte habe ich meine F higkeiten selbstst ndig und eigenverantwortlich zu arbeiten weiter ausgebaut Das IAS Vorgehensmodell f r konzeptionelle Arbeiten hat mir zuerst pers nlich wenig geholfen Das Phasenmodell war nur schwierig auf meine Arbeit anwendbar Die Trennung von Grundlagen und Konzeption war sehr schwierig da in weiten Bereichen meiner Arbeit die Konzeption nur eine Vertiefung der Grundlagen war Ich war am Anfang der Ansicht dass viel unn tige Arbeit verrichtet werden muss Erst sp ter erkannte ich die Vorteile des IAS Vorgehensmodells und der Einteilung in Phasen die es im Wesentlichen erleichtern strukturiert und diszipliniert zu arbeiten Ich bin der Ansicht dass das Vorgehensmodell sehr gut geeignet ist um Studenten strukturiertes Arbeiten zu lehren Am Anfang war es mir nicht klar wozu eine einzelne Person einen Projektplan mit MS Project ben tigt der Aufwand einen solchen Projektplan zu erstellen erschien mir unverh ltnism ig zum Nutzen Ich war der Ansicht dass die Aufstellung eines solchen Plans mit Ressourc
43. ang stehen Der Program Header einer Executable ist ein Array von Strukturen die jede ein Segment oder andere Informationen beschreiben die n tig sind um ein Programm auszuf hren Jedes Segment enth lt eine oder mehrere Sektionen Eine Executable Datei in Sektionen zu zerlegen und mit zus tzlichen Metainformationen auszustatten hat gro e Vorteile insbesondere auf Maschinen mit einer MMU Memory Management Unit die Virtual Memory Paging unterst tzen Die typische Sektionsgr e bei einem Binary f r 32 Bit Intel x86 Architektur ist 4096 Byte was genau der Seitengr e des Virtuellen Speichers der MMU entspricht Die wichtigsten Sektionen in einer ELF Datei sind e text hier ist der ausf hrbare Maschinencode gespeichert e rodata Konstanten die zur Compilezeit initialisiert wurden und nicht geschrieben werden k nnen e data Zur Compilezeit initialisierte Variablen e bss Informationen ber die nicht initialisierten Variablen Hier sind lediglich Informationen gespeichert wie viel Speicher beim Ausf hren f r statische Variablen ben tigt wird e symtab Symboltabelle in dieser Sektion werden Symbole also Sprungmarken auf Zieladressen umgesetzt e dynamic Informationen f r dynamische Linker hier sind die Namen der zur Laufzeit ben tigten externen Bibliotheken e plt Procedure Linkage Table Diese Sektion verbindet positionsunabh ngige Adressen f r Funktionsaufrufe Sie enth lt kleine St cke Maschinencode zur D
44. aus dem Flash Sind die Images des Kernels und der Ramdisk installiert m ssen gegebenenfalls die Umgebungsvariablen kernel_addr und ramdisk_addr in U Boot angepasst werden Soll Das Minimodul beim Einschalten vom Flash booten so ist noch die Umgebungsvariable bootcmd anzupassen F r einen ersten Test bietet sich allerdings an die Variablen von Hand zu setzten Dem Kernel wird die Netzwerkkonfiguration ber Bootparameter statisch bergeben Dies geschieht im v die beide vom Batchskript flash_self orliegenden Beispielfall ber die Batchskripte addip und ramargs aufgerufen werden Diehe dazu auch Abbildung 39 gt run flash_self Booting image at 40400000 Image Name alu 2 2 Zina in Created 20 016 09 PS Lee Ee WUC Image Type PowerPC Linux Kernel Image gzip compressed Data Size 642526 Bytes 627 5 kB Load Address 00000000 Entry Point 00000000 Verifying Checksum OK Uncompressing Kernel Image OK Loading RAMDisk Image at 40100000 Image Name Universal Created ZOO G Ll 22 3258326 UTC Image Type PowerPC Linux RAMDisk Image gzip compressed Data Size Load Address WME eine 1727538 Bytes 00000000 00000000 Kaum OK 1 6 IMs Verifying Chec Loading Ramdis k to 00e09000 end 00faec32 OK Linux Version 2 4 25 min ruschi Thinkpad gcc version 3 3 3 DENX ELDK Sel 353 3 10 iO Sele Seo 23 T952
45. ber spezielle SDI Self Destruct Inputs Wenn an diesen Pins eine Spannung von 5 Volt anliegt werden die externen Speicher und die internen Schl ssel innerhalb von 100ns von einer speziellen Hardwarelogik berschrieben An diese Pins kann beispielsweise eine Alarmeinrichtung einer Sicherheitseinrichtung des Geh uses angeschlossen werden DS2003 Das Schl sselregister enth lt den Schl ssel K der von einem Adressbusverschl ssler EA dem Datenverschliissler ED und dem Datenbusentschl ssler ED gemeinsam genutzt wird Die Kryptographischen Algorithmen sind DES oder 3 DES die von einer speziellen Hardwareeinheit einem 4096 Bit MAA Modulo Arithmetic Accelerator unterst tzt wird Der Ciphertext des ED h ngt zus tzlich vom Schl ssel auch noch von der Adresse ab auf die zugegriffen wird ED ist eine 8 Bit Blockcypher EA arbeitet mit einer Wortgr e von 15 Bit Wenn der CPU Kern einen Bytewert d an die Adresse a schreiben m chte so wird im externen SRAM der Wert d EDx d in der Speicherzelle mit der Adresse a EAx a abgelegt Bei einem Lesezugriff der CPU auf die Adresse a wird aus der externen Speicherzelle a EAx a der Wert d geladen und nach der Entschl sselung wird das Ergebnis d ED Te a d an den CPU Kern zur ckgegeben Da sowohl EA als auch ED bijektive Funktionen sind ist aus der Sicht des Programmierers kein Unterschied zu einem normalen unverschl sselten RAM festzustellen Anschaulich gesprochen sind alle By
46. beschreiben auch Techniken die Programme im System selbst zu debuggen und zu aktualisieren F r das so genannte ISP In System Programming gibt es neben propriet ren herstellerspezifischen Schnittstellen auch weitgehend standardisierte Die bekanntesten Schnittstellen zum Programmupload sind SPI Serial Peripheral Interface und Standard Test Access Port and Boundary Scan Architecture IEEE 1149 1 das von der JTAG Joint Test Action Group entworfen wurde daher ist die allgemeine Abk rzung f r das Interface JTAG 2 2 1 SPI Serial Peripheral Interface SPI ist ein einfaches Interface nach einem Standard von Motorola das zur Kommunikation zwischen beliebigen digitalen Bausteinen entworfen wurde Das Interface eignet sich fiir einfache Kommunikation und arbeitet im Full Duplex Mode das hei t es werden gleichzeitig Daten empfangen und gesendet Jedoch ist kein hardwareseitiges Kommunikationsprotokoll f r diesen Bus spezifiziert es wird keine Pr fsumme zur Verifikation der Daten erzeugt ferner existiert keine Flusskontrolle des Datenstroms DaKa2002 Wird ber SPI kommuniziert so m ssen die Daten mit Softwareprotokollen kontrolliert werden Die einfachste Weise ist das das gesendete Byte vom Slave wieder an den Master zur ckgesendet wird der es gegen das Original pr ft Zur Kommunikation sind lediglich 3 Leitungen erforderlich MISO Master In Slave Out MOSI Master Out Slave In und die Taktleitung SCK Serial Clock die den Takt zur
47. bleibt da es sich nicht mehr entladen kann Die Lesespannung ist deutlich unterhalb der Schreibspannung und beeinflusst die Ladung auf dem Gate nicht Die Daten k nnen nun beliebig oft ausgelesen werden Das Geh use des Chips hat ein Fenster aus Glas Zum L schen der EPROMS ist UV Licht n tig Durch die Energiereiche Strahlung wird die Halbleiterstruktur ionisiert und das Floating Gate wird entladen Der L schvorgang ist sehr langwierig mit konstantem UV Licht dauert es 10 bis 30 Minuten bis das ROM gel scht ist Der Schreib L schvorgang kann ca 100 200 Mal wiederholt werden Soll das ROM nicht gel scht werden muss das Fenster abgeklebt sein da 19 sonst das ROM durch das Tageslicht innerhalb von 3 Monaten gel scht wird Der langwierige L schvorgang verursacht verh ltnism ig hohe Kosten und macht das EPROM f r die Massenfertigung ungeeignet EPROMS werden mehr in Anlagenautomatisierung eingesetzt wo nur bei wenigen Ger ten die Software aktualisiert werden muss EEPROM Electrically Erasable Programmable ROM auch E PROM geschrieben ist eine Weiterentwicklung des EPROM die elektronisch gel scht werden kann Prinzipiell ist die Technik die gleich wie bei UV EPROMs Die Daten werden wiederum in eine Speichermatrix aus Feldeffektransistoren gespeichert Zum Schreiben ist auch hier eine erh hte Spannung n tig die die isolierten Gateelektroden l dt Der Speicher wird immer Byteweise beschrieben Die Transistormatrix kann durch Pu
48. cht gesichert Mit einfachen Chemikalien l sst sich wie beschrieben das Chipgeh use aufl sen Da Speicher eine auff llige Struktur haben lassen sich mit einem einfachen Lichtmikroskop der Ort der Speicherzellen und der Busleitungen bestimmen Der Angreifer ben tigt weiterhin Microprobes Nadeln mit einer Spitze von ca 5 um und kann wiederum mit einem einfachen Vorverst rker und Logikanalysator oder Oszilloskop den Inhalt der Buskommunikation abh ren und in den Besitz des Schl ssels gelangen Es ist also n tig das System hermetisch gegen Angriffe abzuschotten jedoch ist es schwierig ganze Platinen zu sch tzen Wird das ganze gesamte System zum Beispiel in Epoxydharz eingegossen und mit Sensoren die das Eindringen registrieren versehen ist dies ein sehr gro er technischer Aufwand und ist oft nicht m glich da die Hitze nicht richtig abgef hrt werden kann Ein besserer Ansatz ist nur den Prozessor zu in ein sicheres Geh use zu verpacken und mit einem kleinen nicht fl chtigen Speicher zu versehen der die geheimen Schl ssel enth lt Der Prozessor kann dann mit externen Komponenten wie RAM oder Programm ROM verschl sselt kommunizieren Gelangt ein Angreifer in Besitz des Programmspeichers oder h rt die 47 Nachrichten auf dem Speicherbus ab sind die Informationen fiir ihn ohne den geheimen Schliissel wertlos 7 1 1 Sichere Mikrocontroller Da Embedded Systems auch fiir Finanztransaktionen oder Wahlen eingesetzt werden und sich
49. der letzten zehn Jahre einige Mechanismen zum Schutz gegen Angriffe entwickelt Je nach Betriebssystem und Hardwarearchitektur stehen unterschiedliche M glichkeiten zur Verf gung Selbst ohne Betriebsystem und spezielle Hardwareregister auf dem Prozessor ist mit geringem Softwareaufwand ein bedingter Schutz m glich 8 1 Sicherheitsmechanismen moderner Betriebssysteme Ein einfacher Ansatz zum Schutz gegen Ausf hren von eingeschleusten Daten ist vorher festzulegen welche Speicherbereiche ausf hrbar sind und welche Speicherbereiche als Daten interpretiert werden sollen Diesen Ansatz verfolgen mehrere Technologien manche mit Unterst tzung von Hardwarefunktionen Diese Methoden arbeiten alle v llig transparent f r bestehende Programme das hei t es muss kein Programm neu kompiliert werden 8 1 1 NX Bit Das Prinzip des NX Bit wurde auf mehreren Prozessorarchitekturen schon fr her bereitgestellt meist waren dies Server oder Workstation RISC Prozessoren sie Sun SPARC Digital ALPHA oder IBM PowerPC Der Ausdruck NX Bit wurde von AMD mit der 64 Bit Athlon Prozessorfamilie eingef hrt Intel implementiert seit dem Pentium 4 Prescott diese Technologie und nennt sie XD eXecution Disable Beim NX Bit handelt es sich um das 63 Bit des Eintrags einer Speicherseite in der Seitentabelle Ist dieses Bit zu 0 gesetzt kann der Inhalt der Seite ausgef hrt werden Ist das Bit 1 so wird der Inhalt als Datum interpretiert und der Prozessor f hrt den
50. dger te evaluiert 10 Abstract The use of automation systems has grown significantly within the last years Additionally there has been a continuous growth range of functionality a stronger interconnection and distribution of systems While the distribution helps to control the complexity of each component it also introduces new threats regarding the vulnerability of the whole system Very early on the aspect of safety the precautions against dangers the system could bring its environment has been regarded in design Now also the aspect of safety how the system is threatened from the outside has to bee regarded in system engineering Therefore this work will explain general security problems of software and systems Then deduced how these problems result in possible attacks for product and industrial automation systems As possible answer for these security threats a range of technologies both in hard and software which are supposed to make systems more secure are presented in this paper The last section contains instructions for installation and configuration of an embedded system based on Linux With this prototype the security problems which have been described in this thesis have been evaluated 11 Einleitung Das Ziel dieser Arbeit war es die Gef hrdung von Feldger ten in Automatisierungstechnik zu untersuchen Um die Sicherheitsprobleme und Angriffsvektoren zu erarbeiten wurden generelle Probleme aus dem Bereich der Softwa
51. die Vorort die Steuerung der physikalischen Gr en bernehmen Solche so genannte Feldger te sind ber Kommunikationssysteme zur Verwaltung und wechselseitigen Benachrichtigung zum gesamten Automatisierungssystem zusammengefasst Prinzipiell l sst sich die Hierarchie von Automatisierungssystemen in drei Ebenen nach Aufgaben und Rechenleistung gliedern Betriebsebene Prozessebene Feldebene Abbildung 1 Schichten von Automatisierungssystemen G6PA1 Je nach Art des Automatisierungssystems und Komplexit t werden unterschiedliche Techniken eingesetzt Als Hardware k nnen Mikrocontroller SPS Speicher Programmierbare Steuerungen Industrie PCs oder Prozessleitsysteme zum Einsatz kommen Die Ausf hrungen der Feldger te unterscheiden sich sehr je nach Einsatzgebiet und Verwendungszweck Prinzipiell sind alle Feldger te egal ob SPS Steuerger t oder Embedded System aus einem Mikroprozessor Speicher und Kommunikationsschnittstellen aufgebaut und funktionieren prinzipiell gleich wie ein handels bliches Personal Computer 1 2 3 Mikroprozessoren Wird von einem Mikroprozessor gesprochen ist damit die digitale Recheneinheit auf einem Chip mit Registern und eventuell Cache und Speichercontroller gemeint Mikroprozessoren haben 15 heutzutage eine Wortbreite von 8 bis 64 Bit in manchen speziellen Systemen sogar bis zu 128 Bit Die Prozessoren f r PCs sollen m glichst alle unterschiedlichen Aufgaben wie zum Beis
52. dressen Zur Verwaltung ist der Stack in so genannte Stackframes unterteilt ein Stackframe ist die Menge der f r eine Funktion auf dem Stack abgelegten Daten Auf Intel x86 Architekturen stehen zwei Register zur Verwaltung des Stacks zur Verf gung Der so genannte Basepointer ebp der immer auf den Anfang des Stackframes der Funktion zeigt und der eigentliche Stackpointer esp der auf den letzten belegten Speicherplatz die niedrigste Adresse des Stack zeigt Der Speicherplatz f r den Stack wird vom Kernel verwaltet und w chst je nach Bedarf bei Funktionsaufrufen dynamisch kann allerdings nicht mehr verkleinert werden Abbildung 4zeigt einen typischen Stackframe Abbildung 5 veranschaulicht die Organisation von Speicher auf einer 16 Bit von Neumann Maschine 28 address wesp OxEFFF Lokale Variablen der Funktion ep Lokale Variablen OxFFFF des Aufrufers Abbildung 4 Stackframe auf Linux Intel x86 Adresse Oxd000 text 0x1000 read x 0x2000 rodata RKTL 1 0 3000 data 0x4000 bes 0x5000 read write OxE000 Stack OxFFFF Abbildung 5 Speicherorganisation eines Prozesses 3 2 3 Dynamische Speicherverwaltung Auf dem Heap wird erst bei Bedarf Speicher fiir dynamische Objekte hier als allgemeine Speicherstruktur ohne Bezug auf objektorientierte Programmierung reserviert Nach dem der Speicher nicht mehr gebraucht wird soll der Platz wieder freigegeben und dem Betriebsystem zur Verwaltung zur ckgegeben werden
53. dung 41 gezeigt nach mnt gemountet Danach muss auf dem Image zuerst ein Kernelmodulverzeichnis mit den ben tigten depmod Informationen erstellt werden Der einfachste Weg ist es die Module dort mit Hilfe der Kernel Makefile zu installieren user opt eldk3 1 ppc_8xx usr src linux gt make modules_install INSTALL_MOD_PATH mnt Abbildung 50 Ocan Kernelmodulverzeichnis Danach sind nur noch die Device Nodes und die Userspace Tools auf das Ramdisk Image zu kopieren Die Devicenodes wurden von ocan_load auf dem Embedded System erstellt und sind somit auf dem Hostrechner in opt eldk3 1 ppc_8xx dev ocan angelegt Davon sind nur die Device Nodes a benutzt Es reicht somit diese auf das Ramdisk Image zu kopieren user gt sudo mkdir p mnt dev ocan user gt sudo cp opt eldk3 1 ppc_8xx dev ocan a mnt dev ocan user gt sudo cp opt eldk3 1 ppc_8xx usr local bin ocan mnt usr bin Abbildung 51 Ocan Device Nodes und Userspace Tools Das skript ocan_load muss nun noch angepasst werden Da keinerlei Device Nodes mehr erstellt werden m ssen Es reduziert sich nun da das Modul installiert und die Device Nodes angelegt sind auf bin sh insmod ocan type 8 8 irq 8 8 base 1 2 71 Abbildung 52 ocan_load auf der Ramdisk Nun kann die die Ramdisk wie in Abbildung 46 gezeigt gepackt und installiert werden 9 4 2 Der erste Start
54. e Besch digung nur sehr schwer gefunden werden Die fehlerhafte Software kann schon Monate fr her eingeschleust worden sein der Saboteur braucht zum Zeitpunkt des Ausl sens nicht vor Ort zu sein Dar ber hinaus kann die schadhafte Software fl chtig sein das hei t sie ist nach dem Schaden aus dem Speicher verschwunden In diesem Fall ist es nahezu unm glich die genaue Ursache des Schadens festzustellen Neben Sabotage ist auch in der Anlagenautomatisierung Spionage eine durchaus lohnende Methode sich unerlaubterweise Wettbewerbsvorteile zu verschaffen Angreifer k nnen wieder ohne zum Zeitpunkt des Abh rens vor Ort zu sein Daten ber technische Prozesse sammeln speichern und zu einem anderen Zeitpunkt abrufen Der Aspekt der Spionage beziehungsweise Piraterie ist auch f r Produktautomatisierungssoftware eine direkte Bedrohung Nicht nur Daten des technischen Prozesses sondern auch die Software der Feldger te bzw der Produkte sind f r Konkurrenten interessant Es ist in Firmen blich Produkte der Konkurrenz zu untersuchen und L sungsans tze zu kopieren Rechtlich ist dieses Vorgehen in einer Grauzone abh ngig von den nationalen Patentrechten Die Grenze zwischen legalem Reverse Engineering und Piraterie ist schwer zu ziehen Die Firma die die Software entwickelt hat versucht das Kopieren zu verhindern um ihr geistiges Eigentum zu sch tzen 34 5 2 Angriffsarten Eine grobe Einteilung der Angriffsarten kann nach dem funktio
55. e Ubuntu Linux ubuntu Version 6 06 mit Kernel 2 6 17 eingesetzt Im Folgenden wird nun beschrieben welche Pakete installiert sein m ssen und wie diese konfiguriert werden 9 2 1 Beschreibung der Beispielumgebung e Hostname des Embedded System Minilinux e IP Adresse 192 168 2 127 e Netmask 255 255 255 0 e Hostrechner 192 168 2 55 9 2 2 Installation des ELDK Unbedingt erforderlich ist der Embedded Linux Development Kit im Folgenden ELDK der Firma Denx ELDK Diese Umgebung stellt Crosscompiler und Tools fiir die Erstellung von Binaries fiir eine Reihe von Zielsystemen auf einer x86 Hostarchitektur bereit Hier in der Beispielumgebung soll diese in opt eldk3 1 installiert werden Zur Installation sind folgende Schritte n tig Auf der Installations CD ist ein Skript install das fast alle n tigen Schritte vornimmt Es wird empfohlen dieses Skript als user und nicht als root auszuf hren Bei der Installation kann der Zielordner mit der Option d angegeben werden Ohne Angabe einer Zielarchitektur werden alle verf gbaren Architekturen installiert In diesem Beispielfall wird nur ein PowerPC823 ben tigt es wird somit die Zielarchitektur ppc_8xx angegeben user gt cdrom install d opt eldk3 1 ppc_8xx Abbildung 11 Installation ELDK Achtung Sicherstellen dass die CDROM mit der exec Option gemounted ist sonst ist ein ausf hren des Skripts nicht m glich Viele Linuxdistributionen mounten
56. ebssysteme ccceccceesseeeteceeeeeeeeeeeeenseens 49 SH Ne Ber ale 49 8 1 2 PaX mit LINUX teen nee 50 81 3 Exec Shield f r Ee endlichen 51 8 2 Sicherheitsmechanismen ohne Betmichawstem ce eeccecceseceeeceeeeeeseceeeeeeeeeeeeeaeens 51 8 21 EE EE 51 82 2 Stackshie E 52 8 2 3 SSP Stack Smashing Protector fr her Propolice ce eeeeseeeeceeeceeeneeeeeeneees 52 8 3 Fazit zu Sottwareschutzmechantsamen nennen 53 9 Installations und Benutzungsanleitung des Prototypen e ssccescoesssecssccssocesocssoosesoesssee 55 ON HardWare EE 55 9 1 1 STK 8XXL Entwieklungsplatine unitesnsaunseniesranes 53 9 1 2 Das Minimodul TOMBS Oli 5 0 55 9 2 EE 56 9 2 1 Beschreibung der Beispielumgebung u 56 92 2 Installation des ELDR unse ea 56 9 2 3 Installation einer Netzwerkbootarchitektur 200220000ssneeeeeneeenenneeneneennnn 58 9 2 4 Kernel ee 59 9 3 Installation und Konfiguration des Mimmmoduls 60 9 3 1 Das U Boot der universal Bootloader 60 9 3 2 Installation des Bootloaders im ROM ccnnsessssnssnenssnensnnnsnnnnnennnnnn nn 61 9 3 3 Umgang mit U Boot a Ban 64 9 3 4 Booten uber das Ne Bwerk areas ie 66 9 4 Installation von Linux im Flash ee eg 66 SE Se DIE AANA en ee ne 67 DAD Der erste Start vom Flach ai ara 71 10 Erfahrungen und Probleme sicscscssivsscssssvercssvcevsscnsaseccostevessvcenycevecesvensusedeccvooesosopevonsenevenbess 73 10 1 tert ageet lese Eder Ah e dee
57. edeutet fail safe ein Stillstand des Systems Zum Beispiel darf ein Flugzeuges w hrend des Fluges wegen eines Fehlers nicht zu Stillstand kommen F r ein Kraftfahrzeug bei dem ein Fehler in der Steuerung der Bremsanlage erkannt wird hingegen ist der Stillstand ein sicherer Zustand Mit Security ist der Schutz gegen gezielte Manipulationen und die Verhinderung von Gefahren die sich gegen die Funktionsf higkeit des Prozessautomatisierungssystems richten gemeint Es darf kein Dritter unbemerkt unautorisiert Programme oder Daten des Systems ndern oder lesen Mittels Sicherheitskonzepten werden die 5 Ziele verfolgt FeGu05 e Vertraulichkeit Diskretion Schutz vor unbefugtem Lesen und Schreiben von Daten und Programmen e Integrit t Unber hrtheit von Daten oder deren eindeutigen Ursprung feststellen e Verf gbarkeit Die Funktion eines Dienstes aufrecht zu erhalten e Ergonomie Die Sicherheitsma nahmen d rfen die Funktion des Systems nicht zu sehr einschr nken e Nachweisbarkeit Sollte ein Versto gegen die Sicherheit erfolgt sein so sollte dieses auch bemerkt werden dazu k nnen Sicherheitsprotokolle analysiert werden 13 Nat rlich geh ren beide Begriffe eng zusammen und sie beeinflussen sich gegenseitig In der Automatisierungstechnik stand bisher aber Safety im Vordergrund Erst in j ngster Zeit entwickelt sich mit der Vernetzung von Systemen ber das Internet und sich h ufenden F lle von Patentrechtsvers
58. ehlerhafte Programmierung wird aber auch dadurch nicht verhindert diese 54 Gefahr kann nur durch gute Entwickler pr zise Spezifikation und regelm ige Kontrolle minimiert werden 55 9 Installations und Benutzungsanleitung des Prototypen Dieses Kapitel beschreibt den praktischen Teil der Arbeit Die Installation und Inbetriebnahme von Linux auf der Evaluierungsplatine STK8XXL mit der Minimodulplatine TQM823L der Firma TQComponents Im ersten Teil wird die Hardware beschrieben Teil zwei beschreibt die Anforderungen und die Installation des Hostrechners der zu Entwicklung dient Der dritte Teil erkl rt das Vorgehen f r die Installation und Konfiguration einer neuen Firmware mit Bootloader auf dem Embedded System Dieser Teil ist sehr wichtig da bei der fehlerhaften Installation der Firmware das System besch digt werden kann und der Schaden nur vom Hersteller behoben werden kann Teil vier beschreibt die Installation von Linux in einer Ramdisk des Flashspeichers und den Bootvorgang 9 1 Hardware 9 1 1 STK 8XXL Entwicklungsplatine Die Evaluierungsplatine STK8XXL f hrt lediglich die vom Minimodul bereitgestellten Schnittstellen nach au en und erm glicht somit die Entwicklung von Software parallel zur Entwicklung der Hardware des sp teren Zielsystems In dieser Arbeit wurde lediglich die Funktionalit t folgender Schnittstellen betrachtet Die Platine verf gt ber zwei RS232 COM Anschl sse X18 und X19 die prim re X18
59. eicher oder hnlicher Art zu verhindern SrArSc2004 38 6 Security Probleme in Software Viel h ufiger als professionelles Reverse Engineering und physikalische Angriffe auf Automatisierungssysteme sind Softwareangriffe Diese sind in der Regel viel kosteng nstiger da sie weniger Hardware und Fachkenntnis erfordern Die Schwachstellen sind sehr hnlich und der Ablauf eines Angriffs ist nahezu immer der Selbe Die Schwachstelle die am meisten f r Angriffe ausgenutzt wird ist ein so genannter Buffer Overflow Bei einem Buffer Overflow schleust der Angreifer eigenen Code ber die Kommunikationsschnittstellen des Programms ein und ver ndert den Programmablauf so dass sein eigener Code ausgef hrt wird Nachdem der Angreifer Kontrolle ber den Programmfluss hat kann er beliebige Aktionen wie Auslesen des gesch tzten geheimen Programmcodes oder Schl sseldaten oder Angriffe auf benachbarte Systeme durchf hren Gegen solche Angriffe nutzt auch ein sicherer Mikrocontroller nicht Bei einem Puffer handelt es sich um ein zusammenh ngendes St ck Speicher das in der Regel f r tempor re Daten benutzt wird Meist dient ein Puffer dazu die Ein und Ausgabeoperationen zu beschleunigen Daten k nnen Blockweise in Puffer geschrieben werden um von dort im RAM dann Byte f r Byte verarbeitet werden dies ist meist um ein Vielfaches schneller als byteweise einen Ein oder Ausgabestrom zu bearbeiten Das Problem eines Puffer berlaufs besteht wenn
60. einem Funktionsaufruf liegen also Verwaltungsdaten f r den Programmfluss die R cksprungadresse und der Stackpointer und lokale Daten auf dem Stack Zusammen mit fehlender berpr fung der Grenzen von Arrays ergibt sich daraus das eigentliche Problem das zu Exploits eines Buffer Overflows f hrt Der Array der lokal angelegt ist beginnt bei einer niedereren Startadresse wird ber den reservierten Speicherbereich hinaus geschrieben wird der Inhalt der h heren Adressen wie lokale Variablen der gesicherte ebp und die R cksprungadresse berschrieben Das Problem wird vom Programmierer und im Test nicht erkannt da sich das Programm innerhalb der Spezifikation normal verh lt Selbst wenn ein Test versucht mehr Daten in einen Array zu schreiben als dieser aufnehmen kann ist dies zwar ein Buffer Overflow der aber nicht zwangsl ufig auffallen muss Es ist leicht m glich dass der Buffer in den Speicherbereich anderer lokaler Variablen w chst die aber danach nicht mehr verwendet werden L uft das Programm in einer Betriebsystemumgebung so st rzt es in der Mehrheit der F lle wenn die R cksprungadresse berschrieben wurde nach R ckkehr aus der Funktion einfach ab Beim Zugriff auf die ung ltige R cksprungadresse wird von der MMU ein Page Fault Interrupt ausgel st das Betriebsystem registriert diesen und pr ft ob die Seite im Adressraum des Prozesses liegt und in den virtuellen Speicher geladen werden muss Dies ist meist nicht der Fall
61. ent zu free ptr Wenn ptr nicht NULL ist muss er von einem fr heren Aufruf von malloc calloc oder realloc zur ckgegeben worden sein Der zugesicherte Speicher eines Programms wird von Runtimebibliotheken verwaltet meist wird eine doppelt verkettete Liste mit Eintr gen ber unbenutzte Speicherbl cke die so genannte Freelist verwendet Beim allozieren eines Blockes wird mit einer bestimmten Strategie entweder First Fit oder Best Fit ein passender Block ausgesucht der gr er oder gleich dem angeforderten Speicher ist Der Block wird aus der Liste genommen und die Kette wird mit dem eventuell brig gebliebenen Rest des Speicherblockes oder dem Nachfolger in der Liste wieder geschlossen Wurde kein ausreichend gro er Block gefunden wird ber den sbrk Systemcall mehr Speicher vom System angefordert Wird der Speicher ber ree wieder freigegeben wird der Block an das Ende der Freelist angeh ngt Diese urspr ngliche Methode der dynamischen Speicherverwaltung hat den entscheidenden Nachteil dass der Speicher sehr stark fragmentiert Das hei t das sehr viele kleine Bl cke in der Freelist stehen die nicht mehr verwendet werden k nnen der Speicher ist verschwendet Durch die gro e Zahl von kleinen Bl cken in der Liste dauert auch das Suchen von passenden Bl cken immer l nger da die Zahl der Listenelemente w chst In der Literatur ist dieses Problem ausf hrlich dokumentiert Deshalb verwenden Lauf
62. enverwaltung und Arbeitspaketabh ngkeiten nur in Teams und bei Arbeiten Sinn macht die in einer hnlichen Form zuvor schon erledigt wurden Allerdings musste ich auch hier erkennen dass die Erstellung eines komplexeren Projektplanes auch f r Kleinprojekte n tzlich ist Sie verhindert dass einzelne Teile der Arbeit zu lange dauern und der vorgesehene Endtermin der Arbeit nicht eingehalten werden kann Au erdem wird durch einen Projektplan das disziplinierte Arbeiten verst rkt F r mich war es das erste Mal mit einem komplexen Projektplan zu arbeiten ich denke ich habe dadurch einige Modelle erlernt Arbeiten besser zu organisieren Was mir pers nlich am Vorgehensmodell gef llt ist das die Anforderungen zu Beginn genau festgelegt werden und sich w hrend der Arbeit nicht ndern 10 1 2 Inhaltlich W hrend der Studienarbeit habe ich meine Kenntnisse im ber den Vorgang des Erstellens und Ausf hrens von Maschinencode aus Quelltext stark vertieft Ich habe mich intensiv mit 74 M glichkeiten Grenzen und Funktionalit t von Entwicklungs und Debugwerkzeugen wie dem GNU C Compiler aus der gcc dem Debugger gdb und verschiedenen Disassemblern und Werkzeugen zur Bearbeitung und Analyse von Programmen besch ftigt Auch meine bereits fundierten GNU Linux Kenntnisse konnte ich sehr gut einsetzen und vertiefen In dieser Arbeit bin ich das erste Mal in Kontakt mit Linux auf Embedded Systems gekommen Erstmals habe ich Systeme in
63. er und mit Bibliotheken zu einem Lauff higen Programm verarbeitet Tempor rer Speicher nach dem LIFO Prinzip der f r Variablen und Argumente von Funktionen benutzt wird Dynamischer Speicher der vom Programmierer zur Laufzeit verwaltet wird Zusammenfassung Die Verbreitung von Automatisierungstechnik hat in den letzten Jahren stark zugenommen Hinzu kommt ein stetig wachsender Funktionsumfang und st rkere Vernetzung und Verteilung der Systeme Die Verteilung verringert die Komplexit t der Einzelkomponenten der Feldger te bringt aber im gleichen Zug neue Gefahren bez glich der Angreifbarkeit des Gesamtsystems mit sich Schon sehr fr h wurde in der Automatisierungstechnik das Kriterium Safety der Sicherung gegen Gefahren die das System f r die Umwelt darstellt ber cksichtigt Nun muss auch der Gesichtspunkt Security also auf welche Weise das System von au en bedroht ist beim Entwurf beachtet werden Deshalb werden in dieser Arbeit Security Probleme von Software und Systemen erl utert Danach wird untersucht wie sich diese in m glichen Angriffen auf Feldger te von Automatisierungssystemen auswirken Als m gliche Antwort auf diese Gefahren werden Technologien die Hard und Softwaresysteme sicher machen sollen vorgestellt In einem abschlie enden Teil wird die Installation und Konfiguration eines Embedded Systems mit Linux beschrieben Anhand dieses Prototyps wurden die beschriebenen Angriffsm glichkeiten auf Fel
64. ereferenzierung von Eintr gen der GOT die PLT wird im schreibgesch tzten bereich abgelegt e got Global Offset Table enth lt Informationen ber absolute Adressen die zur Laufzeit errechnet werden Auf Systemen mit Virtuellem Adressraum sind Sprungziele zur Compilezeit nicht bekannt Die tats chlichen Adressen m ssen zur Laufzeit vom Linker errechnet werden Dazu muss die Executable positionsunabh ngig kompiliert sein Ben tigt ein Programm Zugriff auf die absolute Adresse eines Symbols so hat dieses Symbol einen Eintrag in der GOT Die dynamisch geladene Bibliothek liegt nur einmal im Speicher vor kann aber parallel von verschiedenen Programmen benutzt werden Der Code der Bibliothek wird in den Adressraum des Prozesses eingeblendet Da ein Programm nur Sprungadressen kennt werden diese vor dem Start in vom Linker in der GOT eingetragen und beim Aufruf ber die PLT doppelt dereferenziert das Programm springt letztendlich an die Adresse die als Ziel in der GOT eingetragen ist Es sind im ELF Standard noch weitere Sektionen und Informationen spezifiziert der gesamte Standard ist in TIS2000 erl utert 24 3 2 2 Speicherabbild eines Prozesses Eine elementare Ressource die ein Prozess belegt ist Speicher Auf einem System mit Virtuellem Speichermodell ist dies ein Adressraum der von 0 bis zu einer systemabh ngigen maximalen Obergrenze linear w chst Die virtuellen Adressen werden f r jeden Prozess von der MMU aufgel st und auf ph
65. eschriebener Assembler Beide Sprachen haben allerdings den gro en Nachteil der Safety Es existiert keinerlei Typsicherheit oder berpr fung der Grenzen f r Arrays Die Sprachen bieten dem Programmierer absolute Freiheit mit der Hardware zu kommunizieren zum Preis dass der Programmierer f r alles verantwortlich ist Die Sprache Java ist eine Umgebung die teilweise Typsicherheit bietet ist aber wegen ihrem Threadmodell und Garbage Collector nicht f r Echtzeitanwendungen geeignet und ist keine sichere Sprache Selbst Hersteller wie Microsoft Apple oder IBM raten in ihrem Lizenzbestimmungen davon ab Java f r sicherheitskritische Anwendungen zu benutzen MS2000 Die fehlende Safety der existierenden Sprachen veranlasste das US Verteidigungsministerium dazu die Entwicklung einer neuen sicheren Sprache in Auftrag zu geben Es wurde Ada aus einer Reihe von Konzepten ausgew hlt sie gilt als die sicherste Programmiersprache und wird in vielen sicherheitskritischen Systemen eingesetzt Ferner definiert Ada eine Runtime die einen Echtzeitscheduler implementiert Die Entwicklungszeit und die Kosten sind mit Ada sogar geringer und die Codequalit t ist ein Vielfaches besser als mit C oder Assembler StZe1995 Ada wird jedoch weniger eingesetzt da nicht f r alle Chips Compiler existieren und nur wenige Entwickler Erfahrung mit Ada haben 32 Lifeime Fidd Reported Bugs 500 500 K a be 400 en Mc E 300 O Ada T E ES
66. est Access Port and Boundary Scan Architecture Die Standard Test Access Port and Boundary Scan Architecture wurde 1990 mit dem Ziel entwickelt auf Platinen und ICs Software und Hardware zu debuggen Es bietet somit eine komfortable M glichkeit die Mehrheit der internen Speicher auszuwerten 1994 wurde der Standard um die BSDL Boundary Scan Description Language erweitert die den Logikumfang der Boundary Scans beschreibt Nahezu alle Chiphersteller haben diese Standards implementiert Das JTAG Interface ist ein serieller Bus mit 4 bis 5 Leitungen an dem mehrere Endger te zum Debugging verbunden sein k nnen TDI Test Data In TDO Test Data Out TCK Test ClocK TMS Test Mode Select und das optionale TRST Test ReSeT 2 2 3 H here Programmierschnittstellen Mit den beschriebenen Methoden l sst sich der Chip als ganzes programmieren SPI oder JTAG bieten vollen Hardwarezugriff und k nnen den gesamten Speicher l schen und beschreiben Sie erfordern allerdings direkten Zugriff auf den Chip oder die Platine beide Methoden sind elektrisch nicht zur Fernwartung ausgelegt Soll die Software einfach von Wartungspersonal oder dem Endbenutzer aktualisiert werden k nnen oder die Software ber ein Netzwerk gewartet werden muss eine andere Technik angewandt werden Es bietet sich an ein weiters Programm zu Beginn auf dem Mikrocontroller zu installieren das den Schreibvorgang bernimmt Ein solches Programm wird manchmal auch als Bootloader f
67. grammierer den gesamten physikalischen Speicher selbst verwalten Dies ist bei einfachen Programmen oder bei Single Threaded Applikationen nicht besonders schwer insbesondere wenn kein Speicher dynamisch alloziert wird und alle Daten in statischen Variablen gespeichert werden Das ausschlieBliche Verwenden von statischen Variablen macht im Falle dass ein Programm exklusiv auf einem Prozessor l uft durchaus Sinn der Speicher wird dann implizit durch das zuweisen von Variablen zur Compilezeit verwaltet Sind parallele Prozesse zur Bew ltigung der Aufgaben eines Feldger tes n tig so wird meist eine Runtime mit Echtzeitscheduler oder ein Betriebssystem eingesetzt welches die Speicherverwaltung bernimmt L uft ein Prozess in einer Runtimeumgebung oder auf einem Betriebsystem ist es nicht mehr dem Programmierer berlassen den physikalischen Speicher selbst zu organisieren Nun ist es m glich den einzelnen Tasks dynamisch aus einem gemeinsamen Pool Speicherbereiche je nach Bedarf zus tzlich zu bereits belegten statischen Speicher zuzuweisen Die Programme k nnen wenn sie ihn nicht mehr ben tigenden Speicherbereich wieder ans das Betriebsystem oder die Runtime zur ckgeben Die nachfolgenden Abschnitte beziehen sich nur noch auf die Programme die in einem Betriebsystem laufen 3 2 1 ELF Executable and Linkable Format Auf modernen Betriebsystemen ist das Laden und Ausf hren eines Programms kein trivialer Vorgang mehr Es ist dazu eine
68. h ohne diese Informationen erlischt eventuell die Garantie des Herstellers fiir das Minimodul Die Informationen sind im ROM des Minimoduls gespeichert und miissen gesichert werden bevor das U Boot installiert wird Da die U Boot Software in denselben Speicherraum wie der Firmwaremonitor geschrieben wird und die Informationen berschrieben Mit dem Kommando read lt Adresse gt lt L nge gt des TQMonitor k nnen Speicherinhalte angezeigt werden MON gt read A001FFBO AQOUEBOs Sg Iie ii Wie ii iis Sp Wie ER ie iy ii i Wie i D ene AE AQOMNCOg S54 Si AD 38 32 53 He Ad AZ 22 Al 33 2D 45 35 30 TOMS2SUDEBAS E50 AVC DO Zu 35 Sl 33 20 Sl 21 33 Sil 35 34 30 33 20 30 20 313 11913403 O0 ppes 44 30 39 33 30 S7 44 36 32 37 20 34 00 00 00 00 BOSSOTDE2T Masos 400705 OO OC OO OO OO OO OO 00 OO 90 OO 00 CO OM 00 OO eene E Abbildung 24 TQMonitor Hardwareinformation Aus diesem String lassen sich die 4 Informationen des Minimoduls ableiten jede durch ein Leerzeichen getrennt e Modul Typ amp Revision TQM823LDBBA3 E50 313 e Seriennummer 11315403 62 e MAC Adresse 00 D0 93 07 D6 27 e Anzahl zus tzlich reservierter MAC Adressen 4 9 3 2 2 Testdownload Zun chst muss ein unbenutzter Speicherbereich des Flashs gel scht werden um dort das U Boot Image abzulegen Das Flash ROM ist ber Memorymapping in den Adressraum des Minimoduls eingebunden und beginnt bei 0x4000000 MON gt erase 40100000 401
69. hcp zu starten und das Skript net_nfs auszuf hren Leider hat root auf dem ELDK kein Passwort Dazu muss man noch die Datei opt eldk3 1 ppc_8xx etc passwd ndern Das einfachste vorgehen ist auf dem Hostrechner ein Passwort ndern und den Passwort Hashwert in die Datei einzutragen Zum Beispiel folgender Eintrag entspricht dem Passwort secret mit SHA 1 gehasht root 1 hPvjGcL4 2zIMk2ezSiHD2n fNVJUX1 0 0 root root bin bash Abbildung 40 passwd root 9 4 Installation von Linux im Flash Im Embedded Bereich mach es wenig Sinn einen kompletten PC als Bootserver f r die Feldger te zu verwenden Meist wird ein relativ kleines Flash ROM als Speicher f r das Betriebsystem eingesetzt Das TQ Minimodul TQM823L bietet f r diesen Zweck zwei Flash Speicherb nke mit je 4 MB Speicher Dieser Speicherplatz ist ausreichend um ein Betriebsystem wie Linux mit dazugeh rigen Werkzeugen zu installieren Im Folgenden wird nun gezeigt wie ein Kernel und ein Rootdateisystem vorbereitet zusammengestellt und im Flash ROM installiert wird 67 9 4 1 Die Ramdisk Im ELDK sind fertige Ramdisk Images fiir PPC zu finden Diese sind aber wie der Kernel sehr generisch und die Toolversionen veraltet Es empfiehlt sich die Images fiir den eigenen Bedarf anzupassen Die Programme in der Ramdisk beruhen alle auf BusyBox Busybox BusyBox ist eine so genannte multi call binary die Funktionalit t vieler kleiner System
70. he Verfahren absichert erscheint jedem zun chst als sicher insbesondere wenn erprobte kryptographische Algorithmen wie Triple DES AES oder RSA mit langen Schl ssell ngen eingesetzt werden Diese Sicherheit ist allerdings ebenfalls tr gerisch Sie ist vergleichbar mit einem Haus mit abgeschlossenen T ren und Fenstern wobei der Schl ssel aber unter der Fu matte liegt Kein Einbrecher wird sich die M he machen die T r aufzubrechen wenn er den Schl ssel des Besitzers einfach stehlen kann Genauso wenig macht sich niemand die Arbeit die Verschl sselung der Daten zu knacken wenn er den originalen Schl ssel auf einfache Weise auslesen kann Die Sicherheit des Systems steht und f llt also damit wo und wie der Schl ssel gespeichert wird Der Schl ssel selbst muss in einem Speicher im Klartext gespeichert sein da sonst der Prozessor selbst die Daten nicht verarbeiten kann Speicher f r die Schl ssel au erhalb des Chips aus denen der Prozessor den Schl ssel beim Bootvorgang ausliest bieten keinerlei Sicherheit Der Angreifer braucht nicht mehr als ein einfaches Oszilloskop um den Bus zu beobachten und den Bitstrom aufzuzeichnen Innerhalb kurzer Zeit verf gt er dann ber Kenntnis des Schl ssels und kann die geheimen Daten dechiffrieren Selbst Klasse I Angreifer k nnen dieses Verfahren anwenden Wird der Schl ssel in einem Speicherbereich auf dem Chip gespeichert bietet das einen erh hten Schutz ist aber auch gegen Klasse I Angreifer ni
71. ht abgeschlossenen Raum oder Mikrocontroller mit externem Speicher LOW Es wurden Sicherheitsmassnahmen ergriffen die aber mit minimalem Toolaufwand wie Zange L tkolben und Mikroskop berwunden werden k nnen Der Angriff erfordert Zeit aber die Kosten sind gering Beispiele hierf r w ren Systeme nach dem Prinzip Security by Obscurity MODL Sicherheitsma nahmen gegen einfache Angriffe Es sind h her entwickelte Werkzeuge und Ausr stung sowie gewisses Spezialwissen n tig Die Kosten f r Ausr stung liegen bei 500 5000 US Ein Beispiel dieser Klasse sind Mikrocontroller mit Lockbits oder Entkoppelkondensatoren die eine Leistungsanalyse erschweren MOD Spezielle Ausr stung eine fundierte Ausbildung und Kenntnis ber Chips ist n tig Die Werkzeuge kosten bis 50000 US und der Angriff ist zeitaufw ndig aber letztendlich erfolgreich 36 e MODE Es existiert Ausr stung aber diese ist sehr teuer zu beschaffen und zu verwenden Die Kosten liegen im 200000 US Bereich Es wird spezielle Erfahrung K nnen und Wissen f r die Bedienung der Ger te vorausgesetzt Es wird mehr als eine Operation ben tig dass der Angriff gelingt und es sind Expertenteams verschiedener sich erg nzender Disziplinen n tig Der Angriff ist unter umst nden dennoch erfolglos Beim Design des Systems wurde besonderer Wert auf die Sicherheit gelegt Beispiele hierf r sind Mikrocontroller und ASICs mit speziellen Sicherheitseinrichtungen wie sie in moderne
72. ionen der eigentliche Code ausgef hrt Am Ende des Codes der ausgef hrt werden soll stehen eine Reihe von Adressen des angenommen Anfangs des Puffers 43 Address OxEFFF Variablen der mea Gesicherter Gesicherter ebp Funktionsparameter Lokale Variablen OxFFFF des Aufrufers Abbildung 9 Stackframe mit eingeschleustem Code Damit werden zwei Probleme auf einmal gel st Es ist nicht mehr n tig die genaue Anfangsadresse und L nge des Puffers zu kennen Der Angriff wird nach wenigen Operationen erfolgreich sein Der Vollst ndigkeit halber muss an dieser Stelle noch erw hnt werden dass der fremde Code bei einem Angriff ber unsichere Stringfunktionen wie gets keine ASCII NUL enthalten darf da dies als Terminatorcharakter erkannt wird Mit ein paar Tricks lassen sich aber NULL Zeichen vermeiden siehe dazu auch AlOn96 Das dritte Problem ein zu kleiner Puffer l sst sich nicht generisch l sen Allerdings sind andere Angriffstypen m glich L uft der Prozess der angegriffen wird in einer Betriebsystemumgebung so kann ein return to libc Angriff erfolgreich sein Bei dieser Art Angriff werden wenige Datenworte als Funktionsparameter auf den Stack abgelegt und die R cksprungadresse mit einer g ltigen Adresse einer Bibliotheksfunktion der libe beispielsweise system berschrieben Die aufgerufene Funktion nimmt ihre Argumente vom Stack die vom Angreifer dort abgelegt wurden Diese Art von Angriff ist besonders
73. it dem Betriebsystem kommunizieren oder direkt Systemcalls ausf hren Runtimebibliotheken auf Betriebsystemen liegen meist als Shared Library vor Der ausf hrbare Code der Bibliothek liegt nur ein Mal im Speicher jedoch werden die Verwaltungsdaten die die Runtime f r jeden Prozess ben tigt separat in dessen Speicheradressraum gespeichert Die Bibliothek wird mittels Virtual Memory und Linker in den Adressraum des Prozesses eingeblendet Runtime und Betriebsystem erg nzen sich meist gegenseitig F r den Programmierer ist es einfacher ber Bibliotheken mit dem System zu kommunizieren Ein bekanntes Beispiel hierf r ist die Standard C Library glibc die benutzerfreundliche Funktionen f r Systemcalls bereitstellt Der Ansatz eines Betriebsystems eignet sich vor allem auf Prozessleitebene oder in komplexeren Produkten In der Automatisierungstechnik sind haupts chlich Echtzeitbetriebsysteme von Bedeutung Ein Betriebsystem erfordert meist leistungsst rkere Prozessoren hat einen relativ gro en Speicherbedarf und nicht unerheblichen Verwaltungsoverhead Abbildung 3 illustriert Kapselung der Hardware in einem parallelen System mit Betriebsystem a und mit einer Runtime die einen Taskscheduler bereitstellt b I Runtime 1 Runtime 2 el Ill T Abbildung 3 parallele Prozesse in Betriebsystem a in Runtime mit Taskscheduler b 25 3 2 Speicherorganisation Wird keine Runtime und kein Betriebsystem eingesetzt so muss der Pro
74. le a variable b fj terval Lokale Variablen auf den Stack als Parameter fiir funcl ablegen b laden 6 gt par2 1 a laden a gt parl_1 Funcl aufrufen R ckgabewert einer Funtion auf i386 liegt im Akkumulator Akkumulator in lokale Variable schreiben Variablen f r printf auf den Stack ablegen R ckgabewert von main Funktionsprolog Stackpointer dekrementiern fiir lokalen Speicher Vi GCAO wacter tinpi reserviert Pi ene Ox28 d wecval 5 parl_1 vom Stack lesen 2 panil 2 atic rome 2 awii le Stack ein Wort unterhalb esp ablegen par2_1 vom Stack lesen par2_2 auf den Stack ablegen func2 aufrufen R ckgabewert in lokalen Speicher kopieren F F Ve a ll a Ud Adresse von buf laden und ftir Gers O auf den Scack Legen retval_l in Akkumulator Funktionsprolog Framebasepointer sichern Stackpointer wird Framebasepointer Speicherplatz f r retval_2 Par BP vom Stack par 2 vom Seack global subtrahieren Ergebnis in retval_2 speichern retval_2 in Akkumulator Abbildung 8 Disassembler zum Beispiel 41 Jede Funktion auch die main Funktion beginnt mit dem Funktionsprolog indem der Stackframe initialisiert wird Der alte Framebasepointer ebp wird auf den Stack abgelegt der alte Stackpointer esp wird zum neuen Framebasepointer ebp Auf
75. lk 3 iL eewer Basel option host name EE ET next server 192 169 2 55 filename ulmage Abbildung 19 etc dhcp dhcepd conf Mit dem Eintrag f r dieses Subnetz wird eine feste IP Adresse f r die MAC Adresse des Embedded Systems reserviert und alle Informationen f r das Booten bereitgestellt Im Beispielfall sind next server der TFTP Server der das Image bereitstellt und Router dieselben es k nnen auch unterschiedliche Server gew hlt werden Das Embedded System versucht die Datei uImage ber TFTP vom Server zu laden diese muss im Verzeichnis das bei der Konfiguration des TFTP Servers angegeben wurde vorliegen Die Option rootpath gibt den Pfad des Rootdateisystems auf dem NFS Server an 9 2 4 Kernel Der im ELDK 3 1 enthaltene Linux Kernel Source Tree beinhaltet bereits mit Patches f r Embedded Systems Zur Grundkonfiguration hat Denx das Maketarget TOM850L_config 60 erstellt Werden eigene Kernelquellen eingesetzt sollte die Umgebungsvariable ARCH ppc gesetzt sein da sonst f r die Architektur des Hostrechners konfiguriert wird Danach wird der Kernel wie gewohnt mit make menuconfig konfiguriert Per Default werden sehr viele Treiber und Eigenschaften eingebaut die nicht unbedingt n tig sind Die generische Konfiguration sollte an die individuellen Bed rfnisse angepasst werden Zuletzt wird ber das Maketarget uImage ein bootf higes Kernel Image erstellt
76. lse h herer Spannung aber auch wieder gel scht werden Die Spannung erzeugt ein elektrisches Feld das die Gateelektroden wieder entl dt Der Vorgang ist deutlich schneller als das L schen mit UV Licht und es muss nicht der ganze Chip gel scht werden es k nnen gezielt einzelne Bytes beschreiben und gel scht werden Ein weiterer Vorteil ist die wesentlich h here Lebensdauer von ca 100 000 Schreibzyklen Die n tige Programmier und L schspannung wird durch Halbleiterschaltungen direkt auf dem Chip erzeugt so dass keine Programmierger te oder weitere Versorgungsspannung n tig sind und der Speicher direkt auf dem Mikrocontroller selbst integriert werden kann Dennoch sind EEPROMS verh ltnism ig langsam und eignen sich nur zur Speicherung von Daten die nicht sehr oft und schnell ge ndert werden m ssen EEPROMS werden haupts chlich eingesetzt um Konfigurationen oder Daten des technischen Prozesses dauerhaft zu speichern Flash EEPROM ist ein Speicher mit hoher Speicherdichte die wesentlich schneller gro e Mengen von Daten speichern Der Speichervorgang l dt durch quantenmechanische Effekte Fowler Nordheim Tunneleffekt wiederum ein isoliertes Gate der FET Matrix Beim Schreiben werden allerdings immer ganze Bl cke von Daten auf einmal geschrieben Der L schvorgang funktioniert auch ber eine erh hte Spannung und l scht ganze Sektoren der Speicherstruktur auf einmal Soll also ein Wort im Speicher ge ndert werden muss zun chst de
77. mehr Daten in den Puffer geschrieben werden als dieser aufnehmen kann Dies geschieht da viele Programmiersprachen keinerlei berpr fung der Grenzen durchf hren In der Programmiersprache C sind auch Strings nur Arrays von Character Daten Ein String hat keine variable L nge sondern es muss vorher der maximale Speicherbedarf vom Programmierer abgesch tzt und reserviert werden Das Ende eines Strings wird durch das ASCII Zeichen NUL definiert Liegt im Eingabestrom keine ASCII NUL vor so erkennen die Standardbibliotheken von C kein Ende des Strings und lesen weiter Daten ein Im Folgenden wird nun beschrieben wie ein Angriff mittels Puffer berlauf auf dem Stack erfolgt 6 1 Buffer Overflow auf dem Stack Der einfachste und h ufigste Bufferoverflow geschieht auf dem Stack Oft wird auch von einem Stackoverflow in diesem Zusammenhang gesprochen dies ist aber ein falscher Ausdruck da nicht der Stack berl uft sondern nur ein Puffer auf dem Stack Um zu verstehen wie ein Angreifer Code einschleusen kann muss man zun chst den normalen Programmablauf beim Aufruf einer Funktion analysieren Folgendes Programm in ANSI C wird vom GNU C Compiler unter Cygwin auf einer Intel x86 Architektur bersetzt Die Funktion funci enth lt einen typischen Programmierfehler der angegriffen werden kann include lt stdio h gt ime global Ar ae arua S aae alate A 39 Lime UCA alas ZE TIME RL ame arga Caer Sse A
78. n Smartcards und Zahlungssystemen eingesetzt werden e HIGH Alle bisher bekannten Angriffe waren erfolglos Ein Forschungsteam mit hohem Budget ist notwendig das Tools und Anlagen speziell f r den Angriff entwickelt Die Gesamtkosten betragen ber 1 Mio US und der Erfolg des Angriffs ist ungewiss Diese Einteilung ist zwar hilfreich aber nicht standardisiert und nur schwer berpr fbar da sich die Einteilung nach dem Aufwand des Angriffs richtet US und Kanadische Regierungsbeh rden haben in den FIPS 140 1 FIPS detaillierte Standards f r die Zertifizierung sicherer Systeme mit kryptographischen Verfahren beschrieben Hier werden Anforderungen an die Schutzmechanismen gestellt aber keinerlei Aussagen ber Kosten und Aufwand eines eventuellen Angriffs gemacht Daher eignet sich diese Standardisierung f r die Zertifizierung neuer Produkte e Sicherheitslevel 1 Es werden nur Anforderungen an die Software und die verwendeten Verschl sselungsalgorithmen gestellt Die Hardware wird nicht physikalisch gesch tzt es sind keine Anforderungen an das Geh use oder den Installationsort des Systems gestellt e Sicherheitslevel 2 Das System muss mit einem Siegel oder einem Schloss gesichert sein so dass im Nachhinein ein einfacher Manipulationsversuch festgestellt werden kann e Sicherheitslevel 3 Der Versuch einer Manipulation soll schon w hrend sie stattfindet erkannt werden und nicht nur im Nachhinein optisch sichtbar sein Das System sch tz
79. n deaktiviert werden Mit rauchender Salpeters ure HNO gt 98 wird das Chipgeh use aufgel st und das Epoxydharz mit Aceton entfernt Die Metallisierungsschicht die Bondingdr hte und das Silizium werden von der S ure nicht angegriffen Danach wird mit einem lichtundurchl ssigen Stift der Speicher abgedeckt um den Inhalt des EEPROM oder Flashspeichers zu sch tzen Der Speicherbereich f r die Lockbits befindet sich meist and einer anderen Stelle auf dem Die im einfachsten Fall in der Logik des Programmierinterfaces F r den 46 Angreifer ist der Ort uninteressant er setzt den freigelegten Chip l ngere Zeit starkem UV Licht aus Dadurch wird das Floating Gate des EEPROM Speichers entladen und die Lockbits sind gel scht Schwieriger f r die Angreifer wird es wenn die Lockbits in der N he des Speichers angeordnet sind der Angreifer muss dann den Ort kennen Manche Hersteller versuchen solche Angriffe dadurch zu erschweren dass die Lockbits active low sind oder durch eine Metallisierungsschicht abgedeckt werden die UV Licht undurchl ssig ist Dies kann durch komplettes Abtrennen der Lockbits oder Angriff mit Microprobes umgangen werden dazu sind aber in der Regel nur Klasse II Angreifer in der Lage SeSk2005 Wird ernsthaft von Schutz von Daten gesprochen ist der erste Gedanke Kryptographie Ein System das den Programmcode und die Daten nur verschl sselt speichert und auch die Kommunikation auf den Bussystemen durch kryptographisc
80. nalen Ziel der Angriffe in drei Gruppen gemacht werden e Angriffe auf die Vertraulichkeit Privacy Attacks Das Ziel dieses Angriffes ist es Kenntnis ber vertrauliche Daten zu erlangen die im System verarbeitet gespeichert oder mit der Peripherie ausgetauscht werden e Angriffe auf die Integrit t Der Angreifer versucht Daten oder Programmcode im System zu manipulieren e Angriffe auf die Verf gbarkeit Diese Art von Angriff versucht die normale Funktion des Systems durch Missbrauch der Ressourcen zu st ren Ein anderer Unterscheidungsaskekt der Angriffe auf Embedded Systems liegt darin wie die Angriffe durchgef hrt werden und welche Mittel dazu benutzt werden e Software Angriffe sind Angriffe die mit Hilfe eingeschleuster Software z B trojanische Pferde oder Viren durchgef hrt werden Diese Art von Angriffen ist weit verbreitet da keine Spezielle Hardware oder Kenntnis des Systems vorausgesetzt ist Es werden bestehende Eingabestr me auf bekannte Schwachstelle wie Buffer Overflows berpr ft Diese Angriffe k nnen aber auch relativ kosteng nstig durch sichere Software verhindert werden e Physikalische Angriffe Alle Angriffe auf physikalischer Ebene auf das System Sie sind wesentlich aufw ndiger als Softwareangriffe da sie mehr Kenntnis ber das System wesentlich h heres Wissen und Erfahrung des Angreifers als und Ausr stung voraussetzen Beispiele f r physikalische Angriffe sind ffnen des Chipgeh uses f r Microp
81. nitor Flash l schen MON gt load 0 flash Ready for srecord download to FLASH CTRL gt send U Boot srec 23 45678 9 10 ai 12 Were Nous 6619 6620 O62 6622 6623 file transfer complete GEI OESCH Start address 40000000 MON gt Abbildung 31 TQMonitor U Boot laden Wieder sollte der Ladevorgang verifiziert werden MON gt read 40000000 400000003 27 05 19 56 50 50 43 42 oF Ger 74 20 31 22 30 2m 4 WRPCBooc 1 0 400000103 30 2D 70 72 65 32 20 28 44 75 GE 20 20 33 20 32 ees vun 3 2 100000202 SO 30 31 20 20 20 32 33 SA 35 38 SA 34 30 29 00 001 23558340 00000308 VO 00 00 00 00 OO OO 00 00 00 00 00 00 OO 00 00 5550 NEON MON gt Abbildung 32 TQMonitor Installation verifizieren Die Firmware ist nun installiert und startet automatisch nach dem Reset ACHTUNG FALLS IRGENDETWAS SCHIER GING KEIN durchf hren sondern den alten Monitor wiederherstellen 9 3 2 4 Wiederherstellen des Firmwaremonitors Zun chst den Flashspeicher l schen BOARDRESET MON gt erase 40000000 4003ffff Erasing FLASH from 40000000h to 4003FFFFh Please wait Abbildung 33 TQMonitor Flash l schen Die Firmware die im RAM noch l uft wieder an die richtige Stelle im Flash kopieren 64 MON gt copy monitor Copy monitor Abbildung 34 TQMonitor Monitor wiederherstellen Nun miissen noch die Hardwareinformationen wiederhergestellt werden
82. nternet Engineering Task Force G Malkin A Harkin TFTP Options 05 1998 http www ietf org rfc rfc2347 txt Internet Engineering Task Force G Calghan B Pawlowski G Staubach NFS Version 3 Protocol Specification 06 1995 http www ietf org rfc rfc1813 txt http sourceforge net projects u boot http hp vector co jp authors V A002416 teraterm html Alessandro Rubini Ocan driver http www linux it rubini software Abraham D G et al Transaction Security System IBM Systems Journal Vol 30 No 2 1991 Srivaths Ravi Anand Raghunathan and Srimat Chakradhar Tamper Resistance Mechanisms for Secure Embedded Systems NEC Laboratories America Princeton NJ 08540 Markus G Kuhn Cipher Instruction Attack on the Secure Microcontroller DS5002FP IEEE TRANSACTIONS ON COMPUTERS Vol 47 No 10 Oktober 1998 Dallas Semiconductors Application Note 2033 SRAM Based Microcontroller optimizes Security 2004 Dallas Semiconductors Datasheet 5240 High Speed Secure Microcontroller 2003 Ingo Molnar Exec Shield new Linux security feature Linux Kernel Mailing list 05 2003 Aleph One Smashing the Stack for Fun an for Profit Phrack Magazin 7 49 11 1996 JP Advanced Doug lea s malloc exploits Phrack Magazin 7 49 11 1996 Gerado Richarte Four different tricks to bypass StackGuard and Stackshield Protection Core Security Technologies 06 2002 PaX Project http pax grsecurity net Wikipedia org NX
83. on Call Graph machen er weis nicht in welcher Schachtelungstiefe sich das Programm befindet und wie viele Argumente jeweils bei jedem Funktionsaufruf auf dem Stack abgelegt wurden Dies ist eine Reihe von Hindernissen die f r einen erfolgreichen Angriff berwunden oder umgangen werden m ssen Zun chst kann der Angreifer davon ausgehen dass der Stack auf der jeweiligen Zielarchitektur und dem gleichen Compiler bei jedem Programmaufruf an der gleichen Adresse meist dem Ende des Speichers beginnt Durch viele Iterationen kann er den n tigen Offset zum Anfang seines Codes ermitteln und die R cksprungadresse dementsprechend anpassen Dieses Vorgehen ist sehr zeitaufwendig es sind mindestens wenige hundert Ausf hrungen des Programms n tig Bei einem Produktionssystem ist diese Art von Angriff nicht m glich da das Zielprogramm bei fast jedem fehlgeschlagenen Angriff abst rzt oder willk rliche Codesequenzen ausf hrt Der Angreifer hat gar nicht die M glichkeit das Programm mit den gleichen Startbedingungen erneut anzugreifen Angriffe dieser Art sind nur m glich wenn der Angriff an einem Produktautomatisierungssystem das der Angreifer besitzt ausgef hrt wird oder der Angreifer ber den Quellcode des Systems verf gt Viel einfacher ist es vorausgesetzt der Puffer ist gro genug den Anfang des eingeschleusten Codes mit Null Operationen NOPs zu f llen Gelingt es irgendwo in den Block mit NOPs zu springen wird nach wenigen Instrukt
84. or mehrere Analog Digitalwandler Timer und Zahler auf dem Chip integriert Mikrocontroller sind sehr flexibel in ihrem Einsatz Mikrocontroller werden in allen erdenklichen Ger ten eingesetzt und werden in Massen produziert was sich positiv auf die Kosten auswirkt Einfache Chips sind schon f r weniger als 1 Euro auf dem Markt erh ltlich Es existiert eine un berschaubare Menge an unterschiedlichen Controllern mit verschieden Vor und Nachteilen Allerdings lassen sich Mikrocontroller in Familien gleicher Architekturen gliedern innerhalb der sich die Chips nur durch ihre Leistungsf higkeit unterscheiden Manche Hersteller lizenzieren f r ihre Mikrokontrollerarchitekturen auch Prozessorkerne anderer Hersteller zum Beispiel existieren Chips von Texas Instruments und Phillips die beide auf dem Prozessorkern der englischen Firma ARM basieren Dies wiederum erleichtert den Toolsupport und die Portierung von Software Die Entscheidung bei der Auswahl wird oft durch Bekanntheit unter den Entwicklern und den verf gbaren Entwicklungsumgebungen und Compilern bestimmt 17 2 Hardware in Automatisierungssystemen Wahrend im vorangegangen Kapitel bereits Begriffe fiir Hardware erl utert wurden ist vielleicht der Eindruck entstanden es handle sich um andere Technologien als im klassichen Personal Computer Die in der Automatisierungstechnik verwendeten Hardwarekomponenten unterscheiden sich in ihrer prinzipiellen Funktionsweise und Technologie nicht
85. piel Textverarbeitung Spiele oder Multimediananwendungen m glichst gleichzeitig und gleichm ig schnell abarbeiten k nnen Im Bereich der Feldger te und Automatisierungstechnik hingegen lassen sich durch sinnvolle Auswahl der Prozessoren leicht Energie Entwicklungszeit und auch Kosten des Endprodukts einsparen Da ein Feldger t genau f r eine spezifische Aufgabe entwickelt wird ist es m glich einen Prozessor f r genau diesen Zweck auszuw hlen So muss zum Beispiel ein Prozessor einer Regelung der Klimaanlage im Auto keine komplexen schnellen Fliesskommarechnungen anstellen diese Arbeit kann von einem general purpose Mikroprozessor zusammen mit anderen Aufgaben bernommen werden Hingegen ist f r das Encoding eines MPEG Streams mit der Kamera eines Mobiltelefons ein spezieller Prozessor n tig der das Encoding mit Hardwareeinheiten unterst tzt Ein general purpose Mikroprozessor der MPEG Encoding in Echtzeit abarbeiten k nnte w re in Mobiltelefonen undenkbar da ein solcher Chip zu teuer ist und viel zuviel Energie ben tigt 1 2 4 Embedded System Oft wird in der Technik von Embedded System gesprochen Hiermit ist ein komplexeres Ger t mit Speicher Mikroprozessor und Kommunikationsschnittstellen gemeint das auf einer einzigen Platine integriert ist Solche Ger te werden f r den Massenmarkt produziert Ein Embedded System zeichnet sich durch die Kosten begrenzten Ressourcen bez glich Speicher und Rechenleistung aus Wieder is
86. programme vereint Das Programm wird ber symbolische links aufgerufen So sind zum Beispiel die Befehle Is oder ps nur ein link auf bin busybox Wird ps aufgerufen wird die Prozesstabelle ausgegeben wird der link 1s aufgerufen so wird der Inhalt des Ordners angezeigt Diese Technik erm glicht es alle notwendigen GNU Linux Standardwerkzeuge in einer Datei mit einer Gr e von nur 600kB bereitzustellen 9 4 1 1 Anpassen einer Ramdisk Die von Denx im ELDK bereitgestellte Image Datei ramdisk_image gz ist mit gzip gepackt und muss zun chst entpackt werden Danach kann die Datei als Loopback Device gemountet und wie ein regul res Laufwerk benutzt werden zum Mounten eines Loopback Devices sind in der Regel Superuserrechte n tig user opt eldk3 1 ppc_8xx images gt gzip d ramdisk_image gz user opt eldk3 1 ppc_8xx images gt sudo mount o loop ramdisk_image mnt Abbildung 41 ELDK Ramdisk mount In mnt liegt nun ein standard Linux Root Dateisystem Zun chst sollte dringend die mnt etc passwd Datei editiert werden da DENX zwar Passw rter vergeben hat diese aber nicht angibt Siehe auch Booten ber das Netzwerk Die Beispielapplikation von DENX usr bin application wird von init beim Booten des Systems gestartet und von init berwacht Dieses Vorgehen ist im Embedded Bereich Sinnvoll da so wenn die Software abst rzt sie sofort wieder neu gestartet wird In System V hnlichen Systemen wie
87. r ts sowie der Installation und Inbetriebnahme dieses Embedded Systems mit dem Open Source Betriebsystem GNU Linux Dieser Vorgang ist in Kapitel neun beschrieben 12 1 Begriffe Um das Problem von Angriffen auf Feldger ten in Automatisierungssystemen besser erl utern zu k nnen ist es wichtig Begriffe zu erkl ren und vor allem klar gegeneinander abzugrenzen In diesem Kapitel werden Begriffe Automatisierungssysteme und ihr Aufbau beschrieben um die Security Probleme und Angriffsvektoren zu unterscheiden und verst ndlich zu machen 1 1 Definition von Safety und Security Wenn im Deutschen von Sicherheit gesprochen wird so ist dies ein unscharf umrissener Begriff Die genaueste Definition die in der Technik relevant ist wird in DIN EN ISO 14971 verwendet Dort definiert Sicherheit die Freiheit von nicht akzeptablen Risiken Im Englischen gibt es f r die Sicherheit zwei unterschiedliche Begriffe Security und Safety Mit Safety ist dabei die Verhinderung von Gefahren die von einem Prozessautomatisierungssystem ausgehen gemeint Ist ein System save bedeutet die dass zu keinem Zeitpunkt Menschen Umwelt oder andere Systeme gef hrdet sind Hier ist im Fehlerfall immer ein fail safe Verhalten gefordert Das System muss in einem sicheren Zustand verharren Bei vielen Automatisierungssystemen ist oft ein absoluter Stillstand ein sicherer Zustand Dies kann jedoch nicht verallgemeinert werden nicht in jedem Fall b
88. r dadurch entsteht maximal zwei bis drei Instruktionen lang ist InMo2003 8 2 Sicherheitsmechanismen ohne Betriebsystem Alle bisher vorgestellten Mechanismen des Schutzes gegen Ausf hrung von eingeschleustem Code sind Abh ngig von Betriebsystemen und Hardwarefunktionen In Embedded Systems in denen kein Betriebsystem vorhanden ist besteht dennoch die M glichkeit das Einschleusen von Code erheblich zu erschweren Im Folgenden werden Compilertechniken vorgestellt die den Stack sch tzen Allerdings ist keine der Techniken absolut sicher es existieren bereits Modelle die erfolgreich die Schutzmechanismen au er Kraft setzen GeRi2002 Ein Problem hierbei ist dass der Quellcode neu kompiliert werden muss es ist nicht m glich fremde Bin rdateien nachtr glich zu mit dem Sicherheitsmechanismus auszustatten Weiterhin muss erw hnt werden dass diese Mechanismen zwar mehr oder weniger gut gegen das ausf hren von fremdem Code funktionieren lokale Daten die nach dem bergelaufenen Buffer dennoch ver ndert werden k nnen und so Integrit t kompromittiert wird ohne dass ein Programmabsturz auftritt 8 2 1 StackGuard StackGuard wurde 1997 als Patch f r den GNU C Compiler entwickelt Die Idee von StackGuard liegt darin eine Sicherheitsbarriere ein so genannter Carnary innerhalb des Stackframes abzulegen Beim Kompilieren des Quelltextes erstellt der Compiler einen Funktionsprolog der den Carnary direkt vor der gesicherten R cksprungadresse
89. r gesamte Block gelesen werden das entsprechende Wort kann im RAM ge ndert werden danach muss das Flash gel scht werden und der Block kann als Gesamtes wieder geschrieben werden Diese Eigenschaft macht das Flash EEPROM nur f r Programmspeicher oder Speicher f r Daten die Blockweise verarbeitet werden sollen interessant SRAM Static RAM ist ein anderer Ansatz zum Speichern von Daten Hierbei handelt es sich um fl chtigen Speicher der eine Betriebsspannung zum Erhalt der Daten ben tigt Im Gegensatz zu dynamischen RAM DRAM wird aber keine Energie f r Refreshzyklen ben tigt SRAM ist sehr schnell und sehr kurze Zugriffszeiten Es eignet sich aber nur f r Feldger te mit eingebauter Batteriespannungsversorgung die Stromausf lle puffern kann NV RAM Non Volatile RAM ist ein nicht fl chtiger Speicher der die Vorteile von RAM Geschwindigkeit und Zugriffszeit mit dem Vorteil von EEPROM Energieunabh ngigkeit vereint Ein NVRAM Zelle besteht aus einem EEPROM mit SRAM kombiniert mit einer Ansteuerlogik Beim Start werden die Daten aus dem EEPROM ins SRAM geschrieben F llt die Versorgungsspannung aus bleiben die Daten permanent im EEPROM gespeichert Durch die 20 hohe Komplexitat sind die Speicherbausteine sehr teuer und haben eine geringe Kapazitat pro Flache Sie werden daher nur fiir geringe Datenmengen eingesetzt 2 2 Hardwareschnittstellen Zur Programmierung von Mikrocontrollern bestehen neben der M glichkeit ROMs extern zu
90. r noch in der Auffassung das Security by Obscurity ausreichend ist Die tr gerische Annahme dass sich niemand die Arbeit des Reverse Engineering macht und dass geheime Algorithmen zur Sicherheit ausreichend sind ist leider weit verbreitet 7 1 Einfache Schutzvorkehrungen Die Programmierung der Programmspeicher eines Systems ber standardisierte Programmierschnittstellen wurde bereits beschrieben Die Schnittstellen erlauben au erdem auch das Lesen aller Speicherbereiche Nachdem ein System ausgeliefert wurde soll aber kein Dritter in Produktautomatisierungssystemen auch nicht der Kunde in der Lage sein die Software auszulesen Nahezu alle Mikrocontroller unterst tzen daher so genannte Lockbits die die Programmierschnittstellen deaktivieren k nnen Dabei handelt es sich meist um einen Bitvektor in EEPROM Technologie der neben dem Schreib Leseschutz des Speichers noch andere Eigenschaften wie Abw rtskompatibilit t oder Aktivierung andere Chipfunktionalit ten wie Watchdog Timer beeinflusst Sind die Lockbits f r den Speicher gesetzt kann so kann der Controller nur nach einem kompletten Chip Reset wieder neu beschrieben werden dieser Reset l scht auch alle Speicherbereiche Das Verfahren eignet zum Schutz der Software gegen Angriffe von unerfahrenen Klasse I Angreifern Es stellt allerdings keinen Schutz gegen physikalische Angriffe dar Die Lockbits k nnen mit wenig Aufwand durch physikalische Angriffe auch von Klasse I Angreifer
91. rameter und die R cksprungadresse sch tzt Diese Technik ist als Patch f r gcc 3 4 vorhanden und ist in gcc Version 4 1 implementiert hnlich zu StackGuard wird hier wiederum wird hier ein zuf lliger Carnarywert eingef hrt der zu Beginn der Programmlaufzeit erstellt wird Wurde der Wert ver ndert wird eine Funktion aufgerufen die Logdaten schreibt und das Programm abgebrochen Eine zweite Sicherheitsmassnahme ist das umsortieren von Variablen Lokale Variablen werden so auf dem SE Stack angelegt dass sie vor den Arrays und Strukturen die Arrays enthalten liegen Dieses Vorgehen stellt sicher dass einfache Variablen nicht berschrieben werden k nnen wird ein Array berflutet so werden nur die nachfolgenden Puffer berschrieben Die Dritte Eigenschaft von SSP ist dass Funktionsparameter kopiert werden Dieses Kopieren erfolgt vor dem Umsortieren der Variablen das bedeutet dass die Argumente der Funktion ebenso gesch tzt werden Es werden niemals die originalen bergabeparameter benutzt sondern nur die Kopien Dadurch ist die Funktion weitestgehend gesch tzt In Abbildung 10 ist die Funktion func1 des Beispielprogrames aus Abbildung 7 dargestellt die mit der StackGuard Funktion von gcc Version 4 1 kompiliert wurde 08048445 lt funcl gt push Sebp mov esp sebp sub 50x28 Sesp mov 9s5 0x14 eax mov Seax OxfFfffffc ebp xor Seax eax movl S0x5 Oxffffffec ebp mov Oxc Sebp eax mov Seax
92. rden und dass die Ger te selbst meist klein sind im Gegensatz zu den Anlagenautomatisierungssystemen Bei Anlagenautomatisierungssystemen wird der technische Prozess in einem gro en Raum ausgef hrt man teilt den technischen Prozess auch in mehrere Teilprozesse auf Anlagenautomatisierungssysteme sind meist Einzelst cke z B Kraftwerke Raffinerien oder Gep cktransportsysteme an Flugh fen 1 2 2 Komponenten von Automatisierungssystemen Ein Automatisierungssystem ist eine Einheit die mit der Au enwelt dem technischen Prozess interagiert Dazu ist die Erfassung von physikalischen Gr en die den Prozess beeinflussen notwendig Diese Aufgabe bernehmen Sensoren Sensoren sind spezielle Ger te die eine physikalische Gr e erfassen und meist in eine elektrische Gr e umwandeln 14 Heutzutage sind Sensoren oft in komplexere Einheiten eingebettet die die erfassten Daten aufbereiten und tiber ein Kommunikationssystem zum Empfanger weiterleiten Um den technischen Prozess zu beeinflussen sind Aktoren erforderlich die gem den Informationen aus der Steuerung eine physikalische Gr e des Prozesses einstellen Auch diese Steller sind meist dezentral und mit einer Kommunikationseinheit an einen Nachrichtenkanal angegliedert In komplexen verteilten Systemen ist auch die Steuerung nicht zentralisiert Die Berechnung und Verarbeitung von Informationen wird in kleinere mehr oder weniger autonome abgekapselte Systeme unterteilt
93. resicherheit auf die Automatisierungstechnik bertragen Im ersten Teil werden die Grundlagen f r das Verst ndnis erarbeitet Dazu ist zun chst die Erkl rung von Begriffen und dem Aufbau von Automatisierungssystemen aus dem ersten Kapitel wichtig Kapitel zwei geht auf die verwendeten Speichertechnologien und Programmierschnittstellen ein da diese f r Angriffe eine entscheidende Rolle spielen Kapitel drei besch ftigt sich damit welche Softwaretechnologien in Automatisierungssystemen verwendet werden und wie Speicher verwaltet wird Kapitel vier bietet einen kurzen berblick ber die in Automatisierungsprojekten verwendeten Programmiersprachen und ihre Sicherheitsprobleme Der zweite Teil der Arbeit besch ftigt sich mit m glichen Angriffen und den bestehenden Schutzmechanismen In Kapitel f nf wird die Motivation von Angriffen auf verschiedene Systeme vorgestellt Angreifer Angriffe und Systeme werden klassifiziert Kapitel sechs stellt detailliert den Ablauf von Angriffen mittels Puffer berl ufen und die dadurch entstehende Gef hrdung von Systemen dar Im siebten Kapitel liegt der Schwerpunkt auf m glichen Schutzmechanismen gegen den Diebstahl geistigen Eigentums w hrend das achte Kapitel Mechanismen zur Abwehr und Erkennung der vorgestellten Angriffe mittels Puffer berl ufen vorstellt Der dritte praktische Teil der Arbeit besch ftigt sich mit der Evaluierung der identifizierten Gef hrdungen anhand eines eingebetteten Feldge
94. robing oder das Abh ren der Buskommunikation im System e Sidechannel Angriffe beobachten sekund re Gr en w hrend das System bestimmte Aktionen wie kryptographische Algorithmen durchf hrt Es wird zum Beispiel Ausf hrungszeit Energieverbrauch Spannungsschwankungen oder das Verhalten im Fehlerfall beobachtet Sie sind wie physikalische Angriffe sehr aufw ndig und erfordern viel Erfahrung und Zeit Angriffe k nnen entweder passiv im Sinne dass sie die Funktionsf higkeit des Systems nicht st ren sondern lediglich beobachten sein oder sie k nnen aktiv das Verhalten des Systems beeinflussen Der Angreifer wird meist mehrere Arten von Angriffen parallel ausf hren um seine Chancen das System zu kompromittieren zu erh hen So kann zum Beispiel gezeigt werden dass ber Sidechannel Attacken die den Energieverbrauch analysieren w hrend ein Mikrocontroller eine Softwareimplementierung des DES Algorithmus ausf hrt der Schl sselraum von 277 auf 2 verkleinert werden kann SrArSc2004 35 5 3 Klassifizierung von Angreifern Abhangig vom finanziellen Wert und der Art des geistigen Eigentums muss es gegen verschiedene Gruppen von Angreifern gesch tzt werden Abr91 teilt die Angreifer in drei Klassen ein Klasse I Clevere Au enstehende Sie sind oft sehr intelligent haben aber nur wenig Wissen ber den Aufbau des Systems Sie haben nur Zugang zu wenig aufw ndiger Ausr stung Sie nutzen oft existierende Schw chen des S
95. secesecsececeseecsaeceseceeeeeeaeecaeceeeseneennees 68 Abbildung 44 BusyBox Hardimnks sen 68 Abbildung 45 BusyBox kompilieren anreisen aan san hits 68 Abbildung 46 EEDK Ramdisk erstellen 2 lea 68 iv Abbildung 47 U Boot Images laden ceccccsccsssceeceeeseceecseceeeseecsaeceseceeeeeeaeecsaeceeeseeeenaees 69 Abbildung 48 Ocean Makeflei nenne Seed Eege Ri tR Es 69 Abbildung 49 Ocan installieren und Loden ce eccecssecsseceseceeceeescecsteceseeeeeeesseecsaeceeeseneeeaees 70 Abbildung 50 Ocan Kemelmodulverzetchnts nenn 70 Abbildung 51 Ocan Device Nodes und Userspace Tools 0022000200snsennseessnensnenennennnennn 70 Abbildung 52 ocan _load auf der Ramdek cece eccceeseeeseceeeceeeeeeseecaecnseceeeceeseecaeeneeseeeenaees 71 Abbildung 53 Erster Boot aus dem Flach 72 Tabellenverzeichnis Tabelle 1 Speichertechnologien SeSk05 vi Abkurzungsverzeichnis ANSI ASCII SPS ROM IT IC OTP ASIC PROM EPROM EEPROM RAM SRAM DRAM NV RAM ISP SPI JTAG MISO MOSI BSDL ELF MMU TLB American National Standards Institute American Standard Code for Information Interchange Speicher Programmierbare Steuerung Read Only Memory Information Technology Integrated Circuit One Time Programmable Application Specific Integrated Circuit Programmable ROM Erasable Programmable ROM Electrically Erasable Programmable ROM Random Access Memory Static
96. seriellen Kommunikation vorgibt dieser Takt wird immer vom Master vorgegeben Abbildung 2 ist eine schematische Darstellung einer SPI Kommunikation mit nur einem Slave Master Abbildung 2 SPI Kommunikation Master Slave DaKa2002 SPI wird von vielen Chipherstellern aber auch als M glichkeit zum Lesen und Schreiben auf die im Controller eingebauten Speicher bereitgestellt SPI ist einfach und ben tigt f r die Logik nur wenig Chipfl che Zus tzliche Leitungen sind anwendungsabh ngig so k nnen mehrere SS Slave Select Leitungen eingesetzt werden wenn ber dieselben Leitungen mehrere Slaves zu einem Bus zusammen gef gt werden Atmel benutzt zur Programmierung ihrer 21 Mikrocontrollerfamilien zus tzlich eine Reset Leitung und einen gemeinsamen Ground AtSPI2000 Das Programmierger t ist beim Schreiben von Chips immer der Master Dem Master muss bekannt sein welches Slaveger t programmiert werden soll Daf r sind von Controllerherstellern spezielle Opcodes vorgesehen Andere Opcodes erm glichen die Auswahl verschiedener Speicher Adressen und Kontrollregister um Code zu lesen oder zu schreiben Der Inhalt der Kontrollregister kontrolliert zum Beispiel ob ber SPI der Speicher gelesen oder beschrieben werden darf oder ob das Interface v llig deaktiviert ist Die Schreib Leseschutz kann danach nur durch einen vollst ndigen L schvorgang des gesamten Chips aufgehoben werden 2 2 2 JTAG IEEE 1149 1 Standard T
97. st zu starten EES addip setenv bootargs bootargs ip S ipaddr S serverip gatewayip S netmask S hostname off panic 1 baudrate 115200 bootargs root dev nfs rw nfsroot ip off panic 1 bootcmd run static_ip run net_nfs bootcount 10 bootdelay 5 boot file ulmage ethact SCC ETHERNET ethaddr 00 D0 93 07 D6 27 flash_nfs run nfsargs addip bootm S kernel_addr flash_self run ramargs addip bootm kernel_addr ramdisk_addr gatewayip 192 168 2 55 hostname Minilinux Areler SL 163 2 4127 kernel_addr 40400000 loads_echo 1 netdev eth netmask 255 255 255 0 net_nfs tftp 200000 S bootfile run nfsargs addip bootm nfsargs setenv bootargs root dev nfs rw nfsroot serverip rootpath preboot echo echo Welcome to the embedded world echo booting static 66 configuration echo ramargs setenv bootargs root dev ram rw ramdisk_addr 40100000 rootpath opt eldk3 1 ppc_8xx serial TOM823LDBBA3 E50 313 11315403 serverip 192 168 2 55 static_ip setenv ipaddr 192 168 2 127 setenv netmask 255 255 255 0 setenv gatewayip 192 168 2 55 setenv hostname Minilinux static_nfs setenv bootfile ulmage setenv serverip 192 168 2 55 setenv rootoath opt eleik3 i foe Bai stderr serial stdin serial stdout serial S Abbildung 39 U Boot printenv 9 3 4 Booten ber das Netzwerk Sind die Dienste auf dem Hostrechner gestartet reicht es im U Boot den DHCP Client d
98. stalliert und konfiguriert die aus Ramdisks oder dem Netzwerk starten Dieses Wissen wird mir in vielen zuk nftigen Arbeiten sehr n tzlich sein 10 2 Probleme Die Hauptprobleme bei meiner Studienarbeit waren Probleme mit der Infrastruktur in Brasilien Es war manchmal unm glich zu arbeiten weil einen halben Tag lang keine Internetverbindung des Campus bestand oder der Storm ausgefallen war Weiterhin war es unm glich in Manaus ein Nullmodemkabel zur seriellen Verbindung zu kaufen nachdem ich in vier verschieden L den danach gesucht habe und mir niemand weiterhelfen konnte musste ich ein solches Kabel selbst l ten Mit den Microsoft Word Makros zur Dokumentverwaltung gab es Anfangs gro e Probleme die sich aber durch Updates der Software beseitigen lie en 75 Literaturverzeichnis LaG 1999 FeGu2006 G PA1 DaKa2002 AtSPI2000 TIS2000 DoLe2000 IEEE1149 1 MSNT4 StZe1995 DULG BusyBox TQOSTK03 TQM850L ubuntu RFC 2131 Lauber Rudolf G hner Peter Prozessautomatisierung 1 3 Aufl Berlin Heidelberg New York Springer Verlag 1999 Felix Gutbrodt IT Sicherheit auf der Feldebene von Automatisierungssystemen G hner Peter Umdruck zur Vorlesung Prozessautomatisierung 1 http www ias uni stuttgart de pal Kalinsky David Introduction to Serial Peripheral Interface Embedded Systems Design http www Embedded com Atmel Corporation In Sys
99. steme von denen im klassischen IT Bereich stark Dieses Kapitel geht auf einige f r diese Arbeit wichtige Aspekte der Programmierung und Softwareumgebung in Automatisierungssystemen ein 3 1 Programmumgebung Je nach Anwendung werden Programme zur Bearbeitung des eigentlichen Automatisierungsprozesses in unterschiedlichen Umgebungen ausgef hrt Der Entwickler muss entscheiden ob ein Programm als Stand alone in einer Runtime der auf einem Betriebssystem l uft 3 1 1 Stand Alone Sind Prozessoren exklusiv f r eine bestimmte Aufgabe reserviert l uft meist nur ein Ausf hrungsthread auf dem Prozessor in diesem Falle verzichtet man auf ein teures Echtzeitbetriebssystem Das Programm l uft entweder in einer Endlosschleife oder wird bei Bedarf von einem Interrupt gestartet und beendet sich nach erfolgreicher Ausf hrung wieder Dies hat den Vorteil dass der Mikrocontroller in einen Energiesparmodus versetzt werden kann Ohne Betriebssystem hat der Programmierer vollen direkten Hardwarezugriff alle I O Ports und Kontrollregister des Systems sind direkt sichtbar und k nnen beliebig angesteuert werden Auch muss die gesamte Speicherverwaltung vom Programmierer selbst bernommen werden Diese Art der Entwicklung ist sehr teuer und fehleranf llig da die gesamte Funktionalit t neu geschrieben und getestet werden muss Die Entwicklung wird erst einfacher wenn bereits Standardbibliotheken auf die Zielarchitektur portiert sind 3 1 2 Runtimeumgebung
100. t en das Bewusstsein f r die Bedeutung von Security in Automatisierungssystemen unter Ingenieuren 1 2 Automatisierungssysteme Ein Automat ist ein selbstt tiges arbeitendes technisches System LaG61999 Somit steht der Begriff Automatisierung ganz allgemein f r Maschinen Ger te oder Anlagen die mehr oder weniger selbstt tig arbeiten Notwendig oder w nschenswert wurden sie um dem Menschen stupide und monotone oder sehr komplexe Arbeitsvorg nge abzunehmen Unter einem Automatisierungssystem versteht man nun die Summe aller notwendigen technischen Einrichtungen die f r die Automatisierung erforderlich sind Des Weiteren ist ein Prozessautomatisierungssystem ein Automatisierungssystem in dem ein technischer Prozess also ein Vorgang der in einem technischen System abl uft und den Zustand von Materie Energie oder Informationen ndert abl uft 1 2 1 Produktautomatisierung und Anlagenautomatisierung Es wird zwischen mehreren speziellen Prozessautomatisierungssystemen unterschieden in dieser Arbeit ist vor allem die Unterscheidung von Produkt und Anlagenautomatisierungssystemen von Bedeutung da sich diese Arten durch unterschiedliche Angriffsmotive und Angriffsvektoren charakterisieren Bei so genannten Produktautomatisierungssystemen l uft der technische Prozess in einem Produkt z B Mobiltelefon Waschmaschine ab Charakteristisch fiir Produktautomatisierungssysteme ist die hohe St ckzahl in der sie produziert we
101. t _main gt push Sebp Funktionsprolog mov Sesp sebp sub 0x28 esp and SORE IE IB EI el SSO mov 0x0 Bea add SOxf Bea add SOxf Bea shr S0x4 Bea shl S0x4 Bea mov Seax 0xfffffffO Sebp mov OxfffffffO Sebp seax call LL Leise Cygwin spezifisch unter Linux call 4011a0 lt ___main gt nicht vorhanden Anlegen der lokalen Variablen A0 movl Ss Weiten Sea movl SOx7 Oxfffffff8 Sebp movl S0x0 Oxfffffff4 Sebp mov Oxfffffff8 Sebp seax mov Seax 0x4 Sesp mov Oxfffffffic sebp seax mov Seax Tesp call Zulte Cum mov Seax OxfffffffF4 Sebp mov Oxfffffff4 Sebp seax mov Seax 0x8 Sesp lea Oxfffffff4 Sebp seax mov Seax 0x4 Sesp movl 0x403000 Sesp call 2 let lt eege mov Oxfffffff4 Sebp seax leave weit 004010c3 lt _funcl gt push Sebp mov Sesp sebp sub 0x38 esp movl SOx5 Oxfffffff4 Sebp mov Oxc Sebp eax mov Seax 0x4 Sesp mov 0x8 Sebp eax mov Seax esp canki AOLO TS neue mov Seax 0xfffffff4 ebp lea Oxffffffd8 Sebp seax mov Seax esp call 4011b0 lt _gets gt mov Oxfffffff4 Sebp seax leave CSR OOAOMO Sa lt PUTOS push Sebp mov Sesp sebp sub S0x4 esp mov Oxc Sebp seax add 0x8 Sebp seax sub 0x402000 Seax mov Seax Oxfffffffc Sebp mov Oxfffffffic Sebp seax leave ret auf dem Stack mit positivem Offset zum ebp variab
102. t hier nicht die Eignung f r beliebige Aufgaben im Vordergrund sondern die Erf llung einer besonderen bestimmten Aufgabe Das System muss seine Aufgabe zuverl ssig ber eine lange Zeit erf llen Die Software von Embedded Systems unterliegt sehr oft harten Echtzeitbedingungen und muss von hoher Qualit t sein Embedded Systems sind also Feldger te im weiteren Sinne Die meisten erfordern keine oder nur minimale Benutzerinteraktion und werden oft vom Benutzer gar nicht bemerkt Ein Beispiel hierf r w re ein Steuerger t eines Kraftfahrzeuges aber auch ein Mobiltelefon oder eine Videospielkonsole Der Benutzer braucht von der Existenz und Software des Kraftfahrzeuges nichts zu wissen und interagiert damit nur indirekt Mit einer Spielkonsole interagiert er direkt mit der Software aber das Betriebssystem bleibt ihm verborgen Die hohe Zahl an ausgelieferten Produkten und die f r den Endbenutzer unzug nglichen Programmierschnittstellen machen es au erordentlich schwierig und kostenintensiv Fehler in der Software durch Aktualisierung zu beheben 1 2 5 Mikrocontroller Mit zunehmender Integration der Halbleitertechnologie wurde es m glich die Gr e von Embedded Systems stark zu reduzieren und immer mehr Funktionalit t bei gleicher Leistung auf einem einzigen Chip zuintegrieren Ein Mikrocontroller ist ein Computer auf einem Chip mit Programm Datenspeicher und Kommunikationsschnittstellen Viele Mikrocontroller haben 16 selbst einen Oszillat
103. t sich selbst dadurch dass alle sensiblen Daten bei einem bemerkten Eingriff gel scht werden e Sicherheitslevel 4 verlangt einen umfassenden Schutz gegen Zugang zum kryptographischen Modul Wie in Level 3 muss das System alle empfindlichen Daten l schen Die Sensoren m ssen ferner nicht nur das Geh use sondern auch die Umgebung auf Unregelm igkeiten beobachten So d rfen keine starken Temperatur Spannungs oder Kapazit tsschwankungen auftreten die auf einen physikalischen Angriff hindeuten k nnen Dass ein System als sicher gilt m ssen vier wichtige Kriterien erf llt werden Zun chst gilt es einen Angriff so weit wie m glich zu verhindern dies schlie t Schutz gegen physikalische Angriffe und Sidechannel Angriffe ein Ein zweites Kriterium ist dass ein Angriff vom System selbst bemerkt werden muss Hierbei ist die Zeitspanne zwischen Angriffszeitpunkt und Alarm bzw Reaktion von entscheidender Bedeutung In dieser Zeitspanne hat der Angreifer Kontrolle ber das System Das dritte Kriterium ist welche Gegenma nahmen bei einem registrierten Angriff ergriffen werden das System muss in der Lage sein autonom angemessen auf einen Angriff zu reagieren und den Schaden so gering wie m glich halten Die vierte und letzte Stufe ist die Beweissicherung f r den Systembetreiber dieser muss in der Lage sein nach einem 31 Angriff oder Angriffsversuch aufgrund der gespeicherten Daten den Angriff nachzuvollziehen um zuk nftige Angriffe gl
104. tem Programming 11 2000 Revision 0943C 11 00 http www atmel com Tool Interface Standards Portable Formats Specification Version 1 1 ELF Executable and Linkable Format http www x86 org intel doc tools html Doug Lea A Memory Allocator Beschreibung http gee cs oswego edu dl html malloc html Quellcode mit Dokumentation ftp g oswego edu pub misc malloc c IEEE 1149 1 http www ieee org Microsoft Corporation Windows NT4 Eula download microsoft com download platformsdk Comctl32 5 80 2614 3600 W 9XNT4 EN US license htm Zeigler Stephen F Ph D Comparing Development Costs of C and Ada http www adaic com whyada ada vs c cada_art html Denx GmbH Wolfgang Denk Denx U Boot and Linux User Guide http www denx de wiki DULG Manual http www busybox net TQ Components GmbH TQSTK Benutzerhandbuch http www tq components de TQ Compontents GmbH TQM850L Benutzerhandbuch http www tg components de http www ubuntulinux org Internet Engineering Task Force R Dorms Dynamic Host Configuration Protocol 03 1997 http www ietf org rfc rfe2131 txt RFC1350 RFC2347 RFC1813 U Boot Teraterm ocan Abr91 SrArSc2004 MaKu1998 DS2003 DS5240 InMo2003 AlOn1996 JP1986 GeRi2002 PaX wikiNX wikiPaX FIPS 76 Internet Engineering Task Force K Sollins The TFTP Version 2 07 1992 http www ietf org rfc rfe1350 txt I
105. tenv eingesehen werden Neue Variablen werden mit setenv lt Variable gt lt Wert gt gesetzt Soll eine Variable wieder gel scht werden kann dies mit setenv lt Variable gt erreicht werden Um die Variablen in das ROM zu schreiben bietet U Boot den Befehl saveenv Dieser Befehl hebt den Schreibschutz f r gesch tzte ROM Sektoren auf schreibt die Variablen und setzt den Schutz wieder ber Umgebungsvariablen lassen sich auch einfache Batchskripte erstellen Diese Batchskripte k nnen danach mit run lt Variable gt ausgef hrt werden Ein Beispiel dazu ist das in Abbildung 39 aufgef hrte net_nfs Bei run net_nfs werden folgende Batchskripte der Reihe nach ausgef hrt e Uber tftp wird vom Server die Datei mit dem Namen boot file ins RAM an die Stelle 0x200000 geladen bootfile wird durch den Inhalt der Umgebungsvariable bootfile ersetzt e das Skript nfsargs wird ausgef hrt das die Variable bootargs die Bootparameter f r Linux setzt e Das Batchskript addip setzt zus tzliche Bootparameter f r den Kernel zur statischen Netzwerkkonfiguration e Zuletzt wird der Befehl bootm ausgef hrt der dann das ins RAM kopierte Kernel Image startet Beim Einschalten des Systems wird automatisch zuerst das Skript preboot ausgef hrt Danach wird bootdelay gewartet und dann das Skript bootcmd ausgef hrt Das bedeutet dass die Variable bootcmd so gesetzt werden muss dass das System in der Lage i
106. tes im externen RAM untereinander durch die Adressverschl sselung vertauscht worden und zus tzlich wird durch die Datenverschl sselung 48 jeder Bytewert einzeln mit einer eigenen adressabh ngigen 256 elementigen Permutationstabelle ver ndert MaKu1998 Zus tzlich zu diesen Mechanismen der Verschl sselung der echten Buszugriffe erzeugt beim DS5002FP ein Pseudozufallszahlen Generator immer wenn die CPU nicht auf den Speicherbus zugreift einen Scheinzugriff mit Dummy Daten auf eine beliebige Dummy Adresse um dem Angreifer das abh ren und entschl sseln mittels Plaintextattacken zu vereiteln Des Weiteren enth lt der DS5002FP einen echten Zufallszahlengenerator dies Zufallszahlen k nnen f r user implementierte kryptographische Algorithmen verwendet werden Gegen physikalische Angriffe sind auf dem Mikrocontroller mehrere Sensoren installiert die laufend Umweltparameter wie Temperatur berwachen Die Variante DS5002FPM erf llt die Spezifikation MODH Dabei ist der Die von einem Netz aus feinsten Metalldr hten umgeben der Widerstand wird von einer speziellen Sensorschaltung laufend berwacht ndert sich der Widerstand spricht der Alarmmechanismus an und die Schl sselregister und die Speicher werden sofort gel scht DS2003 DS5240 Ein Spezieller Pin des Prozessors ist dazu vorgesehen den Firmwaremonitor zu aktivieren der einen neuen Schl ssel generiert die Software kann dann per seriellem Interface SPI in die CPU geladen
107. tet verschiedene Sicherheitsmethoden die erste war PAGEEXEC Diese Sicherheitsmethode beruht darauf Seiten des Virtuellen Speichers als ausf hrbar zu markieren PaX kann das NX Bit nutzen falls dies die Zielarchitektur unterst tzt dies geschieht dann ohne Performanceeinbu en Ist kein NX Bit vorhanden so emulierte PAGEEXEC dieses Verhalten Auf x86 Prozessoren auf denen kein NX Bit existiert wird das Supervisor Bit daf r verwendet Auf IA 32 Architekturen h lt die MMU typischerweise zwei verschiedene TLB Translation Lookaside Buffer zur Dereferenzierung von Daten DTLB und Instruktionen ITLB Wird auf eine Seite zugegriffen die noch nicht im ITLB liegt wird ein Protection Fault von der MMU an den Kernel gemeldet der entscheidet dann ob die Ausf hrung der Seite erlaubt ist und l dt sie oder ob es sich um eine unzul ssige Ausf hrung einer Datenseite handelt in diesem Fall wird der Prozess beendet Ohne NX Bit ist die PAGEEXEC Methode ein nicht vernachl ssigbarer Verwaltungsoverhead Mit dem mprotect Systemcall kann die Ausf hrberechtigung einer Speicherseite ver ndert werden PaX stell sicher dass eine Seite entweder ausf hrbar oder beschreibbar ist Eine andere Methode ist SEGMEXEC diese halbiert den Adressraum eines Prozesses sind Seiten im Adressraum 0 Ox5fffffff sind ausf hrbar und Seiten von 0x60000000 Oxbfffffff werden nichtausf hrbar als Datenseiten interpretiert 0xc0000000 Oxf
108. wird als Anschluss f r eine Terminalkonsole benutzt und einen Ethernetanschluss f r das Laden von Software Die Eingesetzte Version 400 der Platine verf gt dar ber hinaus ber einen USB Anschluss allerdings ist es nicht gelungen in der vorhandenen Kernelversion die Treiber f r die USB Unterst tzung in Linux erfolgreich zu kompilieren Die genaue Beschreibung der Platine und aller Schnittstellen ist in TQSTK03 zu finden 9 1 2 Das Minimodul TQM850L Das Minimodul TQM850L der Firma TQ Components ist ein komplettes Embedded System mit Freescale PowerPC Prozessor Speicher und integrierten Kommunikationsschnittstellen Die eingesetzte Version TQM850L 300 arbeitet mit dem Prozessor PPC823 mit einer Taktfrequenz von 50 MHz ist mit 16 MB DRAM und 8 MB Flash ausgestattet Die Kommunikation ist direkt in den Prozessor integriert Der Kommunikationsprozessor unterst tzt CAN Ethernet und RS232 welche im Weiteren vor allem bei der Konfiguration eines Kernels wichtig sein werden 56 Die Standardeinstellung des prim ren RS232 Ports X18 der f r die Bootkonsole benutzt wird ist 115200 8N1 f r das Kommunikationsprotokoll 115200 bps ohne Parity Bit 1 Stopbit kein Handshake Weitere Informationen sind dem Datenblatt in TQM850L zu entnehmen 9 2 Der Hostrechner F r die Entwicklung von Software und die Bereitstellung der Boot Images f r die Platine ist ein Rechner mit RS232 Schnittstelle und Ethernetanschluss n tig Als Betriebsystem wurd
109. ysikalische Speicheradressen abgebildet Dieser Speicherraum wird dem Prozess beim Start exklusiv vom Betriebsystem zugesichert versucht ein anderer Prozess auf eine Adresse zuzugreifen die nicht in seinem Adressraum ist ist dies ein schwerwiegender Fehler und der Prozess wird vom Betriebssystem beendet Beim Laden und Starten des Programms wird zun chst ein St ck zusammenh ngender Speicher gem f r den Programmcode alloziert allgemein wird dieser Speicherbereich als text Sektion bezeichnet Ebenso wird f r die anderen Sektionen rodata data und bss Speicher alloziert Mittels Memory Mapped Files Mechanismus werden die Sektionen der Datei auf die Seiten des virtuellen Speichers abgebildet erst beim ersten Zugriff werden diese in das physikalische RAM geladen Dies hat neben der Ladegeschwindigkeit weiter den Vorteil dass kein Speicher f r noch nicht ben tigten Programmcode oder Daten benutzt wird Die Sektionen text und rodata sind als read only markiert und k nnen nicht mehr ver ndert werden Sollte ein Programm versuchen sich selbst zu ver ndern ist das ein fataler Programmierfehler und das Betriebsystem beendet den Prozess Danach wird die got Sektion modifiziert alle absoluten Adressen von Funktionsaufrufen und Symbolen werden auf die momentan g ltigen Adressen der externen Bibliotheken im Speicher umgeschrieben Der Stack ist ein einfacher LIFO Speicher f r lokale Variablen Argumente f r Funktionen und R cksprunga
110. ystems aus anstelle neue zu schaffen Beispiele sind Studenten oder Hobbyelektroniker Klasse II Erfahrene Insider Sie haben eine fundierte Ausbildung und Erfahrung mit der Materie Sie haben unterschiedlich gute Kenntnis ber die Komponenten Systems haben aber m glicherweise Zugang zu den meisten davon Oft haben sie auch Zugang zu hoch entwickelter Spezialausr stung zur Untersuchung von elektronischen Systemen Beispiele hierf r sind ehemalige Mitarbeiter oder Mitarbeiter des Herstellers Klasse IU Zahlungskr ftige Organisationen Sie sind in der Lage Spezialistenteams zusammenzustellen die mit gro en finanziellen Mitteln ausgestattet sind Sie k nnen eine detaillierte Analyse der Systeme durchf hren und ausgereifte Angriffe entwickeln Klasse HI Angreifer haben Zugang zu den aufw ndigsten modernsten Laborger ten wie Chiptestarbeitspl tze Elektronenstrahlmikroskope oder Laser Sie k nnen eventuell Klasse I Angreifer als Teammitglieder besch ftigen Beispiele f r Klasse IIl Angreifer sind die Labors von Regierungsbeh rden oder gro en Firmen 5 4 Sicherheitslevel eines Systems Um ber Sicherheitsstufen zu sprechen muss ein System in verschiedene Sicherheitsklassen eingeteilt werden Der Vorschlag von Abr91 wird von anderen Autoren bernommen und hat sich als sinnvoll erwiesen Danach wird ein System in 6 Klassen eingeteilt ZERO Keine speziellen Sicherheitsmassnahmen ergriffen Beispiel Standard PC in einem nic
111. zeitbibliotheken wie Java einen Garbage Collector der neben der Aufgabe Speicherplatz von nicht dereferenzierbaren Objekten wieder freizugeben auch die Aufgabe hat den Speicher defragmentieren Es ist nicht zwingend ein Garbage Collector zur Verhinderung von Speicherfragmentierung n tig unter Linux implementiert die glibc einen nicht fragmentierenden Heap Der dort verwendete Heapverwaltungsalgorithmus ist eine Variante des Algorithmus von Doug Lea DoLe2000 Zur Zuweisung von Speicher benutzt das Verfahren eine Best Fit Strategie jedoch f r Speicheranfragen von weniger als 256 Bytes weicht das Verfahren ab falls kein exakt passendes 30 Stiick freier Speicher gefunden wurde und benutzt Speicher der an das Stiick angrenzt das fiir die letzte Anfrage an kleinen Speicher benutzt wurde F r gro e Speicherbereiche gr er als 256 kB verwendet malloc falls es das Betriebssystem erm glicht Memory Mapping Die Best Fit Methode ist prinzipbedingt aufw ndig Daher werden die freien Speicherbl cke in Klassen so genannte Bins sortiert nach Gr e unterteilt Diese unterschiedlichen Verfahren helfen die Fragmentierung gering zu halten k nnen das Auftreten aber nicht verhindern Bei jedem Aufruf von free wird berpr ft ob die beiden physikalisch angrenzenden Bl cke des Speichers frei sind Ist einer der beiden Bl cke frei werden sie zu einem zusammengefasst und in die Liste der Bins eingetragen Alle Speicherbl cke
Download Pdf Manuals
Related Search
Related Contents
Manual Avanzado - Olympus America HP Series - Hoffer Flow Controls, Inc Content Personalization User's Guide manuel d`installation ci-joint Dell PowerEdge Rack Enclosure 4210 Planning Guide Classic 105.3 - Aktenvernichter Testcenter 能門柱 【。SP。LE/オスポ一ル】 施工説明書 Home Automation SECURITY SYSTEM Home Security System User Manual Copyright © All rights reserved.
Failed to retrieve file