Первоначально автор использовал большую языковую модель (LLM) для создания сканера безопасности для кода, сгенерированного искусственным интеллектом. Этот подход на основе LLM оказался ненадежным, выдавая противоречивые оценки уязвимостей с разными оценками серьезности. Результаты сканера были очень переменчивыми, неспособными последовательно выявлять известные уязвимости при многократных запусках. Эта непоследовательность, напоминающая p-хакинг, сделала LLM непригодной для приложений безопасности. Автор осознал ограничения LLM, когда она иногда классифицировала критическую инъекцию команд как низкий риск. Следовательно, автор переключился на метод статического анализа. Новый подход статического анализа предлагал детерминированные результаты, последовательно правильно выявляя уязвимости. Статический анализ оказался значительно быстрее и дешевле, что позволило проводить более частые сканирования. Он также продемонстрировал лучшее покрытие, обнаруживая больше уязвимостей более надежно. Система статического анализа использовала 93 правила в 14 категориях. Автор добился точности в выявлении составных рисков и специфичных для ИИ уязвимостей, с которыми LLM испытывала трудности. Хотя в статическом анализе отсутствовали объяснения на естественном языке и осведомленность о контексте, он предлагал заранее написанные описания и уровни уверенности для компенсации. Подход статического анализа показал улучшения по всем измеренным показателям по сравнению с LLM. Автор приходит к выводу, что статический анализ превосходит LLM для автоматизированного сканирования, подчеркивая его скорость, последовательность и надежность. Автор предполагает, что LLM лучше подходят для анализа кода и моделирования угроз, но не для автоматического обнаружения уязвимостей. В конечном итоге, более простой подход оказался лучше для сканирования безопасности.
dev.to
How I Replaced LLM-Based Code Analysis with Static Analysis (And Got Better Results)
Create attached notes ...
