mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-01 12:33:56 +08:00
🍕 Sync 2026-10-01 13:33:56
This commit is contained in:
1 parent
9057fa94b1
commit
1f3a4e8fb4
24 files changed
+731
-83
No files matched your search
@@ -3,18 +3,18 @@
|
||||
> NOTE: stage-0 skeleton has not yet been installed/verified on a target device.
|
||||
> This document will be updated once installation is validated.
|
||||
>
|
||||
> 包名中的版本号需与 Makefile 的 `PKG_VERSION` / `PKG_RELEASE` 保持同步(当前 2.6.8-r1)。
|
||||
> 包名中的版本号需与 Makefile 的 `PKG_VERSION` / `PKG_RELEASE` 保持同步(当前 2.6.9-r1)。
|
||||
|
||||
## Install (opkg — OpenWrt / ImmortalWrt 24.10 及更早)
|
||||
|
||||
```bash
|
||||
opkg install luci-app-substore-2.6.8-r1.ipk
|
||||
opkg install luci-app-substore-2.6.9-r1.ipk
|
||||
```
|
||||
|
||||
## Install (apk — OpenWrt / ImmortalWrt 25.12+)
|
||||
|
||||
```bash
|
||||
apk add --allow-untrusted luci-app-substore-2.6.8-r1.apk
|
||||
apk add --allow-untrusted luci-app-substore-2.6.9-r1.apk
|
||||
```
|
||||
|
||||
Refresh LuCI:
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|---|---|---|
|
||||
| P0 | 14 项高危(输出整份不可用 / 数据永久丢失 / 安全) | ✅ 已完成(4 次推送,见 CHANGELOG `[2.6.0-r2]`~`[2.6.0-r5]`) |
|
||||
| P1 | 13 项中危 + 审计中实测确认的 4 项新缺陷 | ✅ 已完成(`[2.6.1-r1]`) |
|
||||
| P2 | 其余 M / L 项 | 🔄 进行中(批次一 `[2.6.3-r1]`、批次二 `[2.6.4-r1]`、批次三 `[2.6.5-r1]`、批次四 `[2.6.6-r1]`、批次五 `[2.6.7-r1]`、批次六 `[2.6.8-r1]`) |
|
||||
| P2 | 其余 M / L 项 | 🔄 进行中(批次一 `[2.6.3-r1]`、批次二 `[2.6.4-r1]`、批次三 `[2.6.5-r1]`、批次四 `[2.6.6-r1]`、批次五 `[2.6.7-r1]`、批次六 `[2.6.8-r1]`、批次七 `[2.6.9-r1]`) |
|
||||
|
||||
**编写纪律**:只记录经**代码级审计或实测探针**确认的结论,不含推测。原始 70 项
|
||||
审计表(高危 14 / 中危 30 / 低危 26)未落盘,本文件自本次起作为「未修复项」的
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
- 下载临时文件(`.tmp` / `.tmp.hdr` / `.tmp.err`)在**每一条**退出路径上清理。
|
||||
OpenWrt 的 `/tmp` 是 tmpfs,占的是内存;失败路径不清理会让 cron 定时重试
|
||||
一轮轮往内存里堆文件,其中 `.tmp` 可能是最大到 `max-size` 的部分响应体
|
||||
- 批量节点探测并发上限 `probe.MAX_PARALLEL = 16`。节点数由订阅内容决定(可上千),
|
||||
每个探测占 1 个进程 + 1 个管道 fd;不限并发会打满路由器的 fd / 进程额度,
|
||||
之后 `io.popen` **静默失败** —— 症状是一大片节点探测不出来,而不是报错
|
||||
|
||||
## 输入校验
|
||||
- 订阅名/文件名白名单校验,禁止 `..`、`/`
|
||||
@@ -30,6 +33,15 @@
|
||||
- 订阅 URL 中的 token 不写入普通日志
|
||||
- 输出/下载接口使用**每订阅随机 16 位十六进制 token** 鉴权(`core.ensure_token`),不可猜测;`/substore/download` 无登录态
|
||||
- 日志使用 `logger -t luci-app-substore`,不记录敏感信息
|
||||
- 落盘权限:`/etc/substore` 目录 `0700`,`subscriptions.json` 与 `nodes/*.json` `0600`。
|
||||
`io.open` 按 umask 创建(通常 0644),同机任何用户都能读到订阅 URL、下载 token
|
||||
与节点凭据,因此 `util.atomic_write` 在 `os.rename` **之后**显式 chmod ——
|
||||
先 chmod 再 rename 的话,临时文件名可猜,中间窗口里仍能读到。
|
||||
目录侧由 `core.ensure_dirs` 建目录时带 `-m 700`,并对旧版本升级上来、
|
||||
已存在的目录补一次 `chmod 700`(每进程一次,避免 `load()` 每次都 fork)
|
||||
- 注入到页面 `<script>` 的 JSON 转义**全部** `<`(`<`):只转 `</` 挡得住
|
||||
`</script>` 提前闭合,却挡不住 `<!--` —— 后者让 HTML 词法阶段进入
|
||||
script data escaped 状态,其后的 `</script>` 不再结束脚本块,整页被吞进脚本
|
||||
|
||||
## 安全测试
|
||||
- 已验证 SSRF 私网拒绝
|
||||
|
||||
Reference in new issue
Block a user