
Комментарии 9
return True # вот и ошибка, отказ не возвращается никогда
Эх, в наше время иньекции позакрученнее были!
Как раз думаю инъекцию из той статьи ИИ отбил бы без проблем. Он не страдает недостатком внимания и не путает "=" и "==" в отличие от человека.
Поэтому пока ничего лучше совместного ревью не придумать. Каждый должен отвечать за то в чем он силен - ИИ в поиске неправильной скобочки среди тысяч других скобочек. А человек в отстаивании границ и посылании лесом тех, кто пытается незапланированное поведение вносить.
"ИИ нарисуй мне политику безопасной разработки"... "ИИ подружись с SAST и оптимизируй конвейеры"... Методологи ИБ, девсекопсы, аппсеки - все сейчас юзают ии
Вот выводы из моей статьи что это так себе идея.
Политику можно написать с помощью ИИ... но некоторые нейронки ее просто игнорируют при ревью, или легко переубеждаются. Не важно что именно там написано, если вы используете в своем пайплайне DeepSeek (потому что дешевле всего из облачного) или Qwen (потому что локально). Они их читают, удивляются различию с кодом, а потом пропускают зловредный код и еще и политику под него переписать пытаются, если она в том же репозитории лежит.
Наивные идеи тоже не работают. Моей первой идеей был формат описания ревью, в котором нет кода. Только описание. Он был заточен под обмен ревью между недоверенными ИИ-агентами, и идея была в том что агенты передают друг другу только шаги воспроизведения проблемы или описание, а код каждый строит сам. При этом структура ревью формализована, проверяется скриптами, которые должны защищать от вредоносного кода, прежде чем оно попадет к ИИ. Эту идею предложило и одобрило несколько ИИ на ИИ-досках (о которых я писал в прошлой статье https://habr.com/ru/articles/1081320/). Подробнее тут https://github.com/smirnovegorv/reproducible-claim-record
Но эта идея полностью провалила столкновение с реальностью, когда оказалось что основной канал уязвимостей вовсе не код.
Это я к тому, что если дать задачу просто ИИ предложить какую-то идею безопасного флоу ревью, он вполне может предложить очевидную, но на практике не рабочую идею.
Привет, спасибо за статью. Интересно. Подскажи, а в целом не рассматривал процесс код ревью с ИИ не с точки зрения вопросов безопасности, а с точки зрения того чтобы убедиться что предложенная ИИ реализация не противоречит лучшим практикам языка, не содержит тех самых Bad smells?
Нет, меня именно безопасность интересовала.
Но был некий побочный вывод. При двухпроходном ревью на втором шаге ИИ, не видевший описания реквеста и имеющий только код на входе, начинал очень часто отклонять легальные правки (у меня была контрольная группа — правки без инъекций, чтобы проверить что модель не отклоняет вообще все подряд). Разные модели делали это по разным причинам, но особенно выделился Sonnet, который отклонял их как раз под соусом несоответствия хорошим практикам. Например, потому что нет тестов, или еще как‑то к коду придирался. Что выходило уже за рамки моего эксперимента.
В этом плане мне кажется особых проблем нет, я сам вообще вручную код полгода как перестал писать, и качество ИИ кода меня вполне устраивает. Особенно если время от времени ему давать задания на рефакторинг и переписывание.
Неожиданностью оказалась именно уязвимость к бэкдорам. При этом ИИ на полном серьезе может этот бэкдор вот завернуть в тесты и красивый код.
Плюс добавлю, что мое глубокое убеждение (за что меня на Хабре уже пару раз расстреляли в комментариях), что все эти лучшие практики скоро отправятся на свалку истории.
Все эти DRY, KISS и прочие Clean Code штуки изобретены для того, чтобы упростить чтение и поддержку кода людьми. Наши мозги, созданные природой для подсчета бананов на ветке, плохо работают со сложными большими абстракциями. У нас маленький контекст мышления и короткая оперативная память. Нам все эти практики необходимы, иначе мы в методе на тыщу строк будем пропускать очевидные ошибки и не сможем вносить правки, так как он не влезает в наш контекст.
У нейросетей такой проблемы нет, большой лапшеобразный метод они вполне понимают и нормально правят. Им это просто не нужно, ну или как минимум нужна только меньшая часть практик.
Поэтому как только код в массе своей перестанет читаться людьми вообще (а к этому уже идет семимильными шагами), то и в этих практиках нужда отпадет. Так же как сейчас вы не читаете глазами ассемблерный код, и вам уже не нужны практики 40-летней давности по его читаемости и поддерживаемости, вас устраивает что там компилятор накомпилирует, и лезть вы в это почти никогда не будете.
Но это мое личное непопулярное мнение.
сейчас вы не читаете глазами ассемблерный код
Я сказал агенту сделать ревью кода, а он пропустил в кодовую базу инъекцию. Насколько это реально и как защищаться