cauaalvs-dev/bastion

GitHub: cauaalvs-dev/bastion

一个故意设计漏洞再逐步修复的全栈 SaaS 安全工程样板,展示云安全全生命周期实践。

Stars: 0 | Forks: 0

# bastion [![Next.js](https://img.shields.io/badge/Next.js-14-black?style=flat-square&logo=next.js)](https://nextjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5-3178C6?style=flat-square&logo=typescript)](https://www.typescriptlang.org/) [![Tailwind CSS](https://img.shields.io/badge/Tailwind-3-38BDF8?style=flat-square&logo=tailwindcss)](https://tailwindcss.com/) [![AWS](https://img.shields.io/badge/AWS-EC2%20%7C%20S3%20%7C%20WAF-FF9900?style=flat-square&logo=amazonaws)](https://aws.amazon.com/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow?style=flat-square)](./LICENSE) [![Security: OWASP](https://img.shields.io/badge/Security-OWASP%20Top%2010-red?style=flat-square)](./SECURITY.md) 一个完整的全栈 SaaS 应用程序,故意设计存在漏洞,然后进行修复。该项目涵盖了云安全工程的全生命周期:威胁建模、漏洞研究、漏洞利用和修复。 🔗 **线上地址**: [bastion.vercel.app](https://bastion.vercel.app) · 📋 **安全报告**: [SECURITY-REPORT.md](./SECURITY-REPORT.md) ## 关于 bastion 是一个带有身份验证、基于角色的访问控制(RBAC)和用户仪表板的 SaaS 样板项目,设计时以安全工程为主要关注点,而非事后补救。 该项目在 **4 个月** 内分为 **7 个阶段** 构建,每个阶段都在功能性系统上叠加一层安全机制。每一个漏洞都曾被故意引入、记录、实际利用,然后通过详细的分析报告进行修正。 这不是一个教程项目,而是一个专业的安全作品集。 ## 技术栈 | 层级 | 技术 | |---|---| | 前端 | Next.js 14, TypeScript, Tailwind CSS | | 后端 | Next.js 路由处理器(API) | | 数据库 | Supabase(PostgreSQL + RLS) | | ORM | Prisma | | 校验 | Zod | | 认证 | JWT + 刷新令牌轮换、bcrypt、TOTP(双因素认证) | | 云服务 | AWS EC2、S3、RDS、Secrets Manager、WAF、GuardDuty、CloudTrail | | 监控 | CloudWatch Logs + 告警、SNS 通知 | | CI/CD | GitHub Actions | | 安全工具 | OWASP ZAP、Burp Suite Community、Semgrep、Snyk | ## 安全特性 - **JWT 与刷新令牌轮换** — 短期访问令牌,使用时自动轮换 - **通过 TOTP 的双因素认证** — 使用 `speakeasy` 生成基于时间的一次性密码 - **RBAC(基于角色的访问控制)** — 服务端强制实施的角色权限(`admin`、`user`、`viewer`) - **行级安全(RLS)** — Supabase RLS 策略在数据库层限制数据访问 - **AWS WAF** — 托管的 OWASP 规则组,阻止常见攻击模式 - **AWS GuardDuty** — 对云资源进行持续威胁检测 - **AWS Secrets Manager** — 敏感凭证不存储在环境变量或 CI/CD 日志中 - **SSM Session Manager** — 通过零开放 SSH 端口的方式访问 EC2 - **CSP 头部** — 通过 `next.config.js` 实施严格的内容安全策略 - **速率限制** — 对认证端点实施每路由限流 - **结构化日志** — 包含关联 ID 的 JSON 日志,便于可追溯性 - **审计表** — 记录所有登录尝试、角色变更和敏感操作 ## 威胁模型(STRIDE) | 威胁 | 资产 | 控制 | |---|---|---| | 假冒 | 用户身份 | JWT + TOTP 双因素认证 | | 篡改 | API 请求 | Zod 校验 + CSRF 令牌 | | 抵赖 | 用户行为 | 审计日志表 | | 信息泄露 | 用户数据 | RLS + 加密存储 | | 拒绝服务 | 认证端点 | 速率限制 + WAF | | 权限提升 | 管理路由 | RBAC 中间件 + 所有权检查 | ## 本地运行 ``` git clone https://github.com/cauaalvs-dev/bastion cd bastion npm install cp .env.example .env.local # 填写您的 Supabase 和 JWT 密钥 npm run dev ``` ## 部署 每次推送到 `main` 分支时通过 GitHub Actions 自动部署到 Vercel。 AWS 基础设施需单独配置。设置说明请参考 [`/infra`](./infra/README.md)。 ## 架构 请查看 [ARCHITECTURE.md](./ARCHITECTURE.md) 获取完整的 AWS 架构图。 ## 项目结构 ``` bastion/ ├── app/ │ ├── api/ # Route Handlers (REST API) │ ├── components/ │ │ ├── ui/ # Shared UI primitives │ │ └── public/ # Public-facing components │ └── lib/ │ ├── auth/ # JWT, session, RBAC logic │ ├── db/ # Prisma client + queries │ └── constants.ts # App-wide constants ├── infra/ # AWS setup documentation ├── .github/ │ └── workflows/ # CI/CD pipelines ├── SECURITY.md ├── SECURITY-REPORT.md # Vulnerability research log └── CHANGELOG.md ``` ## 安全报告 请查阅 [SECURITY-REPORT.md](./SECURITY-REPORT.md) 获取完整的漏洞研究日志。 每一项记录遵循以下格式: ``` Vulnerability → How I exploited it → Impact → Fix → Code diff ``` 已记录的漏洞包括:SQL 注入、XSS(存储型 + 反射型)、CSRF、IDOR、越权赋值、破损的访问控制、JWT none 算法、会话固定。 ## 许可证 MIT © [Cauã Alves](https://github.com/cauaalvs-dev)
标签:AWS, bcrypt, Chaos, CI/CD安全, CloudTrail, DPI, EC2, GuardDuty, IaC, JWT, Llama, PostgreSQL, Prisma, RBAC, RLS, S3, SaaS, Secrets Manager, SEO, Supabase, Tailwind CSS, TOTP, TypeScript, WAF, Zod, 云监控, 全栈, 关键词, 刷新令牌轮换, 双因素认证, 基于角色的访问控制, 威胁建模, 安全即代码, 安全培训, 安全工程, 安全开发生命周期, 安全报告, 安全插件, 安全项目, 密码哈希, 情报收集, 故意引入漏洞, 故意破坏, 测试用例, 漏洞修复, 漏洞利用检测, 漏洞研究, 监控, 端口转发, 网络安全, 网络安全培训, 自动化攻击, 行级安全, 认证, 隐私保护