VDB
GCVE-110-OSM-2026-12759
GCVE-110-OSM-2026-12759
Advisory PublishedCVSS 8.8/10
package.json declares `"libsignal": "github:tenka-san/libsignal-node"` — an off-registry dependency source pointing at a personal-user GitHub repository with no commit SHA, no tag, and no integrity check. On `npm install`, npm clones the current tip of that repository and installs whatever it contains, running any lifecycle scripts (`preinstall`/`install`/`postinstall`/`prepare`) inside the fetched tree on the installer's machine. The dependency key `libsignal` shadows the well-known Signal protocol library, but the source is a personal user's fork rather than the upstream signalapp organization, so whoever controls the tenka-san/libsignal-node repository controls install-time code execution on every installer of this package. The source is mutable — content that resolves benign today can be replaced without any change to this package. A secondary observation: lib/Utils/generics.js line 403 references `ping`, but this is unrelated to the primary install-time execution concern.
ENTRY
engine-requirements.js (install-hook: node ./engine-requirements.js)
- Install Hook Executes Local JS File in package.json
PERSISTENCE
- Startup Persistence in lib/Socket/chats.js: ".profile"
- Startup Persistence in lib/Socket/messages-send.js: ".profile"
DESTINATION
- 4 exfil (custom-c2)
(values recorded in verified_iocs)
EXFIL
- Data Encoding for Exfiltration in lib/Socket/ban-checker.js: "encodeURIComponent(num)}&type=phone_number&app_absent=0"
- Data Encoding for Exfiltration in lib/Socket/socket.js: "Buffer.from(creds.noiseKey.public).toString('base64')"
- Data Encoding for Exfiltration in lib/Utils/chat-utils.js: "Buffer.from(indexMac).toString('base64')"
- Data Encoding for Exfiltration in lib/Utils/generics.js: "Buffer.from(value?.data || value).toString('base64')"
- Data Encoding for Exfiltration in lib/Utils/messages-media.js: "Buffer.from(media.fileSha256).toString('base64')"
- Data Encoding for Exfiltration in lib/Utils/process-message.js: "Buffer.from(keyId.keyId).toString('base64')"
- Network Request in lib/Utils/generics.js: "fetch('https:"
- Network Request in lib/Utils/messages-media.js: "request({ hostname: parsedUrl.hostname, port: parsedUrl.port || (parsedUrl.proto..."
OBFUSCATION
- Dynamic Base64 Decoding in lib/Utils/chat-utils.js: "Buffer.from(keyId, 'base64')"
- Dynamic Base64 Decoding in lib/Utils/decode-wa-message.js: "Buffer.from(secret, 'base64')"
- Dynamic Base64 Decoding in lib/Utils/validate-connection.js: "Buffer.from(advSecretKey, 'base64')"
- String Array Obfuscation in lib/Utils/message-composer.js: "[ 'import', 'export', 'from', 'default', 'as', 'const', 'let', 'var', 'function'..."
- String Array Obfuscation in lib/Utils/messages.js: "[ 'break', 'case', 'catch', 'continue', 'debugger', 'default', 'delete', 'do', '..."
- String Array Obfuscation in lib/WABinary/constants.js: "[ '1724', 'profile_picture', '1071', '1314', '1605', '407', '990', '1710', '746'..."
- Decoded Base64 Content in lib/Socket/newsletter.js
- Strings Extracted from Deobfuscated Code in lib/Utils/chat-utils.js
(+2 more)
ADDITIONAL FINDINGS
- Dynamic Code Execution in lib/Utils/message-composer.js: "exec(line)"
- Brand New Package
- Very New NPM Publisher Account
PAYLOAD FILES
lib/Utils/generics.js (+ lib/Utils/messages-media.js, lib/Utils/chat-utils.js)
## Additional context: PhantomSub campaign
- Channel IDs are embedded in the package source (variant not stated in source for this package).
- Channel(s) the package promotes (channel ID, source in package): `0029Vb55cv41nozBTTIw1y07` (MR. SUPUN FERNANDO X, README). OX does not confirm these as auto-follow targets.
Weaknesses (CWE)
CWE-506Embedded Malicious Code
Risk Scores
CVSS 3.1
8.8/10
High · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Affected Products
| Vendor | Product | Versions | Platforms |
|---|---|---|---|
| unknown | @mr-supun-fernando/supunmd-bail | all (affected) | — |
Aliases
Browse GCVE Records
3,164 records in the GCVE database · Updated October 4, 2026
No matching records found.
Explore Further
Investigate this vulnerability in the interactive console or download the raw GCVE record.