Stack Smashing Protection  Bild © @natashenka auf TwitterStack Smashing Protection (Bild © @natashenka auf Twitter)

Die Schwachstelle liegt im Stack Smashing Protector des GCC für ARM64, der einen "Canary"-Mechanismus verwendet, der die Ausnutzung eines Stack-Buffer-Overflows verhindern soll. Hierbei legt es einen eindeutigen Wert (den Canary) in einer Struktur im Speicher ab. Wenn ein Buffer-Overflow auftritt, wird der Canary-Wert überschrieben, so dass das System den Überlauf erkennt und den Betrieb des Programms stoppen kann.

Damit soll verhindert werden, dass Angreifer den Programmablauf durch Ausnutzung solcher Überläufe übernehmen. Der Begriff "Canary" ist an den sprichwörtlichen "Kanarienvogel in der Kohlenmine" angelehnt, der als Warnsystem dient. Allerdings gab es eine Diskrepanz. Bei Datentypen mit dynamischen Speichergrößen, wie Variable-Length-Array (VLA) oder Objekten, die mit dem Alloca-Aufruf erstellt wurden, funktionierte der Canary-Schutz nicht wie vorgesehen und konnte umgangen werden.

Diese Schwachstelle betrifft nur die ARM64-Plattform und nicht andere unterstützte CPU-Architekturen. Hebb führte dieses Versehen auf eine Besonderheit in der Implementierung zurück. Ähnliche Schwachstellen wurden bereits in der ARM32-Version des GCC und im Clang-Compiler für ARM64 entdeckt.