|
2 | 2 | import sys
|
3 | 3 | import posix
|
4 | 4 |
|
5 |
| -os.getenv("foo") # $ threatModelSource[environment]=os.getenv(..) |
6 |
| -os.getenvb("bar") # $ threatModelSource[environment]=os.getenvb(..) |
| 5 | +ensure_tainted( |
| 6 | + os.getenv("foo"), # $ tainted threatModelSource[environment]=os.getenv(..) |
| 7 | + os.getenvb("bar"), # $ tainted threatModelSource[environment]=os.getenvb(..) |
7 | 8 |
|
8 |
| -os.environ["foo"] # $ threatModelSource[environment]=os.environ["foo"] |
9 |
| -os.environ.get("foo") # $ MISSING: threatModelSource[environment]=os.environ.get(..) |
| 9 | + os.environ["foo"], # $ tainted threatModelSource[environment]=os.environ |
| 10 | + os.environ.get("foo"), # $ tainted threatModelSource[environment]=os.environ |
10 | 11 |
|
11 |
| -os.environb["bar"] # $ threatModelSource[environment]=os.environb["bar"] |
12 |
| -posix.environ[b"foo"] # $ threatModelSource[environment]=posix.environ[b"foo"] |
| 12 | + os.environb["bar"], # $ tainted threatModelSource[environment]=os.environb |
| 13 | + posix.environ[b"foo"], # $ tainted threatModelSource[environment]=posix.environ |
13 | 14 |
|
14 | 15 |
|
15 |
| -sys.argv[1] # $ threatModelSource[commandargs]=sys.argv[1] |
16 |
| -sys.orig_argv[1] # $ threatModelSource[commandargs]=sys.orig_argv[1] |
| 16 | + sys.argv[1], # $ tainted threatModelSource[commandargs]=sys.argv |
| 17 | + sys.orig_argv[1], # $ tainted threatModelSource[commandargs]=sys.orig_argv |
| 18 | +) |
| 19 | + |
| 20 | +for k,v in os.environ.items(): # $ threatModelSource[environment]=os.environ |
| 21 | + ensure_tainted(k) # $ tainted |
| 22 | + ensure_tainted(v) # $ tainted |
| 23 | + |
17 | 24 |
|
18 | 25 | ########################################
|
19 | 26 | # argparse
|
|
23 | 30 | parser = argparse.ArgumentParser()
|
24 | 31 | parser.add_argument("foo")
|
25 | 32 |
|
26 |
| -args = parser.parse_args() |
27 |
| -args.foo # $ MISSING: threatModelSource[commandargs]=args.foo |
| 33 | +args = parser.parse_args() # $ MISSING: threatModelSource[commandargs]=parser.parse_args() |
| 34 | +ensure_tainted(args.foo) # $ MISSING: tainted |
28 | 35 |
|
29 |
| -explicit_argv_parsing = parser.parse_args(sys.argv) |
30 |
| -explicit_argv_parsing.foo # $ MISSING: threatModelSource[commandargs]=explicit_argv_parsing.foo |
| 36 | +explicit_argv_parsing = parser.parse_args(sys.argv) # $ threatModelSource[commandargs]=sys.argv |
| 37 | +ensure_tainted(explicit_argv_parsing.foo) # $ MISSING: tainted |
31 | 38 |
|
32 | 39 | fake_args = parser.parse_args(["<foo>"])
|
33 |
| -fake_args.foo |
| 40 | +ensure_not_tainted(fake_args.foo) |
34 | 41 |
|
35 | 42 | ########################################
|
36 | 43 | # reading input from stdin
|
37 | 44 | ########################################
|
38 | 45 |
|
39 |
| -sys.stdin.readline() # $ MISSING: threatModelSource |
40 |
| -input() # $ MISSING: threatModelSource |
| 46 | +ensure_tainted( |
| 47 | + sys.stdin.readline(), # $ MISSING: tainted threatModelSource |
| 48 | + input(), # $ MISSING: tainted threatModelSource |
| 49 | +) |
41 | 50 |
|
42 | 51 | ########################################
|
43 | 52 | # socket
|
|
46 | 55 | import socket
|
47 | 56 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
48 | 57 | s.connect(("example.com", 1234))
|
49 |
| -s.recv(1024) # $ MISSING: threatModelSource[socket] |
| 58 | +ensure_tainted(s.recv(1024)) # $ MISSING: tainted threatModelSource[socket] |
0 commit comments