Skip to content

Commit d9c5dce

Browse files
committed
docs(reach): document the network access reachability needs
`--reach` downloads the analysis engine from storage.googleapis.com through a signed URL from api.socket.dev, then installs the project's dependencies from each ecosystem's registry. None of that was documented, and the registry case fails quietly: the scan completes but reports every affected vulnerability as INSTALL ERROR. Add a "Reachability network access" section to the CLI reference with the hosts, what fails when each is blocked, and proxy behavior, plus a troubleshooting entry for the two failure signatures. Note that 2.11.0 was never published. Bump to 2.11.12 for the version check.
1 parent 911331c commit d9c5dce

6 files changed

Lines changed: 38 additions & 3 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# Changelog
22

3+
## 2.11.12
4+
5+
### Docs: reachability network access
6+
7+
- Documented the hosts `--reach` needs: `api.socket.dev`,
8+
`storage.googleapis.com` for the analysis engine download, and each scanned
9+
ecosystem's package registry for dependency installs. Covers what fails when
10+
each is blocked, including dependencies reported as `INSTALL ERROR` while the
11+
scan still completes, and that the CLI and engine honor `HTTPS_PROXY`.
12+
- Noted under 2.11.1 that 2.11.0 was never published.
13+
- Documentation-only; no functional code changes.
14+
315
## 2.11.11
416

517
### Changed: use lowercase Python CLI User-Agent
@@ -123,6 +135,9 @@ their changes ship here.
123135

124136
## 2.11.1
125137

138+
Version 2.11.0 was never published to PyPI or Docker Hub; its changes ship
139+
here.
140+
126141
### Changed: bump pinned Coana CLI to 15.12.10
127142

128143
- Bumped the pinned reachability engine (the Coana CLI) from `15.12.8` to

‎docs/cli-reference.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,20 @@ The Python CLI verifies the following **up front** (before invoking the analysis
366366
367367
Separately, the analysis engine (coana) needs the **per-ecosystem build toolchain** for whatever languages your project uses — e.g. a compatible Python interpreter (3.11+, or PyPy) for Python, a JDK for Java/Kotlin/Scala, .NET 6+ for C#, the matching Go toolchain for Go, etc. These are validated by the engine **at analysis time** (the CLI does not pre-check them) and that validation can be skipped with `--reach-disable-external-tool-checks`.
368368
369+
**Reachability network access:**
370+
371+
`--reach` downloads the analysis engine on first use and installs your project's dependencies to analyze them. On a restricted network, allow:
372+
373+
| Host | Used for | If blocked |
374+
|---|---|---|
375+
| `api.socket.dev` | Socket API calls, and a signed URL for the engine download | The CLI fails |
376+
| `storage.googleapis.com` | Downloading the engine and its analyzers (about 120 MB) | The CLI exits with code **3**: `Failed to run reachability analysis: HTTPSConnectionPool(host='storage.googleapis.com', ...)` |
377+
| The package registry of each scanned ecosystem, for example `registry.npmjs.org` | Installing your project's dependencies for analysis | The scan still completes, but the affected vulnerabilities are reported as `INSTALL ERROR` with no reachability result |
378+
379+
The engine comes from Socket, not npm, so an npm mirror or registry proxy does not cover the engine download. The registry row does not apply when your dependencies are already installed in the target path, for example a `node_modules` directory from an earlier `npm ci`. The engine is cached as described below; with a warm cache, `storage.googleapis.com` is not contacted.
380+
381+
Behind an HTTP(S) proxy, set `HTTPS_PROXY`. The CLI, the engine download and the engine itself all send their requests through it.
382+
369383
**Reachability analysis types:**
370384
371385
Socket's reachability analysis comes in three forms, referred to by their full names rather than the older "Tier" numbering:

‎docs/troubleshooting.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ total before assuming either path is at fault.
3636
- In `--sarif-scope full` with `--sarif-file`, SARIF JSON is written to file and stdout JSON is suppressed.
3737
- `--sarif-grouping alert` currently applies to `--sarif-scope full`.
3838

39+
## Reachability on a restricted network
40+
41+
- `Failed to run reachability analysis: HTTPSConnectionPool(host='storage.googleapis.com', ...)`: the engine download is blocked. Allow `storage.googleapis.com`, or set `HTTPS_PROXY`. An npm mirror does not cover it.
42+
- Every vulnerability reported as `INSTALL ERROR`: the engine could not install your dependencies. Allow the ecosystem's package registry, or install dependencies in the target path before running `--reach`.
43+
- See **Reachability network access** in the [CLI reference](cli-reference.md) for the full list of hosts.
44+
3945
## Dashboard vs CLI result counts
4046

4147
Differences in result counts can be valid, even when filtering appears similar.

‎pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
66

77
[project]
88
name = "socketsecurity"
9-
version = "2.11.11"
9+
version = "2.11.12"
1010
requires-python = ">= 3.11"
1111
license = {"file" = "LICENSE"}
1212
dependencies = [

‎socketsecurity/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
__author__ = 'socket.dev'
2-
__version__ = '2.11.11'
2+
__version__ = '2.11.12'
33
USER_AGENT_NAME = 'socket-python-cli'
44
USER_AGENT = f'{USER_AGENT_NAME}/{__version__}'

‎uv.lock‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)