摘要:国内某头部农商是一家深耕华南经济、服务千家万户的金融机构。随着该农商金融业务系统的不断拓展,目前已扩展到了互联网应用类、理财类、风控类、基础平台类、特色业务类、办公类、数据应用类、智能分析类、数字渠道类等数十个软件应用系统。
用户背景:
国内某头部农商是一家深耕华南经济、服务千家万户的金融机构。随着该农商金融业务系统的不断拓展,目前已扩展到了互联网应用类、理财类、风控类、基础平台类、特色业务类、办公类、数据应用类、智能分析类、数字渠道类等数十个软件应用系统。
面临问题:
因软件系统繁多,且公司自有与外包软件开发人员编码安全意识水平参差不齐,虽然自有开发人员具备基本的安全编码意识,熟悉SQL注入、硬编码等基本的软件安全编码规范,但大部分外包开发人员可能缺乏金融领域的安全编码经验,且可能因项目周期短而忽略安全细节,导致其所生产的软件系统面临着SQL注入(绕过系统身份验证篡改数据库)、XSS跨站脚本(未对转账金额参数类型校验,输入负数后账户余额无限增加)、危险文件上传(可上传恶意脚本控制服务器,获取客户资料)、远程代码执行(可利用远程代码执行漏洞盗取资金)等诸多安全隐患,严重威胁着金融系统的稳健运行。
为了解决代码安全问题,农商行安全部联合研发部共同制定了一套《软件上线运行制度体系》,体系涵盖软件研发的管理、测试、代码审查等数十项细则,但因细则的颗粒度不足导致操作规范模糊,在内部实施过程中难以推进和落实代码安全审计工作,未能彻底解决软件开发过程中的代码安全问题。
解决方案与路径:
面对这一困境,农商行深知仅凭现有的力量难以突破瓶颈,开始寻求外部专业软件安全团队的支持,最终在调研国内众多软件安全厂商后,看中开源网安深厚的软件安全技术底蕴和丰富的SDL咨询经验,而选择开源网安携手共同解决代码安全问题。
在项目实施过程中,开源网安派出了由资深软件安全咨询师组成的精英团队,对农商行的《软件上线运行制度体系》开展了多维度、穿透式的深度剖析,找出不足并制作对应举措,主要包括:
1、通过"制度图谱"分析,我们发现系统开发安全管理细则中安全部门缺少安全编码规范制定与审查、软件安全编码培训、代码安全评估等关键职责,且仅有开发部门负责制定代码安全规范,而且关注点主要集中于代码质量,安全部门反而未承担安全编码规范制定等职责,这说明代码安全层面则未能有效覆盖,编码规范制定机制存在明显短板。因此将原来的系统开发部门制定代码安全规范,优化为“安全部门和系统开发部门共同制定代码安全规范”,确保代码审计规范兼顾代码质量,又能全面覆盖代码安全层面。
2、我们通过代码安全5大维度(注入、XSS、加密、日志、访问控制、错误处理)对农商行的历史代码库进行全量分析,输出“安全编码能力数字画像”,发现以往编码过程中经常忽视了代码安全编写的基本要点与规范,因此制定《南代码审查规范》,形成规范作业。
3、在代码审查规范中,结合银行内部信息系统的安全分级【(一级)普通级、(二级)重要级、(三级)关键级、(四级)核心级】分类,建立系统安全分级-编码检测规则映射表,制定不同系统对应的代码安全检测模板,并将映射后的安全漏洞在代码审计平台中进行分级规范建模,以此确保不同级别软件系统的代码安全。
4、在代码审查规范中,结合银行的《软件上线运行制度体系》,制定了代码审查流程,该流程依据项目阶段进行细致分工,开发人员与代码安全审计人员“各司其职,协同作业”,以确保软件系统上线和安全管理同步进行。
同时,我们深知只要的复杂系统,就有可能发生未知的安全隐患,因此除了在软件上线前排除安全隐患,还需要在隐患发现时快速解决隐患。因此,我们针对国内外代码审计工具检测结果难以理解和修复建议看不懂的通病,开源网安项目组代码安全专家,为每一条超危、高危漏洞提供了针对性的代码修复建议,主要包括:
1、针对国内外不少安全工具对缺陷描述不清晰的问题,开源网安采用“问题说明+发生原因+导致结果”三段式清晰结构,对每类漏洞进行详尽描述,有效规避因直译描述、描述不明等理解障碍,可让即便是缺乏经验的开发人员也能轻松理解,显著提升了漏洞描述的准确性和可读性。
2、针对错误示例代码臃肿难懂的问题,开源网安采用简洁明了错误代码示例、正确代码示例进行漏洞说明,每个代码示例控制在20行以内,示例不仅展示了参数传入、缺陷引发到爆发的完整路径,还配备了详细的中文注释。同时,我们还为每个缺陷提供了多样化的错误示例,以命令行注入漏洞为例,给出了cmd命令执行和ProcessBuilder等多种场景,确保错误代码示例既广泛全面,且更加易懂。
3、针对错误代码示例与修复代码示例不对应的问题,开源网安采取了“直接在错误代码示例上进行修复”方法,实现精准修复,并在修复位置详细标注修复建议和注释,极大地提升了修复示例的清晰度和易懂性,为开发人员提供了更加直观、有效的代码修复指导。
核心成果:
在开源网安专业团队的深度诊断与精准施策下,帮助农商行成功破解了长期困扰的软件代码安全难题,有效帮助客户建立起牢固的软件安全防线。
1、超危漏洞排除率100%,有效增强金融系统稳健性
有效遏制了上线软件系统中的SQL注入、XSS跨站脚本、危险文件上传及远程代码执行等高危安全隐患,从项目实施前的50+个超危漏洞,减少到目前“0”超危漏洞,增强了金融系统的稳健性与抗攻击能力。
2、代码审核时长缩短80%,大幅提升了软件上线质量与效率
在软件安全研发能力方面,农商行实现了从制度到技术的全面升级,通过引入“制度图谱”分析法,明确了安全部门在代码安全编码规范制定、审查及培训等方面的核心职责,大大健全了安全管理体系。在该项目实施前,系统上线代码审核周期平均需2周时间,目前3天即可完成审核,审核时长缩短80%,大幅提升了软件上线的质量与效率。
开源网安此次携手农商行,不仅解决了农商行的软件安全的燃眉之急,更为其软件安全能力的持续提升奠定了坚实基础。同时,开源网安在广州、武汉、常熟、苏州等农商行的软件安全建设丰富经验,希望可为各地区农商行软件安全建设提供借鉴、参考。
来源:开源网安