diff --git a/.fapolicyd.metadata b/.fapolicyd.metadata index 7806769..a5e8465 100644 --- a/.fapolicyd.metadata +++ b/.fapolicyd.metadata @@ -1,3 +1,3 @@ -0c3e18b68cc92611ed45fe884229351eaebdf170 SOURCES/fapolicyd-1.3.3.tar.gz -ec91994fc4257a8d1a76e1c98eeccaf97ef4178f SOURCES/fapolicyd-selinux-0.7.tar.gz +b3683876c0f612632c662956c95ffa1a6200c3e8 SOURCES/fapolicyd-1.4.5.tar.gz +7738046b00e2fde870ee483ff8ccb8235ecfcee1 SOURCES/fapolicyd-selinux-1.1.tar.gz fbafa356359ace80787ce6634d84425b40d90907 SOURCES/uthash-2.3.0.tar.gz diff --git a/.gitignore b/.gitignore index 64d7ef1..0f48b65 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -SOURCES/fapolicyd-1.3.3.tar.gz -SOURCES/fapolicyd-selinux-0.7.tar.gz +SOURCES/fapolicyd-1.4.5.tar.gz +SOURCES/fapolicyd-selinux-1.1.tar.gz SOURCES/uthash-2.3.0.tar.gz diff --git a/SOURCES/Add-var-lib-fapolicyd-to-tmpfiles.patch b/SOURCES/Add-var-lib-fapolicyd-to-tmpfiles.patch deleted file mode 100644 index 4ea65dd..0000000 --- a/SOURCES/Add-var-lib-fapolicyd-to-tmpfiles.patch +++ /dev/null @@ -1,28 +0,0 @@ -From de7b5e953e56ecad497878d1113abd8c10d8a453 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Fri, 15 Aug 2025 12:38:04 +0200 -Subject: [PATCH] Add /var/lib/fapolicyd to tmpfiles -Content-type: text/plain - -On image based system, /var/lib/fapolicyd is not created during rpm -installation but needs to be created during boot using tmpfiles.d - -Fixes: - fapolicyd[1463]: Failed writing db version No such file or directory - -Signed-off-by: Petr Lautrbach ---- - init/fapolicyd-tmpfiles.conf | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/init/fapolicyd-tmpfiles.conf b/init/fapolicyd-tmpfiles.conf -index 24459d340d3c..84fbaa1cf6ed 100644 ---- a/init/fapolicyd-tmpfiles.conf -+++ b/init/fapolicyd-tmpfiles.conf -@@ -1,1 +1,3 @@ - d /run/fapolicyd 0770 root fapolicyd - -+d /var/lib/fapolicyd 770 root fapolicyd - -+Z /etc/fapolicyd - root fapolicyd - --- -2.50.1 - diff --git a/SOURCES/bachradsusi.gpg b/SOURCES/bachradsusi.gpg new file mode 100644 index 0000000..aa060bb --- /dev/null +++ b/SOURCES/bachradsusi.gpg @@ -0,0 +1,438 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +dBW9kxiuWpZN3Q== +=iuRK +-----END PGP PUBLIC KEY BLOCK----- \ No newline at end of file diff --git a/SOURCES/fapolicyd-1.4.5.tar.gz.asc b/SOURCES/fapolicyd-1.4.5.tar.gz.asc new file mode 100644 index 0000000..9723686 --- /dev/null +++ b/SOURCES/fapolicyd-1.4.5.tar.gz.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +wsG7BAABCgBvBYJpxNfQCRD7TGhbXcHBPkcUAAAAAAAeACBzYWx0QG5vdGF0aW9u +cy5zZXF1b2lhLXBncC5vcmeSbYk39v6AWRXAJKi7QqR50/F2a+qLBgekvRhg9+T5 +DRYhBGjSGCM0KhNoOus+TvtMaFtdwcE+AAD3LxAAjhRIu2JBEKFSWIFGJKqkS885 +yL7JGlDDWXIXAOS8QY4+doKhTpd3wI50ETRZO1N7+mBMQG0dG0VoakIQsbJKIlFX +9ifBmTfvnBGhD8YTI+pUQLAVLat8TFSBbxL3/awEaUZ+JXEoSlnDbzV9jOLVeNZb +d5Cc4RNXcchH42EwgPBeTY7OUXrXKeSpDeZPRSzu57bLsog9PigVeH7QoLew0KEC +iQFbTc13giT/kMjh7Fc1KB3kPblbDBVC2xYPaGd/JwowFNde1ZCcrGa8Dccff/BE +MEWzHZTMUm4TN4EDHdzqmJhUZ88U8awPHy9j0YmZZ1Z3nAsEJ8WwyMOFSt60WVHx +8EJ/SvBG69v0U3MlMqlAEsXZwKun4s/YED9Fw/Sywy9Iy2q3mVajMzlWC8xWYO8V +0NBPA6Ecz/Misk9MYnrEt63H2eysW3io7SYgTDopk79TIar7MUiB4r4JWg3rTnfg +2IvGpjOaJ+pi7hkZ2HF1hwXrQaf/RYQxLUolOVxkbs7yg603VbIQDbt/9iCei+U1 +1qefKKabJkwMBjSlBOILfiAcxrOF6D6/8lN+ScAQUMDlYqbAUMJ2xqQgNGOGW965 +3olB693tlI/xVem3hjUnLS+HYXLlq4R5pTfvm+offYhe7myqkvfQ8XOhgptINZPy +AI40vsRDjx8gRxOqaR4= +=Vv69 +-----END PGP SIGNATURE----- diff --git a/SOURCES/fapolicyd-data-format.patch b/SOURCES/fapolicyd-data-format.patch deleted file mode 100644 index c39fba8..0000000 --- a/SOURCES/fapolicyd-data-format.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 6ce38340bd0ed3863259224de613ef6a29ca9297 Mon Sep 17 00:00:00 2001 -From: Radovan Sroka -Date: Sun, 20 Jul 2025 20:56:34 +0200 -Subject: [PATCH] ddasd - -Signed-off-by: Radovan Sroka ---- - src/library/fapolicyd-backend.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/library/fapolicyd-backend.h b/src/library/fapolicyd-backend.h -index 2844780..26f0a54 100644 ---- a/src/library/fapolicyd-backend.h -+++ b/src/library/fapolicyd-backend.h -@@ -32,7 +32,8 @@ - typedef enum { SRC_UNKNOWN, SRC_RPM, SRC_FILE_DB, SRC_DEB } trust_src_t; - - // source, size, sha --#define DATA_FORMAT "%u %lu %64s" -+// do not pad the hash value so SHA1 and SHA256 digests parse correctly -+#define DATA_FORMAT "%u %lu %s" - - typedef struct _backend - { --- -2.50.1 - diff --git a/SOURCES/fapolicyd-infinite-loop.patch b/SOURCES/fapolicyd-infinite-loop.patch deleted file mode 100644 index 87826b3..0000000 --- a/SOURCES/fapolicyd-infinite-loop.patch +++ /dev/null @@ -1,67 +0,0 @@ -From baf402ccaf16bc993ce34d4e4ed08aa283cd2c94 Mon Sep 17 00:00:00 2001 -From: Radovan Sroka -Date: Fri, 18 Jul 2025 10:55:12 +0200 -Subject: [PATCH] Fix an infinite loop - -- either malloc fail or corruped data from lmdb can cause -"fapolicyd -D" to hang in infinite loop - -Signed-off-by: Radovan Sroka ---- - src/cli/fapolicyd-cli.c | 30 ++++++++++++++++-------------- - 1 file changed, 16 insertions(+), 14 deletions(-) - -diff --git a/src/cli/fapolicyd-cli.c b/src/cli/fapolicyd-cli.c -index 0c72733c..7eddf4e2 100644 ---- a/src/cli/fapolicyd-cli.c -+++ b/src/cli/fapolicyd-cli.c -@@ -185,33 +185,35 @@ static int do_dump_db(void) - goto txn_abort; - } - do { -- char *path, *data, sha[65]; -+ char *path = NULL, *data = NULL, sha[65]; - unsigned int tsource; - off_t size; - const char *source; - -- path = malloc(key.mv_size+1); -+ path = malloc(key.mv_size + 1); - if (!path) -- continue; -+ goto next_record; -+ - memcpy(path, key.mv_data, key.mv_size); - path[key.mv_size] = 0; -- data = malloc(val.mv_size+1); -- if (!data) { -- free(path); -- continue; -- } -+ data = malloc(val.mv_size + 1); -+ -+ if (!data) -+ goto next_record; -+ - memcpy(data, val.mv_data, val.mv_size); - data[val.mv_size] = 0; -- if (sscanf(data, DATA_FORMAT, &tsource, &size, sha) != 3) { -- free(data); -- free(path); -- continue; -- } -+ -+ if (sscanf(data, DATA_FORMAT, &tsource, &size, sha) != 3) -+ goto next_record; -+ - source = lookup_tsource(tsource); - printf("%s %s %lu %s\n", source, path, size, sha); -+ -+next_record: - free(data); - free(path); -- // Try to get the duplicate. If doesn't exist, get the next one -+ // Try to get the duplicate. If it doesn't exist, get the next one - rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT_DUP); - if (rc == MDB_NOTFOUND) - rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT_NODUP); diff --git a/SOURCES/fapolicyd-normal-pattern.patch b/SOURCES/fapolicyd-normal-pattern.patch deleted file mode 100644 index 59b4723..0000000 --- a/SOURCES/fapolicyd-normal-pattern.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0b42573e129c8c095536e15b326fe76b87da2601 Mon Sep 17 00:00:00 2001 -From: Radovan Sroka -Date: Fri, 28 Feb 2025 18:02:16 +0100 -Subject: [PATCH] Fix normal pattern handling - -Signed-off-by: Radovan Sroka ---- - src/library/rules.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/library/rules.c b/src/library/rules.c -index 849a6c39..7f8fc7f5 100644 ---- a/src/library/rules.c -+++ b/src/library/rules.c -@@ -406,9 +406,10 @@ static int assign_subject(lnode *n, int type, const char *ptr2, int lineno) - goto free_and_error; - } - -- if (strcmp(tmp, -- PATTERN_LD_SO_STR) == 0) { -+ if (strcmp(tmp, PATTERN_LD_SO_STR) == 0) { - n->s[i].val = PATTERN_LD_SO_VAL; -+ } else if (strcmp(tmp, PATTERN_NORMAL_STR) == 0) { -+ n->s[i].val = PATTERN_NORMAL_VAL; - } else if (strcmp(tmp, PATTERN_STATIC_STR) == 0) { - n->s[i].val = PATTERN_STATIC_VAL; - } else if (strcmp(tmp, PATTERN_LD_PRELOAD_STR) == 0) { diff --git a/SOURCES/fapolicyd-nss-lookup.patch b/SOURCES/fapolicyd-nss-lookup.patch deleted file mode 100644 index 1e4ed5b..0000000 --- a/SOURCES/fapolicyd-nss-lookup.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/init/fapolicyd.service b/init/fapolicyd.service -index 7eb2841a..a1b7da90 100644 ---- a/init/fapolicyd.service -+++ b/init/fapolicyd.service -@@ -1,6 +1,12 @@ -+# You should manage this file with systemctl edit utility and not manually -+ - [Unit] - Description=File Access Policy Daemon - DefaultDependencies=no -+# If rules need user/group lookup, create a drop-in to delay the startup after NSS lookup is available: -+# # mkdir -p /etc/systemd/system/fapolicyd.service.d -+# # echo -e "[Unit]\nAfter=nss-user-lookup.target local-fs.target systemd-tmpfiles-setup.service" > /etc/systemd/system/fapolicyd.service.d/nss-lookup.conf -+# # systemctl daemon-reload - After=local-fs.target systemd-tmpfiles-setup.service - Documentation=man:fapolicyd(8) - -@@ -12,8 +18,6 @@ PIDFile=/run/fapolicyd.pid - ExecStartPre=/usr/sbin/fagenrules - ExecStart=/usr/sbin/fapolicyd - Restart=on-abnormal --# Uncomment the following line if rules need user/group name lookup --#After=nss-user-lookup.target - - [Install] - WantedBy=multi-user.target diff --git a/SOURCES/fapolicyd-rpm-loader.patch b/SOURCES/fapolicyd-rpm-loader.patch deleted file mode 100644 index d55397d..0000000 --- a/SOURCES/fapolicyd-rpm-loader.patch +++ /dev/null @@ -1,309 +0,0 @@ -diff -up ./fapolicyd.spec.rpm-loader ./fapolicyd.spec ---- ./fapolicyd.spec.rpm-loader 2024-04-29 17:59:11.000000000 +0200 -+++ ./fapolicyd.spec 2025-05-18 20:11:39.722717947 +0200 -@@ -268,6 +268,7 @@ fi - %attr(644,root,root) %{_tmpfilesdir}/%{name}.conf - %attr(755,root,root) %{_sbindir}/%{name} - %attr(755,root,root) %{_sbindir}/%{name}-cli -+%attr(755,root,root) %{_sbindir}/%{name}-rpm-loader - %attr(755,root,root) %{_sbindir}/fagenrules - %attr(644,root,root) %{_mandir}/man8/* - %attr(644,root,root) %{_mandir}/man5/* -diff -up ./src/daemon/fapolicyd.c.rpm-loader ./src/daemon/fapolicyd.c ---- ./src/daemon/fapolicyd.c.rpm-loader 2025-05-18 20:11:39.721683468 +0200 -+++ ./src/daemon/fapolicyd.c 2025-05-18 20:11:39.722858226 +0200 -@@ -105,17 +105,19 @@ static void install_syscall_filter(void) - ctx = seccomp_init(SCMP_ACT_ALLOW); - if (ctx == NULL) - goto err_out; -- -+#ifndef USE_RPM - rc = seccomp_rule_add(ctx, SCMP_ACT_ERRNO(EACCES), - SCMP_SYS(execve), 0); - if (rc < 0) - goto err_out; --#ifdef HAVE_FEXECVE --# ifdef __NR_fexecve -+ -+# ifdef HAVE_FEXECVE -+# ifdef __NR_fexecve - rc = seccomp_rule_add(ctx, SCMP_ACT_ERRNO(EACCES), - SCMP_SYS(fexecve), 0); - if (rc < 0) - goto err_out; -+# endif - # endif - #endif - rc = seccomp_rule_add(ctx, SCMP_ACT_ERRNO(EIO), -diff -up ./src/handler/fapolicyd-rpm-loader.c.rpm-loader ./src/handler/fapolicyd-rpm-loader.c ---- ./src/handler/fapolicyd-rpm-loader.c.rpm-loader 2025-05-18 20:11:39.722986504 +0200 -+++ ./src/handler/fapolicyd-rpm-loader.c 2025-05-18 20:13:48.417481732 +0200 -@@ -0,0 +1,85 @@ -+/* -+ * fapolicy-rpm-loader.c - loader tool for fapolicyd -+ * Copyright (c) 2025-2025 Red Hat Inc. -+ * All Rights Reserved. -+ * -+ * This software may be freely redistributed and/or modified under the -+ * terms of the GNU General Public License as published by the Free -+ * Software Foundation; either version 2, or (at your option) any -+ * later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; see the file COPYING. If not, write to the -+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor -+ * Boston, MA 02110-1335, USA. -+ * -+ * Authors: -+ * Radovan Sroka -+ */ -+ -+#include "config.h" -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "backend-manager.h" -+#include "daemon-config.h" -+#include "message.h" -+#include "llist.h" -+#include "fd-fgets.h" -+#include "paths.h" -+ -+volatile atomic_bool stop = 0; // Library needs this -+unsigned int debug_mode = 0; // Library needs this -+unsigned int permissive = 0; // Library needs this -+ -+ -+int do_rpm_init_backend(void); -+int do_rpm_load_list(conf_t * conf); -+int do_rpm_destroy_backend(void); -+ -+extern backend rpm_backend; -+ -+int main(int argc, char * const argv[]) -+{ -+ -+ set_message_mode(MSG_STDERR, DBG_YES); -+ -+ conf_t config; -+ -+ load_daemon_config(&config); -+ -+ do_rpm_init_backend(); -+ do_rpm_load_list(&config); -+ -+ msg(LOG_INFO, "Loaded files %ld", rpm_backend.list.count); -+ -+ list_item_t *item = list_get_first(&rpm_backend.list); -+ for (; item != NULL; item = item->next) { -+ printf("%s %s\n", (const char*)item->index, (const char*)item->data); -+ } -+ -+ do_rpm_destroy_backend(); -+ -+ free_daemon_config(&config); -+ return 0; -+} -+ -diff -up ./src/library/rpm-backend.c.rpm-loader ./src/library/rpm-backend.c ---- ./src/library/rpm-backend.c.rpm-loader 2025-05-18 20:11:39.718862697 +0200 -+++ ./src/library/rpm-backend.c 2025-05-18 20:11:39.723077584 +0200 -@@ -23,8 +23,11 @@ - */ - - #include "config.h" -+#include - #include - #include -+#include -+#include - #include - #include - #include -@@ -37,11 +40,16 @@ - - #include "message.h" - #include "gcc-attributes.h" -+#include "fd-fgets.h" - #include "fapolicyd-backend.h" - #include "llist.h" - - #include "filter.h" - -+int do_rpm_init_backend(void); -+int do_rpm_load_list(const conf_t *); -+int do_rpm_destroy_backend(void); -+ - static int rpm_init_backend(void); - static int rpm_load_list(const conf_t *); - static int rpm_destroy_backend(void); -@@ -183,9 +191,104 @@ struct _hash_record { - UT_hash_handle hh; - }; - --extern unsigned int debug_mode; -+#define BUFFER_SIZE 4096 -+#define MAX_DELIMS 3 - static int rpm_load_list(const conf_t *conf) - { -+ int pipefd[2]; -+ if (pipe(pipefd) == -1) { -+ perror("pipe failed"); -+ return 1; -+ } -+ // we well read stdout later -+ // there will be data from rpmdb -+ posix_spawn_file_actions_t actions; -+ posix_spawn_file_actions_init(&actions); -+ posix_spawn_file_actions_addclose(&actions, pipefd[0]); -+ posix_spawn_file_actions_adddup2(&actions, pipefd[1], STDOUT_FILENO); -+ posix_spawn_file_actions_addclose(&actions, pipefd[1]); -+ -+ char *argv[] = { NULL }; -+ char *custom_env[] = { NULL }; -+ -+ pid_t pid = -1; -+ // int status = posix_spawn(&pid, "/home/rsroka/Work/fapolicyd-upstream-fork2/src/fapolicyd-rpm-loader", &actions, NULL, argv, custom_env); -+ int status = posix_spawn(&pid, "/usr/sbin/fapolicyd-rpm-loader", &actions, NULL, argv, custom_env); -+ -+ -+ close(pipefd[1]); // Parent doesn't write -+ -+ if (status == 0) { -+ msg(LOG_DEBUG, "fapolicyd-rpm-loader spawned with pid: %d", pid); -+ -+ char buff[BUFFER_SIZE]; -+ fd_fgets_context_t * fd_fgets_context = fd_fgets_init(); -+ do { -+ fd_fgets_rewind(fd_fgets_context); -+ int res = fd_fgets(fd_fgets_context, buff, sizeof(buff), pipefd[0]); -+ if (res == -1) -+ break; -+ else if (res > 0) { -+ char* end = strchr(buff, '\n'); -+ -+ if (end == NULL) { -+ msg(LOG_ERR, "Too long line?"); -+ continue; -+ } -+ -+ int size = end - buff; -+ *end = '\0'; -+ -+ // it's better to parse it from the end because there can be space in file name -+ int delims = 0; -+ char * delim = NULL; -+ for (int i = size-1 ; i >= 0 ; i--) { -+ if (isspace(buff[i])) { -+ delim = &buff[i]; -+ delims++; -+ } -+ -+ if (delims >= MAX_DELIMS) { -+ buff[i] = '\0'; -+ break; -+ } -+ } -+ -+ char * index = strdup(buff); -+ char * data = strdup(delim + 1); -+ if (!index || !data) { -+ free(index); -+ free(data); -+ continue; -+ } -+ -+ list_append(&rpm_backend.list, index, data); -+ } -+ } while(!fd_fgets_eof(fd_fgets_context)); -+ -+ fd_fgets_destroy(fd_fgets_context); -+ -+ close(pipefd[0]); -+ waitpid(pid, NULL, 0); -+ -+ } else { -+ msg(LOG_ERR, "posix_spawn failed: %s\n", strerror(status)); -+ } -+ -+ posix_spawn_file_actions_destroy(&actions); -+ -+ if (rpm_backend.list.count == 0) { -+ msg(LOG_DEBUG, "Recieved 0 files from rpmdb loader"); -+ return 1; -+ } -+ -+ return 0; -+} -+ -+// this function is used in fapolicyd-rpm-loader -+extern unsigned int debug_mode; -+int do_rpm_load_list(const conf_t *conf) -+{ - int rc; - unsigned int msg_count = 0; - -@@ -298,6 +401,14 @@ static int rpm_load_list(const conf_t *c - - static int rpm_init_backend(void) - { -+ list_init(&rpm_backend.list); -+ -+ return 0; -+} -+ -+// this function is used in fapolicyd-rpm-loader -+int do_rpm_init_backend(void) -+{ - if (filter_init()) - return 1; - -@@ -318,3 +429,10 @@ static int rpm_destroy_backend(void) - list_empty(&rpm_backend.list); - return 0; - } -+ -+// this function is used in fapolicyd-rpm-loader -+int do_rpm_destroy_backend(void) -+{ -+ list_empty(&rpm_backend.list); -+ return 0; -+} -diff -up ./src/Makefile.am.rpm-loader ./src/Makefile.am ---- ./src/Makefile.am.rpm-loader 2025-05-18 20:11:39.718965116 +0200 -+++ ./src/Makefile.am 2025-05-18 20:11:39.723185202 +0200 -@@ -75,6 +75,15 @@ libfapolicyd_la_SOURCES += \ - library/filter.c \ - library/filter.h - -+sbin_PROGRAMS += fapolicyd-rpm-loader -+ -+fapolicyd_rpm_loader_SOURCES = \ -+ handler/fapolicyd-rpm-loader.c -+ -+fapolicyd_rpm_loader_CFLAGS = $(fapolicyd_CFLAGS) -+fapolicyd_rpm_loader_LDFLAGS = $(fapolicyd_LDFLAGS) -+ -+fapolicyd_rpm_loader_LDADD = libfapolicyd.la - endif - - if WITH_DEB diff --git a/SOURCES/fapolicyd-rpm-v.patch b/SOURCES/fapolicyd-rpm-v.patch deleted file mode 100644 index 78fb1d7..0000000 --- a/SOURCES/fapolicyd-rpm-v.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 686096c400587d5f28e041c4ebb58e07e4d7b3fc Mon Sep 17 00:00:00 2001 -From: Radovan Sroka -Date: Wed, 20 Nov 2024 14:30:14 +0100 -Subject: [PATCH] Fix creation of RUN_DIR because it breaks rpm verify - -Signed-off-by: Radovan Sroka ---- - src/library/database.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/src/library/database.c b/src/library/database.c -index 44dd0b2b..d89b16c1 100644 ---- a/src/library/database.c -+++ b/src/library/database.c -@@ -122,6 +122,19 @@ int preconstruct_fifo(const conf_t *config) - strerror_r(errno, err_buff, BUFFER_SIZE)); - return 1; - } else { -+ -+ if ((chmod(RUN_DIR, 0770))) { -+ msg(LOG_ERR, "Failed to fix mode of dir %s (%s)", -+ RUN_DIR, strerror_r(errno, err_buff, BUFFER_SIZE)); -+ return 1; -+ } -+ -+ if ((chown(RUN_DIR, 0, config->gid))) { -+ msg(LOG_ERR, "Failed to fix ownership of dir %s (%s)", -+ RUN_DIR, strerror_r(errno, err_buff, BUFFER_SIZE)); -+ return 1; -+ } -+ - /* Make sure that there is no such file/fifo */ - unlink_fifo(); - } diff --git a/SOURCES/fapolicyd-selinux-1.1.tar.gz.asc b/SOURCES/fapolicyd-selinux-1.1.tar.gz.asc new file mode 100644 index 0000000..bb07d9c --- /dev/null +++ b/SOURCES/fapolicyd-selinux-1.1.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEcgDrLD9eSIRjwM6ezcroySfGvjEFAmlmAo4ACgkQzcroySfG +vjGK4w//eaZET4l52F5pZWq6R59X1pC4/9vqD82hFTwum96fznDjJsqApOUzJcvX +b1u+EkkFkvGsvNZVzCTnaCnJmh2EceerlOy9KwwtLFXCMQWe3ZX4fQLiUt70CGfE +dsbr58+pd5BoaZcXwTuHoh66q2RPqxI7sA9zeVYuAUsqa63mM3YGNfkUp57klT1Z +Mbvw9TIoO/oXuahHtEucWCmQDtNKGz3QBrBOxSeL3eGGduFKDnya4GWh7c/QYpJO +/2Sbzx04JD7jJJ2DuqySy2JV+MNitwjvbjc3ffDBNpvuqqzEjkMRbSSRZyWJcgAa +GWF4zx0DOMltOrWJ05qxcXwqRqoVWNXRe1wH32c7wp/l/zstQ6v1+R2HsNXyLMR9 +kbvAPpTXjRtKGmUY9Gq1vibpC943U2PjQlENS/yCJlSK5dKx7KPwmHn5rEwoSsJr +DUzik3+NIraiqF3os4c5D/Fc8Of8/U4X/G3P+sfQma8BAYSu+D09rdEFX+XOea5f +0XKoFF7uDZ6iBmPw7f/JoSDOJk25bDf+QGbQsk/h/ao5AUVy0BXsy6+Uof2+7Qr0 +bDY8nE8hmgo5A9ssdnnXTg71i4g1+/berFpGv3soW9FTeBsLmhJeNo+lzSUj9KUE +uKoiDaaZSNMJfvCJpJqjz0hNjIfnbXAnVNs/QgXvBbjnRatKqcI= +=HP8O +-----END PGP SIGNATURE----- diff --git a/SOURCES/fapolicyd-skip-nonregular.patch b/SOURCES/fapolicyd-skip-nonregular.patch deleted file mode 100644 index 9d25230..0000000 --- a/SOURCES/fapolicyd-skip-nonregular.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 508805c9f47ca22695fd7a265668f99e9258ea27 Mon Sep 17 00:00:00 2001 -From: Radovan Sroka -Date: Thu, 24 Jul 2025 15:30:06 +0200 -Subject: [PATCH] Skip to add non regular files to trustdb - -- it does not make any sense to have them in the trustdb -- the patch should be fix potential error when reading nonregular files - -Signed-off-by: Radovan Sroka ---- - src/cli/file-cli.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/cli/file-cli.c b/src/cli/file-cli.c -index 7deec39c..ae326c14 100644 ---- a/src/cli/file-cli.c -+++ b/src/cli/file-cli.c -@@ -67,7 +67,7 @@ static int ftw_add_list_append(const char *fpath, - */ - static int add_list_load_path(const char *path) - { -- int fd = open(path, O_RDONLY); -+ int fd = open(path, O_RDONLY|O_NONBLOCK); - if (fd < 0) { - msg(LOG_ERR, "Cannot open %s", path); - return 1; -@@ -83,8 +83,11 @@ static int add_list_load_path(const char *path) - - if (S_ISDIR(sb.st_mode)) - nftw(path, &ftw_add_list_append, FTW_NOPENFD, FTW_FLAGS); -- else -+ else if (S_ISREG(sb.st_mode)) { - list_append(&add_list, strdup(path), NULL); -+ } else { -+ msg(LOG_INFO, "Skipping non regular file: %s", path); -+ } - - return 0; - } diff --git a/SOURCES/fapolicyd-socket-segfault.patch b/SOURCES/fapolicyd-socket-segfault.patch deleted file mode 100644 index 33c2c65..0000000 --- a/SOURCES/fapolicyd-socket-segfault.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 73770c9111800cb5a1e62203e460ae9149307d49 Mon Sep 17 00:00:00 2001 -From: Radovan Sroka -Date: Mon, 28 Jul 2025 18:44:08 +0200 -Subject: [PATCH] Fix segfault when socket is inside of the directory - -$ socat UNIX-LISTEN:"/home/rsroka/dir/socket" /dev/null & - -[ ERROR ]: Cannot open /home/rsroka/dir/socket -Program received signal SIGSEGV, Segmentation fault. - -Signed-off-by: Radovan Sroka ---- - src/cli/file-cli.c | 14 ++++++++------ - 1 file changed, 8 insertions(+), 6 deletions(-) - -diff --git a/src/cli/file-cli.c b/src/cli/file-cli.c -index ae326c14..655e8f15 100644 ---- a/src/cli/file-cli.c -+++ b/src/cli/file-cli.c -@@ -53,8 +53,13 @@ static int ftw_add_list_append(const char *fpath, - int typeflag, - struct FTW *ftwbuf __attribute__ ((unused))) - { -- if (typeflag == FTW_F) -- list_append(&add_list, strdup(fpath), NULL); -+ if (typeflag == FTW_F) { -+ if (S_ISREG(sb->st_mode)) { -+ list_append(&add_list, strdup(fpath), NULL); -+ } else { -+ msg(LOG_INFO, "Skipping non regular file: %s", fpath); -+ } -+ } - return FTW_CONTINUE; - } - -@@ -83,11 +88,8 @@ static int add_list_load_path(const char *path) - - if (S_ISDIR(sb.st_mode)) - nftw(path, &ftw_add_list_append, FTW_NOPENFD, FTW_FLAGS); -- else if (S_ISREG(sb.st_mode)) { -+ else - list_append(&add_list, strdup(path), NULL); -- } else { -- msg(LOG_INFO, "Skipping non regular file: %s", path); -- } - - return 0; - } diff --git a/SOURCES/fapolicyd-uthash-bundle.patch b/SOURCES/fapolicyd-uthash-bundle.patch deleted file mode 100644 index 13f7662..0000000 --- a/SOURCES/fapolicyd-uthash-bundle.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff -up ./configure.ac.uthash ./configure.ac ---- ./configure.ac.uthash 2022-09-27 16:34:59.000000000 +0200 -+++ ./configure.ac 2022-09-29 11:57:26.297879027 +0200 -@@ -162,10 +162,6 @@ AC_CHECK_HEADER(sys/fanotify.h, , [AC_MS - ["Couldn't find sys/fanotify.h...your kernel might not be new enough"] )]) - AC_CHECK_FUNCS(fexecve, [], []) - AC_CHECK_FUNCS([gettid]) --AC_CHECK_HEADER(uthash.h, , [AC_MSG_ERROR( --["Couldn't find uthash.h...uthash-devel is missing"] )]) -- -- - echo . - echo Checking for required libraries - AC_CHECK_LIB(udev, udev_device_get_devnode, , [AC_MSG_ERROR([libudev not found])], -ludev) -diff -up ./src/library/rpm-backend.c.uthash ./src/library/rpm-backend.c ---- ./src/library/rpm-backend.c.uthash 2022-09-29 11:57:26.297879027 +0200 -+++ ./src/library/rpm-backend.c 2022-09-29 11:58:45.470119807 +0200 -@@ -33,7 +33,7 @@ - #include - #include - --#include -+#include "uthash.h" - - #include "message.h" - #include "gcc-attributes.h" -diff -up ./src/Makefile.am.uthash ./src/Makefile.am ---- ./src/Makefile.am.uthash 2022-09-27 16:34:59.000000000 +0200 -+++ ./src/Makefile.am 2022-09-29 11:57:26.297879027 +0200 -@@ -5,6 +5,9 @@ AM_CPPFLAGS = \ - -I${top_srcdir} \ - -I${top_srcdir}/src/library - -+AM_CPPFLAGS += \ -+ -I${top_srcdir}/uthash-2.3.0/include -+ - sbin_PROGRAMS = fapolicyd fapolicyd-cli - lib_LTLIBRARIES= libfapolicyd.la - diff --git a/SOURCES/selinux.patch b/SOURCES/selinux.patch deleted file mode 100644 index e95313a..0000000 --- a/SOURCES/selinux.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up ./fapolicyd-selinux-0.7/fapolicyd.te.fix ./fapolicyd-selinux-0.7/fapolicyd.te ---- ./fapolicyd-selinux-0.7/fapolicyd.te.fix 2023-06-15 17:11:47.964646794 +0200 -+++ ./fapolicyd-selinux-0.7/fapolicyd.te 2023-06-15 17:13:10.426477653 +0200 -@@ -50,6 +50,9 @@ ifdef(`watch_mount_dirs_pattern',` - - ifdef(`fs_watch_all_fs',` - fs_watch_all_fs(fapolicyd_t) -+') -+ -+ifdef(`files_watch_sb_all_mountpoints',` - files_watch_sb_all_mountpoints(fapolicyd_t) - ') - diff --git a/SOURCES/var-run-selinux.patch b/SOURCES/var-run-selinux.patch deleted file mode 100644 index 511fe00..0000000 --- a/SOURCES/var-run-selinux.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 750c5e288f8253c71a9722da960addb078aee93c Mon Sep 17 00:00:00 2001 -From: Zdenek Pytela -Date: Tue, 6 Feb 2024 21:17:27 +0100 -Subject: [PATCH] Rename all /var/run file context entries to /run - -With the 1f76e522a ("Rename all /var/run file context entries to /run") -selinux-policy commit, all /var/run file context entries moved to /run -and the equivalency was inverted. Subsequently, changes in fapolicyd.fc -need to be done, too, in a similar manner. ---- - fapolicyd.fc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/fapolicyd-selinux-0.7/fapolicyd.fc b/fapolicyd-selinux-0.7/fapolicyd.fc -index 2bdc7aa..d081dc8 100644 ---- a/fapolicyd-selinux-0.7/fapolicyd.fc -+++ b/fapolicyd-selinux-0.7/fapolicyd.fc -@@ -8,6 +8,6 @@ - - /var/log/fapolicyd-access.log -- gen_context(system_u:object_r:fapolicyd_log_t,s0) - --/var/run/fapolicyd(/.*)? gen_context(system_u:object_r:fapolicyd_var_run_t,s0) -+/run/fapolicyd(/.*)? gen_context(system_u:object_r:fapolicyd_var_run_t,s0) - --/var/run/fapolicyd\.pid -- gen_context(system_u:object_r:fapolicyd_var_run_t,s0) -+/run/fapolicyd\.pid -- gen_context(system_u:object_r:fapolicyd_var_run_t,s0) diff --git a/SOURCES/var-run-t-dir-selinux.patch b/SOURCES/var-run-t-dir-selinux.patch deleted file mode 100644 index dfd8a6a..0000000 --- a/SOURCES/var-run-t-dir-selinux.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up ./fapolicyd-selinux-0.7/fapolicyd.te.var_run_dir ./fapolicyd-selinux-0.7/fapolicyd.te ---- ./fapolicyd-selinux-0.7/fapolicyd.te.var_run_dir 2025-07-20 21:08:05.054395347 +0200 -+++ ./fapolicyd-selinux-0.7/fapolicyd.te 2025-07-20 21:08:28.240293532 +0200 -@@ -57,6 +57,7 @@ ifdef(`files_watch_sb_all_mountpoints',` - ') - - allow fapolicyd_t file_type : lnk_file { getattr read }; -+allow fapolicyd_t var_run_t:dir setattr; - - manage_files_pattern(fapolicyd_t, fapolicyd_log_t, fapolicyd_log_t) - logging_log_filetrans(fapolicyd_t, fapolicyd_log_t, file) diff --git a/SPECS/fapolicyd.spec b/SPECS/fapolicyd.spec index e2502c7..21f9749 100644 --- a/SPECS/fapolicyd.spec +++ b/SPECS/fapolicyd.spec @@ -1,50 +1,53 @@ %global selinuxtype targeted -%global moduletype contrib -%define semodule_version 0.7 +%global moduletype distributed +%define semodule_version 1.1 Summary: Application Whitelisting Daemon Name: fapolicyd -Version: 1.3.3 -Release: 106%{?dist}.1 -License: GPLv3+ -URL: http://people.redhat.com/sgrubb/fapolicyd -Source0: https://people.redhat.com/sgrubb/fapolicyd/%{name}-%{version}.tar.gz +Version: 1.4.5 +Release: 1.1%{?dist} +License: GPL-3.0-or-later +URL: https://github.com/linux-application-whitelisting/fapolicyd +Source0: https://github.com/linux-application-whitelisting/fapolicyd/releases/download/v%{version}/fapolicyd-%{version}.tar.gz Source1: https://github.com/linux-application-whitelisting/%{name}-selinux/releases/download/v%{semodule_version}/%{name}-selinux-%{semodule_version}.tar.gz -# we bundle uthash for rhel9 -Source2: https://github.com/troydhanson/uthash/archive/refs/tags/v2.3.0.tar.gz#/uthash-2.3.0.tar.gz +Source2: https://github.com/bachradsusi.gpg Source3: fapolicyd.sysusers +Source10: https://github.com/linux-application-whitelisting/fapolicyd/releases/download/v%{version}/fapolicyd-%{version}.tar.gz.asc +Source11: https://github.com/linux-application-whitelisting/%{name}-selinux/releases/download/v%{semodule_version}/%{name}-selinux-%{semodule_version}.tar.gz.asc +# we bundle uthash for eln +Source20: https://github.com/troydhanson/uthash/archive/refs/tags/v2.3.0.tar.gz#/uthash-2.3.0.tar.gz + +# https://github.com/linux-application-whitelisting/fapolicyd +# $ git format-patch -N v1.4.5 +# https://github.com/linux-application-whitelisting/fapolicyd-selinux +# $ git format-patch -N --start-number 100 --src-prefix=a/fapolicyd-selinux-1.1/ --dst-prefix=b/fapolicyd-selinux-1.1/ v1.1 +# $ for j in [0-9]*.patch; do printf "Patch: %s\n" $j; done +# Patch list start +# Patch list end + BuildRequires: gcc BuildRequires: kernel-headers BuildRequires: autoconf automake make gcc libtool -BuildRequires: systemd-devel openssl-devel rpm-devel file-devel file +BuildRequires: systemd systemd-devel openssl-devel rpm-devel file-devel file BuildRequires: libcap-ng-devel libseccomp-devel lmdb-devel BuildRequires: python3-devel +%if 0%{?fedora} || 0%{?rhel} > 10 +BuildRequires: gpgverify +%else +BuildRequires: gnupg +%endif %if 0%{?rhel} == 0 BuildRequires: uthash-devel %endif -Requires: %{name}-plugin +Requires: rpm-plugin-fapolicyd Recommends: %{name}-selinux Requires(pre): shadow-utils Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units -Patch1: fapolicyd-uthash-bundle.patch -Patch2: selinux.patch -Patch3: var-run-selinux.patch -Patch4: fapolicyd-rpm-v.patch -Patch5: fapolicyd-nss-lookup.patch -Patch6: fapolicyd-normal-pattern.patch -Patch7: fapolicyd-rpm-loader.patch -Patch8: fapolicyd-infinite-loop.patch -Patch9: fapolicyd-data-format.patch -Patch10: var-run-t-dir-selinux.patch -Patch11: fapolicyd-skip-nonregular.patch -Patch12: fapolicyd-socket-segfault.patch -Patch13: Add-var-lib-fapolicyd-to-tmpfiles.patch - %description Fapolicyd (File Access Policy Daemon) implements application whitelisting to decide file access rights. Applications that are known via a reputation @@ -55,7 +58,8 @@ makes use of the kernel's fanotify interface to determine file access rights. Summary: Fapolicyd selinux Group: Applications/System Requires: %{name} = %{version}-%{release} -BuildRequires: selinux-policy +Requires: selinux-policy-%{selinuxtype} +Requires(post): selinux-policy-%{selinuxtype} BuildRequires: selinux-policy-devel BuildArch: noarch %{?selinux_requires} @@ -64,52 +68,48 @@ BuildArch: noarch The %{name}-selinux package contains selinux policy for the %{name} daemon. %prep +%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE10}' --data='%{SOURCE0}' +%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE11}' --data='%{SOURCE1}' %setup -q # selinux -%setup -q -D -T -a 1 +%autosetup -D -T -a 1 -p 1 %if 0%{?rhel} != 0 -# uthash -%setup -q -D -T -a 2 -%patch -P 1 -p1 -b .uthash +%setup -q -D -T -b 20 %endif -%patch -P 2 -p1 -b .selinux -%patch -P 3 -p1 -R -b .var-run-selinux -%patch -P 4 -p1 -b .rpm-v -%patch -P 5 -p1 -b .nss-lookup -%patch -P 6 -p1 -b .normal-pattern -%patch -P 7 -p1 -b .rpm-loader -%patch -P 8 -p1 -b .infinite-loop -%patch -P 9 -p1 -b .data-format -%patch -P 10 -p1 -b .var-run-dir -%patch -P 11 -p1 -b .skip-nonregular -%patch -P 12 -p1 -b .socket-segfault -%patch -P 13 -p1 -b .var-lib-dir - # generate rules for python sed -i "s|%python2_path%|`readlink -f %{__python2}`|g" rules.d/*.rules sed -i "s|%python3_path%|`readlink -f %{__python3}`|g" rules.d/*.rules +# Detect run time linker directly from bash interpret=`readelf -e /usr/bin/bash \ - | grep Requesting \ - | sed 's/.$//' \ - | rev | cut -d" " -f1 \ - | rev` + | grep Requesting \ + | sed 's/.$//' \ + | rev | cut -d" " -f1 \ + | rev` sed -i "s|%ld_so_path%|`realpath $interpret`|g" rules.d/*.rules %build cp INSTALL INSTALL.tmp + +# necessary for updating CFLAGS below +%set_build_flags + +%if 0%{?rhel} != 0 +export CFLAGS="$CFLAGS -I%{_builddir}/uthash-2.3.0/include" +%endif + ./autogen.sh %configure \ --with-audit \ --with-rpm \ --disable-shared -make CFLAGS="%{optflags}" %{?_smp_mflags} +%make_build # selinux pushd %{name}-selinux-%{semodule_version} @@ -245,8 +245,8 @@ fi %ghost %attr(644,root,%{name}) %{_sysconfdir}/%{name}/compiled.rules %attr(644,root,root) %{_unitdir}/%{name}.service %attr(644,root,root) %{_tmpfilesdir}/%{name}.conf -%attr(755,root,root) %{_sbindir}/%{name}-rpm-loader %attr(644,root,root) %{_sysusersdir}/%{name}.conf +%attr(755,root,root) %{_bindir}/%{name}-rpm-loader %attr(755,root,root) %{_sbindir}/%{name} %attr(755,root,root) %{_sbindir}/%{name}-cli %attr(755,root,root) %{_sbindir}/fagenrules @@ -259,11 +259,10 @@ fi %ghost %attr(660,%{name},%{name}) %verify(not md5 size mtime) %{_localstatedir}/lib/%{name}/data.mdb %ghost %attr(660,%{name},%{name}) %verify(not md5 size mtime) %{_localstatedir}/lib/%{name}/lock.mdb - %files selinux %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2 %ghost %verify(not md5 size mode mtime) %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name} -%{_datadir}/selinux/devel/include/%{moduletype}/ipp-%{name}.if +%{_datadir}/selinux/devel %post selinux %selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2 @@ -278,13 +277,58 @@ fi %selinux_relabel_post -s %{selinuxtype} %changelog -* Mon Aug 18 2025 Petr Lautrbach - 1.3.3-106.1 -- RPMDB crashes with SIGBUS when updating the RPMDB repeatedly +* Mon Mar 30 2026 Petr Lautrbach - 1.4.5-1.1 +- fapolicyd-1.4.5 + https://github.com/linux-application-whitelisting/fapolicyd/releases/tag/v1.4.5 + +* Thu Mar 19 2026 Petr Lautrbach - 1.4.4-1 +- fapolicyd-1.4.4 + https://github.com/linux-application-whitelisting/fapolicyd/releases/tag/v1.4.4 + +* Fri Feb 06 2026 Petr Lautrbach - 1.4.3-3 +- Fix 32-bit ELF dynamic section parsing + +* Tue Jan 27 2026 Petr Lautrbach - 1.4.3-2 +- Fix binary path of rpm-loader +- Map file with MAP_SHARED instead of MAP_PRIVATE +- Fix segfault when interrupting fapolicyd startup + +* Tue Jan 13 2026 Petr Lautrbach - 1.4.3-1 +- fapolicyd-1.4.3 + https://github.com/linux-application-whitelisting/fapolicyd/releases/tag/v1.4.3 + https://github.com/linux-application-whitelisting/fapolicyd-selinux/releases/tag/v1.1 + +* Wed Nov 26 2025 Petr Lautrbach - 1.4.2-1 +- fapolicyd-1.4.2 + https://github.com/linux-application-whitelisting/fapolicyd/releases/tag/v1.4.2 + +* Fri Oct 31 2025 Petr Lautrbach - 1.4.1-1 +- Fix deadlock on reconfigure +- On reconfigure, update the trust list and reload the rpm filter + +* Thu Oct 30 2025 Petr Lautrbach - 1.4-1 +- fapolicyd-1.4 and fapolicyd-selinux-1.0 + https://github.com/linux-application-whitelisting/fapolicyd/releases/tag/v1.4 + +* Thu Oct 16 2025 Petr Lautrbach - 1.3.7-1 +- fapolicyd-1.3.7 and fapolicyd-selinux-0.9 + +* Mon Aug 18 2025 Petr Lautrbach - 1.3.3-106 - Add /var/lib/fapolicyd to tmpfiles +Resolves: RHEL-104873 + +* Wed May 28 2025 Radovan Sroka - 1.3.3-105 +RHEL 9.7.0 ERRATUM +- RPMDB crashes with SIGBUS when updating the RPMDB repeatedly +Resolves: RHEL-63090 - File /run/fapolicyd differs from RPM expectations +Resolves: RHEL-59626 - fapolicyd.service badly instructs how to start after nss-user-lookup.target +Resolves: RHEL-21871 - fapolicy rule containing 'pattern=normal' produces error +Resolves: RHEL-30020 - "fapolicyd-cli --file add" crashes when processing sockets +Resolves: RHEL-69136 * Wed Jul 19 2023 Radovan Sroka - 1.3.3-100 RHEL 9.5.0 ERRATUM