AMRIZH/skripsi
GitHub: AMRIZH/skripsi
一项针对六个主流 Vibe Coding 平台生成的 Web 应用进行系统性安全审计与漏洞分析的学术研究项目。
Stars: 1 | Forks: 0
# Vibe Coding 平台生成的 AI Web 应用程序漏洞分析
**科学出版物 — 本科毕业论文**
本论文作为完成 Universitas Muhammadiyah Surakarta 通信与信息学院信息工程本科专业学习计划的毕业要求之一撰写。
| | |
|---|---|
| **作者** | Amri Zadi Hudaya (L200224288) |
| **专业** | 信息工程 |
| **学院** | 通信与信息 |
| **大学** | Universitas Muhammadiyah Surakarta |
| **日期** | 2026 年 7 月 |
## 摘要
Vibe coding 平台通过大型语言模型将自然语言提示词转化为完整的全栈 Web 应用程序,极大地降低了软件开发的门槛,但从安全角度来看,这些平台在很大程度上仍未得到充分检验。本研究对六个著名的 vibe coding 平台——**Bolt**、**Replit**、**Lovable**、**v0**、**Kimi** 和 **AntiGravity**——进行了系统的对比安全审计,方法是向每个平台提交相同的食谱分享应用程序规范,并按原样收集生成的源代码。每个应用程序都通过 Docker 进行容器化,并通过结合静态应用程序安全测试、软件组成分析 (SCA) 和动态应用程序安全测试的三层流水线进行评估。所有五个工具的评估结果被统一标准化为单一的五个级别严重性量表,并根据 CWE 标识符和 OWASP Top 10 (2021) 类别进行分类,将应用程序代码缺陷与第三方依赖项漏洞区分开来。
**关键词:** DAST、LLM、SAST、vibe coding、Web 漏洞
## 研究方法
本研究采用实证、定量和对比的研究设计。六个 vibe coding 平台分别接收到一个指定了食谱分享应用程序的相同标准化提示词。收集生成的源代码时保持原样不作任何修改,通过 Docker 进行容器化,并部署在单个 VPS 上,使用不同的暴露端口进行扫描。
安全测试遵循三层流水线:

*图:跨越三个阶段的研究工作流 — 准备、安全测试和报告与分析。*
### 第 1 层 — 静态应用程序安全测试 (SAST)
三个工具在不执行的情况下分析第一方源代码:
| 工具 | 作用 |
|---|---|
| **Semgrep** | 基于模式的静态分析,带有自动配置的规则集 |
| **Horusec** | 检查硬编码的机密信息、配置错误和不安全的模式 |
| **Snyk Code** | 跨过程数据流分析,涵盖注入、路径遍历和不安全的 API 使用 |
### 第 2 层 — 软件组成分析 (SCA)
两个工具扫描依赖清单和 `node_modules` 树以查找已知的 CVE:
| 工具 | 作用 |
|---|---|
| **Snyk (Open Source)** | 将项目依赖项映射到国家漏洞数据库 (NVD) |
| **npm audit** | 内置的 Node.js 生态系统依赖项审计工具 |
### 第 3 层 — 动态应用程序安全测试 (DAST)
| 工具 | 作用 |
|---|---|
| **OWASP ZAP** | 对部署的容器进行自动化主动扫描,探测表单、API、headers 和 cookies 以发现运行时漏洞 |
### 标准化与分类
所有评估结果都被统一标准化为一个共享的五个级别严重性量表(严重、高、中、低、信息),根据 CWE 标识符和 OWASP Top 10 (2021) 类别进行分类,并按来源(应用程序代码 vs 第三方依赖项)进行标记。
## 受测平台
| # | 平台 | URL | 生成的应用程序文件夹 | 端口 | 数据库 |
|---|---|---|---|---|---|
| 1 | Bolt | https://bolt.new/ | `BOLT/recite-recipe-bolt` | 3002 | Supabase (PostgreSQL) |
| 2 | Replit | https://replit.com/ | `REPLIT/Recipe-Share-Hub` | 5006 | Drizzle + PostgreSQL |
| 3 | Lovable | https://lovable.dev/ | `LOVABLE/recipe-share-hub` | 5173 | Supabase (PostgreSQL) |
| 4 | v0 (Vercel) | https://v0.dev/ | `V0/recite_recipe` | 3005 | Supabase (PostgreSQL) |
| 5 | Kimi | https://kimi.ai/ | `KIMI/reciterecipe` | 3003 | SQLite (better-sqlite3) |
| 6 | AntiGravity | https://antigravity.so/ | `ANTIGRAVITY/ReciteRecipe` | 3001 | Prisma + PostgreSQL |
## 主要发现
### 各平台漏洞数量
| 平台 | 应用程序代码 | 依赖项 | 总计 | 依赖项占比 |
|---|---|---|---|---|
| Bolt | 21 | 3 | 24 | 12.5% |
| Replit | 35 | 3 | 38 | 7.9% |
| Lovable | 19 | 3 | 22 | 13.6% |
| v0 | 20 | 0 | 20 | 0.0% |
| Kimi | 76 | 0 | 76 | 0.0% |
| AntiGravity | 102 | 17 | 119 | 14.3% |
| **总计** | **273** | **26** | **299** | **8.7%** |
所有六个平台生成的应用程序都包含可检测到的漏洞。发现的漏洞总数从 20 个 (v0) 到 119 个 不等。**所有漏洞中有 91.3% 源自 AI 生成的源代码**,而不是第三方依赖项。
### 严重性分布(应用程序代码)
| 严重性 | 数量 | 百分比 |
|---|---|---|
| 严重 | 7 | 2.6% |
| 高 | 97 | 35.5% |
| 中 | 87 | 31.9% |
| 低 | 35 | 12.8% |
| 信息 | 47 | 17.2% |
### OWASP Top 10 (2021) 类别覆盖范围
| OWASP 类别 | Bolt | Replit | Lovable | v0 | Kimi | AntiGravity | 总计 |
|---|---|---|---|---|---|---|---|
| A01 失效的访问控制 | 1 | 2 | 0 | 2 | 15 | 6 | 26 |
| A02 加密机制失效 | 2 | 4 | 5 | 2 | 4 | 2 | 19 |
| A03 注入 | 3 | 3 | 4 | 2 | 17 | 2 | 31 |
| A04 不安全的设计 | 3 | 5 | 2 | 2 | 8 | 17 | 37 |
| A05 安全配置错误 | 9 | 8 | 6 | 7 | 14 | 9 | 53 |
| A07 身份识别和认证失败 | 0 | 4 | 0 | 0 | 0 | 59 | 63 |
| A08 软件与数据完整性失败 | 0 | 1 | 0 | 1 | 5 | 2 | 9 |
| A09 安全日志记录失败 | 1 | 6 | 1 | 2 | 5 | 2 | 17 |
| A10 SSRF | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
### 通用 CWE(存在于所有 6 个平台中)
| CWE | 描述 | 发现总数 |
|---|---|---|
| CWE-79 | 跨站脚本攻击 (XSS) | 27 |
| CWE-693 | 缺少内容安全策略 (CSP) | 14 |
| CWE-1021 | 点击劫持(缺少 X-Frame-Options) | 6 |
| CWE-532 | 日志文件中的敏感信息 | 17 |
| CWE-497 | 暴露的服务器/版本信息 | 10 |
无论使用何种 LLM 后端、技术栈或数据库层,都会出现这五个 CWE,这表明这是 LLM 默认的生成行为,而不是任何特定框架的缺陷。
## 仓库结构
```
skripsi/
├── SKRIPSI_Draft.md # Thesis manuscript (English)
├── SKRIPSI_Draft_id.md # Thesis manuscript (Bahasa Indonesia)
├── PROGRESS_SEMINAR.MD # Progress seminar document
├── .gitignore
├── figures/
│ ├── vibe-code-paradigm.png # Vibe coding paradigm diagram
│ ├── research-gap.png # Research gap positioning figure
│ ├── workflow.png # Research workflow diagram
│ ├── findings_by_tool.png # App-code findings by tool chart
│ ├── severity_distribution.png # Severity distribution chart
│ └── severity_pie.png # Severity pie chart
├── test_results/
│ ├── ANTIGRAVITY/ # AntiGravity raw scan outputs
│ │ ├── semgrep_report.json
│ │ ├── horusec_report.json
│ │ ├── snyk_report.json
│ │ ├── cli_history.txt
│ │ └── *-ZAP-Report-.html
│ ├── BOLT/ # Bolt raw scan outputs
│ ├── KIMI/ # Kimi raw scan outputs
│ ├── LOVABLE/ # Lovable raw scan outputs
│ ├── REPLIT/ # Replit raw scan outputs
│ ├── V0/ # v0 raw scan outputs
│ └── reports/
│ ├── compile_reports.py # Script to aggregate all findings
│ ├── all_findings.json # Aggregated findings dataset
│ ├── COMPARISON_REPORT.md # Cross-platform comparison report
│ ├── ANTIGRAVITY_report.md # Per-platform detailed report
│ ├── BOLT_report.md
│ ├── KIMI_report.md
│ ├── LOVABLE_report.md
│ ├── REPLIT_report.md
│ └── V0_report.md
└── scripts/
└── generate_figures.py # Script to generate result figures
```
`test_results/` 下的每个平台子目录都包含来自 Semgrep、Horusec、Snyk 和 OWASP ZAP 扫描的原始 JSON/HTML 输出,以及记录了所执行确切命令的 `cli_history.txt`。
## 配套仓库
为了实现研究的可重复性,每个平台的 AI 生成的 Web 应用程序源代码都维护在独立的公开仓库中:
| 平台 | 仓库 |
|---|---|
| v0 (Vercel) | [AMRIZH/v0-website](https://github.com/AMRIZH/v0-website) |
| Replit | [AMRIZH/replit-website](https://github.com/AMRIZH/replit-website) |
| Lovable | [AMRIZH/lovable-website](https://github.com/AMRIZH/lovable-website) |
| Kimi | [AMRIZH/kimi-website](https://github.com/AMRIZH/kimi-website) |
| Bolt | [AMRIZH/bolt-website](https://github.com/AMRIZH/bolt-website) |
| AntiGravity | [AMRIZH/antigravity-website](https://github.com/AMRIZH/antigravity-website) |
所有配套仓库均公开可用,以便于进行研究复现和进一步研究。
## 免责声明
## 许可证
本仓库及其内容的许可目前有待确定。如需获取有关使用、复制或分发本仓库中材料的权限,请联系作者:
**Amri Zadi Hudaya**
GitHub: [@AMRIZH](https://github.com/AMRIZH)
标签:DAST, DLL 劫持, SAST, TruffleHog, 后端开发, 大语言模型, 学术论文, 恶意软件分析, 漏洞分析, 盲注攻击, 请求拦截, 路径探测