Skip to content

Release 0.8.1: harden web grounding against SSRF - #174

Merged
Paulo Salem (paulosalem) merged 5 commits into
mainfrom
development
Oct 23, 2026
Merged

Paulo Salem (paulosalem) merged 5 commits into
mainfrom
development

Conversation

@paulosalem

Copy link
Copy Markdown
Collaborator

Summary

Promote development to main with TinyTroupe 0.8.1 and a fix for the reported CWE-918 SSRF path in webpage grounding.

  • Route all webpage-grounding fetches, including deserialization-triggered fetches, through a controlled HTTP/HTTPS fetcher.
  • Enforce exact hostname allowlisting, resolved-address restrictions, redirect validation, and connections pinned to validated addresses while preserving HTTPS certificate verification.
  • Enable safeguards by default, with a small public-host starter allowlist and separate opt-in permissions for localhost/private networks. An explicit enforcement opt-out logs a warning.
  • Preserve document identity and only mark URLs loaded after successful fetching/indexing.
  • Add security regression coverage and update the README, example configuration guidance, and Investment Firm notebook documentation.
  • Bump the patch version from 0.8.0 to 0.8.1.

Existing development changes included

This is a full development → main promotion, not a security-only branch. It also includes the existing DnD vision example with agent/image assets and the paper-experiment updates already on development.

Validation

  • 98 security/configuration regression tests passed on the latest security/configuration changes.
  • A broader targeted run previously passed 101 tests covering security, configuration, and credential-free grounding behavior.
  • Reproduced the original nested TinyPerson.load_specification deserialization path: localhost (IPv4/IPv6), cloud metadata, an attacker hostname, and a lookalike hostname were all rejected before DNS/network access. Serialized attempts to disable the policy were ignored.
  • Real local HTTP fixtures exercised permitted fetching and redirect rejection; an explicitly allowlisted public HTTPS fetch also passed.
  • Confirmed example configurations inherit the safeguards and notebook code/output cells were unchanged.
  • Full core/model-dependent regression runs could not complete because OpenAI credentials were unavailable; those runs were stopped, not counted as passing.

Security considerations

The reported SSRF path is remediated under secure defaults. Trusted application configuration can deliberately relax or disable destination restrictions. Deserialization still fetches approved pages, so this change is not a general guarantee that arbitrary serialized agents are safe. Campaign scanner revalidation is still required.

gokbot and others added 4 commits April 1, 2026 02:19
Demonstrates TinyTroupe's vision capabilities through a tabletop RPG
scenario. A Dungeon Master agent sees maps and character art, then
shares them with two player agents via the SHOW action.

- Greg_DM.agent.json: experienced DM, software engineer
- Talia_Player.agent.json: veteran player, plays a knight
- Jordan_Player.agent.json: new player, plays an elf cleric
- Notebook with 2 scenes covering see() and SHOW actions
Add DnD vision example with 3 agents and 2 scenes
Enforce configurable hostname and network destination safeguards for webpage grounding, with regression coverage and documentation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7e8ca0b9-ad1c-47c3-a864-fb5040d75485
Comment thread tests/unit/test_web_grounding_security.py Fixed
Comment thread tinytroupe/utils/web.py Fixed
Preserve certificate and hostname verification, add minimum TLS regression coverage, and narrowly annotate a mocked DNS address flagged by Bandit.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7e8ca0b9-ad1c-47c3-a864-fb5040d75485
@paulosalem
Paulo Salem (paulosalem) merged commit 7ce8be3 into main Oct 23, 2026
9 of 11 checks passed

This branch was successfully deployed

1 active deployment
github-pages — a681d392 Deployed Oct 22, 2026 by paulosalem via deploy #54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants