feat(examples): add ATR community security rules for PolicyEvaluator#908
feat(examples): add ATR community security rules for PolicyEvaluator#908eeee2345 wants to merge 3 commits intomicrosoft:mainfrom
Conversation
Add 15 high-confidence detection rules from Agent Threat Rules (ATR) mapped to AGT's PolicyDocument format, plus a sync script for the full 108-rule set. Closes microsoft#901
🤖 AI Agent: contributor-guide — Welcome to the Microsoft Agent Governance Toolkit Community! 🎉Welcome to the Microsoft Agent Governance Toolkit Community! 🎉Hi there, and welcome! Thank you for taking the time to contribute to the project. We’re thrilled to have you here, and your pull request is a fantastic addition to the repository. 🎊 What You Did Well 🌟
Suggestions for Improvement ✨While your contribution is excellent, here are a few suggestions to align it even more closely with our project conventions and best practices:
Next Steps 🚀
Helpful Resources 📚
Thank you again for your contribution! If you have any questions or need help with the next steps, don’t hesitate to ask. We’re here to support you, and we’re excited to collaborate with you on this project! 😊 |
🤖 AI Agent: security-scanner — Security Review of Pull Request: feat(examples): add ATR community security rules for PolicyEvaluatorSecurity Review of Pull Request: feat(examples): add ATR community security rules for PolicyEvaluator1. Prompt Injection Defense BypassRating: 🔴 CRITICAL
2. Policy Engine CircumventionRating: 🟠 HIGH
3. Trust Chain WeaknessesRating: 🟡 MEDIUM
4. Credential ExposureRating: 🔴 CRITICAL
5. Sandbox EscapeRating: 🔴 CRITICAL
6. Deserialization AttacksRating: 🟠 HIGH
7. Race ConditionsRating: 🔵 LOW
8. Supply Chain RisksRating: 🔴 CRITICAL
Additional Observations
Summary of Findings
Final RecommendationThis PR introduces valuable security rules to the AGT framework, but there are critical vulnerabilities that need to be addressed before merging. The most pressing issues are the potential for prompt injection bypass, supply chain risks, and sandbox escape vulnerabilities. Addressing these concerns will significantly enhance the robustness of the AGT framework and ensure the safety of downstream users. |
There was a problem hiding this comment.
🤖 AI Agent: code-reviewer
Review Summary
This pull request introduces an example integration of the Agent Threat Rules (ATR) detection rules into the Agent Governance Toolkit (AGT). It includes a curated set of 15 high-confidence rules in atr_security_policy.yaml, a script (sync_atr_rules.py) to convert the full ATR ruleset into AGT-compatible format, and a test suite (test_atr_policy.py) to validate the integration.
The PR is well-documented and provides a clear mapping between ATR rules and AGT's PolicyEvaluator. The provided tests cover both positive and negative scenarios, ensuring that the rules work as expected. However, there are some areas that require attention, particularly around security, type safety, and potential edge cases.
🔴 CRITICAL
-
Regex Injection Vulnerability in
sync_atr_rules.py- The
_atr_to_agt_rulefunction directly embeds regex patterns from ATR rules into the AGT policy without sanitization. If an attacker injects malicious regex patterns (e.g., catastrophic backtracking), this could lead to a denial-of-service (DoS) attack during policy evaluation. - Recommendation: Validate and sanitize regex patterns before embedding them in the policy. Use libraries like
regex(with timeouts) or pre-compile patterns to detect problematic ones.
- The
-
Credential Handling in
atr_security_policy.yaml- The regex for detecting credentials (e.g., API keys, private keys) in
atr_security_policy.yamlis comprehensive but may lead to false negatives for edge cases (e.g., obfuscated keys or non-standard formats). - Recommendation: Regularly update the credential detection patterns to align with evolving formats. Consider integrating with a dedicated secret-scanning library like
truffleHogordetect-secretsfor enhanced coverage.
- The regex for detecting credentials (e.g., API keys, private keys) in
-
Privilege Escalation Detection
- The regex for privilege escalation (e.g.,
eval,child_process) inatr_security_policy.yamlis a good start but may miss obfuscated or encoded payloads (e.g., Base64-encoded commands). - Recommendation: Implement additional layers of detection for encoded or obfuscated payloads. Consider integrating with a static analysis tool or sandbox for runtime evaluation.
- The regex for privilege escalation (e.g.,
🟡 WARNING
- Backward Compatibility
- The introduction of
atr_security_policy.yamland thesync_atr_rules.pyscript does not directly modify the core AGT library. However, if users rely on the example policy or the sync script, any future changes to the ATR ruleset or the mapping logic could lead to unexpected behavior. - Recommendation: Clearly document the versioning strategy for the
atr_security_policy.yamlfile and thesync_atr_rules.pyscript. Consider adding a version compatibility check between AGT and the ATR ruleset.
- The introduction of
💡 SUGGESTIONS
-
Thread Safety in
sync_atr_rules.py- The
convert_atr_directoryfunction processes files sequentially. While this is acceptable for the current implementation, it could become a bottleneck if the number of rules increases significantly. - Recommendation: Use Python's
concurrent.futuresorasyncioto parallelize the processing of ATR rule files.
- The
-
Error Handling in
sync_atr_rules.py- The
_load_yamlfunction catches exceptions but only logs a warning. This could lead to silent failures if critical files are skipped. - Recommendation: Add an option to fail fast or log skipped files more prominently. For example, use a
--strictflag to terminate the script if any file fails to load.
- The
-
Test Coverage
- The test suite is well-structured and covers key scenarios. However, it does not test the
sync_atr_rules.pyscript or the full 108-rule conversion process. - Recommendation: Add tests for the
sync_atr_rules.pyscript to ensure that it correctly converts ATR rules to AGT format. Use a small subset of ATR rules for testing.
- The test suite is well-structured and covers key scenarios. However, it does not test the
-
Documentation
- The documentation in
README.mdis comprehensive but could benefit from a section on potential limitations or known issues with the ATR integration. - Recommendation: Add a "Limitations" section to the README to set user expectations, especially regarding the potential for false positives/negatives and the need for regular updates to the ATR ruleset.
- The documentation in
-
Logging in
sync_atr_rules.py- The script uses
printstatements for logging, which is not ideal for production-grade tools. - Recommendation: Replace
printstatements with Python'sloggingmodule to provide configurable logging levels and better integration with other systems.
- The script uses
-
Type Annotations
- While the code in
sync_atr_rules.pyincludes some type annotations, they are not comprehensive. - Recommendation: Add type annotations for all function arguments and return types to improve code clarity and maintainability.
- While the code in
-
Default Action in
atr_security_policy.yaml- The default action in
atr_security_policy.yamlis set toallow. While this is consistent with AGT's default behavior, it may not be the most secure default for a security-focused policy. - Recommendation: Consider setting the default action to
denyand explicitly allowing safe patterns. This would align better with a "default deny" security posture.
- The default action in
-
Regex Complexity
- Some regex patterns in
atr_security_policy.yamlare complex and may impact performance during evaluation. - Recommendation: Benchmark the performance of these regex patterns on large datasets. Optimize or simplify patterns where possible.
- Some regex patterns in
-
Dynamic Rule Updates
- The
sync_atr_rules.pyscript allows users to update the ATR ruleset manually. However, there is no mechanism to automatically notify users of new rules. - Recommendation: Implement a notification system or provide a CLI command to check for updates to the ATR ruleset.
- The
Final Assessment
This PR is a valuable addition to the AGT project, providing a robust set of community-driven security rules. However, the following issues should be addressed before merging:
- 🔴 Regex injection vulnerability in
sync_atr_rules.py. - 🔴 Credential detection false negatives in
atr_security_policy.yaml. - 🔴 Privilege escalation detection gaps in
atr_security_policy.yaml.
Additionally, the following improvements are recommended:
- 🟡 Document versioning and compatibility for the ATR ruleset and sync script.
- 💡 Add tests for the
sync_atr_rules.pyscript. - 💡 Improve error handling and logging in
sync_atr_rules.py. - 💡 Consider a "default deny" policy for
atr_security_policy.yaml.
Once these issues are addressed, the PR will be ready for merging.
|
@microsoft-github-policy-service agree |
imran-siddique
left a comment
There was a problem hiding this comment.
Review: CHANGES REQUESTED
Diff reviewed - 4 new files under examples/atr-community-rules/ (546 additions). Closes #901.
Security checklist:
- No eval(), exec(), pickle, shell=True, innerHTML
- yaml.safe_load used correctly (not yaml.load)
- No hardcoded secrets
- agent-threat-rules npm package verified: registered on npm since 2026-03-09, 11 versions
- Scope matches description - all files under examples/ only
- Additions > 0
Issues to fix:
-
Missing MIT license headers (required per repo policy): Both sync_atr_rules.py and test_atr_policy.py need
# Copyright (c) Microsoft Corporation.and# Licensed under the MIT License.at top. -
Missing encoding in open() - the test file has
open("...atr_security_policy.yaml")withoutencoding="utf-8". Per repo policy, all open() calls reading YAML/JSON/text must specify encoding (prevents Windows failures). -
Trailing newline - verify all new files end with a newline (ruff W292).
Content looks solid - happy to approve once fixed.
Address review feedback from @imran-siddique: - Add Microsoft MIT license headers to .py files - Add encoding='utf-8' to all open() calls - Ensure trailing newlines on all files
There was a problem hiding this comment.
🤖 AI Agent: code-reviewer
Review Summary
This pull request introduces an example integration of the Agent Threat Rules (ATR) detection rules into the Agent Governance Toolkit (AGT). The PR includes a pre-built atr_security_policy.yaml file with 15 high-confidence rules, a script to convert the full ATR ruleset (108 rules) into AGT's PolicyDocument format, and a set of pytest-based tests to validate the integration. The contribution is well-documented and aligns with the goals of enhancing the security capabilities of AGT.
Below is a detailed review of the PR, focusing on the specified areas of concern:
🔴 CRITICAL: Security Issues
-
Regex Denial-of-Service (ReDoS) Vulnerabilities
- The regex patterns in
atr_security_policy.yamlare complex and may be susceptible to ReDoS attacks. For example:value: "(?i)\\b(ignore|disregard|forget|override|bypass|skip|abandon|drop|cancel|suppress)\\s+(all\\s+)?(the\\s+|your\\s+|my\\s+|any\\s+)?(previous|prior|above|earlier|preceding|original|existing|current|initial|default)?\\s*(instructions?|prompts?|rules?|guidelines?|directives?|constraints?|context|programming|protocols?|policies|configuration|guardrails?|restrictions?)"
- This regex contains nested quantifiers (
\\s+and?) and alternations (|), which can lead to catastrophic backtracking. An attacker could craft malicious input to exploit this and cause significant performance degradation. - Actionable Recommendation: Use tools like
regex(Python's regex module) to validate and optimize these patterns for performance. Alternatively, consider simplifying the regex patterns or using non-backtracking constructs.
- This regex contains nested quantifiers (
- The regex patterns in
-
Credential Exposure Detection
- The regex for detecting credentials in
atr_security_policy.yamlincludes patterns like:value: "(?:sk-[a-zA-Z0-9]{20,}|AKIA[0-9A-Z]{16}|AIza[a-zA-Z0-9_-]{35}|ghp_[a-zA-Z0-9]{36}|xox[bpors]-[a-zA-Z0-9\\-]{10,}|-----BEGIN (?:RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----|eyJ[a-zA-Z0-9_-]{10,}\\.eyJ[a-zA-Z0-9_-]{10,}\\.[a-zA-Z0-9_-]+)"
- While this is a good start, it may not cover all possible credential formats. For example, some API keys or secrets might not match these patterns.
- Actionable Recommendation: Consider integrating with a dedicated secrets-detection library like truffleHog or detect-secrets for more comprehensive detection.
- The regex for detecting credentials in
-
Potential Sandbox Escape
- The regex for detecting privilege escalation and dynamic code execution includes patterns like:
value: "(?i)(?:eval\\s*\\(|new\\s+Function\\s*\\(|vm\\.(runIn|createContext|compileFunction)|require\\s*\\(\\s*['\"]child_process['\"]|import\\s*\\(\\s*['\"]child_process)"
- While this regex is effective for detecting common patterns, it may not cover all possible variations of dynamic code execution attempts.
- Actionable Recommendation: Regularly update these patterns based on emerging threats and consider leveraging external libraries or tools that specialize in detecting sandbox escapes.
- The regex for detecting privilege escalation and dynamic code execution includes patterns like:
🟡 WARNING: Potential Breaking Changes
-
Backward Compatibility of
sync_atr_rules.py- The
sync_atr_rules.pyscript introduces a new way to generate policy documents from ATR rules. While this is a new feature, any changes to the script's behavior or output format in the future could break existing integrations. - Actionable Recommendation: Clearly document the expected input and output formats for the script. Consider versioning the output format to ensure backward compatibility.
- The
-
PolicyEvaluator Behavior
- The addition of new rules to the
PolicyEvaluatormay result in stricter enforcement, potentially causing previously allowed inputs to be denied. - Actionable Recommendation: Clearly communicate this change in the release notes and provide guidance on how users can customize or disable specific rules if needed.
- The addition of new rules to the
💡 Suggestions for Improvement
-
Test Coverage
- The test suite covers a good range of scenarios, but it could be expanded to include:
- Edge cases for regex patterns (e.g., inputs that are close to matching but should not).
- Performance tests to ensure that the regex patterns do not introduce significant latency.
- Actionable Recommendation: Add tests for edge cases and performance benchmarks to ensure the robustness and efficiency of the rules.
- The test suite covers a good range of scenarios, but it could be expanded to include:
-
Dynamic Rule Loading
- The current implementation requires users to manually run the
sync_atr_rules.pyscript to update the rules. This could lead to outdated rules being used in production. - Actionable Recommendation: Consider adding functionality to automatically fetch and update the rules from the ATR repository at runtime or during deployment.
- The current implementation requires users to manually run the
-
Documentation
- The documentation is comprehensive, but it could benefit from additional details, such as:
- Examples of how to customize the rules (e.g., changing priorities or actions).
- Guidance on how to handle false positives or modify rules.
- Actionable Recommendation: Expand the
README.mdto include these details.
- The documentation is comprehensive, but it could benefit from additional details, such as:
-
Thread Safety
- The
PolicyEvaluatoris used in a pytest fixture and may be used in concurrent agent execution scenarios. However, there is no explicit mention of thread safety in thePolicyEvaluatorimplementation. - Actionable Recommendation: Review the
PolicyEvaluatorimplementation to ensure it is thread-safe. If it is not, document this limitation clearly.
- The
-
Error Handling in
sync_atr_rules.py- The
_load_yamlfunction currently prints warnings tostderrbut does not provide a mechanism for the user to handle these errors programmatically. - Actionable Recommendation: Consider raising exceptions for critical errors (e.g., missing or malformed files) and providing an option to suppress warnings for non-critical issues.
- The
-
Rule Prioritization
- The mapping of ATR severity levels to AGT priorities is hardcoded in
sync_atr_rules.py. - Actionable Recommendation: Allow users to customize the priority mapping via a configuration file or command-line arguments.
- The mapping of ATR severity levels to AGT priorities is hardcoded in
Summary of Feedback
- 🔴 CRITICAL: Address potential ReDoS vulnerabilities in regex patterns.
- 🔴 CRITICAL: Enhance credential exposure detection with specialized libraries or tools.
- 🔴 CRITICAL: Regularly update privilege escalation and sandbox escape detection patterns.
- 🟡 WARNING: Document the
sync_atr_rules.pyscript's input/output format and consider versioning. - 🟡 WARNING: Communicate potential breaking changes in PolicyEvaluator behavior due to stricter rules.
- 💡 SUGGESTION: Expand test coverage to include edge cases and performance benchmarks.
- 💡 SUGGESTION: Add dynamic rule-fetching capabilities to keep rules up-to-date.
- 💡 SUGGESTION: Expand documentation to include customization and false-positive handling.
- 💡 SUGGESTION: Review
PolicyEvaluatorfor thread safety in concurrent execution scenarios. - 💡 SUGGESTION: Improve error handling in
sync_atr_rules.py. - 💡 SUGGESTION: Allow customization of ATR severity-to-priority mapping.
This PR is a valuable addition to the repository and significantly enhances its security capabilities. Addressing the critical issues and implementing the suggested improvements will ensure a more robust and secure integration.
Head branch was pushed to by a user without write access
There was a problem hiding this comment.
🤖 AI Agent: code-reviewer
Code Review for feat(examples): add ATR community security rules for PolicyEvaluator
🔴 CRITICAL: Security Issues
-
Regex Injection Risk in User Input Matching
- The regex patterns used in
atr_security_policy.yaml(e.g.,(?i)\b(ignore|disregard|forget|override|bypass)...) are directly matched against user input. If the input is not sanitized or validated before evaluation, it could lead to regex injection attacks. - Recommendation: Ensure that user inputs are sanitized before being passed to the
PolicyEvaluator. Additionally, consider limiting regex complexity to avoid catastrophic backtracking.
- The regex patterns used in
-
Credential Exposure in Logs
- The
sync_atr_rules.pyscript prints warnings and errors tostderr, which may inadvertently expose sensitive information if the script processes malformed or malicious ATR rule files. - Recommendation: Sanitize all log messages to ensure no sensitive data (e.g., regex patterns, file paths) is exposed. Use structured logging with redaction for sensitive fields.
- The
-
Privilege Escalation Detection
- The rule
atr-00040-privilege-escalation-toolsmatches user input for privilege escalation attempts. However, it does not account for obfuscated or encoded commands (e.g., Base64-encoded payloads). - Recommendation: Add additional rules or preprocessing steps to decode common encoding schemes (e.g., Base64, URL encoding) before evaluation.
- The rule
-
Dynamic Code Execution Detection
- The rule
atr-00110-eval-injectionmatches patterns foreval,Function, andchild_process. However, it does not account for obfuscated or indirect references (e.g.,global['eval']). - Recommendation: Enhance the regex patterns to detect obfuscated or indirect references to dangerous functions.
- The rule
🟡 WARNING: Potential Breaking Changes
-
Backward Compatibility of PolicyEvaluator
- The addition of new rules in
atr_security_policy.yamlmay introduce breaking changes for users who rely on the default behavior of thePolicyEvaluator. For example, legitimate user inputs or tool descriptions might now be flagged as violations. - Recommendation: Clearly document the impact of these new rules on existing workflows. Provide a mechanism for users to selectively enable/disable specific rules.
- The addition of new rules in
-
Changes to PolicyDocument Schema
- The
sync_atr_rules.pyscript assumes a specific schema for ATR rules and maps them to the AGTPolicyDocumentformat. If the ATR schema changes, this could break the script. - Recommendation: Implement schema validation for ATR rule files and provide clear error messages if the schema changes.
- The
💡 Suggestions for Improvement
-
Testing Coverage
- The test suite in
test_atr_policy.pyis well-structured but could benefit from additional test cases:- Test for false positives with edge cases (e.g., inputs that resemble attack patterns but are benign).
- Test for performance under high load or with large input sizes.
- Test the
sync_atr_rules.pyscript with malformed or incomplete ATR rule files to ensure robust error handling.
- The test suite in
-
Documentation Enhancements
- The
README.mdfile inexamples/atr-community-rules/is comprehensive but could include:- A section on the potential performance impact of using 108 regex rules.
- Guidance on how to customize or extend the ruleset for specific use cases.
- A note on the importance of keeping the ATR rules up-to-date and how to automate the sync process.
- The
-
Regex Optimization
- Some regex patterns in
atr_security_policy.yamlare complex and may lead to performance issues (e.g., catastrophic backtracking). For example:value: "(?i)\\b(ignore|disregard|forget|override|bypass|skip|abandon|drop|cancel|suppress)\\s+(all\\s+)?(the\\s+|your\\s+|my\\s+|any\\s+)?(previous|prior|above|earlier|preceding|original|existing|current|initial|default)?\\s*(instructions?|prompts?|rules?|guidelines?|directives?|constraints?|context|programming|protocols?|policies|configuration|guardrails?|restrictions?)"
- Recommendation: Use simpler patterns or pre-compile regexes to improve performance. Consider using a regex library that supports timeout or complexity limits.
- Some regex patterns in
-
Thread Safety
- The
PolicyEvaluatoris not explicitly documented as thread-safe. If it is used in a multithreaded environment, there could be race conditions or shared state issues. - Recommendation: Audit the
PolicyEvaluatorimplementation for thread safety. If it is not thread-safe, document this limitation and provide guidance for safe usage.
- The
-
Sync Script Error Handling
- The
sync_atr_rules.pyscript exits withsys.exit(1)on errors (e.g., missing YAML files). This could disrupt automated pipelines. - Recommendation: Return structured error messages or codes instead of exiting abruptly. Allow the script to continue processing other files even if some fail.
- The
-
Type Annotations
- The
sync_atr_rules.pyscript uses type annotations, but some functions (e.g.,_load_yaml,_extract_regex_patterns) could benefit from more precise types. - Recommendation: Use
TypedDictordataclassesfor structured data like ATR rules and AGT policies.
- The
-
Performance Considerations
- Matching 108 regex patterns against user input or tool descriptions could impact performance, especially in high-throughput environments.
- Recommendation: Benchmark the
PolicyEvaluatorwith the full ATR ruleset under realistic workloads. Consider optimizing the matching process, such as grouping similar patterns or using a regex engine with better performance characteristics.
-
Backward Compatibility Testing
- The addition of new rules could impact existing users. There is no evidence of backward compatibility testing in the PR.
- Recommendation: Add a test suite to verify that existing workflows are not disrupted by the new rules.
Summary of Recommendations
- Critical: Address regex injection risks, log sanitization, and enhance detection for obfuscated threats.
- Warning: Document potential breaking changes and ensure backward compatibility.
- Suggestions: Improve testing coverage, optimize regex patterns, and enhance documentation.
This PR introduces valuable security features but requires additional safeguards and testing to ensure robustness and compatibility.
PR #908 安全审计报告Issue: #901 - ATR 社区检测规则集成 总结结论: 关键发现: 108 条规则(Cisco 生产使用),但有 3 个安全问题必须修复。 🔴 关键问题(必须修复)问题 #1: 供应链漏洞 🔴 CRITICAL严重性: CRITICAL 问题描述: 证据: # sync_atr_rules.py: 没有依赖锁定,没有 checksum 验证
$ npm install agent-threat-rules # 没有 package-lock.json 验证
$ python sync_atr_rules.py --atr-dir node_modules/agent-threat-rules/rules/攻击向量:
影响:
修复建议: # 1. 添加 package-lock.json 完整性检查
$ npm install agent-threat-rules
$ sha256sum node_modules/agent-threat-rules/package/integrity.json
# 2. 验证 ATR 规则签名(如果可用)
# 3. 在 README 固定版本号
npm install agent-threat-rules@1.1.1 # 明确版本
# 4. 在同步脚本添加 checksum 验证
ATR_INTEGRITY_HASH = "sha256:abc123..." # 从 ATR 官方发布获取问题 #2: Unicode/混淆绕过 🔴 CRITICAL严重性: CRITICAL 问题描述: 证据: # atr_security_policy.yaml: ATR-00001
# 原始 regex: \\b(ignore|disregard|forget|override|bypass)\\b
# 绕过示例:
"Igno re all previous instructions" # 空格拆分
"Igⲛore all previous instructions" # 希腊字母 'nu' (U+043D)
"Ig\u006eore all previous" # Unicode 转义
"Igno|re all previous" # 管道注入攻击向量:
影响:
修复建议: # 1. 在 Regex 匹配前添加 Unicode 标准化
import unicodedata
def normalize_input(text: str) -> str:
"""NFKC 标准化 + 同形字检测"""
normalized = unicodedata.normalize('NFKC', text)
# TODO: 添加同形字检测
return normalized问题 #3: 缺少恶意规则防护 🟠 HIGH严重性: HIGH 问题描述: 证据: # sync_atr_rules.py:88
def _atr_to_agt_rule(atr: dict[str, Any], pattern: str, index: int) -> dict[str, Any]:
return {
"action": "deny", # ← 硬编码,但没有验证!
}攻击向量:
修复建议: # 在同步脚本添加验证
ALLOWED_ACTIONS = {"deny"} # 只允许 deny 规则
def _atr_to_agt_rule(atr: dict[str, Any], pattern: str, index: int) -> dict[str, Any]:
atr_action = atr.get("action", "deny")
if atr_action not in ALLOWED_ACTIONS:
raise ValueError(f"不安全的 ATR 规则操作: {atr_action}")✅ 优点1. 外部验证 ✅
2. 架构 ✅
3. 文档 ✅
4. 代码质量 ✅
🎯 建议合并前(必须):
合并后(建议):
结论决策: 条件:
修复时间: 预计 2-3 小时 下一步:
审计日期: 2026-04-10 |
Add ATR community security rules for PolicyEvaluator
Closes #901
What this PR does
Adds an example integration of Agent Threat Rules (ATR) detection rules as a PolicyDocument for AGT's PolicyEvaluator. This gives AGT users access to a community-maintained, continuously-updated set of AI agent security detection patterns.
Files added (all under
examples/atr-community-rules/):atr_security_policy.yamlsync_atr_rules.pytest_atr_policy.pyREADME.mdWhy ATR?
ATR is an open-source detection standard purpose-built for AI agent threats. It complements AGT's existing sample patterns in
prompt_injection.py(~43 patterns) andmcp_security.py(~39 patterns) with battle-tested rules developed from real-world attack campaigns:How it maps to AGT architecture
Per @imran-siddique's guidance in #901, the rules map directly to PolicyEvaluator's existing
operator: matches(which callsre.search()):The 15 curated rules cover the highest-impact threat categories:
Sync script for the full ruleset
The
sync_atr_rules.pyscript converts all 108 ATR rules to AGT format in one command:ATR includes a community-driven threat intelligence pipeline (Threat Cloud) that crystallizes new detection patterns from novel threats. As new rules are published, the sync script can pull updates.
Testing
Tests verify:
<|im_start|>system...) -> deniedLinks
agent-threat-rules(108 rules, MIT license)