{"id":"MAL-2026-14271","summary":"Malicious code in nodeberlin (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (0daee18c4afae327b271a2178e90822f750a17d97f7dfb1236e6dd37ef9410d9)\nThe CLI polls the system clipboard every 300ms and captures full-desktop or user-snipped screen regions, then POSTs the JSON text and base64-encoded JPEG image data to a hardcoded author-controlled endpoint at https://tokyoap.vercel.app/api (API_URL). The destination is not caller-configurable and the package accepts no user-supplied API key, so all installers' clipboard contents and screenshots are routed through the author's proxy. On first run the bin auto-downloads the Python.org installer and pip-installs keyboard, pyautogui, pillow, pyperclip, and requests to support global hotkeys, screen capture, and the relay; a panic-exit hotkey and stealth overlay accompany the capture path. Clipboard buffers and screenshots routinely contain credentials, private messages, and other sensitive material; funnelling them through a hardcoded third-party endpoint materially harms the installer.\n","modified":"2026-08-19T07:31:56.205685569Z","published":"2026-08-19T07:18:47Z","database_specific":{"malicious-packages-origins":[{"source":"amazon-inspector","versions":["1.0.7"],"id":"IN-MAL-2026-018387","import_time":"2026-08-19T07:21:21.80972385Z","modified_time":"2026-08-19T07:18:47Z","sha256":"0daee18c4afae327b271a2178e90822f750a17d97f7dfb1236e6dd37ef9410d9"}]},"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/nodeberlin/v/1.0.7"}],"affected":[{"package":{"name":"nodeberlin","ecosystem":"npm","purl":"pkg:npm/nodeberlin"},"versions":["1.0.7"],"database_specific":{"cwes":[{"description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code","cweId":"CWE-506"}],"indicators":{"evidence_files":[{"sha256":"a77b047eb3c68e2a2ac3d020225f0e43aa17b9670881934b67a162edae04ba33","tlsh":"23c2d976a0085859f663dc1f8996b5132e1e3e437a4ca528bcfcb9950fcc32685e1ef1","path":"client/noderzero.py"},{"path":"launcher.js","sha256":"0b5b4a96d4cae20054d7d9a598acbd1ebb3f48d913def800b3c8534165032f6b","tlsh":"f071ee7605e55334b863d29d9f4b51272013b0137648e9987eaeb3844fce61491b3bfa"}],"package_integrity":[{"filename":"nodeberlin-1.0.7.tgz","hashes":{"sha512_sri":"sha512-RdaLBEnacLD5IhxlynkSNsT+U5b4QbGkInoCqaUBNRdwjn0mOSwpypULYM3DBtkSIUosoAVFPzQFDoDn2eRXdA==","sha1":"478bf2c76035cde0399b82f7ea0c483a1bed4888"}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/nodeberlin/MAL-2026-14271.json"}}],"schema_version":"1.9.0","credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}