Microsoft Teams media handling used mixed fetch paths for Graph metadata/content and attachment auth-retry flows. Some paths bypassed the shared SSRF guard model and created inconsistent host/DNS enforcement across redirect/fetch hops.
openclaw (npm)2026.2.25<= 2026.2.252026.2.26The Microsoft Teams attachment/media code previously relied on plugin-local fetch behavior in parts of the flow, instead of uniformly using shared guarded fetch logic with pinned DNS + policy checks. This could allow policy drift and SSRF boundary inconsistency between channel/plugin paths.
The fix unifies this path by:
- routing Microsoft Teams Graph message/hosted-content/attachment fetches through shared SSRF-guarded fetch paths,
- routing auth-scope fallback attachment downloads through the same guarded policy model,
- centralizing hostname-suffix allowlist policy helpers in plugin-sdk so channel/plugins use the same allowlist normalization and policy construction behavior.
57334cd7d85174d5f951de01114fd5801b063564OpenClaw thanks @tdjackey for reporting.
{
"github_reviewed_at": "2026-03-03T22:21:59Z",
"nvd_published_at": null,
"cwe_ids": [
"CWE-367",
"CWE-918"
],
"severity": "LOW",
"github_reviewed": true
}