EMBEDDED WORLD Nu kan du tanka upp Rust-kod till franska Trustinsoft för att få den analyserad efter säkerhetshål. C och C++ stöds sedan länge – och analysverktyget kan till och med blanda språken.
Vänta nu här! Det finns väl inga säkerhetshål i Rust?!
Själva grejen med programspråket är att det är designat för att undvika de minnesrelaterade buggar som plågar C.
Men jo, det finns faktiskt säkerhetshål. Tre stycken.
Det första är nyckelordet ”unsafe” som stänger av säkerheten i Rust. Det kan du vilja göra när du programmerar maskinnära – något som emdebbedprogrammerare gärna gör.
Trustinsoft drog en suck av lättnad när de insåg att det fanns luckor även i Rust. Företaget har under ett decennium år arbetat med att skapa formella bevis för att C-kod – som så att säga alltid är deklarerad unsafe – faktiskt är korrekt.
C-kods obefinliga minnessäkerhet ger prestandadfördelar men skapar buggar, realtidsfel, minnesfel, programkrasher, säkethetshetshål, med mera.
Man kunde tro att Trustinsoft skulle deppa ihop av att Rust med sin omständliga med säkra minneshantering börjat stjäla implementeringar från C – för det är en trend. Men Trustinsoft släpper alltså nu lös exakt samma analysverktyg på ”unsafe Rust”.
Som Trustinsofts verktyg är byggda ser de inte ens att det är Rustkod och inte C-kod som de analyserar.
Det andra hålet i Rust som Trustinsoft täpper till, efter unsafe, är dess fuskiga sätt att ”lösa” vissa problem, nämligen att plötsligt under exekveringen slå ut med händerna och deklarera ”panic”. Och stoppa exekveringen.
Det är förstås inte ett acceptabelt sätt att lösa problem i ett realtidssystem. Men Rust tar till knepet när beteendet hos koden är odefinerat.
Återigen kan Trusinsoft gripa in och läsa koden och bevisa eller motbevisa att exekveringen kommer att hamna i ett odefinerat tillstånd.
![]() |
Caroline Guillaume |
– Rust är minnessäker by design vilket är strålande! Men unsafe och undefined Rust finns och de kan vi adressera på samma sätt som vi gör det i C och C++. Bevisgraden blir densamma, säger Trustinsofts vd Caroline Guillaume.
Det tredje sårbarheten i Rust kan vi skylla på C/C++. Sårbarheten finns där C/C++-kod och Rust-kod anropar varandra.
Och det kommer de att göra. Operativsystemet Linux är exempelvis numera en hybrid mellan C och Rust – även om den senares andel är mikroskopisk. Och vi kommer att se många hybrida kodbaser under många år.
– Jag tror inte att C och C++ kommer att försvinna i morgon. Miljontals rader C kommer inte att bara kastas bort. Vi kommer att få se små bitar av Rust flyta omkring i ett hav av C.
Nyheten på mässan är att Trustinsoft känner sig mogen att introducera sin Rustanalys som en tjänst – under namnet ”Rust Code Analysis”.
Tjänsten klarar hybridkodbaser av C/C++ och Rust. Den stöder även simulering av målplattformen, eftersom dess beteende påverkar semantiken.
Du köper inte bara tjänsten utan även Trustinsofts experthjälp. Om några månader hoppas Trustinsoft att kunna släppa ett verktyg som du kan använda på egen hand.
En kritisk uppgraderingRust jobbar att på bli säkerthetscertifierat, vilket kommer att öppna dörrar, till exempel bildörrar.
När Elektroniktidningen hälsar på i Trustinsofts monter på Embedded World tar Caroline Guillaume just adjö av ingen mindre än en representant för Ferrous Systems – ett tyskt företag som utvecklar en Rust-kompilator. Det blev känt i slutet av februari att de två företagen samarbetar. Elektroniktidningen frågar nyfiket vad de två just pratat om. Jo. Bakgrunden är att om Trustinsoft ska kunna analysera Rust-kod så måste Trustinsoft veta exakt vad Rustkod betyder. Och vad kod betyder avgörs – alla standarder till trots – ytterst av vad kompilatorn faktiskt genererar. Så Trustinsofts och Ferrous kompilatorutvecklare måste komma överens, för att Trustinsoft korrekt ska kunna analysera kod för Ferrous kompilator. Vid detta specifika tillfälle pratade de två om något så tråkigt som hur dokumentationen av semantiken skulle struktureras. Det finns ytterligare ett skäl till att Trustinsoft pratar och partnar med Ferrous. De är en viktig medlem av Rust-ekosystemet. – Rust har ett innovativt ekosystem som vi gärna vill vara en del av. Av samma skäl har Trustinsoft gått med i Safety Critical Rust Consortium som arbetar för att kvalificera Rust för att användas i säkerhetskritiska system. Certifieringar kommer att öppna dörrar för ytterligare användning av Rust inom inom energi, försvar, rymd, flyg, fordon, medicin med mera. Caroline Guillaume har hittills främst sett användning av Rust inom konsumentelektronik – som inte är säkerhetskritisk. Elektroniktidningen lägger till motsvarande spaning inom fordonselektronikområdet: det finns idag två bilar med en ECU alltigenom programmerad i Rust. Men den används inte säkerhetskritiskt.* Trustinsoft har idag kunder inom bilindustrin, flyg- och försvarssektorn, konsumentelektronik och IoT. Trustinsofts verktyg hjälper dem med deras säkerhetscertifieringar. Trustinsoft har fordonsbranschens 26262-kvalificering för sina C/C++verktyg – och annonserade apropos detta under mässan att dess analysverktyg kan användas på mjukvaruuarkitekturen Autosar Classic. FOTNOT |