AUTOMATA.SALE Системы привлечения заказов
Связаться

NVIDIA SkillSpector: өзімнің 41 AI-агент скиллимді сканерледім, шынында не табылды

Бұл бейімделген нұсқа. Түпнұсқа (орысша): automata.sale/blog/ai-automation/skillspector-bezopasnost-ai-skilllov/

NVIDIA SkillSpector: өзімнің 41 AI-агент скиллимді сканерледім, шынында не табылды

Скилдер AI-агенттерді кеңейтудің басты жолына айналды: Claude Code, Codex CLI және Gemini CLI-де скил — агент өзінің операциялық жүйесіндей оқитын нұсқаулар мен скрипттер каталогы. Мұндай каталог бір командамен орнатылады және онымен бірге сіздің файлдарыңызға, репозиторийлеріңізге, клиенттер базасына және API-ключтерге қол жеткізетін бөтен код келеді.

NVIDIA мұны классикалық жеткізу тізбегі мәселесі ретінде қарастырып, SkillSpector-ді ашық кодпен шығарды — «мұны орнатуға бола ма?» деген бір сұраққа жауап беретін қауіпсіздік сканері. Мен оны орнатып, барлық 41 өз скиллімнен өткіздім. Шынында не табылды — осы туралы әңгіме. Спойлер: ең айқайлы нәрселердің барлығына жақыны жалған дабылдар болып шықты, бірақ сканер бір нағыз мәселені ұстады.

Скил сканері неге керек

NVIDIA README-інде сілтенетін зерттеудің бастапқы сандары: 42 447 скилдің деректер жиынынан 31 132-і талданды және 26,1%-ында осалдықтар, 5,2%-ында ықтимал зиянды ниет белгілері табылды. Орындалатын скрипттері бар скилдер 2,12 есе жиі осал.

Агентті автоматтандыруды енгізіп жатқан бизнес үшін бұл әлі көп ойланбайтын, мүлде жаңа шабуыл беті. Біз package.json-дағы пакеттерді белгілі CVE-лер бойынша тексеруді және интернеттен кездейсоқ скрипттер жүгізбеуді ерте үйрендік. Бірақ скил — гибрид: жартылай модельге арналған құжаттама (prompt injection, агент жадысын уландыру, бас тартуды елемеу жасырын нұсқаулары), жартылай код (деректер эксфильтрациясы, привилегияларды көтеру, supply chain). Қарапайым антивирус екінші жартысын көреді, алғашқысына соқыр.

SkillSpector екеуін де жабады. Бұл 17 санаттағы 71 үлгілі статикалық талдаушы: prompt injection, деректер эксфильтрациясы, привилегияларды көтеру, жүйелік промптты ашу, жадыны уландыру, агенттің шектен тыс дербестігі, MCP-серверлердің «rug pull» мінез-құлқы (сервердің орнатқаннан кейін құрал сипаттамаларын өзгертуі), YARA малварь сигнатуралары және деректер ағынын қадағалайтын AST-талдау. Оған қоса, тәуелділіктер OSV.dev арқылы белгілі CVE-лер бойынша тексеріледі.

Шектерін түсініп алыңыз: сканер скилді орындамайды — бұл defense-in-depth, sandbox емес. Ол тек рантаймде көрінетін мінез-құлықты ұстамайды және суреттер мен обфускацияланған байткодты оқи алмайды. Бірақ адамның орнату кезінде ешқашан қарамайтын нәрселерді ұстайды.

Тексеру қалай көрінеді

Орнату uv арқылы, бір командамен, жүйені ластамай:

uv tool install git+https://github.com/NVIDIA/skillspector.git

Бөтен скилді орнату алдында тексеру:

skillspector scan https://github.com/user/some-skill --no-llm

Сканер 0-ден 100-ге дейінгі тәуекел балын шығарады (LOW / CAUTION / HIGH / CRITICAL) және, ең маңыздысы, return code: 0 — орнатуға болады, 1 — тәуекел 50-ден жоғары, 2 — сканерлеу қатесі. Бұл CI мен орнату скрипттеріне арналған тұрақты келісімшарт: скилді тексеру пакет қолтаңбасын тексеру сияқты дәстүрлі қадамға айналады. Есеп JSON, Markdown немесе SARIF форматында шығады.

--no-llm жалаушасы барлық талдауды жергілікті ұстайды: сыртқа тек CVE тексеру үшін тәуелділік атаулары кетеді. Қосымша LLM режимі (семантикалық бағалау) файл мазмұнын провайдерге жібереді — клиенттік жобалар үшін оны қоспаймыз.

Эксперимент: сканердегі 41 скил

~/.agents/skills/ қалтамда 41 скил бар — SEO-құралдардан CRM автоматтандыруларына дейін. Кейбірі қолмен жазылған, кейбірі жұмыс сессияларынан өсті. Калибрацияға мінсіз жиын: онда малварь жоқ екеніне сенімдімін.

Нәтиже: 11 скил DO_NOT_INSTALL вердиктімен максималды 100/CRITICAL алды. Егер бұл бөтен скилдер болса, мен оларды орнатпас едім. Не триггер болғанын талдаймын — сканердегі ең ғибратты жер осы.

Қауіпсіздік туралы скил өз-өзіне сәйкес келеді. senior-security — құпиялардың ағуын ізейтін скил. Оның .env файлдары мен токендерге арналған өз регекстері сканерде «кредиттіалдарға қол жеткізу» ретінде танылды: 20 Privilege Escalation. Анықтамасы бойынша жалған дабыл, өйткені анықтау құралы ұстайтын нәрсенің сигнатураларын қамтиды. Қауіпті код мысалдары бар code-reviewerмен де солай.

Жергілікті dev-құрал SSRF ретінде оқылады. Браузердегі тікелей алдын ала қарауы бар impeccable скилі fetch('http://localhost…') жасайды — 12 Server-Side Request Forgery. Әзірлеуші құралы үшін бұл қалыпты мінез-құлық; localhost-пен жұмыс істеуге тиіс емес скилде алаңдатарлық болар еді.

YARA ережесі YAML-ға әсер етті. md-slides скилі «MCP metadata poisoning» сигнатурасын… tools: және description: өрістері бар қарапайым YAML frontmatter-ден алды. Сигнатуралық талдаудың классикасы: зиянсыз белгілердің комбинациясы күдікті көрінеді.

Бекітілмеген нұсқа — әділ ескерту. senior-qa нұсқасы бекітілмеген npx playwright үшін 20 «MCP server referenced without pinned version» алды. Формальды түрде бұл шабуыл емес, бірақ rug-pull тәуекелі: npx бүгін не тартады және ертең не тартады — екеуі басқа болуы мүмкін. Бұл түзетуге тұратын гигиена.

Сканер не нағыз ұстады

Бір табылған жалған болмады. Жеті скил өздерімен компиляцияланған .pyc файлдары бар __pycache__ қалталарын алып жүрді — Python скрипттер жүрген кезде оларды өзі жасайды және олар репозиторийлерге кездейсоқ түскен.

Дәл осы туралы сканер ескертеді: компиляцияланған байткодты стандартты талдау өткізіп жібереді және бұл жүктемені жасырудың классикалық орны — таза .py файлының қасындағы зиянды .pyc адамды да, кейбір құралдарды да көрінбейді. Қаншаларды жойдым (келесі жүгізуде қайта жасалады), әрі тазара түсті.

Эксперименттің қорытындысы екіжақты. Бір жағынан — CRITICAL көріп дүрлікпеңіз: вердиктке емес, дәлелдерге қараңыз (файл, жол, сәйкес келген үлгі). Екінші жағынан — өз қолыммен жазылған скилдерде де сканер тазартуға тұратын нәрсе тапты. Интернеттегі бөтен скилдерде NVIDIA деректері бойынша нағыз мәселелердің тығыздығы пайыз шамасында, ал тексеру салдарымен жұмыс істеуден әлдеқайда арзан.

Үдеріске қалай енгіземін

Өзім үшін үш ережені бекіттім, «енді мұнымен не істеу керек» сұрағына жауап осылар:

Бөтен скилдер — тек сканер арқылы. Орнату алдында бір команда, гейт ретінде return code. Балл 50-ден жоғары болса — дәлелдері бар JSON есебін оқып, саналы түрде шешемін. Бірнеше секунд алады.

Өз скилдері — кезең-кезеңімен аудит. Айына бір рет бүкіл каталогты сканерлеу: __pycache__ сияқты қоқыс та, дрейф те ұсталады (скилге уақыт өте аргументтерінде токені бар curl қосылған күн — деректер эксфильтрациясының нағыз үлгісі).

Жалған дабылдар — baseline арқылы, өшіру арқылы емес. Сканерде қабылданған жалған дабылдарды басу механизмі бар (baseline-файл). «Неге жарайды» түсіндірмесімен нақты табылғандарды басу — дұрыс жол; сканерді түгелдей өшіру — жоқ.

Егер сіз бизнес-үдерістерге AI-агенттерді енгізіп жатсаңыз — әсіресе CRM-ге, клиенттер базасына немесе серверлерге қол жеткізуімен — әдепкі бойынша қауіпсіз архитектураны талқылайық: агенттерге шектеулі мандаттардан бастап бүкіл жеткізу тізбегін тексеруге дейін. Маған Telegram-да жазыңыз.


📞 +7 (906) 311-77-69 · ✉ hello@automata.sale · 💬 Telegram: @automatasale · 🌐 automata.sale

ИП Урядов Евгений Евгеньевич · ИНН 645112058391 · ОГРНИП 312645301900058 Ресей, Беларусь және Қазақстан бойынша жұмыс істейміз