Первое тестовое использование статического анализа кода и нейроревью в Sourcecraft.dev [0].
Сканер выдал предупреждение, что используемая либа для http-клиента более многофункциональна, и кроме ожидаемых схем http/https ещё умеет и 'file://':
Detected a dynamic value being used with urllib. urllib supports 'file://' schemes,
so a dynamic value controlled by a malicious actor may allow them to read arbitrary
files. Audit uses of urllib calls to ensure user data cannot control the URLs,
or consider using the 'requests' library instead.
Полезная информация про поддержку схемы file:// в либе.
Добавил явную проверку в код, что схема http/https [1], но как в реальной жизни там может вместо http/https оказаться file - хз.
От обычного сканера ожидать учёта контекста проекта, наверное, пока рано.
Итого - полезная штука для небольших проектов, для средних+ надо думать как снижать false-positive ворнинги.
Протестил заодно и нейроревью от SourceCraft этого ворнинга.
У меня здесь возникла надежда на то, что аишка прочтёт доку + код и учёт это в своём анализе! И это типа и будет то самое средство снижения false-positive ворнингов от обычного сканера.
Предлагаемые исправления от AI:
- Добавить проверку, что в ссылке ожидаемая схема http/https. Это ок, адекватно, как раз только это и сделал.
- Добавить таймаут и обработку ошибок. Про явный таймаут точно ок, но я его в код не добавил в итоге. А вот про обработку ошибок - aislop, там и так есть блоки try и with.
- Сменить HTTP-клиент. Вместо идущего в stdlib предлагается внешняя либа. А вот это неадекватно, в документации к проекту я явно указывал, что предпочтение должно отдаваться библиотекам из stdlib.
Итого ощущения от AI-анализа:
- Контекст проекта не учитывает. Надо, чтобы, как минимум, учитывался контекст текущей функции, а лучше файла или всего пакета. В идеале надо, чтобы учитывалась и документация+код проверяемого проекта, там может быть полезная инфа для AI.
- Для небольших скриптов - полезно даже в таком виде. А вот как этим пользоваться в средних+ проектах - хз, для таких проектов сейчас это скорее aislop и ИБД, чем помощь.
[0] https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/sast