TH16105
Detected presence of files that use hex-encoded module import directive.
priority | CI/CD status | severity | effort | SAFE level | SAFE assessment |
---|---|---|---|---|---|
pass | high | high | None | None |
About the issueโ
Programming languages allow developers to extend functionality of their code by importing additional modules. Each programming language has their own way of achieving this, but it is common to declare reliance on external modules by using the import directive. This declaration is typically done at the source code level, where developers write the names of the modules their code requires. It is expected that names of external modules are written as regular, simple to understand text. However, some programming languages allow the names of external modules to be hex-encoded. This can be used as a form of code obfuscation. Due to this, the feature is commonly abused by attackers to confuse security tools and avoid detection. While presence of hex-encoded imports does not imply malicious intent, all of its uses in a software package should be documented and approved. One example of acceptable use for hex-encoded import directives is loading modules with non-ASCII names.
How to resolve the issueโ
- Investigate reported detections as indicators of software tampering.
- Consult Mitre ATT&CK documentation: T1027 - Obfuscated Files or Information.
- Consider renaming the imported module names.
Incidence statisticsโ
ReversingLabs periodically collects and analyzes the contents of popular software package repositories for threat research purposes. Analysis results are used to calculate incidence statistics for issues (policy violations) that Spectra Assure can detect in software packages.
This section is updated when new data becomes available.
Total amount of packages analyzed
- RubyGems: 183K
- Nuget: 644K
- PyPi: 628K
- NPM: 3.72M
Total detections per repository
For every repository, the chart shows the number of packages that triggered the software assurance policy. In other words, it shows how many packages in each package repository were found to have the specific issue described on this page. This information helps you understand how common the issue is across different software communities.
If a repository is absent from the chart, that means none of the packages in that repository triggered this policy during analysis, or the policy was not used during analysis.
Distribution of total detections by project popularity
For every repository, the chart shows how many of the total detections belong to the Top 100 (1-100), Top 1000 (101-1000) and Top 10 000 (1001-10 000) most downloaded projects. This information helps you understand the impact of the issue within each community, making it clearer when the issue affects the most popular projects.
If the chart shows zero values for all of the top project groups, that means all detections were in unranked projects (lower than 10 000 on the list of most downloaded projects).
Recommended readingโ
- T1027 - Obfuscated Files or Information (External resource - Mitre ATT&CK documentation)
- Code obfuscation (ReversingLabs glossary)
- Modular programming (External resource - Wikipedia)