Security / privacy issue
WebFetchTool validates URLs and uses the SSRF-aware pinned transport for direct fetches, but _fetch_jina() creates a plain httpx.AsyncClient and sends the complete user URL to https://r.jina.ai/{url}.
Relevant code: nanobot/agent/tools/web.py:1036-1045.
Impact
- Query-string credentials and signed URLs may be disclosed to a third party.
- User browsing targets are sent externally even when local direct fetching would be expected.
- The local SSRF policy does not control what the remote Jina service fetches.
Suggested fix
Make third-party reader use explicit opt-in, strip credentials/fragments before forwarding, document the disclosure, or fetch locally and pass only retrieved content to downstream processing. Add tests proving sensitive URL components are not forwarded.
Security / privacy issue
WebFetchToolvalidates URLs and uses the SSRF-aware pinned transport for direct fetches, but_fetch_jina()creates a plainhttpx.AsyncClientand sends the complete user URL tohttps://r.jina.ai/{url}.Relevant code:
nanobot/agent/tools/web.py:1036-1045.Impact
Suggested fix
Make third-party reader use explicit opt-in, strip credentials/fragments before forwarding, document the disclosure, or fetch locally and pass only retrieved content to downstream processing. Add tests proving sensitive URL components are not forwarded.