《移动金融客户端应用软件安全管理规范》技术解读

王志超/朱隆国
逻辑漏洞是指业务/功能上的设计缺陷,常规漏洞扫描器无法发现逻辑漏洞,需要开发者对于认证、校验、交易处理等业务场景进行测试,确保不存在逻辑漏洞,开发者可以利用自动化的检测工具进行全面检查客户端代码是否存在调用具有已知安全漏洞的函数。

本文来自安全牛,作者/王志超/朱隆国。

移动客户端(移动APP)主要面临的威胁包括反编译、调试、篡改/重打包、输入记录、组件安全、注入和Hook、本地敏感数据泄露等。为贯彻落实《中华人民共和国国家网络安全法》,加强移动金融客户端应用软件安全管理,构建覆盖生命周期的管理机制,切实保障客户端软件安全,中国人民银行2019年发布《移动金融客户端应用软件安全管理规范》(JR/T0092-2019)(以下简称“规范”)。本文将从技术角度,对规范管理要求进行分析解读并为金融机构开展相应的合规工作提出建议。

QQ截图20211119092508.png

01points

规范内容解读

(一)规范总体框架

《移动金融客户端应用软件安全管理规范》(JRT 0092-2019),分别从技术和管理两个层面展开,对移动金融客户端应用软件以及客户端应用软件设计、开发、维护和发布的管理做出了明确要求。

总体框架

QQ截图20211119092508.png

主要内容

QQ截图20211119092508.png

适用范围

《移动金融客户端应用软件安全管理规范》(JRT 0092-2019)本标准规定了移动金融客户端应用软件的安全要求,以及客户端应用软件设计、开发、维护和发布的管理要求。

本标准适用于移动金融客户端应用软件的设计、开发、维护及发布过程,也适用于评估机构对相关应用进行安全性和标准符合性评估。

(二)身份认证安全

在规范中,强调了检测金融客户端身份认证方式、认证信息安全输入和展示、认证失败处理机制以及密码的设定与重置方面的安全性,其中认证信息安全性需要开发者重点检查认证信息输入时是否具有安全性措施,并强调以客户端应用软件在输入账户登录密码、银行卡支付密码和网络支付交易密码等认证信息时采用了替换输入框原文、逐字符加密、字符加密、防范键盘窃听、自定义软键盘,或者通过其他方式保证攻击测试无法获取输入信息的明文作为通过标准。

QQ截图20211119092508.png

(三)逻辑安全

此项强调了金融客户端逻辑安全设计、软件权限控制、风险控制、回退处理以及异常处理方面的要求,其中逻辑安全设计需要开发者对于认证、校验、交易处理等业务场景进行威胁建模,确保不存在逻辑漏洞,同时规范要求客户端代码避免调用具有已知安全漏洞的函数,避免敏感数据硬编码等安全问题。

QQ截图20211119092508.png

(四)安全功能设计

此项强调了金融客户端组件安全、接口安全、客户端抗攻击能力以及环境检测的检测要求,全面检测客户端三方组件、H5、接口,其中应通过有效手段检测客户端软件是否具备抵御静态分析、动态调试、防篡改的能力,安全检测、安全防护、客户端运行环境检测全方位考量已经成为金融行业客户端安全能力建设的必要手段。

QQ截图20211119092508.png

(五)密码算法及密钥管理

此项重点强调金融客户端密码算法以及密钥管理,对密码算法、密钥长度都做了相关的要求,其中密钥的生成、传输、存储应具备随机性和机密性。

QQ截图20211119092508.png

(六)数据安全

此项则是从金融客户端数据获取、访问控制、数据传输、数据存储、数据展示、数据销毁即数据安全全生命周期角度提出要求,其中数据获取不仅需要考虑个人金融信息收集的合规,还需要考量客户端本地数据安全、防篡改、防注入、防调试等高危风险漏洞,开发者需要从检测到加固做好全面防护。数据传输则是以针对不同场景的安全防护能力作为通过标准包括应用层数据的机密性、完整性不可抵赖性,传输层数据的机密性、传输协议安全及证书双向校验,需要对金融客户端进行逐一的渗透测试以检查薄弱点。

QQ截图20211119092508.png

02points

金融机构的合规建议

(一)加强安全输入,提升即时防护能力

如果缺少安全输入控制的能力,可能存在恶意程序对用户输入的敏感信息(主要是密码)进行窃听导致输入敏感信息泄露的风险。建议尽量使用系统自定义的随机软键盘(而非系统输入法)来输入敏感信息,加密击键,在敏感信息的输入过程尽量避免视觉反馈。

(二)加强逻辑漏洞的检测识别能力

逻辑漏洞是指业务/功能上的设计缺陷,常规漏洞扫描器无法发现逻辑漏洞,需要开发者对于认证、校验、交易处理等业务场景进行测试,确保不存在逻辑漏洞,开发者可以利用自动化的检测工具进行全面检查客户端代码是否存在调用具有已知安全漏洞的函数。

(三)加强软件客户端自身的防护能力

成功的反编译将使得攻击者能够完整地分析APP的运行逻辑,尤其是相关业务接口协议、和通信加密的实现。针对应用程序关键代码明文暴露降低的情况,攻击者或恶意程序可通过修改代码获取关键信息或绕过部分逻辑直接操作。缺失完整性校验主要会面临盗版、破解内购、在应用市场中夹带木马、广告等风险。建议客户端进行加壳处理防止攻击者反编译客户端,至少要对核心代码进行混淆。客户端在每次开机启动时进行客户端自身的应用完整性校验,在验证逻辑中不使用MANIFEST.MF中的数据作为验证凭证,同时需验证是否有不属于该客户端版本的新文件添加,验证过程于服务器端完成。

(四)加强密钥管理选用安全算法

需要关注密钥的生成、传输、存储安全,密码系统的强度跟加密算法复杂程度、密钥机密程度、密钥长度、初始化向量以及如何在密码系统内协同工作有着紧密关系。

(五)加强本地数据及传输安全

检测传输协议是否安全及程序中是否存在相关的残留信息,如测试内网信息、测试页面、私钥证书、测试或者管理员账号信息等。此类信息泄露可能造成数据泄露导致的系统入侵。设备中应测试程序对应的数据文件夹是否包含敏感数据。由于设备可以进行“越狱”,且“越狱”之后数据不会丢失,则导致本地存储敏感信息将造成较大风险。建议删除对应的数据残留,对数据文件夹敏感信息加密处理。

作者简介:

王志超,谷安天下金融审计负责人,10多年的信息安全、科技风险、科技审计、业务连续性、科技外包、数据治理、金融科技等咨询及审计服务经验,获得CISA、COBIT、CDPSE、CCSK、TOGAF、ISO22301 LI等证书,熟悉银行业、保险业、证券业、大型央企的科技管理风险与应对措施,对科技外包、业务连续性、数据治理、大数据、人工智能、数字化转型等领域均有着较为深入的研究,多次与银行共同参与银保监会组织的信息科技风险管理课题研究,并获得多个奖项。

朱隆国,谷安天下高级技术顾问,从事安全行业5年,熟悉配置合规检查、漏洞扫描、渗透测试、Android/IOS客户端安全测试、接口安全测试等。获得CISSP资质认证,具有较强的攻防实战经验,多次参与金融行业网络攻防重大保障活动。

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论