Coders Conquer Security: Share & Learn Series - Padding Oracle

Veröffentlicht 24. Jan. 2019
von
FALLSTUDIE

Coders Conquer Security: Share & Learn Series - Padding Oracle

Veröffentlicht 24. Jan. 2019
von
Ressource anzeigen
Ressource anzeigen

Während Padding Oracle wie ein wirklich schlechter Name für eine alternative Rockband klingt, handelt es sich tatsächlich um eine Sicherheitslücke, die von Angreifern genutzt werden kann, um Informationen zu entschlüsseln, ohne den Verschlüsselungscode zu kennen.

In Bezug auf die Gesamtschwierigkeit für einen Angreifer liegt dieses Problem an der Spitze der Skala. Wir sprechen hier nicht von einem magischen Entschlüsselungsknopf, sondern von einem mühsamen Prozess, bei dem Hacker Fehlermeldungen untersuchen können, die ihnen in Bezug auf das Auffüllen von Zellen geschickt wurden, und dies nutzen, um zu bestimmen, wo verschlüsselte Daten enden und das Auffüllen beginnt. Sie können dann verschiedene Bits innerhalb der Verschlüsselung herausfinden und sie möglicherweise knacken, wenn sie genug Zeit und Input zur Untersuchung haben.

Glücklicherweise gibt es einige relativ einfache Schritte, die einem Angreifer die Möglichkeit nehmen können, Padding-Orakel zum Entschlüsseln verschlüsselter Daten zu verwenden. In dieser Folge lernen wir:

  • Wie es funktioniert
  • Warum diese Sicherheitslücke so gefährlich ist
  • Wie Sie Schutzmaßnahmen ergreifen können, um dies zu verhindern.

Wie funktioniert das Padding Oracle?

Cipher Block Chaining (CBC) ist eine Möglichkeit, eine Blockchiffre zu erstellen, bei der eine ganze Folge von Informationsbits, z. B. in einer Datenbank gespeicherte Zellen, mit einem Chiffrierschlüssel verschlüsselt wird, der für die gesamte Informationskette gilt. Bei der Verwendung von CBC hängt die Verschlüsselung eines einzelnen Blocks des Chiffriertextes von allen vorangehenden Blöcken ab. Theoretisch macht dies die Verschlüsselung extrem stark, da alles, selbst die Neuanordnung der Blöcke, die Daten beschädigt.

Das Problem bei CBC-Chiffren (und überhaupt bei allen Blockchiffren) ist, dass sie nur mit Blöcken exakter Größe verschlüsselt werden können. Normalerweise wird dies in 8- oder 16-Byte-Größen gemacht. Was passiert also, wenn CBC 2 Byte Daten in eine 16-Byte-Chiffretext-Einheit einpassen muss? Es verwendet Auffüllungen, im Grunde nur unsinnige Zeichen, um die Lücken zu füllen und die Einheit auf eine angemessene Größe zu bringen.

Die meisten Auffüllungsschemata sind bekannt, wobei PKCS#7 eines der beliebtesten ist, sodass Angreifer wissen könnten, welche Art von Auffüllung verwendet wird. Wenn der CBC z. B. fünf Zeichen in einem Block auffüllen muss, würde PKCS#7 den Byte-Wert 0x05 verwenden, der fünfmal hinter dem Klartext wiederholt wird.

Angreifer nutzen ihr Wissen über CBC- und Padding-Schemata, um Abfragen an einen Host-Server zu senden, der auch als Orakel bezeichnet wird. Wenn sie Zugriff auf die richtigen Tools haben, können sie den Server dazu zwingen, ihnen mitzuteilen, ob das Padding in ihrer Anfrage falsch ist. Zu diesem Zweck können sie für jedes Byte in der Chiffre einen Zyklus von null bis 255 durchlaufen, bis der Server ihnen mitteilt, dass das Padding korrekt ist. Dann gehen sie zur nächsten Einheit über und wiederholen den Vorgang, wobei sie in jedem Fall aufzeichnen, wo das Padding beginnt.

Dadurch können sie die Nachricht oder sogar die Zelle nicht entschlüsseln, aber sie könnten jedes Glied in der Kette in Bezug darauf abbilden, wo der Klartext endet und das Padding beginnt. Möglicherweise können sie auch XOR-Berechnungen verwenden, um den Wert des letzten Bytes des ursprünglichen Klartextes herauszufinden.

Warum ist Padding Oracle so gefährlich?

Der Grund, warum ein Hacker so viel Arbeit in das Brechen der Verschlüsselung stecken würde, ist die mögliche Auszahlung. Nur wenige Leute verschlüsseln Dinge, die nicht wertvoll sind. Die Gefahr für die Host-Organisation hängt von den Daten ab, die kompromittiert werden. Dazu gehören Passwörter, Benutzerkonten, Finanzdaten, Kreditkartennummern, Patientendaten, vertrauliche Kommunikation oder eine beliebige Anzahl von begehrten und wertvollen Informationen.

Die Verwendung von Padding-Orakel könnte auch das Einfallstor für nachfolgende Angriffe sein. Wenn ein Angreifer mithilfe von Padding Orakel z. B. Passwörter stehlen kann, ist es ein Leichtes, seine Privilegien zu erhöhen und tiefer in ein Netzwerk einzudringen.

Jeder denkt bei Verschlüsselung an die ultimative Verteidigung gegen Schnüffelei oder Kompromittierung. Das Hin und Her zwischen der Verschlüsselungswissenschaft und denen, die sie brechen wollen, dauert jedoch schon seit Jahrhunderten an. Das Padding-Orakel ist nur eine Methode, die Angreifern einen Vorteil verschafft.

Padding-Oracle-Angriffen eine harte Landung verpassen

Glücklicherweise gibt es eine ganze Reihe von Möglichkeiten, Padding-Orakel zu verhindern. Eine der besten ist die Verwendung einer stärkeren Verschlüsselungsbetriebsart wie Galois/Counter Mode (GCM) oder Offset Codebook Mode (OCB). Er unterscheidet sich von CBC dadurch, dass er eine Chiffrierblockgröße von 128 Bit verwendet. Außerdem wird für jeden Datenblock ein Zähler verwendet, aus dem dann der Chiffretext erstellt wird. Mit anderen Worten, es ist nicht anfällig für Padding-Orakel-Angriffe.

Die Implementierung guter Fehlerbehandlungskontrollen kann die Erfolgschancen eines Angreifers ebenfalls stark beeinträchtigen. Da Padding-Orakel-Angriffe auf Informationslecks beruhen, sollten Sie bei Ver-/Entschlüsselungsfehlern generische Fehlermeldungen anstelle von spezifischen Padding-Fehlern zurückgeben.

Sie können auch einen Message Authentication Code (MAC) implementieren. MAC-Werte schützen sowohl die Integrität als auch die Authentizität der Daten, indem sie es Verifizierern ermöglichen, jede Änderung des Nachrichteninhalts mithilfe eines geheimen Schlüssels zu erkennen.

Schließlich erfordern alle Padding-Orakel-Angriffe wiederholte Abfragen. Es können über 200 Anfragen gestellt werden, um das Auffüllschema für eine einzelne Zelle herauszufinden, multipliziert mit der Anzahl der Informationseinheiten, die in der Kette geschützt werden. Indem Sie die Anzahl der Anfragen, die von derselben Quelle kommen, beschränken, können Sie Padding-Orakel-Angriffe unterbinden, indem Sie einem Angreifer den Zugriff verweigern, bevor er seinen Versuch wirklich starten kann.

Weitere Studie zum Padding-Orakel

Jede Methode, mit der ein Angreifer sensible Informationen entschlüsseln kann, kann zu einem echten Albtraum werden. Aber wir hoffen, dass Sie einige gute Methoden kennengelernt haben, um dies von vornherein zu verhindern.

Zur weiteren Lektüre können Sie einen Blick auf die OWASP-Definition und Checkliste auf padding oracle werfen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Beseitigung dieser Schwachstelle und eine Schurkengalerie anderer Bedrohungen zu erfahren, besuchen Sie den BlogSecure Code Warrior .

Denken Sie, Sie sind der Aufgabe gewachsen, Padding-Orakel-Angriffe sofort zu vereiteln? Versuchen Sie es auf der Plattform Secure Code Warrior :

Ressource anzeigen
Ressource anzeigen

Autor

Sie wollen mehr?

Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.

Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.

Blog ansehen
Sie wollen mehr?

Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit

Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.

Ressourcendrehscheibe

Coders Conquer Security: Share & Learn Series - Padding Oracle

Veröffentlicht 24. Jan. 2019
Unter

Während Padding Oracle wie ein wirklich schlechter Name für eine alternative Rockband klingt, handelt es sich tatsächlich um eine Sicherheitslücke, die von Angreifern genutzt werden kann, um Informationen zu entschlüsseln, ohne den Verschlüsselungscode zu kennen.

In Bezug auf die Gesamtschwierigkeit für einen Angreifer liegt dieses Problem an der Spitze der Skala. Wir sprechen hier nicht von einem magischen Entschlüsselungsknopf, sondern von einem mühsamen Prozess, bei dem Hacker Fehlermeldungen untersuchen können, die ihnen in Bezug auf das Auffüllen von Zellen geschickt wurden, und dies nutzen, um zu bestimmen, wo verschlüsselte Daten enden und das Auffüllen beginnt. Sie können dann verschiedene Bits innerhalb der Verschlüsselung herausfinden und sie möglicherweise knacken, wenn sie genug Zeit und Input zur Untersuchung haben.

Glücklicherweise gibt es einige relativ einfache Schritte, die einem Angreifer die Möglichkeit nehmen können, Padding-Orakel zum Entschlüsseln verschlüsselter Daten zu verwenden. In dieser Folge lernen wir:

  • Wie es funktioniert
  • Warum diese Sicherheitslücke so gefährlich ist
  • Wie Sie Schutzmaßnahmen ergreifen können, um dies zu verhindern.

Wie funktioniert das Padding Oracle?

Cipher Block Chaining (CBC) ist eine Möglichkeit, eine Blockchiffre zu erstellen, bei der eine ganze Folge von Informationsbits, z. B. in einer Datenbank gespeicherte Zellen, mit einem Chiffrierschlüssel verschlüsselt wird, der für die gesamte Informationskette gilt. Bei der Verwendung von CBC hängt die Verschlüsselung eines einzelnen Blocks des Chiffriertextes von allen vorangehenden Blöcken ab. Theoretisch macht dies die Verschlüsselung extrem stark, da alles, selbst die Neuanordnung der Blöcke, die Daten beschädigt.

Das Problem bei CBC-Chiffren (und überhaupt bei allen Blockchiffren) ist, dass sie nur mit Blöcken exakter Größe verschlüsselt werden können. Normalerweise wird dies in 8- oder 16-Byte-Größen gemacht. Was passiert also, wenn CBC 2 Byte Daten in eine 16-Byte-Chiffretext-Einheit einpassen muss? Es verwendet Auffüllungen, im Grunde nur unsinnige Zeichen, um die Lücken zu füllen und die Einheit auf eine angemessene Größe zu bringen.

Die meisten Auffüllungsschemata sind bekannt, wobei PKCS#7 eines der beliebtesten ist, sodass Angreifer wissen könnten, welche Art von Auffüllung verwendet wird. Wenn der CBC z. B. fünf Zeichen in einem Block auffüllen muss, würde PKCS#7 den Byte-Wert 0x05 verwenden, der fünfmal hinter dem Klartext wiederholt wird.

Angreifer nutzen ihr Wissen über CBC- und Padding-Schemata, um Abfragen an einen Host-Server zu senden, der auch als Orakel bezeichnet wird. Wenn sie Zugriff auf die richtigen Tools haben, können sie den Server dazu zwingen, ihnen mitzuteilen, ob das Padding in ihrer Anfrage falsch ist. Zu diesem Zweck können sie für jedes Byte in der Chiffre einen Zyklus von null bis 255 durchlaufen, bis der Server ihnen mitteilt, dass das Padding korrekt ist. Dann gehen sie zur nächsten Einheit über und wiederholen den Vorgang, wobei sie in jedem Fall aufzeichnen, wo das Padding beginnt.

Dadurch können sie die Nachricht oder sogar die Zelle nicht entschlüsseln, aber sie könnten jedes Glied in der Kette in Bezug darauf abbilden, wo der Klartext endet und das Padding beginnt. Möglicherweise können sie auch XOR-Berechnungen verwenden, um den Wert des letzten Bytes des ursprünglichen Klartextes herauszufinden.

Warum ist Padding Oracle so gefährlich?

Der Grund, warum ein Hacker so viel Arbeit in das Brechen der Verschlüsselung stecken würde, ist die mögliche Auszahlung. Nur wenige Leute verschlüsseln Dinge, die nicht wertvoll sind. Die Gefahr für die Host-Organisation hängt von den Daten ab, die kompromittiert werden. Dazu gehören Passwörter, Benutzerkonten, Finanzdaten, Kreditkartennummern, Patientendaten, vertrauliche Kommunikation oder eine beliebige Anzahl von begehrten und wertvollen Informationen.

Die Verwendung von Padding-Orakel könnte auch das Einfallstor für nachfolgende Angriffe sein. Wenn ein Angreifer mithilfe von Padding Orakel z. B. Passwörter stehlen kann, ist es ein Leichtes, seine Privilegien zu erhöhen und tiefer in ein Netzwerk einzudringen.

Jeder denkt bei Verschlüsselung an die ultimative Verteidigung gegen Schnüffelei oder Kompromittierung. Das Hin und Her zwischen der Verschlüsselungswissenschaft und denen, die sie brechen wollen, dauert jedoch schon seit Jahrhunderten an. Das Padding-Orakel ist nur eine Methode, die Angreifern einen Vorteil verschafft.

Padding-Oracle-Angriffen eine harte Landung verpassen

Glücklicherweise gibt es eine ganze Reihe von Möglichkeiten, Padding-Orakel zu verhindern. Eine der besten ist die Verwendung einer stärkeren Verschlüsselungsbetriebsart wie Galois/Counter Mode (GCM) oder Offset Codebook Mode (OCB). Er unterscheidet sich von CBC dadurch, dass er eine Chiffrierblockgröße von 128 Bit verwendet. Außerdem wird für jeden Datenblock ein Zähler verwendet, aus dem dann der Chiffretext erstellt wird. Mit anderen Worten, es ist nicht anfällig für Padding-Orakel-Angriffe.

Die Implementierung guter Fehlerbehandlungskontrollen kann die Erfolgschancen eines Angreifers ebenfalls stark beeinträchtigen. Da Padding-Orakel-Angriffe auf Informationslecks beruhen, sollten Sie bei Ver-/Entschlüsselungsfehlern generische Fehlermeldungen anstelle von spezifischen Padding-Fehlern zurückgeben.

Sie können auch einen Message Authentication Code (MAC) implementieren. MAC-Werte schützen sowohl die Integrität als auch die Authentizität der Daten, indem sie es Verifizierern ermöglichen, jede Änderung des Nachrichteninhalts mithilfe eines geheimen Schlüssels zu erkennen.

Schließlich erfordern alle Padding-Orakel-Angriffe wiederholte Abfragen. Es können über 200 Anfragen gestellt werden, um das Auffüllschema für eine einzelne Zelle herauszufinden, multipliziert mit der Anzahl der Informationseinheiten, die in der Kette geschützt werden. Indem Sie die Anzahl der Anfragen, die von derselben Quelle kommen, beschränken, können Sie Padding-Orakel-Angriffe unterbinden, indem Sie einem Angreifer den Zugriff verweigern, bevor er seinen Versuch wirklich starten kann.

Weitere Studie zum Padding-Orakel

Jede Methode, mit der ein Angreifer sensible Informationen entschlüsseln kann, kann zu einem echten Albtraum werden. Aber wir hoffen, dass Sie einige gute Methoden kennengelernt haben, um dies von vornherein zu verhindern.

Zur weiteren Lektüre können Sie einen Blick auf die OWASP-Definition und Checkliste auf padding oracle werfen. Sie können Ihr neu erworbenes Verteidigungswissen auch mit der kostenlosen Demo der Plattform Secure Code Warrior testen, die Cybersecurity-Teams zu den ultimativen Cyber-Kriegern ausbildet. Um mehr über die Beseitigung dieser Schwachstelle und eine Schurkengalerie anderer Bedrohungen zu erfahren, besuchen Sie den BlogSecure Code Warrior .

Denken Sie, Sie sind der Aufgabe gewachsen, Padding-Orakel-Angriffe sofort zu vereiteln? Versuchen Sie es auf der Plattform Secure Code Warrior :

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Senden
Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.