软件嵌入式研发行业现状分析:
软件研发或嵌入式研发行业,其核心部分往往就是源代码,如何做好源代码的管理至关重要。此文仅谈源代码的安全管理。根据软件研发或嵌入式研发行业的从业者现状,认为研发从业人员有以下特点:
1.学历较高,都非常聪明,非常懂电脑。
2.每个研发人员都有能力写程序,甚至可以通过写程序,进行各种数据变形。例如:文件读写(输出日志)、socket通信、内存映射,常驻服务等,对于Web开发者,经由IIS或TomCat等web服务器的代码变形更是轻而易举。
3.研发人员的个性较强,比较难管理
而我们软件研发或嵌入式行业特点要求必须对研发成果—源代码进行安全管理。但是现实的工作必须环境特点为:
-大家必须有局域网,才能协同工作;
-需要能访问互联网,方便查找资料;
-必须通过U口串口网口等端口连接外部设备进行调试。
对于一些企业有的采用物理隔离,有的上虚拟化,有的上文档级加密软件,监控软件基本上都是形同虚设。例如常见的物理隔离,就是网络和外网断开,然后禁止使用U盘(软件或机箱),看上起很美好,但是对于懂电脑的研发人员来说,影响了工作效率,还是无法达到安全。
--对于软件禁止U盘的,搞个U盘PE,然后直接从U盘启动绕开操作系统的管控做任何事。
--插拔墙上的网线头直连自己的笔记本电脑进行数据传输。
--对于不能封U口/串口的嵌入式调试环境更简单,直接可以把数据通过U口串口写出来。
。。。。。。
另外,对于虚拟化,所有数据在服务器端,看上去很完美,但是只要外网可用,外设可用,基本上没什么安全可言。
作为一个软件嵌入式研发公司的信息安全管理者,应该如何呢?
研发团队代码管理要点:
第一重要:必须构建源代码版本管理服务器
无论是多大的研发团队,源代码版本管理服务器都非常重要。不能因为团队小,图省事,就不使用源代码管理服务器了。使用源代码管理服务器,不但可以追朔历史,而且还能提高团队协作,提高产品质量。目前常见的源代码版本管理服务器有SVN/VSS/CVS/GIT等。
有了源代码版本管理服务器,就可以规范开发流程了。
1. 必须规定每个研发人员,每天必须把编译通过的源代码提交到版本服务器,防止终端异常代码找不到。修改代码必须要有注释,不但代码中要有,更新SVN的时候也要有。
2. 发布版本的时候,必须完整的从SVN下载代码进行编译,然后以此结果发布,不允许任何员工从自己的电脑直接发布软件版本。
3. 版本服务器上必须设严格的访问项目目录访问权限,没必要的使用的目录,不需要给员工开放。
4. 在源代码版本管理服务器上必须部署SDC沙盒机密端,做到只有安装了SDC沙盒客户端的电脑才能到这个源代码版本服务器上下载,更新代码。而一旦部署了SDC沙盒,所有代码都是拷贝不走的,安全的。
5. 服务器物理存放到机房或老板办公室,不要让员工直接接触。收回操作系统账号。
第二重要:设计时加入安全因素
1. 研发设计不能省,必须进行模块化设计,模块间有明确的接口,核心模块的代码最好做成library,避免无关的人直接接触核心代码,也可以避免每个开发者都有完整的代码,降低泄密风险。
2. 为有效防止反编译,关键模块代码最好使用C/C++语言。
第三重要:日常代码安全管理
任何项目研发,基本上都有设计,编程,测试,发布等几个基本环节。
1.在设计/编程阶段,要围绕SVN,在SDC沙盒安全环境下进行。SDC沙盒是个容器,什么都能跑。并且不影响安全。此阶段,使用普通策略即可。
2.在测试阶段,由于要连接测试服务器或者是外部设备进行调试,此时是代码安全风险最高的阶段,也最难管理。此阶段,首先要把测试服务器纳入SDC沙盒安全环境中来,这样发布到测试服务器上的内容,就无法被拷贝走。如果需要对设备进行烧录,那就启用SDC沙盒的智能端口过滤功能模块,不影响调试的同时,也能有效控制经由设备的中转代码泄露。
3.产品发布阶段,走外发审批,然后才能对外发布。如果有能力,推荐搭建web化的自动编译/发布服务器。
另外,其他注意事项:
4.必须严格遵循开发规范和流程,让每位员工有安全意识,如人离开电脑后锁屏。
5.开发电脑上都要部署SDC沙盒客户端,让其在涉密沙盒内写代码,如果要上外网,从沙盒外上外网。(沙盒内透明加密,不影响编译调试,各种变形都无法逃离沙盒);
6.访问互联网查资料的时候,数据只进不出;
7.使用QQ等即时聊天工具时,数据只进不出,并反截屏:
8.要向外部拿数据,必须让其走审批。
第三重要:充分发挥SDC沙盒的功能
SDC沙盒是一套完整的源代码安全解决方案,除了标准的防泄密功能之外,还有行为监控预警功能,例如打印内容监控,上网内容监控,外设数据通信监控,用户行为分析,屏幕监控,反截屏,反拍照等功能。如果能用好各项功能,可以极大的提高源代码的安全性,详细请参考SDC沙盒的官网www.shenxinda.com。