fix(owasp): migrate OWASP catalogue from AT to ASI 2026 taxonomy#839
fix(owasp): migrate OWASP catalogue from AT to ASI 2026 taxonomy#839jackbatzner wants to merge 2 commits intomicrosoft:mainfrom
Conversation
🤖 AI Agent: security-scanner — Security Review of PR: OWASP Taxonomy MigrationSecurity Review of PR: OWASP Taxonomy MigrationThis PR migrates the OWASP risk catalog from the legacy AT identifiers to the ASI 2026 taxonomy. While the changes are primarily semantic and documentation-focused, they touch critical components of the Findings1. Prompt Injection Defense Bypass
2. Policy Engine Circumvention
3. Trust Chain Weaknesses
4. Credential Exposure
5. Supply Chain Vulnerabilities
Summary of Findings
Additional Notes
By addressing the above findings, this PR can ensure a robust migration to the ASI 2026 taxonomy without introducing new security vulnerabilities. |
There was a problem hiding this comment.
🤖 AI Agent: code-reviewer
Review Summary
This pull request migrates the OWASP risk catalog from the legacy AT (LLM Top 10) identifiers to the new ASI (Agentic Security Initiatives) 2026 taxonomy. The changes include updating all references to OWASP risks across the codebase, documentation, and tests. The migration is semantically correct and aligns with the updated OWASP taxonomy.
Below is a detailed review of the changes, focusing on the specified areas of concern.
Key Findings and Feedback
🔴 CRITICAL: Policy Engine Correctness
-
Semantic Mapping of OWASP Risks
- The migration from AT to ASI taxonomy involves semantic mapping of risks. However, some mappings (e.g.,
AT07→ASI02,ASI03) are not 1:1 and may lead to gaps in policy enforcement. - Actionable Fix: Add a fallback mechanism or explicit logging for unmapped or ambiguous cases. For example, if a rule previously mapped to
AT07but now maps to multiple ASI risks, ensure all relevant risks are flagged.
- The migration from AT to ASI taxonomy involves semantic mapping of risks. However, some mappings (e.g.,
-
Silent Skipping of Legacy AT Identifiers
- The updated
getOwaspRisksfunction silently skips unknown IDs. This could lead to undetected risks if legacy identifiers are still referenced in older policies or tests. - Actionable Fix: Log a warning or error when an unknown ID is encountered to prevent silent failures.
- The updated
🔴 CRITICAL: Trust/Identity
-
Identity & Privilege Abuse (ASI03)
- The new taxonomy introduces
ASI03for identity and privilege abuse. However, the rules for detecting credential mishandling or privilege escalation are not updated inreviewer.ts. - Actionable Fix: Add explicit checks for credential leakage, improper token handling, and privilege escalation in the static analysis rules.
- The new taxonomy introduces
-
Insecure Inter-Agent Communication (ASI07)
- The new taxonomy highlights inter-agent communication risks. The current implementation does not include checks for authentication, encryption, or schema validation in inter-agent communication.
- Actionable Fix: Introduce rules to detect insecure communication patterns, such as unencrypted HTTP or lack of authentication in inter-agent API calls.
🔴 CRITICAL: Sandbox Escape Vectors
- Unexpected Code Execution (ASI05)
- The new taxonomy includes
ASI05for remote code execution (RCE). The current rules do not explicitly address this risk. - Actionable Fix: Add rules to detect unsafe code execution patterns, such as
eval,exec, orsubprocesscalls without proper validation.
- The new taxonomy includes
🟡 WARNING: Backward Compatibility
- Breaking Changes in OWASP Risk Identifiers
- The removal of AT identifiers and the introduction of ASI identifiers is a breaking change for any consumers relying on the old identifiers.
- Actionable Fix: Provide a migration guide or a compatibility layer that maps old AT identifiers to their corresponding ASI identifiers.
💡 SUGGESTION: Type Safety and Validation
-
TypeScript Definitions
- The
OwaspRiskinterface is well-defined, but theOWASP_AGENTIC_RISKSobject could benefit from stricter typing to ensure all keys are valid ASI identifiers. - Actionable Fix: Use a TypeScript enum for ASI identifiers and enforce its usage in the
OWASP_AGENTIC_RISKSobject.
- The
-
Validation of OWASP Risk References
- The
formatOwaspRisksfunction does not validate the inputidsarray. This could lead to runtime errors if invalid IDs are passed. - Actionable Fix: Add input validation to ensure all IDs in the
idsarray are valid ASI identifiers.
- The
💡 SUGGESTION: Documentation
-
Updated OWASP Taxonomy
- The documentation updates are thorough, but it would be helpful to include a section explaining the migration from AT to ASI taxonomy, especially for users familiar with the legacy identifiers.
- Actionable Fix: Add a "Migration Guide" section in the README to explain the changes and provide examples of how to update existing policies.
-
Example Outputs
- The example outputs in the README have been updated to use ASI identifiers. However, it would be helpful to include a note that legacy identifiers are no longer supported.
- Actionable Fix: Add a note in the "Example Outputs" section to clarify that legacy AT identifiers are deprecated.
💡 SUGGESTION: Test Coverage
-
Backward Compatibility Tests
- The PR mentions that legacy AT inputs are silently skipped in tests. This could lead to undetected regressions.
- Actionable Fix: Add tests to explicitly verify that legacy AT identifiers are either correctly mapped or produce appropriate warnings.
-
New ASI Risks
- The new ASI risks (e.g.,
ASI07,ASI10) are not explicitly tested in the updated test suite. - Actionable Fix: Add test cases for each new ASI risk to ensure they are correctly detected and reported.
- The new ASI risks (e.g.,
Summary of Flags
- 🔴 CRITICAL:
- Ensure semantic correctness in OWASP risk mapping.
- Add rules for identity abuse (
ASI03) and inter-agent communication (ASI07). - Detect sandbox escape vectors (
ASI05).
- 🟡 WARNING:
- Address breaking changes due to the removal of AT identifiers.
- 💡 SUGGESTION:
- Improve type safety and validation.
- Enhance documentation with a migration guide.
- Expand test coverage for backward compatibility and new ASI risks.
Suggested Next Steps
- Address the critical issues related to policy correctness, trust/identity, and sandbox escape vectors.
- Provide a migration guide or compatibility layer for users transitioning from AT to ASI taxonomy.
- Enhance the test suite to cover new ASI risks and backward compatibility scenarios.
- Update documentation to include detailed explanations of the taxonomy migration.
Let me know if you need further clarification or assistance!
imran-siddique
left a comment
There was a problem hiding this comment.
OWASP taxonomy migration looks good. One blocker: link-check CI is failing — please fix the broken/changed OWASP URLs in the README, then this is ready to merge.
c0da0e3 to
75616db
Compare
There was a problem hiding this comment.
🤖 AI Agent: code-reviewer
Review Summary
The pull request effectively migrates the OWASP risk catalogue from the legacy AT identifiers to the ASI 2026 taxonomy. This change is significant as it aligns the project with updated security standards. However, there are several areas that require attention regarding potential breaking changes, documentation, and security implications.
Actionable Feedback
🔴 CRITICAL Issues
- Silent Skipping of Legacy AT Inputs: The change to silently skip legacy AT inputs in tests could lead to undetected vulnerabilities if users are still using the old identifiers. It is critical to ensure that all legacy identifiers are either deprecated with clear warnings or handled explicitly to avoid security bypasses. Consider logging a warning or error when legacy identifiers are encountered.
🟡 WARNING Issues
-
Breaking Changes in API: The migration from AT to ASI identifiers means that any existing integrations relying on the old identifiers will break. This is a significant change that should be documented clearly in the release notes. Consider providing a migration guide for users to transition from AT to ASI identifiers.
-
Changes in Governance Checks: The removal of certain mappings (e.g., AT09) and the introduction of new checks could lead to discrepancies in governance assessments. Ensure that the implications of these changes are well communicated to users, as they may affect compliance with existing policies.
💡 SUGGESTION Improvements
-
Documentation Updates: While the README and other documentation have been updated, consider adding a dedicated section that explains the rationale behind the migration to ASI identifiers. This will help users understand the importance of the change and how it impacts their usage.
-
Unit Tests for New Identifiers: Ensure that there are comprehensive unit tests covering all new ASI identifiers. This will help in validating that the new mappings are functioning as intended and that no regressions have been introduced.
-
Versioning Strategy: Given the significant changes, consider adopting a versioning strategy (e.g., semantic versioning) that clearly indicates breaking changes. This will help users manage dependencies more effectively.
-
Enhanced Error Handling: Instead of silently skipping unknown IDs, consider implementing a more robust error handling mechanism that provides feedback to users about deprecated or unknown identifiers. This could include logging warnings or throwing exceptions.
-
Backward Compatibility Layer: If feasible, consider implementing a backward compatibility layer that allows users to still use the AT identifiers while transitioning to ASI. This could ease the migration process for users with existing implementations.
Conclusion
The migration to the ASI 2026 taxonomy is a positive step towards enhancing the security posture of the agent-governance toolkit. However, it is essential to address the critical issues raised to prevent potential security vulnerabilities and ensure a smooth transition for users.
- Replace all 10 OWASP_AGENTIC_RISKS entries with correct ASI01-ASI10 2026 Agentic Security Initiatives titles and descriptions - Remove legacy AT-to-ASI numeric mapping (taxonomies do not map 1:1) - Update reviewer.ts rule tags with semantic ASI mappings - Update types.ts JSDoc and README.md examples to use ASI IDs - getOwaspRisks() now skips unknown legacy ATxx inputs silently Relates to Discussion microsoft#814 (Agentic Standards Landscape) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
75616db to
3266174
Compare
There was a problem hiding this comment.
🤖 AI Agent: code-reviewer
Pull Request Review: Migration to OWASP ASI 2026 Taxonomy
Summary of Changes
This PR migrates the OWASP risk catalog from the legacy AT taxonomy to the ASI 2026 taxonomy. It updates all references in the codebase, documentation, and tests to align with the new taxonomy. The numeric mapping between AT and ASI is removed due to the lack of a 1:1 correspondence, and semantic mapping is applied where possible.
🔍 Review Feedback
🔴 CRITICAL: Security Issues
-
Incomplete Mapping of OWASP Risks in Rules
- In
reviewer.ts, some rules (e.g., "No audit logging" and "No PII redaction") have no associated OWASP risks (owaspRisks: []). - Impact: This could lead to incomplete or inaccurate reporting of security risks, as findings are not mapped to the appropriate OWASP ASI risks.
- Action: Ensure all rules are mapped to the most relevant ASI risks. For example:
- "No audit logging" could map to ASI09 (Human-Agent Trust Exploitation).
- "No PII redaction" could map to ASI06 (Memory & Context Poisoning) or ASI03 (Identity & Privilege Abuse).
- In
-
Hardcoded URLs for OWASP Risks
- The
OWASP_AGENTIC_TOP_10_2026_URL_BASEis hardcoded inowasp.ts. If the OWASP website structure changes, this could lead to broken links. - Action: Implement a mechanism to validate or update these URLs dynamically or provide a fallback mechanism to handle broken links gracefully.
- The
-
Potential for Silent Skipping of Unknown IDs
- The
getOwaspRisksfunction inowasp.tssilently skips unknown IDs. While this behavior is intentional, it could lead to missed risks if IDs are mistyped or missing. - Action: Log a warning or error when an unknown ID is encountered to aid debugging and ensure no risks are unintentionally omitted.
- The
🟡 WARNING: Potential Breaking Changes
-
Removal of Numeric Mapping
- The removal of numeric mapping between AT and ASI risks may break integrations or scripts that rely on the old identifiers.
- Action: Clearly document this breaking change in the release notes and provide a migration guide for users to update their integrations.
-
Silent Skipping of Legacy AT Identifiers
- The updated tests indicate that legacy AT identifiers are now silently skipped. This could lead to unexpected behavior for users who still rely on the old taxonomy.
- Action: Consider logging a deprecation warning when legacy AT identifiers are encountered, to inform users of the change.
💡 Suggestions for Improvement
-
Enhanced Documentation
- The updated
README.mdis comprehensive, but it would be helpful to include a section explaining the rationale for the migration to ASI 2026 and how it improves security and governance.
- The updated
-
Backward Compatibility Layer
- To ease the transition for users, consider implementing a backward compatibility layer that maps AT identifiers to their closest ASI equivalents. This mapping could be logged as a warning to encourage users to update their configurations.
-
Test Coverage
- Ensure that the updated tests cover edge cases, such as:
- Mixed usage of AT and ASI identifiers.
- Invalid or unknown risk identifiers.
- Add tests to verify that the
getOwaspRisksfunction logs warnings for unknown IDs.
- Ensure that the updated tests cover edge cases, such as:
-
Dynamic URL Generation
- Instead of hardcoding the OWASP URL base, consider generating URLs dynamically based on a configuration file or environment variable. This would make it easier to update URLs in the future.
-
TypeScript Enhancements
- The
OwaspRiskinterface could benefit from stricter typing for theidfield. For example, use a union type ("ASI01" | "ASI02" | ...) to ensure only valid ASI identifiers are used.
- The
✅ Conclusion
This PR is a significant step forward in aligning the project with the OWASP ASI 2026 taxonomy, improving its relevance and accuracy in identifying agentic security risks. However, the issues flagged above, particularly the incomplete mapping of OWASP risks and the potential for silent failures, must be addressed before merging.
Priority Actions:
- Map all rules to relevant ASI risks.
- Implement logging for unknown or skipped risk identifiers.
- Document the breaking changes and provide a migration guide.
Once these issues are resolved, the PR will be ready for approval.
- Migrate copilot-governance from legacy AT identifiers to OWASP ASI 2026 - Add backward-compatible AT→ASI lookup for existing integrations - Add comprehensive OWASP Agentic Top 10 reference architecture doc - Add standalone agent-mcp-governance Python package Supersedes: microsoft#839, microsoft#843, microsoft#844, microsoft#829 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Closing in favor of #910 which implements the AT→ASI 2026 migration with these improvements:
Thank you for identifying this migration need — it directly informed the approach in #910. |
Description
Migrates the copilot-governance OWASP risk catalogue from the legacy AT (LLM Top 10) identifiers to the canonical ASI (Agentic Security Initiatives) 2026 taxonomy. The AT and ASI taxonomies do not map 1:1 by number (e.g., AT07 was Insecure Plugin Design but ASI07 is Insecure Inter-Agent Communication), so this removes the numeric mapping entirely and updates all references semantically.
Changes
OWASP_AGENTIC_RISKSentries with correct ASI01-ASI10 titles and descriptions from the 2026 releaseType of Change
Package(s) Affected
Checklist
Related Issues
Relates to Discussion #814 (Agentic Standards Landscape - OWASP alignment)