TL; DR
@szc-ft/mcp-szcd-client ni mteja wa Itifaki ya Muktadha wa Mfano (MCP) aliyechapishwa hadi npm ambaye husanidi kiotomatiki wasaidizi wa usimbaji wa AI — aina ya kifurushi cha gundi ambacho msanidi programu husakinisha ili wakala wa IDE aweze kuzungumza na huduma ya maktaba ya vipengele. Ina historia ndefu ya kutolewa inayoonekana kama ya kawaida (Matoleo ya 71) na hatua ya usakinishaji isiyo na madhara. Hakuna kitu katika usakinishaji wake baada ya kusakinisha kinachogusa sifa.
Tabia ya kusoma sifa huishi katika tabaka moja zaidi, katika ujuzi wa MCP uliounganishwa unaoitwa local-browser-testWakati ujuzi huo connect() uendeshaji wa kawaida, huvutia _decryptCredentials() — ambayo huondoa usimbaji fiche kila nenosiri lililohifadhiwa katika wasifu wa Chrome/Edge wa ndani (tovuti zote, sio programu moja ambayo jaribio la kivinjari lingelenga) kwa kutumia API ya Ulinzi wa Data ya Windows (DPAPI) na AES-256-GCM. Seti iliyosimbwa imeandikwa kwa maandishi wazi kwa ~/.szcd-mcp/deps/decrypted-creds.json na kurejeshwa ndani ya matokeo ya zana ya MCP ya ujuzi, ambayo hutiririka hadi kwenye seva chaguo-msingi ya mbali ya MCP ya kifurushi, mcp.szcd-mcp.top.
Huu ni muundo wa mnyororo wa usambazaji unaostahili kutajwa: uwezo nyeti haupo kwenye ndoano ya kusakinisha (ambapo vichanganuzi na wakaguzi wengi huangalia) lakini katika ujuzi wa MCP ambao hutekelezwa tu wakati mwendeshaji anaelekeza kifaa kwenye kivinjari chake kinachoendesha. Tunakiita hivyo. Uvujaji wa Ujuzi. MEW huainisha @szc-ft/mcp-szcd-client (matoleo 0.38.0 na 0.39.0) kama nia mbaya.
Maelezo ya muhula — Ustadi wa MCP: kifurushi cha maagizo na hati za usaidizi zilizojitegemea ambazo seva ya MCP huziweka wazi kwa wakala wa akili bandia (AI) kama uwezo unaoweza kusikika. Wakala huzitumia kama zana; hati huendeshwa kwenye mashine ya msanidi programu.
Anatomia ya Mashambulizi
Kifurushi hiki kina nyuso mbili tofauti sana.
Uso ambao mkaguzi huona kwanza ni njia ya kusakinisha. Faili la maelezo linatangaza baada ya kusakinisha: hati za nodi/postinstall.js, na hati hiyo inafanya kile README inasema: inaunganisha waya MCP hujumuisha katika IDE na kusakinisha kifurushi cha ndugu, @szc-ft/mchoro-wa-mcp-seva. Haifikii msimbo wa kitambulisho. Kichanganuzi kinachosimama wakati wa kusakinisha hooks — mahali pa ishara ya juu zaidi kihistoria pa kutazama — pana kifaa safi na kisicho cha ajabu cha msanidi programu. Kifurushi hiki kwa kweli kilikuwa kimetathminiwa kuwa salama katika pasi ya ukaguzi wa awali.
Uso unaojali Hufikiwa tu kupitia ujuzi uliounganishwa. Mnyororo:
- Msanidi programu anaendesha jaribio la kivinjari cha ndani ujuzi dhidi ya mfano wa Chrome/Edge waliyoanza na mlango wa kurekebisha hitilafu kwa mbali. Hii ndiyo njia iliyoandikwa ya kutumia ujuzi.
- Ustadi wa unganisha() (lib/browser-engine.jssimu _kuondoa usimbaji fiche wa sifa() kwenye mstari wa 246.
- _kuondoa usimbaji fiche wa sifa() wito ondoa nenosiri lote({ kichujio: '%' }). The '%' Kichujio ni maelezo yanayobadilisha urahisi wa jaribio kuwa mavuno: yanalingana na kila asili iliyohifadhiwa badala ya eneo moja linalojaribiwa.
- lib/decrypt-passwords.js inasoma kivinjari os_crypt ufunguo uliosimbwa kwa njia fiche, unaendeshwa powershell … ProtectedData::Unprotect (DPAPI) ili kurejesha kitufe cha AES, kisha AES-256-GCM-huondoa kila kitambulisho kilichohifadhiwa.
- Seti kamili iliyosimbwa kwa njia fiche imeandikwa kwa ~/.szcd-mcp/deps/densi-creds.json katika maandishi wazi na kurudishwa kama ujuzi Zana ya MCP matokeo.
- Matokeo hayo husafiri kurudi kupitia chaneli ya MCP hadi kwenye seva chaguo-msingi ya kifurushi, mcp.szcd-mcp.top — mwenyeji yule yule aliyeandikwa katika README na katika hati/lib/common.js.
Maelezo mafupi kuhusu kwa nini hatua ya 4 inafanya kazi. Kwenye Windows, Chrome na Edge hazihifadhi manenosiri yaliyohifadhiwa katika maandishi rahisi: kila kitambulisho kimesimbwa kwa njia fiche kwa kutumia ufunguo wa AES-256-GCM, na ufunguo huo wenyewe umefungwa kwa DPAPI, ambayo huiunganisha na akaunti ya mtumiaji wa sasa. Kwa hivyo, kurejesha nenosiri kunahitaji hatua mbili - kwanza. Data Iliyolindwa::Unprotect kurejesha kitufe cha AES (ambacho hufanikiwa kwa sababu msimbo huendeshwa kama mtumiaji aliyeingia, haswa muktadha ambao kituo cha msanidi programu hutoa), kisha usimbaji fiche wa GCM wa kila blob iliyohifadhiwa inayosomwa kutoka kwa kivinjari. os_crypt-hifadhi iliyolindwa. Hii inaeleweka vizuri, nje ya mtandao, na kimya: hakuna kidokezo cha nenosiri kuu, hakuna mwingiliano wa kivinjari, hakuna safari ya kurudi kwenye mtandao hadi matokeo yatakapotumwa. Ni ile ile ambayo waibaji wengi wa habari za bidhaa hutumia - jambo jipya hapa ni kifuniko kinachoibeba tu.
Kisimbuaji cha usimbaji fiche si cha bahati mbayaImeunganishwa mara tatu — chini ya standard-ujuzi/, kiendelezi cha msimbo wazi/, na ugani wa qwen/ — nakala moja kwa kila sehemu inayoungwa mkono na msaidizi wa akili bandia, kwa hivyo uwezo husafiri na msaidizi yeyote ambaye msanidi programu ameunganisha.
Tofauti na jaribio halali la kivinjari-login ndio hadithi nzima. Msaidizi halisi wa majaribio huficha hati miliki ya moja matumizi yake ni exercising, huitumia katika mchakato, na haiendelezi au kuisambaza kamwe. Hapa utaratibu huondoa kila kitu kwenye msimbo fiche, huiandika kwenye diski katika uwazi, na kuirudisha kupitia mpaka wa mtandao hadi kwenye seva ya mbali.
Orodha ya Matukio na Kichocheo
Tabia mbili ni muhimu kwa kuelewa jinsi mtu anavyoonekana.
Kichocheo ni cha kuchagua kuingia, si kiotomatiki. Kusakinisha kifurushi hakusomi vitambulisho vyovyote. Uondoaji wa usimbaji fiche huendeshwa tu wakati msanidi programu anapoita kikamilifu jaribio la kivinjari cha ndani ujuzi dhidi ya kivinjari walichokizindua katika hali ya utatuzi wa hitilafu kwa mbali. Hilo hupunguza kwa kiasi kikubwa ni nani anayeathiriwa ikilinganishwa na baada ya kusakinisha mzigo unaofyatua risasi kila npm kufunga.
Kifungashio kimeiva, si cha kutupwa. Mchapishaji amesafirisha matoleo 71 na anadumisha upana zaidi @szc-ft seti ya MCP ya maktaba ya vipengele. Kiondoa usimbaji fiche cha sifa kipo katika matoleo yote mawili yaliyotiwa alama (0.38.0 na 0.39.0) kikiwa na alama ya kidole inayofanana, inayotokana na ile ile injini ya kivinjari.js:246 sehemu ya kuingia. Kifurushi kinaendelea kuonekana kwenye npm wakati wa kuandika.
Mchanganyiko huo — mchapishaji aliyeimarika, hatua ya usakinishaji isiyo na madhara, na uwezo unaofanya kazi tu chini ya mtiririko maalum wa kazi wa kujijumuisha — ndiyo sababu hasa kiainishaji otomatiki kilitabiri "salama" na ukaguzi wa awali ulikubali. Tabia hiyo hutatuliwa tu chini ya usomaji wa hati za usaidizi za ujuzi kwa mikono.
Viashiria vya Maelewano
| aina | Kiashiria |
|---|---|
| mfuko | @szc-ft/mcp-szcd-client (npm) — matoleo 0.38.0, 0.39.0 |
| Mtandao | Seva chaguo-msingi ya mbali ya MCP mcp.szcd-mcp.top (README.md, scripts/lib/common.js:18) |
| Faili (imeachwa) | ~/.szcd-mcp/deps/decrypted-creds.json — vitambulisho vilivyosimbwa kwa njia fiche kwa maandishi wazi |
| Faili (mzigo wa malipo) | .../local-browser-test/lib/decrypt-passwords.js — DPAPI ProtectedData::Unprotect + AES-256-GCM (imeunganishwa chini ya standard-skill/, opencode-extension/, qwen-extension/) |
| Tabia | browser-engine.js:246 _decryptCredentials() → decryptAllPasswords({ filter: '%' }) (wigo wa eneo lote) |
| Tabia | Husoma Chrome/Edge os_crypt ufunguo; inahitaji kivinjari kilichoanzishwa na --remote-debugging-port |
| Sakinisha ndoano | postinstall: node scripts/postinstall.js - benign (Usanidi wa IDE MCP + usakinishaji wa kifurushi cha ndugu); haifikii kiondoa usimbaji fiche |
Ukaguzi wa watetezi Uundaji wa zana za MCP inapaswa kutibu ujuzi saraka kama katika wigo, si hati za manifest na install pekee.
Tabia ya sifa na inayoonekana
Tunaeleza tabia, si nia.
Kifurushi hiki kimechapishwa chini ya akaunti ya npm iliyoanzishwa yenye kifurushi chenye uratibu wa aina nyingi @szc-ft Seti ya MCP na historia ndefu ya matoleo. Hakuna njia maalum ya siri ya amri na udhibiti: vitambulisho vilivyoondolewa kwenye usimbaji fiche hurejeshwa kupitia seva ya MCP iliyoandikwa ya kifurushi, mcp.szcd-mcp.top, badala ya kufikia sehemu isiyojulikana ya kushuka. Hatua ya kusakinisha ni nzuri sana.
Kinachohamisha hili kutoka "kipengele cha urahisi wa fujo" hadi uainishaji hasidi ni mchanganyiko unaoonekana wa upeo na mahali pa kufikia: ufichuzi wa kawaida zote nilihifadhi vitambulisho vya kivinjari badala ya programu moja ambayo jaribio lingetumiacise, huzisisitiza kuweka diski katika maandishi wazi, na kuzisambaza kutoka kwa mwenyeji kwenye chaneli ya MCP. Jaribio la kivinjari kiotomatiki-login Kipengele kilichofanya hivi kingekuwa kisichoweza kutofautishwa, kwa kweli, na uvunaji wa sifa — na athari hiyo ndiyo mtetezi anapaswa kuifikiria.
Tunatambua kwa uaminifu kwamba kichocheo kimechaguliwa na mchapishaji amethibitishwa; ukweli wote uko kwenye rekodi hapo juu. Hakuna kinachobadilisha matokeo yanayoonekana kwa msanidi programu anayeendesha ujuzi huo: nywila zilizohifadhiwa kwa kila tovuti kwenye wasifu wao wa kivinjari huondoka kwenye mashine.
Athari, mitindo na mwongozo wa watetezi
SkillLeak ni tukio la kifurushi kimoja, lakini sehemu ya uwasilishaji inayotumia ndiyo muhimu.
Reflexes za mnyororo wa usambazaji wa tasnia zimerekebishwa kulingana na utekelezaji wa wakati wa usakinishaji: kusakinisha mapema/baada ya kusakinisha hooks, ishara za utata wa utegemezi, herufi za makosa zenye mzigo ndani index.js. MCP hubadilisha jiometriKifurushi cha MCP kinaweza kusafirisha hatua ya manifest na usakinishaji ambayo ni safi kabisa huku ikibeba tabia yake muhimu ndani ya ujuzi — kifurushi ambacho wakala wa AI ataita baadaye, kwa maagizo ya msanidi programu mwenyewe, dhidi ya rasilimali za msanidi programu mwenyewe. Uwezo huo unaambatana na ujumuishaji wa msaidizi na hubaki bila kufanya kazi hadi mtiririko wa kazi unaoonekana wa kawaida ("endesha jaribio la kivinjari") utakapoiwasha.
Kwa timu zinazotumia zana za MCP:
- Ujuzi wa ukaguzi, si tu maonyesho. Panua ukaguzi wa kifurushi hadi ujuzi/, *-kiendelezi/, na saraka sawa. Msimbo nyeti zaidi huenda usionekane kamwe kwenye ndoano ya kusakinisha.
- Jihadhari na mfumuko wa bei wa wigo. Uwezo unaodai kusudi finyu (jaribu programu moja) lakini unafanya kazi kwa upana (kichujio: '%' juu ya asili zote zilizohifadhiwa) ni bendera nyekundu isiyotegemea nia.
- Chukulia matokeo ya zana ya MCP kama njia ya kutoka. Data inayorejeshwa kutoka kwa ujuzi humwacha seva mwenyeji kwenye seva yoyote ya MCP ambayo mteja amesanidiwa. Orodhesha maeneo hayo jinsi unavyoweza kufanya muunganisho wowote wa nje.
- Pitia upya mapungufu ya matoleo ya vifurushi vya MCP "vinavyoaminika". Mchapishaji aliyeimarika na historia ndefu ya kutolewa si mbadala wa kusoma msimbo unaosafirishwa katika kila toleo — kama kisa hiki, ambacho hubadilisha tathmini ya awali salama, kinavyoonyesha.
Kwa uhalisia, ukaguzi tatu wa gharama nafuu ungejitokeza kwenye kifurushi hiki kabla ya msanidi programu kutumia ujuzi huo. Kwanza, uchanganuzi wa maudhui ya saraka za ujuzi kwa ajili ya ufikiaji wa sifa za ndani-duka — marejeleo ya os_crypt, Data Iliyolindwa/DPAPI, au kivinjari Login Data faili — huashiria uwezo bila kujali ni ndoano gani ya usakinishaji iliyopo. Pili, ukaguzi wa wigo kwenye utaratibu wowote wa usimbaji fiche/usomaji unaokubali kiteuzi cha kadi wildcard (kichujio: '%' na sawa) badala ya kitambulisho kilichofungwa hushika mfumuko wa bei wa majaribio hadi mavuno. Tatu, kutofautisha seti ya wenyeji ambayo kifurushi kinaweza kufikia (hapa, mcp.szcd-mcp.top) dhidi ya maeneo ambayo nyaraka zake zinadai zinahitaji kugeuza njia ya matokeo ya MCP kuwa sehemu ya kutoka inayoweza kukaguliwa. Hakuna hata moja kati ya haya inayohitaji kuendesha msimbo.
Uondoaji wa usimbaji fiche kupitia DPAPI na os_crypt ni mbinu ya zamani; kuiwasilisha kupitia ujuzi wa wakala wa akili bandia unaofanya kazi tu chini ya mtiririko wa kazi wa kujijumuisha ndio kifungashio kipya. Tarajia zaidi muundo wa uwezo katika ujuzi kadri zana za MCP zinavyoongezeka, na urekebishe wigo wa ukaguzi ipasavyo.





