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

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

    <bug>
          <bug_id>48556</bug_id>
          
          <creation_ts>2023-11-22 23:51:18 +0300</creation_ts>
          <short_desc>integrity-sign script possible leaves immutable files</short_desc>
          <delta_ts>2026-04-07 16:45:44 +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>ima-evm-integrity-check</component>
          <version>unstable</version>
          <rep_platform>all</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>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolay A. Fetisov">naf</reporter>
          <assigned_to name="manowar@altlinux.org">manowar</assigned_to>
          <cc>manowar</cc>
    
    <cc>nbr</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>237671</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolay A. Fetisov">naf</who>
    <bug_when>2023-11-22 23:51:18 +0300</bug_when>
    <thetext>Для ima-evm-integrity-check 0.5.0-alt1, создание подписей IMA/EVM выполняется в скрипте integrity-sign.

Для данного скрипта установлены флаги &apos;-eu&apos;, т.е. выполнение прерывается в случае возникновения ошибки.


При создании подписи файла в функции sign_one_file(), после подписывания файла через &quot;evmctl sign&quot; на файл
ставится флаг &quot;immutable&quot;.
Задание подписей для всех файлов системы в функции sign_files() идёт в цикле

        verbose &quot;Signing files...&quot;
        while read file; do
                sign_one_file &quot;$file&quot; || message &quot;Can&apos;t sign file $file&quot;
        done

Соответственно, если при создании подписи какого-либо файла возникает ошибка в sign_one_file(),
то выдаётся сообщение и продолжается обработка списка файлов.


После завершения создания подписей ранее установленные флаги &quot;immutable&quot; сбрасываются в функции 
no_immutable_files() в цикле

        while read file; do
                chattr -i &quot;$file&quot;
        done

Если при вызове chattr возникает ошибка, то выполнение функции no_immutable_files() прерывается,
что оставляет в системе часть файлов с установленным ранее флагом &quot;immutable&quot;.



Файлы для подписывания ищутся в т.ч. в /var/lib/ . Как минимум для LXC/LXD в /var/lib/lxcfs/ монтируется файловая система lxcfs, которая не поддерживает ни обычные, ни расширенные атрибуты файлов.
При попытке создать подписи для файлов в ней возникающие в sign_one_file() ошибки _пропускаются_, 
а при сбросе флагов &quot;immutable&quot; в no_immutable_files() ошибка в chattr вызывает _прерывание выполнения_ цикла 
по списку файлов - в итоге часть файлов, обработанных sign_files(), остаётся с установленными флагами &quot;immutable&quot;.


Сразу на работе системы это не сказывается, но при следующем запуске updater-start такие файлы вызывают
ошибки при работе apt-get dist-upgrade, с невозможностью установки части пакетов, частичной установкой
пакетов, дублированием установленных пакетов и т.п.


Соответственно, имеет смысл обрабатывать в no_immutable_files() ошибки аналогично тому, как это делается
в sign_files() - соответствующий патч приложен.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237673</commentid>
    <comment_count>1</comment_count>
      <attachid>15097</attachid>
    <who name="Nikolay A. Fetisov">naf</who>
    <bug_when>2023-11-22 23:55:42 +0300</bug_when>
    <thetext>Created attachment 15097
Patch for /usr/sbin/integrity-sign script</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285294</commentid>
    <comment_count>2</comment_count>
    <who name="manowar@altlinux.org">manowar</who>
    <bug_when>2026-04-07 16:45:44 +0300</bug_when>
    <thetext>ima-evm-integrity-check 0.7.5-alt1:
- Don&apos;t set or reset the immutable flag (closes: 48556).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15097</attachid>
            <date>2023-11-22 23:55:42 +0300</date>
            <delta_ts>2023-11-22 23:55:42 +0300</delta_ts>
            <desc>Patch for /usr/sbin/integrity-sign script</desc>
            <filename>integrity-sign.patch</filename>
            <type>text/plain</type>
            <size>311</size>
            <attacher name="Nikolay A. Fetisov">naf</attacher>
            
              <data encoding="base64">LS0tIC91c3Ivc2Jpbi9pbnRlZ3JpdHktc2lnbi5vcmlnCTIwMjAtMDEtMjEgMTc6MDg6MzQuMDAw
MDAwMDAwICswMzAwCisrKyAvdXNyL3NiaW4vaW50ZWdyaXR5LXNpZ24JMjAyMy0xMS0yMiAyMzow
MDo0NS44MDI1MTMwODEgKzAzMDAKQEAgLTE2Nyw3ICsxNjcsNyBAQAogbm9faW1tdXRhYmxlX2Zp
bGVzKCkKIHsKIAl3aGlsZSByZWFkIGZpbGU7IGRvCi0JCWNoYXR0ciAtaSAiJGZpbGUiCisJCWNo
YXR0ciAtaSAiJGZpbGUiIHx8IG1lc3NhZ2UgIkNhbid0IHJlc2V0IGltbXV0YWJsZSBmbGFnIGZv
ciBmaWxlICRmaWxlIgogCWRvbmUKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>