将Gosec放入您的管道中以发现源代码安全性问题

由于许多原因,Golang在编程语言的流行方面一直保持上升趋势。 出色的库,意味着更多的用户,这意味着更多的库和更多的用户-像我这样更多容易出错的用户。

犯错是人类,要宽恕神圣–亚历山大·波普

谁能一次或两次说,他们没有不小心签入了一些硬编码的密码,个人访问令牌或使用了不安全的随机数种子。 我知道我有! 好吧,我可以告诉你,尽管亚历山大·波普(Alexander Pope)说“要原谅上帝”,但系统管理员和代码审查员却没有这么友好地认为。

将Gosec放入您的管道中以发现源代码安全性问题_第1张图片

不用担心,存在一个名为gosec的开源工具,该工具可以帮助您发现Go源代码中的问题。 您可以从台式机/编辑器运行此程序,也可以(可能)将其作为管道的一部分(如果发生“不可原谅”的情况)。
Gosec的工作方式是将所有源代码加载到AST中,并应用一组内置规则来查找常见错误,例如代码中的机密(有点巧妙:它寻找通常代表机密的高熵字符串),SQL字符串程序集(注入攻击的来源)等等。 如果得到误报,您可以随时添加一条注释,告诉它跳过它(也许正确的字符串correcthorsebatterystaple89874328^&^&*^FDHJKHKJFDHJKS实际上是合法的事情,绝不是秘密)。

在正确的时间中断管道

将Gosec放入您的管道中以发现源代码安全性问题_第2张图片

一旦gosec进入您的管道,一旦违反任何规则,您的构建将在造成太多伤害之前失败。 看起来像这样:
(您可以使用多种格式举报违规行为-这只是默认设置,对我来说似乎不错)。

设定

将Gosec放入您的管道中以发现源代码安全性问题_第3张图片
将Gosec放入您的管道中以发现源代码安全性问题_第4张图片
将Gosec放入您的管道中以发现源代码安全性问题_第5张图片

当然,在CloudBees CodeShip中使用它非常容易。 CloudBees CodeShip具有“开箱即用”的一些不错的Golang支持,因此首先创建一个新项目:
接下来,配置您的构建步骤,您需要执行的操作: 然后添加gosec作为测试配置的一部分:

curl -sfL https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s -- -b $GOPATH/bin latest
gosec ${HOME}/src/github.com/michaelneale/mikerowecode.com

这将安装它的最新版本(不错的主意),然后应用全套规则。 您可以在命令行中排除特定规则(或者您可以在注释中注释代码,以根据需要忽略误报的内容)。

Gosec可以处理源代码和AST,因此在运行测试以获取较早的反馈之前这样做很有意义(即使在构建步骤之前,您也可以这样做-尽管它们可能会修改源代码或引入更多内容,但取决于您真)。

就是这样。 您的日子可能不会那么尴尬。

额外资源

  • 了解有关使用Go进行开发的信息
  • 了解有关Go应用程序和Docker容器的信息
  • 在Anchore中注册有关在CodeShip管道中增加容器安全性的网络研讨会

翻译自: https://www.javacodegeeks.com/2018/12/gosec-pipeline-spot-source-code-problems.html

你可能感兴趣的:(将Gosec放入您的管道中以发现源代码安全性问题)