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 协议 ,转载请注明出处!