Нет, переполнение буфера не является решенной проблемой, по крайней мере, в неуправляемом коде.
Основная проблема со всеми перечисленными технологиями (DEP / NX, ASLR, Canaries, SMEP) заключается в том, что они происходят после факта : они не могут решить проблему переполнения буфера, поскольку они не предотвращают основную причину - переполнение буфера и повреждение памяти уже произошло .
Все схемы являются просто «хорошими», но ненадежными эвристическими способами, позволяющими либо обнаружить неисправность после того, как коррупция произошла, но до того, как она станет работающей, либо просто усложнить создание надежной рабочей уязвимости.
Например, DEP, ASLR и канареек в Windows Vista и 7 можно обойти с помощью ROT плюс другие методы, и, следовательно, просто поднять планку сложности создания рабочего эксплойта.Но увеличение сложности довольно значительно.В этом суть техники.
Если вы заинтересованы в решении проблемы в корне путем предотвращения первоначального повреждения буфера, я думаю, что это будет наиболее продуктивным, но, вероятно, вернет нас к обсуждению.управляемого кода ...