SQ14145
Detected Windows executable files that convert read-only access to writable or executable as a side-effect of their alignment and memory layout.
priority | CI/CD status | severity | effort | RL level | RL assessment |
---|---|---|---|---|---|
fail | high | high | 4 | hardening: fail Reason: critical code linking issues |
About the issueโ
Windows executable files are mapped in memory as a sequence of allocated pages. The pages are grouped into sections that can expand their virtual memory footprints, and exceed the size of the physical content backing them. Virtual memory requirements for each section are rounded up by the section alignment value. When this alignment value is lesser than the memory allocation granularity, applying correct section access rights becomes challenging. When read-only sections share the memory page with writable or executable content, the access rights get expanded to satisfy all access requirements. Therefore, it is possible that a bad memory layout can cause the operating system to nullify the read-only section attributes. Using unsafe section access rights may lead to exposing critical security data to overwrites, tampering, and complete bypasses of vulnerability mitigations.
How to resolve the issueโ
- Re-compile the affected application with the latest programming language toolchain, and adjust the alignment to match the memory allocation granularity.
- In Microsoft VisualStudio, you can adjust the alignment value by passing it through the /ALIGN option to the linker.
Incidence statisticsโ
ReversingLabs periodically collects and analyzes the contents of popular software package repositories for threat research purposes.
For every repository, the chart shows the percentage of projects that triggered the software assurance policy. In other words, it shows how many projects were found to have the specific issue described on this page.
The percentages are calculated from the total amount of packages analyzed:
- RubyGems: 174K
- Nuget: 189K
- PyPi: 403K
- NPM: 2.1M
Recommended readingโ
- Memory footprint (External resource - Wikipedia)
- Access Rights (External resource - SOFFRONT)