Я створив інструмент безпеки. Він знайшов критичну діру в самому собі.
Я розробляю аналізатор безпеки коду. Я назвав його vibeanalyzer.
Мета проста. Зараз багато людей практикують «vibe-coding». Вони дозволяють ШІ-агентам писати код. Код виглядає чистим. Тести проходять. Але розробник не має уявлення про те, що насправді знаходиться всередині проєкту.
Перш ніж повністю зануритися в це, я зробив те, що мав би зробити вже давно. Я перевірив, чи існуючі інструменти вже вирішили цю проблему. Вирішили. Такі інструменти, як Semgrep, CodeQL та Snyk, набагато кращі за мене.
Я запустив Semgrep на власному проєкті. Результати стали справжнім приземленням у реальність.
Semgrep виявив шість проблем у моїх залежностях:
• Одна косметична проблема з вибором хешу. • Дві проблеми високого рівня критичності (High) в esbuild та vite. • Три проблеми середнього рівня критичності (Medium), пов'язані з обходом шляху (path traversal). • Одна критична проблема (Critical) у vitest.
Проблема у vitest була вразливістю типу path traversal. Вона могла дозволити комусь читати або виконувати файли поза межами проєкту. Я сам додав цю залежність.
Як інструмент безпеки може мати критичну вразливість?
Відповідь — у ланцюжку постачання (supply chain). Мій код може бути чесним. Але інструменти, на яких я будую, не завжди безпечні. Якщо я пропустив це під час створення інструменту безпеки, у звичайного розробника немає жодного шансу це помітити.
Ось чому я продовжую розробку.
Існуючі інструменти, такі як Semgrep, знаходять патерни небезпеки. Вони знаходять відомі вразливості. Але вони не розуміють наміру. Вони не знають, що насправді мав робити ваш код.
Вони не можуть сказати, чи є функція безпечною, але при цьому вона вирішує проблему, якої не повинно бути у вашому проєкті.
Я називаю це «intent gap» (розрив намірів). Це відстань між кодом та його призначенням.
Vibeanalyzer зосереджується на цьому розриві. Інструмент запитує у вас мету проєкту та те, що не є його цілями (non-goals). Він встановлює межі (guardrails). Коли ШІ оцінює код, він знає мету. Він знає, що виходить за межі дозволеного.
Я завершив частину завантаження намірів. У мене є базовий аналіз TypeScript та графіки структури папок. Далі я маю побудувати ШІ-рівень. Я не знаю, чи зможе ШІ справді оцінювати код відповідно до намірів. Він може просто створювати хибні тривоги. Я буду розробляти це відкрито, щоб з'ясувати.
Я оновив свої залежності та виправив відомі баги. Але невідомі діри та логічні помилки залишаються. Ось чому робота триває.
Optional learning community: https://t.me/GyaanSetuAi
