Package: nftables
Version: 0.9.8-3.1
Severity: important
Tags: upstream

Dear Maintainer,

We have 4 computers running Debian 11 that use firewalld.
Every 30 minutes, these run a configuration management tool as scheduled job
that applies the firewall configuration (and overwrites any manual changes).
In the past 13 weeks, this job experienced 8 segmentation faults at random 
moments.
The desired firewall configuration did not change on the days of the crashes, 
the job only
recreates certain nftables rules.
After the crash, the firewall remains in a state that rejects almost all 
incoming and outgoing traffic.
Subsequent scheduled jobs fail to contact the configuration management server, 
and the computer no
longer accepts SSH connections. I recall one time manually logging in via a 
non-SSH console and
repairing it with firewall-cmd, though in the other cases I just rebooted the 
computer as
a quicker solution (when the persistent firewalld configuration is applied at 
boot, it solves
the problem).

Debian unstable already contains a newer version of the nftables package, I 
have not yet tried
upgrading to that one. It might take another few weeks before the bug manifests 
again on the one computer
that has core dumps enabled, so I can't quickly check if other package versions 
still have the bug.

Today was the first time I captured a core dump. The backtrace looks a bit 
similar to
https://bugzilla.redhat.com/show_bug.cgi?id=1983116, though I'm not sure how to 
interpret
that Fedora backtrace because it lacks debug symbols.

    Core was generated by `/usr/bin/python3 /usr/sbin/firewalld --nofork 
--nopid'.
    --Type <RET> for more, q to quit, c to continue without paging--
    Program terminated with signal SIGSEGV, Segmentation fault.
    #0  list_add_tail (head=0x2c0, new=0x2440b70) at ../include/list.h:87
    Download failed: Invalid argument.  Continuing without source file 
./src/../include/list.h.
    87      ../include/list.h: No such file or directory.
    [Current thread is 1 (Thread 0x7fddc6704740 (LWP 488))]
    (gdb)
    (gdb) bt
    #0  list_add_tail (head=0x2c0, new=0x2440b70) at ../include/list.h:87
    #1  list_move_tail (head=0x2c0, list=0x2440b70) at ../include/list.h:169
    #2  cache_init_objects (flags=127, ctx=0x7ffc9dd74f20) at rule.c:208
    #3  cache_init (flags=127, ctx=0x7ffc9dd74f20) at rule.c:235
    #4  cache_update (nft=nft@entry=0x1ffcbe0, flags=127, 
msgs=msgs@entry=0x7ffc9dd75ee0) at rule.c:291
    #5  0x00007fddc41ae0a2 in nft_evaluate (nft=nft@entry=0x1ffcbe0, 
msgs=msgs@entry=0x7ffc9dd75ee0, cmds=cmds@entry=0x7ffc9dd75ef0) at 
libnftables.c:420
    #6  0x00007fddc41aead8 in nft_run_cmd_from_buffer (nft=0x1ffcbe0,
        buf=0x2343330 "{\"nftables\": [{\"metainfo...) at libnftables.c:465

Here is the whole argument to nft_run_cmd_from_buffer() pretty printed:
    {"nftables": [
        {"metainfo": {"json_schema_version": 1}},
        {"add": {"set": {"family": "inet", "table": "firewalld", "name": "ata", 
"type": "ipv4_addr", "flags": ["interval"]}}},
        {"flush": {"set": {"family": "inet", "table": "firewalld", "name": 
"ata"}}},
        {"add": {"element": {"family": "inet", "table": "firewalld", "name": 
"ata", "elem": ["10.1.2.42"]}}},
        {"add": {"element": {"family": "inet", "table": "firewalld", "name": 
"ata", "elem": ["10.1.2.64"]}}},
        {"add": {"element": {"family": "inet", "table": "firewalld", "name": 
"ata", "elem": ["10.1.2.67"]}}}
    ]}

The line that causes the segfault is here:
https://sources.debian.org/src/nftables/0.9.8-3.1/src/rule.c/#L208
    list_move_tail(&rule->list, &chain->rules);



-- System Information:
Debian Release: 11.5
  APT prefers stable-updates
  APT policy: (800, 'stable-updates'), (800, 'stable-security'), (800, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.18.0-0.bpo.1-amd64 (SMP w/4 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages nftables depends on:
ii  dpkg          1.20.12
ii  libc6         2.31-13+deb11u4
ii  libedit2      3.1-20191231-2+b1
ii  libnftables1  0.9.8-3.1

nftables recommends no packages.

Versions of packages nftables suggests:
ii  firewalld  1.2.0-1~bpo11+1

-- no debconf information

Reply via email to