Programmiersprache Rust: AWS-Wettbewerb für mehr Sicherheit der Standard-Library
3 mins read

Programmiersprache Rust: AWS-Wettbewerb für mehr Sicherheit der Standard-Library

Amazon Web Services (AWS) has a Wettbewerb started, where the Sicherheit der Rust-Standard-Library is exceeded. Einzelne Herausfahrungen verifizieren differente Bereiche der Rust-Bibliotheken.

Anzeige


The Rust Foundation, which is concerned with the development of programming language, supports the competition.

Rust ist vorall wegen wegen seiner Memory-Safety-Konzepte beliebt. The presets prevent typical memory errors, which are responsible for a large part of the weaknesses in software.

In the low-level programming, for example for direct interaction with the operating system, Rust has its limits. Als Ausweg existed das keyword unsafedas unter anderem das Verbot aufhebt, Raw Pointer zu dereferentieren.

Insecure rust is not known, the code is more insecure, but it is a memory-safety concept that is not good. So can die Deferenzierung enes Raw Pointer for undetermined Verhalten foren, falls der Code den Zeiger vorher nicht aufreichnung verlagt.

Neben als unsafe geschäften Funktionen bietet Rust sogenannte Safe Abstractions: Eine Funktion gilt as sicher, obwohl sie unsafe-Code contains. Dabei ist die Funktion selbst dafür vernahrung, dass der intern unsafe-Block nicht zu undefiniertem Verhalten führt. One A detailed example is found in the Rust documentation.

Laut AWS hat die Standardbibliothek von Rust etwa 35,000 Funktionen, von denen 7500 as unsafe marked sin. Another 3000 sind Safe Abstractions. Bei der Core-Library von Rust mit etwa 21.000 Functions for AWS 7000 as unsafe marked and additionally 1700 Safe Abstractions.

In the last three years, 57 Issues zur Sicherheit der Rust-Standard-Libary were started, and es gab 20 CVE-Einträge (Common Vulnerabilities and Exposures).

Der von AWS started Wettbewerb sett on Crowdsourcing, if Sicherheit der Standard-Library for bezernung.

Eine Reihe von Challenges dient dazu, einzel Bereiche der Library zu verkönen. Für erfolgrès abgeschlossene Herausdorfungen zahlt AWS Financiale Belohnungen, deren Höhe der Blogbeitrag nicht näher beziffert.

Als Beispiel für eine Challenges führt der Beitrag die “Challenge 10: Memory Safety of String” auf, um die Safe Abstraction der insert– Function von std::string::String to check:

pub fn insert(&mut self, idx: usize, ch: char) {
  assert!(self.is_char_boundary(idx));
  let mut bits = (0; 4);
  let bits = ch.encode_utf8(&mut bits).as_bytes();

  unsafe {
    self.insert_bytes(idx, bits);
  }
}

Dabei gilt es die Implementierung der im unsafe-Block user function insert_bytes to verify:

unsafe fn insert_bytes(&mut self, idx: usize, bytes: &(u8)) {
  let len = self.len();
  let amt = bytes.len();
  self.vec.reserve(amt);

  unsafe {
    ptr::copy(self.vec.as_ptr().add(idx), self.vec.as_mut_ptr().add(idx + amt), len - idx);
    ptr::copy_nonoverlapping(bytes.as_ptr(), self.vec.as_mut_ptr().add(idx), amt);
    self.vec.set_len(len + amt);
  }
}

Each challenge has a list of criteria that must be successfully verified to guarantee security. AWS listed in its Blogbeitrag enig Tools from, er sich auf öffiche Weise eignen, die Funktionen zu verifiren.

Für den Wettbewerb hat AWS a GitHub Repository createddas sowohl die Challenges as auch einen Fork der Standard-Library aufweits. Dieser Fork must explizit not as Alternative zu den offizielen Rust-Releases, but nur dazu, die Herausdorfen zubehören.

Further details lassen sich their AWS blog and there Announcement of the Rust Foundation entnehmen


(rme)