github.com / AikidoSec
AikidoSec/ safe-chain
JavaScript·254 files·commit ee5e10c·scanned 6h ago·cached ✓
25/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.
score capped at 25 — 1,836 stars — findings likely legitimate code patterns
verdict accurate?
threat-state: lowlive
FINDINGS ░▒▓
what this code does░▒▓
What happens when you open, install or run it, from the findings below.
- when runinstall-scripts/install-endpoint-linux.sh and 2 other files download a script and pipe it to the shell. install-scripts/install-endpoint-linux.sh, install-scripts/install-endpoint-mac.sh, install-scripts/install-noon-mac.sh
criticalRemote script piped into a shellA shell script downloads remote content and executes it directly (e.g. `curl … | bash`). The payload is never stored or reviewable and can change server-side — a classic malware/backdoor install pattern.install-scripts/install-endpoint-linux.sh
# # Usage: curl -fsSL <url> | sudo sh -s -- --token <TOKEN> [--headless] [--container|--ci-cd] # or: curl -fsSL <url> | sudo AIKIDO_TOKEN=<TOKEN> sh -s -- [--headless] [--container|--ci-cd] #+10
criticalRemote script piped into a shellA shell script downloads remote content and executes it directly (e.g. `curl … | bash`). The payload is never stored or reviewable and can change server-side — a classic malware/backdoor install pattern.install-scripts/install-endpoint-mac.sh
# # Usage: curl -fsSL <url> | sudo sh -s -- --token <TOKEN> set -e # Exit on error+10
criticalRemote script piped into a shellA shell script downloads remote content and executes it directly (e.g. `curl … | bash`). The payload is never stored or reviewable and can change server-side — a classic malware/backdoor install pattern.install-scripts/install-noon-mac.sh
# # Usage: curl -fsSL <url> | sudo sh -s -- --token <TOKEN> set -e+10
infoSuspicious file in repoExecutable file (install-endpoint-windows.ps1) in repositoryinstall-scripts/install-endpoint-windows.ps1+2
infoSuspicious file in repoExecutable file (install-noon-windows.ps1) in repositoryinstall-scripts/install-noon-windows.ps1+2
infoSuspicious file in repoExecutable file (install-safe-chain.ps1) in repositoryinstall-scripts/install-safe-chain.ps1+2
Scores are heuristics. A “safe” verdict means no known-malicious patterns were found — clever malware can look boring. Wrong verdict? Flag it above; confirmed false positives become regression tests.
228 files scanned @ ee5e10c | 10/30/2026 | heuristic scan — always review manually
risk by category
code execution25
network & exfiltration0
file system access0
obfuscation0
supply chain15
owasp / injection0
telemetry
files 228/254rules hit 7engine v10commit ee5e10c
github
AikidoSec/safe-chain
Protect against malicious code installed via npm, yarn, pnpm, npx, pnpx, pip, uv and poetry with Aikido Safe Chain. Free to use, no tokens required.
1836
118
476d
254 files
228 scanned(90%)
ee5e10c
network indicators░▒▓
Hosts this code names or would connect to. Top 50 of 68, decoded and call-site destinations first. Informational, not scored.
- https://github.com/AikidoSec/safe-chain/releases/download/$urlnext to execinstall-scripts/install-safe-chain.sh:248 +1 more
- https://api.github.com/repos/AikidoSec/safe-chain/releases/latesturlnext to network callinstall-scripts/install-safe-chain.sh:157 +1 more
- https://help.aikido.dev/code-scanning/aikido-malware-scanning/…urlnext to execpackages/safe-chain/src/shell-integration/supported-shells/powershell.js:49 +1 more
- https://github.com/AikidoSec/safechain-internals/releases/download/v1.10.24urlinstall-scripts/install-endpoint-linux.sh:18
- https://github.com/AikidoSec/safechain-internals/releases/download/v1.10.24/EndpointProtection.pkgurlinstall-scripts/install-endpoint-mac.sh:10
- https://aikido-endpoint-binaries.s3.eu-west-1.amazonaws.com/v1.10.24/NoonSecurity.pkgurlinstall-scripts/install-noon-mac.sh:10
- https://pnpm.iourlpackages/safe-chain/package.json:43
- https://pnpm.io/cli/dlxurlpackages/safe-chain/package.json:43 +2 more
- https://rushjs.iourlpackages/safe-chain/package.json:43
- https://rushjs.io/pages/commands/rushx/urlpackages/safe-chain/package.json:43
- https://bun.shurlpackages/safe-chain/package.json:43
- https://bun.sh/docs/cli/bunxurlpackages/safe-chain/package.json:43
- https://docs.astral.sh/uv/urlpackages/safe-chain/package.json:43
- https://pip.pypa.iourlpackages/safe-chain/package.json:43
- https://pdm-project.orgurlpackages/safe-chain/package.json:43
- https://malware-list.aikido.devurlpackages/safe-chain/src/config/settings.js:371 +18 more
- https://files.pythonhosted.org/packages/00/00/$urlpackages/safe-chain/src/registryProxy/interceptors/pip/pipTestPackages.js:25
- pythonhosted.orgdomainpackages/safe-chain/src/registryProxy/interceptors/pip/pipInterceptor.js:25
- https://registry.internal.neturltest onlypackages/safe-chain/src/config/settings.spec.js:93
- http://registry.internal.neturltest onlypackages/safe-chain/src/config/settings.spec.js:111
- http://private.registry.iourltest onlypackages/safe-chain/src/config/settings.spec.js:130
- https://cli-mirror.comurltest onlypackages/safe-chain/src/config/settings.spec.js:571 +7 more
- https://env-mirror.comurltest onlypackages/safe-chain/src/config/settings.spec.js:579 +6 more
- https://config-mirror.comurltest onlypackages/safe-chain/src/config/settings.spec.js:588 +5 more
- https://npm.company.com/lodash/-/lodash-4.17.21.tgzurltest onlypackages/safe-chain/src/registryProxy/interceptors/npm/npmInterceptor.packageDownload.spec.js:277 +1 more
- https://registry.internal.net/@company/package/-/package-1.0.0.tgzurltest onlypackages/safe-chain/src/registryProxy/interceptors/npm/npmInterceptor.packageDownload.spec.js:297
- https://registry.internal.net/express/-/express-4.18.2.tgzurltest onlypackages/safe-chain/src/registryProxy/interceptors/npm/npmInterceptor.packageDownload.spec.js:320
- https://unknown.registry.com/package/-/package-1.0.0.tgzurltest onlypackages/safe-chain/src/registryProxy/interceptors/npm/npmInterceptor.packageDownload.spec.js:346
- https://files.pythonhosted.org/packages/source/r/requests/requests-1.0.0.tar.gzurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/modifyPipInfo.spec.js:37 +2 more
- https://files.pythonhosted.org/packages/source/r/requests/requests-2.0.0.tar.gzurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/modifyPipInfo.spec.js:38 +1 more
- https://files.pythonhosted.org/packages/xx/yy/foo_bar-2.0.0.tar.gzurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/modifyPipInfo.spec.js:121 +3 more
- https://files.pythonhosted.org/packages/xx/yy/foo_bar-1.0.0.tar.gzurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/modifyPipInfo.spec.js:122 +3 more
- https://files.pythonhosted.org/packages/source/r/requests/requests-2.28.1.tar.gzurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/parsePipPackageUrl.spec.js:68 +1 more
- https://files.pythonhosted.org/packages/xx/yy/….whlurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/parsePipPackageUrl.spec.js:77 +5 more
- https://private-pypi.internal.com/packages/….whlurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/pipInterceptor.customRegistries.spec.js:96
- https://files.pythonhosted.org/packages/xx/yy/foobar-1.2.3.tar.gzurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/pipInterceptor.customRegistries.spec.js:154 +1 more
- https://private-pypi.internal.com/packages/foo_bar-2.0.0-py3-none-any.whl.metadataurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/pipInterceptor.customRegistries.spec.js:193
- https://private-pypi.internal.com/packages/foo_bar-2.0.0.tar.gz.metadataurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/pipInterceptor.customRegistries.spec.js:212
- https://files.pythonhosted.org/packages/xx/yy/foo.bar-2.0.0.tar.gzurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/pipInterceptor.minPackageAge.spec.js:217
- https://files.pythonhosted.org/packages/xx/yy/foo_bar-2.0.0-py3-none-any.whl.metadataurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/pipInterceptor.packageDownload.spec.js:76
- https://files.pythonhosted.org/packages/xx/yy/foo_bar-2.0.0.tar.gz.metadataurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/pipInterceptor.packageDownload.spec.js:92
- https://files.pythonhosted.org/packages/xx/yy/foobar-latest.tar.gzurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/pipInterceptor.packageDownload.spec.js:124
- https://files.pythonhosted.org/packages/xx/yy/….gzurltest onlypackages/safe-chain/src/registryProxy/interceptors/pip/pipInterceptor.packageDownload.spec.js:165
- https://postman-echo.com/status/200urltest onlypackages/safe-chain/src/registryProxy/registryProxy.connect-tunnel.spec.js:72
- https://postman-echo.comurltest onlypackages/safe-chain/src/registryProxy/registryProxy.connect-tunnel.spec.js:88
- https://github.com/psf/requests.git@v2.32.3urltest onlytest/e2e/pip.e2e.spec.js:260 +2 more
- https://files.pythonhosted.org/packages/70/8e/…/….whlurltest onlytest/e2e/pip.e2e.spec.js:314 +1 more
- https://developer.microsoft.com/json-schemas/rush/v5/rush.schema.jsonurltest onlytest/e2e/utils/rushtestutils.mjs:28
- home.registry.comdomaintest onlypackages/safe-chain/src/config/configFile.spec.js:631 +1 more
- a.registry.comdomaintest onlypackages/safe-chain/src/config/configFile.spec.js:648 +1 more
architecture░▒▓
entry (0) flagged (0) pkg (17)
229 nodes · 474 edgesscroll to zoom · click node to jump to finding