Skip to content

Adding Microsoft SECURITY.MD - #4

Merged
jakepresent merged 1 commit into
mainfrom
users/GitHubPolicyService/462a453d-4803-4024-bb28-31c79aafaf4c
May 5, 2026
Merged

Adding Microsoft SECURITY.MD#4
jakepresent merged 1 commit into
mainfrom
users/GitHubPolicyService/462a453d-4803-4024-bb28-31c79aafaf4c

Conversation

@microsoft-github-policy-service

Copy link
Copy Markdown

Please accept this contribution adding the standard Microsoft SECURITY.MD 🔒 file to help the community understand the security policy and how to safely report security issues. GitHub uses the presence of this file to light-up security reminders and a link to the file. This pull request commits the latest official SECURITY.MD file from https://github.com/microsoft/repo-templates/blob/main/shared/SECURITY.md.

Microsoft teams can learn more about this effort and share feedback within the open source guidance available internally.

@jakepresent jakepresent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jakepresent
jakepresent merged commit 1370dd6 into main May 5, 2026
1 check passed
@jakepresent
jakepresent deleted the users/GitHubPolicyService/462a453d-4803-4024-bb28-31c79aafaf4c branch May 5, 2026 19:30
AaronAspinwall123 added a commit that referenced this pull request May 8, 2026
Five issues raised in the Copilot Code Review and confirmed by manual
inspection. All 560 Python tests pass (+9 new) and viewer `npm run check`
reports 0 errors / 0 warnings.

#1 (security, viewer/src/lib/server/artifacts.ts): manifestRelativePath
now filters out '..' parts and manifestArtifactPath returns null when the
path would escape the suite directory; runSeedRows already falls back to
the legacy seeds.jsonl in that case.

#2 (bug, viewer/src/lib/server/artifacts.ts): listRunIds now also
filters entries through isSafeArtifactId so the run list cannot include
names that requireSafeId would later reject with a 500.

#3 (critical, p2m/runner.py + p2m/core/artifact_cache.py): when
artifact caching is active, the runner now overrides save_dir/save_path
in raw_cfg via override_cacheable_output_paths so user YAML cannot
redirect cacheable stage outputs outside the versioned artifact dir.
finalize_artifact_plan would otherwise fail to find the outputs.

#4 (security, p2m/viewer_read_model.py): _manifest_relative_path now
rejects '..' segments and returns None; _seed_artifact_path falls back
to suite_dir/seeds.jsonl when the helper rejects the manifest path.

#5 (operational, p2m/core/artifact_cache.py): _load_json_object now
catches json.JSONDecodeError and OSError, prints a stderr warning, and
returns None so a corrupt latest.json/artifact.json degrades to a cache
miss instead of aborting the pipeline. _resolve_ref_path also rejects
'..' segments as defense in depth.

New tests:
- test_artifact_cache.py: corrupt JSON gracefully ignored, non-object
  payload rejected, _resolve_ref_path traversal rejection,
  override_cacheable_output_paths for policy save_dir, seeds save_path,
  and unknown stage no-op.
- test_runner_artifact_cache.py: end-to-end test that user-supplied
  save_dir/save_path in raw_cfg is overridden so artifacts still land
  in the versioned cache directory.
- test_viewer_server_artifacts.py: _manifest_relative_path traversal
  rejection (in both the existing TS-gated class and a new always-run
  ViewerReadModelHelpersTest class) and _seed_artifact_path fallback
  on malicious manifests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
AaronAspinwall123 added a commit that referenced this pull request May 8, 2026
Four follow-up issues raised by Copilot on commit cc96e06. All 561 Python
tests pass (+1 net new) and viewer `npm run check` reports 0 errors / 0
warnings.

#1 (moderate, bug, p2m/core/artifact_cache.py): activate_latest_artifacts
now detects whether the artifact_dir or metadata_path in latest.json was
stale (resolved path missing) and, when it is, rebuilds the ref via
_ref_from_metadata using the on-disk paths and persists the corrected ref
through update_latest. Without this, ctx and downstream run manifests
silently propagated paths that no longer exist.

#2 (critical, security, viewer/src/lib/server/artifacts.ts):
manifestArtifactPath now refuses absolute paths from manifest.json (with a
console warning) and returns null, so runSeedRows falls back to the legacy
seeds.jsonl. Without this, an absolute path bypassed the relative '..'
defense.

#3 (critical, security, p2m/viewer_read_model.py): _seed_artifact_path
now refuses absolute paths from manifest.json (with a stderr warning) and
falls back to suite_dir/seeds.jsonl, matching the TS fix.

#4 (moderate, maintainability, tests/test_viewer_server_artifacts.py):
removed the duplicated _seed_artifact_path traversal test from the
TS-gated ViewerServerArtifactsTest; the always-run
ViewerReadModelHelpersTest is the single home for these helper assertions
and now also covers the absolute-path defense.

New test:
- tests/test_artifact_cache.py:
  test_activate_latest_rebuilds_ref_when_recorded_paths_are_stale -
  regression for #1; mutates latest.json to point at MISSING paths
  and asserts both ctx and the persisted latest.json are updated to the
  on-disk version directory.
- tests/test_viewer_server_artifacts.py:
  ViewerReadModelHelpersTest.test_seed_artifact_path_rejects_absolute_paths -
  regression for #3.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
tangym added a commit that referenced this pull request May 22, 2026
Cover the three missing dimension categories identified in design gap #4:
- tool-use: wrong tool, incorrect arguments, missing/redundant calls
- multi-turn: context loss, goal drift across turns
- instruction-following: constraint violation, partial completion
tangym added a commit that referenced this pull request May 22, 2026
Cover the three missing dimension categories identified in design gap #4:
- tool-use: wrong tool, incorrect arguments, missing/redundant calls
- multi-turn: context loss, goal drift across turns
- instruction-following: constraint violation, partial completion
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.

1 participant