Skip to content

Commit d1ab25f

Browse files
authored
fix(giskard-agents): use jinja2 sandboxed environment to prevent template injection [ENG-1486] (#2332)
fix: use jinja2 sandboxed environment to prevent template injection [ENG-1486]
1 parent 0959675 commit d1ab25f

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

libs/giskard-agents/src/giskard/agents/templates/environment.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
from pathlib import Path
33
from typing import Any, Protocol, runtime_checkable
44

5-
from jinja2 import BaseLoader, Environment, StrictUndefined, nodes
5+
from jinja2 import BaseLoader, StrictUndefined, nodes
66
from jinja2.exceptions import TemplateNotFound
77
from jinja2.ext import Extension
88
from jinja2.loaders import FileSystemLoader, PrefixLoader
9+
from jinja2.sandbox import SandboxedEnvironment
910
from pydantic import BaseModel
1011

1112
from ..chat import Message, Role
@@ -34,7 +35,7 @@ def _finalize_value(value: Any) -> Any:
3435
return value
3536

3637

37-
_inline_env = Environment(
38+
_inline_env = SandboxedEnvironment(
3839
trim_blocks=True,
3940
lstrip_blocks=True,
4041
keep_trailing_newline=True,
@@ -88,9 +89,9 @@ def get_loader(self, template: str) -> tuple[BaseLoader, str]:
8889
return loader, name
8990

9091

91-
def create_message_environment(loader_mapping: dict[str, Path]) -> Environment:
92+
def create_message_environment(loader_mapping: dict[str, Path]) -> SandboxedEnvironment:
9293
"""Create a Jinja2 environment with MessageExtension."""
93-
return Environment(
94+
return SandboxedEnvironment(
9495
loader=PromptsLoader(
9596
{
9697
namespace: FileSystemLoader(path)

0 commit comments

Comments
 (0)