close
close

AWS-Wettbewerb for Rust Programming Practices: Standard Library

AWS-Wettbewerb for Rust Programming Practices: Standard Library

Amazon Web Services (AWS) has a Wettbewert, which is a copy of Rust-Standard-Library. Einzelne Herausforderungen Verified Bereiche von Rust-Bibliotheken.

Anzeige


Die Rust Foundation, die sich um die Entwicklung der Programmiersprache kümmert, unterstützt den Wettbewerb.

Rust is believed to make the best use of the Memory-Security Concept. An example of the typical Speicherfehler for a Major Schwachstellen in Software.

In Low Level Programming, have Rust join Grenzen for direct interaction with the Betriebs system. Als Ausweg available das Keyword unsafeAnother feature of Verbot is Raw Pointer referencing.

Insecure Rust is never, no code unsicher ist, a dass einige Memory-Safety-Konzepte nicht greifen. So it is not possible to undefine a Raw Pointer, Zeiger Code is of no use.

What’s wrong with you? unsafe Gekennzeichneten Funktionen bietet Rust sogenannte Secure Abstractions: Always gilded functions unsafeEnter the code -Enthält. This is a function available on the Internet unsafe-Block before it is further identified. Ein Beispiel Found in Ausführliches Rust-Dokumentation.

AWS has 35,000 Standard Booklets and 7500+ functions from Rust. unsafe gekennzeichnet sind. There are over 3000 Secure Abstractions. Rust has Core-Library and 21,000 AWS 7000 Functions unsafe Markierte und Zusätzlich 1700 Secure Abstractions.

In this issue, Rust-Standard-Libary’s Sicherheit contains 57 Issues and 20 CVE-Einträge (Common Vulnerabilities and Exposures).

AWS Wettbewerb has set up Crowdsourcing for more granular use of the Standard Library.

Eine Reihe von Challenges dient dazu, einzelne Bereiche der Library zu überprüfen. For more information, everything related to AWS funding applies to the Blog at all.

Als Beispiel für eine Herausforderung führt der Beitrag die “Challenge 10: String’s memory safety” auf, um die Secure Abstraction der insert-Function von std::string::String Here is the answer:

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 is brought to life in gilded fashion unsafe-Block Input Functions insert_bytes 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);
  }
}

Jede Herausforderung had a Sicherheit zu gewährleisten, a List of Criteria most suitable for us. AWS Listed In A Blog You Can Use Authentication Functions.

Wettbewerb hat from Für AWS erstellt a GitHub RepositoryThis is the name of a fork of the Standard Library as well as Challenges. Dieser Fork has not been officially announced as an alternative to Rust-Releases, but it is herausforderungen durchzuführen.

More Details Lassen Sich AWS-Blog and says Ankundigung der Rust Foundation ennehmen.


(rme)