事件经过
Google OSS Agent Mesh(SAM)0.1.0-alpha.1至0.1.0-alpha.8的控制平面注册状态处理器(internal/controlplane/server.go中的HandleEnrollStatus,GET /enroll/status)缺少认证(CWE-306)且对凭证的保护不足(CWE-522)。未认证的远程攻击者可提供从未认证的GET /info端点获取的peer_id,以检索已批准引导注册的peer的签名Biscuit身份令牌;POST /enroll中的相关缺陷允许任何引导令牌持有者重新获取另一peer的凭证。泄露的令牌可作为承载凭证在/policies上重放以读取网格授权策略,并在/routers/lease上重放以覆盖已公告的路由器multiaddrs。
影响分析
SAM是用于点对点代理通信的Google OSS代理网格;泄露peer的签名身份令牌使外部人员能够在网格中伪造该peer的身份,读取授权策略并劫持路由(路由器multiaddr覆盖)——这是未认证路径,可破坏或冒充网格部署中的代理。
攻击途径
未认证的GET /enroll/status(和POST /enroll)以获取peer的签名Biscuit身份令牌,然后将其作为承载凭证在/policies和/routers/lease上重放。
受影响系统
Google OSS Agent Mesh(SAM)0.1.0-alpha.1至0.1.0-alpha.8
缓解措施
升级至SAM 0.1.0-alpha.9或更高版本,该版本在凭证释放端点上要求注册私钥的加密持有证明,实施速率限制,并验证路由器租赁地址。