| 概要 |
PinchTab is a standalone HTTP server that gives AI agents direct control over a Chrome browser. PinchTab v0.8.3 contains a server-side request forgery issue in the optional scheduler's webhook delivery path. When a task is submitted to `POST /tasks` with a user-controlled `callbackUrl`, the v0.8.3 scheduler sends an outbound HTTP `POST` to that URL when the task reaches a terminal state. In that release, the webhook path validated only the URL scheme and did not reject loopback, private, link-local, or other non-public destinations. Because the v0.8.3 implementation also used the default HTTP client behavior, redirects were followed and the destination was not pinned to validated IPs. This allowed blind SSRF from the PinchTab server to attacker-chosen HTTP(S) targets reachable from the server. This issue is narrower than a general unauthenticated internet-facing SSRF. The scheduler is optional and off by default, and in token-protected deployments the attacker must already be able to submit tasks using the server's master API token. In PinchTab's intended deployment model, that token represents administrative control rather than a low-privilege role. Tokenless deployments lower the barrier further, but that is a separate insecure configuration state rather than impact created by the webhook bug itself. PinchTab's default deployment model is local-first and user-controlled, with loopback bind and token-based access in the recommended setup. That lowers practical risk in default use, even though it does not remove the underlying webhook issue when the scheduler is enabled and reachable. This was addressed in v0.8.4 by validating callback targets before dispatch, rejecting non-public IP ranges, pinning delivery to validated IPs, disabling redirect following, and validating `callbackUrl` during task submission.
|
| 概要 |
PinchTab es un servidor HTTP autónomo que otorga a los agentes de IA control directo sobre un navegador Chrome. PinchTab v0.8.3 contiene un problema de falsificación de petición del lado del servidor en la ruta de entrega de webhook del programador opcional. Cuando se envía una tarea a 'POST /tasks' con una 'callbackUrl' controlada por el usuario, el programador v0.8.3 envía un 'POST' HTTP saliente a esa URL cuando la tarea alcanza un estado terminal. En esa versión, la ruta del webhook validaba solo el esquema de la URL y no rechazaba destinos de bucle invertido, privados, de enlace local u otros no públicos. Debido a que la implementación v0.8.3 también utilizaba el comportamiento predeterminado del cliente HTTP, se seguían las redirecciones y el destino no estaba fijado a IPs validadas. Esto permitía SSRF ciego desde el servidor PinchTab a objetivos HTTP(S) elegidos por el atacante accesibles desde el servidor. Este problema es más limitado que un SSRF general no autenticado y expuesto a internet. El programador es opcional y está desactivado por defecto, y en implementaciones protegidas por token el atacante ya debe ser capaz de enviar tareas utilizando el token maestro de la API del servidor. En el modelo de implementación previsto de PinchTab, ese token representa control administrativo en lugar de un rol de bajo privilegio. Las implementaciones sin token reducen aún más la barrera, pero eso es un estado de configuración inseguro separado en lugar del impacto creado por el propio error del webhook. El modelo de implementación predeterminado de PinchTab es local-first y controlado por el usuario, con enlace de bucle invertido y acceso basado en token en la configuración recomendada. Eso reduce el riesgo práctico en el uso predeterminado, aunque no elimina el problema subyacente del webhook cuando el programador está habilitado y es accesible. Esto se abordó en la v0.8.4 validando los objetivos de callback antes del envío, rechazando rangos de IP no públicos, fijando la entrega a IPs validadas, deshabilitando el seguimiento de redirecciones y validando 'callbackUrl' durante el envío de tareas.
|