Slopsquatting candidates — names attackers will target next
Package names multiple LLMs repeatedly hallucinate are exact targeting information for attackers — "register this and someone will install it". We see those names before attackers do.
How we detect
Every six hours we put a fixed set of ordinary coding tasks to the language models we hold API keys for (Claude, GPT and Gemini models) and read the package names they recommend. Each name is folded to the form its registry stores and looked up live in npm, PyPI, crates.io or the Go proxy. A name becomes a finding when it (1) does not exist, (2) was registered within the last 60 days — high under two weeks, medium after — or (3) resolves but has never published a release. That last one is the trap a plain existence check walks into: the name is registered, so it looks real, and whoever holds it can publish anything under it later — under a name models already recommend. We score those high, not low. Three cases are medium: a name inside an npm scope that already has an owner (only that owner can publish it), an npm name that was published and then removed, and a name whose registry gives no creation date — we do not clear a name on missing evidence. Because the score depends on a package's age, every finding is re-scored daily.
Take the whole list
This page shows the 100 highest-risk names. All of them, with which model produced each name and the task it was answering, are published as CSV and JSON and regenerated daily. CC BY 4.0.
Or call the API — no key needed:
curl -X POST -H "Content-Type: application/json" \
-d '{"packages": ["pkg:npm/fast-jsonwebtoken"]}' \
https://vdb.ai.kr/v1/ai/check-packagesBulk package check
Paste package names suggested by an LLM, one per line. Flagged candidates appear below.
| id | purl | risk | summary |
|---|---|---|---|
| VDB-SLOP-npm-298d52cfd4 | pkg:npm/nxtjwt | high | Slopsquatting candidate: nxtjwt (npm) |
| VDB-SLOP-npm-b75b745e00 | pkg:npm/scherpe-jwt | high | Slopsquatting candidate: scherpe-jwt (npm) |
| VDB-SLOP-pypi-855deb2867 | pkg:pypi/httpstar | high | Slopsquatting candidate: httpstar (PyPI) |
| VDB-SLOP-npm-b95332c66c | pkg:npm/phoenix.socket | high | Slopsquatting candidate: phoenix.socket (npm) |
| VDB-SLOP-npm-569243c633 | pkg:npm/cron-expresso | high | Slopsquatting candidate: cron-expresso (npm) |
| VDB-SLOP-npm-a8b8dbbca9 | pkg:npm/jsonwebtoken-promise | high | Slopsquatting candidate: jsonwebtoken-promise (npm) |
| VDB-SLOP-npm-e6e0f0d6af | pkg:npm/ts-nexus | high | Slopsquatting candidate: ts-nexus (npm) |
| VDB-SLOP-npm-56c9ea855f | pkg:npm/fast-jsonwebtoken | high | Slopsquatting candidate: fast-jsonwebtoken (npm) |
| VDB-SLOP-npm-273ad31c61 | pkg:npm/node-json-web-token | high | Slopsquatting candidate: node-json-web-token (npm) |
| VDB-SLOP-pypi-e4149eab27 | pkg:pypi/tartiflette-graphql | high | Slopsquatting candidate: tartiflette-graphql (PyPI) |
| VDB-SLOP-npm-0a2586283e | pkg:npm/optimistic-jwt | high | Slopsquatting candidate: optimistic-jwt (npm) |
| VDB-SLOP-npm-f06134747e | pkg:npm/@auth0/node-jsonwebtoken | high | Slopsquatting candidate: @auth0/node-jsonwebtoken (npm) |
| VDB-SLOP-npm-73e19fdf54 | pkg:npm/npm-websocket | high | Slopsquatting candidate: npm-websocket (npm) |
| VDB-SLOP-pypi-c69d204138 | pkg:pypi/trusted-yaml | high | Slopsquatting candidate: trusted-yaml (PyPI) |
| VDB-SLOP-npm-e6d49bf29d | pkg:npm/ical-parse | high | Slopsquatting candidate: ical-parse (npm) |
| VDB-SLOP-pypi-3200c6728a | pkg:pypi/cyclonedx-pythonlib | high | Slopsquatting candidate: cyclonedx-pythonlib (PyPI) |
| VDB-SLOP-pypi-f9a1b1b579 | pkg:pypi/cyclonedx-python-github | high | Slopsquatting candidate: cyclonedx-python-github (PyPI) |
| VDB-SLOP-npm-580daa2559 | pkg:npm/momend | high | Slopsquatting candidate: momend (npm) |
| VDB-SLOP-npm-ce17f68b13 | pkg:npm/jsonwebtoken-3 | high | Slopsquatting candidate: jsonwebtoken-3 (npm) |
| VDB-SLOP-pypi-39ea305eaf | pkg:pypi/opentelemetry-logger | high | Slopsquatting candidate: opentelemetry-logger (PyPI) |
| VDB-SLOP-npm-79cdc20ed7 | pkg:npm/clone-dedeep | high | Slopsquatting candidate: clone-dedeep (npm) |
| VDB-SLOP-pypi-590e777acf | pkg:pypi/cyclonedx-unified-model | high | Slopsquatting candidate: cyclonedx-unified-model (PyPI) |
| VDB-SLOP-pypi-b5967ce30e | pkg:pypi/asyaml | high | Slopsquatting candidate: asyaml (PyPI) |
| VDB-SLOP-go-5cb76c9323 | pkg:golang/github.com/rbretecher/openapi-parser | high | Slopsquatting candidate: github.com/rbretecher/openapi-parser (Go) |
| VDB-SLOP-npm-45a53bc238 | pkg:npm/browser.ws | high | Slopsquatting candidate: browser.ws (npm) |
| VDB-SLOP-pypi-a48c830ada | pkg:pypi/cyclonedx-python-to-json | high | Slopsquatting candidate: cyclonedx-python-to-json (PyPI) |
| VDB-SLOP-npm-5ea4b53058 | pkg:npm/jsonwebtoken-error-handler | high | Slopsquatting candidate: jsonwebtoken-error-handler (npm) |
| VDB-SLOP-pypi-d9643d7879 | pkg:pypi/pyics3 | high | Slopsquatting candidate: pyics3 (PyPI) |
| VDB-SLOP-npm-c646055ee9 | pkg:npm/plugin-sql | high | Slopsquatting candidate: plugin-sql (npm) |
| VDB-SLOP-npm-a1bf4ad976 | pkg:npm/clone-deep-array | high | Slopsquatting candidate: clone-deep-array (npm) |
| VDB-SLOP-pypi-bf5e1b360b | pkg:pypi/pyyaml-safe | high | Slopsquatting candidate: pyyaml-safe (PyPI) |
| VDB-SLOP-pypi-3a8d4a6394 | pkg:pypi/cyclonedx-pyproject | high | Slopsquatting candidate: cyclonedx-pyproject (PyPI) |
| VDB-SLOP-pypi-bed775e188 | pkg:pypi/pyahocoras | high | Slopsquatting candidate: pyahocoras (PyPI) |
| VDB-SLOP-pypi-ef1bd20dd8 | pkg:pypi/cyclonedx-python-golang | high | Slopsquatting candidate: cyclonedx-python-golang (PyPI) |
| VDB-SLOP-pypi-3474b5d2ac | pkg:pypi/cyclonedx-cfactory | high | Slopsquatting candidate: cyclonedx-cfactory (PyPI) |
| VDB-SLOP-npm-4236656172 | pkg:npm/lodash.deepcopy | high | Slopsquatting candidate: lodash.deepcopy (npm) |
| VDB-SLOP-pypi-1bd1d27e8e | pkg:pypi/cyclonedx-python-rcf | high | Slopsquatting candidate: cyclonedx-python-rcf (PyPI) |
| VDB-SLOP-npm-2efd3de977 | pkg:npm/jsonwebtokenwebtoken-async | high | Slopsquatting candidate: jsonwebtokenwebtoken-async (npm) |
| VDB-SLOP-pypi-5ce6592120 | pkg:pypi/sbom-checker | high | Slopsquatting candidate: sbom-checker (PyPI) |
| VDB-SLOP-npm-a87a6e3b7d | pkg:npm/@edtr-io/react-markdown | high | Slopsquatting candidate: @edtr-io/react-markdown (npm) |
| VDB-SLOP-pypi-da44bf9bfa | pkg:pypi/request | high | Slopsquatting candidate: request (PyPI) |
| VDB-SLOP-npm-11f249b4f4 | pkg:npm/sql-escape-strings | high | Slopsquatting candidate: sql-escape-strings (npm) |
| VDB-SLOP-pypi-eab1a577e5 | pkg:pypi/vigil-llm | high | Slopsquatting candidate: vigil-llm (PyPI) |
| VDB-SLOP-pypi-6170c4db82 | pkg:pypi/purl-js | high | Slopsquatting candidate: purl-js (PyPI) |
| VDB-SLOP-pypi-adfd374a79 | pkg:pypi/boomerang-cyclonedx | high | Slopsquatting candidate: boomerang-cyclonedx (PyPI) |
| VDB-SLOP-npm-0058bfe446 | pkg:npm/client-side | high | Slopsquatting candidate: client-side (npm) |
| VDB-SLOP-npm-9ce5527b8b | pkg:npm/cron-syntax-parser | high | Slopsquatting candidate: cron-syntax-parser (npm) |
| VDB-SLOP-pypi-265173aa21 | pkg:pypi/cyclonedx-python3 | high | Slopsquatting candidate: cyclonedx-python3 (PyPI) |
| VDB-SLOP-pypi-41ef6e5c92 | pkg:pypi/cycledx-sbom-parser | high | Slopsquatting candidate: cycledx-sbom-parser (PyPI) |
| VDB-SLOP-pypi-2b76728dc3 | pkg:pypi/trio-http | high | Slopsquatting candidate: trio-http (PyPI) |
| VDB-SLOP-pypi-a7a587ab1a | pkg:pypi/python-front | high | Slopsquatting candidate: python-front (PyPI) |
| VDB-SLOP-pypi-c0717903e8 | pkg:pypi/yamlfriendly | high | Slopsquatting candidate: yamlfriendly (PyPI) |
| VDB-SLOP-pypi-c00744069a | pkg:pypi/log | high | Slopsquatting candidate: log (PyPI) |
| VDB-SLOP-pypi-d494ebfb70 | pkg:pypi/parseics | high | Slopsquatting candidate: parseics (PyPI) |
| VDB-SLOP-npm-06e0b0c7cd | pkg:npm/simplest-chat-app | high | Slopsquatting candidate: simplest-chat-app (npm) |
| VDB-SLOP-pypi-054e09b7f0 | pkg:pypi/cyclonedx-xml-python | high | Slopsquatting candidate: cyclonedx-xml-python (PyPI) |
| VDB-SLOP-pypi-aeabcae216 | pkg:pypi/omega-parser | high | Slopsquatting candidate: omega-parser (PyPI) |
| VDB-SLOP-npm-bc1da1135d | pkg:npm/pgweb | high | Slopsquatting candidate: pgweb (npm) |
| VDB-SLOP-npm-9a129d2bd4 | pkg:npm/schedule-collision-detector | high | Slopsquatting candidate: schedule-collision-detector (npm) |
| VDB-SLOP-npm-d85133b3cf | pkg:npm/ics-node | high | Slopsquatting candidate: ics-node (npm) |
| VDB-SLOP-npm-1f73ecf015 | pkg:npm/auth0jsonwebtoken | high | Slopsquatting candidate: auth0jsonwebtoken (npm) |
| VDB-SLOP-pypi-8b8f606a1c | pkg:pypi/parse-calendar | high | Slopsquatting candidate: parse-calendar (PyPI) |
| VDB-SLOP-cratesio-2ec867942c | pkg:cargo/cyclonedx-rc | high | Slopsquatting candidate: cyclonedx-rc (crates.io) |
| VDB-SLOP-npm-3f444e3786 | pkg:npm/pev-websocket-client | high | Slopsquatting candidate: pev-websocket-client (npm) |
| VDB-SLOP-pypi-b290a555d7 | pkg:pypi/sbom-tools | high | Slopsquatting candidate: sbom-tools (PyPI) |
| VDB-SLOP-npm-acc745887a | pkg:npm/cronutils | high | Slopsquatting candidate: cronutils (npm) |
| VDB-SLOP-pypi-90c166e455 | pkg:pypi/cyclonedx-golang-lib | high | Slopsquatting candidate: cyclonedx-golang-lib (PyPI) |
| VDB-SLOP-npm-740fa9d8a4 | pkg:npm/schedule-utils | high | Slopsquatting candidate: schedule-utils (npm) |
| VDB-SLOP-npm-2d05a508fc | pkg:npm/schedule-validator | high | Slopsquatting candidate: schedule-validator (npm) |
| VDB-SLOP-npm-d56a7035b2 | pkg:npm/jsonwebtoken-verify | high | Slopsquatting candidate: jsonwebtoken-verify (npm) |
| VDB-SLOP-npm-1be5b600bc | pkg:npm/ts-sql-parser | high | Slopsquatting candidate: ts-sql-parser (npm) |
| VDB-SLOP-npm-6bb35397ef | pkg:npm/uzwebsocket | high | Slopsquatting candidate: uzwebsocket (npm) |
| VDB-SLOP-npm-a994ede4db | pkg:npm/ics-to | high | Slopsquatting candidate: ics-to (npm) |
| VDB-SLOP-pypi-308839dd8f | pkg:pypi/pyyaml-reader | high | Slopsquatting candidate: pyyaml-reader (PyPI) |
| VDB-SLOP-pypi-bc11e52288 | pkg:pypi/yamlkid | high | Slopsquatting candidate: yamlkid (PyPI) |
| VDB-SLOP-pypi-18635a38de | pkg:pypi/googlepurl | high | Slopsquatting candidate: googlepurl (PyPI) |
| VDB-SLOP-pypi-0e6df8fb09 | pkg:pypi/yamldom | high | Slopsquatting candidate: yamldom (PyPI) |
| VDB-SLOP-pypi-a85d69fda5 | pkg:pypi/icalalchemy | high | Slopsquatting candidate: icalalchemy (PyPI) |
| VDB-SLOP-npm-4b7a7a8daf | pkg:npm/sql-walker | high | Slopsquatting candidate: sql-walker (npm) |
| VDB-SLOP-npm-230b9efa0b | pkg:npm/cron-schedule-generator | high | Slopsquatting candidate: cron-schedule-generator (npm) |
| VDB-SLOP-npm-581c63371b | pkg:npm/knknex | high | Slopsquatting candidate: knknex (npm) |
| VDB-SLOP-pypi-3fea97e503 | pkg:pypi/opentelemetry-context | high | Slopsquatting candidate: opentelemetry-context (PyPI) |
| VDB-SLOP-pypi-97c6afb025 | pkg:pypi/purl-generator | high | Slopsquatting candidate: purl-generator (PyPI) |
| VDB-SLOP-pypi-9026beb49e | pkg:pypi/django-purl | high | Slopsquatting candidate: django-purl (PyPI) |
| VDB-SLOP-pypi-49b6a35df2 | pkg:pypi/cyclonedx-model-python | high | Slopsquatting candidate: cyclonedx-model-python (PyPI) |
| VDB-SLOP-cratesio-340eec9fdc | pkg:cargo/sbom-validator | high | Slopsquatting candidate: sbom-validator (crates.io) |
| VDB-SLOP-npm-1882b4ad5c | pkg:npm/sql-cleaner | high | Slopsquatting candidate: sql-cleaner (npm) |
| VDB-SLOP-pypi-255b9202b9 | pkg:pypi/cyclonedx-python-retrofit | high | Slopsquatting candidate: cyclonedx-python-retrofit (PyPI) |
| VDB-SLOP-pypi-a80ad66b7e | pkg:pypi/ask-request | high | Slopsquatting candidate: ask-request (PyPI) |
| VDB-SLOP-pypi-7ec4556b20 | pkg:pypi/purl4j | high | Slopsquatting candidate: purl4j (PyPI) |
| VDB-SLOP-pypi-ea99460744 | pkg:pypi/friendly-purl | high | Slopsquatting candidate: friendly-purl (PyPI) |
| VDB-SLOP-npm-7b13a29350 | pkg:npm/phaserx | high | Slopsquatting candidate: phaserx (npm) |
| VDB-SLOP-npm-42a6edd9ae | pkg:npm/rsa-jwt | high | Slopsquatting candidate: rsa-jwt (npm) |
| VDB-SLOP-npm-d4afe90582 | pkg:npm/cron-tree | high | Slopsquatting candidate: cron-tree (npm) |
| VDB-SLOP-pypi-a0f2227c20 | pkg:pypi/purl-encoder | high | Slopsquatting candidate: purl-encoder (PyPI) |
| VDB-SLOP-pypi-a819a67c7b | pkg:pypi/icalendar-vobject | high | Slopsquatting candidate: icalendar-vobject (PyPI) |
| VDB-SLOP-npm-bce95542f7 | pkg:npm/rp-websocket | high | Slopsquatting candidate: rp-websocket (npm) |
| VDB-SLOP-pypi-ab07d6ca13 | pkg:pypi/purldefang | high | Slopsquatting candidate: purldefang (PyPI) |
| VDB-SLOP-pypi-e6b312edd8 | pkg:pypi/pyspds | high | Slopsquatting candidate: pyspds (PyPI) |
| VDB-SLOP-npm-ca818ade19 | pkg:npm/light-weight-websocket | high | Slopsquatting candidate: light-weight-websocket (npm) |