🤖 Копай глубже: как AI-помощники пишут уязвимый код
Нам обещали революцию в разработке. Но пока Copilot и другие AI-ассистенты генерируют код за секунды — они же могут открывать дверь для хакеров. 🧨
Исследование от Silviu Asandei (Sonar) показало: популярные AI-инструменты автодополнения кода нередко подсовывают небезопасные конструкции. Причём не потому, что "плохой AI", а потому что он учится на реальном, но не всегда хорошем коде из open-source 🧠
🔍 Что конкретно не так?
🧱 AI повторяет небезопасные шаблоны
Если где-то в 10 тысячах GitHub-репозиториев есть copy-paste с уязвимостями, ассистент их "учтёт" — и предложит тебе как «решение».
🔐 Отсутствие контроля безопасности
AI не всегда может отличить eval(user_input) от безопасного парсинга. А разработчик, доверяя “умному” помощнику, реже перепроверяет предложения.
📉 Слепая генерация — без контекста
AI не знает специфики твоей системы, модели угроз или политик безопасности. Он просто... продолжает строку.
⚠️ Всплывают уязвимости вроде XSS, SQL-инъекций, SSRF и insecure deserialization.
📌 Пример: как Copilot подставил под атаку
🤖 Разработчик просит: "Напиши API-обработчик формы регистрации пользователей".
Copilot выдаёт рабочий код, но:
➖ Не экранирует поля
➖ Пропускает валидацию
➖ Не ставит rate-limit
🎯 Идеально для злоумышленника.
📊 Что показало исследование Sonar?
🔎 Проведён анализ кода, сгенерированного в популярных IDE
📈 Значительное число сниппетов содержат:
- небезопасные функции
- прямые обращения к
- опасным API
- отсутствие проверки прав доступа
Иными словами, автоматизация ≠ безопасная разработка
🧰 Как себя защитить?
🛠 Используйте инструменты анализа:
➖ SAST (Static Application Security Testing)
➖ Linter'ы с поддержкой security-правил
➖ AI-критики
📚 Обучайте разработчиков:
1⃣ Не полагаться слепо на AI
2⃣ Понимать OWASP Top 10
3⃣ Ставить "контрольные точки" в пайплайнах CI/CD
🧠 Доверяй, но проверяй. Особенно если код пишется за секунду.
Stay secure and read SecureTechTalks 📚
#SecureTechTalks #AIcode #Copilot #CodeSecurity #AIrisks #DevSecOps #StaticAnalysis #Sonar #CyberSecurity #XSS #AIandIDE #OWASP #SecureByDesign #AIDangers
Нам обещали революцию в разработке. Но пока Copilot и другие AI-ассистенты генерируют код за секунды — они же могут открывать дверь для хакеров. 🧨
Исследование от Silviu Asandei (Sonar) показало: популярные AI-инструменты автодополнения кода нередко подсовывают небезопасные конструкции. Причём не потому, что "плохой AI", а потому что он учится на реальном, но не всегда хорошем коде из open-source 🧠
🔍 Что конкретно не так?
🧱 AI повторяет небезопасные шаблоны
Если где-то в 10 тысячах GitHub-репозиториев есть copy-paste с уязвимостями, ассистент их "учтёт" — и предложит тебе как «решение».
🔐 Отсутствие контроля безопасности
AI не всегда может отличить eval(user_input) от безопасного парсинга. А разработчик, доверяя “умному” помощнику, реже перепроверяет предложения.
📉 Слепая генерация — без контекста
AI не знает специфики твоей системы, модели угроз или политик безопасности. Он просто... продолжает строку.
⚠️ Всплывают уязвимости вроде XSS, SQL-инъекций, SSRF и insecure deserialization.
📌 Пример: как Copilot подставил под атаку
🤖 Разработчик просит: "Напиши API-обработчик формы регистрации пользователей".
Copilot выдаёт рабочий код, но:
🎯 Идеально для злоумышленника.
📊 Что показало исследование Sonar?
🔎 Проведён анализ кода, сгенерированного в популярных IDE
📈 Значительное число сниппетов содержат:
- небезопасные функции
- прямые обращения к
- опасным API
- отсутствие проверки прав доступа
Иными словами, автоматизация ≠ безопасная разработка
🧰 Как себя защитить?
🛠 Используйте инструменты анализа:
📚 Обучайте разработчиков:
1⃣ Не полагаться слепо на AI
2⃣ Понимать OWASP Top 10
3⃣ Ставить "контрольные точки" в пайплайнах CI/CD
🧠 Доверяй, но проверяй. Особенно если код пишется за секунду.
Stay secure and read SecureTechTalks 📚
#SecureTechTalks #AIcode #Copilot #CodeSecurity #AIrisks #DevSecOps #StaticAnalysis #Sonar #CyberSecurity #XSS #AIandIDE #OWASP #SecureByDesign #AIDangers
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧬 Код как отпечаток пальца: уязвимости начинают искать по стилю
Мы воспринимаем уязвимости, как локальный сбой. Где-то не проверили вход, где-то неверно обработали условие, где-то допустили лишний доступ. В такой логике ошибка - это случайность, которую можно найти и исправить.
Однако ошибки почти никогда не бывают случайными. Они воспроизводятся. Причём не потому, что разработчик копирует код, а потому что он воспроизводит собственный способ мышления. У каждого есть устойчивые паттерны, например, как упрощать проверки или как обходиться с исключениями. Эти решения повторяются, а вместе с ними повторяются и уязвимости.
⚙️ Стиль становится сигналом
Code stylometry - подход, который смотрит на код не как на программу, а как на поведение автора. Модель работает на уровне структуры, она анализирует абстрактные синтаксические деревья, последовательности токенов, частоту и комбинации конструкций.
Код превращается в набор признаков, из которых можно восстановить «почерк» разработчика. Этот почерк оказывается достаточно устойчивым, чтобы его можно было распознать и связать с вероятностью ошибок.
Речь идет не о поиске конкретной уязвимости, а склонности к ней.
🧪 От поиска к предсказанию
Модель сначала извлекает стилевые признаки, затем сопоставляет их с обученными зависимостями и на выходе даёт оценку: насколько вероятно, что в этом коде есть уязвимости.
Технически за этим стоят обычные ML-пайплайны, обучение на размеченных данных, где известны уязвимости.
Впервые объектом анализа становится не сам код, но и стиль его написания как фактор риска.
🧨 Почему это работает?
Причина в том, что разработчик не пишет код «с нуля» каждый раз. Он воспроизводит себя. Одни и те же способы обработки ошибок, одни и те же допущения кочуют из файла в файл. Если в одном месте это привело к уязвимости, в другом вероятность резко возрастает.
Модель, в отличие от человека, не ищет логическое объяснение. Она фиксирует статистическую закономерность.
🕵️♂️ Код рассказывает о человеке
Если стиль можно распознать и оценить, значит, можно сравнивать не только фрагменты кода, но и их авторов. Код начинает работать как отпечаток пальца. Через него проявляются привычки, уровень аккуратности, склонность к риску.
В прикладном смысле это означает, что анализ может сместиться. Не от кода к уязвимости, а от разработчика к зонам повышенного риска. В большом проекте это даёт возможность приоритизировать аудит, фокусироваться не на всём сразу, а на том, где вероятность ошибки статистически выше.
🔗 Подробнее с подходом можно ознакомиться в исследовании.
P.S. интересно будет составить список паттернов для каждой LLM.
Stay secure and read SecureTechTalks 📚
#кибербезопасность #AI #LLM #CodeSecurity #VulnerabilityDetection #Infosec #CyberSecurity #StaticAnalysis #AIrisks #SecureTechTalks
Мы воспринимаем уязвимости, как локальный сбой. Где-то не проверили вход, где-то неверно обработали условие, где-то допустили лишний доступ. В такой логике ошибка - это случайность, которую можно найти и исправить.
Однако ошибки почти никогда не бывают случайными. Они воспроизводятся. Причём не потому, что разработчик копирует код, а потому что он воспроизводит собственный способ мышления. У каждого есть устойчивые паттерны, например, как упрощать проверки или как обходиться с исключениями. Эти решения повторяются, а вместе с ними повторяются и уязвимости.
⚙️ Стиль становится сигналом
Code stylometry - подход, который смотрит на код не как на программу, а как на поведение автора. Модель работает на уровне структуры, она анализирует абстрактные синтаксические деревья, последовательности токенов, частоту и комбинации конструкций.
Код превращается в набор признаков, из которых можно восстановить «почерк» разработчика. Этот почерк оказывается достаточно устойчивым, чтобы его можно было распознать и связать с вероятностью ошибок.
Речь идет не о поиске конкретной уязвимости, а склонности к ней.
🧪 От поиска к предсказанию
Модель сначала извлекает стилевые признаки, затем сопоставляет их с обученными зависимостями и на выходе даёт оценку: насколько вероятно, что в этом коде есть уязвимости.
Технически за этим стоят обычные ML-пайплайны, обучение на размеченных данных, где известны уязвимости.
Впервые объектом анализа становится не сам код, но и стиль его написания как фактор риска.
🧨 Почему это работает?
Причина в том, что разработчик не пишет код «с нуля» каждый раз. Он воспроизводит себя. Одни и те же способы обработки ошибок, одни и те же допущения кочуют из файла в файл. Если в одном месте это привело к уязвимости, в другом вероятность резко возрастает.
Модель, в отличие от человека, не ищет логическое объяснение. Она фиксирует статистическую закономерность.
🕵️♂️ Код рассказывает о человеке
Если стиль можно распознать и оценить, значит, можно сравнивать не только фрагменты кода, но и их авторов. Код начинает работать как отпечаток пальца. Через него проявляются привычки, уровень аккуратности, склонность к риску.
В прикладном смысле это означает, что анализ может сместиться. Не от кода к уязвимости, а от разработчика к зонам повышенного риска. В большом проекте это даёт возможность приоритизировать аудит, фокусироваться не на всём сразу, а на том, где вероятность ошибки статистически выше.
🔗 Подробнее с подходом можно ознакомиться в исследовании.
P.S. интересно будет составить список паттернов для каждой LLM.
Stay secure and read SecureTechTalks 📚
#кибербезопасность #AI #LLM #CodeSecurity #VulnerabilityDetection #Infosec #CyberSecurity #StaticAnalysis #AIrisks #SecureTechTalks
👍1
🔬 Исследователи решили «допилить» CodeQL с помощью LLM
Большинство SAST движков работают через data flow analysis (DFA).
Система пытается ответить вопрос, может ли пользовательский input добраться до опасной операции? Однако built-in rules часто знают только «популярные» фреймворки и ограниченный набор propagation patterns.
Если используются нестандартные framework или кастомные wrapper, то flow фактически исчезает из анализа.
🧠 LLM как переводчик
Исследователи решили использовать LLM для автоматического обнаружения sources и sinks внутри open-source framework’ов.
Модель анализировала код библиотек и помогала определять:
🔹 откуда реально приходит user-controlled input
🔹 какие API являются опасными
🔹 как данные передаются через абстрактные слои
Дальше всё это превращалось в кастомные правила для CodeQL.
Идея оказалась довольно жизнеспособной, но исследователи пошли дальше.
🧪 А потом они полезли в кишки CodeQL
Вторая часть исследования: авторы начали патчить сам Data Flow Engine.
Добавили поддержку вещей, на которых анализ традиционно ломался:
🔹 Java reflection
🔹 partial native methods
🔹 сложные value-passing scenarios
🔹 propagation через language-specific edge cases
Идея была увеличить количество наблюдаемых execution paths внутри анализа.
📈 Цифры
После расширения framework coverage исследователи получили 15% дополнительных data flow поверх стандартных правил CodeQL.
Кроме того, им удалось воспроизвести 50+ исторических CVE, которые оригинальный CodeQL раньше не видел.
Вдобавок было выявлено 5 новых CVE, включая уязвимости, ранее не детектируемые стандартным пайплайном.
Возможно, ближайшее будущее AppSec это LLM-enhanced SAST, где модель постоянно расширяет карту data flow и учит scanner видеть то, что раньше было слепой зоной.
🔗 Презентация: https://i.blackhat.com/BH-USA-25/Presentations/USA-25-More-Flows-More-Bugs-Empowering.pdf
Stay secure and read SecureTechTalks 📚
#кибербезопасность #AI #LLM #SAST #CodeQL #AppSec #StaticAnalysis #DevSecOps #CyberSecurity #SecureTechTalks
Большинство SAST движков работают через data flow analysis (DFA).
Система пытается ответить вопрос, может ли пользовательский input добраться до опасной операции? Однако built-in rules часто знают только «популярные» фреймворки и ограниченный набор propagation patterns.
Если используются нестандартные framework или кастомные wrapper, то flow фактически исчезает из анализа.
🧠 LLM как переводчик
Исследователи решили использовать LLM для автоматического обнаружения sources и sinks внутри open-source framework’ов.
Модель анализировала код библиотек и помогала определять:
🔹 откуда реально приходит user-controlled input
🔹 какие API являются опасными
🔹 как данные передаются через абстрактные слои
Дальше всё это превращалось в кастомные правила для CodeQL.
Идея оказалась довольно жизнеспособной, но исследователи пошли дальше.
🧪 А потом они полезли в кишки CodeQL
Вторая часть исследования: авторы начали патчить сам Data Flow Engine.
Добавили поддержку вещей, на которых анализ традиционно ломался:
🔹 Java reflection
🔹 partial native methods
🔹 сложные value-passing scenarios
🔹 propagation через language-specific edge cases
Идея была увеличить количество наблюдаемых execution paths внутри анализа.
📈 Цифры
После расширения framework coverage исследователи получили 15% дополнительных data flow поверх стандартных правил CodeQL.
Кроме того, им удалось воспроизвести 50+ исторических CVE, которые оригинальный CodeQL раньше не видел.
Вдобавок было выявлено 5 новых CVE, включая уязвимости, ранее не детектируемые стандартным пайплайном.
Возможно, ближайшее будущее AppSec это LLM-enhanced SAST, где модель постоянно расширяет карту data flow и учит scanner видеть то, что раньше было слепой зоной.
🔗 Презентация: https://i.blackhat.com/BH-USA-25/Presentations/USA-25-More-Flows-More-Bugs-Empowering.pdf
Stay secure and read SecureTechTalks 📚
#кибербезопасность #AI #LLM #SAST #CodeQL #AppSec #StaticAnalysis #DevSecOps #CyberSecurity #SecureTechTalks
👍2