| 版本 | 状态 |
|---|---|
| 2.0.x (latest) | ✅ 接受安全报告 |
| < 2.0 | ❌ 不再维护 |
请不要通过公开 GitHub Issue 报告安全漏洞。
请通过以下渠道之一私下告知:
- GitHub 私密报告: 仓库 → Security → "Report a vulnerability" (推荐 — 自动加密 + 追踪)
- 邮件:
wlx000610@gmail.com(主题前缀[DataLab Security])
报告时请尽量包含:
- 漏洞类型(命令注入 / 路径穿越 / 表达式逃逸 / 反序列化 等)
- 复现步骤 + 最小化的输入数据
- 受影响的版本或 commit SHA
- 你认为的影响范围(本地 / 仅 GUI / 仅 Web 服务等)
- 48 小时内确认收到
- 7 天内给出初步评估(是否构成漏洞 / 严重等级)
- 30 天内修复并发布补丁(关键漏洞会更快)
DataLab 设计上的两类敏感入口,值得报告者重点关注:
- 公式表达式解析 —
datalab_latex/expression_engine.py通过 AST 白名单 + 节点 / 深度 cap 限制用户输入。如果你能在不绕白名单的 情况下让它执行任意代码,这就是漏洞。 - Web 服务 —
app_web/server.py默认监听127.0.0.1。如果你 找到方式让它越过 CSRF / CSP /DATALAB_WEB_SECRET校验,这就是漏洞。
DataLab 默认使用 Tectonic ——
单一可执行文件,自动下载到 ~/.datalab/bin/。我们不会在编译过程中
加载用户提供的 \write18 或 shell-escape 脚本。如果你发现绕过此限制的
方式,请按上述渠道报告。
| Version | Status |
|---|---|
| 2.0.x (latest) | ✅ Receiving security reports |
| < 2.0 | ❌ Unmaintained |
Do not open a public GitHub issue for security reports.
Use one of these private channels instead:
- GitHub private report: Repository → Security → "Report a vulnerability" (preferred — auto-encrypted + tracked)
- Email:
wlx000610@gmail.com(subject prefix[DataLab Security])
Please include:
- Vulnerability class (command injection / path traversal / expression sandbox escape / deserialization, etc.)
- Reproduction steps + minimized input
- Affected version or commit SHA
- Suspected impact scope (local / GUI only / web service only)
- Within 48 h — acknowledgment of receipt
- Within 7 days — initial assessment (vulnerability or not, severity)
- Within 30 days — fix released (critical issues faster)
Two design-sensitive entry points worth focusing on:
- Formula expression parsing —
datalab_latex/expression_engine.pyrestricts user input via an AST whitelist + node / depth caps. If you can make it execute arbitrary code without subverting the whitelist, that's a vulnerability. - Web service —
app_web/server.pybinds127.0.0.1by default. If you find a way past the CSRF / CSP /DATALAB_WEB_SECRETchecks, that's a vulnerability.
DataLab uses Tectonic by
default — a single binary auto-downloaded to ~/.datalab/bin/. We do
not enable \write18 or shell-escape during compilation. If you find
a way around this restriction, report via the channels above.