RuoJi6
459a484237
Merge pull request #120 from RuoJi6/codex/task-global-assets
...
feat: add opt-in global asset sharing per task
2026-11-05 16:37:07 +08:00
ji ruo
080a46eb2d
feat: make task global asset sharing opt-in
2026-11-05 16:27:44 +08:00
ji ruo
4868b1816f
fix: persist custom egress IP probe service ( #118 )
2026-11-05 16:00:07 +08:00
ji ruo
f053931a1d
fix: require Basic Auth for health checks
2026-11-03 14:56:39 +08:00
ji ruo
5203176364
fix: remove application fingerprints from public responses
2026-11-03 14:48:41 +08:00
ji ruo
7140d14a17
feat: use DeepSeek Search API for web search
2026-11-03 14:07:32 +08:00
ji ruo
4b037bf5b0
fix: clean up proxy settings and empty pool handling
2026-11-02 17:57:19 +08:00
RuoJi6
05dd5b40e8
Merge pull request #107 from RuoJi6/feat/proxy-pool
...
feat: 全局代理池(健康检查、定时/失效轮换、热切换、脱敏)— Depends on #106
2026-11-02 15:45:28 +08:00
RuoJi6
de6a0fa125
feat: 代理异常暂停与自动重连恢复
...
Proxy failure pause, timed reconnect, and guarded auto-resume.
2026-10-31 15:54:41 +08:00
ji ruo
542d7e9ca6
fix: preserve UTF-8 filenames for exports
2026-10-30 15:06:37 +08:00
RuoJi6
5366160a5d
feat: add container resource monitoring
2026-10-29 10:28:40 -07:00
ji ruo
6656d73b56
feat: add finding date range filter
2026-10-29 22:48:08 +08:00
ji ruo
e5c0721e4d
fix: stabilize coverage zoom and reporter generation
2026-10-29 10:35:21 +08:00
ji ruo
7946869762
feat: add task traffic history and report recovery
2026-10-29 10:18:32 +08:00
ji ruo
21646d5d29
feat: separate topology mapping from asset graph
2026-10-28 23:19:53 +08:00
ji ruo
14ebf44362
fix: restore topology view and mapping progress state
2026-10-28 21:10:43 +08:00
ji ruo
d51bf259e4
fix: place topology nodes by zone and show mapping progress
2026-10-28 21:01:00 +08:00
ji ruo
fb6942f2b2
fix: align asset coverage zones and remapping chat
2026-10-28 19:23:13 +08:00
RuoJi6
d6ce7fc8bb
Merge pull request #61 from zabcxky-123/codex/fix-findings-page-size
...
fix(web): 修复 Findings 列表每页数量固定为 20
2026-10-27 00:44:16 -07:00
RuoJi6
be65ab4425
Merge pull request #59 from zabcxky-123/codex/fix-task-findings-time-sort
...
fix(web): 恢复项目发现页按时间排序
2026-10-27 00:43:51 -07:00
zabcxky-123
1aeaf57734
fix(web): allow changing findings page size
2026-10-27 14:51:10 +08:00
zabcxky-123
80316252b8
fix(web): restore chronological sorting in task findings
2026-10-27 14:25:36 +08:00
shinypolaris
5feddf296d
feat: 全局代理支持连通性测试与出口 IP 显示
2026-10-27 00:01:23 +08:00
RuoJi6
3a4c66d41f
Merge pull request #48 from RuoJi6/feat/finding-dedup-1-2-3
...
feat(findings): 降低重复确认噪音——分组疑似重复建议、候选打分排序、放宽归并验收(方案1+2+3)
2026-10-25 18:37:16 -07:00
RuoJi6
e03bd5c244
Merge pull request #44 from RuoJi6/feat/notes-and-worker-count
...
feat: 任务/模板备注展示与 Worker 运行数量配置
2026-10-25 18:29:16 -07:00
RuoJi6
1847b8adb1
feat: 发现页新增类似 Burp Repeater 的请求重放功能(Codex 重写)( #42 )
...
Code authored by Codex CLI (gpt-6.1-sol/gpt-6-astra/gpt-6-sol/gpt-5.6-sol sessions, final: gpt-6-astra).
2026-10-24 22:26:22 +08:00
RuoJi6
09e90b4170
feat(findings): grouped duplicate suggestions, ranked candidates, relaxed merged acceptance (Codex rewrite)
...
Authored entirely by Codex CLI (codex exec, reasoning effort high), one session
resumed across capacity fallbacks:
- gpt-6.1-sol (schema + initial db work, stopped at capacity)
- gpt-6-astra (db/server/agent/frontend, stopped at capacity)
- gpt-6-sol (remaining items, tests, fixes; stopped at capacity after final checks)
Schemes 1+2+3: prompt/acceptance (2..20, evidenced differences justify
independent, merged no longer blocked by unified report), group suggestions with
member table, superset reuse/subset superseded, veto-aware reject/exclusion,
anchor re-anchoring trigger, sweep after merge/reject/remove, frontend group card
with stale-response guard, candidate scoring with tier/hit_reasons/strong_total.
2026-10-24 21:55:45 +08:00
RuoJi6
a1dc362bae
feat: 任务/模板备注展示与 Worker 运行数量配置(Codex gpt-6-astra 重写)
2026-10-24 21:46:03 +08:00
RuoJi6
f9cf38c16c
revert: 回退手写的 Repeater 实现,准备由 Codex 按新规则重写 ( #42 )
2026-10-24 21:17:55 +08:00
RuoJi6
ba3025d04f
chore: 还原 PR #44 手写实现,准备由 Codex 按新规则重写
2026-10-24 21:17:17 +08:00
RuoJi6
b0d6ad5d76
revert(findings): reset dedup files to origin/main before Codex rewrite
...
Pure git restore (git checkout origin/main -- <files>) so the scheme 1+2+3
implementation can be re-authored entirely by Codex. No hand-written code.
2026-10-24 21:09:20 +08:00
RuoJi6
00ec84d14e
feat(findings): reduce duplicate-confirmation noise with grouped suggestions and ranked candidates
...
- Prompt: evidenced endpoint/handler/param differences justify independent; suggest only with concrete shared points
- Review acceptance: merged no longer blocked by unified report
- Suggestions: 2..N member groups, one-click group confirm with per-member exclusion, related cards cleared
- Candidates: score/tier/hit_reasons ranking, low-score kept paginated
2026-10-24 20:01:37 +08:00
RuoJi6
341caa5e1f
feat: 发现页新增类似 Burp Repeater 的请求重放功能 ( #42 )
...
在发现详情的关联流量区提供 Repeater:可从流量证据一键预填,或空白编辑
方法/URL/头/体后由服务端代发请求并展示原始响应,便于人工验证与报告撰写。
- POST /api/repeater/send:复用 recording/global 代理出口
- 直连路径拨号层拦截环回/链路本地/元数据;字面敏感 IP 在 URL 预检拒绝
- 会话内历史(前端内存);跨主机重定向拒绝
2026-10-23 19:22:51 +08:00
RuoJi6
45d4e4e67b
feat: 任务/模板备注展示与 Worker 运行数量配置
...
- 新建任务可填写备注;详情页头部展示备注(列表原有 RemarkEditor 保留)
- 任务模板支持备注与 Worker 数量,应用/另存为模板时同步带入
- 新建任务高级设置与模板均可单独设置 Worker 运行数量(0=回落全局默认)
- schema/API/引擎贯通:tasks.worker_count、task_templates.remark/worker_count
2026-10-23 19:01:21 +08:00
ji ruo
851e3f99ed
feat: add optional credential processing with dependent switches and traffic evidence
2026-10-20 13:01:03 +08:00
ji ruo
d70dd15e11
feat: add optional task intelligence recording and views
2026-10-20 11:16:04 +08:00
ji ruo
de7a668b32
feat: align list editors with name hover actions
2026-10-19 09:58:32 +08:00
ji ruo
316889f76a
feat: add inline remarks for tasks and schedules
2026-10-19 09:17:59 +08:00
ji ruo
6a3d39e969
feat: add optional proxy for online updates
2026-10-15 15:44:55 +08:00
ji ruo
2f2b78cc78
feat: search approval history by content and date
2026-10-12 12:38:31 +08:00
ji ruo
8067f3286b
修复计划任务立即运行并区分状态颜色
2026-10-10 08:45:06 +08:00
ji ruo
98321d8262
支持计划任务日期范围
2026-10-09 23:50:05 +08:00
ji ruo
3254c90a03
新增日历式计划任务
2026-10-09 23:05:44 +08:00
ji ruo
ada09f6c1a
fix(ui): restore original controls and limit folders to merged findings
2026-10-09 13:12:54 +08:00
RuoJi6
e77c3ae9a3
Merge pull request #2 from RuoJi6/codex/finding-folders
...
feat(findings): 同一漏洞重复上报归并与文件夹展示
2026-10-09 11:07:16 +08:00
ji ruo
24d4726aee
feat(findings): consolidate duplicate reports into expandable cases
2026-10-09 10:43:53 +08:00
ji ruo
04c8c54ff8
feat(auth): add optional HTTP Basic Auth access gate
2026-10-09 10:12:27 +08:00
Autumn-27
86729b65dc
feat(intercept): 模型兜底审批单独计量 token 并在配置页展示
...
兜底审批(LLM judge)调模型判定漏网命令,其 token 消耗此前无法单独查看:
usage 行要么无 worker 归属、要么被并进复用的模型 profile 桶里。
- llmrec 增加 WithWorker 上下文覆盖,reviewer 调用前标注 worker='judge',
让审批调用的计量行可被单独筛出(复用现有 llm_usage.worker 列,无需迁移)。
- db.JudgeUsageStats 返回累计总量 + 近 N 天每日序列(WHERE worker='judge')。
- 新增 GET /api/intercept/judge/usage。
- 配置页「模型兜底审批」开关下方新增用量卡片:调用次数 / 输入 / 输出 /
缓存读写 五项统计 + 近 30 天每日消耗迷你柱图 + 刷新。
2026-10-04 02:43:26 -04:00
Autumn-27
e2c8a23a98
fix(web): SSE 活动流默认同源,修复反代部署连不上 :8787
...
sseUrl() 原先无条件把 SSE 地址拼成 ${hostname}:8787,连生产静态导出
也带这个硬编码。反代到 443 的部署里页面从 https://域名/ 加载,SSE 却被
指向 https://域名:8787/...,而 8787 未对公网开放,导致活动流连不上、反复重连。
改为用 NODE_ENV 区分:生产默认同源(相对路径),仅 next dev 保留 :8787
以绕过 Next.js /api 反代对 SSE 的缓冲。NEXT_PUBLIC_SSE_BASE 覆盖口保留。
验证:NEXT_EXPORT=1 next build 后生产包里 :8787 分支已被 tree-shake。
补充 README 反向代理部署文档(同源说明 + nginx 关缓冲配置)。
Closes #169
2026-10-02 20:10:08 -04:00
luckone and Claude Code
f3fb37f70d
feat(notify): 漏洞发现支持推送到钉钉/飞书/企业微信等六种渠道
...
新增「系统 → 通知推送」页,把扫描发现的漏洞推送到钉钉、飞书、企业微信、
通用 Webhook、Telegram、邮件。同一类型可配任意多个机器人实例,每个实例独立
设启停、限流与过滤规则(最低级别 / 任务资产范围 / 漏洞类型关键词 / 是否接收
处置状态变更)。推送时机分实时与汇总两种模式,「高危实时、其余汇总」建两个
渠道即可表达,策略不写死在代码里。带投递历史与失败重发。
三个关键设计:
1. 写漏洞的事务只做一次盲 INSERT。notification_events 由 RecordFindingTx
在同一事务内写入,保证「漏洞落库」与「推送任务存在」原子一致;这条 INSERT
刻意不读渠道表、不跑用户的过滤规则,否则一条配错的过滤条件就能污染甚至
中止事务,让高危漏洞存不进库。为把失败隔离在这一条语句上(PostgreSQL 中
事务内任一语句报错会让整个事务作废、连 COMMIT 都失败),它被 SAVEPOINT
包住,失败时只记日志。
2. 投递用租约领取而非长事务。FOR UPDATE SKIP LOCKED 领取后把行置为 sending、
把 next_attempt_at 推到未来作为租约,提交后再做网络投递,因此投递期间不
持有数据库锁;崩溃留下的 sending 行会被下一轮重新领取,自愈且不会无限重试。
3. 限流不消耗重试预算。先按渠道令牌桶算出本轮还能发几条,再按这个数量领取;
顺序反过来会让被限流挡下的投递白计一次尝试,三次预算被等待耗光后落入失败。
审计并修复的四个问题:
- 推送凭据经错误信息外泄:http.Client.Do 返回的 *url.Error 会把完整 URL 打进
错误文本,而钉钉 access_token、企业微信 key、飞书 hook id、Telegram
/bot<token>/ 都就在 URL 里。该串流入 last_error(明文落库)、投递历史接口
(绕过渠道掩码)、服务端日志与前端错误提示。现统一脱敏为 scheme://host
+ 底层原因,并拒绝跨主机重定向。
- 最低级别门槛打错字会让过滤器静默失效:未知级别序数为 0,判定退化成
rank >= 0 恒真,用户以为限制「仅高危」实际全推。现于写入路径校验取值。
- 汇总批次无上限:一次领取把全部待发行读进内存、消息被渠道长度上限截掉大半
且静默丢失。现单批上限 500 条,超出部分留库成为下一批。
- 邮件渠道把 SMTP 4xx(灰名单等临时失败)判成永久失败,导致这类最该重试的
场景从不重试。现按应答码首位区分 4xx/5xx。
测试:notify 包 82% 覆盖(含用自建最小 SMTP 服务器驱动的完整邮件协议会话、
两种签名算法对 OpenSSL 基准值的比对、UTF-8 边界截断、以及模板能力边界的
反射断言);db 与 server 侧共 29 个用例跑真实 PostgreSQL,其中端到端用例
真发 HTTP 到假接收端并断言消息内容与投递状态。
Co-Authored-By: Claude Code <[email protected] >
2026-09-30 16:25:06 +08:00