<br><br><div class="gmail_quote">22 июля 2011 г. 23:56 пользователь Dmitry V. Levin <span dir="ltr">&lt;<a href="mailto:ldv@altlinux.org">ldv@altlinux.org</a>&gt;</span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

On Fri, Jul 22, 2011 at 11:31:59PM +0400, Evgeny Sinelnikov wrote:<br>
&gt; 22 июля 2011 г. 23:17 пользователь Dmitry V. Levin написал:<br>
<div class="im">&gt; &gt; On Fri, Jul 22, 2011 at 08:47:17PM +0300, Igor Vlasenko wrote:<br>
&gt; &gt; &gt; On Fri, Jul 22, 2011 at 01:07:02AM +0400, Dmitry V. Levin wrote:<br>
&gt; &gt; &gt; &gt; On Fri, Jul 22, 2011 at 12:58:09AM +0400, Денис Смирнов wrote:<br>
&gt; &gt; &gt; &gt; &gt; DVL&gt; Там используется subst_module_spec(), скопированный из<br>
&gt; &gt; kernel-build-sh-functions.<br>
&gt; &gt; &gt; &gt; &gt; DVL&gt; Надеюсь, вы помните, что там есть вызов утилиты add_changelog,<br>
&gt; &gt; который равносилен<br>
&gt; &gt; &gt; &gt; &gt; DVL&gt; исполнению произвольного кода на сервере?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; можно заменить add_changelog на равносильный вызов<br>
&gt; &gt; &gt; $ srpmnmu -i --next-release-policy=none --changelog &#39;- some text&#39;<br>
&gt; &gt; /path/to.spec<br>
&gt; &gt; &gt; у которого реализация add_changelog чисто перловая.<br>
&gt; &gt;<br>
&gt; &gt; Насколько надежно в таком случае srpmnmu может вычислить<br>
&gt; &gt; &#39;%|serial?{%{serial}:}|%{version}-%{release}&#39;<br>
&gt; &gt; используемый для формирования %changelog&#39;а?<br>
&gt; &gt;<br>
&gt; У меня используется свой вариант girar-stamp-spec, но проблема там та же.<br>
&gt; Возможность вероятного трояна, если я правильно понял, состоит в том, что в<br>
&gt; сборочных секциях может быть, по сути, любой скрипт, а соответственно и код.<br>
<br>
</div>В любой части спекфайла может встретиться вычисление выражения, которое<br>
приведет к исполнению произвольного shell-кода при запуске rpm --specfile.<br>
<font color="#888888"><br></font></blockquote><div><br>Я предлагаю их исключить при вычислении NVR всё лишнее. Примерно так:<br>$ grep -e &#39;^[Nn]ame:.*&#39; -e &#39;^[Vv]ersion:.*&#39; -e &#39;^[Rr]elease:.*&#39; -e &#39;^[Gg]roup:.*&#39; -e &#39;^[Ll]icense:.*&#39; -e &#39;^[Ss]ource:.*&#39; -e &#39;^[Ss]ummary:.*&#39; -e &#39;^%define.*&#39; -e &#39;^%description.*&#39; &lt;girar.spec<br>

%define tratata ng<br>Name: girar-%tratata<br>Version: 0.3<br>Release: alt1.eter38<br>Summary: git.eter server engine<br>License: GPL<br>Group: System/Servers<br>Source: %name-%version.tar<br>%define girar_group girar<br>

%define girar_user girar<br>%define gb_group girar-builder<br>%define gb_user girar-builder<br>%define girar_keydir %_prefix/lib/%name-gpgkeys<br>%description<br><br><br>$ grep -e &#39;^[Nn]ame:.*&#39; -e &#39;^[Vv]ersion:.*&#39; -e &#39;^[Rr]elease:.*&#39; -e &#39;^[Gg]roup:.*&#39; -e &#39;^[Ll]icense:.*&#39; -e &#39;^[Ss]ource:.*&#39; -e &#39;^[Ss]ummary:.*&#39; -e &#39;^%define.*&#39; -e &#39;^%description.*&#39; &lt;girar.spec &gt;tst.spec <br>

<br>$ rpm -q --specfile tst.spec <br>girar-ng-0.3-alt1.eter38<br><br>Есть у этого варианта ограничения?<br></div></div><br clear="all"><br>-- <br>Sin (Sinelnikov Evgeny)<br>Etersoft<br>