fix: stage root writes in a mktemp file, never at a fixed /tmp path
CI / test (3.10) (push) Successful in 46s
CI / test (3.11) (push) Successful in 39s
CI / test (3.12) (push) Successful in 53s
CI / test (3.10) (pull_request) Successful in 44s
CI / test (3.11) (pull_request) Successful in 47s
CI / test (3.12) (pull_request) Successful in 47s
CI / test (3.10) (push) Successful in 46s
CI / test (3.11) (push) Successful in 39s
CI / test (3.12) (push) Successful in 53s
CI / test (3.10) (pull_request) Successful in 44s
CI / test (3.11) (pull_request) Successful in 47s
CI / test (3.12) (pull_request) Successful in 47s
Now that a whole _sudo line runs as root, `mv /tmp/netork_snmpd.conf /etc/snmp/snmpd.conf && chown root:root … && chmod 644 …` would have let a local user plant a symlink at the fixed /tmp path and have root's chown and chmod follow it (e.g. to /etc/shadow). The same held for 00proxy. _install_file_as_root stages the content unprivileged in a fresh mktemp file (umask 077), checks the path it got back, and root installs it as a new regular file next to the target and renames it over: nothing root runs follows a symlink or changes the owner or mode of an existing path. Nothing runs as root when staging failed. get_vpn_tunnels always reads `wg show all dump` from the exec channel; the predictable /tmp/.netork_wg_<hash> file holding the private keys is gone.
This commit is contained in:
1 parent
cf8ee38a90
commit
108f6fb3ca
3 files changed
+307
-28
No files matched your search
@@ -32,6 +32,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
login user's `~/.bash_history` on your hosts and consider changing the
|
||||
password. `_sudo_status` takes the exit status from the channel; it is `None`
|
||||
only when the channel closed without one.
|
||||
- The snmpd and apt proxy fixes no longer stage their files at a fixed path in
|
||||
/tmp (`/tmp/netork_snmpd.conf`, `/tmp/netork_00proxy`) and then `mv`,
|
||||
`chown` and `chmod` them as root. Another local user could create that path
|
||||
first as a symlink, for example to `/etc/shadow`, and root's `chown`/`chmod`
|
||||
followed it. The content now goes to a fresh `mktemp` file under `umask 077`,
|
||||
written without privilege, and root `install`s it as a new file owned by root
|
||||
(mode 644) next to the target and renames it into place
|
||||
(`_install_file_as_root`). Nothing runs as root when staging failed.
|
||||
- `get_vpn_tunnels()` without a sudo password no longer writes `wg show all dump`
|
||||
(which includes the interfaces' private keys) to the predictable
|
||||
`/tmp/.netork_wg_<hash>`; the dump comes straight from the exec channel.
|
||||
|
||||
## [0.4.0] – 2026-10-08
|
||||
|
||||
|
||||
Reference in new issue
Block a user