aboutsummaryrefslogtreecommitdiffhomepage
path: root/main.go
AgeCommit message (Collapse)Author
2025-02-18sys: rename from linuxOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-02-18linux: wrap fsu lookup errorOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-02-18fmsg: export logBaseError functionOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-02-17system: move out of internalOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-02-16fmsg: implement suspend in writerOphestra
This removes the requirement to call fmsg.Exit on every exit path, and enables direct use of the "log" package. However, fmsg.BeforeExit is still encouraged when possible to catch exit on suspended output. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-02-16internal: move shim and init into appOphestra
This structure makes more sense, as both processes are part of an app's lifecycle. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-02-15fortify: prevent exit status 0 on app failureOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-02-14fortify: check print behaviourOphestra
These output are supposed to be deterministic, so checking them is a good way to catch regressions. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-02-13helper: use generic extra files interfaceOphestra
This replaces the pipes object and integrates context into helper process lifecycle. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-02-08helper/proc: move package out of internalOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-01-25helper/seccomp: separate seccomp packageOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-01-22fortify: set up seccomp verbose logging earlyOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-01-22helper/bwrap: integrate seccomp into helper interfaceOphestra
This makes API usage much cleaner, and encapsulates all bwrap arguments in argsWt. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-01-20proc/priv/shim: resolve and load seccomp rulesOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-01-18proc/priv/init: early init checkOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-01-18proc/priv/init: merge init into main programOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-01-17proc/priv/shim: merge shim into main programOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-01-15app: expose single run methodOphestra
App is no longer just a simple [exec.Cmd] wrapper, so exposing these steps separately no longer makes sense and actually hinders proper error handling, cleanup and cancellation. This change removes the five-second wait when the shim dies before receiving the payload, and provides caller the ability to gracefully stop execution of the confined process. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-01-01linux/std: handle fsu exit status 1Ophestra
Printing "exit status 1" is confusing. This handles the ExitError and returns EACCES instead. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-01-01fortify: show system info when instance is not specifiedOphestra
This contains useful information not obtainable by external tools. Signed-off-by: Ophestra <cat@gensokyo.uk>
2024-12-23fortify: clean up config loadingOphestra
Move duplicate code to function. Also handle - as config from stdin. Signed-off-by: Ophestra <cat@gensokyo.uk>
2024-12-22fortify: show short mode omit filesystemsOphestra
Filesystem information can be quite noisy in permissive defaults. Signed-off-by: Ophestra <cat@gensokyo.uk>
2024-12-21fortify: clean up ps formatting codeOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2024-12-21fortify: move json indent callOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2024-12-21fortify: move show formatting out of mainOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2024-12-21fortify: config/state pretty-print subcommandOphestra
Signed-off-by: Ophestra <cat@gensokyo.uk>
2024-12-20migrate to git.gensokyo.uk/security/fortifyOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-12-19fortify: remove systemd checkOphestra Umiker
This is no longer necessary as fortify no longer integrates with external user switchers. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-12-18fst: rename from fipcOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-12-18fipc: export config structOphestra Umiker
Also store full config as part of state. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-12-06fortify: rename --dbus-id to --idOphestra Umiker
This value is no longer specific to D-Bus defaults. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-11-19fortify: use resolved usernameOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-11-18fortify: permissive defaults resolve home directory from osOphestra Umiker
When starting with the permissive defaults "run" command, attempt to resolve home directory from os by default and fall back to /var/empty. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-11-18app: alternative inner home pathOphestra Umiker
Support binding home to an alternative path in the mount namespace. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-11-16app: integrate fsuOphestra Umiker
This removes the dependency on external user switchers like sudo/machinectl and decouples fortify user ids from the passwd database. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-11-05fortify: root check before command handlingOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-11-05fortify: override default usage functionOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-11-05fortify: implement cleaner argument structureOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-11-02fortify: replace direct syscall with prctl wrapperOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-11-02cmd: shim and init into separate binariesOphestra Umiker
This change also fixes a deadlock when shim fails to connect and complete the setup. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-10-27fortify: exit if seal returns errorOphestra Umiker
Wait should not be called on an unsealed App. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-10-27system: move sd_booted implementation to os abstractionOphestra Umiker
This implements lazy loading of the systemd marker (they are not accessed in init and shim) and ensures consistent behaviour when running with a stub. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-10-27shim: user switcher process management structOphestra Umiker
This change moves all user switcher and shim management to the shim package and withholds output while shim is alive. This also eliminated all exit scenarios where revert is skipped. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-10-23internal: wrap calls to os standard library functionsOphestra Umiker
This change helps tests stub out and simulate OS behaviour during the sealing process. This also removes dependency on XDG_RUNTIME_DIR as the internal.System implementation provided to App provides a compat directory inside the tmpdir-based share when XDG_RUNTIME_DIR is unavailable. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-10-21fmsg: produce all output through fmsgOphestra Umiker
The behaviour of print functions from package fmt is not thread safe. Functions provided by fmsg wrap around Logger methods. This makes prefix much cleaner and makes it easy to deal with future changes to logging. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-10-20migrate to git.ophivana.moe/security/fortifyOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-10-20app: move app ID to app structOphestra Umiker
App ID is inherent to App, and it makes no sense to generate it as part of the app sealing process. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-10-14fortify: move PR_SET_DUMPABLE to the beginning of mainOphestra Umiker
This call does need flag values. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-10-14init: custom init process inside sandboxOphestra Umiker
Bubblewrap as init is a bit awkward and don't support a few setup actions fortify will need, such as starting/supervising nscd. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-10-13fortify: refuse to run as rootOphestra Umiker
There is no good reason to run fortify as root and desktop environments typically do not like that either. This check prevents confusion for new users who might mistakenly run it as root or set the setuid bit. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>