Zum Hauptinhalt springen

8. Sicherheitsüberlegungen

Eine netzwerkzugewandte Anwendung kann Schwachstellen in ihrer Verarbeitungslogik für eingehende Daten aufweisen. Komplexe Parser sind wohlbekannt als wahrscheinliche Quelle solcher Schwachstellen, etwa der Möglichkeit, einen Knoten aus der Ferne zum Absturz zu bringen oder sogar beliebigen Code darauf aus der Ferne auszuführen. CBOR versucht, die Möglichkeiten zur Einführung solcher Schwachstellen zu verringern, indem es die Komplexität des Parsers reduziert und dem gesamten Bereich kodierbarer Werte nach Möglichkeit eine Bedeutung gibt.

Angriffe zur Erschöpfung von Ressourcen könnten versuchen, einen Decoder dazu zu verleiten, sehr große Datenelemente (Zeichenfolgen, Arrays, Maps) zu allozieren oder die Stack-Tiefe durch tief verschachtelte Elemente auszuschöpfen. Decoder müssen über ein angemessenes Ressourcenmanagement verfügen, um diese Angriffe abzumildern. (Elemente, für die sehr große Größen angegeben werden, können auch versuchen, Schwachstellen durch Ganzzahlüberlauf auszunutzen.)

Anwendungen, in denen ein CBOR-Datenelement von einer Prüffunktion untersucht und später von einer anderen Anwendung verwendet wird, können Schwachstellen aufweisen, wenn mehrere Interpretationen des Datenelements möglich sind. Beispielsweise könnte ein Angreifer doppelte Schlüssel in Maps und Genauigkeitsprobleme bei Zahlen ausnutzen, um die Prüffunktion ihre Entscheidungen auf eine andere Interpretation stützen zu lassen als die, welche die zweite Anwendung verwenden wird. Protokolle, die in einem Sicherheitskontext verwendet werden, sollten so definiert sein, dass diese mehrfachen Interpretationen zuverlässig auf eine einzige reduziert werden. Um dies zu erleichtern, sollten in solchen Kontexten eingesetzte Encoder- und Decoder-Implementierungen mindestens einen Strict-Modus bereitstellen (Abschnitt 3.10).