<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>53687</bug_id>
          
          <creation_ts>2025-04-01 06:35:24 +0300</creation_ts>
          <short_desc>tcpdump -Z root immediately exits 1</short_desc>
          <delta_ts>2025-05-20 16:43:13 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>tcpdump</component>
          <version>unstable</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vitaly Chikunov">vt</reporter>
          <assigned_to name="Arseny Maslennikov">arseny</assigned_to>
          <cc>arei</cc>
    
    <cc>arseny</cc>
    
    <cc>ldv</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>262195</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2025-04-01 06:35:24 +0300</bug_when>
    <thetext>В версии 4.99.4-alt1 ещё можно было делать `-Z root`, чтоб отключить утрату привилегий. tcpdump(8) отмечает:

  -Z user
  --relinquish-privileges=user
      If  tcpdump  is running as root, after opening the capture device
      or input savefile, but before opening any savefiles  for  output,
      change  the user ID to user and the group ID to the primary group
      of user.

      This behavior is enabled by default (-Z tcpdump), and can be dis‐
      abled by -Z root.

С версии 4.99.5-alt1 это поведение больше невозможно отключить при наличии savefile.

  root@x86_64:~# tcpdump -Z root -p -w a
  tcpdump: Chroot without dropping root is insecure
  root@x86_64:~# echo $?
  1

﷐[U+1F481]﷑‍♂️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262276</commentid>
    <comment_count>1</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2025-04-02 14:02:06 +0300</bug_when>
    <thetext>Старый патч https://git.altlinux.org/gears/t/tcpdump.git?p=tcpdump.git;a=commit;h=f4d2a85d068ccbf9ae6dd73774c76ed0d81828ab перестал выполнять свою функцию, надо переделать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265152</commentid>
    <comment_count>2</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2025-05-19 17:56:13 +0300</bug_when>
    <thetext>Какая-то идиотская история про миллионы мух с гитхаба, которые не могут ошибаться. :(

Дело не в том патче, который я выше упомянул, а вот в этом коммите.
d6c4b176bab6 (&quot;Skip privilege dropping when using -Z root on --with-user builds&quot;)

https://github.com/the-tcpdump-group/tcpdump/commit/d6c4b176bab676b4d73dc4b1a9fd8c803db88194

Контейнерные пионеры, вооружённые передовым учением о namespaces, в едином порыве отвергают chroot(2) как буржуазный пережиток прошлого.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265153</commentid>
    <comment_count>3</comment_count>
      <attachid>18507</attachid>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2025-05-19 17:58:04 +0300</bug_when>
    <thetext>Created attachment 18507
Do not chroot if not changing UID

Предлагаю вот так сделать при -Z root. Пойдёт? Или лучше совершать chroot и не ругаться?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265154</commentid>
    <comment_count>4</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2025-05-19 18:04:48 +0300</bug_when>
    <thetext>(In reply to Arseny Maslennikov from comment #3)
&gt; Created attachment 18507 [details]
&gt; Do not chroot if not changing UID
&gt; 
&gt; Или лучше совершать chroot и не ругаться?

Ругань как появилась в 2004, так и не исчезала:

  author hannes &lt;hannes&gt; Wed Feb 25 14:23:32 2004 +0000
  committer hannes &lt;hannes&gt; Wed Feb 25 14:23:32 2004 +0000
   
  from Pekka Savola &lt;pekkas@netcore.fi&gt;:
   
   - add compile time option WITH_CHROOT
   - chroot() when dropping privileges                    
   
  diff --git a/tcpdump.c b/tcpdump.c
  index 7f751f0e..e3693e73 100644
  --- a/tcpdump.c
  +++ b/tcpdump.c
  @@ -324,15 +324,26 @@ show_dlts_and_exit(pcap_t *pd)
   #define U_FLAG
   #endif
   
  -/* Drop root privileges */
  +/* Drop root privileges and chroot if necessary */
   static void
  -droproot(const char *username)
  +droproot(const char *username, const char *chroot_dir)
   {
          struct passwd *pw = NULL;
   
  +       if (chroot_dir &amp;&amp; !username) {
  +               fprintf(stderr, &quot;Chroot without dropping root is insecure\n&quot;);
  +               exit(1);
  +       }
  +       
          pw = getpwnam(username);
          if (pw) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265155</commentid>
    <comment_count>5</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2025-05-19 18:11:39 +0300</bug_when>
    <thetext>1. Версия до 4.99.4-alt1 работала.
2. Пользователь задавая `-Z user` не предлагает делать chroot without dropping root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265161</commentid>
    <comment_count>6</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2025-05-19 18:36:30 +0300</bug_when>
    <thetext>(In reply to Vitaly Chikunov from comment #5)
&gt; 1. Версия до 4.99.4-alt1 работала.
&gt; 2. Пользователь задавая `-Z user` не предлагает делать chroot without
&gt; dropping root.

Я из этих двух суждений делаю вывод, что предложенный патч OK. Скоро будет сб. задание.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265165</commentid>
    <comment_count>7</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2025-05-19 19:03:19 +0300</bug_when>
    <thetext>А я и не заметил патч, так как прочел только последний пост.

(In reply to Arseny Maslennikov from comment #3)
&gt; Created attachment 18507 [details]
&gt; Do not chroot if not changing UID
&gt; 
&gt; Предлагаю вот так сделать при -Z root. Пойдёт? Или лучше совершать chroot и
&gt; не ругаться?

chroot при живом root не имеет смысла в плане security. warning() не нужен так как юзер его (chroot) не заказывал - это внутренняя кухня tcpdump как именно дропать рутовые привилегии. Юзер хочет при `-Z root` всю это логику отключить.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265170</commentid>
    <comment_count>8</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2025-05-19 19:16:14 +0300</bug_when>
    <thetext>(In reply to Vitaly Chikunov from comment #7)
&gt; А я и не заметил патч, так как прочел только последний пост.
&gt; 
&gt; (In reply to Arseny Maslennikov from comment #3)
&gt; &gt; Created attachment 18507 [details]
&gt; &gt; Do not chroot if not changing UID
&gt; &gt; 
&gt; &gt; Предлагаю вот так сделать при -Z root. Пойдёт? Или лучше совершать chroot и
&gt; &gt; не ругаться?
&gt; 
&gt; chroot при живом root не имеет смысла в плане security. warning() не нужен
&gt; так как юзер его (chroot) не заказывал - это внутренняя кухня tcpdump как
&gt; именно дропать рутовые привилегии. Юзер хочет при `-Z root` всю это логику
&gt; отключить.
Ладно, уберу warning(). Тем более он вот какой страшный получается:
  [root@h-e ~]# tcpdump -i enp7s0 -Z root -p -w a
  tcpdump: WARNING: chroot to /var/resolv disabled
  tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
  ^C233 packets captured
  234 packets received by filter
  0 packets dropped by kernel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265173</commentid>
    <comment_count>9</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2025-05-19 20:04:51 +0300</bug_when>
    <thetext>(In reply to Arseny Maslennikov from comment #6)
&gt; Скоро будет сб. задание.
https://git.altlinux.org/tasks/325444/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265224</commentid>
    <comment_count>10</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2025-05-20 16:41:49 +0300</bug_when>
    <thetext>tcpdump-1:4.99.5-alt2 -&gt; sisyphus:

 Wed Apr 02 2025 Arseny Maslennikov &lt;arseny@altlinux&gt; 1:4.99.5-alt2
 - Add a patch to not chroot if &apos;-Z root&apos; is present on the command line.
   That fixes upstream commit 75866fb1db0b
   (&quot;Skip privilege dropping when using -Z root on --with-user builds&quot;)
   present in tcpdump-4.99.5. (Closes: 53687)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265225</commentid>
    <comment_count>11</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2025-05-20 16:43:13 +0300</bug_when>
    <thetext>Спасибо.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18507</attachid>
            <date>2025-05-19 17:58:04 +0300</date>
            <delta_ts>2025-05-19 17:58:04 +0300</delta_ts>
            <desc>Do not chroot if not changing UID</desc>
            <filename>file_53687.txt</filename>
            <type>text/plain</type>
            <size>699</size>
            <attacher name="Arseny Maslennikov">arseny</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL3RjcGR1bXAuYyBiL3RjcGR1bXAuYw0KaW5kZXggN2E4ZjQ2MTMuLmMyZjY4
MWI4IDEwMDY0NA0KLS0tIGEvdGNwZHVtcC5jDQorKysgYi90Y3BkdW1wLmMNCkBAIC0yMDM2LDgg
KzIwMzYsMTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQogICAgICAgICAgICAgICAg
LyogUnVuIHdpdGggJy1aIHJvb3QnIHRvIHJlc3RvcmUgb2xkIGJlaGF2aW91ciAqLw0KICAgICAg
ICAgICAgICAgIGlmICghdXNlcm5hbWUpDQogICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFt
ZSA9IFdJVEhfVVNFUjsNCi0gICAgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAodXNlcm5hbWUs
ICJyb290IikgPT0gMCkNCisgICAgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAodXNlcm5hbWUs
ICJyb290IikgPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUgPSBOVUxM
Ow0KKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNocm9vdF9kaXIpIHsNCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2FybmluZygiY2hyb290IHRvICVzIGRpc2FibGVkIiwgY2hy
b290X2Rpcik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNocm9vdF9kaXIgPSBO
VUxMOw0KKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgIH0NCiAgICAg
ICAgfQ0KICNlbmRpZg0K
</data>

          </attachment>
      

    </bug>

</bugzilla>