Summary
Togoder Security scanned the npm package object.assign@4.1.7 on Oct 6, 2026. An AI review of 7 source files produced 3 medium, 1 low severity findings. The overall verdict is medium: the findings flag risky but common patterns (dynamic code, unsafe defaults, broad file or network access) rather than confirmed malware.
Findings 4
Indirect code execution via module import
NPS-318DDDE6592A
The file immediately invokes the exported function from './shim' at top-level (require-time). Since './shim' is not shown, this shim module can execute arbitrary code upon loading, including installing hooks, monkey-patching globals, harvesting environment variables/credentials, or performing network requests. Top-level execution on import is a common vector for malicious npm packages.
Potential global environment modification
NPS-33F10DD11C56
The term 'shim' typically implies modifying global objects or built-ins (e.g. patching process, console, require, or other prototypes). Such behavior can silently alter runtime semantics for the entire application, enabling interception of sensitive data or stealthy execution.
Opaque dependency
NPS-1B651997C6D0
The actual behavior cannot be verified from this file alone — all logic resides in './shim'. The entry point provides no indication of what the shim does, which is a common obfuscation/encapsulation pattern in malicious packages.
Harmless-looking but potentially deceptive shim implementation
NPS-2B361BBDE2D2
The function define is called but never imported or defined in the visible scope. In the original es-abstract / es-shim pattern, define is usually obtained via require('define-properties'). Here, it appears as a bare global or an implicitly resolved function, which could be intentionally done to obfuscate an abnormal dependency or a global monkey-patch. While not overtly malicious in isolation, this missing import is a notable inconsistency that could hide unexpected behavior.
Files reviewed
| File | Verdict | What the reviewer saw |
|---|---|---|
| auto.js | medium | The file is a thin wrapper that immediately executes an unspecified shim module at require-time, which is a potential vector for hidden malicious behavior such as credential harvesting, monkey-patching, or code execution, though no direct malicious code is visible. |
| shim.js | medium | No direct malicious patterns such as exfiltration, code execution, or credential harvesting are present, but the unexplained define call introduces a minor integrity concern. |
| dist/browser.js | safe | No malicious patterns detected; the code is a standard browserify bundle of the well-known object.assign polyfill package with no suspicious network, filesystem, or dynamic execution activity. |
| hasSymbols.js | safe | Cleared by Jev triage; no further analysis needed |
| implementation.js | safe | This is a legitimate implementation of Object.assign polyfill with no malicious patterns detected. |
| index.js | safe | No malicious patterns detected; this is a standard polyfill wrapper for Object.assign with no network, filesystem, process, or dynamic code execution activity. |
| polyfill.js | safe | Cleared by Jev triage; no further analysis needed |
Scanned versions of object.assign
| Version | Verdict | Files | Scanned |
|---|---|---|---|
| 4.1.7 | Needs review | 7 | Oct 6, 2026 |
Frequently asked questions
Is object.assign safe to use?
No confirmed malware was found in object.assign@4.1.7, but the review flagged 3 medium, 1 low severity findings for risky patterns worth checking before you rely on it.
Does object.assign contain malware?
No malware was identified in object.assign@4.1.7 when Togoder Security scanned it on Oct 6, 2026. A new version can still introduce malicious code, so scan the exact versions in your lockfile.
How was object.assign checked?
Togoder Security downloaded the published npm package and had an AI model read its 7 source files, looking for install scripts, credential access, network exfiltration, obfuscation, backdoors and crypto-wallet theft. The results are cached by file hash and shown here.
How do I scan object.assign together with the rest of my dependencies?
Upload your lockfile at https://security.togoder.click/scan or call the API documented at https://security.togoder.click/api-docs. Files that have already been scanned, like the ones in object.assign@4.1.7, cost nothing.