security(console): 控制台登录无限流/无锁定,且同步 scrypt 阻塞事件循环——20-40 并发登录即可拖停全部隧道数据面
I maintainer di solito rispondono entro 13 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- python
- Ambito
- authentication, backend, security
Direzione di ricerca
Start at python/tunely/console_api.py:520-539 (the async login handler) and read verify_password at :118-134, where the blocking scrypt call and the user is None early return live. app.py is where middleware is registered (CORS only today), so the per-IP/per-account limiter or lockout belongs there. Done means login no longer blocks the event loop, unknown-username responses cost the same as known ones, and repeated failures are throttled — check with a concurrent-login load test and a timing comparison.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
场景 gap 单(okguitar 提报)· 优先级 P1 · 依赖:无
基线 HEAD = 020dec3。
Summary
python/tunely/console_api.py:520-539:verify_password(hashlib.scrypt(n=2**14),:118-134)在async def login内同步调用(无 run_in_executor)——本机实测每次 39.5-59.3ms CPU + 16MiB(已亲读代码确认调用形态)。- 全仓无 rate limit/锁定中间件(
app.py只装 CORS);固定 1s 失败延迟是await asyncio.sleep——不占线程、并发即绕过。 user is None时短路不跑 scrypt:与存在且启用的用户名有 ~50ms 稳定差值 → 统计采样可枚举用户名。
影响
(a) 匿名接口即可用 20-40 并发登录把同进程的全部隧道数据面拖停(3 隧道共进程);(b) 爆破无限速;(c) 用户名时序枚举。
建议
KDF 移入线程池(anyio.to_thread)+ 用户名不存在时也跑 dummy scrypt;/api/console/login 加按 IP/按账号滑动窗口与失败锁定(应用内计数或 Nginx limit_req)。
- Lingua principale
- Python
- Stelle
- 0
- Fork
- 0
- Merge medio
- 12g 4h
- PR unite (30g)
- 1
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di jeffkit/tunely
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 13 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 87/100
I maintainer di solito rispondono entro 13 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
jeffkit/tunely#24 · 3 commenti ·
I maintainer di solito rispondono entro 13 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
jeffkit/tunely#22 · 3 commenti ·
I maintainer di solito rispondono entro 13 giorni
-
fix(release): 发布链 fail-open(缺 secret 时 Actions 绿但什么都没发)+ PyPI 上的 0.10.0 恰是 /forward 无鉴权的安全缺口版本Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 34/100
jeffkit/tunely#23 · 3 commenti ·
I maintainer di solito rispondono entro 13 giorni
Tutte le issue di jeffkit/tunely
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
volcengine/OpenViking#6445 ·
I maintainer di solito rispondono entro 1 giorno
-
BUG:Edit Album strips spaces from the password so albums with a leading/trailing space in the password can't be editedForse già presa @ManyaJain111 l’ha presa oggi. Apertabug enhancement possible-duplicate
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
AOSSIE-Org/PictoPy#1637 · 4 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
deepspeedai/DeepSpeed#8884 ·
I maintainer di solito rispondono entro 3 giorni
-
Flaky: test_advisor_live_calibrates_an_unmeasured_circuit ranks engines by a 1.8ms sleep marginAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
flagos-ai/FlagQuantum#718 ·
I maintainer di solito rispondono entro 1 giorno
-
bug CI-failure high priority
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
vllm-project/afd-plugin#483 ·
I maintainer di solito rispondono entro 1 giorno