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

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

    <bug>
          <bug_id>46884</bug_id>
          
          <creation_ts>2023-07-12 15:45:52 +0300</creation_ts>
          <short_desc>некорректная схема версионирования пакета</short_desc>
          <delta_ts>2025-04-21 14:06:06 +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>linux-tools</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Danil Shein">dshein</reporter>
          <assigned_to name="Vitaly Chikunov">vt</assigned_to>
          <cc>rider</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>229559</commentid>
    <comment_count>0</comment_count>
    <who name="Danil Shein">dshein</who>
    <bug_when>2023-07-12 15:45:52 +0300</bug_when>
    <thetext>Пакет в репозитории имеет схему версионирования MAJOR.MINOR в то время как в апстриме применяется схема MAJOR.MINOR.PATCH

В настоящий момент в рамках проекта ALTRepo DB (packages.altlinux.org, rdb.altlinux.org) ведётся активная разработка иструментария поиска открытых и закрытых уязвимостей пакетов репозитория ALT Linux.

Существующая схема версионирования приводит к тому, что при анализе уязвимости пакетов с использованием данных CVE возникают ошибки при сравнении версий.

Например для версии пакета 5.15 уязвимость содержащая следующую конфигурацию `CPE matching`:
{
   &quot;cpe&quot;: &quot;cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*&quot;,
   &quot;versions&quot;: {
     &quot;version_start&quot;: &quot;&quot;,
     &quot;version_end&quot;: &quot;5.15.0&quot;,
     &quot;version_start_excluded&quot;: false,
     &quot;version_end_excluded&quot;: true
   }
}
считается открытой потому что версия 5.15 при сравнении считается меньше чем 5.15.0, которая исключена из диапазона версий.

В других дистрибутивах пакет linux-tools версионируется по схеме как у ядра (MAJOR.MINOR.PATCH)
https://repology.org/project/linux/versions

Изменение схемы версионирования позволит эффективно отслеживать как закрытые так и открытые уязвимость пакетов в репозитории и значительно снизить процент ложных срабатываний.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229585</commentid>
    <comment_count>1</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2023-07-12 22:04:47 +0300</bug_when>
    <thetext>У нас корректнее версионирование для пакета linux-tools, в апстриме этого пакета версионирование MAJOR.MINOR.PATCH не применяется.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229592</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2023-07-13 09:38:14 +0300</bug_when>
    <thetext>Тогда надо исключать трансляцию linux-tools в linux_kernel CPE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229594</commentid>
    <comment_count>3</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2023-07-13 10:00:11 +0300</bug_when>
    <thetext>(In reply to Anton Farygin from comment #2)
&gt; Тогда надо исключать трансляцию linux-tools в linux_kernel CPE.

На всякий случай поясню.

Этот пакет собирается из (диры tools) mainline дерева Linux, где версии всегда 2х числовые (VERSION.PATCHLEVEL[-EXTRAVERSION]). 3х числовые версии это стабильные ядра (другой репозиторий, много других бранчей). Кроме того тегов vX.Y.0 не бывает.

Я поискал, в perf тоже бывают CVE https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=perf например:

 CVE-2023-23003	In the Linux kernel before 5.16, tools/perf/util/expr.c lacks a check for the hashmap__new return value.

Про этот CVE есть такие записи:

 cpe:2.3:o:linux:linux_kernel:5.14:-:*:*:*:*:*:*
 cpe:2.3:o:linux:linux_kernel:5.14:rc1:*:*:*:*:*:*
 cpe:2.3:o:linux:linux_kernel:5.14:rc2:*:*:*:*:*:*
 cpe:2.3:o:linux:linux_kernel:5.14:rc3:*:*:*:*:*:*
 cpe:2.3:o:linux:linux_kernel:5.14:rc4:*:*:*:*:*:*
 cpe:2.3:o:linux:linux_kernel:5.14:rc5:*:*:*:*:*:*
 cpe:2.3:o:linux:linux_kernel:5.14:rc6:*:*:*:*:*:*

Вот эти версии из mainline. У нас rc* не собираются.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229596</commentid>
    <comment_count>4</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2023-07-13 10:37:20 +0300</bug_when>
    <thetext>Виталий, проблема в том, что на linux-tools вешаются cve ядра, т.к. они матчатся в linux_kernel и имеют версию без PATCH.

Возможно именно поэтому во всех дистрибутивах linux-tools собирают с трёхчисловыми версиями.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229598</commentid>
    <comment_count>5</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2023-07-13 10:38:54 +0300</bug_when>
    <thetext>Есть точно такая же ошибка в другом пакете usbip:
#46885</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229602</commentid>
    <comment_count>6</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2023-07-13 11:07:41 +0300</bug_when>
    <thetext>Я думаю никто не добавляет не существующую цифру к известной апстримной версии ради того, чтоб подстраиваться под ошибочные записи cpe. Но, действительно, у многих есть .0 у этих утилит - почти у всех кроме, например, Арча.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229610</commentid>
    <comment_count>7</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2023-07-13 11:17:09 +0300</bug_when>
    <thetext>Да, добавление .0 тоже облегчит задачу, т.к. rpmvercmp считает 5.15.0 старше чем просто 5.15

В fedora, похоже, linux-tools называется kernel-tools и собирается из своего дерева. имеет PATCH в версии:
https://src.fedoraproject.org/rpms/kernel-tools</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229613</commentid>
    <comment_count>8</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2023-07-13 11:20:57 +0300</bug_when>
    <thetext>В Ubuntu:
https://packages.ubuntu.com/kinetic/linux-tools-common</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229715</commentid>
    <comment_count>9</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2023-07-14 00:49:37 +0300</bug_when>
    <thetext>Если мы добавим &quot;.0&quot;, а в cpe будет правильная запись, например

     &quot;version_start&quot;: &quot;&quot;,
     &quot;version_end&quot;: &quot;5.15&quot;,
     &quot;version_start_excluded&quot;: false,
     &quot;version_end_excluded&quot;: true

То версия 5.15.0 снова не будет исключена из ошибки. Таким образом добавление &quot;.0&quot; это не решение проблемы.

Думаю самый правильный вариант - добавить в скрипт сравнения cpe отсечение хвостовых &quot;.0&quot; типа `sub /(\.0)+$/ -&gt; &apos;&apos;` перед сравнением.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229719</commentid>
    <comment_count>10</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2023-07-14 09:25:43 +0300</bug_when>
    <thetext>Сравнение идёт не в скрипте а в librpm.
Ну и тогда сломается остальная логика работы с остальными приложениями.

В libversion https://github.com/repology/libversion  от автора репологии подобные хаки используются, но мы не хотели бы переходить на неё и полностью отдать сравнение версий в librpm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229729</commentid>
    <comment_count>11</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2023-07-14 10:00:05 +0300</bug_when>
    <thetext>Я не имел ввиду что надо менять сам алгоритм сравнения.

Я имел ввиду что добавление &quot;.0&quot; к версии пакета не решит проблему сравнения её с ошибочными записями из cpe. Для решения достаточно было бы &quot;нормализовать&quot; версии взятые из cpe и из пакета перед их сравнением -- удалив хвостовые &quot;.0&quot;.

&gt;&gt; https://github.com/repology/libversion
&gt; &quot;Unusual separators: 1_2~3 == 1.2.3&quot;

Странное решение в свете распространенности тильды (в Debian, gnulib и rpm).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263288</commentid>
    <comment_count>12</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2025-04-21 14:06:06 +0300</bug_when>
    <thetext>https://packages.altlinux.org/ru/tasks/381828/fixes/
может быть нам вообще отвязать пакет linux-tools от CPE ядра ?</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>