Введение

Проверка на наличие затронутых данных — это функция в некоторых языках программирования, таких как Perl, Ruby или Ballerina, разработанная для повышения безопасности путем предотвращения выполнения команд злоумышленниками на хост-компьютере. Проверки на затронутые данные выявляют конкретные риски безопасности, в основном связанные с веб-сайтами, подвергающимися атакам с использованием таких техник, как SQL-инъекция или атаки, основанные на переполнении буфера.

Обзор

Концепция проверки на загрязнение заключается в том, что любая переменная, которую может изменить внешний пользователь (например, переменная, установленная полем в веб-форме), представляет собой потенциальный риск для безопасности. Если эта переменная используется в выражении, которое задает значение второй переменной, то вторая переменная также становится подозрительной. Инструмент проверки на загрязнение может последовательно анализировать переменные, формируя список переменных, на которые потенциально могут влиять внешние данные. Если какая-либо из этих переменных используется для выполнения опасных команд (например, прямых команд к базе данных SQL или операционной системе хост-компьютера), проверка на загрязнение предупреждает, что программа использует потенциально опасную "загрязненную" переменную. В этом случае программист может переработать программу, чтобы обеспечить надежную защиту от опасных входных данных. Проверку на загрязнение можно рассматривать как консервативное приближение к полной верификации отсутствия вмешательства или к более общей концепции безопасного потока информации. Поскольку поток информации в системе нельзя проверить, изучая только один трассировочный след выполнения, результаты анализа загрязнения неизбежно будут отражать приблизительную информацию о характеристиках потока информации в анализируемой системе.

История

Perl поддерживал механизм защиты от внедрения (tainting) в скриптах setuid как минимум с версии 3.0 (выпущенной в 1989 году), хотя полноценная поддержка появилась только в версии 5.0 (выпущенной в 1994 году). Однако, поскольку эта поддержка считалась экспериментальной, она поставлялась отключенной (требуя вмешательства пользователя для активации) и обязывала разработчиков скриптов вносить изменения для её использования. Другие производители браузеров так и не реализовали эту функциональность.