Czy warto jeszcze uczyć się C i C++? Raport Białego Domu Cię zaskoczy!

homodigital.pl 8 miesięcy temu

Wybór języka programowania to nie tylko kwestia osobistych preferencji, ale też bezpieczeństwa narodowego! Tak przynajmniej sugeruje raport przygotowany przez administrację prezydenta USA Joe Bidena. Twórcy raportu wzywają programistów do stosowania bezpieczniejszych języków programowania. Polski rząd nie ma podobnych oczekiwań, ale wielu programistów w naszym kraju koduje dla zagranicznych klientów. Czy Polscy programiści są gotowi na zmiany?

W raporcie „Back to the building blocks: a path toward secure and measurable software” przygotowanym przez Biuro Narodowego Dyrektora ds. Cyberbezpieczeństwa pojawiło się wezwanie do programistów, by stosowali języki programowania niemające luk w zabezpieczeniach pamięci. Eksperci zidentyfikowali te, które mogą powodować problemy związane z bezpieczeństwem. Prym wiodły języki C i C++.

Co to są języki bezpieczne dla pamięci?

Na początek wyjaśnienie: to nie język może mieć błędy w zabezpieczeniach pamięci, a źle napisany program. Żaden z wymienionych w opracowaniu języków sam z siebie nie spowoduje błędów w działaniu aplikacji. Natomiast istnieją języki programowania, które wspierają zarządzanie pamięcią i tym samym zdejmują z barków programisty ciężar odpowiedzialności.

To rozwiązanie ma jednak swoje wady i zalety. Dlaczego w raporcie wyszczególniono C i C++? Spytałam o to Ewelinę Skowron, engineer developer pracującą przy aplikacjach medycznych, czyli wymagających dużej dbałości o bezpieczeństwo i spełniających wyśrubowane standardy, by przejść certyfikację.

– C i C++ dają możliwość manualnego alokowania i delokowania pamięci. W związku z czym odpowiedzialność za dobre zarządzanie pamięcią leży na programiście – tłumaczy Skowron. – Wymienione języki są uważane za memory-unsafe, bo nie ma gwarancji, iż ta pamięć będzie dobrze alokowana i zwalniana na poziomie języka. Nie ma automatu, który to robi. W efekcie, o ile w trakcie procesu wytwarzania systemu wkradnie się błąd i nie zostanie on wyłapany, powstaną luki pamięci.

Złożone problemy zarządzania pamięcią aplikacji

Jakie języki w takim razie uważa się za bezpieczne i co je odróżnia od wspomnianego C i C++? Między innymi garbage collector (śmieciarka). Zadaniem garbage collectora jest automatyczne zwalnianie pamięci, co uniemożliwi powstanie wycieków prowadzących do cyberataków. Współcześnie za bezpieczne języki uznaje się C#, GO, Java, Ruby, Swift, Rust. Jednak brak kontroli nad pamięcią aplikacji może być równie poważnym problemem, co jej wyciek.

– Każdy kij ma dwa końce – powiedziała Homodigital.pl Skowron. – Są systemy, gdzie bezpieczeństwo pamięci jest bardzo ważne przez ze względu na przechowywane tam dane. Systemy operacyjne przechowują bardzo dużo wrażliwych danych, podczas gdy wyciek informacji z termometru, który mierzy temperaturę, w większości przypadków nie zrobi żadnego problemu.

Czy popularność C/C++ może stanowić problem?

Języki C i C++ są wciąż popularne. Zaledwie dziesięć lat temu, gdy sama studiowałam informatykę, wykorzystywałam oba z nich do wykonywania licznych projektów. Pamiętam ze studiów, iż manualne zarządzanie pamięcią uznawane było jedną z głównych zalet tych języków. Współcześnie warto też wspomnieć, iż C i C++ uznawane są za jedne z trudniejszych języków spośród tych najbardziej popularnych. Wszystko właśnie za sprawą manualnego alokowania i zwalniania pamięci i poziomu dbałości o kod.

Te dwa języki nie wybaczają błędów. A cyberprzestępcy na tym korzystają. Według Google około 70% poważnych błędów bezpieczeństwa to problemy związane z bezpieczeństwem pamięci. Luki systemu są bardzo powszechne: Codebase z lukami wysokiego ryzyka – ich liczba rośnie!. A popularność C++ zwiększa się.

W 2022 roku ten język zdobył prestiżową nagrodę „Tiobe Programming Language of the Year 2022”. Jego ogromną zaletą jest możliwość pracy ze złożonymi systemami i tworzenia aplikacji o różnorodnych zastosowaniach. To język uniwersalnego użycia, który można spotkać zarówno w osobistym komputerze, jak i pralce czy lodówce.

Czy Polscy programiści są gotowi na rezygnację z C++ i C?

Zalecenia Białego Domu nie dotyczą Polaków, ale trendy w dużej mierze przychodzą do nas ze Stanów. Problem dotyczy też wielu krajowych programistów, pracujących zdalnie dla amerykańskich firm. Podobno cyberbezpieczeństwo jest priorytetem polityki cyfrowej nowej władzy. Czy jesteśmy jednak gotowi, by zrezygnować z języków wymagających manualnego zarządzania pamięcią? A może to nie w językach tkwi największy problem?

– Migracja systemów nigdy nie jest łatwa, decyzje o doborze technologii są trudne, a prawdziwą złożoność problemu rozumie tylko zespół, który mierzy się z konkretnym scenariuszem. To oni są w stanie podjąć najlepsze decyzje dla danego systemu w danym momencie. Dlatego też nie można wnioskować, iż migracja na konkretny język rozwiąże wszystkie problemy, wszystkich systemów i jest najlepszym rozwiązaniem do wprowadzenia jak najszybciej – podsumowuje Skowron.

Autor grafiki: alexdndz

Idź do oryginalnego materiału