Skip to content
Open-Source Registry

npm / gugodapis

gugodapis 1.0.0

bitbison: flagged, behavior flagged, dependencies clean, posture not checked, pipeline clean, 1 of 1 jobs captured RiskhighVulnsnone
processes
633
operations
11K
packages
34
compiler runs
0
connections
2
build time
5s
job time
5s
capture
122 KB
records
18K
bytes / record
6.8
published 2024-05-09 View on npm
Reviewed by Bitbison: maliciousThe package's only function, executeRemoteBatchScript, downloads anmern.bat from a hard-coded cdn.discordapp.com attachment link, writes it to the temporary directory and executes it with child_process.exec.

Graph

egress · high
3

Checks

13 of 14 clear Network activity
Build behavior▲✓✓✓✓✓✓✓✓
Supply chain✓✓✓✓
Pipeline✓

Detections

1
  • Connected to a messaging service's API: cdn.discordapp.com:443
    cdn.discordapp.com:443 › cdn.discordapp.com:443
    high

Detection

highwitnessed

Connected to a messaging service's API: cdn.discordapp.com:443

Unexpected network connection

Subject
cdn.discordapp.com:443
Destination
cdn.discordapp.com:443
Jobs
install
Rule
egress · consumer

Evidence

  1. Connection outside the process’s allowed destinationscause

    opened by node

    subject cdn.discordapp.com:443

    by /opt/hostedtoolcache/node/24.22.1/x64/bin/node -e require(process.argv[1])((s) => require(s), (s) => import(s)) /home/runner/work/_temp/call.js gugodapis 0 2000…

  2. What kind of service the host issupport

    Discord

What came before it

Loading the graph

Processes

install

node›node

Ran
/opt/hostedtoolcache/node/24.22.1/x64/bin/node -e require(process.argv[1])((s) => require(s), (s) => import(s)) /home/runner/work/_temp/call.js gugodapis 0 2000…
Invoked by
node /home/runner/work/_temp/exercise.js gugodapis
Lineage · 2 processes
  1. nodenode /home/runner/work/_temp/exercise.js gugodapis1658
  2. node/opt/hostedtoolcache/node/24.22.1/x64/bin/node -e require(process.argv[1])((s) => require(s), (s) => import(s)) /home/runner/work/_temp/call.js gugodapis 0 2000…1665

Remediation

Find the code that made the connection and what it sent. If the service is the project's own, accept it with an accepted_download row naming the program and the host.

Network

2 peers
  • cdn.discordapp.com:443 gugodapis's own build code · node (consumer) · Cloudflare, Inc. undeclared
  • registry.npmjs.org:8080 the package manager · node (consumer) · 441 files ecosystem

Dependencies

34
Dependencies34Build behaviour
agent-base6.0.2
asynckit0.4.0
axios1.21.0
call-bind-apply-helpers1.0.2
child_process1.0.2
combined-stream1.0.8
debug4.4.3
delayed-stream1.0.0
dunder-proto1.0.1
es-define-property1.0.1
es-errors1.3.0
es-object-atoms1.1.2
es-set-tostringtag2.1.0
follow-redirects1.16.2
form-data4.0.6
fs0.0.1-security
function-bind1.1.2
get-intrinsic1.3.0
get-proto1.0.1
gopd1.2.0
has-symbols1.1.0
has-tostringtag1.0.2
hasown2.0.4
https-proxy-agent5.0.1
inherits2.0.3
math-intrinsics1.1.0
mime-db1.52.0
mime-types2.1.35
ms2.1.3
path0.12.7
process0.11.10
proxy-from-env2.1.0
util0.10.4
consumer1.0.0

Versions1

Raw data

capture
122 KB
records
17,878
bytes per record
6.8

Loading a sample of the capture

Want to see more? E-mail us at hello@bitbison.io about your use case.

1 of 1 jobs captured: install success · Generated 2026-11-05 · run f32f455c-722a-46c2-960b-eaae9dc4f236

analysis 0.1.0 · 2026-11-04 · bfee307 · graph v2

gugodapis 1.0.0 downloads a batch file from a Discord attachment and executes it

maliciousCovers 1.0.0Reviewed by BitbisonUpdated 2026-11-06

The package's only function, executeRemoteBatchScript, downloads anmern.bat from a hard-coded cdn.discordapp.com attachment link, writes it to the temporary directory and executes it with child_process.exec.

On May 9, 2024, gugodapis 1.0.0 was published to npm with no description, no README and no author. It is the package's only release. Its one function downloads a Windows batch file, anmern.bat, from a Discord attachment link written into the code, saves it in the temporary directory and executes it. OSV lists it as MAL-2026-18608. It is still available on npm.

What the package does

gugodapis 1.0.0 (tarball sha256 ea725cf1c5c950a7a8f091a717cfd2a76e7dd7b81000afe37b7398c76f3c4e3a) has no install script, and loading it with require('gugodapis') does nothing on its own. When a program calls its function executeRemoteBatchScript() without a URL, it does this:

  • It connects to cdn.discordapp.com over HTTPS and downloads anmern.bat from a Discord attachment.
  • It writes the file to %TEMP%\anmern.bat, or to /tmp/anmern.bat when TEMP is not set.
  • It executes the file through Node's child_process.exec. On Windows that is cmd.exe, which runs the batch file with the user's rights. On Linux and macOS the shell is handed a file without the executable permission, so the call fails, but the file is still downloaded and written.
  • It prints the script's output and passes it to the caller's callback.

Whatever the batch file contains is decided by whoever controls the Discord attachment, not by anything in the package.

What the code does

The tarball holds two files, package/gugodapis.js (37 lines) and package/package.json. The tarball's sha512 matches the dist.integrity npm publishes.

  • gugodapis.js:7 hard-codes DEFAULT_URL, a Discord attachment link to anmern.bat (channel 1230359189717782621, attachment 1238125874927108219).
  • gugodapis.js:9-10 define executeRemoteBatchScript(url = DEFAULT_URL, callback) and set the target path to path.join(process.env.TEMP || '/tmp', 'anmern.bat').
  • gugodapis.js:12-16 download the URL with axios as raw bytes and write them to that path with fs.writeFileSync.
  • gugodapis.js:18-27 pass the path to child_process.exec and hand stdout and stderr to the callback.
  • gugodapis.js:35-37 make executeRemoteBatchScript the module's only public function. The first line's comment calls the file myapi.js.
  • package.json:2-7 depend on axios and on npm packages named fs, path and child_process, which share their names with Node's built-in modules; the code's require calls load the built-ins. package.json:12-14 has only a placeholder test script, and there is no install, preinstall or postinstall script.

Nothing in the package says what it is for or that it downloads and executes a file. A package whose only purpose is to fetch an undisclosed batch file from a Discord attachment and execute it is a dropper.

Timeline (UTC)

WhenWhat
05/09/24 20:08:08gugodapis 1.0.0 is published to npm by jajahummus, the package's only release
11/02/26 09:44:21OSV publishes MAL-2026-18608, reported by Oluwatosin Amokeodo

If you installed it

Installing the package or loading it does not execute anything. If any code of yours, or a dependency, calls executeRemoteBatchScript, check for anmern.bat in %TEMP% (on Windows) or /tmp. On Windows, if the file is or was there, treat the machine as compromised: you cannot know what the batch file did, so rotate every credential the user account could read and rebuild the machine from a trusted image. In every case, remove gugodapis from your dependencies and look for any connection to cdn.discordapp.com from Node processes that have no reason to make one.

Indicators

hosts
cdn.discordapp.com
requests
GET https://cdn.discordapp.com/attachments/1230359189717782621/1238125874927108219/anmern.bat?ex=663e2613&is=663cd493&hm=3e76ffbb77e5f407c0d6510f76a0dbdf7f1e68cfcdc18de0a66d4daa494e6a9d&
files
%TEMP%\anmern.bat/tmp/anmern.bat
functions
executeRemoteBatchScript
processes
cmd.exe /d /s /c "%TEMP%\anmern.bat"/bin/sh -c /tmp/anmern.bat

Examined

1.0.0
sha256:ea725cf1c5c950a7a8f091a717cfd2a76e7dd7b81000afe37b7398c76f3c4e3a

Links