Portál AbcLinuxu, 8. května 2025 04:27

Bezpečnostní audit knihovny Rustls

Byl zveřejněn bezpečnostní audit TLS knihovny naprogramované v Rustu Rustls. Společnost Cure53 stojící za auditem byla "ohromena kvalitou zdrojového kódu" [reddit].

15.6.2020 18:00 | Ladislav Hagara | Komunita


Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Max avatar 16.6.2020 09:07 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Bezpečnostní audit knihovny Rustls
Odpovědět | Sbalit | Link | Blokovat | Admin
Diskuse pokračuje zde : Bezpečnostní audit knihovny Rustls.
Zdar Max
Měl jsem sen ... :(
16.6.2020 09:37 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Bezpečnostní audit knihovny Rustls
Odpovědět | Sbalit | Link | Blokovat | Admin
"Papírově" je Rust předevšim o paměťový bezpečnosti (a zamezení race conditions), ale kromě toho ten jazyk je poměrně hodně orientovanej na korektnost celkově. Tzn. třeba stringy jsou garantovaně vždy validní UTF-8 (není možný safe způsobem vytvořit nevalidní string). Nebo třeba floaty, které nepodporují total ordering. A tak dále.

V praxi je to pro programátora trochu otravné, protože člověk musí řešit spoustu chyb předem, ale vede to na kód s relativně vysokou úrovní korektnosti...

</kralykovoRustShill>
SPD vůbec není proruská
16.6.2020 22:00 Rust
Rozbalit Rozbalit vše Re: Bezpečnostní audit knihovny Rustls
Ten jazyk je stejně blbej jako politicko korektní nápady poslední doby.

V drtivé většině případů potřebuji string - a ne UTF-8. Ovšem Rust navrhovali pitomci. Nemluvě o pomalých a debilních operacích, které v UTF-8 jsou.

Třeba někdo pochopí, že UTF-8 je vstupně/výstupní formát textových řetězců, ale nikoli operační. Rust a jeho tvůrci na tak vysoké IQ, aby to pochopili nedosáhli.

Stejně tak float čísla a jejich chování jsou perfektně standardizována. Ovšem stejně jako vadí master / slave, tak i Rust musí mít svoje debility.

Rust je jazyk každý pes jiná ves. Jako když pejsek s kočičkou vařili dort - od všeho dobrého trochu ať to není k jídlu. Prostě klasický eintopf komunitního projektu. Každý člen si přidal své vlastnosti, takže je Rust totálně nekonzistentní jazyk - jako u PHP.

A ono je stejně jedno co si kde co píše, protože abcolinuxu diskuse maže. Tak si nebude víc plácat játra.

17.6.2020 10:21 Lyco | skóre: 14 | blog: Lyco
Rozbalit Rozbalit vše Re: Bezpečnostní audit knihovny Rustls
Třeba někdo pochopí, že UTF-8 je vstupně/výstupní formát textových řetězců, ale nikoli operační.
Datová struktura která při operacích zachovává svoje invarianty mi připadá jako dobrý nápad.

Ale pokud potřebuješ dělat nějaké operace které dočasně poruší pravidla UTF-8, vždycky můžeš prostě zavolat .as_bytes() a pracovat na read-only view toho stringu, nebo použít unsafe (od toho tam je).
Stejně tak float čísla a jejich chování jsou perfektně standardizována.
Jo, a Rust se toho standardu drží. Proto čísla v plovoucí řádové čárce nejsou totálně seřazená. Standard je totiž blbý:
zdenekbelehradek@local ~/tests/c =># cat float.c
#include <stdio.h>
#include <unistd.h>

int main (int argc, char **argv)
{
  float zeroplus, zerominus, infplus, infminus, nan;
  zeroplus = 0.0; // positive zero
  zerominus = -0.0; // negative zero
  infplus = 1.0 / zeroplus; // positive infinity
  infminus = 1.0 / zerominus; // negative infinity
  nan = zeroplus / zeroplus; // NaN

  printf("zeroes are equal: %d\n", zeroplus == zerominus);
  printf("infinities are equal: %d\n", infplus == infminus);

  printf("NaNs is equal to itself: %d\n", nan == nan);

  printf("NaN <= +inf: %d\n", nan <= infplus);
  printf("NaN >= +inf: %d\n", nan >= infplus);

  printf("NaN >= -inf:: %d\n", nan >= infminus);
  printf("NaN <= -inf: %d\n", nan <= infminus);

  return 0;
}
# cc float.c -o float ; ./float
zeroes are equal: 1
infinities are equal: 0
NaNs is equal to itself: 0
NaN <= +inf: 0
NaN >= +inf: 0
NaN >= -inf:: 0
NaN <= -inf: 0
Všimni si, že NaNy nejsou ani větší ani menší než jiná čísla, a že operace na rovnajících se číslech dává nerovné výsledky (tak generuju kladné a záporné nekonečno).

Samozřejmě to šlo standardizovat i nějak rozumně, např. že NaN se rovná sám sobě a ničemu jinému (a že to platí pro všechny reprezentace NaNů) a že je větší než kladné nekonečno. (Dělení nulou bych nechal jak je nebo zavedl jen jedno (projektivní) nekonečno.) Pak by třeba platilo, že binární kopie floatu se rovná své předloze, a kompilátory by mohly líp optimalizovat.
Příspěvek se rázem stává až o 37,5 % pravdivější, je-li pod ním napsáno reálné jméno.
Josef Kufner avatar 17.6.2020 14:09 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Bezpečnostní audit knihovny Rustls
Samozřejmě to šlo standardizovat i nějak rozumně, např. že NaN se rovná sám sobě a ničemu jinému
To právě moc rozumné není. Pokud chceš vědět proč, podívej se na trojhodnotové logiky a rozíl mezi tím, jak to definovali Kleene a Łukasiewicz. Stejný případ je i NULL v SQL.
Hello world ! Segmentation fault (core dumped)
17.6.2020 16:31 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Bezpečnostní audit knihovny Rustls
Ten anonym byl na 90% troll, kterému jsou reálně nějaké stringy nebo floaty úplně někde. Ale i tak je asi fajn, žes ty důvody napsal...

Založit nové vláknoNahoru


ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.