Files
custom-nodes-security-scan/docs/ComfyUI-Griptape-bandit.html
zeekay 6bdea42e64 rebrand: Hanzo AI Inc — full rebrand from ComfyUI/Comfy-Org
- Updated copyright to Hanzo AI, Inc.
- Replaced ComfyUI references with Hanzo Studio
- Updated GitHub org URLs (Comfy-Org → hanzoui)
- Updated domains (comfy.org → hanzo.ai)
- Updated package names and npm scopes
- Updated LICENSE with Hanzo AI copyright header
2026-02-23 10:54:25 -08:00

352 lines
11 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>
Bandit Report
</title>
<style>
html * {
font-family: "Arial", sans-serif;
}
pre {
font-family: "Monaco", monospace;
}
.bordered-box {
border: 1px solid black;
padding-top:.5em;
padding-bottom:.5em;
padding-left:1em;
}
.metrics-box {
font-size: 1.1em;
line-height: 130%;
}
.metrics-title {
font-size: 1.5em;
font-weight: 500;
margin-bottom: .25em;
}
.issue-description {
font-size: 1.3em;
font-weight: 500;
}
.candidate-issues {
margin-left: 2em;
border-left: solid 1px; LightGray;
padding-left: 5%;
margin-top: .2em;
margin-bottom: .2em;
}
.issue-block {
border: 1px solid LightGray;
padding-left: .5em;
padding-top: .5em;
padding-bottom: .5em;
margin-bottom: .5em;
}
.issue-sev-high {
background-color: Pink;
}
.issue-sev-medium {
background-color: NavajoWhite;
}
.issue-sev-low {
background-color: LightCyan;
}
</style>
</head>
<body>
<div id="metrics">
<div class="metrics-box bordered-box">
<div class="metrics-title">
Metrics:<br>
</div>
Total lines of code: <span id="loc">3043</span><br>
Total lines skipped (#nosec): <span id="nosec">0</span>
</div>
</div>
<br>
<div id="results">
<div id="issue-0">
<div class="issue-block issue-sev-low">
<b>blacklist: </b> Standard pseudo-random generators are not suitable for security/cryptographic purposes.<br>
<b>Test ID:</b> B311<br>
<b>Severity: </b>LOW<br>
<b>Confidence: </b>HIGH<br>
<b>CWE: </b><a href="https://cwe.mitre.org/data/definitions/330.html" target="_blank">CWE-330</a><br>
<b>File: </b><a href="/custom_nodes/Hanzo Studio-Griptape/nodes/base_task.py" target="_blank">/custom_nodes/Hanzo Studio-Griptape/nodes/base_task.py</a><br>
<b>Line number: </b>59<br>
<b>More info: </b><a href="https://bandit.readthedocs.io/en/1.7.9/blacklists/blacklist_calls.html#b311-random" target="_blank">https://bandit.readthedocs.io/en/1.7.9/blacklists/blacklist_calls.html#b311-random</a><br>
<div class="code">
<pre>
55
56 @classmethod
57 def IS_CHANGED(s, deferred_evaluation):
58 if deferred_evaluation:
59 return randint(0, 1000)
60 else:
61 return &quot;&quot;
62
</pre>
</div>
</div>
</div>
<div id="issue-1">
<div class="issue-block issue-sev-low">
<b>blacklist: </b> Standard pseudo-random generators are not suitable for security/cryptographic purposes.<br>
<b>Test ID:</b> B311<br>
<b>Severity: </b>LOW<br>
<b>Confidence: </b>HIGH<br>
<b>CWE: </b><a href="https://cwe.mitre.org/data/definitions/330.html" target="_blank">CWE-330</a><br>
<b>File: </b><a href="/custom_nodes/Hanzo Studio-Griptape/nodes/display_nodes.py" target="_blank">/custom_nodes/Hanzo Studio-Griptape/nodes/display_nodes.py</a><br>
<b>Line number: </b>158<br>
<b>More info: </b><a href="https://bandit.readthedocs.io/en/1.7.9/blacklists/blacklist_calls.html#b311-random" target="_blank">https://bandit.readthedocs.io/en/1.7.9/blacklists/blacklist_calls.html#b311-random</a><br>
<div class="code">
<pre>
154 def __init__(self):
155 self.output_dir = folder_paths.get_temp_directory()
156 self.type = &quot;temp&quot;
157 self.prefix_append = &quot;_temp_&quot; + &quot;&quot;.join(
158 random.choice(&quot;abcdefghijklmnopqrstupvxyz&quot;) for x in range(5)
159 )
160 self.compress_level = 1
161
</pre>
</div>
</div>
</div>
<div id="issue-2">
<div class="issue-block issue-sev-medium">
<b>request_without_timeout: </b> Requests call without timeout<br>
<b>Test ID:</b> B113<br>
<b>Severity: </b>MEDIUM<br>
<b>Confidence: </b>LOW<br>
<b>CWE: </b><a href="https://cwe.mitre.org/data/definitions/400.html" target="_blank">CWE-400</a><br>
<b>File: </b><a href="/custom_nodes/Hanzo Studio-Griptape/nodes/image_nodes.py" target="_blank">/custom_nodes/Hanzo Studio-Griptape/nodes/image_nodes.py</a><br>
<b>Line number: </b>49<br>
<b>More info: </b><a href="https://bandit.readthedocs.io/en/1.7.9/plugins/b113_request_without_timeout.html" target="_blank">https://bandit.readthedocs.io/en/1.7.9/plugins/b113_request_without_timeout.html</a><br>
<div class="code">
<pre>
45 # print(f&quot;Error: Unsupported image format `{file_extension}`&quot;)
46 # return None, None, None
47
48 try:
49 response = requests.get(image_url)
50 if response.status_code != 200:
51 print(
52 f&quot;Error: Failed to fetch image from URL with status code {response.status_code}&quot;
</pre>
</div>
</div>
</div>
<div id="issue-3">
<div class="issue-block issue-sev-low">
<b>blacklist: </b> Standard pseudo-random generators are not suitable for security/cryptographic purposes.<br>
<b>Test ID:</b> B311<br>
<b>Severity: </b>LOW<br>
<b>Confidence: </b>HIGH<br>
<b>CWE: </b><a href="https://cwe.mitre.org/data/definitions/330.html" target="_blank">CWE-330</a><br>
<b>File: </b><a href="/custom_nodes/Hanzo Studio-Griptape/nodes/structure_nodes.py" target="_blank">/custom_nodes/Hanzo Studio-Griptape/nodes/structure_nodes.py</a><br>
<b>Line number: </b>42<br>
<b>More info: </b><a href="https://bandit.readthedocs.io/en/1.7.9/blacklists/blacklist_calls.html#b311-random" target="_blank">https://bandit.readthedocs.io/en/1.7.9/blacklists/blacklist_calls.html#b311-random</a><br>
<div class="code">
<pre>
38 OUTPUT_NODE = False
39
40 @classmethod
41 def IS_CHANGED(s, int_field):
42 return randint(0, 1000)
43
44 def run(
45 self,
</pre>
</div>
</div>
</div>
<div id="issue-4">
<div class="issue-block issue-sev-low">
<b>blacklist: </b> Standard pseudo-random generators are not suitable for security/cryptographic purposes.<br>
<b>Test ID:</b> B311<br>
<b>Severity: </b>LOW<br>
<b>Confidence: </b>HIGH<br>
<b>CWE: </b><a href="https://cwe.mitre.org/data/definitions/330.html" target="_blank">CWE-330</a><br>
<b>File: </b><a href="/custom_nodes/Hanzo Studio-Griptape/nodes/structure_nodes.py" target="_blank">/custom_nodes/Hanzo Studio-Griptape/nodes/structure_nodes.py</a><br>
<b>Line number: </b>75<br>
<b>More info: </b><a href="https://bandit.readthedocs.io/en/1.7.9/blacklists/blacklist_calls.html#b311-random" target="_blank">https://bandit.readthedocs.io/en/1.7.9/blacklists/blacklist_calls.html#b311-random</a><br>
<div class="code">
<pre>
71 return inputs
72
73 @classmethod
74 def IS_CHANGED(s, int_field):
75 return randint(0, 1000)
76
77 RETURN_TYPES = (&quot;STRUCTURE&quot;,)
78 RETURN_NAMES = (&quot;STRUCTURE&quot;,)
</pre>
</div>
</div>
</div>
<div id="issue-5">
<div class="issue-block issue-sev-low">
<b>blacklist: </b> Standard pseudo-random generators are not suitable for security/cryptographic purposes.<br>
<b>Test ID:</b> B311<br>
<b>Severity: </b>LOW<br>
<b>Confidence: </b>HIGH<br>
<b>CWE: </b><a href="https://cwe.mitre.org/data/definitions/330.html" target="_blank">CWE-330</a><br>
<b>File: </b><a href="/custom_nodes/Hanzo Studio-Griptape/nodes/structure_nodes.py" target="_blank">/custom_nodes/Hanzo Studio-Griptape/nodes/structure_nodes.py</a><br>
<b>Line number: </b>122<br>
<b>More info: </b><a href="https://bandit.readthedocs.io/en/1.7.9/blacklists/blacklist_calls.html#b311-random" target="_blank">https://bandit.readthedocs.io/en/1.7.9/blacklists/blacklist_calls.html#b311-random</a><br>
<div class="code">
<pre>
118 return inputs
119
120 @classmethod
121 def IS_CHANGED(s, int_field):
122 return randint(0, 1000)
123
124 RETURN_TYPES = (&quot;STRUCTURE&quot;,)
125 RETURN_NAMES = (&quot;STRUCTURE&quot;,)
</pre>
</div>
</div>
</div>
<div id="issue-6">
<div class="issue-block issue-sev-medium">
<b>request_without_timeout: </b> Requests call without timeout<br>
<b>Test ID:</b> B113<br>
<b>Severity: </b>MEDIUM<br>
<b>Confidence: </b>LOW<br>
<b>CWE: </b><a href="https://cwe.mitre.org/data/definitions/400.html" target="_blank">CWE-400</a><br>
<b>File: </b><a href="/custom_nodes/Hanzo Studio-Griptape/nodes/tools.py" target="_blank">/custom_nodes/Hanzo Studio-Griptape/nodes/tools.py</a><br>
<b>Line number: </b>169<br>
<b>More info: </b><a href="https://bandit.readthedocs.io/en/1.7.9/plugins/b113_request_without_timeout.html" target="_blank">https://bandit.readthedocs.io/en/1.7.9/plugins/b113_request_without_timeout.html</a><br>
<div class="code">
<pre>
165 headers = {
166 &quot;Authorization&quot;: f&quot;Bearer {api_key}&quot;,
167 }
168 try:
169 response = requests.get(
170 f&quot;{base_url}/api/knowledge-bases/{knowledge_base_id}&quot;, headers=headers
171 )
172 except requests.exceptions.RequestException as e:
173 print(e)
174 return
</pre>
</div>
</div>
</div>
<div id="issue-7">
<div class="issue-block issue-sev-medium">
<b>request_without_timeout: </b> Requests call without timeout<br>
<b>Test ID:</b> B113<br>
<b>Severity: </b>MEDIUM<br>
<b>Confidence: </b>LOW<br>
<b>CWE: </b><a href="https://cwe.mitre.org/data/definitions/400.html" target="_blank">CWE-400</a><br>
<b>File: </b><a href="/custom_nodes/Hanzo Studio-Griptape/nodes/utilities.py" target="_blank">/custom_nodes/Hanzo Studio-Griptape/nodes/utilities.py</a><br>
<b>Line number: </b>16<br>
<b>More info: </b><a href="https://bandit.readthedocs.io/en/1.7.9/plugins/b113_request_without_timeout.html" target="_blank">https://bandit.readthedocs.io/en/1.7.9/plugins/b113_request_without_timeout.html</a><br>
<div class="code">
<pre>
12 url = f&quot;http://127.0.0.1:{port}/v1/models&quot;
13
14 try:
15 # Make the GET request
16 response = requests.get(url)
17
18 # Check if the request was successful
19 if response.status_code != 200:
</pre>
</div>
</div>
</div>
<div id="issue-8">
<div class="issue-block issue-sev-medium">
<b>request_without_timeout: </b> Requests call without timeout<br>
<b>Test ID:</b> B113<br>
<b>Severity: </b>MEDIUM<br>
<b>Confidence: </b>LOW<br>
<b>CWE: </b><a href="https://cwe.mitre.org/data/definitions/400.html" target="_blank">CWE-400</a><br>
<b>File: </b><a href="/custom_nodes/Hanzo Studio-Griptape/nodes/utilities.py" target="_blank">/custom_nodes/Hanzo Studio-Griptape/nodes/utilities.py</a><br>
<b>Line number: </b>45<br>
<b>More info: </b><a href="https://bandit.readthedocs.io/en/1.7.9/plugins/b113_request_without_timeout.html" target="_blank">https://bandit.readthedocs.io/en/1.7.9/plugins/b113_request_without_timeout.html</a><br>
<div class="code">
<pre>
41 url = &quot;http://127.0.0.1:11434/api/tags&quot;
42
43 try:
44 # Make the GET request
45 response = requests.get(url)
46
47 # Check if the request was successful
48 if response.status_code != 200:
</pre>
</div>
</div>
</div>
</div>
</body>
</html>