Skip to content
Open-Source Registry

pypi / dbt-adapter / 0.1.0a2

dbt-adapter 0.1.0a2

bitbison: flagged, behavior flagged, dependencies notes, posture not checked, pipeline clean, 1 of 1 jobs captured RiskhighVulnsnone
processes
730
operations
29K
packages
7
compiler runs
3
connections
2
build time
22s
job time
22s
capture
231 KB
records
44K
bytes / record
5.2
run c2807172-7e77-49e3-86f8-64a210efc172 · built 2026-11-05 · complete View on PyPI
Reviewed by Bitbison: phone-homesetup.py overrides the install command to POST the machine's hostname, local IP address and the package version to a webhook.site address, then installs normally; nothing else is read or sent.

Graph

egress · high · in dbt_adapter-0.1.0a2-py3-none-any.whl
2

Checks

16 of 18 clear Network activity Build-time dependency advisories
Build behavior▲✓✓✓✓✓✓✓✓✓✓
Supply chain✓▲✓✓✓✓
Pipeline✓

Detections

1
  • Build script connected to a request-capture service: webhook.site:443
    .venv/lib/python3.14/site-packages ? › webhook.site:443
    high

Detection

highwitnessed

Build script connected to a request-capture service: webhook.site:443

Unexpected network connection

Subject
.venv/lib/python3.14/site-packages ?
Destination
webhook.site:443
Reaches
Jobs
build-import
Rule
egress · .venv/lib/python3.14/site-packages

Evidence

  1. Connection outside the process’s allowed destinationscause

    connection to webhook.site:443, opened by python

    subject webhook.site:443

    by /tmp/build-env-hw1ardlr/bin/python /home/runner/work/dbt-adapter/dbt-adapter/.venv/lib/python3.14/site-packages/pyproject_hooks/_in_process/_in_process.py build…

  2. What a build script's fetch becamesupport

    15 files came down, reaching 9 more; nothing the build compiled, linked or ran

  3. Connection opened by a build script or child processsupport

    the opener is the build script at /tmp/build-env-hw1ardlr/bin/python /home/runner/work/dbt-adapter/dbt-adapter/.venv/lib/python3.14/site-packages/pyproject_hooks/_in_process/_in_process.py build_wheel /tmp/tmp9suft_31

  4. What kind of service the host issupport

    webhook.site:443: webhook.site

In dbt_adapter-0.1.0a2-py3-none-any.whl

Loading the graph

Processes

build-import

python›python

Ran
/tmp/build-env-hw1ardlr/bin/python /home/runner/work/dbt-adapter/dbt-adapter/.venv/lib/python3.14/site-packages/pyproject_hooks/_in_process/_in_process.py build…
Invoked by
.venv/bin/python -m build --wheel --outdir dist .
Lineage · 2 processes
  1. python.venv/bin/python -m build --wheel --outdir dist .1359
  2. python/tmp/build-env-hw1ardlr/bin/python /home/runner/work/dbt-adapter/dbt-adapter/.venv/lib/python3.14/site-packages/pyproject_hooks/_in_process/_in_process.py build…1384

Remediation

A dependency's build connected to a service build code has no use for: one that records what is sent to it, forwards it elsewhere, or delivers it to people. Review what the build could read and send, rotate any credential it could reach, and pin or replace the dependency.

Network

2 peers
  • webhook.site:443 dbt-adapter's own build code · python3.14 (.venv/lib/python3.14/site-packages) · Hetzner Online GmbH · 15 files undeclared
  • files.pythonhosted.org:8080 the package manager · python3.14 (dbt-adapter) via pypi.org ecosystem
Vulnerabilities6FixSeverity
Dependencies
pip 25.1.1>=26.2.0
CVE-2025-8869pip's fallback tar extraction doesn't check symbolic links point to extraction directorymedium
CVE-2026-13346pip would incorrectly handle doubly-encoded package URLs from indexesmedium
CVE-2026-3219pip has an interpretation conflict due to handling both concatenated tar and ZIP files as ZIP filesmedium
CVE-2026-6357pip Vulnerable to Inclusion of Functionality from Untrusted Control Spheremedium
CVE-2026-8643pip: Path traversal in console_scripts/gui_scripts entry point names allows installing scripts outside of target directorymedium
CVE-2026-1703pip Path Traversal vulnerabilitylow

Dependencies

7
Dependencies7Build behaviour
build1.6.1
packaging26.3
pyproject-hooks1.3.3
pip25.1.1
pip26.3
setuptools84.2.1
~ip25.1.1

Versions2

Raw data

capture
231 KB
records
44,455
bytes per record
5.2

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: build-import success · Generated 2026-11-05 · run c2807172-7e77-49e3-86f8-64a210efc172

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

dbt-adapter 0.1.0a2, a near-miss of dbt-adapters, posts the hostname and IP to webhook.site on install

phone-homeCovers 0.1.0a2Reviewed by BitbisonUpdated 2026-11-06

setup.py overrides the install command to POST the machine's hostname, local IP address and the package version to a webhook.site address, then installs normally; nothing else is read or sent.

On November 5, 2026, two releases of dbt-adapter were published to PyPI six minutes apart. The name is one letter short of dbt-adapters, the adapter library of the dbt project, and this package has nothing to do with it. 0.1.0a2 describes itself as a "POC package (beacon-only)". Its setup.py replaces setuptools' install command with one that posts the machine's hostname and IP address to a webhook.site address before installing. That address belongs to whoever created it. OSV lists the project as MAL-2026-18704 and files it as a probable penetration-test package. PyPI has since quarantined the project.

What the package does

Installing dbt-adapter 0.1.0a2 from its source distribution (sha256 b8b9be9ded8afbc3dfdd8bb8e58b489ef1e305bfbf377b3e68f0ed62f9f5b0d1) does this:

  • When pip turns the source distribution into a wheel, its PEP 517 hook (build_wheel) runs setup.py. The package's install command then sends one HTTPS POST to webhook.site, a public service that collects requests.
  • The POST is JSON with four fields: the machine's hostname, the address that hostname resolves to locally, and the package's name and version. webhook.site also sees the public address the request comes from.
  • After the POST, or if the POST fails within 3 seconds, the install goes on as normal.

The package ships no adapter code and declares no dependencies. It does not read files, environment variables or credentials. It does not take commands from the server, start other processes, or leave anything behind that runs later.

What the code does

The source distribution's three packaging files are short, and they say all of this.

setup.py (sha256 67e203d1370bb52004f54675ab77758ed2e8bf1bfdb8d3342888e1c932809b88, 38 lines):

  • Line 7 sets BEACON_URL to an HTTPS address on webhook.site, a per-owner token path.
  • Lines 9–10 and 37 define InstallWithBeacon, a subclass of setuptools' install, and register it with cmdclass={'install': InstallWithBeacon}. Its run() executes whenever setuptools runs the install command. setuptools also runs that command when it makes a wheel.
  • Lines 13–14 take socket.gethostname() and socket.gethostbyname(hostname).
  • Lines 17–22 put those into a dictionary as hostname and ip_address, together with "package": "dbt-adapter" and "version": "0.1.0a2".
  • Lines 25–31 encode the dictionary as JSON and POST it to BEACON_URL with Content-Type: application/json and a 3-second timeout.
  • Lines 32–34 swallow any error, so the install never fails, and then call the normal install.run.

pyproject.toml (sha256 5038baf76023142199de43d1cbd8c78ec07d1713d07b5d282578ad39d47c784b, 14 lines):

  • Lines 2–3 use the setuptools.build_meta backend, which is why pip runs setup.py.
  • Line 8 gives the description "POC package (beacon-only)".
  • Line 9 lists the author as the template placeholder "Your Name".
  • Line 14 declares a single package directory, dbt-adapter. No file declares a dependency.

setup.cfg (sha256 1c473cbaee8da5fc46e7f0158794af5cea4414c34a3cf3f180c2001f5e38bd3e, 4 lines) holds only setuptools' default [egg_info] settings and does nothing else.

OSV's report says the same as the code: the package "overrides the install command in setup.py" and sends "basic information about the host". OSV gives the user name as one example of that information, but this setup.py does not send it; it sends the hostname. OSV also says importing the module reports to the same address. This review does not quote the module's code.

OSV also lists 0.0.0, whose summary is "Dummy dbt-adapter package for PyPI". This review does not quote that release's code and does not cover it.

Conclusion

phone-home: installing dbt-adapter 0.1.0a2 sends the machine's hostname, its local IP address and the package's name and version to a webhook.site address (setup.py lines 7–31). The package uses a name one letter away from the real dbt-adapters and has no other function. It does not read credentials, take commands or persist.

Timeline (UTC)

WhenWhat
11/05/26 05:23:01dbt-adapter 0.0.0 is published to PyPI ("Dummy dbt-adapter package for PyPI")
11/05/26 05:29:25dbt-adapter 0.1.0a2 is published to PyPI ("POC package (beacon-only)")
11/05/26 06:58:26OSV publishes MAL-2026-18704, reported by Kamil Mańkowski (kam193), covering 0.0.0 and 0.1.0a2

If you installed it

If you meant dbt-adapters (with an s), uninstall dbt-adapter, install the real package, and pin the name in your requirements or lock file.

The package sent only your hostname, its local address and your public address to the webhook's owner. It read no secrets and left nothing running, so you do not need to rotate credentials because of it. To find machines or CI runners that installed it, look in your egress logs for HTTPS requests to webhook.site, made while pip was installing.

Indicators

hosts
webhook.site
requests
POST https://webhook.site/<token> (HTTPS, 3-second timeout)Content-Type: application/json; body {"hostname", "ip_address", "package": "dbt-adapter", "version": "0.1.0a2"}
files
setup.py (sha256 67e203d1370bb52004f54675ab77758ed2e8bf1bfdb8d3342888e1c932809b88)
processes
pip's PEP 517 build_wheel hook running setup.py (the overridden install command)

Examined

0.1.0a2
sha256:b8b9be9ded8afbc3dfdd8bb8e58b489ef1e305bfbf377b3e68f0ed62f9f5b0d1

Links