lordbasilaiassistant-sudo/alltest

GitHub: lordbasilaiassistant-sudo/alltest

一个分层递进式代码测试引擎,通过静态分析、动态测试、fuzzing 和自检多层探测发现代码库中的 bug、安全漏洞、密钥泄露和智能合约缺陷,并生成可直接修复的报告。

Stars: 1 | Forks: 0

# alltest **分层代码测试引擎。** 将其指向*任何*代码库,它会运行一层又一层的 探测——静态分析、动态构建/测试执行、fuzzing 和 meta 自检——以暴露 bug、安全漏洞、硬编码密钥、智能合约缺陷 和质量问题。然后,它会生成 **可由 AI 修复的** 报告,在此过程中 **学习** 新的问题模式 (RSI),并输出一个 **带标签的 ML 训练语料库**,用于未来的问题检测模型。 专为 AI agent 打造,只需一条命令即可彻底测试任何人的代码。 ``` npx alltest scan . ``` ``` alltest — /your/project 418 files · 6 languages · 13 probes · 210ms server/db/users.js ✗ HIGH SQL built via string concatenation/interpolation:88 ↳ Possible SQL injection. Use parameterized queries instead of building the query string. .env ✗ HIGH Environment file committed: .env:1 ↳ Remove the .env (git rm --cached), add it to .gitignore, and rotate anything it contained. contracts/Vault.sol ⛔ CRITICAL Authorization via tx.origin:42 ↳ tx.origin auth is phishable. Use msg.sender for authorization checks. Summary: 1 critical · 2 high ``` ## 为什么选择 alltest 大多数扫描器只做一件事。alltest 是一个 **多层引擎**,其设计使得覆盖范围能够 随着时间的推移而增长,而不是变得陈旧: - **层层递进。** `static → dynamic → fuzz → meta`。每个探测都是一个微型的可插拔 单元,因此目录可以不断扩展——并且 RSI 循环可以提出新的探测。 - **它测试自身。** 测试套件 *在自身上运行*,一个 meta 探测验证其自身的完整性, 而一个 meta-**meta** 测试则证明自检确实能在出现回归时报错(变红)。 无限套娃(`npm run test:layers`)。 - **发现即待修复项。** 每一项发现都包含精确的 `file:line`、脱敏的 代码片段、问题严重性的原因、具体的修复建议以及验收标准——随时可供 AI agent(或人类)采取行动,或作为 GitHub issue 提交。 - **越用越聪明。** 新的发现特征会被学习到知识库中;重复出现的 特征会被提升为候选检测规则。每一项发现也会作为带标签的 训练样本输出——这是模型学习直接发现问题所需的种子语料库。 - **零摩擦。** 依赖轻量,无需构建步骤,在 Node ≥ 18 上运行,适用于任何 repo, 无需任何配置。 ## 安装 ``` # one-off npx alltest scan . # 或安装 npm i -g alltest # global CLI npm i -D alltest # dev dependency + programmatic API ``` ## 用法 ### 扫描代码库 ``` alltest scan # static probes (safe, no code execution) alltest scan . --exec # also build + run the test suite alltest scan . --format sarif --out report.sarif # CI / GitHub code scanning alltest scan . --format json # machine-readable (for agents) alltest scan . --min medium # severity floor alltest scan . --fail-on high # exit non-zero → CI gate alltest scan . --corpus data/findings.jsonl --learn # feed ML corpus + RSI ``` ### 测试目录下的每一个项目 ``` alltest sweep ~/code --corpus data/findings.jsonl --out sweep.json ``` 查找每个项目根目录并扫描它们——只需一条命令即可“检查我所有的 repo”。 ### 提交可由 AI 修复的 GitHub issue ``` alltest report . --github owner/repo --min-severity high # dry run alltest report . --github owner/repo --min-severity high --confirm # create them ``` 通过特征去重,因此重新运行绝不会造成垃圾信息。需要 [`gh`](https://cli.github.com) CLI。 ### 编程式 API ``` import { scan, render } from 'alltest'; const result = await scan({ root: './my-app', allowExec: false }); console.log(render(result, 'markdown')); for (const f of result.findings) { console.log(f.severity, f.ruleId, f.location, '→', f.fixHint); } ``` ## 它能捕获什么 —— 跨越 4 个层的 15 个探测 | 层 | 探测 | 示例 | |---|---|---| | static | secrets | 私钥(包括 EVM `Wallet()`)、40 多种供应商模式(AWS、GitHub、GitLab、OpenAI、Anthropic、Stripe、Slack、npm、Twilio、SendGrid、Google OAuth、Telegram 等)、数据库/凭据 URL、凭据分配 | | static | **entropy-secrets** | **0-day 密钥**:匹配不到任何特征的高熵 token(供应商/格式 *未知*)(在测试中发现了真实硬编码的 `ADMIN_KEY`) | | static | dangerous-js | eval(包括间接的 `(0,eval)`)、`Function()`、字符串参数的 `setTimeout`、命令和 SQL 注入、DOM-XSS (`innerHTML +=`)、禁用的 TLS、JWT `none`、弱随机性 | | static | python-danger | eval/exec、pickle/yaml/torch/joblib 反序列化 (RCE)、`shell=True`、`verify=False`、SSTI、Django 密钥、assert-auth | | static | solidity | tx.origin 认证、未经检查的/低级别的调用、delegatecall、selfdestruct、block 变量随机性、range pragma、无限循环、零地址设置器 | | static | deps | 通配符/无限制版本、缺失 lockfile、脚本中的 `curl\|bash`、安装钩子、可选/同级依赖、无效清单 | | static | config-hygiene | 提交的 `.env`、**私钥文件**(`.key`/`.pem`/`id_rsa`,与公共证书区分的内容感知)、未被 gitignore 的 `.env` | | static | env-leak | 错误/堆栈泄露(Express/Koa/Fastify/render)、`process.env` 转储、通配符 CORS | | static | ci-docker | `:latest` 镜像、`curl \| bash`、ADD-from-URL、root 容器、未固定的 Actions、`pull_request_target` | | static | complexity | 高圈复杂度、长函数、深嵌套、超大文件——这些都是潜藏 bug 的地方 | | fuzz | json-roundtrip | 加载时会导致崩溃的格式错误的 JSON/config | | dynamic | build / tests | 构建失败、失败或缺失的测试套件 (`--exec`) | | meta | self-integrity | alltest 自身的注册表 + Finding-schema 不变量 | 运行 `alltest probes` 获取实时列表。 ## 针对不受信任的探测进行严格隔离 探测默认在进程内运行(速度快,类似于 ESLint 插件)。如果要使用不受信任的或 RSI 生成的探测进行扫描——或者要强制执行真实的实际时间限制——请使用 worker **sandbox**,其 supervisor 可以 `terminate()` 陷入 *同步* 死循环的探测(这是任何 同线程 timeout 都无法做到的): ``` alltest scan . --sandbox --timeout 60 # hard 60s ceiling, killable alltest scan . --sandbox --probe-module ./my-probe.mjs ``` ## 抑制误报 ``` const y = eval(trusted); // alltest-ignore const z = eval(trusted); // alltest-disable-line eval-use ``` ``` # .alltestignore vendor/ **/generated/*.js ``` ## 分层自检 ``` npm test # 100 tests, all layers npm run test:layers # narrated, layer by layer ``` 每一条检测规则都经过了对抗性审查;每一个确认的误报和 漏报现在都被锁定为回归测试 (`test/regressions.test.js`)。 ## 路线图 - 更多探测(Rust/Go/Java 深度分析、污点追踪、AST 级别分析)。 - 代码级 fuzz 引擎(针对导出函数的属性生成)。 - 规则合成:从提升的 RSI 特征自动生成探测。 - 在收集的语料库上训练第一个问题检测模型。 ## 许可证 MIT alltest 可以使用免费的 GLM 进行可选的 AI 辅助分诊。如果您想要一个运行此类模型的编码计划, **[z.ai 编码计划](https://z.ai/subscribe?ic=BWTG6TRYYQ)** 链接是一个引荐链接——它有助于资助 alltest 的开发。(公开引荐,非折扣。)
标签:Apex, GNU通用公共许可证, MITM代理, Node.js, 代码安全审计, 图数据库, 数据可视化, 智能合约审计, 暗色界面, 机器学习, 自定义脚本, 错误基检测, 静态代码分析