📌 基本信息
| 项目 | 内容 |
|---|---|
| 全称 | Cybersecurity Domain Specific Language |
| 语言名 | Yak / Yaklang |
| 定位 | 中国首款开源网络安全领域专用编程语言 |
| 诞生时间 | 2023年正式开源 |
| 学术指导 | 电子科技大学网络空间安全学院(张小松教授团队) |
| 研发团队 | Yaklang.io("凝聚工作室"核心成员) |
| 开源协议 | AGPL(具有传染性) |
| 语言类型 | 强类型 + 动态类型,高级计算机编程语言 |
| 运行要求 | 仅依赖 YakVM,实现"一次编写,处处运行" |
| 支持系统 | macOS、Linux、Windows |
🏗️ 核心架构
CDSL-YAK 技术栈
│
├── CDSL Yaklang(网络安全领域限定语言)
│ └── 编译器核心
├── YakVM(网络安全领域限定语言虚拟机)
├── YAK SSA(静态分析友好的静态单赋值形式)
├── SyntaxFlow(语法模式匹配DSL & 漏洞特征代码描述语言)
└── LSP/DSP Server(语言服务器协议 & 调试协议服务器)
🎯 设计目标与核心理念
解决行业三大痛点:
| 痛点 | 描述 |
|---|---|
| 低位安全能力分散 | 各安全从业者用不同语言开发大量相似功能,造成人力浪费与能力割裂 |
| 安全产品互不兼容 | 各厂商产品间无法协同,数据分散,安全能力冗余 |
| 安全人才短缺 | 传统安全从业者需掌握多种异构工具,学习成本极高 |
CDSL 三大特性:
| 特性 | 说明 |
|---|---|
| 简洁性 | 业务与能力分离,解决方案更直观 |
| 易用性 | 非专业人员也可使用,消除安全产品工程化中的信息差 |
| 灵活性 | 可单独使用或嵌入式使用,用户可编写DSL脚本实现特定策略/检测规则 |
📦 能力体系
底层通用能力(与 Go/Python 相当)
- 操作系统与存储支持
- 网络 IO、数据与编码处理
- AI 与自动化
- 完善的开发框架
上层安全能力(覆盖网络安全全流程)
- Web 安全 --- 爬虫、Fuzz、指纹识别、漏洞检测
- 网络测绘与扫描 --- 端口探测、协议识别
- 漏洞利用与载荷 --- PoC/Exp 编写与执行
- 流量分析与监测 --- MITM、流量拦截与分析
- 漏洞数据与分析 --- 漏洞库整合与利用
- 基础设施与仿真 --- 蜜罐、靶场等
内置丰富库
io / tls / zip / jwt / x / codec / context
dns / sync / httpserver / cli / mmdb / xhtml
MITM / Web Fuzzer / TCP / UDP / SSH
🛠️ 生态与工具链
| 组件 | 类型 | 说明 |
|---|---|---|
| Yakit | GUI / 原生 IDE | 旗舰入口,集代码编辑、调试、任务编排、插件市场、PoC管理、报表导出于一体 |
| Yak CLI | 命令行工具 | 面向自动化、CI/CD 与流水线集成 |
| VSCode 插件 | 编辑器扩展 | 语法高亮、LSP/DSP 能力、静态审计辅助 |
| IRify | 代码审计平台 | 基于 Yak 技术栈,支持多语言审计与报告生成 |
| YAKVM | 运行时引擎 | 跨平台字节码执行环境 |
| 靶场 | 学习平台 | 从基础到进阶的完整学习路线 |
🔧 使用场景
- 企业安全建设
- 构建统一的安全能力底座,整合低位安全产品
- 实现安全产品间的高效集成与协同
- 分布式架构(总部+分部)的远程安全能力支持
- 渗透测试
- 统一测试工具集,实现"多人/多团队协同作战"
- 测试流程集中管理(人员认证、工具授权、范围/时间控制)
- 全流程操作日志记录与审计
- 安全能力左移(DevSecOps)
- 将安全能力主动赋予开发和测试人员
- 在业务研发测试阶段快速编写漏洞检测脚本
- 安全测试"左移"至 CI/CD 流水线
- 安全人才培养
- 提供从基础到进阶的完整靶场学习路线
- 覆盖业务逻辑漏洞、各类靶场及漏洞组合
- 培养全面型网络安全专家
- 代码安全审计
- SyntaxFlow 语法模式匹配
- YAK SSA 静态单赋值形式分析
- 多语言代码审计与漏洞特征描述
- 漏洞研究
- PoC/Exp 自动化编写
- Fuzzing 模糊测试
- 漏洞数据整合与分析
🔄 与通用编程语言(GPL)的对比
| 维度 | GPL(Python/Go/C) | CDSL-YAK |
|---|---|---|
| 专注领域 | 通用 | 网络安全垂直领域 |
| 学习门槛 | 高(需掌握多种异构工具) | 低(领域专家可直接使用) |
| 安全能力整合 | 需大量胶水代码 | 原生内置安全能力 |
| 跨平台执行 | 依赖各语言运行时 | 仅需 YakVM |
| 场景表达力 | 需转换为安全概念 | 直接用安全术语表达 |
📥 安装与使用
Linux/macOS:
curl -sS -L http://oss.yaklang.io/install-latest-yak.sh | bash
Windows:
# 下载并运行安装程序
(new-object System.Net.WebClient).DownloadFile(
'https://yaklang.oss-cn-beijing.aliyuncs.com/yak/latest/yak_windows_amd64.exe',
'yak_windows_amd64.exe'
)
# 执行安装
.\yak_windows_amd64.exe install
官方文档:
Yak:致力于安全能力融合的语言 | Yak Program Language
开源仓库:
GitHub - yaklang/yaklang: A programming language exclusively designed for cybersecurity · GitHub
🌟 核心优势总结
-
统一语言 --- 用 Yaklang 一门语言覆盖所有网络安全环节
-
安全能力融合 --- 将分散的安全能力整合到底座,实现"互补、融合、进化"
-
降本增效 --- 减少重复开发,提升安全从业人员生产力
-
跨平台运行 --- 一次编写,处处运行,依赖仅 YakVM
-
攻防一体 --- 罕见地同时覆盖攻击侧与防御侧的安全产品体系
-
安全左移 --- 让非安全专业人员也能快速编写安全检测脚本
⚠️ 注意:此 CDSL 不同于搜索结果中提到的 NICTA 团队开发的同名 CDSL(用于形式化验证文件系统代码的项目),也不同于印度 CDSL(Central Depository Services Limited)。这里是专指 Yaklang.io 团队 构建的中国首款网络安全领域编程语言。