[NEW] Szukaj pracy anonimowo — sprawdź szczegóły
Close
Nowe standardy bezpieczeństwa w C++ – Stroustrup chce zachować konkurencyjność języka

Nowe standardy bezpieczeństwa w C++ – Stroustrup chce zachować konkurencyjność języka

Bjarne Stroustrup, twórca języka C++, wezwał komitet WG21, odpowiedzialny za rozwój standardów C++, do podjęcia działań mających na celu utrzymanie konkurencyjności języka w kontekście rosnącej popularności języków zapewniających bezpieczne zarządzanie pamięcią. Według niego C++ już teraz oferuje wszystkie mechanizmy potrzebne do bezpieczeństwa pamięci, ale brakuje standaryzowanych narzędzi, które gwarantowałyby programowanie wyłącznie w bezpiecznym podzbiorze języka.

Presja na języki z bezpiecznym zarządzaniem pamięcią

Zdaniem Stroustrupa czas na działanie jest ograniczony. Do 2026 roku producenci oprogramowania powinni przedstawić plan wdrożenia technologii minimalizujących ryzyko błędów pamięciowych lub przejścia na języki, które natywnie oferują takie zabezpieczenia. Zalecenie to pochodzi od amerykańskiej Agencji ds. Cyberbezpieczeństwa i Infrastruktury (CISA) oraz FBI, które intensyfikują działania na rzecz zwiększenia bezpieczeństwa kodu.

Stroustrup podkreśla, że standaryzacja narzędzi ułatwiających bezpieczne programowanie w C++ pozwoli zachować zainteresowanie językiem, szczególnie wśród programistów korzystających obecnie z C i C++, którzy w przeciwnym razie mogliby zostać zmuszeni do migracji na inne technologie. Dzięki temu projekty w języku C mogłyby zostać stopniowo przeniesione do C++, a następnie przekształcone na bezpieczne konstrukcje zgodnie z wytycznymi C++ Core Guidelines.

Standardowe profile bezpieczeństwa dla C++

Aby poprawić bezpieczeństwo kodu, Stroustrup proponuje wprowadzenie systemu profili C++, które nakładałyby dodatkowe wymagania na kod źródłowy. Mechanizm ten byłby podobny do używania flag "-Wall" i "-Wextra", lecz zamiast ostrzeżeń, blokowałby kompilację kodu niespełniającego określonych zasad.

Przykłady profili, które mogłyby zostać wdrożone:

  • type – wymaga inicjalizacji każdego obiektu, zabrania rzutowania typów.
  • lifetime – blokuje odwołania do zwolnionej pamięci, operacje na surowych wskaźnikach i jawne użycie new/delete.
  • bounds – wymaga sprawdzania zakresów dla wskaźników, zabrania operacji arytmetycznych na wskaźnikach.
  • arithmetic – uniemożliwia przepełnienia liczb całkowitych i niebezpieczne konwersje między typami.
  • concurrency – eliminuje operacje prowadzące do zakleszczeń i wyścigów danych.
  • RAII (Resource Acquisition Is Initialization) – wymaga ścisłego zarządzania zasobami.

Profile mogłyby być stosowane na poziomie projektu, plików lub nawet poszczególnych konstrukcji kodu. Przykładowo:

  • [[profile::enforce(type)]] – wymusza stosowanie bezpiecznych typów w całym pliku.
  • [profile::suppress(lifetime)] this->succ = this->succ->succ; – wyłącza kontrolę nad czasem życia obiektów w danym fragmencie kodu.

Bezpieczny kod w C++ zamiast migracji do innych języków

Zastosowanie profili pozwoliłoby na stopniowe eliminowanie niebezpiecznych praktyk w kodzie, takich jak surowe wskaźniki, rzutowania typów czy niejawne odwołania do nieinicjalizowanych obiektów. Przykładowo, zamiast surowych wskaźników można by stosować std::unique_ptr i std::shared_ptr, a klasyczne iteracje po tablicach zastępować zakresową pętlą for (type variable : vector).

Główne gwarancje bezpieczeństwa, które miałyby wynikać z nowych profili:

  • Każdy obiekt jest poprawnie zainicjalizowany i zwolniony.
  • Każdy wskaźnik wskazuje na poprawny obiekt lub ma wartość null.
  • Każda operacja na wskaźnikach i indeksach tablic odbywa się w dozwolonym zakresie.

Propozycja Stroustrupa to próba ratowania pozycji C++ w obliczu presji na migrację do języków z bezpiecznym zarządzaniem pamięcią.

Czy komitet WG21 zdecyduje się na tak radykalny krok?

Avatar
Mar 20

Google przejmuje Wiz za 32 mld dolarów – największa transakcja w historii firmy

Google ogłosiło zawarcie umowy na przejęcie Wiz, amerykańskiego startupu zajmującego się cyberbezpieczeństwem chmurowym. Wartość transakcji wyniesie 32 miliardy dolarów i zostanie w całości sfinalizowana w gotówce. Po zamknięciu transakcji Wiz stanie się częścią Google Cloud, co umożliwi dalszy rozwój technologii zabezpieczeń chmurowych oraz rozwiązań multicloud – podejścia pozwalającego organizacjom korzystać z wielu różnych dostawców chmury jednocześnie.
0
Sty 10

Microsoft redukuje zatrudnienie, koncentrując się na niskiej produktywności

Microsoft poinformował o planach dotyczących kolejnej rundy zwolnień, skupiając się na pracownikach o niskiej produktywności. Według źródeł dobrze poinformowanych o sytuacji decyzja ta wynika z dążenia firmy do wzmocnienia zarządzania personelem. Rzecznik Microsoft potwierdził planowane zwolnienia, ale odmówił ujawnienia liczby pracowników, których dotyczą.
0
Maj 28

Apple szykuje największy redesign wszystkich swoich systemów operacyjnych

Tegoroczna konferencja WWDC, która rozpocznie się 9 czerwca, zapowiada się na wyjątkowo intensywną. Według dziennikarza Bloomberga, Marka Gurmana, Apple planuje poważne odświeżenie interfejsu wszystkich swoich systemów operacyjnych — od iOS po tvOS.
0

Ta strona używa plików cookie, aby zapewnić Ci lepsze wrażenia podczas przeglądania.

Dowiedz się więcej o tym, jak używamy plików cookie i jak zmienić preferencje dotyczące plików cookie w naszej Polityka plików cookie.

Zmień ustawienia
Zapisz Akceptuj wszystkie cookies