Property-Based Testing Caught a Security Bug I Never Would Have Found
5 months ago
- #Property-Based Testing
- #JavaScript
- #Security
- 基于属性测试(PBT)在一个聊天应用的存储服务中发现了一个传统测试方法会漏掉的安全漏洞。
- 该漏洞涉及当恶意字符串('__proto__')被用作供应商名称时对JavaScript原型的错误处理,可能导致安全隐患。
- 这个问题是在第75轮基于属性测试时发现的,展示了PBT能够探索超出人类直觉的边缘案例的能力。
- 修复措施包括使用'Object.create(null)'来避免原型污染等防御性编程,以及验证键值来预防原型相关漏洞。
- 这个案例凸显了PBT在安全领域的重要性,它能提供无偏见、全面的测试,直接关联需求并生成可执行的规范。