Top issues
Problem
Uniform Resource Locators (URLs) are structured addresses that point to locations and assets on the internet. URLs allow software developers to build complex applications that exchange data with servers that can be hosted in multiple geographical regions. URLs can commonly be found embedded in documentation, configuration files, source code and compiled binaries. Top-level domains (TLD) are a part of the Domain Name System (DNS), and are used to lookup an Internet Protocol (IP) address of a requested website. There are a few different types of top-level domains. Generic, sponsored and country-code TLDs are generally accessible to the public. Registrars that govern the assignment of domain names within the TLD may choose to sell specific domain names to an interested party. However, some registrars are known to have less strict rules for assigning domain names. Attackers often abuse gaps in governance and actively seek to register their malicious domains in such TLDs. This issue is raised for all domains registered within TLDs that harbor an excessive number of malicious sites. While the presence of suspicious TLDs does not imply malicious intent, all of its uses in a software package should be documented and approved.Prevalence in PyPI community
12 packages
found in
Top 100
90 packages
found in
Top 1k
503 packages
found in
Top 10k
15.92k packages
in community
Next steps
Investigate reported detections.
If the software should not include these network references, investigate your build and release environment for software supply chain compromise.
You should delay the software release until the investigation is completed, or until the issue is risk accepted.
Consider changing the top-level domain to avoid being flagged by security solutions.
Detected Linux executable files that were compiled without the recommended dynamic symbol hijacking protections.
Causes risk: execution hijacking concerns
hardening
Problem
On Linux, external symbols are resolved via the procedure linkage table (PLT) and the global offset table (GOT). Without any protection, both are writable at runtime and thus leave the executable vulnerable to pointer hijacking - an attack where the function address is overwritten with an address of a malicious function. Pointer hijacking can be mitigated by using full read-only relocations, which instruct the compiler to unify global offset tables into a single read-only table. This requires that all external function symbols are resolved at load-time instead of during execution, and may increase loading time for large programs.Prevalence in PyPI community
26 packages
found in
Top 100
135 packages
found in
Top 1k
847 packages
found in
Top 10k
17.09k packages
in community
Next steps
In most cases, it's recommended to use full read-only relocations (in GCC: -Wl,-z,relro,-z,now).
If the executable load-time is an issue, you should use partial read-only relocations.
Detected presence of hardcoded source code filenames or paths.
Causes risk: debugging symbols found
secrets
Problem
Common compilers often embed source code information into executables for debugging purposes, usually by mapping symbols to source filenames or paths. While this is typically desirable in open-source software and standard tools, that information can be used to determine security weaknesses, code repository layout, trade secrets and similar sensitive information. Such symbols make it easier to reverse-engineer a closed source application.Prevalence in PyPI community
27 packages
found in
Top 100
138 packages
found in
Top 1k
922 packages
found in
Top 10k
19.5k packages
in community
Next steps
Strip out such information in the linking phase by using compiler options like the -s flag in GCC, or in the post-build phase by using the strip tool.
Problem
Uniform Resource Locators (URLs) are structured addresses that point to locations and assets on the internet. URLs allow software developers to build complex applications that exchange data with servers that can be hosted in multiple geographical regions. URLs can commonly be found embedded in documentation, configuration files, source code and compiled binaries. A port number is associated with a network address of a host, such as an IP address, and the type of network protocol used for communication. Within URLs, the ports are optional. Ports can be specified in a URL immediately following the domain name. Each network protocol, or schema, has a set of standard ports on which the service operates. This issue is raised when a mismatch between a network protocol and its expected port number is detected. While the presence of non-standard ports does not imply malicious intent, all of their uses in a software package should be documented and approved.Prevalence in PyPI community
35 packages
found in
Top 100
271 packages
found in
Top 1k
1732 packages
found in
Top 10k
61.12k packages
in community
Next steps
Investigate reported detections.
If the software should not include these network references, investigate your build and release environment for software supply chain compromise.
You should delay the software release until the investigation is completed, or until the issue is risk accepted.
Consider changing the port to one that is standard for the networking protocol.
Detected Linux executable files without any fortified functions.
Causes risk: low priority mitigations absent
hardening
Problem
Fortified functions are usually wrappers around standard glibc functions (such as memcpy) which perform boundary checks either at compile time or run time to determine if a memory violation has occurred. The compiler needs additional context to generate such calls (for example, array size that needs to be known at compile time). Because of this, the compiler will virtually never substitute all viable functions with their fortified counterparts in complex programs. However, lack of any fortified functions may indicate that this compiler feature was not used at all.Prevalence in PyPI community
21 packages
found in
Top 100
106 packages
found in
Top 1k
615 packages
found in
Top 10k
10.44k packages
in community
Next steps
In GCC, you can enable fortified functions with -D_FORTIFY_SOURCE=2 flag, while using at least -O1 optimization level.
Top behaviors
Modifies file/directory permissions.
permissions
Prevalence in PyPI community
Behavior often found in this community (Common)
34 packages
found in
Top 100
186 packages
found in
Top 1k
1071 packages
found in
Top 10k
27.02k packages
in community
Changes file ownership.
file
Prevalence in PyPI community
Behavior often found in this community (Common)
16 packages
found in
Top 100
58 packages
found in
Top 1k
423 packages
found in
Top 10k
8.41k packages
in community
Encodes data using the Base64 algorithm.
packer
Prevalence in PyPI community
Behavior often found in this community (Common)
36 packages
found in
Top 100
281 packages
found in
Top 1k
1802 packages
found in
Top 10k
66.4k packages
in community
Decodes data using the Base64 algorithm.
packer
Prevalence in PyPI community
Behavior often found in this community (Common)
39 packages
found in
Top 100
252 packages
found in
Top 1k
1477 packages
found in
Top 10k
53.15k packages
in community
Contains URLs that link to interesting file formats.
network
Prevalence in PyPI community
Behavior often found in this community (Common)
76 packages
found in
Top 100
459 packages
found in
Top 1k
3531 packages
found in
Top 10k
105.97k packages
in community
Top vulnerabilities
No vulnerabilities found.