1、硬编码敏感信息
在开发过程中,敏感信息作为静态数据被硬编码到固件/移动APP中
常见的敏感信息被硬编码的情况如下:
1)凭证
用于硬件服务或云服务
2)加密密钥
私钥、对称加密公钥
3)证书
客户端证书
4)API密钥
私密/付费API
5)URLs
与开发、固件相关
6)配置
2、使能的硬件DEBUG端口
通常为PCB板上的输出针脚,与芯片相连,用于与系统交互
安全性与使用的通信协议相关
UART协议有使用高层应用的权限,如命令行、日志导出等
JTAG、SWD协议为底层交互,可以直接控制处理器,读写内存等
3、不安全的固件
并非指代固件的代码漏洞,通常指固件的管理漏洞
与固件的存储和更新机制有关
常见问题
1、固件以明文方式存储在内存中
2、固件没有签名
3、引导程序没有验证固件完整性的环节
4、固件更新从云端通过明文传输方式进行
5、固件更新通过明文传输协议进行(http)
6、所有设备实例使用同样的对称密钥,进行固件加密
7、固件加密密钥随同更新过程一起传输
实施PKI机制可以保障最佳的安全,但是大部分现场资源受限设备不具备部署条件
其他类型的漏洞可能会导致密钥泄漏,及时使用了PKI保障了更新安全也没有用
4、不安全的数据存储
常见问题
- 敏感数据以明文方式存储
- 敏感数据加密存储,但是密匙可被外部访问到
- 自定义加密方式
- 没有对数据修改权限的访问控制
- 不安全的移动app数据存储
5、不完备的身份验证
不正确的或者没有身份验证机制
常见问题
- 没有客户端身份验证
- 通过明文通信进行身份验证
- 凭据的加密方式不正确
- 可预测的凭据
- 使用默认凭据
6、不安全的通信
可被嗅探、分析、转发、敏感信息提取的通信都是不安全的
厂商为了方便生产,通常IOT设备都没有考虑安全机制
常见问题
- 分析敏感信息时不加密的通信
- 自定义加密方式
- 使用自定义/私有协议
- 不正确的加密
- 使用协议的默认安全模式
- 使用有已知缺陷的协议
- 转发相关的问题
7、不安全的配置
出于开发简便的考虑,开发者会使用简单不安全的配置,或者出厂后无法修改的安全配置
常见问题
- 使用默认的不安全配置
- 不允许集成商/用户修改安全配置
- 不安全的底层协议和硬件配置
- 不安全的加密模式和设置
- 用户个人数据共享/存储情况的低可见性
8、不完备的数据输入过滤
将会是IOT的主要安全问题
遥测数据的可信度问题,可能会导致常见的web安全问题,如SQL诸如、XSS、远程代码执行等等
需要有针对传统技术的数据过滤机制
9、不安全的移动端接口
移动端的安全技术比IOT设备端的要成熟很多
但同样会造成严重的安全问题
==OWASP Mobile Top Ten vulnerabilities ==
10、不安全的云/WEB接口
OWASP Web Top Ten vulnerabilities
Cloud security alliance