Переповнення буфера: причини, ефективні методи вирішення проблеми і необхідний захист

Видалення з кодової бази

Якщо виявлено переповнення стека буфера у вихідному коді, буде потрібно узгоджене видалення з бази. Для цього треба бути знайомим з безпечними методами роботи. Найпростіший спосіб запобігти ці уразливості, використовувати мову, яка їх не допускає. Мова C має ці уразливості завдяки прямому доступу до пам’яті і відсутності строгої типізації об’єктів. Мови, що не поділяють ці аспекти, зазвичай недоступні. Це Java, Python і .NET, поряд з іншими мовами і платформами, що не вимагають спеціальних перевірок або змін.

Звичайно, не завжди можна повністю змінити мову розробки. В цьому випадку використовують безпечні методи для роботи з переповненням буфера команд. У разі функцій обробки рядків було багато дискусій про те, які методи доступні, які безпечні у використанні, а яких слід уникати. Функції strcpy і strcat копіюють рядок у буфер і додають вміст одного в інший. Ці два методи демонструють небезпечне поведінка, оскільки не перевіряють межі цільового buffer, і виконують запис за межами, якщо для цього достатньо байтів.