AI-обозреватель обнаружил реальную ошибку. Сugesстированное им исправление разрушило бы мое приложение.
The AI Reviewer Found a Real Bug: Its Suggested Fix Would Have Broken My App ## Введение В современном мире программирования искусственный интеллект (AI) играет все более важную роль...
The AI Reviewer Found a Real Bug: Its Suggested Fix Would Have Broken My App
Введение
В современном мире программирования искусственный интеллект (AI) играет все более важную роль в процессе разработки и проверки кода. Однако, как показала недавняя ситуация, даже современные AI могут допускать ошибки. В этой статье мы рассмотрим случай, когда AI-ревьювер обнаружил реальную уязвимость в коде, который был написан другим AI, но предложенный им исправления мог бы привести к серьезным последствиям.
Примеры Использования AI в Ревью Кода
Установка и Настройка CodeRabbit
Я использовал CodeRabbit, сервис для автоматического ревью кода, чтобы проверить код, созданный AI-генератором Claude Code. CodeRabbit позволяет настроить уровень строгости проверки, что важно при работе с различными уровнями сложности и требований к коду.
# .coderabbit.yaml
reviews:
profile: assertive
Вариант Проверки по умолчанию
Изначально я решил проверить код по умолчанию, используя профиль CHILL, который не активирует много нотификаций и предупреждений.
git commit -m "Configured CodeRabbit to CHILL mode"
После выполнения этого шага CodeRabbit не выдал никаких действий.
Вариант Проверки в Строгом Режиме
Для более детальной проверки я изменил профиль на assertive:
git commit -m "Switched CodeRabbit review mode to assertive"
Это привело к обнаружению реальной уязвимости — CSV формулы инъекции (CWE-1236).
Проблема и Исследование
CSV Формулы Инъекции
CSV формулы инъекции представляет собой уязвимость, при которой злоумышленник может внедрить в CSV файл опасные формулы или код, которые затем будут интерпретированы и исполнены программой.
// Пример потенциально опасного кода
let csvData = "value1;=IF(A1>0, A1*2, 0)";
Проверка Безопасности
Для проверки безопасности я провел несколько шагов:
- Статический анализ: Проверил код на наличие потенциальных проблем.
- Запуск в headless браузере: Проверил работу приложения без участия пользователя.
Несмотря на то что код выглядел корректно и тесты прошли успешно, это не гарантировало его безопасность.
Непредвиденные Последствия Рекомендаций AI
Предложенное Исправление
CodeRabbit предложило исправление, которое могло бы исправить обнаруженную уязвимость. Однако, в процессе проверки я обнаружил, что это исправление могло бы повлиять на работу кода с отрицательными числами.
// Предложенное исправление
let cleanedCsvData = csvData.replace(/=IF\(.+\)/g, "");
Последствия
Если бы это исправление было применено, оно могло бы привести к некорректной обработке отрицательных чисел в экспортируемом файле.
// Пример работы с отрицательными числами
let negativeNumber = -5;
let result = cleanedCsvData.replace("A1", negativeNumber.toString());
Заключение
Этот случай показывает, что даже при использовании современных инструментов AI для ревью кода, необходимо быть осторожным и тщательно проверять все предложения исправлений. Необходимо сочетать использование AI с собственной экспертизой и опытом разработчика.
Практические Советы
- Настройте уровень строгости: Используйте различные профили для CodeRabbit или аналогичных инструментов, чтобы найти баланс между количеством предупреждений и их ценностью.
- Ручная проверка: Тщательно проверяйте все рекомендации AI перед их применением.
- Многократное тестирование: Проводите тестирование на различных сценариях использования и с учетом разных типов данных.
SEO Заголовок
AI ревьювер обнаружил реальную уязвимость, но исправление могло бы сломать код
SEO Описание
В этой статье рассказывается о том, как AI обнаружил уязвимость в коде, созданном другим AI, но предложенные исправления могли бы привести к проблемам.
SEO Ключевые Слова
AI ревьювер, уязвимость кода, автоматическое ревью, искусственный интеллект, разработка программного обеспечения
Теги
искусственный интеллект, автоматическое ревью кода, разработка программного обеспечения, безопасность кода, AI ревьювер