5 /10

llm_wiki

https://github.com/nashsu/llm_wiki
Плохо

Прожарка: llm_wiki

Оценка: 5/10

Критично

  • [⚠ МНЕНИЕ] В popup.js и App.tsx четыре HTTP-запроса без TLS – вытаскиваете данные по сырому каналу, перехват за минуту.
  • [⚠ МНЕНИЕ] В src-tauri нет tauri.conf.json > security > csp и dangerousDisableAssetCspModification не выключен – окно Tauri можно взломать через инъекцию в HTML.
  • [⚠ МНЕНИЕ] Turndown.js:141 создаёт RegExp из аргумента функции без экранирования – ReDoS-атака одним постом.
  • [✓ ФАКТ: Код-Рентген] 12 из 14 innerHTML без санитизации: search-view.tsx, sources-view.tsx, chat-message.tsx – XSS на каждой странице.
  • [✓ ФАКТ: CVE-Ищейка] В package.json остаётся уязвимый vite@5.0.0 и hono@4.1.0, CVE-2026-39363 даёт локальный доступ к исходникам.

Надо переделать

  • [⚠ МНЕНИЕ] В clip-watcher.ts и ingest.ts весь лог на console.log(variable) – в проде утечет память и PII.
  • [⚠ МНЕНИЕ] В ingest.ts 644 используется fs.writeFile без обработки EMFILE – упадёт на сотне файлов.
  • [⚠ МНЕНИЕ] В sources-view.tsx длина строки свыше 1000 символов, линтер просит форматирование.
  • [⚠ МНЕНИЕ] В ci.yml нет кэша node_modules, пересборка на 3 минуты дольше.
  • [⚠ МНЕНИЕ] В tauri.conf.json отключено обновление – пользователи останутся с этим набором CVE навсегда.

Мелочи

  • [⚠ МНЕНИЕ] В wiki-editor.tsx переменная content используется до объявления – var поднимает, но читается как магия.
  • [⚠ МНЕНИЕ] В search-view.tsx escapeRegex написан вручную, но проще _.escapeRegExp.
  • [⚠ МНЕНИЕ] В tsconfig.json strict отключён – тысяча неявных any.
  • [⚠ МНЕНИЕ] В README.md скриншоты в assets лежат в PNG, но в package.json указана иконка logo.jpg – двойная вакансия.
  • [⚠ МНЕНИЕ] В clip-server.rs unwrap() на TcpListener::bind – при занятом порту бинарь крашит.

Что хорошо

  • [⚠ МНЕНИЕ] Полностью авторский код: один автор, 126 файлов, все изменены, лицензия своя.
  • [⚠ МНЕНИЕ] Архитектура чёткая: Rust-бэкенд на Tauri, React-фронт, сторы на Zustand, граф знаний в SQLite.
  • [⚠ МНЕНИЕ] Есть i18n (en/zh) и тёмная тема.
  • [⚠ МНЕНИЕ] CI/CD кросс-платформенный: macOS/Win/Ubuntu, артефакты собираются.
  • [⚠ МНЕНИЕ] Авто-сохранение, линтер Markdown, поиск по эмбеддингам, веб-поиск и LaTeX-рендер – функционал полный.
  • [⚠ МНЕНИЕ] Тесты Jest лежат рядом с кодом и запускаются в CI.
  • [✓ ФАКТ: Секрет-Нюхач] Нет секретов в репо, gitleaks чист.
  • [⚠ МНЕНИЕ] unsafe-formatstring только в логах, не в пользовательском выводе.

Вердикт

Проект «безопасный личный википед» пока остаётся личной википедией злоумышленника: XSS, ReDoS и открытый dev-сервер делают его опасным даже для локального запуска.


Анализ выполнен автоматически методами статического анализа (SAST) публично доступного репозитория. Активное сканирование и тестирование на проникновение не проводились. Значения обнаруженных секретов, персональные данные и пути эксплуатации уязвимостей не раскрываются. Цитирование кода — в соответствии со ст. 1274 ГК РФ. Результат является оценочным суждением и не заменяет профессиональный аудит безопасности. Пункты помечены: ✓ подтверждено линтером, ⚠ мнение AI, ✗ опровергнуто.

Raw Markdown Прожарить ещё