Nëse e përdorni atë për një organizatë masive ose thjesht zotëroni një telefon inteligjent, jeni të njohur nga afër me rrjedhën e pafund të përditësimeve të softuerit që vazhdimisht duhet të instalohen për shkak të gabimeve dhe dobësive të sigurisë. Njerëzit bëjnë gabime, kështu që kodi në mënyrë të pashmangshme do të përmbajë gabime – ju e kuptoni atë. Por një lëvizje në rritje për të shkruar softuer në një gjuhë të quajtur Rust po fiton vrull, sepse kodi është i papërshtatshëm në një mënyrë të rëndësishme. Nga dizajni, zhvilluesit nuk mund të krijojnë aksidentalisht llojet më të zakonshme të dobësive të sigurisë të shfrytëzuara kur ata janë duke koduar në Rust, një dallim që mund të bëjë një ndryshim të madh në paradën e përditëshme të patch-it dhe në fund të fundit në sigurinë kibernetike bazë të botës.
Ka moda në gjuhët e programimit, dhe të reja vijnë e shkojnë, shpesh pa ndikim të qëndrueshëm. Tani 12 vjeç, Rust mori kohë për t’u pjekur nga projekti anësor i një studiuesi të Mozilla-s në një ekosistem të fortë. Ndërkohë, gjuha paraardhëse C, e cila përdoret edhe sot e kësaj dite, mbushi 50 vjet këtë vit. Por për shkak se Rust prodhon kod më të sigurt dhe, më e rëndësishmja, nuk e përkeqëson performancën për ta bërë atë, gjuha ka fituar vazhdimisht adhurues dhe tani është në një pikë kthese. Microsoft, Google dhe Amazon Web Services kanë përdorur të gjitha Rust që nga viti 2019 dhe të tre kompanitë formuan Fondacionin jofitimprurës Rust me Mozilla dhe Huawei në 2020 për të mbështetur dhe rritur gjuhën. Dhe pas disa vitesh punë intensive, kerneli Linux ndërmori hapat e tij të parë muajin e kaluar për të zbatuar mbështetjen e Rust.
“Po bëhet virale si gjuhë,” thotë Dave Kleidermacher, nënkryetar i inxhinierisë për sigurinë dhe privatësinë e Android. “Ne kemi investuar në Rust në Android dhe në të gjithë Google, dhe kaq shumë inxhinierë thonë: “Si të filloj ta bëj këtë? Kjo është fantastike.’ Dhe Rust sapo u shfaq për herë të parë si një gjuhë e njohur dhe e pranuar zyrtarisht në Linux. Pra, ky nuk është vetëm Android; çdo sistem i bazuar në Linux tani mund të fillojë të inkorporojë komponentët Rust.”
Rust është ajo që njihet si një gjuhë “e sigurt për memorie”, sepse është krijuar për të bërë të pamundur që një program të tërheqë aksidentalisht të dhëna të padëshiruara nga memoria e një kompjuteri. Kur programuesit përdorin gjuhë të qëndrueshme që nuk e kanë këtë veçori, duke përfshirë C dhe C++, ata duhet të kontrollojnë me kujdes parametrat se çfarë të dhënash do të kërkojë programi i tyre dhe si – një detyrë që edhe zhvilluesit më të aftë dhe me përvojë do ta bëjnë herë pas here. defekt. Në vend të kësaj, duke shkruar softuer të ri në Rust, edhe programuesit amatorë mund të jenë të sigurt se nuk kanë futur ndonjë defekt të sigurisë së kujtesës në kodin e tyre.
Kujtesa e një programi është një burim i përbashkët i përdorur nga të gjitha veçoritë dhe bibliotekat e tij. Imagjinoni një program kalendarik të shkruar në një gjuhë që nuk është e sigurt për memorie. Ju hapni kalendarin tuaj dhe më pas kërkoni hyrje për 2 nëntor 2022 dhe programi merr të gjithë informacionin nga zona e kujtesës së kompjuterit tuaj të caktuar për të ruajtur të dhënat e asaj date. Gjithcka mire. Por nëse programi nuk është projektuar me kufizimet e duhura dhe ju kërkoni hyrje për 42 nëntor 2022, softueri, në vend që të prodhojë një gabim ose dështim tjetër, mund të kthejë me kujdes informacion nga një pjesë e memories që strehon të dhëna të ndryshme— ndoshta fjalëkalimi që përdorni për të mbrojtur kalendarin tuaj ose numrin e kartës së kreditit që mbani në dosje për veçoritë premium të kalendarit. Dhe nëse shtoni një festë ditëlindjeje në kalendarin tuaj më 42 nëntor, ajo mund të mbishkruajë të dhëna të palidhura në memorie në vend që t’ju thotë se nuk mund ta përfundojë detyrën. Këto njihen si gabime leximi dhe shkrimi “jashtë kufijve” dhe mund të shihni se si mund të shfrytëzohen potencialisht për t’i dhënë një sulmuesi akses të pahijshëm në të dhëna apo edhe kontroll të zgjeruar të sistemit.
Një lloj tjetër i zakonshëm i gabimeve të sigurisë së kujtesës, i njohur si “përdorimi pa pagesë”, përfshin një situatë ku një program ka hequr dorë nga pretendimi i tij për një pjesë të memories (ndoshta keni fshirë të gjitha shënimet tuaja në kalendar për tetor 2022) por gabimisht e ruan akses. Nëse më vonë kërkoni të dhëna nga 17 tetori, programi mund të jetë në gjendje të rrëmbejë çdo të dhënë që ka përfunduar atje. Dhe ekzistenca e dobësive të sigurisë së kujtesës në kod gjithashtu prezanton mundësinë që një haker mund të krijojë, të themi, një ftesë kalendarike me qëllim të keq me një datë të zgjedhur strategjikisht ose një grup detajesh ngjarjesh të dizajnuara për të manipuluar memorien për t’i dhënë sulmuesit akses në distancë.
Këto lloj dobësish nuk janë vetëm gabime ezoterike të softuerit. Hulumtimet dhe auditimi kanë gjetur në mënyrë të përsëritur se ato përbëjnë shumicën e të gjitha dobësive të softuerit. Pra, ndërsa ju ende mund të bëni gabime dhe të krijoni të meta sigurie gjatë programimit në Rust, mundësia për të eliminuar dobësitë e sigurisë së kujtesës është e rëndësishme.
“Çështjet e sigurisë së kujtesës janë përgjegjëse për një përqindje të madhe, të madhe të të gjitha dobësive të raportuara, dhe kjo është në aplikacionet kritike si sistemet operative, telefonat celularë dhe infrastruktura,” thotë Dan Lorenc, CEO i kompanisë së sigurisë së zinxhirit të furnizimit të softuerëve Chainguard. “Gjatë dekadave që njerëzit kanë shkruar kode në gjuhë të pasigurta për kujtesën, ne jemi përpjekur të përmirësojmë dhe ndërtojmë mjete më të mira dhe t’u mësojmë njerëzve se si të mos i bëjnë këto gabime, por ka vetëm kufij se sa mund t’u thuhet njerëzve të përpiqen më shumë. në fakt punojnë. Pra, keni nevojë për një teknologji të re që thjesht e bën të pamundur atë klasë të dobësive, dhe kjo është ajo që Rust më në fund po sjell në tryezë.”
Rust nuk është pa skeptikët dhe kritikët e tij. Përpjekja gjatë dy viteve të fundit për të zbatuar Rust në Linux ka qenë e diskutueshme, pjesërisht për shkak se shtimi i mbështetjes për çdo gjuhë tjetër në thelb rrit kompleksitetin, dhe pjesërisht për shkak të debateve rreth asaj se si, konkretisht, të shkohet për ta bërë gjithçka të funksionojë. Por përkrahësit theksojnë se Rust ka elementët e nevojshëm—nuk shkakton humbje të performancës dhe ndërvepron mirë me softuerin e shkruar në gjuhë të tjera—dhe se është vendimtar thjesht sepse plotëson një nevojë urgjente.
“Kjo është më pak se është zgjedhja e duhur dhe më shumë se është gati,” thotë Lorenc, një kontribues dhe studiues për një kohë të gjatë me burim të hapur. “Nuk ka alternativa reale tani, përveçse të mos bësh asgjë, dhe kjo thjesht nuk është më një opsion. Vazhdimi i përdorimit të kodit të pasigurt për kujtesën edhe për një dekadë tjetër do të ishte një problem masiv për industrinë e teknologjisë, për sigurinë kombëtare, për gjithçka.”
Një nga sfidat më të mëdha të tranzicionit në Rust, megjithatë, janë pikërisht të gjitha dekadat që zhvilluesit kanë kaluar tashmë duke shkruar kode jetike në gjuhë të pasigurta për memorie. Shkrimi i softuerit të ri në Rust nuk e adreson atë ngarkesë masive. Zbatimi i kernelit Linux, për shembull, po fillon në periferi duke mbështetur drejtuesit e bazuar në Rust, programet që koordinojnë një sistem operativ dhe pajisje si një printer.
“Kur jeni duke bërë sisteme operative, shpejtësia dhe performanca janë gjithmonë në krye të mendjes, dhe pjesët që po përdorni në C++ ose C janë zakonisht pjesët që thjesht nuk mund t’i ekzekutoni në Java ose në ndonjë memorie tjetër të sigurt. gjuhët, për shkak të performancës,” thotë Kleidermacher i Google. “Pra, të jesh në gjendje të ekzekutosh Rust dhe të kesh të njëjtën performancë, por të kesh sigurinë e memories është vërtet interesante. Por është një udhëtim. Ju nuk mund të shkoni dhe të rishkruani 50 milionë rreshta kodi brenda natës, kështu që ne po zgjedhim me kujdes komponentët kritikë për sigurinë dhe me kalimin e kohës do të rinovojmë gjëra të tjera.”
Në Android, Kleidermacher thotë se shumë veçori të menaxhimit të çelësave të kriptimit janë të shkruara tani në Rust, siç është funksioni privat i komunikimit në internet DNS mbi HTTPS, një version i ri i grupit të çipave me brez ultra të gjerë dhe Korniza e re e Virtualizimit Android e përdorur në Çipat e personalizuar Tensor G2 të Google. Ai shton se ekipi i Android po konverton gjithnjë e më shumë grupet e lidhjes si ato për Bluetooth dhe Wi-Fi në Rust sepse ato bazohen në standarde komplekse të industrisë dhe kanë tendencë të përmbajnë shumë dobësi. Shkurtimisht, strategjia është që të fillojmë të marrim përfitime shtesë sigurie nga konvertimi i komponentëve më të ekspozuar ose jetik të softuerit në Rust fillimisht dhe më pas duke punuar përbrenda prej andej.
“Yes, it’s a lot of work, it will be a lot of work, but the tech industry has how many trillions of dollars, plus how many talented programmers? We have the resources,” says Josh Aas, executive director of the Internet Security Research Group, which runs the memory-safety initiative Prossimo as well as the free certificate authority Let’s Encrypt. “Problems that are merely a lot of work are great.”
As Rust makes the transition to mainstream adoption, the case for some type of solution to memory-safety issues seems to get made again and again every day. Just this week, a high-criticality vulnerability in the ubiquitous secure communication library OpenSSL could have been prevented if the mechanism were written in a memory-safe language. And unlike the notorious 2014 OpenSSL vulnerability Heartbleed, which lurked unnoticed for two years and exposed websites across the internet to data interception attacks, this new bug had been introduced into OpenSSL in the past few months, in spite of efforts to reduce memory-safety vulnerabilities.
“How many people right now are living the identity-theft nightmare because of a memory-safety bug? Or on a national security level, if we’re worried about cyberattacks on the United States, how much of that threat is on the back of memory-safety vulnerabilities?” Aas says. “From my point of view, the whole game now is just convincing people to put in the effort. Do we understand the threat well enough, and do we have the will.”




