Senior Security Consultant/Penetration Tester | CEO
Ein Stack Canary triggert einen Fehler wenn er überschrieben wird. Doch wie funktioniert das alles nun?
Nachdem man einen Bufferoverflow gemacht hat, möchte man den EIP (Instruction Pointer) überschreiben. Der Trick ist nun, bevor man den Instruction Point überschreibt, einen Platz darüber den Stack Canary einzufügen. Falls jemand nun versucht den Stack Canary zu überschreiben, wird ein Error getriggered.
Stack Canary an sich ist ein guter Mechanismus, jedoch kann es sein, dass sie nicht randomized sind, sondern es ist ein statischer Wert, was durch eine Leakage exploitet werden kann.
Wenn der Wert zufällig ist, muss er in der Runtime geleaked und verwendet werden. Wenn der Angriff nun gelingen soll, muss es zwei Angriffe geben, einerseits den Bufferoverflow und anderseits den Format-String. Man überschreibt dabei so lange alles, bis man beim Stack Canary ist und überschreibt diesen dann, bevor man ihn auf den Ursprungswert zurücksetzt.
Stack Canary ist an sich ein guter Schutz, jedoch sollte man ihn mit anderen Mechanismen nutzen.