当前位置: 首页 > news >正文

如何依据GB/T34944-2017开展Java代码漏洞测试(一)

GB/T 34944《Java语言源代码漏洞测试规范》是在2017年发布的一步行业标准,该标准结合了国内软件开发的实际情况,参考了国际通行的安全测试方法,为开发团队、测试团队和安全评估机构提供了系统化的测试框架。

GB/T34944-2017 中包含了源代码漏洞测试的测试目的、测试过程、测试管理、测试工具、测试文档以及测试内容。本系列文章我们重点带大家了解,如何依据GB/T34944-2017 《Java语言源代码漏洞测试规范》标准开展Java源代码测试,文章最后附代码测试用例模板分享。

一、GB/T34944标准指导代码测试作业指导书的制定

GB/T34944-2017 标准中给出的测试过程包含四个阶段:测试策划、测试设计、测试执行和测试总结,这个四个阶段其实也是软件测试通常用的步骤。

先做策划,要知道测试的目标,要测哪些语言,依据的标准,用什么工具,搭建什么样的环境,还涉及到一些人员分工分工和这个各阶段的交付成果。要按照GB/T15532-2008 这个规范来产生测试各个阶段相应的一些文档。

设计阶段的主要是根据测试的的目标结合被测软件源代码的业务和技术特点,明确环境和工具。比如要测一段java源代码,就要搭建相应的gdk,选择能够支持测试的工具。再有就是明确测试需求、测试方法和内容,以及测试准入条件和测试的准出条件。

在设计阶段,采用自动化分析工具和人工分析相结合的方法是非常必要的,不应该只拿工具去做结果的输出。

测试执行阶段主要是按照漏洞类型和风险登记来分析我们扫描到的所有源代码漏洞,结合源代码的上下文内容和业务需求去做分析,这也是标准中提到的。作业指导书中也应该有这方面的内容,标准无法解决业务的问题,国标只是一个普适性的标准,但是具体到了某一个应用当中,加密强度是多少?或者业务流程上的一些限制,比如说一些限制不能让这个接口去被任意遍历,都需要去结合具体的业务。

最后是测试总结,我们要核查环境、工具以及方法和结果的针对性,确认是否达到测试目标,最后形成测试报告。这就是一个完整的源代码测试流程。

如需代码测试作业指导书可私信我获取

二、如何依据GB/T34944-2017测试内容部分开展代码测试

GB/T34944-2017 《Java语言源代码漏洞测试规范》标准中列出的漏洞测试内容包含9大方面,共44类问题。主要集中在安全功能和数据处理这两个类别。

6.2.1 行为问题

6.2.1.1 不可控的内存分配

内存的输入数据超过规定的内存上限之后,攻击者就可以达到他想返回的一个内存地址。在新的操作系统中,这类问题已经大大降低了,但是作为代码安全规范还是要提出来,要控制在程序中指定内存分配大小的上限在分配内存前对要分配的内存大小进行验证,确保要分配的内存大小不超过上限。标准中给出的规范用法是给最长的区域指定一个规定的内存大小。并且在分配的时候要进行验证。

漏洞描述:

内存分配的大小受外部控制的输入数据影响,且程序没有指定内存分配大小的上限。

漏洞风险:

攻击者可以使程序分配大量的内存,程序可能会因为内存资源不足而崩溃。

修复或规避建议:

在程序中指定内存分配大小的上限,在分配内存前对要分配的内存大小进行验证,确保要分配的内存大小不超过上限。

6.2.2 路径错误

6.2.2.1 不可信的搜索路径

不可信的搜索路径这个问题主要是程序当中会有一些搜索的优先级顺序,一旦搜索可以从不同目录中去找要执行的程序的时候,攻击者可以去它的上一层放一个恶意的exe。当在当前目录中找不到的时候,可能会去上一级去找,但是上一级已经被攻击者埋好了一个恶意程序,那就会去执行。这就是不可信的路径搜索的原理。

规范用法中举的例子是去判断PATH这个变量是一个常量,直接定义出来,让程序直接去这个路径下面找,不要自己去其他目录下面找,这就是该条的原理。

漏洞描述:

程序使用关键资源时没有指定资源的路径,而是依赖操作系统去搜索资源。

漏洞风险:

攻击者可以在搜索优先级更高的文件夹中放入相同名称的资源,程序会使用攻击者控制的资源。

修复或规避建议:

使用关键资源时指定资源所在的路径。

6.2.4 处理程序错误

处理程序错误,也只有一类,主要是未限制危险类型文件的上传。

6.2.4.1 未限制危险类型文件的上传

未限制危险类型文件的上传这个现在问题也很大。我们总结下来,在实战攻防过程中,出现问题比较多的是身份鉴别类的,口令没有保护好,弱口令之类的,或者是鉴别机制没有做好,包括有些可以重置用户口令的接口是可以任意访问的,攻击者可以直接把管理员的口令重置掉,这些都是身份鉴别方面的常见问题。

漏洞描述:

软件没有限制允许用户上传的文件的类型。

漏洞风险:

攻击者可上传具有危险类型的文件,这些文件可能在产品的环境中自动被处理。

修复或规避建议:

限制允许用户上传的文件的类型。

依据GB/T34944-2017标准中给出的测试内容,我们可以编写Java代码测试用例如下:

后面的文章会继续针对GB/T34944-2017 《Java语言源代码漏洞测试规范》其他测试内容进行介绍,帮助大家了解如何依据GB/T34944-2017开展Java代码漏洞测试。

http://www.cnnetsun.cn/news/1609138.html

相关文章:

  • 终极智能配置革命:自动化Hackintosh工具完整指南
  • 零基础入门FLUX.2-Klein-9B:5分钟生成左右对比图,效果直观
  • TypeScript 要换芯了,6.0 竟是旧编译器的最后一舞
  • scp传输大文件中断续传工具rsync介绍
  • Snap.Hutao:一款革命性的开源原神工具箱,彻底改变你的游戏体验
  • MySQL IF 和 IFNULL 用法详解
  • 革新性键盘定制引擎:ZMK固件如何重塑机械键盘体验
  • Amlogic S9XXX Armbian:3步让你的电视盒子变身全能服务器
  • [特殊字符] Local Moondream2开发者案例:集成图文对话功能到自有平台
  • 5分钟搞定!前端在线预览Office文档的3种零成本方案(含PDF/Word/Excel/PPT)
  • 用 AI 生成 n8n 工作流,15 分钟搭完我手动要搞半天的东西
  • AI辅助开发:用自然语言让快马AI为你编写地道的jdk1.8函数式代码
  • Windows 11本地Ollama大模型部署实战指南
  • 别再硬编码了!用注解+工厂模式,5分钟为你的Java应用扩展一个新PLC协议(ModbusTCP/S7为例)
  • 别光知道gcc main.c了!拆解GCC编译的4个阶段,手把手教你用-E、-S、-c选项看中间文件
  • 告别发热!用TPS54360改造你的LM317线性电源(效率提升300%)
  • 探秘书匠策AI:毕业论文全流程的“智慧魔法师”
  • 基于Spark+Hadoop+Hive 大数据 深度学习 机器学习的豆瓣电子图书推荐系统
  • 终极GPU显存稳定性测试指南:使用memtest_vulkan轻松诊断显卡问题
  • LFM2.5-1.2B-Thinking-GGUF快速上手:Python零基础调用模型API完整示例
  • 为什么wps保存从微信发出去的excel文件里单元格图片不可见
  • 简单4步用Win11Debloat优化Windows 11:新手也能让电脑提速70%
  • Node.js——util工具模块
  • Wan2.2-T2V-A5B新手教程:跟着步骤走,轻松玩转文本生成视频
  • ai赋能开发:在快马平台获得比devc++更智能的c++代码编写与调试体验
  • DeepSeek总结的plan_cache_mode 的隐藏行为
  • 在Windows 10上运行Android应用:Windows Subsystem for Android完整指南
  • 别光写控制台!给C++飞机订票系统加个简易图形界面(基于EasyX库)
  • Ostrakon-VL-8B环境部署教程:8-bit Retro UI免配置启动
  • TDOA三维定位实现——基于加权最小二乘法的MATLAB例程