Spectra Assure
Community
warningRisk: Hardening
Scanned: about 2 hours ago

hermes-engine

latest
Top 10k
A JavaScript engine optimized for running React Native on Android
License: Permissive (MIT)
Published: almost 4 years ago



SAFE Assessment

Compliance

Licenses
No license compliance issues
Secrets
No sensitive information found

Security

Vulnerabilities
No known vulnerabilities detected
Hardening
1 baseline mitigations missing

Threats

Tampering
No evidence of software tampering
Malware
No evidence of malware inclusion

Popularity

107.81M
Recorded Downloads Since 2021
Contributors
Declared Dependencies
247
Dependents

Top issues

Problem

Stack canary is a special value written onto the stack that allows the operating system to detect and terminate the program if a stack overrun occurs. Older compilers might generate stack cookies in a way that makes it possible to determine their value, allowing the attacker to render the mitigation ineffective.

Prevalence in npm community

0 packages
found in
Top 100
0 packages
found in
Top 1k
35 packages
found in
Top 10k
7.47k packages
in community

Next steps

In GCC, you can enable the stack canary with -fstack-protector-strong or -fstack-protector-all flag, but it may also be enabled by default in more recent versions of the compiler.
Consider upgrading your compiler.

Problem

ASLR (address-space layout randomization) is a mitigation technique that increases the difficulty of performing buffer-overflow attacks that require the attacker to know the address of the program in memory. This is done by loading the program at a randomly selected address in the process' address space. ASLR-enabled kernels can choose a random load address only for position-independent executables and code.

Prevalence in npm community

0 packages
found in
Top 100
2 packages
found in
Top 1k
53 packages
found in
Top 10k
8.46k packages
in community

Next steps

To support ASLR, the program must be compiled as position-independent code. In most compilers, this is done by passing the corresponding position-independent flag, such as -fPIC for shared libraries or -fPIE for executables.

Problem

Control Flow Guard (CFG/CFI) protects the code flow integrity by ensuring that indirect calls are made only to vetted functions. This mitigation protects dynamically resolved function targets by instrumenting the code responsible for transferring execution control. Higher-level programming languages implement structured exception handling by managing their own code flow execution paths. As such, they are subject to code flow hijacking during runtime. Language-specific exception handling mitigation enforces execution integrity by instrumenting calls to manage execution context switching. Any deviation from the known and trusted code flow paths will cause the application to terminate. This makes malicious code less likely to execute.

Prevalence in npm community

0 packages
found in
Top 100
2 packages
found in
Top 1k
101 packages
found in
Top 10k
17.12k packages
in community

Next steps

It's highly recommended to enable this option for all software components used at security boundaries, or those that process user controlled inputs.
To enable this mitigation, refer to your programming language toolchain documentation.
In Microsoft VisualStudio, you can enable CFG mitigation by passing the /guard:cf parameter to the compiler and linker.

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 npm community

0 packages
found in
Top 100
0 packages
found in
Top 1k
63 packages
found in
Top 10k
10.97k 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.

Problem

Operating systems allow multiple user accounts to coexist on a single computer system. Each registered user has identity information associated with their account. At the very least, user accounts consist of a user name and an optional password. In some cases, user account data may also include personally identifiable information. Extended personal information may include user's given and last name, their email and mailing address, personal photo and their telephone number. Financially motivated attackers may seek to collect personal information for purposes of selling the private data to a third-party. Malicious code that typically exhibits these behavior traits is commonly referred to as an information stealer. While the presence of code that accesses identity information does not necessarily imply malicious intent, all of its uses in a software package should be documented and approved. Accessing identity information is a very common behavior for software packages. One example of acceptable use for such functions is verifying that the active user has purchased a software license that allows them to run the application.

Prevalence in npm community

2 packages
found in
Top 100
6 packages
found in
Top 1k
181 packages
found in
Top 10k
39.81k packages
in community

Next steps

Investigate reported detections as indicators of software tampering.
Consult Mitre ATT&CK documentation: T1033 - System Owner/User Discovery.

Top behaviors

Prevalence in npm community

Behavior uncommon for this community (Uncommon)
0 packages
found in
Top 100
0 packages
found in
Top 1k
34 packages
found in
Top 10k
6.46k packages
in community

Prevalence in npm community

Behavior uncommon for this community (Uncommon)
0 packages
found in
Top 100
0 packages
found in
Top 1k
75 packages
found in
Top 10k
11.94k packages
in community

Prevalence in npm community

Behavior often found in this community (Common)
0 packages
found in
Top 100
2 packages
found in
Top 1k
149 packages
found in
Top 10k
29.13k packages
in community

Prevalence in npm community

Behavior often found in this community (Common)
0 packages
found in
Top 100
2 packages
found in
Top 1k
144 packages
found in
Top 10k
30.48k packages
in community

Prevalence in npm community

Behavior uncommon for this community (Uncommon)
0 packages
found in
Top 100
2 packages
found in
Top 1k
57 packages
found in
Top 10k
14.42k packages
in community

Top vulnerabilities

No vulnerabilities found.