AI代码安全防护服务

VSGuard是一款为AI辅助开发提供实时安全防护的MCP服务器,集成OWASP ASVS和LLM Top 10标准,能在编码过程中检测SQL注入、弱认证等50多种漏洞。

  • by harn1shmodi
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 harn1shmodi/vsguard-mcp

使用说明

VSGuard MCP-AI编码代理的安全护栏

VSGuard是第一个使人工智能辅助开发的安全自动化的MCP服务器。它将OWASP ASVS和OWASP LLM Top 10标准直接集成到您的AI编码工作流程中,在编码时捕获SQL注入、提示注入、弱身份验证和50多个其他漏洞,而不是在部署后。

概述

此MCP服务器与Claude Code、Cursor和其他MCP客户端集成,以启用 代码生成过程中的主动安全。它通过提供以下功能从一开始就帮助AI代理编写安全代码:

  • OWASP ASVS要求 -基于ASVS v5.0的实时安全指导
  • 漏洞扫描 -使用带有自定义ASVS规则的Semgrep进行静态分析
  • 安全代码修复 -通过代码示例进行可操作的补救

特性

四个核心工具

  1. list_asvs_categories -发现可用的ASVS类别和章节
    • 查看全部17章和80个类别
    • 根据您的需求找到合适的搜索词
  2. check_security_requirements -在编写代码之前获取相关的ASVS要求
    • 搜索方式 类别 (最精确)或 章 (更广泛)
    • 自由文本 怎么翻译 搜索自然语言
    • 筛选依据 水平 减少令牌使用
  3. scan_code -使用ASVS映射分析代码中的漏洞
  4. suggest_fix -生成带有解释的安全代码替代方案

安全保障

  • ✅ 身份验证(ASVS第2章)
  • ✅ 会话管理(ASVS第3章)
  • ✅ 访问控制(ASVS第4章)
  • ✅ 输入验证和注射预防(ASVS第5章)
  • ✅ 密码学(ASVS第6-9章)
  • ✅ 数据保护

支持的语言

  • Python(初级)
  • JavaScript/TypeScript
  • Java、Go、Ruby、PHP、C/C++、C#、Rust(通过Semgrep)

快速开始

使用Cursor和Claude代码!使用基于HTTP的配置格式:

{
  "mcpServers": {
    "vsguard": {
      "type": "http",
      "url": "https://vsguard.fastmcp.app/mcp"
    }
  }
}

如果你更喜欢Smithery

通过以下方式自动安装VSGuard 史密瑟里:

npx -y @smithery/cli install @harn1shmodi/vsguard

如果您更喜欢远程安装

# Clone repository
git clone https://github.com/yourname/vsguard-mcp
cd vsguard-mcp

# Install dependencies
pip install -e .

为Claude Code/Coursor配置mcp.json

{
  "mcpServers": {
    "vsguard": {
      "command": "python",
      "args": ["/absolute/path/to/vsguard-mcp/src/server.py"]
    }
  }
}

使用示例

示例1:在代码生成过程中获取安全要求

在克劳德桌面中:

Create a user login endpoint, follow asvs requirements.

克劳德将致电:

check_security_requirements(
    chapter="Authentication",  # or category="Password Security" for precision
    language="python"
)

答复:

# OWASP ASVS Security Requirements

## Level 1 Requirements (8)

### 2.1.1: Password Security
Requirement: Verify that user set passwords are at least 12 characters in length.

Implementation Guide:
- Add validation during user registration and password change
- Reject passwords shorter than 12 characters
- Consider allowing longer passwords (64+ chars)

Code Example:
```python
def validate_password_length(password: str) -> bool:
    if len(password) < 12:
        raise ValueError("Password must be at least 12 characters")
    return True

示例2:扫描现有代码以查找漏洞

在克劳德桌面中:

Can you check the login logic code for security issues?

克劳德将致电:

scan_code(
    code="""def login(username, password):
    query = f"SELECT * FROM users WHERE username = '{username}'"
    cursor.execute(query)""",
    language="python"
)

答复:

❌ SCAN FAILED

Total Findings: 1
- 🟠 HIGH: 1

ASVS Requirements Violated: 5.3.4, 5.3.5

## Detailed Findings

### 1. 🟠 SQL Injection
Severity: HIGH
ASVS Requirements: 5.3.4, 5.3.5

Issue:
SQL injection vulnerability detected. User input is concatenated directly into SQL query.

Location: input.py:line 2

Vulnerable Code:
query = f"SELECT * FROM users WHERE username = '{username}'"

Remediation:
Use parameterized queries with placeholders instead of string concatenation.

Example:
cursor.execute("SELECT * FROM users WHERE username = ?", (username,))

示例3:获取安全代码修复

在克劳德桌面中:

How do I fix this SQL injection vulnerability?

克劳德将致电:

suggest_fix(
    vulnerable_code="cursor.execute(f'SELECT * FROM users WHERE id = {user_id}')",
    vulnerability_type="sql_injection",
    language="python"
)

答复:

# Security Fix Suggestion

ASVS Requirements Addressed 5.3.4, 5.3.5

## ❌ Vulnerable Code
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")

## ✅ Secure Code
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))

# Or with SQLAlchemy ORM:
from sqlalchemy import select
stmt = select(User).where(User.username == username)
user = session.execute(stmt).scalar_one_or_none()

测试

# Run tests
pytest tests/

# Run specific test
pytest tests/test_asvs_loader.py

# With coverage
pytest --cov=src tests/

覆盖

目前的实施包括:

  • 40+ASVS要求 跨身份验证、会话管理、输入验证和密码学
  • 25+自定义Semgrep规则 检测常见漏洞
  • 10+修复模板 带有安全代码示例
  • 多种语言 支持(Python、JavaScript、TypeScript等)

漏洞检测

  • SQL注入(ASVS 5.3.4、5.3.5)
  • 跨站点脚本(ASVS 5.3.3、5.3.10)
  • 弱密码验证(ASVS 2.1.1、2.1.7)
  • 弱密码学(ASVS 6.2.2、6.2.5)
  • 硬编码秘密(ASVS 2.3.1、14.3.3)
  • 会话管理问题(ASVS 3.x)
  • XML外部实体(XXE)(ASVS 5.5.2)
  • 命令注入(ASVS 5.3.4)
  • 还有更多。..

运作原理

ASVS需求数据库

服务器从结构化的YAML文件加载OWASP ASVS v4.0要求:

requirements:
  - id: "2.1.1"
    level: 1
    category: "Password Security"
    requirement: "Verify that user set passwords are at least 12 characters in length."
    cwe: "CWE-521"
    description: "Passwords should be sufficiently long..."
    implementation_guide: "Add validation during registration..."
    code_examples:
      - |
        if len(password) < 12:
            raise ValueError("Too short")

2.使用Semgrep进行静态分析

自定义Semgrep规则检测ASVS违规:

rules:
  - id: asvs-5-3-4-sql-injection
    pattern: cursor.execute(f"... {$VAR} ...")
    message: "ASVS 5.3.4: SQL injection vulnerability"
    severity: ERROR
    metadata:
      asvs_id: "5.3.4"
      cwe: "CWE-89"

3.智能测图

调查结果通过以下方式自动映射到ASVS要求:

  • 漏洞类型(sql_injection→ 与5.3.4相比)
  • CWE-89→ 与5.3.4、5.3.5相比)
  • 代码模式(登录端点→ 身份验证要求)

4.LLM优化输出

所有回复的格式都是为了最大限度地理解LLM:

  • 结构清晰,有标题和部分
  • 带有语法高亮显示的代码示例
  • 严重性指标(🔴 🟠 🟡)
  • 可采取的补救措施
  • ASVS需求参考

🔧 扩展服务器

添加新的ASVS要求

在中创建/编辑YAML文件 data/asvs/:

requirements:
  - id: "X.Y.Z"
    level: 1
    category: "Your Category"
    requirement: "Requirement text"
    cwe: "CWE-XXX"
    description: "Detailed explanation"
    implementation_guide: "How to implement"
    code_examples:
      - "Example code"

添加自定义Semgrep规则

在中创建YAML文件 data/rules/:

rules:
  - id: custom-rule-id
    patterns:
      - pattern: vulnerable_pattern()
    message: "Vulnerability description"
    severity: ERROR
    metadata:
      asvs_id: "X.Y.Z"
      cwe: "CWE-XXX"
      remediation: "How to fix"

添加修复模板

编辑 src/fixes/templates.py:

FIX_TEMPLATES = {
    "vulnerability_type": {
        "python": {
            "vulnerable": "# Bad code",
            "secure": "# Good code",
            "explanation": "Why it's better",
            "asvs_requirements": ["X.Y.Z"],
        }
    }
}

🤝 贡献

欢迎投稿!需要改进的地方:

  1. 更多ASVS要求 -涵盖其他章节
  2. 更多语言 -扩展语言支持
  3. 更多扫描仪 -集成Bandit,检测秘密
  4. 更好的AI集成 -改进LLM输出格式
  5. 演出 -优化扫描速度

⚡ 技术支持

  • FastMCP 2.0 -MCP服务器的现代Python框架
  • Semgrep -静态分析引擎
  • OWASP ASVS -安全验证标准

📝 许可证

MIT许可证-有关详细信息,请参阅许可证文件。

🔗 资源

🙏 致谢

  • ASVS标准的OWASP
  • MCP协议的拟人化
  • 扫描引擎的Semgrep

📧 支持

对于问题、疑问或贡献,请在GitHub上打开问题。


内置于❤️ 用于安全的人工智能辅助开发