A Microsoft Visual Studio következő kiadásában új automatikus ellenőrzéssel bővül a /GS fordítási paraméter funkcionalitása. A /GS alapvetően az úgynevezett stack sütik (stack cookie, stack canary) bekapcsolására szolgál. A kapcsoló használatával fordított binárisok függvényeinek elejére és végére a fordító egy-egy plusz kódrészletet pakol. Az első egy véletlen szót (sütit) helyez a stackre a helyi változók és a függvényhívához elmentett metaadatok (pl. visszatérési cím) közé. Amennyiben egy stack túlcsordulás következtében egy támadó megpróbálja felülírni ezeket a metaadatokat, a sütit is felül kell csapnia, ezt a változást pedig érzékeli a függvény végén található ellenőrző kód, és megszakítja a program futását, mielőtt a rossz visszatérési címre ugrana a vezérlés.
Ez a megoldás azonban nem hatékony, ha a támadó közvetlenül képes megadni a memória írás eltolását:
void foo(int n, TCHAR val){
TCHAR buf[256];
// ...
buf[n]=val;
}
Ha a támadó képes befolyásolni n értékét, közvetlenül elérheti az elmentett visszatérési címet, érintetlenül hagyva a stack sütit. A Microsoft szakértői úgy találták, hogy az ilyen típusú problémák egyik jelentősebb részhalmazát azok az esetek teszik ki, amikor sztring termináláshoz használt NULL byte kerül támadó által kontrollált pozícióba. Ezért a Visual Studio 11-ben automatikusan bekerül egy egyszerű értékellenőrzés (nagyobb-e a megadott eltolás a puffer hosszánál?) bizonyos értékadások elé. Ahhoz, hogy ez megtörténjen, a következő feltételeknek kell teljesülnie:
- Az írandó tömb mérete ismert és nem változik
- A tömb 1 vagy 2 byte méretű elemekből áll (tipikusan valamilyen karakterlánc)
- Az írás értéke nulla (sztring terminátor)
Fontos megjegyezni, hogy ez nem csak stacken tárolt változókra vonatkozik, hanem a globálisakra is. Látható, hogy az új védelem korántsem fedi le az összes lehetséges problémás esetet, mindazonáltal a Microsoftnál úgy gondolják, hogy ezzel a változtatással jelentős mennyiségű sebezhetőséget lehet majd megelőzni, nem befolyásolva jelentősen az új alkalmazások méretét illetve teljesítményét.