Skip to content

Commit c1667cc

Browse files
Harden native Windows DLL compilation (#4768)
* Harden native DLLs Enable Code Flow Guard (CFG), Address Space Layout Randomization (ASLR) and Control-flow Enforcement Technology (CET) for native projects to harden the DLLs for release builds.
1 parent 5132a11 commit c1667cc

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ This component adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.h
2222
traces instrumentation for versions `1.8.0`+.
2323
- Support for `temporality_preference` in file-based configuration
2424
for Console Metric Exporter.
25+
- Enable ASLR, CET and CFG for native profiler libraries on Windows.
2526

2627
### Changed
2728

src/OpenTelemetry.AutoInstrumentation.Native/OpenTelemetry.AutoInstrumentation.Native.DLL.vcxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
<PlatformToolset>v143</PlatformToolset>
4141
<WholeProgramOptimization>true</WholeProgramOptimization>
4242
<CharacterSet>Unicode</CharacterSet>
43+
<LinkControlFlowGuard>true</LinkControlFlowGuard>
4344
</PropertyGroup>
4445
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
4546
<ConfigurationType>DynamicLibrary</ConfigurationType>
@@ -53,6 +54,7 @@
5354
<PlatformToolset>v143</PlatformToolset>
5455
<WholeProgramOptimization>true</WholeProgramOptimization>
5556
<CharacterSet>Unicode</CharacterSet>
57+
<LinkControlFlowGuard>true</LinkControlFlowGuard>
5658
</PropertyGroup>
5759
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
5860
<ImportGroup Label="ExtensionSettings">
@@ -155,13 +157,16 @@
155157
<LanguageStandard>stdcpp17</LanguageStandard>
156158
<MultiProcessorCompilation>true</MultiProcessorCompilation>
157159
<AdditionalIncludeDirectories>$(LIB_INCLUDES);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
160+
<ControlFlowGuard>Guard</ControlFlowGuard>
158161
</ClCompile>
159162
<Link>
160163
<SubSystem>Windows</SubSystem>
161164
<GenerateDebugInformation>true</GenerateDebugInformation>
162165
<EnableCOMDATFolding>true</EnableCOMDATFolding>
163166
<OptimizeReferences>true</OptimizeReferences>
164167
<ModuleDefinitionFile>.\OpenTelemetry.AutoInstrumentation.Native.def</ModuleDefinitionFile>
168+
<CETCompat>true</CETCompat>
169+
<DynamicBase>true</DynamicBase>
165170
</Link>
166171
<PreBuildEvent>
167172
<Command>IF EXIST "$(SolutionDir)pre-build-events-cpp.bat" CALL "$(SolutionDir)pre-build-events-cpp.bat" "$(TargetPath)" "$(TargetFileName)" "$(TargetDir)" "$(TargetName)"</Command>
@@ -182,13 +187,16 @@
182187
<LanguageStandard>stdcpp17</LanguageStandard>
183188
<MultiProcessorCompilation>true</MultiProcessorCompilation>
184189
<AdditionalIncludeDirectories>$(LIB_INCLUDES);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
190+
<ControlFlowGuard>Guard</ControlFlowGuard>
185191
</ClCompile>
186192
<Link>
187193
<SubSystem>Windows</SubSystem>
188194
<GenerateDebugInformation>true</GenerateDebugInformation>
189195
<EnableCOMDATFolding>true</EnableCOMDATFolding>
190196
<OptimizeReferences>true</OptimizeReferences>
191197
<ModuleDefinitionFile>.\OpenTelemetry.AutoInstrumentation.Native.def</ModuleDefinitionFile>
198+
<CETCompat>true</CETCompat>
199+
<DynamicBase>true</DynamicBase>
192200
</Link>
193201
<PreBuildEvent>
194202
<Command>IF EXIST "$(SolutionDir)pre-build-events-cpp.bat" CALL "$(SolutionDir)pre-build-events-cpp.bat" "$(TargetPath)" "$(TargetFileName)" "$(TargetDir)" "$(TargetName)"</Command>

src/OpenTelemetry.AutoInstrumentation.Native/OpenTelemetry.AutoInstrumentation.Native.vcxproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,14 @@
4747
<PlatformToolset>v143</PlatformToolset>
4848
<WholeProgramOptimization>true</WholeProgramOptimization>
4949
<CharacterSet>Unicode</CharacterSet>
50+
<LinkControlFlowGuard>true</LinkControlFlowGuard>
5051
</PropertyGroup>
5152
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
5253
<ConfigurationType>StaticLibrary</ConfigurationType>
5354
<UseDebugLibraries>false</UseDebugLibraries>
5455
<PlatformToolset>v143</PlatformToolset>
5556
<WholeProgramOptimization>true</WholeProgramOptimization>
57+
<LinkControlFlowGuard>true</LinkControlFlowGuard>
5658
<CharacterSet>Unicode</CharacterSet>
5759
</PropertyGroup>
5860
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
@@ -138,12 +140,15 @@
138140
<PreprocessorDefinitions>_TARGET_64BIT;BIT64;HOST_64BIT;AMD64;_UNICODE;UNICODE;OTEL_AUTO_VERSION_MAJOR=$(OTEL_AUTO_VERSION_MAJOR);OTEL_AUTO_VERSION_MINOR=$(OTEL_AUTO_VERSION_MINOR);OTEL_AUTO_VERSION_PATCH=$(OTEL_AUTO_VERSION_PATCH);%(PreprocessorDefinitions)</PreprocessorDefinitions>
139141
<AdditionalIncludeDirectories>$(LIB_INCLUDES);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
140142
<TreatWarningAsError>true</TreatWarningAsError>
143+
<ControlFlowGuard>Guard</ControlFlowGuard>
141144
</ClCompile>
142145
<Lib>
143146
<AdditionalLibraryDirectories>$(LIB_INCLUDES);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
144147
</Lib>
145148
<Link>
146149
<AdditionalLibraryDirectories>$(LIB_INCLUDES);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
150+
<CETCompat>true</CETCompat>
151+
<DynamicBase>true</DynamicBase>
147152
</Link>
148153
</ItemDefinitionGroup>
149154
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@@ -162,12 +167,15 @@
162167
<PreprocessorDefinitions>_UNICODE;UNICODE;X86;HOST_X86;OTEL_AUTO_VERSION_MAJOR=$(OTEL_AUTO_VERSION_MAJOR);OTEL_AUTO_VERSION_MINOR=$(OTEL_AUTO_VERSION_MINOR);OTEL_AUTO_VERSION_PATCH=$(OTEL_AUTO_VERSION_PATCH);%(PreprocessorDefinitions)</PreprocessorDefinitions>
163168
<AdditionalIncludeDirectories>$(LIB_INCLUDES);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
164169
<TreatWarningAsError>true</TreatWarningAsError>
170+
<ControlFlowGuard>Guard</ControlFlowGuard>
165171
</ClCompile>
166172
<Lib>
167173
<AdditionalLibraryDirectories>$(LIB_INCLUDES);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
168174
</Lib>
169175
<Link>
170176
<AdditionalLibraryDirectories>$(LIB_INCLUDES);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
177+
<CETCompat>true</CETCompat>
178+
<DynamicBase>true</DynamicBase>
171179
</Link>
172180
</ItemDefinitionGroup>
173181
<ItemGroup>

0 commit comments

Comments
 (0)