Skip to content

Commit f05d93a

Browse files
committed
Add pathlib sink
1 parent 549943b commit f05d93a

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

aikido_zen/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ def protect(mode="daemon", token=""):
7171

7272
import aikido_zen.sinks.builtins
7373
import aikido_zen.sinks.os
74+
import aikido_zen.sinks.pathlib
7475
import aikido_zen.sinks.shutil
7576
import aikido_zen.sinks.io
7677
import aikido_zen.sinks.http_client

aikido_zen/sinks/pathlib.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""
2+
Sink module for python's `pathlib`
3+
"""
4+
5+
import aikido_zen.vulnerabilities as vulns
6+
from aikido_zen.helpers.get_argument import get_argument
7+
from aikido_zen.helpers.register_call import register_call
8+
from aikido_zen.sinks import before, patch_function, on_import
9+
10+
11+
@before
12+
def _pathlib_truediv_patch(func, instance, args, kwargs):
13+
path = get_argument(args, kwargs, 0, "key")
14+
op = "pathlib.PurePath.__truediv__"
15+
register_call(op, "fs_op")
16+
17+
vulns.run_vulnerability_scan(kind="path_traversal", op=op, args=(path,))
18+
19+
20+
@on_import("pathlib")
21+
def patch(m):
22+
"""
23+
patching module pathlib
24+
- patches PurePath.__truediv__ : Path() / Path() -> join operation
25+
"""
26+
27+
# PurePath() / "my/path/test.txt"
28+
# This is accomplished by overloading the __truediv__ function on the Path class
29+
patch_function(m, "PurePath.__truediv__", _pathlib_truediv_patch)

aikido_zen/sinks/tests/os_test.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import pytest
22
from pathlib import Path, PurePath
33
from unittest.mock import patch
4-
import aikido_zen.sinks.os
4+
import aikido_zen
5+
6+
aikido_zen.protect()
57
from aikido_zen.context import Context
68
from aikido_zen.errors import AikidoPathTraversal
79
from aikido_zen.sinks.tests.clickhouse_driver_test import set_blocking_to_true

0 commit comments

Comments
 (0)