luongs3/wtf-audit-trail
GitHub: luongs3/wtf-audit-trail
基于 iExec Nox 的链上加密 CVE 审计日志系统,在保证审计记录不可篡改的同时将严重性评分加密保护,避免安全态势提前泄露。
Stars: 0 | Forks: 0
# ConfidentialAuditLog — iExec Nox × WTF!! Hackathon 夏季版
为 [WTF!! Hackathon 夏季版](https://dorahacks.io/hackathon/wtf-hackathon)(iExec, DoraHacks · 截止日期 2026 年 8 月 1 日)而构建。
集成了 [OpenCVE](https://github.com/opencve/opencve)(开源 CVE 追踪器)作为上游 OSS 项目。
## 问题所在
公共区块链上的漏洞审计追踪会暴露您的整个安全态势:
- 您发现的每一个 CVE
- 每一个严重性评分
- 每一个包名和版本
- 发现每个缺陷的时间线
所有这些信息对竞争对手、攻击者和公众都是可见的——**在您甚至还未修补任何问题之前**。
## 解决方案
`ConfidentialAuditLog` 使用 iExec Nox 使日志变得**防篡改且不可变**(区块链),同时保持**严重性评分处于加密状态**(由基于 TEE 的 Nox 处理)。
只有代码库所有者——拥有 `Nox.allow()` 权限的地址——才能通过 Nox JS SDK 在链下解密审计条目。
## 架构
```
┌──────────────────────────────────────────────────────────────────┐
│ Off-chain (PatchPilot CLI + OpenCVE integration) │
│ │
│ 1. scan(repo) → [{cveId, severity, package, version}, ...] │
│ 2. nox.encrypt(severityScore) → { handle, proof } │
│ 3. contract.addEntry(entryId, pkgHash, handle, proof) │
└──────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────┐
│ ConfidentialAuditLog.sol (Ethereum Sepolia) │
│ │
│ mapping(uint256 => AuditEntry) entries │
│ struct AuditEntry { │
│ bytes32 entryId; // keccak256(CVE-ID) — public ✅ │
│ bytes32 packageHash; // keccak256(pkg@ver) — public ✅ │
│ uint256 timestamp; // block.timestamp — public ✅ │
│ euint256 severity; // encrypted handle — private 🔒 │
│ } │
│ │
│ event EntryAdded(index, entryId, pkgHash, timestamp) │
│ // ⚠️ severity intentionally NOT in events (events are public) │
└──────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────┐
│ Off-chain decrypt (owner only) │
│ const severity = await nox.decrypt(log.getSeverityHandle(i)); │
└──────────────────────────────────────────────────────────────────┘
```
## 核心 Nox 模式
| 模式 | 代码 |
|---------|------|
| 加密存储 | struct 中的 `euint256 severity` |
| 外部输入 | `externalEuint256 inputHandle` + `bytes inputProof` |
| Proof 验证 | `Nox.fromExternal(handle, proof)` |
| 权限授予 | `Nox.allowThis(severity)` + `Nox.allow(severity, owner)` |
| Event 安全性 | 严重性**绝不**会被 emit —— 仅存储在 mapping 中 |
## 合约
- [`contracts/src/ConfidentialAuditLog.sol`](contracts/src/ConfidentialAuditLog.sol) — 主合约
- [`contracts/test/ConfidentialAuditLog.t.sol`](contracts/test/ConfidentialAuditLog.t.sol) — 11 个 Foundry 测试
## CLI
```
cd cli && npm install
# 扫描 repo 以查找 CVE(无 on-chain 写入)
node src/index.js scan
# 将加密条目推送到 on-chain log
RPC_URL=https://11155111.rpc.thirdweb.com \
PRIVATE_KEY= \
CONTRACT_ADDRESS=0x6ff59de0cc6ccb023c117e0f38e852f3b24e5517 \
node src/index.js push
# 从 log 读取公开元数据(severity 保持加密)
RPC_URL=https://11155111.rpc.thirdweb.com \
CONTRACT_ADDRESS=0x6ff59de0cc6ccb023c117e0f38e852f3b24e5517 \
node src/index.js read
```
## 测试结果
```
Ran 11 tests for test/ConfidentialAuditLog.t.sol:ConfidentialAuditLogTest
[PASS] test_addEntry_emitsEvent
[PASS] test_addEntry_incrementsCount
[PASS] test_addEntry_metaCorrect
[PASS] test_addEntry_returnsIndex
[PASS] test_getAllEntries_empty
[PASS] test_getSeverityHandle_notFound
[PASS] test_getSeverityHandle_returnsHandle
[PASS] test_multipleEntries
[PASS] test_noSeverityInEvent ← proves severity never leaks to events
[PASS] test_ownerSet
[PASS] test_strangerCannotAdd
Suite result: ok. 11 passed; 0 failed
```
## 实时部署
- **网络:** Ethereum Sepolia (chainId 11155111)
- **合约:** [`0x6ff59de0cc6ccb023c117e0f38e852f3b24e5517`](https://sepolia.etherscan.io/address/0x6ff59de0cc6ccb023c117e0f38e852f3b24e5517)
- **部署交易:** `0x23ccfa549cac2140d848a2df5c7ee83cbaa3b756a9a80a28ab35dfbab52d6aa2`
## OpenCVE 集成
该项目通过将其 CVE 数据作为审计日志的输入来与 [OpenCVE](https://github.com/opencve/opencve) 进行集成。CLI 会读取由 PatchPilot 扫描器(该扫描器查询的是 OSV.dev——即 OpenCVE 使用的同一个上游 CVE 数据库)发现的漏洞,然后将加密条目写入链上日志。
在完整的集成中:OpenCVE 的 webhook 会触发 CLI 自动将新的 CVE 披露推送上链,从而创建具有加密签名、带时间戳且受所有者权限控制的披露记录。
## 构建技术
- Solidity 0.8.35
- [iExec Nox Protocol Contracts](https://github.com/iExec-Nox/nox-protocol-contracts) v0.2.4
- [Foundry](https://getfoundry.sh) 1.7.1
- Node.js + ethers.js v6
- OSV.dev API (Google Open Source Vulnerabilities)
- 基于 [PatchPilot](https://github.com/luongs3/qwen-patchpilot) 扫描器模块(开源)分支开发
标签:iExec Nox, MITM代理, 区块链, 智能合约, 机密计算, 漏洞审计, 网络安全, 隐私保护