security(server): /api/tunnels/check-availability 是唯一未认证的隧道存在性 oracle——可匿名枚举全部隧道名单

Cerrado Apto para principiantes
#20 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
80/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
backend, security

Línea de trabajo

Lee python/tunely/server.py:1336-1342, donde check_availability se declara sin un argumento api key, y compáralo con los admin endpoints protegidos en :1320-1432 para ver el patrón _check_admin_api_key que comparten; la lógica que filtra es _check_availability en :1563-1591, que devuelve "Domain already exists". Protege la ruta de la misma manera y comprueba si la llamada de precheck del frontend necesita moverse a la ruta de conflicto de creación (409). Terminado cuando una llamada anónima a /api/tunnels/check-availability sea rechazada y el frontend siga resolviendo los conflictos de creación correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

场景 gap 单(okguitar 提报)· 优先级 P1 · 依赖:无

基线 HEAD = 020dec3。

Summary

  • python/tunely/server.py:1336-1342:路由签名 async def check_availability(name: str) 没有 api key 参数、不调用 _check_admin_api_key,直接返回 available/reason;同文件其余管理端点全部带 key(:1320-1432)。(已亲读确认。)
  • _check_availability(:1563-1591)对已存在域名返回 "reason": "Domain already exists"——即匿名者可用它爆破(dsh/plait/gz 等前缀)枚举全部已存在隧道。

影响

PROBE_HARDENING 专门把 /health 的隧道计数摘掉(T3:活跃隧道数是 oracle),这条端点把整份名单留成匿名可枚举,为针对性攻击/社工提供目标;也是唯一匿名触达 DB 的端点(可当低成本 DB 探测器)。

建议

与 /api/tunnels 同门控(_check_admin_api_key);确需公开则改常量响应(前端预检改由创建冲突时 409 承担)。

Lenguaje dominante
Python
Estrellas
0
Forks
0
Merge medio
1 min
PR fusionados (30 d)
1

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de jeffkit/tunely

Todos los issues de jeffkit/tunely

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.