Рубрики

Внедрение кода и его смягчение на примере

Внедрение кода — это злонамеренное внедрение или введение кода в приложение. Введенный или внедренный код способен нарушить целостность базы данных и / или поставить под угрозу свойства конфиденциальности, безопасность и даже правильность данных. Он также может похищать данные и / или обходить контроль доступа и аутентификации. Атаки внедрения кода могут мешать приложениям, которые зависят от пользовательского ввода для выполнения.

Внедрение кода отличается от внедрения команд . Здесь злоумышленник ограничен только функциональностью самого внедренного языка. Например, если злоумышленник может внедрить код PHP в приложение и выполнить его, он ограничен только возможностями PHP.

Уязвимости внедрения кода варьируются от простых до труднодоступных. Многие решения были разработаны для предотвращения этих типов атак внедрения кода, как для приложений, так и для области архитектуры. Некоторые примеры включают проверку ввода, параметризацию, установку привилегий для различных действий, добавление дополнительного уровня защиты и другие.

Пример:
Когда разработчик использует функцию PHP eval () и передает ей недоверенные данные, которые злоумышленник может изменить, внедрение кода может быть возможным.

В приведенном ниже примере показан опасный способ использования функции eval ():

// Опасный способ использовать функцию eval ()
// в PHP

$myvar = "varname";

$x = $_GET['arg'];

eval("\$myvar = \$x;");

Поскольку проверка ввода не выполняется, приведенный выше код уязвим для атаки внедрения кода.

Например:

/index.php?arg=1; phpinfo()

Выше покажет всю информацию php.

Используя подобные ошибки, злоумышленник может захотеть выполнить системные команды. В этом случае ошибка внедрения кода также может быть использована для введения команды, например:

/index.php?arg=1; system('id')

Это скажет идентификаторы процесса.
uid = 33 (www-data) gid = 33 (www-data) groups = 33 (www-data)

смягчение
В идеале разработчик должен использовать существующий API для своего языка. Например (Java): вместо того, чтобы использовать Runtime.exec () для выполнения команды «mail», используйте доступный Java API, расположенный по адресу javax.mail. *
Если такого доступного API не существует, разработчик должен очистить весь ввод для вредоносных символов. Реализация позитивной модели безопасности будет наиболее эффективной. Как правило, определить легальные символы намного проще, чем недопустимые.

Ссылка
https://en.wikipedia.org/wiki/Code_injection
https://www.cse.unr.edu/~mgunes/cpe401/cpe401sp11/student/CodeInjection.pptx

Эта статья предоставлена Акашем Шараном . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Внедрение кода и его смягчение на примере

0.00 (0%) 0 votes