В библиотеке 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
ПРИМЕЧАНИЕ. Это будет не совсем так, поскольку докладчики и их выступления генерируются случайным образом при каждом запуске приложения.
Если вы нажмете или скопируете/вставите одну из ссылок, вы увидите страницу докладчика со списком их выступлений:
Взгляните на TalkController.java. Вот как отображается страница докладчика. Сможете ли вы обнаружить уязвимость?
Мы не хотим, чтобы вам приходилось полагаться на свое зрение! Мы хотим, чтобы разработчики двигались быстрее И писали безопасный код.
Я использую IntelliJ Idea для написания своих Java-приложений. Я также использую расширение IDE Snyk. Хорошей новостью является то, что для всех популярных IDE существуют расширения Snyk IDE, поддерживающие широкий спектр языков программирования.
Если вы хотите следовать инструкциям и у вас нет учетной записи Snyk, вы можете создать ее бесплатно здесь.
Я уже упоминал, что в этом приложении много уязвимостей? Это потому, что мы используем его в наших мастерских. Я хочу сосредоточиться на том, что находится в TalkController.java:
Это очень полезная информация для решения проблемы. Однако обратите внимание на небольшой значок молнии (⚡️) слева от уязвимости №1. Это означает, что данная уязвимость может быть устранена автоматически.
Если вы наведете указатель мыши на красную волнистую линию, вы увидите возможность Исправить эту проблему:
Прежде чем мы посмотрим на результат 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 показывает, что уязвимости больше нет.
Действительно, палец вверх! Автоматическое исправление Snyk не только устранило уязвимость, но и сделало это таким образом, который соответствует используемой платформе — в данном случае Spring Boot.
В этом посте я показал вам, как Deep Code AI Fix от Snyk выходит за рамки простых советов по исправлению и может внести исправления от вашего имени. Вы также можете убедиться в пользе исправления, увидев, что исходной уязвимости безопасности больше нет.
В Snyk нам нравятся ИИ-помощники, но они не очень хороши в обеспечении безопасности. Наше исследование показывает, что существующие поколения ИИ склонны генерировать небезопасный код примерно с той же скоростью, что и люди — около 40%. Это имеет смысл, поскольку решения чистого поколения AI, такие как Copilot, обучают свои модели в первую очередь на существующем коде. Гибридный подход Сника, который включает в себя символический искусственный интеллект, генный искусственный интеллект, машинное обучение и обучение, проводимое нашей командой безопасности, дает результаты, ориентированные на безопасность.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3