Skip to content

Harden outbound requests against SSRF - #1336

Closed
Paul Lizer (paullizer) wants to merge 1 commit into
microsoft:Developmentfrom
paullizer:fix/codeql-critical-ssrf-1335
Closed

Harden outbound requests against SSRF#1336
Paul Lizer (paullizer) wants to merge 1 commit into
microsoft:Developmentfrom
paullizer:fix/codeql-critical-ssrf-1335

Conversation

@paullizer

Copy link
Copy Markdown
Contributor

Summary

  • Remediates the 15 critical Python CodeQL SSRF results surfaced by the Development-to-Staging promotion check in Promote v0.260.028 from Development to Staging #1335.
  • Adds canonical Azure service validation for Content Understanding, Foundry, Key Vault, Blob Storage, Azure Files, and Azure Maps at final credentialed-client boundaries.
  • Adds a shared public HTTPS policy for OpenAPI calls with public-DNS enforcement, proxy isolation, same-origin redirect validation, and cross-origin credential protection.
  • Hardens Microsoft Graph pagination/download handling and directory ID encoding, plus Cosmos ARM relative-path validation.

Linked issue

No separate issue by request. Follow-up remediation from #1335.

Release Notes & Latest Features

  • New Feature
  • Bug Fix
  • UI Enhancement
  • Breaking Change
  • Internal only

Is this visible to end users?

  • Yes
  • No

Is this admin-facing (Admin Settings, governance, deployment, config)?

  • Yes
  • No

Should this become a Latest Feature card?

  • Yes
  • No
  • Already added

Screenshot needed for the card?

  • Yes
  • No
  • Attached

Version bump

  • application/single_app/config.py VERSION third segment bumped to 0.260.029
  • deployers/version.txt not needed because deployers/ was not changed

Testing / validation

  • 23 changed Python files compile with py_compile.
  • 8/8 affected runtime suites pass, including outbound policy, action endpoints, Content Understanding, Enhanced Citations, File Sync, and Cosmos throughput.
  • Route security contracts pass: 6/6 blueprint inventory, 4/4 unauthenticated policy, and 2/2 policy coverage.
  • Documentation passes 7/7 app-surface checks and 6/6 source-quality checks.
  • Independent read-only security review found no critical, high, or blocking findings.
  • Local CodeQL CLI is unavailable; GitHub CodeQL on this PR is the final query-level validation.

Documentation

  • Release notes updated
  • Relevant feature and reference documentation updated
  • Fix documentation added in docs/explanation/fixes/CRITICAL_SSRF_HARDENING_FIX.md

Security checklist

  • No new Flask routes were added; existing route security contracts pass
  • No settings were newly sent to non-admin frontends
  • No browser JavaScript or CDN-hosted assets were added
  • No secrets, keys, connection strings, or local-only artifacts are included

Comment on lines +345 to +351
response = requests.get(
url,
headers=headers,
params=params,
timeout=30,
allow_redirects=False,
)
Comment on lines +83 to +88
response = requests.get(
user_endpoint,
headers=headers,
params=params,
allow_redirects=False,
)
Comment on lines +77 to +82
response = requests.get(
user_endpoint,
headers=headers,
params=params,
allow_redirects=False,
)
@paullizer
Paul Lizer (paullizer) deleted the fix/codeql-critical-ssrf-1335 branch August 21, 2026 16:35
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