@panguard-ai/atr 1.3.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/content-hash.d.ts +7 -0
- package/dist/content-hash.d.ts.map +1 -0
- package/dist/content-hash.js +10 -0
- package/dist/content-hash.js.map +1 -0
- package/dist/engine.d.ts +9 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +134 -4
- package/dist/engine.js.map +1 -1
- package/dist/types.d.ts +83 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -10
- package/rules/agent-manipulation/{ATR-2026-030-cross-agent-attack.yaml → ATR-2026-00030-cross-agent-attack.yaml} +54 -52
- package/rules/agent-manipulation/{ATR-2026-032-goal-hijacking.yaml → ATR-2026-00032-goal-hijacking.yaml} +39 -37
- package/rules/agent-manipulation/{ATR-2026-074-cross-agent-privilege-escalation.yaml → ATR-2026-00074-cross-agent-privilege-escalation.yaml} +35 -33
- package/rules/agent-manipulation/{ATR-2026-076-inter-agent-message-spoofing.yaml → ATR-2026-00076-inter-agent-message-spoofing.yaml} +58 -56
- package/rules/agent-manipulation/{ATR-2026-077-human-trust-exploitation.yaml → ATR-2026-00077-human-trust-exploitation.yaml} +45 -43
- package/rules/agent-manipulation/{ATR-2026-108-consensus-sybil-attack.yaml → ATR-2026-00108-consensus-sybil-attack.yaml} +34 -32
- package/rules/agent-manipulation/ATR-2026-00116-a2a-message-validation.yaml +92 -0
- package/rules/agent-manipulation/ATR-2026-00117-agent-identity-spoofing.yaml +92 -0
- package/rules/agent-manipulation/ATR-2026-00118-approval-fatigue.yaml +89 -0
- package/rules/agent-manipulation/ATR-2026-00119-social-engineering-via-agent.yaml +89 -0
- package/rules/agent-manipulation/ATR-2026-00132-casual-authority-escalation.yaml +99 -0
- package/rules/agent-manipulation/ATR-2026-00139-casual-authority-redirect.yaml +53 -0
- package/rules/context-exfiltration/{ATR-2026-020-system-prompt-leak.yaml → ATR-2026-00020-system-prompt-leak.yaml} +54 -52
- package/rules/context-exfiltration/ATR-2026-00021-api-key-exposure.yaml +178 -0
- package/rules/context-exfiltration/{ATR-2026-075-agent-memory-manipulation.yaml → ATR-2026-00075-agent-memory-manipulation.yaml} +36 -34
- package/rules/context-exfiltration/{ATR-2026-102-disguised-analytics-exfiltration.yaml → ATR-2026-00102-disguised-analytics-exfiltration.yaml} +21 -19
- package/rules/context-exfiltration/ATR-2026-00113-credential-theft.yaml +89 -0
- package/rules/context-exfiltration/ATR-2026-00114-oauth-token-abuse.yaml +89 -0
- package/rules/context-exfiltration/ATR-2026-00115-env-var-harvesting.yaml +90 -0
- package/rules/context-exfiltration/ATR-2026-00136-tool-response-data-piggyback.yaml +100 -0
- package/rules/context-exfiltration/ATR-2026-00141-example-format-key-leak.yaml +52 -0
- package/rules/context-exfiltration/ATR-2026-00142-piggyback-transition-words.yaml +55 -0
- package/rules/context-exfiltration/ATR-2026-00145-obfuscated-key-disclosure.yaml +49 -0
- package/rules/context-exfiltration/ATR-2026-00146-env-var-existence-probe.yaml +49 -0
- package/rules/data-poisoning/{ATR-2026-070-data-poisoning.yaml → ATR-2026-00070-data-poisoning.yaml} +56 -54
- package/rules/excessive-autonomy/{ATR-2026-050-runaway-agent-loop.yaml → ATR-2026-00050-runaway-agent-loop.yaml} +42 -40
- package/rules/excessive-autonomy/{ATR-2026-051-resource-exhaustion.yaml → ATR-2026-00051-resource-exhaustion.yaml} +44 -42
- package/rules/excessive-autonomy/{ATR-2026-052-cascading-failure.yaml → ATR-2026-00052-cascading-failure.yaml} +57 -55
- package/rules/excessive-autonomy/{ATR-2026-098-unauthorized-financial-action.yaml → ATR-2026-00098-unauthorized-financial-action.yaml} +57 -55
- package/rules/excessive-autonomy/{ATR-2026-099-high-risk-tool-gate.yaml → ATR-2026-00099-high-risk-tool-gate.yaml} +73 -56
- package/rules/model-security/{ATR-2026-072-model-behavior-extraction.yaml → ATR-2026-00072-model-behavior-extraction.yaml} +37 -35
- package/rules/model-security/{ATR-2026-073-malicious-finetuning-data.yaml → ATR-2026-00073-malicious-finetuning-data.yaml} +29 -27
- package/rules/privilege-escalation/{ATR-2026-040-privilege-escalation.yaml → ATR-2026-00040-privilege-escalation.yaml} +61 -59
- package/rules/privilege-escalation/{ATR-2026-041-scope-creep.yaml → ATR-2026-00041-scope-creep.yaml} +38 -36
- package/rules/privilege-escalation/{ATR-2026-107-delayed-execution-bypass.yaml → ATR-2026-00107-delayed-execution-bypass.yaml} +21 -19
- package/rules/privilege-escalation/ATR-2026-00110-eval-injection.yaml +92 -0
- package/rules/privilege-escalation/ATR-2026-00111-shell-escape.yaml +93 -0
- package/rules/privilege-escalation/ATR-2026-00112-dynamic-import-exploitation.yaml +89 -0
- package/rules/privilege-escalation/ATR-2026-00143-casual-privilege-escalation.yaml +53 -0
- package/rules/privilege-escalation/ATR-2026-00144-rationalized-safety-bypass.yaml +49 -0
- package/rules/prompt-injection/ATR-2026-00001-direct-prompt-injection.yaml +563 -0
- package/rules/prompt-injection/{ATR-2026-002-indirect-prompt-injection.yaml → ATR-2026-00002-indirect-prompt-injection.yaml} +66 -64
- package/rules/prompt-injection/ATR-2026-00003-jailbreak-attempt.yaml +397 -0
- package/rules/prompt-injection/ATR-2026-00004-system-prompt-override.yaml +308 -0
- package/rules/prompt-injection/{ATR-2026-005-multi-turn-injection.yaml → ATR-2026-00005-multi-turn-injection.yaml} +50 -48
- package/rules/prompt-injection/{ATR-2026-080-encoding-evasion.yaml → ATR-2026-00080-encoding-evasion.yaml} +22 -13
- package/rules/prompt-injection/{ATR-2026-081-semantic-multi-turn.yaml → ATR-2026-00081-semantic-multi-turn.yaml} +24 -15
- package/rules/prompt-injection/{ATR-2026-082-fingerprint-evasion.yaml → ATR-2026-00082-fingerprint-evasion.yaml} +23 -14
- package/rules/prompt-injection/{ATR-2026-083-indirect-tool-injection.yaml → ATR-2026-00083-indirect-tool-injection.yaml} +26 -14
- package/rules/prompt-injection/{ATR-2026-084-structured-data-injection.yaml → ATR-2026-00084-structured-data-injection.yaml} +24 -15
- package/rules/prompt-injection/{ATR-2026-085-audit-evasion.yaml → ATR-2026-00085-audit-evasion.yaml} +23 -14
- package/rules/prompt-injection/{ATR-2026-086-visual-spoofing.yaml → ATR-2026-00086-visual-spoofing.yaml} +23 -14
- package/rules/prompt-injection/{ATR-2026-087-rule-probing.yaml → ATR-2026-00087-rule-probing.yaml} +23 -14
- package/rules/prompt-injection/{ATR-2026-088-adaptive-countermeasure.yaml → ATR-2026-00088-adaptive-countermeasure.yaml} +23 -14
- package/rules/prompt-injection/{ATR-2026-089-polymorphic-skill.yaml → ATR-2026-00089-polymorphic-skill.yaml} +21 -12
- package/rules/prompt-injection/{ATR-2026-090-threat-intel-exfil.yaml → ATR-2026-00090-threat-intel-exfil.yaml} +23 -14
- package/rules/prompt-injection/{ATR-2026-091-nested-payload.yaml → ATR-2026-00091-nested-payload.yaml} +23 -14
- package/rules/prompt-injection/{ATR-2026-092-consensus-poisoning.yaml → ATR-2026-00092-consensus-poisoning.yaml} +25 -16
- package/rules/prompt-injection/{ATR-2026-093-gradual-escalation.yaml → ATR-2026-00093-gradual-escalation.yaml} +24 -15
- package/rules/prompt-injection/{ATR-2026-094-audit-bypass.yaml → ATR-2026-00094-audit-bypass.yaml} +23 -14
- package/rules/prompt-injection/ATR-2026-00097-cjk-injection-patterns.yaml +339 -0
- package/rules/prompt-injection/{ATR-2026-104-persona-hijacking.yaml → ATR-2026-00104-persona-hijacking.yaml} +21 -19
- package/rules/prompt-injection/ATR-2026-00130-indirect-authority-claim.yaml +97 -0
- package/rules/prompt-injection/ATR-2026-00131-fictional-academic-framing.yaml +93 -0
- package/rules/prompt-injection/ATR-2026-00133-paraphrase-injection.yaml +111 -0
- package/rules/prompt-injection/ATR-2026-00137-authority-claim-injection.yaml +52 -0
- package/rules/prompt-injection/ATR-2026-00138-fictional-framing-bypass.yaml +51 -0
- package/rules/prompt-injection/ATR-2026-00140-indirect-reference-reversal.yaml +52 -0
- package/rules/prompt-injection/ATR-2026-00148-language-switch-injection.yaml +71 -0
- package/rules/skill-compromise/ATR-2026-00060-skill-impersonation.yaml +155 -0
- package/rules/skill-compromise/{ATR-2026-061-description-behavior-mismatch.yaml → ATR-2026-00061-description-behavior-mismatch.yaml} +24 -22
- package/rules/skill-compromise/{ATR-2026-062-hidden-capability.yaml → ATR-2026-00062-hidden-capability.yaml} +25 -23
- package/rules/skill-compromise/{ATR-2026-063-skill-chain-attack.yaml → ATR-2026-00063-skill-chain-attack.yaml} +26 -23
- package/rules/skill-compromise/{ATR-2026-064-over-permissioned-skill.yaml → ATR-2026-00064-over-permissioned-skill.yaml} +32 -30
- package/rules/skill-compromise/{ATR-2026-065-skill-update-attack.yaml → ATR-2026-00065-skill-update-attack.yaml} +25 -23
- package/rules/skill-compromise/{ATR-2026-066-parameter-injection.yaml → ATR-2026-00066-parameter-injection.yaml} +26 -24
- package/rules/skill-compromise/ATR-2026-00120-skill-instruction-injection.yaml +121 -0
- package/rules/skill-compromise/ATR-2026-00121-skill-dangerous-script.yaml +165 -0
- package/rules/skill-compromise/ATR-2026-00122-skill-weaponized-instruction.yaml +114 -0
- package/rules/skill-compromise/ATR-2026-00123-skill-overreach-permissions.yaml +118 -0
- package/rules/skill-compromise/ATR-2026-00124-skill-name-squatting.yaml +98 -0
- package/rules/skill-compromise/ATR-2026-00125-context-poisoning-compaction.yaml +93 -0
- package/rules/skill-compromise/ATR-2026-00126-skill-rug-pull-setup.yaml +99 -0
- package/rules/skill-compromise/ATR-2026-00127-subcommand-overflow.yaml +74 -0
- package/rules/skill-compromise/ATR-2026-00128-html-comment-hidden-payload.yaml +79 -0
- package/rules/skill-compromise/ATR-2026-00129-unicode-smuggling.yaml +73 -0
- package/rules/skill-compromise/ATR-2026-00134-fork-claim-impersonation.yaml +86 -0
- package/rules/skill-compromise/ATR-2026-00135-exfil-url-in-instructions.yaml +82 -0
- package/rules/skill-compromise/ATR-2026-00147-fork-impersonation.yaml +48 -0
- package/rules/tool-poisoning/{ATR-2026-010-mcp-malicious-response.yaml → ATR-2026-00010-mcp-malicious-response.yaml} +73 -71
- package/rules/tool-poisoning/{ATR-2026-011-tool-output-injection.yaml → ATR-2026-00011-tool-output-injection.yaml} +63 -52
- package/rules/tool-poisoning/{ATR-2026-012-unauthorized-tool-call.yaml → ATR-2026-00012-unauthorized-tool-call.yaml} +70 -59
- package/rules/tool-poisoning/{ATR-2026-013-tool-ssrf.yaml → ATR-2026-00013-tool-ssrf.yaml} +75 -64
- package/rules/tool-poisoning/{ATR-2026-095-supply-chain-poisoning.yaml → ATR-2026-00095-supply-chain-poisoning.yaml} +26 -14
- package/rules/tool-poisoning/{ATR-2026-096-registry-poisoning.yaml → ATR-2026-00096-registry-poisoning.yaml} +26 -14
- package/rules/tool-poisoning/{ATR-2026-100-consent-bypass-instruction.yaml → ATR-2026-00100-consent-bypass-instruction.yaml} +26 -24
- package/rules/tool-poisoning/{ATR-2026-101-trust-escalation-override.yaml → ATR-2026-00101-trust-escalation-override.yaml} +21 -19
- package/rules/tool-poisoning/{ATR-2026-103-hidden-safety-bypass-instruction.yaml → ATR-2026-00103-hidden-safety-bypass-instruction.yaml} +21 -19
- package/rules/tool-poisoning/{ATR-2026-105-silent-action-concealment.yaml → ATR-2026-00105-silent-action-concealment.yaml} +19 -17
- package/rules/tool-poisoning/{ATR-2026-106-schema-description-contradiction.yaml → ATR-2026-00106-schema-description-contradiction.yaml} +20 -18
- package/spec/atr-schema.yaml +59 -29
- package/rules/context-exfiltration/ATR-2026-021-api-key-exposure.yaml +0 -176
- package/rules/prompt-injection/ATR-2026-001-direct-prompt-injection.yaml +0 -453
- package/rules/prompt-injection/ATR-2026-003-jailbreak-attempt.yaml +0 -250
- package/rules/prompt-injection/ATR-2026-004-system-prompt-override.yaml +0 -204
- package/rules/prompt-injection/ATR-2026-097-cjk-injection-patterns.yaml +0 -180
- package/rules/skill-compromise/ATR-2026-060-skill-impersonation.yaml +0 -153
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
title: 'MCP Skill Impersonation and Supply Chain Attack'
|
|
2
|
-
id: ATR-2026-060
|
|
3
|
-
status: experimental
|
|
4
|
-
description: |
|
|
5
|
-
Detects MCP skills that impersonate trusted tools through multiple
|
|
6
|
-
attack vectors: typosquatting (misspelled tool names), version spoofing
|
|
7
|
-
(claiming to be newer versions of known tools), namespace collision
|
|
8
|
-
(similar package names with different publishers), and suspicious tool
|
|
9
|
-
name patterns that mimic legitimate skills. This goes beyond simple
|
|
10
|
-
typo detection to cover the full supply chain attack surface for
|
|
11
|
-
MCP skill registries and tool marketplaces.
|
|
12
|
-
author: 'ATR Community'
|
|
13
|
-
date: '2026/03/08'
|
|
14
|
-
schema_version: '0.1'
|
|
15
|
-
detection_tier: pattern
|
|
16
|
-
maturity: experimental
|
|
17
|
-
severity: high
|
|
18
|
-
|
|
19
|
-
references:
|
|
20
|
-
owasp_llm:
|
|
21
|
-
- 'LLM03:2025 - Supply Chain Vulnerabilities'
|
|
22
|
-
- 'LLM05:2025 - Improper Output Handling'
|
|
23
|
-
owasp_agentic:
|
|
24
|
-
- 'ASI04:2026 - Agentic Supply Chain Vulnerabilities'
|
|
25
|
-
mitre_atlas:
|
|
26
|
-
- 'AML.T0010 - ML Supply Chain Compromise'
|
|
27
|
-
mitre_attack:
|
|
28
|
-
- 'T1195 - Supply Chain Compromise'
|
|
29
|
-
|
|
30
|
-
tags:
|
|
31
|
-
category: skill-compromise
|
|
32
|
-
subcategory: skill-impersonation
|
|
33
|
-
confidence: medium
|
|
34
|
-
|
|
35
|
-
agent_source:
|
|
36
|
-
type: tool_call
|
|
37
|
-
framework:
|
|
38
|
-
- any
|
|
39
|
-
provider:
|
|
40
|
-
- any
|
|
41
|
-
|
|
42
|
-
detection:
|
|
43
|
-
conditions:
|
|
44
|
-
- field: tool_name
|
|
45
|
-
operator: regex
|
|
46
|
-
value: '(?i)(?:filesytem|filsystem|file_sytem|flie_system|filessystem|filesystm|filsystm|filesysem)[-_](?:read|write|list|delete|search)'
|
|
47
|
-
description: 'Typosquatted filesystem tool names'
|
|
48
|
-
- field: tool_name
|
|
49
|
-
operator: regex
|
|
50
|
-
value: '(?i)(?:gtihub|githbu|gihtub|gthub|g1thub|gltHub|githuub|guthub)[-_](?:api|search|commit|pr|issues?|repos?)'
|
|
51
|
-
description: 'Typosquatted GitHub tool names'
|
|
52
|
-
- field: tool_name
|
|
53
|
-
operator: regex
|
|
54
|
-
value: '(?i)(?:databse|databaes|dtabase|datbase|databasse|databasee|dataase)[-_](?:query|read|write|exec|connect)'
|
|
55
|
-
description: 'Typosquatted database tool names'
|
|
56
|
-
- field: tool_name
|
|
57
|
-
operator: regex
|
|
58
|
-
value: '(?i)(?:web[-_]?search|google[-_]?search|bing[-_]?search)[-_]?(?:v2|v3|pro|enhanced|premium|fast|turbo|plus|ultra|new)'
|
|
59
|
-
description: 'Fake enhanced versions of known search tools'
|
|
60
|
-
- field: tool_name
|
|
61
|
-
operator: regex
|
|
62
|
-
value: '(?i)(?:exec|execute|run|shell)[-_]?(?:cmd|command|script|code)[-_]?(?:safe|secure|sandbox|trusted|verified)?'
|
|
63
|
-
description: 'Shell execution tools with deceptive safety suffixes'
|
|
64
|
-
- field: tool_name
|
|
65
|
-
operator: regex
|
|
66
|
-
value: "(?i)(?:official|verified|trusted|authentic|real|original)[-_](?:filesystem|github|database|slack|aws|gcp|azure)(?![-_]tools\\b)"
|
|
67
|
-
description: 'Tools using trust-implying prefixes to impersonate legitimate tools (excludes established -tools packages)'
|
|
68
|
-
- field: tool_name
|
|
69
|
-
operator: regex
|
|
70
|
-
value: "(?i)(?:filesystem|github|database|slack|aws|gcp|azure)[-_](?:official|verified|v\\d+\\.\\d+|latest|stable|release|updated)"
|
|
71
|
-
description: 'Version spoofing with fake version or release suffixes'
|
|
72
|
-
- field: content
|
|
73
|
-
operator: regex
|
|
74
|
-
value: "(?i)(?:this\\s+(?:is\\s+)?(?:an?\\s+)?(?:updated|newer|improved|enhanced|patched|fixed)\\s+version\\s+of|replacing|supersedes|upgrade\\s+(?:from|to))\\s+(?:the\\s+)?(?:original|existing|current|old)\\s+(?:tool|skill|plugin|extension)"
|
|
75
|
-
description: 'Skill claiming to be an updated replacement for a legitimate tool'
|
|
76
|
-
- field: content
|
|
77
|
-
operator: regex
|
|
78
|
-
value: "(?i)(?:(?:same|identical|equivalent|compatible)\\s+(?:as|to|with)\\s+(?:the\\s+)?(?:official|original|standard)|(?:drop[-\\s]?in\\s+)?replacement\\s+for)\\s+[a-zA-Z_-]+"
|
|
79
|
-
description: 'Skill claiming equivalence or compatibility with known legitimate tools'
|
|
80
|
-
- field: tool_name
|
|
81
|
-
operator: regex
|
|
82
|
-
value: '(?i)(?:slakc|slck|slaack|sllack|s1ack|5lack)[-_](?:send|post|read|message|channel)'
|
|
83
|
-
description: 'Typosquatted Slack tool names'
|
|
84
|
-
- field: tool_name
|
|
85
|
-
operator: regex
|
|
86
|
-
value: '(?i)(?:opeanai|openla|open_al|openaii|0penai|openal)[-_](?:chat|complete|embed|generate)'
|
|
87
|
-
description: 'Typosquatted OpenAI tool names'
|
|
88
|
-
- field: tool_name
|
|
89
|
-
operator: regex
|
|
90
|
-
value: '(?i)(?:anthroplc|anthrop1c|anthropic_|_anthropic|anthrpoic)[-_](?:chat|complete|message|claude)'
|
|
91
|
-
description: 'Typosquatted Anthropic tool names'
|
|
92
|
-
condition: any
|
|
93
|
-
false_positives:
|
|
94
|
-
- 'Legitimate tools with similar naming conventions from verified publishers'
|
|
95
|
-
- 'Internal tools that follow company-specific naming patterns'
|
|
96
|
-
- 'Development or staging versions of tools with version suffixes'
|
|
97
|
-
|
|
98
|
-
response:
|
|
99
|
-
actions:
|
|
100
|
-
- block_tool
|
|
101
|
-
- alert
|
|
102
|
-
- snapshot
|
|
103
|
-
- escalate
|
|
104
|
-
auto_response_threshold: high
|
|
105
|
-
message_template: |
|
|
106
|
-
[ATR-2026-060] HIGH: Potential skill impersonation detected. Tool
|
|
107
|
-
name "{tool_name}" closely resembles a known legitimate tool or uses
|
|
108
|
-
deceptive naming patterns. Verify the skill publisher and source
|
|
109
|
-
before allowing execution. Session: {session_id}.
|
|
110
|
-
|
|
111
|
-
test_cases:
|
|
112
|
-
true_positives:
|
|
113
|
-
- tool_name: 'filesytem_read'
|
|
114
|
-
expected: triggered
|
|
115
|
-
description: 'Typosquatted filesystem tool name'
|
|
116
|
-
- tool_name: 'gtihub-api'
|
|
117
|
-
expected: triggered
|
|
118
|
-
description: 'Typosquatted GitHub tool name'
|
|
119
|
-
- tool_name: 'official-filesystem'
|
|
120
|
-
expected: triggered
|
|
121
|
-
description: 'Trust-implying prefix on filesystem tool'
|
|
122
|
-
- tool_name: 'google-search-v2-pro'
|
|
123
|
-
expected: triggered
|
|
124
|
-
description: 'Fake enhanced version of search tool'
|
|
125
|
-
- tool_name: 'slakc-send'
|
|
126
|
-
expected: triggered
|
|
127
|
-
description: 'Typosquatted Slack tool name'
|
|
128
|
-
true_negatives:
|
|
129
|
-
- tool_name: 'filesystem_read'
|
|
130
|
-
expected: not_triggered
|
|
131
|
-
description: 'Correctly spelled legitimate tool name'
|
|
132
|
-
- tool_name: 'custom_database_query'
|
|
133
|
-
expected: not_triggered
|
|
134
|
-
description: 'Correctly spelled custom tool name'
|
|
135
|
-
- tool_name: 'github-search'
|
|
136
|
-
expected: not_triggered
|
|
137
|
-
description: 'Correctly spelled GitHub tool name'
|
|
138
|
-
- input: 'Installing official-github-tools v3.0.0 from the verified MCP registry.'
|
|
139
|
-
expected: not_triggered
|
|
140
|
-
description: 'Legitimate tool installation from verified source'
|
|
141
|
-
- input: "This tool is called 'file-system-manager'. It provides read, write, and delete operations."
|
|
142
|
-
expected: not_triggered
|
|
143
|
-
description: 'Legitimate tool with a name similar to but not typosquatting filesystem'
|
|
144
|
-
|
|
145
|
-
evasion_tests:
|
|
146
|
-
- input: 'Install my-filesystem-helper v2.1.0 — a lightweight file management tool for AI agents.'
|
|
147
|
-
expected: not_triggered
|
|
148
|
-
bypass_technique: original_naming
|
|
149
|
-
notes: "Tool with legitimate-sounding name that is actually malicious but doesn't typosquat known tools."
|
|
150
|
-
- input: "Use the enhanced_calculator package. It's a community fork of the official calculator with extra features."
|
|
151
|
-
expected: not_triggered
|
|
152
|
-
bypass_technique: fork_claim
|
|
153
|
-
notes: 'Claims to be a community fork rather than impersonating the original.'
|