当前位置:首页 > 科技  > 软件

Google 孵化了三个Go安全库,推荐使用!

来源: 责编: 时间:2024-04-29 16:17:43 276观看
导读大家好,我是煎鱼。Google 作为一家用户体量很大的企业,有非常多的产品,经常会被黑客攻击或被拿来练手。因此其设计的产品、编程语言、工具库等都会要求考虑安全性相关的内容。例如:各种供应链攻击、CWE 等安全的查缺补漏

大家好,我是煎鱼。bDg28资讯网——每日最新资讯28at.com

Google 作为一家用户体量很大的企业,有非常多的产品,经常会被黑客攻击或被拿来练手。bDg28资讯网——每日最新资讯28at.com

因此其设计的产品、编程语言、工具库等都会要求考虑安全性相关的内容。例如:各种供应链攻击、CWE 等安全的查缺补漏等。bDg28资讯网——每日最新资讯28at.com

我们作为用户(使用者),可以 “白嫖” 这些功能实现。直接复用在自家的业务上就可以了。这样每年在护网上都能省不少劲。bDg28资讯网——每日最新资讯28at.com

三个 Go 安全库

本次 Google 输出了三个新的 Go 开源库,能够提供安全、高效的解决方案。接下来会给大家分享安全库官方的一些案例和设计思路、方向。bDg28资讯网——每日最新资讯28at.com

图片图片bDg28资讯网——每日最新资讯28at.com

本次介绍涉及如下几个库:bDg28资讯网——每日最新资讯28at.com

  • SafeText[1]:用于 YAML 和 shell 命令模板,指的是对标 text/template 的安全增强。
  • SafeOpen[2]:用于打开目录中的文件,指的是对标 os.Open 等的安全增强。
  • SafeArchive[3]:用于处理归档文件,指的就是压缩文件的处理,对标 archive/tar 和 archive/zip 等的安全增强。

解决了什么问题

这些库经过精心设计,可应对常见的安全攻击,可以防范 CWE TOP25 中的以下弱点:bDg28资讯网——每日最新资讯28at.com

图片图片bDg28资讯网——每日最新资讯28at.com

  • #5 CWE-78[4]:操作系统命令中使用的特殊元素中和不当(操作系统命令注入)。
  • #6 CWE-20[5]:特殊情况下,输入验证不当。
  • #8 CWE-22[6]:对受限目录的路径名限制不当(路径遍历)。

这几个 Safe 系列库提供了强大的保护机制。只要使用这几个库,即使输入是由攻击者输入的,也能以无漏洞的方式执行这些基本的系统操作。bDg28资讯网——每日最新资讯28at.com

库使用和案例

SafeText

SafeText 库,是 2023 年初发布的第一个安全库的家族成员。bDg28资讯网——每日最新资讯28at.com

Google 要创造这一库的原因是:内部在使用 text/template 做开发基于 YAML 的应用程序时,经常受到 YAML 注入的攻击。bDg28资讯网——每日最新资讯28at.com

YAML 模板

SafeText 库被设计为 text/template 的直接替代品。我们可以用它来处理 YAML 模板,就像使用 text/template 一样。bDg28资讯网——每日最新资讯28at.com

两者不同的地方是:当检测到注入时,SafeText 库会返回错误。bDg28资讯网——每日最新资讯28at.com

以下是例子,假设模板如下:bDg28资讯网——每日最新资讯28at.com

---sensitive: datainnocent: "{{ .input}}"

当使用 text/template 时,如果攻击者控制了 .input 的值,他们就可以注入换行符,覆盖其他字段或更改文档结构。bDg28资讯网——每日最新资讯28at.com

根据不同的使用情况,影响可能是严重的。例如:当变更的结果被用作生产系统的配置文件时。bDg28资讯网——每日最新资讯28at.com

如果是使用 SafeText 库时,SafeText 将返回错误信息:YAML Injection Detected,,并阻止这类可能的侵入式攻击。bDg28资讯网——每日最新资讯28at.com

Shell 命令模板

在该库原有 YAML 功能的基础上,Safe 库还增加了对 shell 命令模板的支持。bDg28资讯网——每日最新资讯28at.com

设计上考虑的是:确保输入字符串不会被注入额外的命令或标志,而不考虑潜在的错误转义。(保证安全,接受部分错误的可能)bDg28资讯网——每日最新资讯28at.com

以下是例子,假设易受攻击如下:bDg28资讯网——每日最新资讯28at.com

result := fmt.Sprintf("git commit -m %s", message)

如果信息变量受攻击者控制,且连接字符串在某个时刻被执行,那么这就是一个漏洞。bDg28资讯网——每日最新资讯28at.com

根据攻击的具体执行情况,操作系统命令或可执行文件(本例中为 git cli)的参数都可能被注入。bDg28资讯网——每日最新资讯28at.com

如果使用 Safe 库提高的 shsprintf 系列函数,例如:bDg28资讯网——每日最新资讯28at.com

message := "`脑子进煎鱼了...`"result, err := shsprintf.Sprintf("git commit -m %s", message)

或是:bDg28资讯网——每日最新资讯28at.com

message := "`煎鱼进脑子了`"result := shsprintf.MustSprintf("git commit -m %s", shsprintf.EscapeDefaultContext(message))

两个例子都能检测到注入尝试。第一个会返回错误,第二个则会引起恐慌。可以有效起到防护的作用。bDg28资讯网——每日最新资讯28at.com

SafeOpen

SafeOpen 库的设计目的是:防止路径遍历攻击,它通过提供在基本目录内打开文件的函数来实现这一目的。bDg28资讯网——每日最新资讯28at.com

其原理很简单:需要你指定一个受信任的根目录,该库就会强制要求文件操作不能超出该目录。bDg28资讯网——每日最新资讯28at.com

保护的缘由是:当要打开的文件路径名受攻击者控制(这意味着它可能包含 ./ 路径组件)或根目录 "不干净"(例如它包含符号链接)时,它就能提供强大的保护,因为无法跨过你所指定的目录范围。bDg28资讯网——每日最新资讯28at.com

SafeOpen 库的使用例子,如下代码:bDg28资讯网——每日最新资讯28at.com

rootDir:= "/data"f, err := safeopen.OpenBeneath(rootDir, userInput)if err != nil {    t.Fatalf("OpenBeneath(%q, %q) error: %v", rootDir, userInput, err)}// ... use f as an *os.File just like before

该库对标以下几个函数:bDg28资讯网——每日最新资讯28at.com

  • os.Open
  • os.OpenFile
  • os.Create
  • os.ReadFile
  • os.WriteFile

SafeArchive

SafeArchive 库的设计目的是:防止路径遍历攻击(又称 zip slip)以及与处理归档文件相关的各种攻击。bDg28资讯网——每日最新资讯28at.com

该库可直接替换 Go 标准库中的的 archive/tar 和 archive/zip,直接换包的导入路径就可以了。使用后,压缩包中如果包含恶意信息,发现后将会被清除。bDg28资讯网——每日最新资讯28at.com

例子如下:如果该库遇到包含恶意条目 ./././././etc/cron.daily/cronjob 的 .zip 文件,该库会清理该名称,并返回为干净的 etc/cron.daily/cronjob。bDg28资讯网——每日最新资讯28at.com

代码如下:bDg28资讯网——每日最新资讯28at.com

tr := tar.NewReader(buf)tr.SetSecurityMode(tr.GetSecurityMode() | tar.SanitizeFileMode | tar.DropXattrs)

另外还支持了许多额外保护措施,例如:跳过特殊文件、净化文件权限、净化文件名、防止通过符号链接进行遍历等;bDg28资讯网——每日最新资讯28at.com

代码如下:bDg28资讯网——每日最新资讯28at.com

tr.SetSecurityMode(tar.MaximumSecurityMode)

又或是:bDg28资讯网——每日最新资讯28at.com

tr.SetSecurityMode(tr.GetSecurityMode() &^ tar.SanitizeFileMode)

总结

这三个安全库 SafeText、SafeOpen、SafeArchive 是非常典型的代表类别,通过这几个库我们可以从解决一些漏洞类的问题。bDg28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-86512-0.htmlGoogle 孵化了三个Go安全库,推荐使用!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Python 教你三分钟用 Bert 搭建问答搜索引擎

下一篇: ELK太重?试试轻量级分布式日志框架GrayLog

标签:
  • 热门焦点
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 5月iOS设备性能榜:M1 M2依旧是榜单前五

    和上个月一样,没有新品发布的iOS设备性能榜的上榜设备并没有什么更替,仅仅只有跑分变化而产生的排名变动,刚刚开始的苹果WWDC2023,推出的产品也依旧是新款Mac Pro、新款Mac Stu
  • 学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
  • 小米汽车电池信息疑似曝光:容量101kWh,支持800V高压快充

    7月14日消息,今日一名博主在社交媒体发布了一张疑似小米汽车电池信息的照片,显示该电池包正是宁德时代麒麟电池,容量为101kWh,电压为726.7V,可以预测小
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • 联想YOGA 16s 2022笔记本将要推出,屏幕支持触控功能

    联想此前宣布,将于11月2日19:30召开联想秋季轻薄新品发布会,推出联想 YOGA 16s 2022 笔记本等新品。官方称,YOGA 16s 2022 笔记本将搭载 16 英寸屏幕,并且是一
Top