golang 代码安全审计
前言 Go语言主要用作服务器端开发语言,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。Go语言是强类型语言,它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。 由于Go语言代码审计资料较少,这里就把最近学习的对Vulnerability-goapp项目的审计过程分享一下。整个审计过程结合代码安全扫描工具和人工审计,期间也发现代码安全审计工具的漏报误报问题,以下将会细述。 审计对象 经过在github上查找,发现 https://github.com/Snow-HardWolf/Vulnerability-goapp 这个项目适合入门,涵盖了常见的go web安全漏洞。Gitclone之后在goland IDE里打开看到如下项目结构: Asserts目录是静态资源文件,跳过。 Pkg目录是使用go实现的业务逻辑代码,重点关注。 Runenv是数据库配置文件和生成数据库的脚本,简单看下就好。 Trap目录是一个CSRF漏洞的演示,重点关注。 Views目录是前端视图页面,简单看下就好。 代码安全扫描 首先我们使用代码安全扫描工具扫描,发现4类高危,2类中危漏洞,我们分别进行验证。 命令注入-数据流分析 在pkg/admin/admin