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

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

    <bug>
          <bug_id>44999</bug_id>
          
          <creation_ts>2023-01-23 14:26:28 +0300</creation_ts>
          <short_desc>sudo-logsrvd: invalid ClientMessage при отправке логов на сервер</short_desc>
          <delta_ts>2023-04-21 16:40:30 +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>sudo-logsrvd</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WORKSFORME</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="Evgeny Shesteperov">alimektor</reporter>
          <assigned_to name="Evgeny Sinelnikov">sin</assigned_to>
          <cc>amakeenk</cc>
    
    <cc>sin</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>220488</commentid>
    <comment_count>0</comment_count>
    <who name="Evgeny Shesteperov">alimektor</who>
    <bug_when>2023-01-23 14:26:28 +0300</bug_when>
    <thetext>Версия
======

- sudo-logsrvd-1.9.12p2-alt1

Дистрибутивы
============

- p10-server-10-x86-64, обновленный до Sisyphus
- p10-workstation-10-x86-64, обновленный до Sisyphus

Стенд
=====

Две машины: клиент и сервер.

Установить пакет sudo-logsrvd на сервере и клиенте:

        # apt-get install -y sudo-logsrvd

Настройка сервера:

1. В файле /etc/sudo_logsrvd.conf раскоментировать строчки:

         listen_address = *:30343
         pid_file = /var/run/sudo/sudo_logsrvd.pid
   
2. Запустить сервер:

         # sudo_logsrvd -n

Настройка клиента (настроить sudoreplay):

1. Создать каталог:
   
        # mkdir -m 750 /var/log/sudo-io

2. В /etc/sudoers добавить следующие строки:  

        test ALL=(ALL) ALL  
        Defaults log_output  
        Defaults!/usr/bin/sudoreplay !log_output  
        Defaults!/sbin/reboot !log_output

На клиенте первый системный пользователь обозначен как test.

Шаги воспроизведения
====================

1. На клиенте от пользователя test выполнить команду из под sudo:
   
        $ sudo whoami
   
2. На клиенте отправить логи sudo на сервер:
   
        # sudo_sendlog -h &lt;IP-адрес сервера&gt; -p 30343 /var/log/sudo-io/00/00/01/

Ожидаемый результат: примерный вывод как указано ниже

    Connected to &lt;IP-адрес сервера&gt;:30343
    Server ID: Sudo Audit Server &lt;версия sudo&gt;
    Remote log ID: /var/log/sudo-io/00/00/06
    1 I/O log transmitted successfully in 0.002411046 seconds

После выполнения команды # sudoreplay -l примерный вывод полей:

    янв 23 14:21:08 2023 : test : TTY=/dev/pts/1 ; CWD=/home/test ; USER=root ; HOST=workstation-10-x86-64-20230123.localdomain ; TSID=000001 ; COMMAND=/usr/bin/whoami

Фактический результат:

    Connected to &lt;IP-адрес сервера&gt;:30343
    Server ID: Sudo Audit Server 1.9.12p2
    Remote log ID: /var/log/sudo-io/00/00/01
    sudo_sendlog: error message received from server: invalid ClientMessage
    sudo_sendlog: exited prematurely with state 0
    sudo_sendlog: elapsed time sent to server [0, 10112045]
    sudo_sendlog: commit point received from server [0, 0]

При этом # sudoreplay -l на сервере показывает вполне корректный вывод:

    янв 23 14:07:58 2023 : test : HOST=workstation-10-x86-64-20230123.localdomain ; TTY=/dev/pts/0 ; CWD=/home/test ; USER=root ; TSID=00/00/01 ; COMMAND=/usr/bin/whoami

Не воспроизводится в P10
Воспроизводится в задании 313932 для P10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220660</commentid>
    <comment_count>1</comment_count>
    <who name="Evgeny Sinelnikov">sin</who>
    <bug_when>2023-01-24 19:50:22 +0300</bug_when>
    <thetext>Проблема выявлена только для серверной части. Новая клиентская часть со старым сервером работает корректно.

В серверной части проблема прилетела вот в этом коммите:
- https://github.com/sudo-project/sudo/commit/e6f2ad0ed6fd28e42915260352cd0a897bc2c0cc

commit e6f2ad0ed6fd28e42915260352cd0a897bc2c0cc
Author: Todd C. Miller &lt;Todd.Miller@sudo.ws&gt;
Date:   Wed Sep 28 08:47:25 2022 -0600

    Add missing NULL checks for mandatory fields in protobuf messages.
    Also no longer reject an InfoMessage with an unknown value_case,
    just log and ignore it.

Сервер проверяет валидность пакета и выпадает в функции handle_exit()
    /* Check that message is valid. */
    if (msg-&gt;run_time == NULL) {
	sudo_warnx(U_(&quot;%s: %s&quot;), source, U_(&quot;invalid ExitMessage&quot;));
	closure-&gt;errstr = _(&quot;invalid ExitMessage&quot;);
	debug_return_bool(false);
    }

Причину пока выясняю.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224830</commentid>
    <comment_count>2</comment_count>
    <who name="Alexander Makeenkov">amakeenk</who>
    <bug_when>2023-04-21 16:40:30 +0300</bug_when>
    <thetext>Версия пакета: sudo-1.9.13p2-alt1.x86_64

Ошибка больше не воспроизводится:

Server ID: Sudo Audit Server 1.9.13p2
Remote log ID: /var/log/sudo-io/00/00/01
1 I/O log transmitted successfully in 0.006069889 seconds</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>