NVIDIA-მ ოფიციალურად გამოუშვა SkillSpector — უსაფრთხოების სკანერი, რომელიც სპეციალურად AI აგენტების უნარების შესამოწმებლად არის შექმნილი. ინსტრუმენტი მიზნად ისახავს მომხმარებლების დაცვას იმ საფრთხეებისგან, რომლებიც ხშირად უხილავია AI-სთან მუშაობისას.
თანამედროვე AI აგენტები, როგორიცაა Claude Code ან Codex CLI, ხშირად მუშაობენ მინიმალური შემოწმების პირობებში და აქვთ ფართო წვდომა სისტემურ რესურსებზე. კვლევის მიხედვით, აგენტების უნარების 26.1% შეიცავს სხვადასხვა სახის მოწყვლადობას, ხოლო 5.2% პირდაპირ მავნე განზრახვას ავლენს.
როგორ მუშაობს SkillSpector
| Provider (SKILLSPECTOR_PROVIDER) | Credential env var | Endpoint | Default model |
|---|---|---|---|
| openai | OPENAI_API_KEY (+ optional OPENAI_BASE_URL) | api.openai.com (or any OpenAI-compatible URL) | gpt-5.4 |
| anthropic | ANTHROPIC_API_KEY | api.anthropic.com | claude-opus-4-6 |
| nv_build | NVIDIA_INFERENCE_KEY | build.nvidia.com | deepseek-ai/deepseek-v4-flash |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| P1 | Instruction Override | HIGH | Commands to ignore safety constraints |
| P2 | Hidden Instructions | HIGH | Malicious directives in comments/invisible text |
| P3 | Exfiltration Commands | HIGH | Instructions to transmit context externally |
| P4 | Behavior Manipulation | MEDIUM | Subtle instructions altering agent decisions |
| P5 | Harmful Content | CRITICAL | Instructions that could cause physical harm |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| E1 | External Transmission | MEDIUM | Sending data to external URLs |
| E2 | Env Variable Harvesting | HIGH | Collecting API keys and secrets |
| E3 | File System Enumeration | MEDIUM | Scanning directories for sensitive files |
| E4 | Context Leakage | HIGH | Transmitting conversation context externally |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| PE1 | Excessive Permissions | LOW | Requesting access beyond stated functionality |
| PE2 | Sudo/Root Execution | MEDIUM | Invoking elevated system privileges |
| PE3 | Credential Access | HIGH | Reading SSH keys, tokens, passwords |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| SC1 | Unpinned Dependencies | LOW | No version constraints on packages |
| SC2 | External Script Fetching | HIGH | curl | bash and remote code execution |
| SC3 | Obfuscated Code | HIGH | Base64/hex encoded execution |
| SC4 | Known Vulnerable Dependencies | HIGH | Dependencies with known CVEs (live OSV.dev lookup) |
| SC5 | Abandoned Dependencies | MEDIUM | Unmaintained packages without security updates |
| SC6 | Typosquatting | HIGH | Package names similar to popular packages |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| EA1 | Unrestricted Tool Access | HIGH | Unfettered tool access without constraints |
| EA2 | Autonomous Decision Making | HIGH | High-impact decisions without human-in-the-loop |
| EA3 | Scope Creep | MEDIUM | Capabilities extending beyond stated purpose |
| EA4 | Unbounded Resource Access | MEDIUM | No rate limits or quotas on resource consumption |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| OH1 | Unvalidated Output Injection | HIGH | Model output used without sanitization |
| OH2 | Cross-Context Output | MEDIUM | Output flows across trust boundaries without validation |
| OH3 | Unbounded Output | MEDIUM | No limits on output size or generation rate |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| P6 | Direct Leakage | HIGH | Instructions that expose system prompts or internal rules |
| P7 | Indirect Extraction | MEDIUM | Extraction via rephrasing, translation, or side-channels |
| P8 | Tool-Based Exfiltration | HIGH | System prompts exfiltrated via file writes or network requests |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| MP1 | Persistent Context Injection | HIGH | Content designed to persist across interactions |
| MP2 | Context Window Stuffing | MEDIUM | Filler content displacing safety constraints |
| MP3 | Memory Manipulation | HIGH | Tampering with agent memory or stored state |
ინსტრუმენტი იყენებს ორეტაპიან ანალიზს, რათა მაქსიმალურად ზუსტად განსაზღვროს უნარის უსაფრთხოება. პირველ ეტაპზე ხდება სტატიკური ანალიზი, რომელიც 16 კატეგორიაში 64 სხვადასხვა ტიპის მოწყვლადობას ეძებს.
| ID | Pattern | Severity | Description |
|---|---|---|---|
| TM1 | Tool Parameter Abuse | HIGH | Crafted parameters for unintended behavior (shell=True, --force) |
| TM2 | Chaining Abuse | HIGH | Tool chains that bypass individual safety checks |
| TM3 | Unsafe Defaults | MEDIUM | Overly permissive defaults (disabled TLS, no auth) |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| RA1 | Self-Modification | CRITICAL | Modifying own code or configuration at runtime |
| RA2 | Session Persistence | HIGH | Unauthorized persistence via cron jobs or startup scripts |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| TR1 | Overly Broad Trigger | MEDIUM | Trigger patterns matching common words |
| TR2 | Shadow Command Trigger | HIGH | Triggers that shadow built-in commands or other skills |
| TR3 | Keyword Baiting Trigger | MEDIUM | Generic triggers designed to maximize activation |
სისტემა ამოწმებს ისეთ რისკებს, როგორიცაა:
| ID | Pattern | Severity | Description |
|---|---|---|---|
| AST1 | exec() Call | CRITICAL | Direct exec() enabling arbitrary code execution |
| AST2 | eval() Call | HIGH | Direct eval() evaluating arbitrary expressions |
| AST3 | Dynamic Import | HIGH | __import__() loading arbitrary modules at runtime |
| AST4 | subprocess Call | HIGH | External command execution via subprocess |
| AST5 | os.system / exec-family | HIGH | Shell commands via os module |
| AST6 | compile() Call | MEDIUM | Code object creation from strings |
| AST7 | Dynamic getattr() | MEDIUM | Arbitrary attribute access with non-literal names |
| AST8 | Dangerous Execution Chain | CRITICAL | exec/eval combined with dynamic source (network, encoded data) |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| TT1 | Direct Taint Flow | HIGH | Data flows directly from a source to a sink without sanitization |
| TT2 | Variable-Mediated Taint Flow | MEDIUM | Data flows from source to sink through intermediate variables |
| TT3 | Credential Exfiltration Chain | CRITICAL | Credentials (env vars, secrets) flow to network output sinks |
| TT4 | File Read to Network Exfiltration | HIGH | File contents flow to network output sinks |
| TT5 | External Input to Code Execution | CRITICAL | Network or user input flows to exec/eval/subprocess sinks |
- Prompt injection და მონაცემთა გაჟონვა
- პრივილეგიების უკანონო ამაღლება
- მიწოდების ჯაჭვის (supply chain) შეტევები
- ხელსაწყოების არასწორი გამოყენება
| ID | Pattern | Severity | Description |
|---|---|---|---|
| YR1 | Malware Match | CRITICAL | YARA rule match for known malware signatures |
| YR2 | Webshell Match | CRITICAL | YARA rule match for webshell patterns |
| YR3 | Cryptominer Match | HIGH | YARA rule match for crypto mining indicators |
| YR4 | Hack Tool / Exploit Match | HIGH | YARA rule match for hack tools or exploit code |
მეორე ეტაპზე, მომხმარებელს შეუძლია ჩართოს LLM-ზე დაფუძნებული სემანტიკური ანალიზი, რომელიც მნიშვნელოვნად ამცირებს ცრუ დადებით შედეგებს და აუმჯობესებს სიზუსტეს 87%-მდე.
| ID | Pattern | Severity | Description |
|---|---|---|---|
| LP1 | Underdeclared Capability | HIGH | Code uses capabilities not listed in declared permissions |
| LP2 | Wildcard Permission | MEDIUM | Permission list contains wildcards (*, all, full, any) |
| LP3 | Missing Permission Declaration | MEDIUM | No permissions field but code has detectable capabilities |
| LP4 | Overdeclared Permission | LOW | Permission declared but no corresponding code capability found |
| ID | Pattern | Severity | Description |
|---|---|---|---|
| TP1 | Hidden Instructions | HIGH | Hidden directives in metadata (HTML comments, zero-width chars, base64, data URIs) |
| TP2 | Unicode Deception | HIGH | Homoglyphs, RTL overrides, mixed-script identifiers in tool metadata |
| TP3 | Parameter Description Injection | MEDIUM | Injection patterns in parameter definitions (overrides, system tokens, malicious defaults) |
| TP4 | Description-Behavior Mismatch | MEDIUM | Declared tool description does not match actual code behavior (LLM-powered) |
SkillSpector მხარს უჭერს მრავალფეროვან ფორმატებს, მათ შორის Git რეპოზიტორებს, ZIP არქივებსა და ცალკეულ ფაილებს. შედეგების მიღება შესაძლებელია ტერმინალში, JSON ან SARIF ფორმატებში, რაც აადვილებს მის ინტეგრაციას დეველოპერულ პროცესებში.
რისკის შეფასება
ინსტრუმენტი ავტომატურად ანაწილებს რისკებს 0-დან 100-მდე სკალაზე. კრიტიკული ხარვეზები ქულებს 50-ით ზრდის, ხოლო მაღალი რისკის საკითხები — 25-ით. იმ შემთხვევაში, თუ უნარი შეიცავს შესრულებად სკრიპტებს, რისკის ფაქტორი 1.3-ჯერ იზრდება.
| Score | Severity | Recommendation |
|---|---|---|
| 0-20 | LOW | SAFE |
| 21-50 | MEDIUM | CAUTION |
| 51-80 | HIGH | DO NOT INSTALL |
| 81-100 | CRITICAL | DO NOT INSTALL |
გარდა ამისა, SkillSpector იყენებს OSV.dev-ის ბაზას, რათა რეალურ დროში შეამოწმოს დამოკიდებულებები ცნობილ CVE-ებზე. ეს პროცესი ავტომატურია და არ საჭიროებს API გასაღებს.
შეზღუდვები
| Variable | Description | Required |
|---|---|---|
| SKILLSPECTOR_PROVIDER | Active LLM provider: openai, anthropic, or nv_build. Each provider has its own bundled model_registry.yaml and default model (see the LLM Analysis table above). Defaults to nv_build. | Optional |
| NVIDIA_INFERENCE_KEY | Credential for the nv_build provider (build.nvidia.com). | Required for LLM analysis when SKILLSPECTOR_PROVIDER=nv_build |
| OPENAI_API_KEY | Credential for the OpenAI provider (SKILLSPECTOR_PROVIDER=openai). Also serves as the tier-2 fallback in the credential waterfall when the active provider returns no credentials. | Required for LLM analysis when SKILLSPECTOR_PROVIDER=openai |
| OPENAI_BASE_URL | Override the OpenAI endpoint (e.g. point at Ollama). | Optional |
| ANTHROPIC_API_KEY | Credential for the Anthropic provider (SKILLSPECTOR_PROVIDER=anthropic). | Required for LLM analysis when SKILLSPECTOR_PROVIDER=anthropic |
| SKILLSPECTOR_MODEL | Override the active provider's default model. See the LLM Analysis table for each provider's default. | Optional |
| SKILLSPECTOR_MODEL_REGISTRY | Override the bundled per-provider YAML registry (src/skillspector/providers/.yaml) with a custom path. | Optional |
| SKILLSPECTOR_LOG_LEVEL | Log level: DEBUG, INFO, WARNING, ERROR (default: WARNING). | Optional |
მიუხედავად ეფექტურობისა, ინსტრუმენტს აქვს გარკვეული შეზღუდვები. ის ვერ ახდენს სურათებზე დაფუძნებული შეტევების ან დაშიფრული/ბინარული კოდის ანალიზს. გარდა ამისა, ინსტრუმენტი ორიენტირებულია სტატიკურ ანალიზზე და არ ახორციელებს კოდის დინამიკურ გაშვებას.





დისკუსია
0 კომენტარი
ჯერ კომენტარი არ არის — იყავი პირველი.