Let's GoSSIP Summer School

本文最后更新于:2023年9月4日 下午

Let’s GoSSIP

这篇博客我拖了一个月后的今天,晚上(2023/09/02 23点35分)才开始着手更新,刚刚点了个超市的外卖,内容是两桶 5L 装的纯净水和一份冰块,准备用一颗胶囊做一杯冰美式,今天晚上便可多更新一些。

话归正题,一小时前,讲师们 PPT 放出的邮件让我从床上跳了起来,之前一直没有更新该文章的原因,就是一直没拿到 PPT ,我认为这次的暑期学校对我本人的启发极大,故准备认真地记录下来,便拖延至今,东风既来,听我一叙。

前言

正式开始课程内容之前,我们先来参观一下上海科技大学张江高等研究院

会议室(上课的教室):

外景:

内景:

以及部分餐食:

主观感觉上,上交张江研究院真的是一所一流的研究院,无论是设施、安保、环境等等方面来看。工作人员的素质也超高,在里面访学,能给人一种安心、温暖的感觉。

刚刚看了一眼当时的课程安排,又有无数的内容浮上心头,夜深了,外面淅淅沥沥下着小雨。

Day1 上午 开源软件安全

第一天上午,第一位讲师是来自明尼苏达大学(University of Minnesota, UMN)卢康杰老师,卢老师为同学们分析了开源系统的现状

开源系统安全性缺陷

由上图可见,开源系统有着代码量庞大、依赖繁杂的特点,并且使用人数众多,其中的漏洞影响力很强,与此同时,共同开发者是不可信任的,且维护由志愿者负责

此时,考虑一下部分开发者提交的补丁中,藏有漏洞后门的可能性,这便是卢老师提出的安全问题的一部分。

许多漏洞迟迟未修复

根据统计,八成以上的漏洞,仍然是漏洞,没有人去修复它。

卢老师提及,他们团队曾发现 gcc 编译过程中产生的一个漏洞,告知 gcc 官方多次,却被告知“这是 gcc 规则之外的漏洞,不该他们修,他们也不会去修”,大致意思如上,故该漏洞至今仍然存在。(大概是一个编译过程中字节对齐相关的漏洞,很可惜我现在记不太清楚了!)

关于开源系统安全的总结

LLVM

卢老师课上经常提及 LLVM 这个编译器,他认为我们都应该了解、熟悉 LLVM,会自己写出 IR 来。LLVM 是学习系统安全之路上不可或缺的一部分。

上图是 LLVM 编译的流程,将C/C++源代码通过若干个中间的 Pass 进行编译,最后生成可执行的机器码。

我有计划好好地去了解、学习一下 LLVM,但目前仍对其几乎一无所知,故关于 LLVM 的更多内容,请关注我的后续博客,本学期(大三上)应该有编译原理课程,希望能充分了解编译。

总结

第一天上午,卢老师给同学们带来的“开场戏”十分精彩,卢老师从开源系统存在的安全隐患入手,讲到如何做好系统安全研究,再到关于 LLVM 的知识,以及对未来建设一个更体制完全、更安全开放的互联网环境的展望。通过卢老师风趣幽默、流畅自如的语言,我深刻地感受到卢老师的人格魅力,对自己研究的自信,对系统安全行业的深刻认识。

小插曲

第一天上午,我了解到,与会的72位同学中,半数以上的同学是博士(或已经毕业了的博士),另外一半的同学中,也有不少于半数的硕士,顿时感觉会场卧虎藏龙、深不可测,对本次的暑期学校多了一份敬畏!

Day1 下午 物联网蓝牙安全

第一日下午的课程,由来自杜雷塞尔大学(Drexel University)张悦老师主讲。可能是本人第一次接触蓝牙安全的原因,该报告是我对技术细节最为印象深刻的报告之一。

关于蓝牙(Bluetooth)

显而易见,蓝牙由许多优点:

  • 无线链接(Wireless Connection);

  • 简易使用(Easy Setup and Use);

  • 不断进化(Constant Evolution);

  • 广泛支持(Widely Supported);

  • 安全私密(Secure and Private);

    蓝牙发展史:

Bluetooth Low Energy

可见,BLE 的能耗低、作用范围广。

若有一个手机,使用蓝牙连接了一个手环,则手环称为 Peripheral/Slave,而手机成为 Central/Master,但由于 slave & master 有一些政治因素,故一般都使用前面的官方名称为主。

加密算法

非对称加密

通过非对称加密算法,得到一个公钥和一个私钥,两者均可用来加密/解密,无本质区别,但习惯称加密所用的是公钥,而解密所需的为私钥。

几种配对方式

Just Works

互发密钥,收到的密钥与自己拥有的密钥进行算法验证,若通过,则匹配成功。

坏处:Attacker 可以伪装成 Slave/Master,分别获取两者的密钥。

Out of Band

寻找一个可信的信道,进行密钥的传输

问题:是否真的有完全可信的信道。

Passkey Entry

Slave 将密钥显示在屏幕上,由配对人亲自输入到 Master 中,达到配对。

可以回想,我们常常使用某些配对需求的软件时(不一定是 Bluetooth),有时 Slave 会显示一串复杂的字符,让我们输入到手机/电脑内。

这个方式是比较安全的,但需要 Master 有 Keyboard 输入功能。

Numeric Comparison

数字匹配,两者交换密钥后,通过算法算出一个值,只需要人眼去看,两者的 Screen 上数字是否一致即可

该方法和 Passkey Enrty 一样,可以有效地避免黑客的攻击。

如上图,黑客发出的 key,在两台设备上计算出的结果一定不一致(或极小概率一致),可认为黑客无法使用该手段进行攻击。

研究论文

张老师随后介绍了他发表在四大顶刊上的部分论文:

  • Yue Zhang, Jian Weng, Rajib Dey, Yier Jin, Zhiqiang Lin, and Xinwen Fu. “Breaking Secure Pairing of Bluetooth Low Energy Using Downgrade Attacks”, To appear in Usenix Security 2020

  • Mohit K. Jangid*, Yue Zhang*, Zhiqiang Lin. “Extrapolating Formal Analysis to Uncover Attacks in Bluetooth Passkey Entry Pairing. NDSS 2023

  • Shao, Zhijian, Jian Weng, Yue Zhang, Yongdong Wu, Ming Li, Jiasi Weng, Weiqi Luo, and Shui Yu. “Peripheral-free Device Pairing by Randomly Switching Power.” IEEE Transactions on Dependable and Secure Computing

    感兴趣的朋友可以自行阅读。

重放攻击(Replay)

解决办法:

  • 加入随机数,在验证的过程中:

蓝牙地址和追踪

蓝牙是有一个独一无二的地址的,同一时间内,当你开着蓝牙,在城市中游荡时,就会容易被黑客定位。

黑客可以四处使用他的设备,进行蓝牙广播,若收到你的设备的 response,则可确定,你就在他方圆50m内(甚至更近)。

如何防范被追踪:

开启蓝牙地址的随机化,不使用某一个固定的地址,而是不断的更新。

随后张老师介绍了基于 Allowlist 和 mac 地址随机化间隔的一些 tricks。

小结

张老师是一位在蓝牙安全领域硕果满满的研究人员,他的报告十分硬核,有不下五篇文章的相关技术细节,令我大受启发,醍醐灌顶!

Day2 上午 CDN 安全研究

第二天上午的报告由来自清华大学陈建军老师主讲,陈老师的研究方向包括互联网基础协议安全,漏洞挖掘技术等等。

CDN 内容分发网络

下面这张图片清晰地描述了 CDN 在网络中发挥的作用

CDN 的核心功能有:

  • 网络加速;

  • WEB 应用防火墙(WAF);

  • DDoS 防护等

    下图是 CDN 的工作方式:

CDN 的安全隐患

后端通信劫持

有部分的 CDN , 其 CDN 服务器和主机间的通信是 HTTP 明文传输:

这种情况会导致后端通信可能被劫持,污染 CDN 节点的缓存数据。

前端通信的授权认证问题

解决方法:

不一致性带来的隐患

由于 CDN 是多方交互,其服务器可能会存在不一致性,且不同网站会共享同一 CDN 服务器;

以上案例利用的不同服务器,对Content-length的前/后选取不同的差异,进行攻击。


该案例是不同主机对 HOST 解析不同的差异带来的漏洞。

下图可看出,不同的系统对 Host 头处理方式是大多不同的,很容易产生隐患。

可以看到,有不在少数的上下游组合可以被该漏洞利用。

CDN 流量放大攻击

论文阅读推荐

最后,陈老师推荐了以上几篇论文供大家阅读。

后续

众所周知,我的博客目前仍然是挂载在 github 上的,故正准备为我的博客搭建一个 CDN ,随便试试手(笑);敬请期待。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!