«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Автоматически устраняйте уязвимости кода с помощью ИИ

Автоматически устраняйте уязвимости кода с помощью ИИ

Опубликовано 8 ноября 2024 г.
Просматривать:400

В библиотеке Snyk, посвященной семинарам для клиентов SecRel, есть один, который называется Breaking AI. На этом семинаре рассказывается, как генеративные помощники искусственного интеллекта, такие как второй пилот и кодий, могут помочь разработчикам писать код быстрее. Основная идея семинара заключается в том, что помощники по искусственному интеллекту подобны младшим разработчикам, только что вышедшим из учебных лагерей по программированию: они очень нетерпеливы и полезны, но - вы действительно хотите проверить их код (ничего не стесняйтесь младшим разработчикам - мы они нужны, и они потрясающие!). На семинаре мы покажем, как объединение ИИ-помощников и Snyk дает вам суперсилу — быстрое и безопасное написание кода.

Цитируя известного шеф-повара, Snyk теперь «поднял его на ступеньку выше» благодаря возможности Deep Code AI Fix. Snyk Code всегда давал хорошие советы по устранению уязвимостей безопасности. Это даже даст вам три хороших ссылки на другие проекты с открытым исходным кодом с такой же уязвимостью и покажет, как эти проекты ее исправили. Теперь, благодаря тщательно отобранным данным исследовательской группы Snyk по безопасности, гибридной модели искусственного интеллекта, сочетающей в себе мощь генеративного и символического искусственного интеллекта, а также моделей машинного обучения, Snyk теперь может автоматически исправлять многие распространенные уязвимости безопасности, не выходя из вашего компьютера. любимая IDE.

В этом блоге я покажу, как лучше всего воспользоваться преимуществами Deep Code AI Fix (DCAIF) в примере проекта Java, который мы используем на наших семинарах. Исходный код можно найти здесь. ПРИМЕЧАНИЕ. Этот проект намеренно уязвим по нескольким причинам и не подходит для использования в какой-либо производственной среде.

Развлекайтесь с приложением для планирования конференций

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

Эталонное приложение — ужасная версия (я НЕ хороший фронтенд-разработчик!), но оно полезно для демонстрации того, как код может технически работать и в то же время быть небезопасным.

Это приложение Spring Boot, использующее механизм шаблонов Thymeleaf. При запуске он генерирует случайных докладчиков, названия докладов и данные описания докладов, используя популярную библиотеку фейкеров. Названия и описания докладов взяты из текста книги «Автостопом по Галактике». ПРИМЕЧАНИЕ. Заголовки и описания не могут быть на 100 % безопасными для работы. Вас предупредили!

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

Чтобы скомпилировать и запустить приложение, выполните следующее:

mvn clean install
mvn spring-boot:run

Когда вы запустите приложение, помимо обычного баннера Spring Boot и других результатов, вы увидите что-то вроде этого:

Access talks for heath.davis at: http://localhost:8081/talks?username=heath.davis
Access talks for russell.bernier at: http://localhost:8081/talks?username=russell.bernier
Access talks for kenyetta.jones at: http://localhost:8081/talks?username=kenyetta.jones
Access talks for howard.bailey at: http://localhost:8081/talks?username=howard.bailey
Access talks for buddy.jast at: http://localhost:8081/talks?username=buddy.jast
Access talks for jeanice.kertzmann at: http://localhost:8081/talks?username=jeanice.kertzmann
Access talks for deborah.hamill at: http://localhost:8081/talks?username=deborah.hamill
Access talks for horacio.renner at: http://localhost:8081/talks?username=horacio.renner
Access talks for winfred.schuster at: http://localhost:8081/talks?username=winfred.schuster
Access talks for tommie.hane at: http://localhost:8081/talks?username=tommie.hane
Access talks for micah at: http://localhost:8081/talks?username=micah

ПРИМЕЧАНИЕ. Это будет не совсем так, поскольку докладчики и их выступления генерируются случайным образом при каждом запуске приложения.

Если вы нажмете или скопируете/вставите одну из ссылок, вы увидите страницу докладчика со списком их выступлений:

Automatically fix code vulnerabilities with AI

Давай поиграем: найди уязвимость

Взгляните на TalkController.java. Вот как отображается страница докладчика. Сможете ли вы обнаружить уязвимость?

Мы не хотим, чтобы вам приходилось полагаться на свое зрение! Мы хотим, чтобы разработчики двигались быстрее И писали безопасный код.

Я использую IntelliJ Idea для написания своих Java-приложений. Я также использую расширение IDE Snyk. Хорошей новостью является то, что для всех популярных IDE существуют расширения Snyk IDE, поддерживающие широкий спектр языков программирования.

Если вы хотите следовать инструкциям и у вас нет учетной записи Snyk, вы можете создать ее бесплатно здесь.

Я уже упоминал, что в этом приложении много уязвимостей? Это потому, что мы используем его в наших мастерских. Я хочу сосредоточиться на том, что находится в TalkController.java:

Automatically fix code vulnerabilities with AI

  1. Показывает, что обнаружена уязвимость межсайтового скриптинга (XSS)
  2. Показывает разницу с одним из трех проектов с открытым исходным кодом с одинаковой уязвимостью. Это показывает, как это было исправлено (зеленая часть).
  3. Красная волнистая линия указывает, где в коде находится уязвимость.

Это очень полезная информация для решения проблемы. Однако обратите внимание на небольшой значок молнии (⚡️) слева от уязвимости №1. Это означает, что данная уязвимость может быть устранена автоматически.

Если вы наведете указатель мыши на красную волнистую линию, вы увидите возможность Исправить эту проблему:

Automatically fix code vulnerabilities with AI
Прежде чем мы посмотрим на результат Deep Code AI Fix, давайте посмотрим, что для нас сделает второй пилот.

Вот подсказка, которую я дал второму пилоту в строке 42, и код, который она вводит:

// guard against XSS
username = username.replaceAll("", ">");

Это может работать против наивных атак, но будет ли оно работать против всех типов XSS-атак? Я не так уверен. Фактически, когда я повторно запускаю сканирование Snyk, XSS-уязвимость все еще существует.

Давайте посмотрим на исправление Сника:

String usernameStr = ""   HtmlUtils.htmlEscape(username)   "'s talks";
================================================


Теперь, это мне нравится. Он использует идиоматический и ожидаемый подход со встроенной библиотекой Spring Boot: HtmlUtils. Я уверен, что это тщательно очистит ввод: имя пользователя. Новое сканирование Snyk показывает, что уязвимости больше нет.

Automatically fix code vulnerabilities with AI
Действительно, палец вверх! Автоматическое исправление Snyk не только устранило уязвимость, но и сделало это таким образом, который соответствует используемой платформе — в данном случае Spring Boot.

DCAIF не замедлит вас

В этом посте я показал вам, как Deep Code AI Fix от Snyk выходит за рамки простых советов по исправлению и может внести исправления от вашего имени. Вы также можете убедиться в пользе исправления, увидев, что исходной уязвимости безопасности больше нет.

В Snyk нам нравятся ИИ-помощники, но они не очень хороши в обеспечении безопасности. Наше исследование показывает, что существующие поколения ИИ склонны генерировать небезопасный код примерно с той же скоростью, что и люди — около 40%. Это имеет смысл, поскольку решения чистого поколения AI, такие как Copilot, обучают свои модели в первую очередь на существующем коде. Гибридный подход Сника, который включает в себя символический искусственный интеллект, генный искусственный интеллект, машинное обучение и обучение, проводимое нашей командой безопасности, дает результаты, ориентированные на безопасность.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/snyk/automatically-fix-code-vulnerabilities-with-ai-4dbf?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3