该漏洞涉及到Passenger在macOS Big Sur上的rootless机制。攻击者可以在本地上利用该漏洞来提升普通用户对系统的访问权限。该漏洞成为可能是因为Passenger解析了一个潜在受攻击的块。 要解决这个漏洞,可以参考以下示例代码中的步骤:
1.检查是否启用了rootless机制
if (!Utils.isBigSurOrLater() || Utils.isRootlessDisabled()) { return; }
2.对不安全的字符串进行过滤
auto control_user = Utils::sanitizeUtf8StringFromLiteral(rbody["control_user"].asString());
3.检查是否为root用户
if (geteuid() == 0) { const char *username = passenger_instance.getEnv().getRootEnv()->getVariable("USER"); const char *groupname = passenger_instance.getEnv().getRootEnv()->getVariable("GROUP"); RETURN_ERROR("It is forbidden to run %s as root user or group (username=%s, groupname=%s)", Utils::getCurrentProcessName().c_str(), username ? username : "", groupname ? groupname : ""); }
通过这些步骤,可以有效地解决Passenger存在的潜在特权提升漏洞。