Stack Smashing Protection

Stack Smashing Protection (SSP, StackGuard) on puskurin ylivuotovirheiden havaitsemiseen käytetty tekniikka.[1][2] Tekniikkaa käytetään tietoturvahaavoittuvuuksien kuten ROP-hyökkäyksiltä suojaamiseen.[2]

Vuonna 1998 GCC-kääntäjässä esiteltiin StackGuard.[2][3] Menetelmä lisää pinossa olevien muuttujien ja paluuosoitteen väliin pienen canary-arvon (kanarialintu).[2] Kun ylivuoto tapahtuu canary-arvo ylikirjoittuu.[2] Funktiosta palattaessa arvo tarkistetaan ja jos arvo on muuttunut ohjelma pysäytetään.[2] IBM:llä on vastaava kääntäjässä toteutettava tekniikka nimeltään ProPolice.[4] Microsoftin Visual Studion /GS-optio toteuttaa vastaavan ominaisuuden.[5] Suojauksen tasoon voi myös vaikuttaa kääntäjän optioilla.[6]

  1. On the effectiveness of NX, SSP, RenewSSP and ASLR against stack buffer overflows (PDF) hmarco.org. Viitattu 20.9.2020. (englanniksi)
  2. a b c d e f Security Technologies: Stack Smashing Protection (StackGuard) access.redhat.com. 20.8.2018. Viitattu 24.9.2020. (englanniksi)
  3. StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks usenix.org. Viitattu 24.9.2020. (englanniksi)
  4. Prevent Stack-Smashing Attacks oreilly.com. Viitattu 24.9.2020. (englanniksi)
  5. /GS (Buffer Security Check) docs.microsoft.com. 11.4.2016. Viitattu 24.9.2020. (englanniksi)
  6. Jake Edge: "Strong" stack protection for GCC lwn.net. 5.2.2014. Viitattu 24.9.2020. (englanniksi)