%!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.
