Muhammadabrarrayhan2/veridra-cyber-safety
GitHub: Muhammadabrarrayhan2/veridra-cyber-safety
一个面向公众的 AI 驱动网络安全平台,通过可解释的风险洞察帮助普通用户识别并应对社交工程威胁。
Stars: 0 | Forks: 0
# Veridra
Veridra 接收普通人日常感到怀疑的数字内容——一条奇怪的短信、一个可疑的 URL、一条带有侵略性的招聘人员私信——并返回清晰的风险判定、触发该判定的具体危险信号,以及他们接下来应采取的确切步骤。它在设计上是可解释的,在推理上基于证据,并且非常谨慎,绝不夸大确定性或代替任何人采取行动。
## 在线演示
## https://veridra-cyber-safety.vercel.app/
## 目录
1. [概述](#overview)
2. [问题陈述](#problem-statement)
3. [公众价值](#public-value)
4. [主要功能](#main-features)
5. [三种分析模式](#the-three-analysis-modes)
6. [六个输出层](#the-six-output-layers)
7. [技术栈](#tech-stack)
8. [项目结构](#project-structure)
9. [设置](#setup)
10. [本地运行](#running-locally)
11. [风险评分逻辑](#risk-scoring-logic)
12. [为什么解释层很重要](#why-explanation-layers-matter)
13. [拦截与举报指南](#block--report-guidance)
14. [局限性](#limitations)
15. [免责声明](#disclaimer)
16. [未来改进](#future-improvements)
17. [截图](#screenshots)
18. [作者](#author)
19. [许可证](#license)
## 概述
Veridra 是一个模块化的全栈 Web 平台,其核心理念是:只有当接收安全判定的人理解*为什么*时,这个判定才是有用的。粘贴一条可疑的消息、URL 或工作录用通知,系统将返回:
- 清晰的**风险等级**和带有置信区间的 0–100 分数
- 具体的**威胁类别**(钓鱼、OTP 诈骗、虚假工作录用等)
- **为什么被标记** —— 关联到确切的短语、域名或观察到的模式
- **为什么不应继续** —— 用通俗的语言说明现实后果
- **推荐的安全操作** —— 针对该威胁量身定制的具体下一步行动
- **拦截与举报指南** —— 用户可以采取的、不依赖特定平台的步骤
最终的用户体验是核心:干净、严肃,旨在让人在一分钟内阅读完毕并采取行动。
## 问题陈述
大多数因数字欺诈造成的经济损失并非源于高级漏洞利用。它们源于日常消息、私信和电子邮件,这些内容说服人们分享 OTP、点击看起来很真实的链接,或者为一份根本不存在的工作支付“注册费”。专业的安全工具确实存在,但它们是为企业防御者构建的——而不是为在公交车站查看可疑短信的人构建的。
Veridra 为普通用户弥补了这一差距。
## 公众价值
- **无障碍访问。** 无需登录,无需账号,可在任何设备上使用。
- **可解释性。** 每个判定都展示了其推理过程,以便用户随着时间的推移了解这些危险信号。
- **责任感。** Veridra 绝不会自动拦截、举报或回复任何内容。它提供指导——用户始终掌握控制权。
- **覆盖范围。** 消息、链接和工作录用分析涵盖了日常社会工程学攻击最常发生的三种内容类型。
## 主要功能
- 三种分析模式:**消息检查**、**链接检查**、**工作录用检查**
- 每次分析的 6 层结构化输出
- 带有置信区间的风险评分
- 关联证据的解释引擎——输入中的可疑短语会被高亮显示
- 安全洞察仪表板:类别分布、风险等级分布、热门危险信号、近期分析
- 干净、高端、信任优先的 UI
- 最小化隐私持久化:仅存储模式、类别、分数、等级、信号 ID 和截断的预览
## 三种分析模式
| 模式 | 检查内容 |
|---|---|
| **消息检查** | 紧迫感施压、OTP/凭据请求、品牌冒充、奖励诱饵、金融诈骗话术、胁迫性威胁、链接 + 施压组合 |
| **链接检查** | 易被滥用的 TLD、URL 缩短服务、原始 IP 主机、域名仿冒(与已知品牌的 Levenshtein 距离 ≤ 2)、子域名中包含品牌的伪装伎俩、过多的子域名、Punycode、一次性主机上的登录式路径、HTTP 而非 HTTPS |
| **工作录用检查** | 不切实际的薪酬、预付费用或押金、无需面试的仓促招聘、过早索要身份证或银行账户信息、钱骡式角色、引导至非官方渠道联系(WhatsApp / Telegram)、使用免费邮箱的招聘人员、无可查验的公司信息 |
## 六个输出层
| # | 层级 | 目的 |
|---|---|---|
| 1 | **风险等级** | 安全 / 低风险 / 可疑 / 疑似诈骗 / 高风险 —— 外加 0–100 分和置信区间 |
| 2 | **威胁类别** | 钓鱼、虚假工作录用、可疑链接、OTP 诈骗、冒充、金融诈骗或未知可疑模式 |
| 3 | **为什么被标记** | 触发的具体模式,以及匹配的确切证据 |
| 4 | **为什么不应继续** | 用通俗的语言说明参与其中的现实后果 |
| 5 | **推荐的安全操作** | 针对威胁类别和信号量身定制的具体下一步行动 |
| 6 | **拦截与举报指南** | 用于拦截发送者和举报内容的、不依赖特定平台的步骤 |
## 技术栈
**前端**
- Next.js 14 (App Router), TypeScript
- Tailwind CSS 用于样式设计
- Recharts 用于安全洞察仪表板
- Lucide 图标
- 采用 shadcn/ui 视觉风格的手写 UI 原语(无需生成器步骤)
**后端**
- Python 3.11+ 上的 FastAPI
- Pydantic v2 用于请求/响应 schema
- `tldextract` 用于 URL 结构分析
- SQLite 用于最小化隐私的持久化存储(分析历史 + 洞察聚合数据)
- 模块化单体架构 —— 单个进程,清晰分离的模块
## 项目结构
```
veridra/
├── backend/
│ ├── requirements.txt
│ └── app/
│ ├── main.py # FastAPI app, routes, CORS, DB init
│ └── modules/
│ ├── schemas.py # Shared Pydantic models & enums
│ ├── message_analysis.py # Message red-flag detectors
│ ├── link_analysis.py # URL heuristic analysis
│ ├── job_offer_analysis.py # Recruiter-scam detectors
│ ├── risk_scoring.py # Signal → 0–100 score + band
│ ├── explanation_engine.py # Signal → human-readable reasoning
│ ├── safe_action_guidance.py # Layer 5 generation
│ ├── block_report_guidance.py # Layer 6 generation
│ ├── data_access.py # SQLite history & aggregates
│ └── pipeline.py # Orchestrator called by the API
└── frontend/
├── package.json
├── next.config.js
├── tailwind.config.js
└── src/
├── app/
│ ├── layout.tsx # Shared header/footer shell
│ ├── page.tsx # Landing
│ ├── analyze/page.tsx # Core interaction page
│ ├── insights/page.tsx # Safety Insights dashboard
│ └── about/page.tsx # Platform motivation & methodology
├── components/
│ ├── SiteHeader.tsx
│ ├── SiteFooter.tsx
│ ├── Logo.tsx
│ ├── ModeTabs.tsx
│ ├── ContentInput.tsx
│ ├── HighlightedContent.tsx
│ └── RiskVerdictPanel.tsx # The 6-layer result experience
└── lib/
├── api.ts
├── types.ts
├── risk.ts # Severity theming
├── signalLabels.ts
└── cn.ts
```
## 设置
**要求。** Python 3.11+, Node.js 18.17+ (或 20+), npm。
### 后端
```
cd backend
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
```
### 前端
```
cd frontend
npm install
cp .env.example .env.local # Adjust NEXT_PUBLIC_API_URL if needed
```
## 本地运行
在两个终端中分别运行后端和前端。
**终端 1 — API**
```
cd backend
source .venv/bin/activate
uvicorn app.main:app --reload --port 8000
```
**终端 2 — Web**
```
cd frontend
npm run dev
```
然后打开 **http://localhost:3000**。
`next.config.js` 中的 Next.js rewrite 配置会将 `/api/*` 代理到 FastAPI 后端,因此本地开发无需配置 CORS。
**API endpoint**
| 方法 | 路径 | 用途 |
|---|---|---|
| `POST` | `/api/analyze` | 运行分析。Body: `{ "mode": "message" | "link" | "job_offer", "content": "..." }` |
| `GET` | `/api/insights` | 用于仪表板的聚合洞察数据 |
| `GET` | `/api/history?limit=N` | 近期分析(仅限匿名预览) |
| `GET` | `/api/health` | 存活检测 |
## 风险评分逻辑
Veridra 的评分器特意设计为透明的,而不是黑盒。
1. **信号。** 每个分析器返回一个 `Signal` 对象列表,每个对象都带有一个严重程度(`low` / `medium` / `high` / `critical`)以及匹配到的确切证据。
2. **加权聚合。** 严重程度映射到基础权重:low 8,medium 18,high 30,critical 45。
3. **收益递减。** 信号按严重程度降序排列,随后的每个信号贡献其权重的一小部分(1.0, 0.7, 0.5, 0.35, 0.25…)。这可以防止冗长的消息由于多个低严重程度的标记而出现分数失控的情况。
4. **关键底线。** 任何严重(critical)级别的信号都能保证最低得分为 75 分——评分器绝不会仅仅因为没有触发其他规则,就低估凭据请求或预付费用的工作录用。
5. **分级。** 最终的 0–100 分映射为 `Safe` (<15)、`Low Risk` (<35)、`Suspicious` (<60)、`Likely Scam` (<80) 或 `High Risk`。
6. **置信区间。** 作为 `[score − spread, score + spread]` 返回,当多个高严重程度的信号达成一致时,spread(跨度)会变窄。
## 为什么解释层很重要
一个单独的“这看起来很可疑”的判定是安全表演:它要求用户相信一个黑盒。Veridra 的输出结构是为了教育,而不仅仅是为了贴标签:
- **第 3 层(为什么被标记)** 将判定与用户自己内容中可观察到的证据联系起来。他们可以明白系统*为什么*会这样认为。
- **第 4 层(为什么不应继续)** 将信号转化为现实世界的后果,而不是抽象的风险语言。
- **第 5 层(推荐的安全操作)** 给用户提供可以做的事情——如果他们已经采取了行动,还包括恢复步骤。
随着时间的推移,推理过程本身就成了一堂课:用户开始自行识别紧迫感施压、子域名中包含品牌的伪装伎俩,以及预付费用的工作录用。
## 拦截与举报指南
第 6 层是刻意的建议,而非自动化操作。Veridra 不会:
- 代表用户拦截发送者
- 向任何平台或机构提交举报
- 回复、转发或删除内容
相反,对于每次分析,它都会返回具体的、不依赖特定平台的步骤——通过应用内置功能进行拦截、作为垃圾信息或钓鱼进行举报、转发给被冒充品牌的滥用投诉邮箱、在删除前保留证据等等。这让控制权始终掌握在用户手中,并避免了制造 Veridra 是执法或下架系统的错觉。
## 局限性
- **启发式,而非神谕。** Veridra 的分析基于规则和模式。新颖或精心制作的攻击可能会逃避检测,合法内容偶尔也可能匹配到某种模式。
- **语言覆盖范围。** 目前包含英语和印尼语的危险信号模式。在添加其他语言的模式之前,这些语言可能会出现触发不足的情况。
- **无浏览器层面的执行。** 链接分析是结构性的。Veridra 不会跟随重定向、渲染页面或查询威胁情报源。
- **本地持久化。** 默认的 SQLite 存储是按部署划分的;对于生产环境,请将 `data_access.py` 的后端替换为 Postgres。
## 免责声明
Veridra 是一款**决策支持和教育工具**。它不是官方的网络安全权威机构,不能代替执法部门、您的银行反欺诈部门或正式的事件响应团队。结果应被视为指导,而不是保证。当涉及重要事项——金钱、身份证件或账户访问权限时——在采取行动之前,请通过发送者的官方渠道进行核实。
## 未来改进
- 额外的语言包(马来语、他加禄语、泰语、越南语、西班牙语、葡萄牙语)
- 可选的 ML 分类器层,基于精选的钓鱼/虚假招聘语料库进行训练
- 在 feature flag 的控制下实现可插拔的威胁情报检查(Google Safe Browsing, PhishTank, URLHaus)
- 无需账号即可分享的结果链接,用于社区教育
- 用于管理和版本化危险信号模式库的管理面板
## 截图
主页
- 
分析结果
- 
洞察
- 
## 作者
*Muhammad Abrar Rayhan*
Telkom University Jakarta
机器学习与人工智能爱好者
## 许可证
*MIT License*
标签:Web安全, 人工智能, 威胁分析, 用户模式Hook绕过, 网络安全, 自动化侦查工具, 自动化攻击, 蓝队分析, 钓鱼检测, 隐私保护, 风险评分