Недостоверен код
В първия коментар е връзката към статията “MCP Vulnerability Exposes the AI Untrusted Code Crisis”
https://thenewstack.io/mcp-vulnerability-exposes-the-ai-untrusted-code-crisis/
Не е ясно защо това се разглежда като нов проблем. Дори преди появата на LLM кодът получаваше одобрение не защото е написан от човек, а след преминаване на тестове, скенери, ревюта, ръчни проверки от QA и всичко останало, което успявахме да „вмъкнем“ в CI и SDLC. Имаше изключения за отделни хора и проекти, но те бяха именно изключения.
Това, което наистина се промени сега, е значително увеличеният обем код на един програмист и визуалната адекватност на кода, която притъпява бдителността. И тези фактори ще продължат да растат: създаването на код ще става все по-лесно.
Ето защо QA като част от процеса на разработка става все по-важен.
Виждам няколко посоки за решаване на проблема, но нито една от тях не е проста и универсална:
- изграждане на ясни процеси за одобрение на код: дори ако кодът изглежда адекватно на пръв поглед, той все пак може да съдържа всякакви грешки
- подобряване на документацията: колкото повече контекст има LLM, толкова по-малка е вероятността за грешки
- обучение по Context Engineering на всички разработчици: колкото по-добре разработчиците разбират как да изграждат контекст за LLM, толкова по-малка е вероятността за грешки
- разясняване на всички рискове и тяхната отговорност: разработчиците трябва да разберат, че носят отговорност за кода, който комитват, независимо кой го е написал
- автоматизация на проверките на кода със стари методи: тестове на всички нива, линтери, статични анализатори, скенери за мъртъв код (това е истински проблем за LLM), търсене на заглушки
- включване на QA в ранните етапи на SDLC: това ще подобри спецификациите, ще даде възможност за изграждане на QA тестове, достъпни за разработчиците и т.н.
- използване на LLM за проверка на код
- внедряване на Canary Deployment и/или Ring-based Deployment, за да се намалят очакваните загуби от грешки
- внедряване на Feature Flag за деактивиране на нови функции за критични проекти
- подобряване на Observability, мониторинг и алертиране