Skip to content

Commit be4314a

Browse files
author
hg-anssi
committed
compilation and hardening
1 parent 191c3f7 commit be4314a

File tree

6 files changed

+98
-48
lines changed

6 files changed

+98
-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: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
references:
3+
- DOI: 10.1145/3418898
4+
ISSN: 2471-2566
5+
url: https://doi.org/10.1145/3418898
6+
author:
7+
- family: Papaevripides
8+
given: Michalis
9+
- family: Athanasopoulos
10+
given: Elias
11+
container-title: ACM Trans. Priv. Secur.
12+
id: mixed-bins
13+
issue: '2'
14+
issued:
15+
date-parts:
16+
- - 2021
17+
- 1
18+
keyword: CFI, Go, Memory safety, Rust, SafeStack
19+
publisher: Association for Computing Machinery
20+
publisher-place: New York, NY, USA
21+
title: Exploiting Mixed Binaries
22+
type: article-journal
23+
volume: '24'
24+
---
25+
26+
# Compilation
27+
28+
## Hardening and Mixed Binaries
29+
30+
_Hardening_ refers to mechanisms applied during compilation to reduce the impact
31+
or exploitability of certain memory safety defects. In the case of Rust, these
32+
hardening techniques are generally less relevant (except for `unsafe` code).
33+
However, the question arises again in the context of mixed software, that is,
34+
software containing components written in Rust and components written in one or
35+
more languages that do not guarantee memory safety. Indeed, it has been shown (see for instance [@mixed-bins])
36+
that Rust code can be used to bypass hardening applied to vulnerable C code.
37+
38+
<div class="reco" id="COMP-MIXED" type="Recommendation" title="Enable hardening for all languages in a mixed-language application">
39+
40+
When developing a secure application that includes components in multiple
41+
languages, the compilation of all components (including Rust ones) should apply
42+
hardening techniques to limit the exploitability of vulnerabilities present in
43+
components written in languages that do not guarantee memory safety.
44+
45+
</div>

src/en/devenv.md

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -305,26 +305,3 @@ There exist other useful tools or `cargo` subcommands for enforcing program
305305
security whether by searching for specific code patterns or by providing
306306
convenient commands for testing or fuzzing. They are discussed in the following
307307
chapters, according to their goals.
308-
309-
## Hardening and Mixed Binaries
310-
311-
_Hardening_ refers to mechanisms applied during compilation to reduce the impact
312-
or exploitability of certain memory safety defects. In the case of Rust, these
313-
hardening techniques are generally less relevant (except for `unsafe` code).
314-
However, the question arises again in the context of mixed software, that is,
315-
software containing components written in Rust and components written in one or
316-
more languages that do not guarantee memory safety. Indeed, it has been shown
317-
that Rust code can be used to bypass hardening applied to vulnerable C code.
318-
319-
<div class="reco" id="DENV-MIXED" type="Rule" title="Enable hardening for all languages in a mixed-language application">
320-
321-
When developing a secure application that includes components in multiple
322-
languages, the compilation of all components (including Rust ones) must apply
323-
hardening techniques to limit the exploitability of vulnerabilities present in
324-
components written in languages that do not guarantee memory safety.
325-
326-
</div>
327-
328-
### References
329-
330-
- _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: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
---
2+
references:
3+
- DOI: 10.1145/3418898
4+
ISSN: 2471-2566
5+
url: https://doi.org/10.1145/3418898
6+
author:
7+
- family: Papaevripides
8+
given: Michalis
9+
- family: Athanasopoulos
10+
given: Elias
11+
container-title: ACM Trans. Priv. Secur.
12+
id: mixed-bins
13+
issue: '2'
14+
issued:
15+
date-parts:
16+
- - 2021
17+
- 1
18+
keyword: CFI, Go, Memory safety, Rust, SafeStack
19+
publisher: Association for Computing Machinery
20+
publisher-place: New York, NY, USA
21+
title: Exploiting Mixed Binaries
22+
type: article-journal
23+
volume: '24'
24+
---
25+
26+
# Compilation
27+
28+
## Durcissement et binaires mixtes
29+
30+
Les _durcissements_ sont des mécanismes mis en place pendant la compilation
31+
permettant de réduire l'impact ou l'exploitabilité d'un certain nombre de défaut
32+
de sûreté mémoire. Dans le cas de Rust, ces durcissements n'ont pas beaucoup
33+
d'intérêt (hors code _unsafe_). Toutefois, la question se pose de nouveau dans
34+
le cas de logiciel mixte, c'est-à-dire contenant des composants écrits en Rust
35+
et des composants écrits dans un ou les langages n'assurant pas la sûreté
36+
mémoire. En effet, il a été montré (par exemple dans [@mixed-bins]) que du code Rust peut être utilisé pour
37+
contourner des durcissements d'un code C vulnérable.
38+
39+
<div class="reco" id="COMP-MIXED" type="Recommandation" title="Activer les durcissements pour tous les langages d'un logiciel mixte">
40+
41+
Dans le cadre du développement d'une application sécurisée comportant des
42+
composants dans plusieurs langages, les compilations des composants (y compris
43+
Rust) devraient appliquer des durcissements de manière à limiter
44+
l'exploitabilité des vulnérabilités présents dans les composants dont le
45+
langage n'assure pas la sûreté mémoire.
46+
47+
</div>
48+
49+
### Références
50+
51+
- _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
@@ -333,28 +333,3 @@ D'autres outils ou sous-commandes `cargo` utiles pour renforcer la sécurité
333333
d'un programme existent, par exemple, en recherchant des motifs de code
334334
particuliers. Nous en discutons dans les chapitres suivants en fonction de leurs
335335
portées et de leurs objectifs.
336-
337-
## Durcissement et binaires mixtes
338-
339-
Les _durcissements_ sont des mécanismes mis en place pendant la compilation
340-
permettant de réduire l'impact ou l'exploitabilité d'un certain nombre de défaut
341-
de sûrété mémoire. Dans le cas de Rust, ces durcissements n'ont pas beaucoup
342-
d'intérêt (hors code _unsafe_). Toutefois, la question se pose de nouveau dans
343-
le cas de logiciel mixte, c'est-à-dire contenant des composants écrits en Rust
344-
et des composants écrits dans un ou les langages n'assurant pas la sûreté
345-
mémoire. En effet, il a été montré que du code Rust peut être utilisé pour
346-
contourner des durcissements d'un code C vulnérable.
347-
348-
<div class="reco" id="DENV-MIXED" type="Règles" title="Activer les durcissements pour tous les langages d'un logiciel mixte">
349-
350-
Dans le cadre du développement d'une application sécurisée comportant des
351-
composants dans plusieurs langages, les compilations des composants (y compris
352-
Rust) doivent appliquer des durcissements de manière à limiter
353-
l'exploitabilité des vulnérabilités présents dans les composants dont le
354-
langage n'assure pas la sûreté mémoire.
355-
356-
</div>
357-
358-
### Références
359-
360-
- _Exploiting Mixed Binaries_, Michalis Papaevripides, Elias Athanasopoulos, <https://dl.acm.org/doi/10.1145/3418898>

0 commit comments

Comments
 (0)