PkgRadar

Package evidence

portman-proxy==0.1.2

Py Import Time Subprocess: subprocess call with shell=True — passes argv to /bin/sh.

Trust signals

Why this verdict

PkgRadar discounts a release’s score when public reputation argues against novel malware. The verdict above already reflects these — the panel just explains what was applied.

Versions published
2
First published
Jun 2026

Recommended action

Block this update

Static evidence trips multiple high-signal indicators. Quarantine the release until the publisher validates the change or you can rule out the indicators below.

Block this release in CIcurl · GitHub Actions

Fail the build when this package version is added or upgraded. Replace $PKGRADAR_TOKEN with a Pro / Team API key from your dashboard.

curl -fsS https://pkgradar.com/gate/npm \
  -H "Authorization: Bearer $PKGRADAR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"specs":["portman-proxy==0.1.2"],"fail_on":"high"}'

GitHub Actions step:

- name: PkgRadar gate
  run: |
    curl -fsS https://pkgradar.com/gate/npm \
      -H "Authorization: Bearer ${{ secrets.PKGRADAR_TOKEN }}" \
      -H "Content-Type: application/json" \
      -d '{"specs":["portman-proxy==0.1.2"],"fail_on":"high"}'
Publisherunknown
Artifact bytes26,776,453
Previous versionnone
Published2026-06-03T10:37:28
SHA-2569407a5ac13af17578c610f73bc8e76c739714d3cec259c4156879cc1a1ccaf57

Why flagged

What the scanner saw

Py Import Time Subprocess: subprocess call with shell=True — passes argv to /bin/sh.

Not observed: package install, lifecycle script execution, or sandbox execution. PkgRadar only inspects on-disk artifacts.

Availability ledger

available

high
Last checked
highRisk
224Score
0.1.2Version
Status history (1 event)
  1. newavailable · risk high · score 224 · status changed

Evidence

Static findings

21 static · 0 from release diff · showing high-signal first.

SeverityKindPathDetailPoints
mediumPy Import Time Subprocessportman_proxy-0.1.2/testenv/Lib/site-packages/watchdog/tricks/__init__.pysubprocess call with shell=True — passes argv to /bin/sh.48
mediumPy Import Time Subprocessportman_proxy-0.1.2/verify/Lib/site-packages/watchdog/tricks/__init__.pysubprocess call with shell=True — passes argv to /bin/sh.48
mediumPy Import Time Subprocessportman_proxy-0.1.2/testenv/Lib/site-packages/docutils/writers/odf_odt/__init__.pysubprocess call — process spawning.32
mediumPy Import Time Subprocessportman_proxy-0.1.2/testenv/Lib/site-packages/jaraco/context/__init__.pysubprocess call — process spawning.32
mediumPy Import Time Subprocessportman_proxy-0.1.2/testenv/Lib/site-packages/watchdog/tricks/__init__.pysubprocess call — process spawning.32
mediumPy Import Time Subprocessportman_proxy-0.1.2/verify/Lib/site-packages/watchdog/tricks/__init__.pysubprocess call — process spawning.32
mediumPy Import Time Eval Execportman_proxy-0.1.2/testenv/Lib/site-packages/jaraco/functools/__init__.pyPython eval()/exec() called on a string.24
mediumPy Import Time Eval Execportman_proxy-0.1.2/testenv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.pyPython eval()/exec() called on a string.24
mediumPy Import Time Eval Execportman_proxy-0.1.2/verify/Lib/site-packages/pip/_vendor/pkg_resources/__init__.pyPython eval()/exec() called on a string.24
highPy Import Time Network Callportman_proxy-0.1.2/testenv/Lib/site-packages/jaraco/context/__init__.pyNetwork call (urllib/requests/httpx/http.client) at install or import time.16
Show all 21 findings (low-signal and informational)
SeverityKindPathDetailPoints
mediumPy Import Time Subprocessportman_proxy-0.1.2/testenv/Lib/site-packages/watchdog/tricks/__init__.pysubprocess call with shell=True — passes argv to /bin/sh.48
mediumPy Import Time Subprocessportman_proxy-0.1.2/verify/Lib/site-packages/watchdog/tricks/__init__.pysubprocess call with shell=True — passes argv to /bin/sh.48
mediumPy Import Time Subprocessportman_proxy-0.1.2/testenv/Lib/site-packages/docutils/writers/odf_odt/__init__.pysubprocess call — process spawning.32
mediumPy Import Time Subprocessportman_proxy-0.1.2/testenv/Lib/site-packages/jaraco/context/__init__.pysubprocess call — process spawning.32
mediumPy Import Time Subprocessportman_proxy-0.1.2/testenv/Lib/site-packages/watchdog/tricks/__init__.pysubprocess call — process spawning.32
mediumPy Import Time Subprocessportman_proxy-0.1.2/verify/Lib/site-packages/watchdog/tricks/__init__.pysubprocess call — process spawning.32
mediumPy Import Time Eval Execportman_proxy-0.1.2/testenv/Lib/site-packages/jaraco/functools/__init__.pyPython eval()/exec() called on a string.24
mediumPy Import Time Eval Execportman_proxy-0.1.2/testenv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.pyPython eval()/exec() called on a string.24
mediumPy Import Time Eval Execportman_proxy-0.1.2/verify/Lib/site-packages/pip/_vendor/pkg_resources/__init__.pyPython eval()/exec() called on a string.24
highPy Import Time Network Callportman_proxy-0.1.2/testenv/Lib/site-packages/jaraco/context/__init__.pyNetwork call (urllib/requests/httpx/http.client) at install or import time.16
lowPy Import Time Base64 Decodeportman_proxy-0.1.2/testenv/Lib/site-packages/id/__init__.pybase64/hex decode in Python source.8
lowCredential file accessportman_proxy-0.1.2/testenv/Lib/site-packages/pip/_vendor/distlib/util.pymatched ".pypirc"5
lowCredential file accessportman_proxy-0.1.2/testenv/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.pymatched "id_rsa"5
lowCredential file accessportman_proxy-0.1.2/testenv/Lib/site-packages/pygments/lexers/_mapping.pymatched "id_rsa"5
lowCredential file accessportman_proxy-0.1.2/testenv/Lib/site-packages/pygments/lexers/asc.pymatched "id_rsa"5
lowCredential file accessportman_proxy-0.1.2/testenv/Lib/site-packages/twine/settings.pymatched ".pypirc"5
lowCredential file accessportman_proxy-0.1.2/testenv/Lib/site-packages/twine/utils.pymatched ".pypirc"5
lowCredential file accessportman_proxy-0.1.2/verify/Lib/site-packages/pip/_vendor/distlib/util.pymatched ".pypirc"5
lowCredential file accessportman_proxy-0.1.2/verify/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.pymatched "id_rsa"5
lowCredential file accessportman_proxy-0.1.2/verify/Lib/site-packages/pygments/lexers/_mapping.pymatched "id_rsa"5
lowCredential file accessportman_proxy-0.1.2/verify/Lib/site-packages/pygments/lexers/asc.pymatched "id_rsa"5