The-Root-Access-Network/ubuntu-scam-bank
GitHub: The-Root-Access-Network/ubuntu-scam-bank
一个众包式诈骗威胁情报平台,让社区成员报告诈骗信息并获取积分,同时为安全研究人员提供结构化的开放威胁数据源。
Stars: 0 | Forks: 0
# UbuntuScamBank
**UbuntuScamBank** 是一个由 [The Root Access Network (TRAN)](https://therootaccessnetwork.com) 在 [Unbuntu Bridge Initiative (UBI)](https://ubuntubridgeinitiatives.org/) 下构建的众包威胁情报平台。任何人都可以报告他们收到的诈骗信息,通过贡献获取积分,并帮助保护社区中的其他人。安全研究人员可以访问一个干净、开放的真实世界威胁数据源。
## 🎯 核心功能
- **报告** — 提交您收到的诈骗信息(SMS、电子邮件、WhatsApp、电话、链接等)
- **获取积分** — 通过已验证的报告获取积分,帮助他人保持安全
- **保护** — 浏览和搜索社区诈骗信息源,在威胁降临之前识别它们
- **研究** — 安全研究人员可访问结构化、开放的众包威胁情报源
## 🔁提交流程
以下是用户在 60 秒内提交诈骗报告的流程:

首次报告无需账户 —— 您的账户会在提交后自动创建,以跟踪您的贡献积分。我们的 AI 会在公开存储报告之前,自动清除敏感的个人数据(姓名、电话、回复地址等)。
## 🛠️ 技术栈
| 层级 | 技术 |
| --------------- | -------------------------------------------------------------------------------------------------------- |
| Frontend | [Next.js](https://nextjs.org/) + TypeScript |
| Backend / API | Next.js API Routes |
| Database & Auth | [Supabase](https://supabase.com/) (PostgreSQL + Auth + Storage) |
| Deployment | 通过 [OpenNext](https://opennext.js.org/cloudflare) 部署到 [Cloudflare Workers](https://workers.cloudflare.com/) |
### 系统架构
我们的三层架构确保了可扩展性、安全性和可靠性:

**关键组件:**
- **表现层** — React PWA 前端,包含上传向导、排行榜和信息流
- **逻辑层** — API 网关 (Supabase/Cloudflare)、AI 分诊服务、积分计算和研究人员导出
- **数据层** — 用于报告的 PostgreSQL,用于缓存/排行榜的 Redis,用于加密文件存储的 S3/R2,以及用于搜索的 Elasticsearch
- **安全层** — 包含 AI 扫描、人工审核和敏感数据清除的审核流水线;带有 REST API 和 STIX/TAXII 导出的开放研究人员信息源
## 🚀 快速开始
### 前置条件
- [Node.js](https://nodejs.org/) v18+
- [npm](https://www.npmjs.com/) 或 [yarn](https://yarnpkg.com/)
- 一个 [Supabase](https://supabase.com/) 项目(免费版即可)
### 安装
```
# 克隆仓库
git clone https://github.com/TheRootAccessNetwork/ubuntu-scam-bank.git
cd ubuntu-scam-bank
# 安装依赖
npm install
# 设置环境变量
cp .env.example .env.local
# 在 .env.local 中填入你的 Supabase URL 和 anon key
```
### 环境变量
在根目录下创建一个 `.env.local` 文件,包含以下内容:
```
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
```
### 本地运行
```
npm run dev
```
在浏览器中打开 [http://localhost:3000](http://localhost:3000)。
### 预览(Cloudflare Workers runtime)
要在本地实际的 Cloudflare Workers runtime 中测试应用程序:
```
npm run preview
```
在浏览器中打开 [http://localhost:8787](http://localhost:8787)。
这比 `npm run dev` 更接近生产环境 —— 在提交 PR 或测试 API 路由和 middleware 行为之前,请使用此方法进行测试。
### 线上 URL
**_[https://ubuntu-scam-bank.therootaccessnetwork.workers.dev/](https://ubuntu-scam-bank.therootaccessnetwork.workers.dev/)_**
## 📁 项目结构
```
ubuntu-scam-bank/
├── src/
│ ├── app/
│ │ ├── (public)/ # Route group — public-facing pages
│ │ │ └── page.tsx # Homepage (move the default page.tsx here)
│ │ ├── api/ # API routes
│ │ │ ├── reports/
│ │ │ │ └── route.ts # GET /api/reports
│ │ │ ├── submit/
│ │ │ │ └── route.ts # POST /api/submit
│ │ │ └── triage/
│ │ │ └── route.ts # Internal: Claude triage pipeline
│ │ ├── globals.css
│ │ ├── layout.tsx # Root layout
│ │ └── not-found.tsx
│ ├── components/
│ │ ├── ui/ # Primitive components (Button, Badge, Card...)
│ │ ├── layout/ # Nav, Footer, PageWrapper
│ │ ├── forms/ # SubmissionForm, TypeSelector, SeverityPicker
│ │ └── feed/ # FeedCard, FeedList, FeedFilters
│ ├── lib/
│ │ ├── supabase/
│ │ │ ├── client.ts # Browser Supabase client
│ │ │ ├── server.ts # Server-side Supabase client
│ │ │ └── middleware.ts # Session refresh helper
│ │ ├── ai/
│ │ │ ├── triage.ts # Claude triage pipeline (from AI_TRIAGE.md)
│ │ │ └── prompts.ts # System prompt — kept separate for easy editing
│ │ ├── points/
│ │ │ └── calculate.ts # Points + bonus logic
│ │ └── utils.ts # cn() helper, formatters, etc.
│ ├── types/
│ │ ├── database.ts # Supabase table types (you'll generate these later)
│ │ └── triage.ts # TriageResult, PointsResult interfaces
│ └── hooks/ # Custom React hooks (useReports, useLeaderboard, etc.)
│ └── .gitkeep
├── public/
├── .env.local # Never committed
├── .env.example # Committed — template with no real values
├── middleware.ts # Next.js middleware (Supabase session refresh)
├── next.config.ts
├── open-next.config.ts
├── tailwind.config.ts
├── tailwind.config.ts
├── tsconfig.json
├── wrangler.jsonc
└── package.json
```
## 设计指南 - 编写组件时的参考
| 需求 | Tailwind class |
| -------------------------------- | ------------------------------ |
| 品牌绿色背景 | `bg-brand` |
| 深绿色文本(用于浅色徽章) | `text-brand-dark` |
| 浅绿色卡片背景 | `bg-brand-light` |
| 钓鱼徽章 | `bg-phishing-bg text-phishing` |
| 高危严重性圆点 | `bg-severity-high` |
| 白色卡片表面 | `bg-canvas` |
| 米白色页面背景 | `bg-canvas-subtle` |
| 主要正文文本 | `text-fg` |
| 次要/静音文本 | `text-fg-muted` |
| 细微边框(0.5px 卡片) | `border-stroke-faint` |
| 卡片阴影 | `shadow-card` |
| 卡片圆角 | `rounded-lg` |
| 输入框圆角 | `rounded-md` |
| 无衬线字体 | `font-sans` |
| 等宽字体 (IOCs, API code) | `font-mono` |
## 🗺️ 路线图
- [ ] 诈骗提交表单(SMS、电子邮件、WhatsApp、电话、链接)
- [ ] 用户身份验证(通过 Supabase Auth 注册/登录)
- [ ] 积分和贡献跟踪
- [ ] 带有搜索和过滤功能的公开诈骗信息流
- [ ] 诈骗验证工作流
- [ ] 研究人员 API 数据源(开放、结构化)
- [ ] 杰出贡献者排行榜
## 🔒 安全
如果您在本项目中发现安全漏洞,请通过发送电子邮件至 **[info@therootaccessnetwork.com](info@therootaccessnetwork.com)** 进行负责任的报告,而不是直接发布公开的 issue。
## 📄 许可证
[MIT License](LICENSE) — © 2026 [The Root Access Network](https://therootaccessnetwork.com)
## 🌍 关于 TRAN
The Root Access Network 是一家总部位于拉各斯的网络安全教育公司,致力于让每个人都能接触到数字安全知识——涵盖从中学生到非洲及其他地区的早期职业专业人士。
🌐 [therootaccessnetwork.com](https://therootaccessnetwork.com) · 📧 [info@therootaccessnetwork.com](info@therootaccessnetwork.com)
标签:Cloudflare, MITRE ATT&CK, Supabase, TypeScript, 众包平台, 反诈骗, 威胁情报, 安全插件, 开发者工具, 搜索引擎查询, 测试用例, 程序员工具, 自动化攻击