Skip to content

Commit 220989a

Browse files
author
Joachim Jablon
authored
Merge pull request #202 from peopledoc/sandbox
2 parents 3ba3955 + 4c223c5 commit 220989a

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

tests/unit/test_client_base.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,23 @@ def test_vault_client_base_render_template(vault):
461461
assert vault.render_template("Hello {{ vault('a/b').value }}") == "Hello c"
462462

463463

464+
def test_vault_client_base_render_template_error(vault):
465+
466+
with pytest.raises(exceptions.VaultRenderTemplateError):
467+
assert vault.render_template("Hello {{ vault(") == "Hello c"
468+
469+
470+
def test_vault_client_base_render_template_security_error(vault):
471+
472+
with pytest.raises(exceptions.VaultRenderTemplateError):
473+
assert (
474+
vault.render_template(
475+
"Hello {{ joiner.__init__.__globals__.os.popen('date') }}"
476+
)
477+
== "Hello c"
478+
)
479+
480+
464481
@pytest.mark.parametrize("template", ["Hello {{ vault('a/b') }}", "Hello {{"])
465482
def test_vault_client_base_render_template_path_not_found(vault, template):
466483
with pytest.raises(exceptions.VaultRenderTemplateError):

vault_cli/client.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import hvac # type: ignore
88
import jinja2
9+
import jinja2.sandbox
910
import requests.packages.urllib3
1011

1112
from vault_cli import exceptions, sessions, settings, types, utils
@@ -515,12 +516,16 @@ def vault(path):
515516
"Error while rendering template"
516517
) from exc
517518

518-
env = jinja2.Environment(
519+
env = jinja2.sandbox.SandboxedEnvironment(
519520
loader=jinja2.FileSystemLoader(search_path.as_posix()),
520521
keep_trailing_newline=True,
521522
)
522523
try:
523524
return env.from_string(template).render(vault=vault)
525+
except jinja2.exceptions.SecurityError as exc:
526+
raise exceptions.VaultRenderTemplateError(
527+
"Jinja2 template security error"
528+
) from exc
524529
except jinja2.exceptions.TemplateSyntaxError as exc:
525530
raise exceptions.VaultRenderTemplateError(
526531
"Jinja2 template syntax error"

0 commit comments

Comments
 (0)