Skip to content

Commit 3d4d580

Browse files
committed
add mixed binary hardening rule
1 parent 0c04fe9 commit 3d4d580

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

src/en/02_devenv.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,3 +255,24 @@ There exist other useful tools or `cargo` subcommands for enforcing program
255255
security whether by searching for specific code patterns or by providing
256256
convenient commands for testing or fuzzing. They are discussed in the following
257257
chapters, according to their goals.
258+
259+
## Hardening and Mixed Binaries
260+
261+
_Hardening_ refers to mechanisms applied during compilation to reduce the impact
262+
or exploitability of certain memory safety defects. In the case of Rust, these
263+
hardening techniques are generally less relevant (except for `unsafe` code).
264+
However, the question arises again in the context of mixed software, that is,
265+
software containing components written in Rust and components written in one or
266+
more languages that do not guarantee memory safety. Indeed, it has been shown
267+
that Rust code can be used to bypass hardening applied to vulnerable C code.
268+
269+
> **Rule {{#check DENV-MIXED | Enable hardening for all languages in a mixed-language application}}**
270+
>
271+
> When developing a secure application that includes components in multiple
272+
> languages, the compilation of all components (including Rust ones) must apply
273+
> hardening techniques to limit the exploitability of vulnerabilities present in
274+
> components written in languages that do not guarantee memory safety.
275+
276+
### References
277+
278+
- _Exploiting Mixed Binaries_, Michalis Papaevripides, Elias Athanasopoulos, <https://dl.acm.org/doi/10.1145/3418898>

src/fr/02_devenv.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,3 +285,26 @@ D'autres outils ou sous-commandes `cargo` utiles pour renforcer la sécurité
285285
d'un programme existent, par exemple, en recherchant des motifs de code
286286
particuliers. Nous en discutons dans les chapitres suivants en fonction de leurs
287287
portées et de leurs objectifs.
288+
289+
## Durcissement et binaires mixtes
290+
291+
Les _durcissements_ sont des mécanismes mis en place pendant la compilation
292+
permettant de réduire l'impact ou l'exploitabilité d'un certain nombre de défaut
293+
de sûrété mémoire. Dans le cas de Rust, ces durcissements n'ont pas beaucoup
294+
d'intérêt (hors code _unsafe_). Toutefois, la question se pose de nouveau dans
295+
le cas de logiciel mixte, c'est-à-dire contenant des composants écrits en Rust
296+
et des composants écrits dans un ou les langages n'assurant pas la sûreté
297+
mémoire. En effet, il a été montré que du code Rust peut être utilisé pour
298+
contourner des durcissements d'un code C vulnérable.
299+
300+
> ** Règles {{#check DENV-MIXED | Activer les durcissements pour tous les langages d'un logiciel mixte}}**
301+
>
302+
> Dans le cadre du développement d'une application sécurisée comportant des
303+
> composants dans plusieurs langages, les compilations des composants (y compris
304+
> Rust) doivent appliquer des durcissements de manière à limiter
305+
> l'exploitabilité des vulnérabilités présents dans les composants dont le
306+
> langage n'assure pas la sûreté mémoire.
307+
308+
### Références
309+
310+
- _Exploiting Mixed Binaries_, Michalis Papaevripides, Elias Athanasopoulos, <https://dl.acm.org/doi/10.1145/3418898>

0 commit comments

Comments
 (0)