`SetContext(context.WithTimeout(...))` 可能无效
作者: suidpit创建于 2025年1月8日更新于 2025年1月8日
Hi, 在对使用 gopher-lua 作为第三方依赖的软件进行安全审计时, 我们发现了一个在上下文中设置超时的实现中存在的错误, 该错误可以通过 `SetContext` 传递给 luaVM。 具体来说, 这会导致潜在的代码片段可能会使 VM 停滞, 即使已明确设置了超时。 由于这可能会对安全性产生影响(拒绝服务), 我们曾尝试私下联系该库的维护者(https://GitHub.com/yuin/gopher-lua/discussions/507), 但未成功。 我们认为问题在于上下文超时在内部在每个 VM 循环中都会被检查, 因此如果单个操作能够使 VM 停滞, 则超时将不会被检查。 这可能会发生在大量基于字符串的操作中。
内容来源: yuin/gopher-lua