TL;DR
Vercel запустил публичную программу bug bounty для своих OSS-проектов (Next.js, Nuxt, Svelte и др.) через HackerOne. Программа уже показала эффективность в закрытом режиме, выплатив $1M+ за найденные уязвимости. Теперь любой security researcher может участвовать.
Введение: Почему это важно для Senior FE
Как senior-разработчики, мы часто работаем с Next.js, SWR и другими инструментами из стека Vercel в production. Уязвимости в этих инструментах напрямую влияют на безопасность наших приложений. Баг-баунти программы — это proactive approach к security, где сообщество помогает находить и фиксить уязвимости до их эксплуатации в wild.
Основная часть: Детали программы
In Scope проекты
Vercel четко определяет Tier 1 проекты с highest impact:
// Пример уязвимости в Next.js API Route
export default function handler(req, res) {
// Уязвимость: Missing input sanitization
const userInput = req.query.unsafeParam;
// Уязвимый вызов shell command
execSync(`echo ${userInput}`); // React2Shell vector
res.status(200).json({ data: userInput });
}
Такие кейсы теперь будут целенаправленно искать через bug bounty.
Reward Model
Программа использует sliding scale выплат в зависимости от severity:
| CVSS Score | Bounty Range |
|---|---|
| Critical (9.0+) | $5,000 - $20,000 |
| High (7.0-8.9) | $2,000 - $5,000 |
| Medium (4.0-6.9) | $500 - $2,000 |
Workflow обработки репортов
- Researcher submits через HackerOne
- Triage team валидирует reproducibility
- Engineering team выпускает patch
- Coordinated disclosure с CVE publication
- Payout после фикса
Практическое применение: Как участвовать
Для security researchers
- Клонируем target repo:
git clone https://github.com/vercel/next.js --depth=1
- Ищем classic vectors:
- SSRF в fetch calls
- Prototype pollution в JSON parsers
- RCE через deserialization
Для FE-разработчиков
Даже если вы не планируете участвовать в bounty, стоит мониторить отчеты программы — они становятся source of truth для security best practices.
Пример hardening для Next.js API:
import { NextApiRequest, NextApiResponse } from 'next';
export default async function safeHandler(
req: NextApiRequest,
res: NextApiResponse
) {
// Defense in depth:
// 1. Input validation
const userInput = String(req.query.param).replace(/[^a-z0-9]/gi, '');
// 2. Sandboxed execution
const { exec } = await import('child_process');
const { promisify } = await import('util');
const execAsync = promisify(exec);
// 3. Timeboxed execution with sanitized env
const { stdout } = await execAsync(`safe-command ${userInput}`, {
timeout: 1000,
env: { PATH: '/safe/bin' }
});
res.json({ data: stdout });
}
Заключение
Vercel OSS Bug Bounty — это game changer для security в frontend ecosystem. Вместо reactive patch management мы получаем proactive vulnerability discovery. Как senior разработчики, мы должны:
- Мониторить фиксы из программы
- Интегрировать security patches ASAP
- Участвовать в программе при наличии expertise
Этот подход снижает risk surface для миллионов приложений, построенных на Next.js и связанных технологиях. Security — это shared responsibility, и такие инициативы делают экосистему сильнее.
Источник: https://vercel.com/blog/the-vercel-oss-bug-bounty-program-is-now-available