fix(security): treat quoted false as false in browser SSRF guards
This commit is contained in:
@@ -235,3 +235,21 @@ class TestPostRedirectSsrf:
|
||||
|
||||
assert result["success"] is True
|
||||
assert result["url"] == final
|
||||
|
||||
|
||||
class TestAllowPrivateUrlsConfig:
|
||||
@pytest.fixture(autouse=True)
|
||||
def _reset_cache(self):
|
||||
browser_tool._allow_private_urls_resolved = False
|
||||
browser_tool._cached_allow_private_urls = None
|
||||
yield
|
||||
browser_tool._allow_private_urls_resolved = False
|
||||
browser_tool._cached_allow_private_urls = None
|
||||
|
||||
def test_browser_config_string_false_stays_disabled(self, monkeypatch):
|
||||
monkeypatch.setattr(
|
||||
"hermes_cli.config.read_raw_config",
|
||||
lambda: {"browser": {"allow_private_urls": "false"}},
|
||||
)
|
||||
|
||||
assert browser_tool._allow_private_urls() is False
|
||||
|
||||
@@ -259,6 +259,20 @@ class TestGlobalAllowPrivateUrls:
|
||||
with patch("hermes_cli.config.read_raw_config", return_value=cfg):
|
||||
assert _global_allow_private_urls() is True
|
||||
|
||||
def test_config_security_string_false_stays_disabled(self, monkeypatch):
|
||||
"""Quoted false must not opt out of SSRF protection."""
|
||||
monkeypatch.delenv("HERMES_ALLOW_PRIVATE_URLS", raising=False)
|
||||
cfg = {"security": {"allow_private_urls": "false"}}
|
||||
with patch("hermes_cli.config.read_raw_config", return_value=cfg):
|
||||
assert _global_allow_private_urls() is False
|
||||
|
||||
def test_config_browser_string_false_stays_disabled(self, monkeypatch):
|
||||
"""Legacy browser.allow_private_urls also normalises quoted false."""
|
||||
monkeypatch.delenv("HERMES_ALLOW_PRIVATE_URLS", raising=False)
|
||||
cfg = {"browser": {"allow_private_urls": "false"}}
|
||||
with patch("hermes_cli.config.read_raw_config", return_value=cfg):
|
||||
assert _global_allow_private_urls() is False
|
||||
|
||||
def test_config_security_takes_precedence_over_browser(self, monkeypatch):
|
||||
"""security section is checked before browser section."""
|
||||
monkeypatch.delenv("HERMES_ALLOW_PRIVATE_URLS", raising=False)
|
||||
|
||||
Reference in New Issue
Block a user