Hi Xiaowen:
    非常感谢您的回复,使我对gcc_secure产生的背景有了进一步的认识。
    后续我们也会在开发的过程中,如果有机会的话,尽量减少exclude名单中的软件包数量。
    fsigned-char我们也会持续关注,争取gcc_secure的功能尽量单一化,将与secure无关的功能逐步移除。

Chenxi

发件人: Hexiaowen (Hex, EulerOS) <hexiaowen@huawei.com>
发送时间: 2021年11月16日 2:10
收件人: Chenxi Mao <chenxi.mao@suse.com>; dev@openeuler.org <dev@openeuler.org>
主题: 答复: 关于欧拉操作系统gcc_secure包问题的讨论
 

很感谢你的参与,我尝试答复下这个问题,有不合理的地方,希望可以一起改进:

 

我是SUSE的毛晨曦,目前正在从事基于欧拉的发行版的开发和调研工作。

        在开发的过程当中,关于GCC_secure的相关问题,想请教一下社区的开发者和维护者。后续我想会在GCC_secure这个包上面做一些开发维护工作。

 

Ø  Gcc_secure这个软件产生的背景是,需要对所有gcc编译的软件添加安全编译选项,

Ø  最开始的方案是选择修改rpm CFLAGS等编译选项,但发现无法覆盖所有,特别是没有makefile,直接使用脚本或其他方式构建的软件。

Ø  Gcc_secure的方案很粗暴,但有效,也在尝试改进方案。

 

        根据我对于GCC _secure包的理解,GCC_secure包主要完成了下面几项工作:

            1. gcc_secure包中增加了部分安全相关的编译参数,如pic/pie/fsprotect等,目的是增强整个openEuler的安全性

            2. 增加了fsigned-char参数,为了保证arm64X86的平台可移植性。

            3. gcc_secure中定义了一个exclude名单,这个名单是在project config中进行定义的,里面包含了大约几十个包

 

Ø  这里的描述准确,恰恰是gcc_secure的功能,

Ø   

        关于gcc_secure的实现,有一些不太了解的地方想请开发者、维护者帮我理清一下。

1.    gcc_exclude的这个名单,是否是因为一些已知问题,才将这些软件包放在exclude的名单中?后续时候会根据版本演进,逐渐将这些包也使用gcc_secure的方式进行编译,如果开发者或维护者已经有相关计划或规划,烦请分享一下相关计划,后续可以共同解决这个问题,使得编译一致化。

 

Ø  Exclude名单是在日常处理时,发现的不能使用gcc_secure,或只能使用某一个或几个安全编译选项, 这个早期的方案现在看来导致整个系统的构建极其混乱,需要整改。

 

2.    gcc_secure中增fsigned-char使得ARM64的行为与X86一致,是否可以从源代码的层面解决会更加彻底一些,最终将fsigned-chargcc_secure中移除。这方面我已经做了一些初步的工作,已经提交到社区。如果获得批准,后续我也会继续完善这方面工作。

 

Ø  非常赞成你的观点,源码层面的问题,就应该由开发者在源码层面闭环掉,而不应该让整个编译系统兜底。

 

几个PR我会检视合入, 再次感谢你的热心。

 

 

 

发件人: Chenxi Mao [mailto:chenxi.mao@suse.com]
发送时间: 20211115 17:31
收件人: dev@openeuler.org
抄送: Chenxi Mao <chenxi.mao@suse.com>
主题: [Dev] 关于欧拉操作系统gcc_secure包问题的讨论

 

Hi 各位尊敬的开发者和维护者:

您好,

 

        我是SUSE的毛晨曦,目前正在从事基于欧拉的发行版的开发和调研工作。

        在开发的过程当中,关于GCC_secure的相关问题,想请教一下社区的开发者和维护者。后续我想会在GCC_secure这个包上面做一些开发维护工作。

        根据我对于GCC _secure包的理解,GCC_secure包主要完成了下面几项工作:

            1. gcc_secure包中增加了部分安全相关的编译参数,如pic/pie/fsprotect等,目的是增强整个openEuler的安全性

            2. 增加了fsigned-char参数,为了保证arm64X86的平台可移植性。

            3. gcc_secure中定义了一个exclude名单,这个名单是在project config中进行定义的,里面包含了大约几十个包

        关于gcc_secure的实现,有一些不太了解的地方想请开发者、维护者帮我理清一下。

        1. gcc_exclude的这个名单,是否是因为一些已知问题,才将这些软件包放在exclude的名单中?后续时候会根据版本演进,逐渐将这些包也使用gcc_secure的方式进行编译,如果开发者或维护者已经有相关计划或规划,烦请分享一下相关计划,后续可以共同解决这个问题,使得编译一致化。

       2. gcc_secure中增fsigned-char使得ARM64的行为与X86一致,是否可以从源代码的层面解决会更加彻底一些,最终将fsigned-chargcc_secure中移除。这方面我已经做了一些初步的工作,已经提交到社区。如果获得批准,后续我也会继续完善这方面工作。

初步提交的PR如下:

 

    烦请社区维护者审阅

    相关问题在gitee上的地址:

 

Chenxi