Skip to content

Don't confirm etcd CRITICAL from an HTML mention - #46

Draft
cursor[bot] wants to merge 1 commit into
mainfrom
cursor/etcd-member-html-false-critical
Draft

cursor[bot] wants to merge 1 commit into
mainfrom
cursor/etcd-member-html-false-critical

Conversation

@cursor

@cursor cursor Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Port 2379 is in the default scan set, so every Active Probes / Full scan runs check_etcd_noauth.

Bug: A 200 response whose body merely contained the substring member (v3 path) or "action" / "node" (v2 path) confirmed CRITICAL unauthenticated etcd key-value access. Fusion treats source=probe + high reliability as pinned/un-droppable.

Trigger: Scan a host with 2379 open that is actually a docker-mapped frontend or SPA catch-all. GET /v2/keys or /v3/cluster/member/list returns the same HTML/JS bundle. Those bundles routinely contain "action", "node", or the word "member" (“Already a member?”, Redux actions, node_modules). The scan reports fusion-pinned CRITICAL etcd exposure.

Fix: Parse JSON and require a real etcd payload — v2 keys document (node object with key/dir/value) or v3 MemberList (members array of member objects with peerURLs/clientURLs/ID). HTML, health JSON, and generic {"action":…} objects no longer confirm.

Validation: python3 -m pytest test_probers.py -q — 46 passed, including new HTML/JS negative cases and v2/v3 JSON positive cases.

Open in Web View Automation 

Port 2379 is in the default scan set. GET /v2/keys or /v3/cluster/member/list
returning 200 with a substring like member, "action", or "node" was enough to
pin unauthenticated etcd access. SPA catch-alls and JS bundles contain those
tokens; fusion then treats source=probe findings as un-droppable.

Require the JSON v2 keys document (node with key/dir/value) or v3 MemberList
(members array of member objects).

Co-authored-by: dmitryflynn <dmitryflynn@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant