Jump to content

Проверка на наличие загрязнений

Проверка на наличие искажений — это функция некоторых программирования языков , таких как Perl , [1] Руби [2] или Балерина [3] разработан для повышения безопасности путем предотвращения выполнения команд злоумышленниками на главном компьютере. Проверки на наличие вредоносных данных выявляют конкретные риски безопасности, в первую очередь связанные с веб-сайтами, которые подвергаются атакам с использованием таких методов, как внедрение SQL или атака на переполнение буфера .

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

Проверку на наличие вредоносных данных можно рассматривать как консервативное приближение к полной проверке невмешательства или как более общую концепцию безопасного потока информации . [4] Поскольку поток информации в системе не может быть проверен путем изучения одной трассировки выполнения этой системы, [5] результаты анализа искажений обязательно будут отражать приблизительную информацию о характеристиках информационного потока системы, к которой он применяется. [6]

Следующий опасный код Perl открывает большую уязвимость SQL-инъекции , не проверяя значение $name переменная:

#!/usr/bin/perl
my $name = $cgi->param("name");  # Get the name from the browser
...
$dbh->{TaintIn} = 1;
$dbh->execute("SELECT * FROM users WHERE name = '$name';"); # Execute an SQL query

Если включена проверка на наличие ошибок, Perl откажется выполнять команду и завершит работу с сообщением об ошибке, поскольку в запросе SQL используется испорченная переменная. Без проверки на наличие вредоносных данных пользователь может войти foo'; DROP TABLE users --, тем самым запуская команду, которая удаляет всю таблицу базы данных. Гораздо безопаснее было бы закодировать испорченное значение $name в строковый литерал SQL и использовать результат в запросе SQL, гарантируя, что никакая опасная команда, встроенная в $name будет оценено. Другой способ добиться этого — использовать подготовленный оператор для очистки всех входных переменных для запроса.

Следует отметить, что Perl DBI требует установки TaintIn атрибут дескриптора базы данных , а также включение режима проверки для проверки строк SQL. [7]

Perl поддерживал искажение в сценариях setuid как минимум с версии 3.0 (выпущенной в 1989 году). [8] хотя это было только в версии 5.0 (выпущенной в 1994 году) [8] что -T выключатель [1] была введена интеграция tainting в единую среду выполнения.

В 1996 году Netscape реализовала искажение данных для JavaScript в Netscape Navigator 3. [9] Однако, поскольку поддержка считалась экспериментальной, она поставлялась отключенной (требующей вмешательства пользователя для активации) и требовала от авторов страниц изменять сценарии, чтобы получить от нее выгоду. Другие поставщики браузеров никогда не реализовывали эту функциональность.

  1. ^ Jump up to: а б «perlsec — безопасность Perl» . Команда разработчиков Perl 5 . Проверено 20 мая 2012 г.
  2. ^ Программирование на Ruby --- Руководство прагматичного программиста . Эддисон Уэсли Лонгман. 2001. С. 253 (гл. 20).
  3. ^ Инк, WSO2. «Балерина – Проверка на порчу» . ballerina.io . Проверено 15 февраля 2022 г. {{cite web}}: |last= имеет общее имя ( справка ) CS1 maint: числовые имена: список авторов ( ссылка )
  4. ^ А. Сабельфельд и А.С. Майерс, «Безопасность информационных потоков на основе языка», Журнал IEEE по выбранным областям коммуникаций , 2003.
  5. ^ Дж. Лигатти, Л. Бауэр, Д. Уокер. «Редактирование автоматов: механизмы реализации политик безопасности во время выполнения». Международный журнал информационной безопасности , 2005 г.
  6. ^ Т. Тераучи и А. Эйкен. «Безопасный поток информации как проблема безопасности». На 12-м Международном симпозиуме по статическому анализу , сентябрь 2005 г.
  7. ^ «DBI — независимый от базы данных интерфейс для Perl» . Проверено 29 августа 2020 г.
  8. ^ Jump up to: а б «perlhist — записи истории Perl» . Команда разработчиков Perl 5 . Проверено 29 августа 2020 г.
  9. ^ Фланаган, Дэвид (1997). JavaScript: Полное руководство (2-е изд.). О'Рейли и партнеры. п. 321. ИСБН  9781565922341 . [...] модель безопасности с искажением данных является экспериментальной в Navigator 3.0 и не включена по умолчанию. Однако ожидается, что эта модель безопасности станет моделью безопасности по умолчанию в версии Navigator 4.0.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 90e6b0521f68c59f80c9403e9e1e2cf0__1651855740
URL1:https://arc.ask3.ru/arc/aa/90/f0/90e6b0521f68c59f80c9403e9e1e2cf0.html
Заголовок, (Title) документа по адресу, URL1:
Taint checking - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)