Public bug reported:

Ubuntu applies this patch to the upstream tcpdump:
https://git.launchpad.net/ubuntu/+source/tcpdump/tree/debian/patches/drop-
privs-after-opening-savefile.diff?h=applied/4.99.1-3ubuntu0.1

Vanilla tcpump drops permissions (droproot) before it creates output
files (pcap_dump_open).

Ubuntu's tcpdump drops permissions before it creates output files *only
if the -C flag is set*, because with -C tcpdump has to create output
files later on (after it has dropped privileges), and user want
permission errors immediately, not only after the first rotation. In
every other case, it creates the output file with full privs, and thus
is able to write to locations where it might not to after the drop.

Unfortunately the -G (rotate_seconds) flag also causes tcpdump to create
output files later on (once per rotation, obviously). If you use -G
without -C, Ubuntu's tcpdump creates the first file with full privs,
drops the privs, waits until it is time to rotate, and then crashes if
the permissions are insufficient. This is very ugly to debug in
scenarios where tcpdump is restarted automatically by e.g. systemd,
because output files are being created and filled, but a few packets are
missing at rotation.

The bug is probably quite old and well-known enough that medium articles
about it exist (https://medium.com/@a1i/permission-denied-problem-with-
tcpdump-rotation-f643a74a4838). I thought it was an upstream issue
(https://github.com/the-tcpdump-
group/tcpdump/issues/1170#issuecomment-2042530097), but it is not.

To fix this issue, you probably (I did not test it) only need to replace
```
if (Cflag && (username || chroot_dir))
```
with
```
if ((Cflag || Gflag) && (username || chroot_dir))
```


Release:
```
root@majorpurpose:/tmp/pcaptest# lsb_release -rd
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
```

Package version:
```
root@majorpurpose:/tmp/pcaptest# apt-cache policy tcpdump
tcpdump:
  Installed: 4.99.1-3ubuntu0.2
  Candidate: 4.99.1-3ubuntu0.2
  Version table:
 *** 4.99.1-3ubuntu0.2 500
        500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     4.99.1-3build2 500
        500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
```

ProblemType: Bug
DistroRelease: Ubuntu 22.04
Package: tcpdump 4.99.1-3ubuntu0.2
ProcVersionSignature: Ubuntu 5.15.0-102.112-generic 5.15.148
Uname: Linux 5.15.0-102-generic x86_64
ApportVersion: 2.20.11-0ubuntu82.5
Architecture: amd64
CasperMD5CheckResult: pass
CloudArchitecture: x86_64
CloudID: none
CloudName: none
CloudPlatform: none
CloudSubPlatform: config
Date: Mon Apr  8 13:09:22 2024
InstallationDate: Installed on 2022-07-08 (639 days ago)
InstallationMedia: Ubuntu-Server 22.04 LTS "Jammy Jellyfish" - Release amd64 
(20220421)
ProcEnviron:
 TERM=screen
 PATH=(custom, no user)
 LANG=en_US.UTF-8
 SHELL=/bin/bash
SourcePackage: tcpdump
UpgradeStatus: No upgrade log present (probably fresh install)

** Affects: tcpdump (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug jammy uec-images

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2060557

Title:
  drop-privs-after-opening-savefile patch is broken if -G
  (rotate_seconds) is used

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/tcpdump/+bug/2060557/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to