Skip to content

Commit 2e65294

Browse files
author
hg-anssi
committed
compilation and hardening
1 parent 0a3d64b commit 2e65294

File tree

6 files changed

+52
-48
lines changed

6 files changed

+52
-48
lines changed

src/en/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
- [Development environment](devenv.md)
88
- [Libraries](libraries.md)
9+
- [Compilation](compilation.md)
910

1011
# Language
1112

src/en/compilation.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Compilation
2+
3+
## Hardening and Mixed Binaries
4+
5+
_Hardening_ refers to mechanisms applied during compilation to reduce the impact
6+
or exploitability of certain memory safety defects. In the case of Rust, these
7+
hardening techniques are generally less relevant (except for `unsafe` code).
8+
However, the question arises again in the context of mixed software, that is,
9+
software containing components written in Rust and components written in one or
10+
more languages that do not guarantee memory safety. Indeed, it has been shown
11+
that Rust code can be used to bypass hardening applied to vulnerable C code.
12+
13+
<div class="reco" id="COMP-MIXED" type="Recommendation" title="Enable hardening for all languages in a mixed-language application">
14+
15+
When developing a secure application that includes components in multiple
16+
languages, the compilation of all components (including Rust ones) should apply
17+
hardening techniques to limit the exploitability of vulnerabilities present in
18+
components written in languages that do not guarantee memory safety.
19+
20+
</div>
21+
22+
### References
23+
24+
- _Exploiting Mixed Binaries_, Michalis Papaevripides, Elias Athanasopoulos, <https://dl.acm.org/doi/10.1145/3418898>

src/en/devenv.md

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -302,26 +302,3 @@ There exist other useful tools or `cargo` subcommands for enforcing program
302302
security whether by searching for specific code patterns or by providing
303303
convenient commands for testing or fuzzing. They are discussed in the following
304304
chapters, according to their goals.
305-
306-
## Hardening and Mixed Binaries
307-
308-
_Hardening_ refers to mechanisms applied during compilation to reduce the impact
309-
or exploitability of certain memory safety defects. In the case of Rust, these
310-
hardening techniques are generally less relevant (except for `unsafe` code).
311-
However, the question arises again in the context of mixed software, that is,
312-
software containing components written in Rust and components written in one or
313-
more languages that do not guarantee memory safety. Indeed, it has been shown
314-
that Rust code can be used to bypass hardening applied to vulnerable C code.
315-
316-
<div class="reco" id="DENV-MIXED" type="Rule" title="Enable hardening for all languages in a mixed-language application">
317-
318-
When developing a secure application that includes components in multiple
319-
languages, the compilation of all components (including Rust ones) must apply
320-
hardening techniques to limit the exploitability of vulnerabilities present in
321-
components written in languages that do not guarantee memory safety.
322-
323-
</div>
324-
325-
### References
326-
327-
- _Exploiting Mixed Binaries_, Michalis Papaevripides, Elias Athanasopoulos, <https://dl.acm.org/doi/10.1145/3418898>

src/fr/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
- [Environnement de développement](devenv.md)
88
- [Bibliothèques](libraries.md)
9+
- [Compilation](compilation.md)
910

1011
# Langage
1112

src/fr/compilation.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Compilation
2+
3+
## Durcissement et binaires mixtes
4+
5+
Les _durcissements_ sont des mécanismes mis en place pendant la compilation
6+
permettant de réduire l'impact ou l'exploitabilité d'un certain nombre de défaut
7+
de sûreté mémoire. Dans le cas de Rust, ces durcissements n'ont pas beaucoup
8+
d'intérêt (hors code _unsafe_). Toutefois, la question se pose de nouveau dans
9+
le cas de logiciel mixte, c'est-à-dire contenant des composants écrits en Rust
10+
et des composants écrits dans un ou les langages n'assurant pas la sûreté
11+
mémoire. En effet, il a été montré que du code Rust peut être utilisé pour
12+
contourner des durcissements d'un code C vulnérable.
13+
14+
<div class="reco" id="COMP-MIXED" type="Recommandation" title="Activer les durcissements pour tous les langages d'un logiciel mixte">
15+
16+
Dans le cadre du développement d'une application sécurisée comportant des
17+
composants dans plusieurs langages, les compilations des composants (y compris
18+
Rust) devraient appliquer des durcissements de manière à limiter
19+
l'exploitabilité des vulnérabilités présents dans les composants dont le
20+
langage n'assure pas la sûreté mémoire.
21+
22+
</div>
23+
24+
### Références
25+
26+
- _Exploiting Mixed Binaries_, Michalis Papaevripides, Elias Athanasopoulos, <https://dl.acm.org/doi/10.1145/3418898>

src/fr/devenv.md

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -332,28 +332,3 @@ D'autres outils ou sous-commandes `cargo` utiles pour renforcer la sécurité
332332
d'un programme existent, par exemple, en recherchant des motifs de code
333333
particuliers. Nous en discutons dans les chapitres suivants en fonction de leurs
334334
portées et de leurs objectifs.
335-
336-
## Durcissement et binaires mixtes
337-
338-
Les _durcissements_ sont des mécanismes mis en place pendant la compilation
339-
permettant de réduire l'impact ou l'exploitabilité d'un certain nombre de défaut
340-
de sûrété mémoire. Dans le cas de Rust, ces durcissements n'ont pas beaucoup
341-
d'intérêt (hors code _unsafe_). Toutefois, la question se pose de nouveau dans
342-
le cas de logiciel mixte, c'est-à-dire contenant des composants écrits en Rust
343-
et des composants écrits dans un ou les langages n'assurant pas la sûreté
344-
mémoire. En effet, il a été montré que du code Rust peut être utilisé pour
345-
contourner des durcissements d'un code C vulnérable.
346-
347-
<div class="reco" id="DENV-MIXED" type="Règles" title="Activer les durcissements pour tous les langages d'un logiciel mixte">
348-
349-
Dans le cadre du développement d'une application sécurisée comportant des
350-
composants dans plusieurs langages, les compilations des composants (y compris
351-
Rust) doivent appliquer des durcissements de manière à limiter
352-
l'exploitabilité des vulnérabilités présents dans les composants dont le
353-
langage n'assure pas la sûreté mémoire.
354-
355-
</div>
356-
357-
### Références
358-
359-
- _Exploiting Mixed Binaries_, Michalis Papaevripides, Elias Athanasopoulos, <https://dl.acm.org/doi/10.1145/3418898>

0 commit comments

Comments
 (0)