استفاده از Skills در ابزارهای هوش مصنوعی مثل Claude Code، Codex و سایر AI Agentها بهسرعت در حال گسترش است.
Skills میتوانند کارهای تکراری را خودکار کنند، استانداردهای یک پروژه را به مدل یاد بدهند و حتی ابزارها، فایلها و اسکریپتهای جانبی را در اختیار Agent قرار دهند.
اما همین قدرت یک خطر امنیتی مهم هم ایجاد میکند: اگر Skill ناشناس یا مخربی را بدون بررسی روی سیستم خود اجرا کنید، ممکن است همان Skill از دسترسی Agent برای خواندن فایلها، اجرای دستورها یا ارسال اطلاعات به سرویسهای خارجی سوءاستفاده کند.
اینجاست که ابزار متنباز SkillSpector از NVIDIA وارد میشود.
در این مقاله از معین گیفت بررسی میکنیم Skillهای هوش مصنوعی چه خطراتی دارند، SkillSpector چگونه آنها را قبل از نصب بررسی میکند و چطور میتوانید یک Skill ناشناس را قبل از دادن دسترسی به پروژه اصلی خود اسکن کنید.
چرا Skills میتوانند خطرناک باشند؟
یک Skill فقط چند خط Prompt ساده نیست.
بسته به پلتفرم، یک Skill میتواند شامل موارد زیر باشد:
- دستورالعملهای متنی
- فایلهای Markdown
- اسکریپتهای Python یا JavaScript
- دستورهای Shell
- وابستگیهای نرمافزاری
- فایلهای پیکربندی
- دسترسی به Toolها
- اتصال به سرویسهای خارجی
اگر سازنده Skill قابل اعتماد نباشد، میتواند رفتاری داخل آن قرار دهد که با توضیح ظاهری Skill همخوانی نداشته باشد.
مثلاً یک Skill ممکن است خودش را بهعنوان ابزار «بررسی کد» معرفی کند، اما در کنار آن تلاش کند فایلهای حساس سیستم را نیز بخواند.
سناریوی خطرناک چیست؟
فرض کنید یک Skill رایگان را از اینترنت دانلود کردهاید و آن را داخل محیطی مثل Claude Code یا یک Agent برنامهنویسی نصب میکنید.
Agent شما ممکن است به پروژهای دسترسی داشته باشد که فایلهایی مانند اینها داخل آن وجود دارند:
.env
.env.production
config.json
credentials.json
secrets.yaml
id_rsa
npmrc
docker-compose.yml
این فایلها ممکن است شامل اطلاعات حساسی مانند:
- API Key
- Database Password
- Access Token
- SSH Key
- Cloud Credentials
- Webhook Secret
باشند.
اگر Skill دارای دستور مخرب یا کد غیرمنتظره باشد، ممکن است سعی کند چنین اطلاعاتی را بخواند یا از سیستم خارج کند.
به این نوع حمله در امنیت معمولاً Data Exfiltration گفته میشود.
فقط فایل SKILL.md خطرناک نیست
یکی از اشتباهات رایج این است که کاربر فقط فایل اصلی Skill را باز کند و اگر متن مشکوکی ندید، آن را امن فرض کند.
اما یک Skill میتواند فایلها و وابستگیهای دیگری هم داشته باشد.
NVIDIA در مستندات SkillSpector توضیح میدهد که Skillها ممکن است شامل Metadata پنهان، دسترسیهای بیش از حد، کد اجرایی یا رفتاری باشند که با توضیح Skill همخوانی ندارد.
بنابراین بررسی دستی یک فایل بهتنهایی همیشه کافی نیست.
SkillSpector چیست؟
SkillSpector یک ابزار امنیتی متنباز از NVIDIA است که برای بررسی AI Agent Skills قبل از نصب طراحی شده است.
این ابزار میتواند ورودیهای مختلفی را بررسی کند:
- Git Repository
- URL
- ZIP File
- پوشه Skill
- فایل تکی مثل SKILL.md
در نتیجه حتی لازم نیست Skill را کامل داخل پروژه اصلی خود نصب کنید تا بتوانید آن را بررسی کنید.
مشاهده SkillSpector در GitHub →
SkillSpector چه چیزهایی را بررسی میکند؟
طبق مستندات رسمی NVIDIA، SkillSpector دهها الگوی آسیبپذیری را در چندین دسته امنیتی بررسی میکند.
مهمترین موارد عبارتاند از:
- Prompt Injection
- Data Exfiltration
- Privilege Escalation
- Supply Chain Risk
- Excessive Agency
- System Prompt Leakage
- Memory Poisoning
- Tool Misuse
- Rogue Agent Behavior
- Dangerous Code Patterns
- Taint Tracking
- YARA Signatures
- MCP Least Privilege
- MCP Tool Poisoning
همچنین SkillSpector میتواند از سرویس OSV.dev برای بررسی آسیبپذیریهای شناختهشده در Dependencyها استفاده کند.
Data Exfiltration دقیقاً یعنی چه؟
Data Exfiltration زمانی اتفاق میافتد که اطلاعات حساس بدون اجازه کاربر از سیستم خارج شوند.
برای یک AI Agent، این موضوع اهمیت بیشتری پیدا میکند؛ چون Agent ممکن است به فایلهای پروژه، Shell، ابزارهای توسعه یا حتی سرویسهای خارجی دسترسی داشته باشد.
مثلاً یک Skill میتواند از Agent بخواهد اطلاعاتی را از محیط بخواند و سپس آن را به یک Endpoint خارجی ارسال کند.
SkillSpector برای پیدا کردن نشانههایی از همین نوع رفتار طراحی شده است.
Prompt Injection داخل Skill هم ممکن است
Prompt Injection فقط مختص وبسایتها یا فایلهایی نیست که Agent مطالعه میکند.
خود Skill نیز میتواند شامل دستوراتی باشد که تلاش میکنند قوانین اصلی Agent را تغییر دهند.
برای مثال ممکن است Skill دستورهایی داشته باشد که سعی کنند:
- محدودیتهای قبلی را نادیده بگیرند.
- دسترسی بیشتری درخواست کنند.
- دستورهای مخفی را اجرا کنند.
- اطلاعات داخلی Agent را استخراج کنند.
SkillSpector این نوع الگوهای مشکوک را نیز بررسی میکند.
SkillSpector چگونه کار میکند؟
فرآیند تحلیل این ابزار بهطور کلی دو مرحله دارد.
مرحله اول: Static Analysis
در این حالت SkillSpector بدون اجرای واقعی Skill، فایلها و کد آن را بررسی میکند.
این مرحله میتواند مواردی مانند:
- رشتههای مشکوک
- APIهای خطرناک
- Dependencyهای آسیبپذیر
- Permissionهای نامتناسب
- دستورهای مشکوک Shell
را شناسایی کند.
مزیت Static Analysis این است که سریع و قابل تکرار است و برای اولین بررسی Skill گزینه مناسبی محسوب میشود.
مرحله دوم: Semantic Analysis با LLM
در صورت فعالسازی، SkillSpector میتواند از یک مدل زبانی برای تحلیل معنایی Skill نیز استفاده کند.
در این حالت ابزار بررسی میکند که:
آیا کاری که کد Skill انجام میدهد با چیزی که سازنده درباره Skill ادعا کرده همخوانی دارد؟
برای مثال ممکن است توضیح Skill فقط از «مرتب کردن فایلها» صحبت کند، اما کد تلاش کند ارتباط شبکهای غیرمرتبط ایجاد کند.
Semantic Analysis میتواند برای پیدا کردن چنین اختلافهایی مفید باشد.
نصب SkillSpector
طبق راهنمای رسمی NVIDIA میتوانید Repository ابزار را از GitHub دریافت کنید:
git clone https://github.com/NVIDIA/SkillSpector.git
cd SkillSpector
سپس بهتر است یک Virtual Environment جداگانه ایجاد کنید.
اگر uv نصب دارید:
uv venv .venv
source .venv/bin/activate
make install
یا با ابزار استاندارد Python:
python3 -m venv .venv
source .venv/bin/activate
make install
بهتر است ابزارهای امنیتی را نیز مانند سایر پروژهها داخل محیط ایزوله نصب کنید و مستقیماً روی Python اصلی سیستم وابستگیهای متعدد نصب نکنید.
چطور یک Skill را اسکن کنیم؟
برای اسکن یک پوشه Skill:
skillspector scan ./my-skill/
برای بررسی فقط یک فایل SKILL.md:
skillspector scan ./SKILL.md
حتی میتوانید یک Git Repository را مستقیماً برای بررسی به ابزار بدهید:
skillspector scan https://github.com/user/my-skill
یا فایل ZIP را بررسی کنید:
skillspector scan ./my-skill.zip
اسکن بدون استفاده از LLM
اگر نمیخواهید هیچ اطلاعاتی برای Semantic Analysis به مدل خارجی ارسال شود، میتوانید SkillSpector را فقط در حالت Static اجرا کنید:
skillspector scan ./my-skill/ --no-llm
این حالت مخصوصاً برای فایلهای حساس یا محیطهایی که محدودیت شبکه دارند مناسب است.
گزارش خروجی SkillSpector
SkillSpector میتواند خروجی را در چند فرمت مختلف تولید کند.
برای مشاهده مستقیم داخل Terminal:
skillspector scan ./my-skill/
برای ذخیره گزارش JSON:
skillspector scan ./my-skill/ \
--format json \
--output report.json
برای گزارش Markdown:
skillspector scan ./my-skill/ \
--format markdown \
--output report.md
و برای CI/CD یا Code Scanning:
skillspector scan ./my-skill/ \
--format sarif \
--output report.sarif
Risk Score را چطور بخوانیم؟
SkillSpector یافتههای امنیتی را همراه با Severity و Risk Score گزارش میکند.
بهطور کلی اگر گزارشی شامل موارد High یا Critical باشد، نباید Skill را بدون بررسی دقیق وارد محیط اصلی کنید.
خود NVIDIA نیز در راهنمای Triage پیشنهاد میکند مشکلات Critical و High قبل از انتشار یا استفاده مسدود و بررسی شوند.
نکته مهم این است که Score پایین هم تضمین ۱۰۰ درصدی امنیت نیست.
نتیجه Clean به معنی امنیت کامل نیست
هیچ Scanner امنیتی نمیتواند تضمین کند که یک Skill کاملاً امن است.
SkillSpector میتواند بخش بزرگی از الگوهای شناختهشده و رفتارهای مشکوک را پیدا کند، اما همچنان ممکن است:
- False Positive داشته باشد.
- رفتار جدیدی را شناسایی نکند.
- آسیبپذیری فقط هنگام Runtime ظاهر شود.
- Dependency بعداً آلوده شود.
بنابراین اسکن امنیتی باید یکی از مراحل بررسی باشد، نه تنها مرحله.
خطر Supply Chain در Skills
Skills در عمل بخشی از زنجیره تأمین نرمافزار هستند.
ممکن است خود SKILL.md سالم باشد، اما Dependency یا Package دیگری که Skill نصب میکند مشکل داشته باشد.
این همان چیزی است که در حملات Software Supply Chain اهمیت زیادی دارد.
به همین دلیل NVIDIA در SkillSpector علاوه بر محتوای Skill، Dependencyها و رفتارهای مرتبط با Supply Chain را نیز بررسی میکند.
آمار NVIDIA درباره Skillهای آسیبپذیر
در توضیحات پروژه SkillSpector، NVIDIA اشاره کرده که در زیرمجموعهای شامل بیش از ۳۱ هزار Skill از دادههای تحقیقاتی بررسیشده، درصد قابل توجهی دارای Vulnerability بودهاند و بخشی از آنها نشانههایی از رفتار احتمالاً مخرب داشتهاند.
این آمار نشان میدهد نصب Skillهای ناشناس بدون بررسی صرفاً یک ریسک تئوری نیست.
Claude Code و Codex چرا بیشتر در معرض این ریسک هستند؟
Agentهای برنامهنویسی معمولاً دسترسی بیشتری نسبت به یک Chatbot ساده دارند.
بسته به تنظیمات، یک Coding Agent ممکن است بتواند:
- فایل بخواند.
- فایل ایجاد یا ویرایش کند.
- دستور Terminal اجرا کند.
- پکیج نصب کند.
- Git Repository را تغییر دهد.
- به Network دسترسی داشته باشد.
همین قدرت باعث میشود Skillهای ناشناس برای محیطهای Agentic حساستر از یک Prompt عادی باشند.
قبل از نصب هر Skill این Checklist را انجام دهید
برای کاهش ریسک، بهتر است قبل از نصب Skillهای Community این مراحل را طی کنید:
- Repository سازنده را بررسی کنید.
- فایل SKILL.md را دستی بخوانید.
- اسکریپتهای همراه Skill را بررسی کنید.
- Dependencyهای آن را چک کنید.
- Skill را با SkillSpector اسکن کنید.
- Permissionهای درخواستی را بررسی کنید.
- ابتدا آن را در یک محیط Sandbox یا پروژه آزمایشی اجرا کنید.
- Secretهای واقعی را داخل محیط آزمایشی قرار ندهید.
فایل .env را در اختیار Agent قرار ندهید
یکی از سادهترین اقدامات امنیتی این است که فایلهای Secret را تا جای ممکن خارج از دسترس Agent نگه دارید.
بهجای قرار دادن API Keyهای Production در محیط توسعه آزمایشی، از کلیدهای محدود و قابل لغو استفاده کنید.
همچنین اصل Least Privilege را رعایت کنید:
Agent فقط باید به اطلاعات و ابزارهایی دسترسی داشته باشد که واقعاً برای انجام وظیفه به آنها نیاز دارد.
برای Production دسترسی شبکه را هم محدود کنید
حتی اگر Skill بتواند یک Secret را بخواند، محدود بودن Network Access میتواند جلوی بخشی از سناریوهای Data Exfiltration را بگیرد.
در محیطهای حساس بهتر است Agentها داخل Container، Sandbox یا محیطهای محدود اجرا شوند.
همچنین Domainهای خارجی و دسترسیهای شبکه غیرضروری را محدود کنید.
SkillSpector بخشی از NVIDIA Verified Skills است
NVIDIA از SkillSpector بهعنوان لایه امنیتی در فرآیند بزرگتری برای بررسی Agent Skills استفاده میکند.
این Pipeline علاوه بر امنیت بررسی میکند که:
- Skill از نظر ساختاری صحیح باشد.
- رفتار آن با توضیحاتش همخوانی داشته باشد.
- Skill واقعاً کیفیت خروجی Agent را بهتر کند.
به همین دلیل SkillSpector فقط یک Regex Scanner ساده نیست و بهعنوان بخشی از یک سیستم Trust برای Agent Skills توسعه داده شده است.
مشاهده مستندات رسمی NVIDIA SkillSpector →
آیا استفاده از Skillهای رایگان خطرناک است؟
خیر، رایگان بودن یک Skill بهخودیخود نشانه خطرناک بودن آن نیست.
Skillهای متنباز بسیار مفیدی وجود دارند.
مسئله اصلی اعتماد کورکورانه است.
همانطور که نباید یک فایل اجرایی ناشناس را بدون بررسی روی سرور Production اجرا کنید، یک Skill ناشناس را هم نباید فقط به دلیل داشتن چند ستاره در GitHub مستقیماً در محیط اصلی نصب کنید.
جمعبندی
Skills یکی از مهمترین ابزارهای نسل جدید AI Agentها هستند و میتوانند Claude Code، Codex و سایر Agentها را بسیار قدرتمندتر کنند.
اما هرچه Agent دسترسی بیشتری به فایلها، Terminal، APIها و سیستم داشته باشد، اهمیت بررسی Skillها نیز بیشتر میشود.
ابزار متنباز SkillSpector از NVIDIA به شما کمک میکند قبل از نصب یک Skill، نشانههای Prompt Injection، Data Exfiltration، کدهای خطرناک، دسترسیهای بیش از حد و ریسکهای Supply Chain را پیدا کنید.
قانون سادهای که بهتر است همیشه به خاطر داشته باشید:
هیچ Skill ناشناسی را قبل از خواندن، اسکن کردن و تست در محیط محدود به Agent اصلی خود ندهید.
مخصوصاً اگر Agent به پروژه Production، فایلهای .env، کلیدهای API یا زیرساخت واقعی شما دسترسی دارد.
دانلود SkillSpector از GitHub →
امنیت ابزارهای هوش مصنوعی در معین گیفت
در معین گیفت علاوه بر معرفی ChatGPT، Claude، Codex و ابزارهای Agentic، نکات امنیتی استفاده از آنها را نیز بررسی میکنیم؛ چون هرچه هوش مصنوعی دسترسی بیشتری به سیستمهای واقعی پیدا میکند، امنیت Promptها، Skills، Plugins و ابزارهای متصل نیز اهمیت بیشتری پیدا خواهد کرد.