CodeArts Check全面守护软件质量与安全

举报
华为云社区精选 发表于 2023/12/27 11:13:33 2023/12/27
【摘要】 质量是软件产品的生命线,如何高效进行代码质量检查工作?如何做到在代码开发阶段事前就能修正软件缺陷和安全隐患?华为云资深产品专家揭秘,支撑了华为15万研发人员的CodeArts Check如何一站式完成代码检查作业!

本文主要由浅入深的给大家介绍为什么要用CodeArts Check(即CodeArts Check诞生的背景)?CodeArts Check 能做什么?我们在日常工作中,应该怎样使用CodeArts Check?

CodeArts Check诞生的背景

现阶段,很多小公司在实现软件功能需求时,往往没有考虑任何的安全问题,更不会进行代码规范的审核和检查。那如果不进行代码检查,有没有关系呢?

答案当然是肯定的,因为可能会导致以下危害:

1. 安全漏洞:未经过代码检查的程序容易存在漏洞,黑客可能利用这些漏洞攻击系统,导致数据泄露、系统崩溃等问题。

2. 低质量的代码:没有经过代码检查的程序可能存在代码冗余、复杂度高、可读性差等问题,导致代码难以维护、修改和扩展,甚至可能导致系统崩溃。

3. 时间和成本的浪费:未经过代码检查的程序可能需要花费更多的时间和精力进行调试和问题修复,增加开发成本和周期。

4. 法律责任:在某些行业和国家,软件开发公司需要遵守法规和标准,如果未经过代码检查而导致软件出现故障或安全问题,可能会面临法律责任和经济损失。

全球网络攻击频发,2001年到2022年这10年数据表明安全漏洞持续增长,企业风险持续增加。也正是因为软件安全风险高,后期修复成本高。因此,安全左移才成为了趋势。

常见的软件漏洞

业界目前的TOP软件漏洞主要以“外部输入校验”和“注入类安全问题”为主。龙翔老师帮我们列举了2022年统计出的TOP 25的安全问题,它们分别是

CWE-787:跨界内存写

CWE-79: 在web页面生成时对输入的转义处理不恰当(跨站脚本

CWE-89: SQL命令中使用的特殊元素转义处理不恰当(SQL注入)

CWE-20: 输入验证不恰当

CWE-125:跨界内存读

CWE-78: OS命令中使用的特殊元素转义处理不恰当(OS命令注入)

CWE-416:释放后使用

CWE-22: 对路径名的限制不恰当(路径遍历)

CWE-352:跨站请求伪造(CSRF)

CWE-434:危险类型文件的不加限制上传

CWE-476:空指针解引用

CWE-502:不可信数据的反序列化

CWE-190:整数溢出或超界折返

CWE-287:认证机制不恰当

CWE-798:使用硬编码的凭证

CWE-862:授权机制缺失

CWE-77: 在命令中使用的特殊元素转义处理不恰当(命令注入)

CWE-306:关键功能的认证机制缺失

CWE-119:内存缓冲区边界内操作的限制不恰当

CWE-276:缺省权限不正确

CWE-918:服务端请求伪造(SSRF)

CWE-362:使用共享资源的并发执行不恰当同步问题(竞争条件)

CWE-400:未加控制的资源消耗(资源耗尽)

CWE-611:XML外部实体引用的不恰当限制(XXE)

CWE-94: 对生成代码的控制不恰当(代码注入)

CWE指的是常见缺陷列表(Common Weakness Enumeration),它是MITRE公司(一个非盈利机构)继CVE(Common Vulnerabilities and Exposures)之后的又一个安全漏洞词典。

MITRE公司希望通过这一词典,给用户提供一个识别、减轻、阻止软件缺陷的通用标准。CWE也可以作为人们购买软件的安全衡量标准,尤其是在购买旨在阻止或发现具体安全问题的安全工具时。

CWE官网为:https://cwe.mitre.org/data/definitions/1387.html ,在上面,我们可以看到业界最新的TOP软件安全漏洞。

命令注入

系统使用外部输入来构造OS命令时,由于未对可能与期望执行OS命令不一致的输入进行清理,或过滤处理不当,攻击者可能会利用此漏洞执行攻击者没有权限执行的、系统所不期望的危险命令。

命令注入漏洞一直是行业内焦点漏洞、危害大。

命令注入攻击通过Web界面实施,从而在Web服务器上执行操作系统命令。攻击者通过Web界面提供操作系统命令,以执行操作系统命令。任何未正确处理(Sanitize)的Web界面会遭受这个漏洞利用。

目录遍历攻击

由于应用程序未对外部输入的文件名或路径做有效地验证与清理,攻击者通过输入包含“上一层”目录符号(如Windows中的“…\”与Unix中的“…/”)的文件路径,导航访问到服务器上的受限目录与文件。

CodeArts Check典型应用场景

软件开发阶段对代码质量和安全问题进行自动化检查,支持内置安全规范、要求到软件生产作业流,帮助企业软件内生安全。

提供深度代码安全检查能力,帮助政务云运营者和大企业管控ISV软件安全质量,构建供应链安全体系。

无缝对接作业流

本地编写代码,利用IDE插件实时检查

上传代码到代码托管服务合并时增量检查

持续集成,调用代码检查服务,持续看护版本质量

推送检查报告到代码检查服务

CodeArts Check核心竞争力

1.能力全面:全面支持代码的风格、质量、安全检查及度量

10+语言,7000+规则,100+编译器及版本支持

支持代码圈复杂度和代码重复率度量、防止代码腐化

2.能力专业:专业、深度代码安全检查能力、领先友商

提供跨函数、跨文件检查能力,提供污点分析检查能力

支持注入类、信息泄露类(AccessKey)等Top安全漏洞检查,覆盖10000+场景,能力全面领先开源标杆

支持华为云编程规范,兼容支持CWE、OWASP TOP 10、CERT、SANS TOP 25

3.高效、精准、易用:无缝对接作业流,端云协同,安全左移

提供CodeArts IDE Online\VSCode\IDEA\CodeArts IDE代码检查能力,支持代码编写时自动检查和问题自动修复

精准定位缺陷,提供全面修复建议和复合开发者信息的辅助分析信息流

无缝融入作业流,支持分支间忽略警告自动同步。提升用户作业效率

CodeArts Check 六大产品特性

特性一、自主研发高效精准代码分析引擎,轻松驾驭大规模代码扫描场景

CodeArts Check不仅内置丰富的开源工具,还打造能力全面的自研引擎。该引擎凝聚了国内40+博士、海外研究所50+专家、国内外10+专业学者的合作成果,经过华为内部15万研发人员大规模持续催熟打磨而成;针对代码的可读、可维护、安全、可靠、可测试、高效、可移植等方面进行了全面的分析,并融合华为30多年对代码质量及可信度提升方面的持续思考与探索、实践,积累了丰富的检查规则,形成独有的检查能力。

特性二、支持5个业界主流标准、内置5种语言华为编程规范

支持的业界主流编程标准和优秀实践有:ISO 5055、CERT、CWE、OWASP TOP 10、CWE/SANS TOP25。

内置华为多年研发经验总结的5种语言编程规范(C/C++/JAVA/Python/GO)。

特性三、支持主流开发语言、内置丰富检查规则集,开箱即用

支持C/C++JavaPythonGOJavaScriptCSSHTMLPHPC#Android等市场主流开发语言

满足嵌入式、WEB应用、移动应用等开发场景所需

提供7000+检查规则,梳理各场景需要,内置全面检查规则集、关键检查规则集、移动领域规则集、华为编程规范规则集10+规则集,便于用户开箱即用

企业用户也可以基于规则库,定制满足业务场景个性需求的检查规则集

特性四、日均百亿级扫描能力,强力支持大型开发团队

具备强大的高并发处理能力,服务日均扫描百亿行级代码

服务通过AZ容灾、跨region级容灾多活、支持过载保护、服务依赖和隔离等一系列高可用特性,实现服务故障自探测、自隔离、自恢复,为大型应用和团队提供可靠支持

针对检查业务峰谷明显的业务特征,通过强大的弹性调度能力,快速高效的调配资源满足业务所需,保障业务高峰0等待

特性五、问题精准定位、详尽修复指导、结果自动继承,加速问题闭环

问题精准定位到行、提供修复指导(内置编程规范说明、正确示例、错误示例、修复建议),提高问题分析效率

自动根据代码提交信息匹配问题责任人,IDE插件提供自动修复能力,提升问题修复效率

自动同步已处理的忽略问题、对于经过审视判定为不需要处理的问题,同一代码仓库只需处理一次

特性六、无缝对接开发作业流和用户看板,保障检查流程自动落地

提供丰富的API接口、提供IDE代码检查插件、与代码仓协同支持代码提交时自动检查,与CI/CD流水线同时支持软件全量代码检查,逐层防范代码缺陷引入

同时通过灵活的任务管理、支持排除目录设置以避免无效扫描

支持混合语言检查、简化部署,一站式掌握整个版本代码质量

CodeArts Check 服务入口

CodeArts Check 服务入口主要有3个,它们的下载地址分别是

IDEA插件:

https://plugins.jetbrains.com/plugin/20956-huawei-cloud-codearts-check

VSCode插件:

https://marketplace.visualstudio.com/items?itemName=HuaweiCloud.codecheck&ssr=false#overview

CodeArts IDE Online插件

https://marketplace.ide . huaweicloud.com/plugin/f8d1b76e-0826-408a-8506-1f33f7f008e5/overview

IDEA插件

在菜单栏点击“File”,然后选择“Settings”,在打开的设置对话框中,定位到“Plugins”,然后搜索“CodeArts Check”,安装“Huawei Cloud CodeArts Check”插件。

我这里使用“华为账号登录”的方式,它会打开一个华为云自动登录的网站,只要你之前勾选过记住账号密码,那现在就只要选择账户,就可以自动登录了。

选择账户的模式还支持“多账户切换”。

登录成功后,你就可以返回你的IDEA了。

在项目上右击,可以看到CodeArts Check新增的3个功能选项。

1. 项目检查(对整个项目进行扫描。非必要不推荐,因为扫描可能会耗费大量的时间)

2. 文件检查(只对单个文件进行扫描)

3. 一键格式化(帮你将代码进行标准的格式化)

我这里只对单个java文件进行扫描,可以看到 Huawei Cloud Toolkit 检查到了如下这么多问题(严重质量,提示质量,一般质量)。


在“规则详情”中,会给你描述这是什么“问题”,应该遵守什么“规范”,“正确的代码示例”和“错误的代码示例”。

但是这个“基础版”的,并不会给出“自动修复代码的预览”。


VSCode插件

在VSCode 安装插件的位置上搜索“CodeArts Check”,第一个就是“Huawei Cloud CodeArts Check”

安装好后,可以看到底部状态栏上显示“Huawei Cloud Toolkit : Offline”,这是因为我们首次安装完成,还未登录。点击该按钮进行登录。

1. 第一个按钮是通过浏览器进行登录

2. 第二个按钮是通过华为云的AK/SK密钥进行登录


密钥的路径在华为云登录页面,点开账号,“我的凭证”页面下的“访问密钥”里(如果没有创建过,就自行创建一个)。

“账号密码”方式与“AK/SK”的登录方式二选一,我这里用“AK/SK”的登录方式举例,输入“AK/SK”后,会弹出一个“隐私声明”的对话框,点击“同意并继续”按钮。下面是插件登录成功后的界面(点击“CONFIGURATION”也可以打开该页面)。

将该配置页面拉到最底可以看到,当前仅支持如下3种语言:C、CPP、JAVA(并不支持JS、HTML和CSS)。

在项目或文件处右击,可以看到CodeArts Check新增的3个功能选项:

CodeArts Check Project Check
项目检查(对整个项目进行扫描。非必要不推荐,因为扫描可能会耗费大量的时间)

CodeArts Check File Check
文件检查(只对单个文件进行扫描)

CodeArts Check Auto Format
一键格式化(帮你将代码进行标准的格式化)

检查完成后,点击上图左下角的x和感叹号按钮,即可弹出“检测结果”页面(对于 C/C++,不仅能提示你哪里不符合规范,还能给出直接的修复建议)。

(结合上文对IDE中JAVA代码的测试情况)可以说,华为云CodeArts Check对 C/C++ 的支持是大于Java的!

此外,它也有个不足的地方,那就是不会自动检测文件编码格式的错误。

CodeArts IDE Online

除了本地的IDE和VSCode,你还可以使用华为云的 IDE Online 进行插件试用,链接地址:https://marketplace.ide.huaweicloud.com/plugin/f8d1b76e-0826-408a-8506-1f33f7f008e5/overview

安装插件之前,需要创建实例。

点击创建实例后,即会进入如下界面,该界面的地址为:https://devcloud.cn-north-4.huaweicloud.com/cloudide/home

点击“开通服务”,即可进入付费页面(当前免费开通,但使用需要付费)。

购买方式:CodeArts Check 产品的地址为:https://www.huaweicloud.com/product/codecheck.html

下面还有详尽的产品解说视频以及产品的优势和其应用场景,你可以仔细的阅读完毕后,再考虑是否购买,以及购买哪种规格的产品。

服务的购买方式有:

1. 针对日常质量和规范检查,购买CodeArts解决方案套餐基础版、专业版、铂金版就可以使用CodeCheck服务

2. 针对TOP安全问题拦截检查,可以在已购买CodeArts解决方案套餐版本基础上增购特性包“代码安全检查增强包”

3. 检查插件

我把大致的资费情况总结成了下表:

产品规格

基础版

专业版

铂金版

资源包

特性包

价格详情

5人(含)以下免费,新增人数50元/人/月

6人起购,前5人1元/月,第6人起200/人/月

¥600元/月/人 ,100人起售

2000

360000



产品套餐

代码检查相关能力说明

资费情况

体验版

固定50人;Java、Python等语言能做检查;官方给出任务并发只有1个

全免费

基础版

至少5人起步;可以检查10种编码语言,官方给出任务并发为5

5人 300元/月起步;第6人起60/人/月

专业版

至少5人起步;在基础版基础上增加了安全相关的代码检查,官方给出任务并发为10

5人 1000元/月起步;第6人起200/人/月

企业版

至少5人起步;在专业版基础上将任务并发夸大到20

5人 3000元/月起步;第6人起600/人/月

资源扩展

主要是增加了检查任务的并发能力

1个并发 773元/月

特性包

提供了代码安全检查的增强,官方说明的能力为供跨函数、跨文件、污点分析、语法树搜索、语义分析等代码安全检查能力

1个并发 10000元/月

因为我这里是个人开发者,所以我购买这个基础版就够了,另外团队成员在50人以下想对团队的代码做基础质量检查的,也可以使用体验版来免费试用华为云CodeArts Check代码检查能力,帮助企业实现一个更加安全规范的上线产品。

CodeArts Check还非常贴心的给你提供了一个价格计算器,还有详尽的价格说明,地址如下:

https://www.huaweicloud.com/pricing.html?tab=de t ail#/devcloud

回看直播:《CodeArts Check,全面守护软件质量与安全



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。