Executive brief
@steipete/summarize is a popular tool for generating summaries from URLs, podcasts, and files. The application can fetch podcast transcript URLs from RSS feeds controlled by attackers. A vulnerability allows an attacker who controls an RSS feed to direct the application to fetch transcript content from internal network addresses (loopback, private IP ranges, link-local addresses) or redirect such requests, potentially exposing sensitive internal service responses.
Technical details
The vulnerability exists in the RSS podcast transcript provider (packages/core/src/content/transcript/providers/podcast/rss-transcript.ts) where feed-controlled `<podcast:transcript url="...">` values are passed directly to fetch without validation. The root cause is insufficient URL validation: transcript URLs were not checked for local/private address ranges, redirect targets were delegated to automatic fetch behavior without revalidation, and hostname resolution was not performed before request dispatch. An attacker who publishes or controls a podcast RSS feed can include transcript entries pointing to loopback (127.0.0.1), RFC 1918 private ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), link-local addresses (169.254.0.0/16), or URLs that redirect to such targets. When the application processes the feed, it will fetch from these internal services and potentially expose their responses. The fix validates transcript URL schemes (http/https only), blocks localhost and local/private IP destinations before fetch, resolves DNS answers and rejects private/local DNS responses, revalidates all redirect targets, and uses DNS-pinned fetch to prevent DNS rebinding. Fixed in version 0.17.0.
Affected products
- steipete @steipete/summarize before 0.17.0
Timeline
- 2026-06-11: disclosed: Vulnerability published in GHSA-3vx2-vqx8-jxfg
- 2026-06-11: patched: Fixed in v0.17.0 release with security patch PR #239
References
- https://github.com/steipete/summarize/pull/239
- https://github.com/steipete/summarize/commit/3c5522440c4833dde033e226baa39e6dda1dfc75
- https://github.com/steipete/summarize
- https://github.com/steipete/summarize/releases/tag/v0.17.0
- https://www.vulncheck.com/advisories/summarize-ssrf-via-podcast-transcript-url-fetch