Commit graph

4956 commits

Author SHA1 Message Date
dogknowsnx
b07e47ea59
profiles: blobby: allow lua (#7102)
Environment: `firejail version 0.9.79`.

Fixes error:

    $ firejail blobby
    Reading profile /etc/firejail/blobby.profile
    blobby: error while loading shared libraries: liblua5.2.so.5.2: cannot open shared object file: Permission denied
2026-03-14 02:49:57 +00:00
Kelvin M. Klann
09edc29b36
profiles: halloy: sort misc 2026-03-12 07:07:06 +00:00
Kelvin M. Klann
06a42773da
profiles: halloy: format misc 2026-03-12 07:05:52 +00:00
powerjungle
6755ec8aa0
profiles: new profile for halloy IRC client
https://halloy.chat
2026-03-11 20:18:15 +01:00
Kelvin M. Klann
09329b990f modif: replace --keep-hostname with new --hostname-randomize
Changes:

* Keep hostname by default (same as using `--keep-hostname`)
* Add  `--hostname-randomize` command to randomize the hostname
* Ignore `--keep-hostname` command and print a warning if it is used

Setting a different hostname inside of the sandbox may prevent X11
programs from authenticating to the X server and displaying windows at
all (see #7062).

To avoid breakage, keep the hostname as is by default and only set it to
a random value if a new `hostname-randomize` command is used.

This also avoids potentially surprising behavior, as the user might not
expect the hostname to be changed inside of the sandbox, considering
that usually the protections that are applied firejail involve
restricting access to resources (like file paths), rather than modifying
their values inside of the sandbox.

Fixes #7062

Relates to #7048 #7069.
2026-03-08 02:12:26 -03:00
pierretom
0a786af928 include the syscall header for the x32 ABI
Also add the new syscall `rseq_slice_yield` to the `@process` group.
2026-03-05 15:40:49 +01:00
pierretom
e9cccefe1d update all system call headers 2026-03-05 14:49:33 +01:00
pierretom
4d14e1da4b update for the gettimeofday syscall
- src/lib/syscall.c
  - Update the comment to also match `gettimeofday`
  - Sort the content of `@default-keep` by alphabetical order
- etc/templates/syscalls.txt
  - Update the Definition of groups
2026-03-02 09:40:12 +01:00
Kelvin M. Klann
c8a67075bf profiles: disable-common: sort list of terminal emulators
This amends commit cbf43089f ("update the list of terminal emulators
that can be used for sandbox escape", 2026-01-19).
2026-02-27 09:49:39 -03:00
Kelvin M. Klann
167a0ea74a Fix misc whitespace
Command used to check for whitespace errors:

    $ git diff --check 0.9.78..
2026-02-23 13:20:38 -03:00
Kelvin M. Klann
df75e45cfd profiles: add keep-hostname to noprofile.profile
Related to this, trying to open xorg programs stopped working on Arch
recently (even with `--profile=noprofile`), producing the following
error[1]:

    $ /usr/local/bin/thunderbird
    [...]
    Authorization required, but no authorization protocol specified

    Error: cannot open display: :0

    Parent is shutting down, bye...

The programs work if `--keep-hostname` is used.

The workaround was found quickly, but mostly by luck and guesswork, as
needing to use a profile command when even `--profile=noprofile` does
not work is counterintuitive and unexpected.

Related commits:

* cc8b019b5 ("--keep-hostname part 1 (#7048)", 2026-02-03)
* e31d872a5 ("profiles: add keep-hostname to profile.template",
  2026-02-11)

Relates to #7062.

[1] https://github.com/netblue30/firejail/issues/7062#issue-3943568845
2026-02-19 03:14:47 -03:00
Kelvin M. Klann
88652cdb38
profiles: firefox: add new ~/.config/mozilla dir (#7061)
Default directories in Firefox 146 and earlier:

* ~/.cache/mozilla  # cache files
* ~/.mozilla        # config and data

In Firefox 147[1]:

* ~/.cache/mozilla  # cache files
* ~/.config/mozilla # config and data

Note that the new location apparently contains the same files as in the
former location (including settings, bookmarks, extensions, etc).
That is, even though the new directory resides in `$XDG_CONFIG_HOME` /
~/.config, it is not solely used for program configuration as described
in the XDG Base Directory specification[2] and `$XDG_DATA_HOME` /
~/.local/share/mozilla is seemingly not used at all (see also the
discussion in the bug tracker[3]).

Commands used to search and replace:

    $ perl -pi -e 's/(.* )(\${HOME}\/\.mozilla)(.*)/$1\${HOME}\/.config\/mozilla$3\n$1$2$3/' \
      -- \
      etc/inc/*.inc \
      etc/profile*/*.profile \

Note: The entries in the following profiles were sorted manually:

* etc/inc/disable-common.inc
* etc/inc/disable-programs.inc
* etc/profile-a-l/keepassxc.profile
* etc/profile-a-l/krunner.profile
* etc/profile-m-z/seamonkey.profile

Relates to #7040.

[1] https://www.firefox.com/en-US/firefox/147.0/releasenotes/
[2] https://specifications.freedesktop.org/basedir/latest/
[3] https://bugzilla.mozilla.org/show_bug.cgi?id=259356
2026-02-15 08:49:28 +00:00
Kelvin M. Klann
e46d9adcf1
profiles: fix allowing netcat (#7059)
disable-common.inc has these lines:

    blacklist ${PATH}/nc
    blacklist ${PATH}/nc.openbsd
    blacklist ${PATH}/nc.traditional
    blacklist ${PATH}/ncat

With openbsd-netcat on Artix, `/usr/bin/nc.openbsd` is symlinked to
`/usr/bin/nc`:

    $ pacman -Fl gnu-netcat openbsd-netcat | grep bin/nc
    gnu-netcat usr/bin/nc
    openbsd-netcat usr/bin/nc
    openbsd-netcat usr/bin/nc.openbsd
    $ realpath /usr/bin/nc.openbsd
    /usr/bin/nc

So `noblacklist ${PATH}/nc` is not enough, as
`blacklist ${PATH}/nc.openbsd` will follow the symlink to `/usr/bin/nc`
and still blacklist it.

To prevent `/usr/bin/nc` from being blacklisted,
`noblacklist ${PATH}/nc.openbsd` is also needed in this case.

To ensure that netcat is allowed, always `noblacklist` all netcat paths.

Fixes #6911.
2026-02-11 19:14:21 +00:00
Kelvin M. Klann
e31d872a51 profiles: add keep-hostname to profile.template
Put it together with the other `keep-` commands.

And move it to the allow section in libreoffice.profile.

Related commits:

* cc8b019b5 ("--keep-hostname part 1 (#7048)", 2026-02-03)
* fbc94070e ("adding keep-hostname to libreoffice.profile", 2026-02-11).

Relates to #7048.
2026-02-11 16:10:47 -03:00
netblue30
fbc94070ef adding keep-hostname to libreoffice.profile 2026-02-11 10:31:58 -05:00
netblue30
c13331305c adding apparmor profiles for --nettrace option 2026-02-11 09:17:22 -05:00
netblue30
46134f6972 added link-local addresses to 'nolocal' firewall configs (#7054) 2026-02-06 20:40:02 -05:00
netblue30
ca934a2ccd disable by default some of the systemd tools, more cleanup, and more testing 2026-02-04 07:34:07 -05:00
pierretom
f281d76f24 move other syscalls considered deprecated into @obsolete
`futimesat`, `gettimeofday`, `remap_file_pages`, `settimeofday`, `tkill` and `utime`.
2026-01-28 16:09:05 +01:00
pierretom
825fb24ff1 place some syscalls with access to a clock, used for time reading, theoretical resolution and sleep functions into @default-keep
Also move `stime` into `@obsolete`, see `man 2 stime`.
2026-01-28 13:11:23 +01:00
netblue30
3c44462b85
Merge pull request #7039 from pierretom/patch12
update system call groups - part 4
2026-01-27 10:33:29 -05:00
sofoxe1
b59005ccf0
profiles: vesktop: fix screen sharing (#7043) 2026-01-27 07:26:11 +00:00
pierretom
85625e46e6 add missing syscalls in groups 2026-01-24 15:11:49 +01:00
pierretom
f5e01fcc56 update system call groups - part 4
- Remove extra empty lines
- Definition of groups:
  - Add the two new groups `@memfd` and `@sandbox`
  - Add new syscalls
- Inheritance of groups:
  - Redraw it in a clearer form of groups and subgroups
  - Add the two new groups
  - Sort `@mount` and `@obsolete` groups by alphabetical order

This is the last part.
2026-01-22 16:21:01 +01:00
netblue30
cbf43089fb update the list of terminal emulators that can be used for sandbox escape 2026-01-19 09:35:08 -05:00
Kelvin M. Klann
2ba2f2d7a1 profiles: add deno paths
Add paths in the same places as nodejs/npm paths.

Deno is a javascript runtime and development tool similar to nodejs.

The following paths seem to be intended for downloading and caching
dependencies (and apparently also artifacts from .ts to .js compilation)
globally during development (as can be done with ~/.npm):

* ~/.cache/deno
* ~/.deno

Note that this commit makes these paths read-only (as npm dependencies
are usually executable code), which may potentially affect users of the
runtime (like yt-dlp).

Related commits:

* f2de86464 ("tentative fix for yt-dlp/javaScript deno profile (#6999)",
  2026-01-13)
2026-01-14 04:07:21 -03:00
Kelvin M. Klann
f3b2d2927d profiles: yt-dlp: reword misc
For clarity.

Related commits:

* f2de86464 ("tentative fix for yt-dlp/javaScript deno profile (#6999)",
  2026-01-13)
* d7f903b21 ("more on yt-dlp profile", 2026-01-13)
2026-01-13 22:41:57 -03:00
Kelvin M. Klann
5940f4c653 profiles: yt-dlp: sort noblacklist section
Related commits:

* 98492f4f3 ("refactor yt-dlp", 2023-03-09) / PR #5715
* f2de86464 ("tentative fix for yt-dlp/javaScript deno profile (#6999)",
  2026-01-13)
2026-01-13 22:31:55 -03:00
netblue30
26c8d60c60 whitespace 2026-01-13 12:15:58 -05:00
netblue30
d7f903b21d more on yt-dlp profile 2026-01-13 12:14:25 -05:00
netblue30
fa6bfd751e Merge pull request #7029 from KhoTeru/profile/zen-browser
New profiles: zen, zen-bin, zen-browser
2026-01-13 10:01:19 -05:00
netblue30
42411e9923 make sort-profiles 2026-01-13 09:56:37 -05:00
netblue30
f2de86464d tentative fix for yt-dlp/javaScript deno profile (#6999) 2026-01-13 09:49:39 -05:00
Teru
09e376dc51
New profiles: zen, zen-bin, zen-browser 2026-01-11 21:57:31 -05:00
netblue30
9882aa0bb2
Merge pull request #6996 from HybridDog/srb2_profile
new profile: srb2
2026-01-11 19:51:19 -05:00
Dmitriy Baranov
97871d7632 New profile: fragments
Fast, easy and free BitTorrent client (GTK4 GUI for transmission-daemon):
https://gitlab.gnome.org/World/Fragments

The profile is based on transmission-common and transmission-gtk profiles.
Only added dbus permissions and changed default paths.
2026-01-10 02:12:53 +03:00
StellariusOrion592
196de37df4
new profile: quakespasm (#7014)
QuakeSpasm is a modern multi-platform Quake source port designed as an
improved successor to GLQuake and FitzQuake. It aims to preserve the
classic gameplay and graphics while enhancing compatibility and
modernization.

https://sourceforge.net/projects/quakespasm
2026-01-02 18:19:03 +00:00
StellariusOrion592
fd76695fa4
new profile: gzdoom (#7010)
One of the profile requests lists GZDoom.

So create profiles for GZDoom and its variants: UZDoom and LZDoom.

GZDoom served as the primary port for several years after ZDoom was
discontinued.

UZDoom has now become the latest version targeting systems with modern
graphics hardware.

LZDoom is geared towards systems with legacy hardware.

All three profiles work.

https://zdoom.org
2025-12-31 19:34:10 +00:00
StellariusOrion592
7a52945182
new profile: openra (#7005)
OpenRA is an open source project that recreates and modernizes classic
real time strategy games, like Red Alert, Command & Conquer, and Dune
2000.

This profile works for all three AppImage editions of Openra: Red Alert,
Tiberium Dawn, and Dune 2000.

https://www.openra.net
2025-12-30 20:14:57 +00:00
Kelvin M. Klann
170519d83d profiles: libreoffice: sort noblacklist section
This amends commit 4ce422bfd ("libreoffice.profile update", 2025-12-27).
2025-12-28 09:14:43 -03:00
netblue30
4ce422bfdb libreoffice.profile update 2025-12-27 10:26:49 -05:00
Kelvin M. Klann
a0770eb333 profiles: run sort.py to fix ci
Command used:

    $ ./ci/check/profiles/sort.py etc/inc/*.inc etc/profile-*/*.profile

This amends commit a98a1d281 ("bwrap replacement - part 6 - allow
/lib/libexec", 2025-12-20).
2025-12-20 18:23:27 -03:00
netblue30
a98a1d2816 bwrap replacement - part 6 - allow /lib/libexec 2025-12-20 12:27:12 -05:00
Kelvin M. Klann
e4294defd8 build: remove remnants of overlayfs/--overlay
Remove what remains of the overlayfs support, `--overlay` commands and
the `--enable-overlayfs` configure option.

Commands:

* `--overlay`
* `--overlay-named=`
* `--overlay-clean`
* `--overlay-tmpfs`

firejail.config:

* `overlayfs`

Related commits:

* 489cc25c2 ("cleaned up old overlayfs code; the feature was disabled by
  default in 2021 because of security problems", 2025-12-16).
* b537aa57b ("fixed /sys mounting broken during overlayfs cleanup",
  2025-12-18)

Relates to #6994.

Note: Code with `RUN_OVERLAY_ROOT` / `oroot` is left as is, since it
seems to also be used by `--chroot`:

    $ git grep -E '[^n]oroot'
    etc/apparmor/firejail-default:# Line starting with /run/firejail/mnt/oroot deal with --overlay sandboxes.
    etc/apparmor/firejail-default:/{,run/firejail/mnt/oroot/}{dev,etc,home,media,mnt,root,srv,tmp,var}/** w,
    etc/apparmor/firejail-default:# to run programs from your home directory, add "/{,run/firejail/mnt/oroot/}home/** ix,"
    etc/apparmor/firejail-default:/{,run/firejail/mnt/oroot/}{,usr/,usr/local/}bin/** ix,
    etc/apparmor/firejail-default:/{,run/firejail/mnt/oroot/}{,usr/,usr/local/}sbin/** ix,
    etc/apparmor/firejail-default:/{,run/firejail/mnt/oroot/}{,usr/,usr/local/}games/** ix,
    etc/apparmor/firejail-default:/{,run/firejail/mnt/oroot/}{,usr/,usr/local/}lib{,32,64,exec}/** ix,
    etc/apparmor/firejail-default:/{,run/firejail/mnt/oroot/}{,usr/,usr/local/}opt/** ix,
    etc/apparmor/firejail-default:#/{,run/firejail/mnt/oroot/}home/** ix,
    etc/apparmor/firejail-default:/{,run/firejail/mnt/oroot/}{,var/}run/firejail/appimage/** ix,
    src/firejail/chroot.c:  // create /run/firejail/mnt/oroot
    src/firejail/chroot.c:  char *oroot = RUN_OVERLAY_ROOT;
    src/firejail/chroot.c:  if (mkdir(oroot, 0755) == -1)
    src/firejail/chroot.c:  // mount the chroot dir on top of /run/firejail/mnt/oroot in order to reuse the apparmor rules for overlay
    src/firejail/chroot.c:  if (bind_mount_fd_to_path(parentfd, oroot))
    src/firejail/chroot.c:          errExit("mounting rootdir oroot");
    src/firejail/chroot.c:  if (chroot(oroot) < 0)
    src/include/rundefs.h:#define RUN_OVERLAY_ROOT          RUN_MNT_DIR "/oroot"
2025-12-19 16:35:02 -03:00
Kelvin M. Klann
381c3cf1a3 build: remove remnants of IDS/fids
Remove what remains of the Intrusion Detection System (IDS)/fids,
`--ids` commands and the `--enable-ids` configure option.

Commands:

* `--ids-check`
* `--ids-init`

Related commits:

* 5e962ff78 ("removed IDS feature, it was never enabled by default in
  our builds", 2025-12-17)

Relates to #6995.
2025-12-19 15:24:37 -03:00
Kelvin M. Klann
6804120894 ci: run sort.py to fix ci
Command used:

    $ ./ci/check/profiles/sort.py etc/inc/*.inc etc/profile-*/*.profile

Related commits:

* 411b97fdc ("profile fixes: allow bwrap inside the sandbox",
  2025-12-18)
* bb5c1391c ("added gnome-text-editor profile", 2025-12-19)
2025-12-19 15:23:17 -03:00
HybridDog
6416bdbe4c remove the whitelist-run-common.inc as it reduces FPS significantly 2025-12-19 17:53:40 +01:00
HybridDog
f371436053 fix mistake in private-etc and add whitelist includes 2025-12-19 17:35:02 +01:00
HybridDog
dfed639485 Add a profile for srb2
Sonic Robo Blast 2 is implemented in C, occasionally crashes with memory
access errors and has a multiplayer mode with insecure network traffic,
so I think it's a good candidate for sandboxing.
2025-12-19 16:57:13 +01:00
netblue30
b00ff53fe0 gnome-text-editor 2025-12-19 10:29:02 -05:00