wifi.rs shells a raw nmcli … password … fallback — same argv/history leak as CRUMB-5, but inside breadbar itself #16
Labels
No labels
bug
ci
enhancement
feature
privacy
security
theme-system
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Breadway/breadbar#16
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What's broken
Found as a side-effect of fixing CRUMB-5 (breadcrumbs'
add <ssid> [password]leaking the Wi-Fi password onto argv/shell history via a positional CLI arg).src/bar/wifi.rs:182-193(spawn_add_and_join), breadbar's "join network" GUI dialog handler, does two things with the password:breadcrumbs add <ssid> <password>positionally — this is the caller CRUMB-5's fix (git.breadway.dev/Breadway/breadcrumbs/pulls/7) deliberately stayed backward-compatible with, since removing the positional arg outright would break this exact call site. That PR adds--password-stdinas the preferred path and a deprecation warning on the positional form.nmcli … password …fallback command — this is a second, independent instance of the same leak class, entirely inside breadbar, unrelated to breadcrumbs' CLI surface.Both put the plaintext Wi-Fi password into this process's argv (visible to any other local user via
ps//proc/<pid>/cmdline) and, if either path is ever invoked from a shell rather than spawned directly, into shell history.Fix
breadcrumbs addcall to--password-stdin(now available per CRUMB-5's fix) instead of the positional arg.nmcli … password …invocation withnmcli's stdin/--asksecret-input path, or route throughbreadcrumbs(D-Bus-based, already the ecosystem's designated secret-safe path per breadcrumbs' own rework history) instead of shellingnmclidirectly.Repro
ps -ef | grep -E 'breadcrumbs add|nmcli'(or watch/proc/<pid>/cmdline) during the connect — the password is visible in plaintext in the process arguments.