StorM Lance
用于漏洞审查和请求防护的网页安全模型。每项发现均列出位置、风险、修复建议和复查结果。
日志
- 版本
- Protection 1.8.0
检查范围
- 代码
- 读取JavaScript、TypeScript、Python和HTML代码以查找弱点。Python数据追踪限于单个文件内。提交的代码只读取,不执行。
- 依赖项
- 将九种软件包生态的锁定文件中精确固定的版本与公开安全通告进行比对,不执行软件包脚本。未精确固定的版本会标记为未经检查。
- 运行中的网站
- 仅在授权范围内检查运行中的网站:指定准确网址、授权在一天内到期、固定请求上限,且不跟随重定向。
- 隔离测试环境
- 实验室攻击案例在我们启动的测试服务器上运行。对运行中网站的受保护路径,也会进行不带正文的请求方法检查。只有明确声明并授权的变更才会发送携带数据的请求。
- 复查
- 修复后可重新检查运行中的网站,并与最多保留一小时的先前检查结果进行比较。
- 防护层
- 运行StorM Web Engine的服务器在网站接收请求前检查每个请求的网址和请求头。响应包含固定的一组安全响应头。
- 页脚标记
- 网站页脚的StorM Lance标记表示网站位于防护层之后,或在发布前已由StorM Lance检查。
弱点类型
每种类型均附有公开CWE目录中的对应条目。
- SQL注入
- 输入被当作代码进入数据库查询。CWE-89
- 命令注入
- 输入进入系统命令。CWE-78
- 模板注入
- 输入被当作模板而不是数据处理。CWE-1336
- HTML与脚本注入
- 输入未经转义就写入页面,导致访客浏览器执行该内容。CWE-79
- 服务器端请求伪造
- 使服务器访问攻击者指定的网址,包括内部地址。CWE-918
- 开放重定向
- 根据参数值将访客发送到任意目的地的链接。CWE-601
- 不安全的反序列化
- 将不可信的数据重建为可用对象。CWE-502
- 原型污染
- 输入改变JavaScript程序中所有对象的继承内容。CWE-1321
- 响应头注入
- 输入被写入响应头。CWE-113
- 薄弱的加密与随机性
- 过时的算法和可预测的令牌。CWE-327 · CWE-338
- 不安全的代码求值
- 将文字作为代码执行,以及标记中的内联事件处理器。CWE-95 · CWE-79
- 正则表达式拒绝服务(ReDoS)
- 将请求值用作正则表达式,可能导致长时间运行。CWE-1333
- 未限定消息目标
- 窗口间的消息可发送到任意目标。CWE-345
审查流程
范围
由您指定检查内容和可访问的网址,发送任何请求前先核验范围。
读取
读取代码,查找上述弱点。
候选发现
通过读取代码得到的发现会标记为候选,而非已证实的攻击。在运行中的网站上,只有明确声明并授权的变更才会发送携带数据的请求。
报告
每项发现均列明位置、弱点和修复建议。
复查
重新检查运行中的网站,并与上一次结果比较。
发现示例
- 发现
- 搜索结果将查询内容未经转义写回页面。
- 位置
- 搜索页面的q参数。
- 影响
- 特制链接可使访客浏览器执行发送者指定的脚本。
- 修复
- 写入页面前,对该值进行HTML编码。
- 复查
- 同一链接不再返回未经转义的标记,问题已关闭。
仅为说明示例,并非客户检查结果。
防护层
运行StorM Web Engine的服务器在网站前设置防护层,先检查每个请求的网址和请求头。看似攻击的请求会被拒绝,可疑页面请求可能需要完成简短的浏览器验证,持续攻击的地址会被暂时封锁。
响应包含固定的一组安全响应头,用于阻止其他网站嵌入页面、保持HTTPS连接、限制其他网站可见的来源信息,并拒绝摄像头、麦克风和位置访问。
| 请求 | 结果 |
|---|---|
GET /products?id=1' OR '1'='1 | 已阻止 · SQL注入 |
GET /search?q=<script>alert(1)</script> | 已阻止 · 脚本注入(XSS) |
GET /download?file=../../../../etc/passwd | 已阻止 · 路径遍历 |
GET /ping?host=8.8.8.8;id | 已阻止 · 命令注入 |
GET /fetch?url=http://169.254.169.254/latest/meta-data/ | 已阻止 · 服务器端请求伪造 |
GET /search?q=chef's knife | 已允许 |
GET /search?q=select a lens for portraits | 已允许 |
GET /events?utm_source=newsletter&utm_medium=email | 已允许 |
常见问题
- 需要我们提供什么?
- 需要代码或运行中网站的网址,以及有权授权测试的人员信息。检查运行中的网站前先核验范围:准确网址、在一天内到期的授权,以及固定请求上限。
- 会攻击我们运行中的网站吗?
- 仅在授权范围和固定请求上限内进行,且不跟随重定向。只有明确声明并授权的变更才会发送携带数据的请求,其他攻击场景仅在隔离测试环境中运行。
- 支持读取哪些语言和文件?
- JavaScript、TypeScript、Python和HTML。Python数据追踪限于单个文件内。
- 会修改我们的代码吗?
- 不会。每项发现均附有位置、弱点和修复建议,修复后可重新检查。
安全审查
如需检查网页软件,可向我们说明所运行的软件和关注的风险。