LabSite — интерактивный тренажёр для развития навыков безопасного ревью кода и AppSec-триажа. Пользователь не угадывает название уязвимости: он собирает цепочку доказательств, проверяет достижимость, оценивает реальный impact и выбирает исправление, устраняющее первопричину.
В проекте доступно 100+ практических заданий и интерактивных испытаний. Полный исходный код и каталоги ответов находятся в приватном репозитории, поэтому эта публичная версия служит безопасной продуктовой и технической витриной.
- Practice — поиск уязвимых строк в реалистичном многофайловом коде;
- Expert Review — вердикт, цепочка доказательств и оценка достижимости;
- CVE Lab — 10+ интерактивных кейсов со слепым анализом до раскрытия CVE;
- Hardening — короткие упражнения по безопасной конфигурации;
- Interview — симуляция технического AppSec-собеседования с таймером;
- Learning — материалы, связанные с практическими заданиями;
- Progress — аккаунты, сохранение результатов и лидерборд;
- RU / EN — полноценный двуязычный интерфейс.
Главная цель LabSite — тренировать не узнавание известных названий, а процесс triage:
- доказать, что компонент действительно затронут;
- проверить, достижим ли уязвимый путь в конкретной конфигурации;
- оценить impact без преувеличения;
- отличить временный workaround от исправления первопричины.
flowchart LR
U["Пользователь"] --> UI["Vanilla JS интерфейс"]
UI --> API["Express API"]
API --> CAT["Закрытый каталог заданий"]
API --> DB["PostgreSQL / SQLite"]
API --> REDIS["Redis: rate limits и сессии"]
CAT --> CHECK["Серверная проверка ответа"]
CHECK --> UI
Браузер получает только условие, код и разрешённые метаданные. Правильные строки, evidence, объяснения и remediation остаются на сервере и возвращаются только после проверенного решения.
Подробнее: архитектура и границы доверия.
| Область | Стек |
|---|---|
| Frontend | Vanilla JavaScript, HTML, CSS |
| Backend | Node.js, Express |
| Данные | PostgreSQL в production, SQLite локально |
| Инфраструктура | Vercel, Redis |
| Проверки | Node Test Runner, GitHub Actions |
| Безопасность | серверная валидация, CSRF-защита, rate limiting, изоляция ответов |
- спроектировал тренажёр вокруг evidence-based AppSec triage;
- подготовил 100+ практических заданий и интерактивных испытаний;
- разделил публичные данные задач и закрытые серверные ответы;
- добавил автоматическую проверку отсутствия утечек в клиентский бандл;
- реализовал аутентификацию, прогресс, лидерборд и восстановление сессий;
- разработал CVE Lab со слепым режимом анализа;
- добавил RU/EN-локализацию и адаптивный интерфейс;
- настроил CI, приватную разработку через Pull Request и staged deployment.
Этот репозиторий намеренно не содержит:
- исходный каталог заданий и правильные ответы;
- серверные секреты и переменные окружения;
- пользовательские данные и базы данных;
- конфигурацию production-инфраструктуры;
- историю приватного репозитория.
Правила ответственного сообщения о проблемах описаны в SECURITY.md.
Проект находится в активной разработке. Развиваются новые механики triage, расширяется CVE Lab и улучшается аналитика результатов по отдельным навыкам.
LabSite is an interactive secure code-review and AppSec triage trainer with 100+ hands-on tasks and interactive challenges. Instead of recognizing a famous vulnerability by name, learners must establish affectedness, prove reachability, assess realistic impact, and select a root-cause remediation.
The product includes Practice, Expert Review, Hardening drills, Interview mode, 10+ blind CVE challenges, learning materials, persistent progress, and a bilingual RU/EN interface.
The production source code and answer catalogs remain private. This repository is a deliberately sanitized product and engineering showcase.