Skaparen av C++ kritiserade införandet av säkra programmeringsspråk

Bjarne Stroustrup, skaparen av C++-språket, har publicerat invändningar mot slutsatserna i NSA-rapporten, som rekommenderade organisationer att gå bort från programmeringsspråk som C och C++, som överlåter minneshantering till utvecklaren, till förmån för språk som C#, Go, Java, Ruby, Rust och Swift, som tillhandahåller automatisk minneshantering eller utför säkerhetskontroller för kompileringstid.

Enligt Stroustrup är de säkra språken som nämns i NSA-rapporten faktiskt inte överlägsna C++ i de applikationer som är viktiga ur hans synvinkel. Särskilt de grundläggande rekommendationerna för användning av C++ (C++ Core Guidelines), utvecklade under de senaste åren, omfattar säkra programmeringsmetoder och föreskriver användning av verktyg som garanterar säkert arbete med typer och resurser. Detta lämnar möjligheten för utvecklare som inte kräver så stränga säkerhetsgarantier att fortsätta använda gamla utvecklingsmetoder.

Stroustrup tror att en bra statisk analysator som följer C++ Core Guidelines kan ge nödvändiga garantier för säkerheten för C++-kod till en betydligt lägre kostnad än att migrera till nya säkra programmeringsspråk. Till exempel är de flesta av Core Guidelines redan implementerade i den statiska analysatorn och minnessäkerhetsprofilen som ingår i Microsoft Visual Studio. Vissa rekommendationer beaktas också i Clang tidy statisk analysator.

NSA-rapporten kritiserades också för att bara fokusera på minnesproblem och utelämna många andra programmeringsspråksproblem som påverkar säkerhet och tillförlitlighet. Stroustrup ser säkerhet som ett bredare koncept, vars olika aspekter kan uppnås genom en kombination av kodningsstil, bibliotek och statiska analysatorer. För att kontrollera införandet av regler som säkerställer säkerheten vid arbete med typer och resurser, föreslås det att använda anteckningar i koden och kompilatoralternativen.

I applikationer där prestanda är viktigare än säkerhet tillåter detta tillvägagångssätt selektiv tillämpning av funktioner som garanterar säkerhet endast där det behövs. Säkerhetsverktyg kan också tillämpas på ett styckevis, som att börja med intervallkontroll och initieringsregler, och sedan gradvis anpassa koden till strängare krav.

Källa: opennet.ru

Lägg en kommentar