Coders Conquer Security: Share & Learn Series - Unsichere Deserialisierung
Je nach Anwendung kann der Prozess der Serialisierung ständig stattfinden. Der Begriff wird immer dann verwendet, wenn Datenstrukturen oder Objektzustände in ein Format übersetzt werden, das gespeichert oder eventuell als Kommunikation versendet werden kann. Die Deserialisierung ist das Gegenteil dieses Prozesses, wobei die nun strukturierten Daten wieder in das Objekt oder den Datenstring zurückverwandelt werden, der sie vor der Speicherung waren.
Eine unsichere Deserialisierung kann immer dann auftreten, wenn eine Anwendung die zu deserialisierenden Daten als vertrauenswürdig behandelt. Wenn ein Benutzer in der Lage ist, die neu rekonstruierten Daten zu ändern, kann er alle Arten von böswilligen Aktivitäten durchführen, z. B. Code-Injektionen, Denial-of-Service-Angriffe oder einfach die Daten ändern, um sich selbst einen Vorteil innerhalb der Anwendung zu verschaffen, z. B. den Preis eines Objekts zu senken oder seine Privilegien zu erhöhen.
In dieser Folge lernen wir:
- Wie Angreifer eine unsichere Deserialisierung ausnutzen können
- Warum unsichere Deserialisierung gefährlich ist
- Techniken, die diese Sicherheitslücke beheben können.
Wie nutzen Angreifer eine unsichere Deserialisierung aus?
Heutzutage ist das beliebteste Datenformat für die Serialisierung von Daten JSON, obwohl XML an zweiter Stelle steht. Etliche Programmiersprachen bieten auch ihre eigenen Methoden zur Serialisierung von Daten an, die oft mehr Funktionen als JSON oder XML enthalten. In jedem Fall kann es zu Problemen kommen, wenn Entwickler Anwendungen so programmieren, dass sie deserialisierte Daten als vertrauenswürdige Eingaben behandeln, anstatt dem alten Mantra aus anderen Blogs in dieser Reihe zu folgen, nämlich: "Traue niemals Benutzereingaben!"
Benutzereingaben sind niemals vertrauenswürdig, da der Benutzer Code in diese Zeichenfolgen einfügen kann, der versehentlich vom empfangenden Server ausgeführt werden könnte. Und da auch auf deserialisierte Rohdaten manchmal zugegriffen werden kann und diese ausgenutzt werden können, müssen sie in die gleiche nicht vertrauenswürdige Kategorie fallen.
Wenn z. B. eine Forenanwendung die PHP-Objektserialisierung verwendet, um ein Cookie zu speichern, das die Identifikation und die Rolle eines Benutzers enthält, dann kann dieses manipuliert werden. Ein böswilliger Benutzer könnte stattdessen seine "Benutzer"-Rolle in "Admin" ändern. Oder er kann die vom Datenstring bereitgestellte Öffnung nutzen, um Code einzuschleusen, der vom Server bei der Verarbeitung der "vertrauenswürdigen" Daten fehlinterpretiert und ausgeführt werden könnte.
Warum ist unsichere Deserialisierung gefährlich?
Es stimmt, dass diese Art des Angriffs ein gewisses Maß an Geschicklichkeit seitens des Hackers erfordert, und manchmal auch Versuch und Irrtum, während der Angreifer lernt, welche Arten von Code oder Exploits der Server aus seinen manipulierten, deserialisierten Daten akzeptiert. Nichtsdestotrotz ist dies eine häufig ausgenutzte Schwachstelle, weil sie Hackern, die geschickt genug sind, sie zu nutzen, potenzielle Macht verleiht.
Je nachdem, wie die deserialisierten Daten verwendet werden sollen, kann eine beliebige Anzahl von Angriffen, darunter viele, die wir in früheren Blogs behandelt haben, eingesetzt werden. Eine unsichere Deserialisierung kann ein Einfallstor für entfernte Cross-Code-Injection, Cross-Site-Scripting, Denial-of-Service, Hijacking der Zugriffssteuerung und natürlich SQL- und XML-Injection-Angriffe sein. Im Grunde genommen wird ein Startpunkt eröffnet, alle zu deserialisierenden Daten werden als vertrauenswürdig deklariert und die Angreifer können versuchen, sie auszunutzen.
Beseitigung der unsicheren Deserialisierung
Das Sicherste, was Unternehmen tun können, um unsichere Deserialisierung zu verhindern, ist, Anwendungen davon abzuhalten, deserialisierte Daten zu akzeptieren. Das mag jedoch nicht möglich oder realistisch sein, aber keine Sorge, denn es gibt andere Techniken, die zur Verteidigung gegen diese Art von Angriff eingesetzt werden können.
Wenn möglich, können die Daten z. B. auf numerische Werte bereinigt werden. Dies könnte einen Exploit zwar nicht vollständig verhindern, würde aber das Auftreten von Code-Injektionen verhindern. Noch besser wäre es, einfach eine Form der Integritätsprüfung für deserialisierte Daten zu verlangen, z. B. eine digitale Signatur, die sicherstellen könnte, dass die Datenstrings nicht manipuliert wurden. Und alle Deserialisierungsprozesse sollten isoliert und in einer Umgebung mit niedrigen Privilegien ausgeführt werden.
Sobald Sie diese Schutzvorkehrungen getroffen haben, sollten Sie alle fehlgeschlagenen Deserialisierungsversuche sowie die Netzwerkaktivitäten von Containern oder Servern, die Daten deserialisieren, protokollieren. Wenn ein Benutzer mehr als ein paar Deserialisierungsfehler in den Protokollen auslöst, ist das ein guter Hinweis darauf, dass es sich entweder um einen böswilligen Insider handelt oder dass seine Anmeldedaten gehackt oder gestohlen wurden. Sie könnten sogar Dinge wie automatische Sperrungen für Benutzer in Betracht ziehen, die ständig Deserialisierungsfehler auslösen.
Welches dieser Tools Sie auch immer zur Bekämpfung unsicherer Deserialisierung einsetzen, denken Sie daran, dass es sich im Kern um Daten handelt, die von einem Benutzer berührt oder manipuliert worden sein könnten. Vertrauen Sie niemals darauf.
Weitere Informationen zur Verwendung von Komponenten mit bekannten Sicherheitslücken
Als weitere Lektüre können Sie einen Blick darauf werfen, was OWASP über unsichere Deserialisierung sagt. Sie können Ihr neu erworbenes Verteidigungswissen auch mit dem kostenlosen Showcase 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 .
Eine unsichere Deserialisierung kann immer dann auftreten, wenn eine Anwendung die zu deserialisierenden Daten als vertrauenswürdig behandelt. Wenn ein Benutzer in der Lage ist, die neu rekonstruierten Daten zu ändern, kann er alle Arten von böswilligen Aktivitäten wie Code-Injektionen, Denial-of-Service-Angriffe oder die Erhöhung seiner Privilegien durchführen.
Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenJaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.
Je nach Anwendung kann der Prozess der Serialisierung ständig stattfinden. Der Begriff wird immer dann verwendet, wenn Datenstrukturen oder Objektzustände in ein Format übersetzt werden, das gespeichert oder eventuell als Kommunikation versendet werden kann. Die Deserialisierung ist das Gegenteil dieses Prozesses, wobei die nun strukturierten Daten wieder in das Objekt oder den Datenstring zurückverwandelt werden, der sie vor der Speicherung waren.
Eine unsichere Deserialisierung kann immer dann auftreten, wenn eine Anwendung die zu deserialisierenden Daten als vertrauenswürdig behandelt. Wenn ein Benutzer in der Lage ist, die neu rekonstruierten Daten zu ändern, kann er alle Arten von böswilligen Aktivitäten durchführen, z. B. Code-Injektionen, Denial-of-Service-Angriffe oder einfach die Daten ändern, um sich selbst einen Vorteil innerhalb der Anwendung zu verschaffen, z. B. den Preis eines Objekts zu senken oder seine Privilegien zu erhöhen.
In dieser Folge lernen wir:
- Wie Angreifer eine unsichere Deserialisierung ausnutzen können
- Warum unsichere Deserialisierung gefährlich ist
- Techniken, die diese Sicherheitslücke beheben können.
Wie nutzen Angreifer eine unsichere Deserialisierung aus?
Heutzutage ist das beliebteste Datenformat für die Serialisierung von Daten JSON, obwohl XML an zweiter Stelle steht. Etliche Programmiersprachen bieten auch ihre eigenen Methoden zur Serialisierung von Daten an, die oft mehr Funktionen als JSON oder XML enthalten. In jedem Fall kann es zu Problemen kommen, wenn Entwickler Anwendungen so programmieren, dass sie deserialisierte Daten als vertrauenswürdige Eingaben behandeln, anstatt dem alten Mantra aus anderen Blogs in dieser Reihe zu folgen, nämlich: "Traue niemals Benutzereingaben!"
Benutzereingaben sind niemals vertrauenswürdig, da der Benutzer Code in diese Zeichenfolgen einfügen kann, der versehentlich vom empfangenden Server ausgeführt werden könnte. Und da auch auf deserialisierte Rohdaten manchmal zugegriffen werden kann und diese ausgenutzt werden können, müssen sie in die gleiche nicht vertrauenswürdige Kategorie fallen.
Wenn z. B. eine Forenanwendung die PHP-Objektserialisierung verwendet, um ein Cookie zu speichern, das die Identifikation und die Rolle eines Benutzers enthält, dann kann dieses manipuliert werden. Ein böswilliger Benutzer könnte stattdessen seine "Benutzer"-Rolle in "Admin" ändern. Oder er kann die vom Datenstring bereitgestellte Öffnung nutzen, um Code einzuschleusen, der vom Server bei der Verarbeitung der "vertrauenswürdigen" Daten fehlinterpretiert und ausgeführt werden könnte.
Warum ist unsichere Deserialisierung gefährlich?
Es stimmt, dass diese Art des Angriffs ein gewisses Maß an Geschicklichkeit seitens des Hackers erfordert, und manchmal auch Versuch und Irrtum, während der Angreifer lernt, welche Arten von Code oder Exploits der Server aus seinen manipulierten, deserialisierten Daten akzeptiert. Nichtsdestotrotz ist dies eine häufig ausgenutzte Schwachstelle, weil sie Hackern, die geschickt genug sind, sie zu nutzen, potenzielle Macht verleiht.
Je nachdem, wie die deserialisierten Daten verwendet werden sollen, kann eine beliebige Anzahl von Angriffen, darunter viele, die wir in früheren Blogs behandelt haben, eingesetzt werden. Eine unsichere Deserialisierung kann ein Einfallstor für entfernte Cross-Code-Injection, Cross-Site-Scripting, Denial-of-Service, Hijacking der Zugriffssteuerung und natürlich SQL- und XML-Injection-Angriffe sein. Im Grunde genommen wird ein Startpunkt eröffnet, alle zu deserialisierenden Daten werden als vertrauenswürdig deklariert und die Angreifer können versuchen, sie auszunutzen.
Beseitigung der unsicheren Deserialisierung
Das Sicherste, was Unternehmen tun können, um unsichere Deserialisierung zu verhindern, ist, Anwendungen davon abzuhalten, deserialisierte Daten zu akzeptieren. Das mag jedoch nicht möglich oder realistisch sein, aber keine Sorge, denn es gibt andere Techniken, die zur Verteidigung gegen diese Art von Angriff eingesetzt werden können.
Wenn möglich, können die Daten z. B. auf numerische Werte bereinigt werden. Dies könnte einen Exploit zwar nicht vollständig verhindern, würde aber das Auftreten von Code-Injektionen verhindern. Noch besser wäre es, einfach eine Form der Integritätsprüfung für deserialisierte Daten zu verlangen, z. B. eine digitale Signatur, die sicherstellen könnte, dass die Datenstrings nicht manipuliert wurden. Und alle Deserialisierungsprozesse sollten isoliert und in einer Umgebung mit niedrigen Privilegien ausgeführt werden.
Sobald Sie diese Schutzvorkehrungen getroffen haben, sollten Sie alle fehlgeschlagenen Deserialisierungsversuche sowie die Netzwerkaktivitäten von Containern oder Servern, die Daten deserialisieren, protokollieren. Wenn ein Benutzer mehr als ein paar Deserialisierungsfehler in den Protokollen auslöst, ist das ein guter Hinweis darauf, dass es sich entweder um einen böswilligen Insider handelt oder dass seine Anmeldedaten gehackt oder gestohlen wurden. Sie könnten sogar Dinge wie automatische Sperrungen für Benutzer in Betracht ziehen, die ständig Deserialisierungsfehler auslösen.
Welches dieser Tools Sie auch immer zur Bekämpfung unsicherer Deserialisierung einsetzen, denken Sie daran, dass es sich im Kern um Daten handelt, die von einem Benutzer berührt oder manipuliert worden sein könnten. Vertrauen Sie niemals darauf.
Weitere Informationen zur Verwendung von Komponenten mit bekannten Sicherheitslücken
Als weitere Lektüre können Sie einen Blick darauf werfen, was OWASP über unsichere Deserialisierung sagt. Sie können Ihr neu erworbenes Verteidigungswissen auch mit dem kostenlosen Showcase 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 .
Je nach Anwendung kann der Prozess der Serialisierung ständig stattfinden. Der Begriff wird immer dann verwendet, wenn Datenstrukturen oder Objektzustände in ein Format übersetzt werden, das gespeichert oder eventuell als Kommunikation versendet werden kann. Die Deserialisierung ist das Gegenteil dieses Prozesses, wobei die nun strukturierten Daten wieder in das Objekt oder den Datenstring zurückverwandelt werden, der sie vor der Speicherung waren.
Eine unsichere Deserialisierung kann immer dann auftreten, wenn eine Anwendung die zu deserialisierenden Daten als vertrauenswürdig behandelt. Wenn ein Benutzer in der Lage ist, die neu rekonstruierten Daten zu ändern, kann er alle Arten von böswilligen Aktivitäten durchführen, z. B. Code-Injektionen, Denial-of-Service-Angriffe oder einfach die Daten ändern, um sich selbst einen Vorteil innerhalb der Anwendung zu verschaffen, z. B. den Preis eines Objekts zu senken oder seine Privilegien zu erhöhen.
In dieser Folge lernen wir:
- Wie Angreifer eine unsichere Deserialisierung ausnutzen können
- Warum unsichere Deserialisierung gefährlich ist
- Techniken, die diese Sicherheitslücke beheben können.
Wie nutzen Angreifer eine unsichere Deserialisierung aus?
Heutzutage ist das beliebteste Datenformat für die Serialisierung von Daten JSON, obwohl XML an zweiter Stelle steht. Etliche Programmiersprachen bieten auch ihre eigenen Methoden zur Serialisierung von Daten an, die oft mehr Funktionen als JSON oder XML enthalten. In jedem Fall kann es zu Problemen kommen, wenn Entwickler Anwendungen so programmieren, dass sie deserialisierte Daten als vertrauenswürdige Eingaben behandeln, anstatt dem alten Mantra aus anderen Blogs in dieser Reihe zu folgen, nämlich: "Traue niemals Benutzereingaben!"
Benutzereingaben sind niemals vertrauenswürdig, da der Benutzer Code in diese Zeichenfolgen einfügen kann, der versehentlich vom empfangenden Server ausgeführt werden könnte. Und da auch auf deserialisierte Rohdaten manchmal zugegriffen werden kann und diese ausgenutzt werden können, müssen sie in die gleiche nicht vertrauenswürdige Kategorie fallen.
Wenn z. B. eine Forenanwendung die PHP-Objektserialisierung verwendet, um ein Cookie zu speichern, das die Identifikation und die Rolle eines Benutzers enthält, dann kann dieses manipuliert werden. Ein böswilliger Benutzer könnte stattdessen seine "Benutzer"-Rolle in "Admin" ändern. Oder er kann die vom Datenstring bereitgestellte Öffnung nutzen, um Code einzuschleusen, der vom Server bei der Verarbeitung der "vertrauenswürdigen" Daten fehlinterpretiert und ausgeführt werden könnte.
Warum ist unsichere Deserialisierung gefährlich?
Es stimmt, dass diese Art des Angriffs ein gewisses Maß an Geschicklichkeit seitens des Hackers erfordert, und manchmal auch Versuch und Irrtum, während der Angreifer lernt, welche Arten von Code oder Exploits der Server aus seinen manipulierten, deserialisierten Daten akzeptiert. Nichtsdestotrotz ist dies eine häufig ausgenutzte Schwachstelle, weil sie Hackern, die geschickt genug sind, sie zu nutzen, potenzielle Macht verleiht.
Je nachdem, wie die deserialisierten Daten verwendet werden sollen, kann eine beliebige Anzahl von Angriffen, darunter viele, die wir in früheren Blogs behandelt haben, eingesetzt werden. Eine unsichere Deserialisierung kann ein Einfallstor für entfernte Cross-Code-Injection, Cross-Site-Scripting, Denial-of-Service, Hijacking der Zugriffssteuerung und natürlich SQL- und XML-Injection-Angriffe sein. Im Grunde genommen wird ein Startpunkt eröffnet, alle zu deserialisierenden Daten werden als vertrauenswürdig deklariert und die Angreifer können versuchen, sie auszunutzen.
Beseitigung der unsicheren Deserialisierung
Das Sicherste, was Unternehmen tun können, um unsichere Deserialisierung zu verhindern, ist, Anwendungen davon abzuhalten, deserialisierte Daten zu akzeptieren. Das mag jedoch nicht möglich oder realistisch sein, aber keine Sorge, denn es gibt andere Techniken, die zur Verteidigung gegen diese Art von Angriff eingesetzt werden können.
Wenn möglich, können die Daten z. B. auf numerische Werte bereinigt werden. Dies könnte einen Exploit zwar nicht vollständig verhindern, würde aber das Auftreten von Code-Injektionen verhindern. Noch besser wäre es, einfach eine Form der Integritätsprüfung für deserialisierte Daten zu verlangen, z. B. eine digitale Signatur, die sicherstellen könnte, dass die Datenstrings nicht manipuliert wurden. Und alle Deserialisierungsprozesse sollten isoliert und in einer Umgebung mit niedrigen Privilegien ausgeführt werden.
Sobald Sie diese Schutzvorkehrungen getroffen haben, sollten Sie alle fehlgeschlagenen Deserialisierungsversuche sowie die Netzwerkaktivitäten von Containern oder Servern, die Daten deserialisieren, protokollieren. Wenn ein Benutzer mehr als ein paar Deserialisierungsfehler in den Protokollen auslöst, ist das ein guter Hinweis darauf, dass es sich entweder um einen böswilligen Insider handelt oder dass seine Anmeldedaten gehackt oder gestohlen wurden. Sie könnten sogar Dinge wie automatische Sperrungen für Benutzer in Betracht ziehen, die ständig Deserialisierungsfehler auslösen.
Welches dieser Tools Sie auch immer zur Bekämpfung unsicherer Deserialisierung einsetzen, denken Sie daran, dass es sich im Kern um Daten handelt, die von einem Benutzer berührt oder manipuliert worden sein könnten. Vertrauen Sie niemals darauf.
Weitere Informationen zur Verwendung von Komponenten mit bekannten Sicherheitslücken
Als weitere Lektüre können Sie einen Blick darauf werfen, was OWASP über unsichere Deserialisierung sagt. Sie können Ihr neu erworbenes Verteidigungswissen auch mit dem kostenlosen Showcase 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 .
Klicken Sie auf den unten stehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Bericht ansehenDemo buchenJaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.
Je nach Anwendung kann der Prozess der Serialisierung ständig stattfinden. Der Begriff wird immer dann verwendet, wenn Datenstrukturen oder Objektzustände in ein Format übersetzt werden, das gespeichert oder eventuell als Kommunikation versendet werden kann. Die Deserialisierung ist das Gegenteil dieses Prozesses, wobei die nun strukturierten Daten wieder in das Objekt oder den Datenstring zurückverwandelt werden, der sie vor der Speicherung waren.
Eine unsichere Deserialisierung kann immer dann auftreten, wenn eine Anwendung die zu deserialisierenden Daten als vertrauenswürdig behandelt. Wenn ein Benutzer in der Lage ist, die neu rekonstruierten Daten zu ändern, kann er alle Arten von böswilligen Aktivitäten durchführen, z. B. Code-Injektionen, Denial-of-Service-Angriffe oder einfach die Daten ändern, um sich selbst einen Vorteil innerhalb der Anwendung zu verschaffen, z. B. den Preis eines Objekts zu senken oder seine Privilegien zu erhöhen.
In dieser Folge lernen wir:
- Wie Angreifer eine unsichere Deserialisierung ausnutzen können
- Warum unsichere Deserialisierung gefährlich ist
- Techniken, die diese Sicherheitslücke beheben können.
Wie nutzen Angreifer eine unsichere Deserialisierung aus?
Heutzutage ist das beliebteste Datenformat für die Serialisierung von Daten JSON, obwohl XML an zweiter Stelle steht. Etliche Programmiersprachen bieten auch ihre eigenen Methoden zur Serialisierung von Daten an, die oft mehr Funktionen als JSON oder XML enthalten. In jedem Fall kann es zu Problemen kommen, wenn Entwickler Anwendungen so programmieren, dass sie deserialisierte Daten als vertrauenswürdige Eingaben behandeln, anstatt dem alten Mantra aus anderen Blogs in dieser Reihe zu folgen, nämlich: "Traue niemals Benutzereingaben!"
Benutzereingaben sind niemals vertrauenswürdig, da der Benutzer Code in diese Zeichenfolgen einfügen kann, der versehentlich vom empfangenden Server ausgeführt werden könnte. Und da auch auf deserialisierte Rohdaten manchmal zugegriffen werden kann und diese ausgenutzt werden können, müssen sie in die gleiche nicht vertrauenswürdige Kategorie fallen.
Wenn z. B. eine Forenanwendung die PHP-Objektserialisierung verwendet, um ein Cookie zu speichern, das die Identifikation und die Rolle eines Benutzers enthält, dann kann dieses manipuliert werden. Ein böswilliger Benutzer könnte stattdessen seine "Benutzer"-Rolle in "Admin" ändern. Oder er kann die vom Datenstring bereitgestellte Öffnung nutzen, um Code einzuschleusen, der vom Server bei der Verarbeitung der "vertrauenswürdigen" Daten fehlinterpretiert und ausgeführt werden könnte.
Warum ist unsichere Deserialisierung gefährlich?
Es stimmt, dass diese Art des Angriffs ein gewisses Maß an Geschicklichkeit seitens des Hackers erfordert, und manchmal auch Versuch und Irrtum, während der Angreifer lernt, welche Arten von Code oder Exploits der Server aus seinen manipulierten, deserialisierten Daten akzeptiert. Nichtsdestotrotz ist dies eine häufig ausgenutzte Schwachstelle, weil sie Hackern, die geschickt genug sind, sie zu nutzen, potenzielle Macht verleiht.
Je nachdem, wie die deserialisierten Daten verwendet werden sollen, kann eine beliebige Anzahl von Angriffen, darunter viele, die wir in früheren Blogs behandelt haben, eingesetzt werden. Eine unsichere Deserialisierung kann ein Einfallstor für entfernte Cross-Code-Injection, Cross-Site-Scripting, Denial-of-Service, Hijacking der Zugriffssteuerung und natürlich SQL- und XML-Injection-Angriffe sein. Im Grunde genommen wird ein Startpunkt eröffnet, alle zu deserialisierenden Daten werden als vertrauenswürdig deklariert und die Angreifer können versuchen, sie auszunutzen.
Beseitigung der unsicheren Deserialisierung
Das Sicherste, was Unternehmen tun können, um unsichere Deserialisierung zu verhindern, ist, Anwendungen davon abzuhalten, deserialisierte Daten zu akzeptieren. Das mag jedoch nicht möglich oder realistisch sein, aber keine Sorge, denn es gibt andere Techniken, die zur Verteidigung gegen diese Art von Angriff eingesetzt werden können.
Wenn möglich, können die Daten z. B. auf numerische Werte bereinigt werden. Dies könnte einen Exploit zwar nicht vollständig verhindern, würde aber das Auftreten von Code-Injektionen verhindern. Noch besser wäre es, einfach eine Form der Integritätsprüfung für deserialisierte Daten zu verlangen, z. B. eine digitale Signatur, die sicherstellen könnte, dass die Datenstrings nicht manipuliert wurden. Und alle Deserialisierungsprozesse sollten isoliert und in einer Umgebung mit niedrigen Privilegien ausgeführt werden.
Sobald Sie diese Schutzvorkehrungen getroffen haben, sollten Sie alle fehlgeschlagenen Deserialisierungsversuche sowie die Netzwerkaktivitäten von Containern oder Servern, die Daten deserialisieren, protokollieren. Wenn ein Benutzer mehr als ein paar Deserialisierungsfehler in den Protokollen auslöst, ist das ein guter Hinweis darauf, dass es sich entweder um einen böswilligen Insider handelt oder dass seine Anmeldedaten gehackt oder gestohlen wurden. Sie könnten sogar Dinge wie automatische Sperrungen für Benutzer in Betracht ziehen, die ständig Deserialisierungsfehler auslösen.
Welches dieser Tools Sie auch immer zur Bekämpfung unsicherer Deserialisierung einsetzen, denken Sie daran, dass es sich im Kern um Daten handelt, die von einem Benutzer berührt oder manipuliert worden sein könnten. Vertrauen Sie niemals darauf.
Weitere Informationen zur Verwendung von Komponenten mit bekannten Sicherheitslücken
Als weitere Lektüre können Sie einen Blick darauf werfen, was OWASP über unsichere Deserialisierung sagt. Sie können Ihr neu erworbenes Verteidigungswissen auch mit dem kostenlosen Showcase 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 .
Inhaltsübersicht
Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenHerunterladenRessourcen für den Einstieg
Benchmarking von Sicherheitskompetenzen: Optimierung von Secure-by-Design im Unternehmen
Die Secure-by-Design-Bewegung ist die Zukunft der sicheren Softwareentwicklung. Erfahren Sie mehr über die wichtigsten Elemente, die Unternehmen berücksichtigen müssen, wenn sie über eine Secure-by-Design-Initiative nachdenken.
DigitalOcean verringert Sicherheitsverschuldung mit Secure Code Warrior
DigitalOceans Einsatz von Secure Code Warrior hat die Sicherheitsverschuldung deutlich reduziert, so dass sich die Teams stärker auf Innovation und Produktivität konzentrieren können. Die verbesserte Sicherheit hat die Produktqualität und den Wettbewerbsvorteil des Unternehmens gestärkt. Mit Blick auf die Zukunft wird der SCW Trust Score dem Unternehmen helfen, seine Sicherheitspraktiken weiter zu verbessern und Innovationen voranzutreiben.
Ressourcen für den Einstieg
Trust Score zeigt den Wert von Secure-by-Design-Upskilling-Initiativen
Unsere Forschung hat gezeigt, dass Schulungen für sicheren Code funktionieren. Trust Score verwendet einen Algorithmus, der auf mehr als 20 Millionen Lerndaten aus der Arbeit von mehr als 250.000 Lernenden in über 600 Organisationen basiert, und zeigt, wie effektiv die Initiative ist, um Schwachstellen zu beseitigen und wie man sie noch effektiver gestalten kann.
Reaktive versus präventive Sicherheit: Prävention ist das bessere Heilmittel
Der Gedanke, Legacy-Code und -Systeme zur gleichen Zeit wie neuere Anwendungen mit präventiver Sicherheit auszustatten, kann entmutigend erscheinen, aber ein Secure-by-Design-Ansatz, der durch die Weiterbildung von Entwicklern durchgesetzt wird, kann die besten Sicherheitsverfahren auf diese Systeme anwenden. Dies ist für viele Unternehmen die beste Chance, ihre Sicherheitslage zu verbessern.
Die Vorteile eines Benchmarking der Sicherheitskompetenzen von Entwicklern
Der zunehmende Fokus auf sicheren Code und Secure-by-Design-Prinzipien erfordert, dass Entwickler von Beginn des SDLC an in Cybersicherheit geschult werden, wobei Tools wie Secure Code Warrior's Trust Score dabei helfen, ihre Fortschritte zu messen und zu verbessern.
Wesentlicher Erfolg für Enterprise Secure-by-Design-Initiativen
Unser jüngstes Forschungspapier „Benchmarking Security Skills: Streamlining Secure-by-Design in the Enterprise“ ist das Ergebnis einer umfassenden Analyse echter Secure-by-Design-Initiativen auf Unternehmensebene und der Ableitung von Best-Practice-Ansätzen auf Grundlage datengesteuerter Erkenntnisse.