%!TEX root = booka4.tex \section{Verteidigungsmaßnahmen}\label{ch:defense} Wie bereits in \cref{sec:sicherheitslage} beschrieben, sind die Arten der Angriffe nicht neu. Daher sind auch die Verteidigungs\-maßnahmen nicht spezifisch für den Automobil\-bereich, sondern allgemeiner software\-technischer Art. Alle von Checkoway~et~al. beschriebenen Angriffe basieren zum einen auf Reverse-Engineering, also der Rekonstruktion der Software-Systeme und Protokolle, zum anderen auf Fehlern in der Software. Das Reverse-Engineering wurde in einigen Fällen laut Checkoway~et~al. stark vereinfacht, da Debugging-Symbole in der Software waren. Diese können und sollten entfernt werden. \subsection{Datenvalidierung}\label{sec:validation} Der CAN-Bus ist eine große Schwachstelle der IT-Sicherheit in Autos. Über ihn müssen viele ECUs kommunizieren und einige, wie das Autoradio, werden nicht als sicherheits\-kritisch wahrgenommen. Gleichzeitig sind sicherheitskritische ECUs an dem selben CAN-Bus angeschlossen. Daher ist es wichtig die Nachrichten, welche über den CAN-Bus empfangen werden, zu filtern. Die Informationen müssen auf Plausibilität geprüft werden. Insbesondere bei Software-Updates sollte anhand einer kryptographischen Signatur überprüft werden, ob das Update vom Hersteller stammt. Außerdem sollten laut Checkoway~et~al. die Diagnose\-geräte Authentifizierung und Verschlüsselung wie beispielsweise OpenSSL nutzen. \subsection{Buffer Overflows} Gegen Buffer-Overflow-Angriffe können zum einen Sprachen wie Java oder Rust verwendet werden, welche die Einhaltung der Bereichs\-grenzen automatisch überprüfen. Des Weiteren kann anstelle der C-Funktion \verb+strcpy()+ die Funktion \verb+strncpy()+ verwendet werden, welche die Anzahl der zu schreibenden Zeichen begrenzt~\cite{Eckert2012}. Ein weiteres Konzept zum Schutz vor Buffer-Overflow-Angriffen sind Stack Cookies~\cite{Bray2002}. Stack Cookies sind Werte die auf den Stack, direkt nach den Puffer geschrieben werden. Bevor der Sprung zurück in die aufrufende Funktion durchgeführt wird, wird die \verb+XOR+ Operation auf den Stack Cookie und die Rücksprung\-adresse ausgeführt. Der so errechnete Wert wird mit dem erwarteten Wert verglichen. Falls es eine Abweichung gibt wird nicht die \verb+RET+ Operation ausgeführt, sondern in eine Sicherheits\-routine gesprungen, die diesen Fall behandelt. \subsection{Code-Qualität} Code Reviews und IT-Sicherheits\-audits können solche Sicherheits\-lücken aufdecken~\cite{Howard2006}. Code Reviews können teilweise automatisch mit Werkzeugen zur statischen Code Analyse durchgeführt werden~\cite{McGraw2008}. Insbesondere Fahrzeuge welche typischerweise von der Feuerwehr, der Polizei oder von Rettungsdiensten eingesetzt werden sollten --- unabhängig vom Hersteller --- überprüft werden. Eine weiterer wichtiger Stützpfeiler für sichere Software sind schnell ausgelieferte Sicherheits\-aktualisierungen. Dazu gehört laut~\cite{Mahaffey2015} unter anderem ein System zum mobilen versenden von Aktualisierungen an Autos mit Mobilfunk\-verbindung.