介绍:IRify#

多语言通用代码审计产品:IRify 正式发布。

本产品以代码查询规则 SyntaxFlow 和多语言通用中间表示 YakSSA 为核心,支持代码审计、规则管理、代码扫描、漏洞风险信息处理等功能。已支持 Yaklang \ Java \ PHP \ Golang 。

欢迎访问产品主页: https://ssa.to/ 或 https://www.yaklang.com/irify 下载使用。

编译项目#

SyntaxFlow代码审计与代码扫描前都需要先进行项目编译。

手动编译#

项目管理

点击左上角项目管理

可见图中红色方框圈起的选项

编译项目的选项如下:必选项为项目路径

示意图 @@@@ 图片展示了一个操作界面,左侧红框标注“打包”按钮,右侧红框标注“选择项目”按钮,箭头指引操作流程。中间弹出“编译项目”窗口,红框标注项目路径输入区域,下方有“取消”和“开始编译”按钮,用于项目编译操作。

其他额外参数等都非必填。

直接点击首页开始审计或代码扫描,也可进行快捷编译:

代码审计

示意图 @@@@ 图片展示的是一个代码安全相关系统界面。上方有项目管理、代码审计等多个功能选项,其中代码审计被红框突出显示。下方有代码审计、代码扫描、规则管理三个板块,各有介绍及操作按钮,与上下文提及的代码安全主题相关。

示意图 @@@@ 图片展示了SyntaxFlow代码审计工具的界面。画面左侧有“代码审计”等选项卡,其中“项目管理”被红框圈出且有红色箭头指向。右侧欢迎界面中,“创建项目”按钮也被红框圈出,指向它的红色箭头明显。此图可能用于介绍使用该工具创建项目的入口位置。

代码扫描

点击代码扫描,也可以快捷编译项目

示意图 @@@@ 图片展示了一个操作界面,红色箭头指向“代码扫描”等图标,下方“规则执行”区域中,“新建项目”按钮以及“项目路径”输入框被红框标出,提示可手动输入项目路径,或将项目文件拖入相应区域,与代码扫描操作相关。

已编译项目列表#

在项目管理页面中,可以看到已编译项目列表,将会显示已编译项目的名称、路径、编译时间和相关操作。可以进行该项目的打开、扫描以及项目删除等操作

示意图 @@@@ 图片展示了“emissary - 本地模式”下的代码审计界面。左侧“代码审计”栏中“项目管理”被红框圈出,下方“已编译项目”列表显示项目名称为“emissary(2025...java)” ,语言、项目描述、存储路径等信息也有呈现,还可进行添加项目等操作。

代码扫描#

开始扫描#

首页和左上角均可进入代码扫描页面

示意图 @@@@ 图片为代码审计系统的界面截图。上方有多个功能图标,其中一个被红框突出显示。下方有“代码审计”“代码扫描”“规则管理”三大板块,分别介绍相应功能,并有“开始审计”“开始扫描”“查看规则”操作按钮,展示了系统的主要功能和操作入口。

导入新项目或选择已有项目后,再勾选左边规则,即可开始代码扫描。

示意图 @@@@ 图片展示了一个代码检测相关的操作界面。左侧有“扫描规则”区域,橙色方块列出多种规则;中间为“已选规则”列表;右侧“规则执行”区显示项目路径,并有“开始翻译”按钮。上下文可能与代码扫描规则设置及执行相关。

扫描信息#

扫描过程中,可以看到已选规则、风险统计、扫描进度等信息。

风险与漏洞列表中可以进行删除、在代码审计中打开、误报上传等操作。

示意图 @@@@ 图片展示的是一个代码检测相关界面。左侧显示“已选规则104/158”,右侧“规则执行”部分显示进度为24%,下方有“漏洞与误报”等板块,展示了规则执行的相关信息,如规则名称、执行进度、状态等,与代码检测操作的上下文相关。

扫描结果可以从左上角进入数据库查看

示意图 @@@@ 图片是某系统界面截图,展示了审计漏洞相关内容列表。界面上方工具栏处有两个红框标注的功能按钮,其中一个是齿轮状的“设置”按钮。上下文可能是在介绍该系统中审计漏洞相关功能及操作。

代码审计#

打开已编译项目#

打开已编译的项目,将会跳转至代码审计页面。

可以检查文件内容,但这些已经编译的项目文件内容是只读的。

代码/伪代码 @@@@ 图片展示了一个代码编辑界面,左侧是文件目录结构,右侧是代码编辑区域,其中有不同颜色高亮显示的代码内容。但由于缺乏具体上下文,无法明确其与标题及上下文的关系。

输入代码审计规则#

在左侧侧边栏中可以看到代码审计选项, 点开以后可以发现编写审计规则的窗口:

示意图 @@@@ 图片展示了一个代码编辑界面,左侧有文件目录结构,中间是代码编辑区域,显示“TaskTimeoutJobHandler.java”的代码内容。左侧工具栏有一图标被红色框标注,并有红色箭头指向下方的“定时任务”区域,下方弹出框展示了定时任务配置示例代码,与代码编辑内容相关。

结果信息#

每一次查询都会得到一个变量列表,如同上文所示,在SyntaxFlow规则中定名的变量都会在结果中列出。

点开变量名将会展示该变量内保存的所有结果,点击查看其中的某一项结果,YakRunner将会展开以下结构,编辑器将会跳转到该结果对应的源码位置:

示意图 @@@@ 展示了代码审计工具的操作界面。画面中红框突出显示了“数据”按钮、“发起代码自动扫描”弹窗以及审计结果列表。箭头指向了从点击“数据”到发起扫描及显示结果的流程,与代码审计的上下文内容相关。

审计结果:分析路径

在右侧上半部分审计结果将会展示获得该结果的所有分析路径。

默认展开路径信息。

IRify使用:原文配图 13

  • 可以继续点击获得每一个路径节点对应的源码信息。

代码/伪代码 @@@@ 图片展示了一段代码内容,位于“审计结果”下的“路径1”中“Parameter - value”部分。代码包含了“@Lock4j”“@GetMapping”等注解,还有一个名为“testLock4j”的公共方法,方法接收“key”和另一个“String”类型参数,方法内有打印语句和线程休眠10000毫秒的操作。

  • 点击右侧信息也可以直接在编辑器跳转。
  • 点击右上角为关闭详细信息或对路径进行折叠。

审计结果:分析图

右侧下半部分将会展示分析过程的图:

紫色节点代表当前结果,其他的普通节点代表分析过程中的节点。

流程图 @@@@ 图片展示了Syntax Flow审计过程。从下至上依次有t14342、RedisLockController等多个元素,箭头指示流程走向,并有step[2583]等步骤标识,还有如“操作成功”等文本信息,体现了审计过程中的相关操作与数据交互。

普通节点可以点击并且显示节点信息,点击文件路径可以在编辑器跳转:

流程图 @@@@ 图片展示了“Syntax Flow 审计过程”的流程图。图中包含多个节点,如“#104489.ok”“value”等,节点间有箭头连接表示流程走向,还标注了如“step[4281]:getReturns”等步骤信息,下方节点信息显示了相关代码路径及“Undefined=R.ok”等内容。

规则管理#

IRify具有独立的规则管理页面,能够查看本地数据库中已经存在的规则,且支持组名与关键词搜索,右上角可进行规则的增删、导入导出等操作:

示意图 @@@@ 图片展示了一个系统界面,左侧是目录结构,有php、security等文件夹。上方工具栏有“规则管理”等选项,其中“规则管理”被红框圈出。右侧有搜索框及“导出”“导入”“新增”按钮,红箭头从“规则管理”指向这些按钮,用于介绍相关功能操作。