{"id":29583,"date":"2022-12-09T16:04:56","date_gmt":"2022-12-09T14:04:56","guid":{"rendered":"https:\/\/www.kaspersky.de\/blog\/?p=29583"},"modified":"2022-12-09T16:04:56","modified_gmt":"2022-12-09T14:04:56","slug":"the-long-road-to-memory-safety","status":"publish","type":"post","link":"https:\/\/www.kaspersky.de\/blog\/the-long-road-to-memory-safety\/29583\/","title":{"rendered":"Der lange Weg zum sicheren Umgang mit RAM"},"content":{"rendered":"<p>Im November 2022 ver\u00f6ffentlichte die National Security Agency der Vereinigten Staaten ein <a href=\"https:\/\/www.nsa.gov\/Press-Room\/News-Highlights\/Article\/Article\/3215760\/nsa-releases-guidance-on-how-to-protect-against-software-memory-safety-issues\/\" target=\"_blank\" rel=\"noopener nofollow\">Bulletin<\/a>, das ein klares Statement zum sicheren Umgang mit Arbeitsspeichern (RAM) setzt. Werfen wir einen Blick auf <a href=\"https:\/\/www.nsa.gov\/Press-Room\/Cybersecurity-Advisories-Guidance\/\" target=\"_blank\" rel=\"noopener nofollow\">andere<\/a> NSA-Bulletins, stellen wir fest, dass diese sich in den meisten F\u00e4llen auf die Datenverschl\u00fcsselung oder den Schutz von Produktionsschleifen und andere organisatorische Fragen konzentrieren. Dass sich die NSA direkt an Softwareentwickler wendet, ist recht ungew\u00f6hnlich. Deshalb scheint es sich in diesem Ausnahmefall um ein besonders wichtiges Thema zu handeln. Im Grunde genommen fordert die NSA Softwareentwickler dazu auf, Programmiersprachen zu verwenden, deren Architektur eine h\u00f6here Sicherheit bei der Speicher-Arbeit bietet. Der Einsatz von C und C++ soll vor diesem Hintergrund vermieden werden. Dar\u00fcber hinaus wird empfohlen, eine Reihe von Ma\u00dfnahmen zu ergreifen, um Software auf Schwachstellen zu testen und deren Exploit zu verhindern.<\/p>\n<p>F\u00fcr Programmierer sind diese Dinge offensichtlich, und die Forderungen der NSA richten sich nicht direkt an sie, sondern an Unternehmensleitungen und -Vertreter. Lassen Sie uns, ohne auf technische Details einzugehen, die vorgebrachten Argumente analysieren.<\/p>\n<h2>Speichersicherheit<\/h2>\n<p>Werfen wir zun\u00e4chst einen Blick auf unseren j\u00fcngsten <a href=\"https:\/\/securelist.com\/it-threat-evolution-in-q3-2022-non-mobile-statistics\/107963\/\" target=\"_blank\" rel=\"noopener\">Bericht<\/a> \u00fcber die Bedrohungsentwicklung im 3. Quartal 2022 und die Schwachstellen, die am h\u00e4ufigsten f\u00fcr Cyberangriffe genutzt werden. An erster Stelle steht nach wie vor die 2018 entdeckte <a href=\"https:\/\/msrc.microsoft.com\/update-guide\/en-US\/vulnerability\/CVE-2018-0802\" target=\"_blank\" rel=\"noopener nofollow\">Schwachstelle CVE-2018-0802<\/a> in der Komponente Equation Editor der Microsoft Office-Suite. Sie wird durch eine fehlerhafte Datenverarbeitung im RAM-Speicher verursacht, wodurch das \u00d6ffnen eines b\u00f6sartigen Microsoft Word-Dokuments zur Ausf\u00fchrung von beliebigem Code f\u00fchren kann. Eine weitere bei Cyberkriminellen beliebte Sicherheitsl\u00fccke ist <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2022-2294\" target=\"_blank\" rel=\"noopener nofollow\">CVE-2022-2294<\/a> in der WebRTC-Komponente des Google Chrome-Browsers. Sie f\u00fchrt aufgrund eines <a href=\"https:\/\/encyclopedia.kaspersky.com\/glossary\/buffer-overflow\/\" target=\"_blank\" rel=\"noopener\">Puffer\u00fcberlauffehlers<\/a> zur Ausf\u00fchrung von beliebigem Code. Eine weitere Sicherheitsl\u00fccke \u2013 <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2022-2624\" target=\"_blank\" rel=\"noopener nofollow\">CVE-2022-2624<\/a> \u2013 im PDF-Viewer-Tool von Chrome kann ebenfalls zu einem Puffer\u00fcberlauf f\u00fchren.<\/p>\n<p>Nat\u00fcrlich sind nicht alle Software-Schwachstellen auf eine unzureichend gesicherte Handhabung des Arbeitsspeichers zur\u00fcckzuf\u00fchren, aber viele. Das NSA-Bulletin zitiert <a href=\"https:\/\/github.com\/Microsoft\/MSRC-Security-Research\/blob\/master\/presentations\/2019_02_BlueHatIL\/2019_01%20-%20BlueHatIL%20-%20Trends,%20challenge,%20and%20shifts%20in%20software%20vulnerability%20mitigation.pdf\" target=\"_blank\" rel=\"noopener nofollow\">Statistiken<\/a> von Microsoft, wonach Fehler bei der Speicherverwaltung 70 % der entdeckten Schwachstellen verursachen.<\/p>\n<div id=\"attachment_29584\" style=\"width: 2010px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-29584\" class=\"wp-image-29584 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/96\/2022\/12\/09155715\/the-long-road-to-memory-safety-statistics.jpg\" alt=\"Microsoft-Statistiken zufolge sind zwei Drittel der Sicherheitsl\u00fccken Speicher-Bugs zu verschulden. Quelle.\" width=\"2000\" height=\"1125\"><p id=\"caption-attachment-29584\" class=\"wp-caption-text\">Microsoft-Statistiken zufolge sind zwei Drittel der Sicherheitsl\u00fccken Speicher-Bugs zu verschulden. Quelle.<\/p><\/div>\n<p>\u00a0<\/p>\n<p>Aber warum passiert so etwas? Wenn Speicherlecks ein so ernsthaftes Problem darstellen, warum h\u00f6ren wir dann nicht einfach auf, anf\u00e4lligen Code zu schreiben? Die Wurzel des Problems liegt in der Verwendung der Programmiersprachen C und C++. Ihre Architektur bietet Entwicklern viel Freiheit bei der RAM-Arbeit. Doch Freiheiten bringen immer auch Verantwortung mit sich. C\/C++-Programmierer m\u00fcssen selbst Mechanismen f\u00fcr das sichere Schreiben und Lesen von Daten implementieren. Andere hochrangige Programmiersprachen wie C#, Rust, Go und andere k\u00fcmmern sich jedoch automatisch darum. Der Punkt ist, dass beim Kompilieren des Programmquellcodes die Mittel f\u00fcr eine sichere Speicherhandhabung automatisch eingef\u00fchrt werden und die Entwickler keine Zeit mehr daf\u00fcr aufwenden m\u00fcssen. Um die Sicherheit zu verbessern, ergreift Rust zum Beispiel noch mehr Sicherheitsma\u00dfnahmen; dazu z\u00e4hlt unter anderem die Kompilierungsparalyse von potenziell gef\u00e4hrlichem Code und das Anzeigen von Fehlern f\u00fcr Programmierer.<\/p>\n<p>Nat\u00fcrlich ist es nicht realistisch, einfach auf C\/C++ zu verzichten, solange diese Sprachen f\u00fcr bestimmte Aufgaben unverzichtbar bleiben, beispielsweise wenn Code f\u00fcr MCUs oder andere Ger\u00e4te mit stark eingeschr\u00e4nkter Rechenleistung und Speichergr\u00f6\u00dfe ben\u00f6tigt wird. Unter sonst gleichen Bedingungen k\u00f6nnen hochrangigere Programmiersprachen des Weiteren zur Entwicklung von ressourcenintensiveren Programmen f\u00fchren. Doch die allgemeinen Bedrohungsstatistiken zeigen, dass Angriffe meist auf gew\u00f6hnliche Anwendersoftware (wie Browser und Texteditoren) abzielen, die auf sehr leistungsf\u00e4higen Computern l\u00e4uft (im Vergleich zu MCUs).<\/p>\n<h2>Der Wechsel zu einer neuen Programmiersprache ist nicht ganz leicht<\/h2>\n<p>Dessen ist sich die NSA bewusst. Eine gro\u00dfe Datenbank mit Software, die in einer \u201eunsicheren\u201c Programmiersprache geschrieben wurde, kann nicht \u00fcber Nacht in eine andere Sprache portiert werden. Selbst wenn es darum geht, ein Softwareprodukt von Grund auf neu zu schreiben, kann es durchaus ein etabliertes Team, eine Infrastruktur und Entwicklungsmethoden f\u00fcr eine bestimmte Programmiersprache geben.<\/p>\n<p>Zum Vergleich: Stellen Sie sich vor, Sie m\u00fcssten aus Ihrem Haus ausziehen, nur weil es alt ist. Sie wissen jedoch, dass das Geb\u00e4ude absolut massiv ist und nur im Fall eines starken Erdbebens einst\u00fcrzen w\u00fcrde. Dazu kommt, dass Sie selbstverst\u00e4ndlich daran gew\u00f6hnt sind, dort zu leben \u2013 schlie\u00dflich ist es Ihr Zuhause. In einem <a href=\"https:\/\/security.googleblog.com\/2021\/09\/an-update-on-memory-safety-in-chrome.html\" target=\"_blank\" rel=\"noopener nofollow\">Beitrag<\/a> stellt das Entwicklerteam von Google Chrome klar, dass es derzeit nicht m\u00f6glich ist, auf eine andere Programmiersprache mit integriertem Schutz (in diesem Fall Rust) umzusteigen. Dies k\u00f6nnte in Zukunft m\u00f6glich werden. Aber im Hier und Jetzt ist eine andere L\u00f6sung erforderlich.<\/p>\n<p>Im selben Beitrag der Google Chrome-Entwickler wird auch erkl\u00e4rt, warum man die Sicherheit von C\/C++-Code nicht grundlegend \u00e4ndern kann. Diese Programmiersprachen wurden schlichtweg nicht daf\u00fcr entwickelt, alle Kompilierungsprobleme auf einen Schlag zu l\u00f6sen. Aus diesem Grund werden im NSA-Bulletin zwei Alternativma\u00dfnahmen genannt:<\/p>\n<ul>\n<li>Die Pr\u00fcfung des Codes auf potenzielle Schwachstellen mit dynamischen und statischen Analysetechniken;<\/li>\n<li>Der Einsatz von Funktionen, die den Exploit von fehlerhaftem Code vorbeugen.<\/li>\n<\/ul>\n<h2>Die Herausforderungen einer Umstellung<\/h2>\n<p>Im Gro\u00dfen und Ganzen stimmen Tech-Experten mit der Meinung der NSA \u00fcberein. Beim \u201eWie?\u201c in Bezug auf den \u00dcbergang zu hochrangigeren Programmiersprachen k\u00f6nnen die Meinungen jedoch stark auseinandergehen, wenn sich die Notwendigkeit daf\u00fcr unter anderem aus Sicherheitsanforderungen ergibt. Zun\u00e4chst muss man sich dar\u00fcber im Klaren sein, dass eine solche Umstellung viele Jahre in Anspruch nehmen kann und nicht von jetzt auf gleich passiert. Dar\u00fcber hinaus hat eine solche Entwicklung ihren Preis \u2013 den nicht jedes Unternehmen bereit ist zu zahlen. Das Problem beim Umgang mit unsicherem Arbeitsspeicher in Programmiersprachen mit niedrigem Abstraktionslevel ist systembedingt. Der Schrei nach einer radikalen L\u00f6sung ist notwendig, dennoch ist nicht zu erwarten, dass morgen jeder auf die Entwicklung in C#, Go, Java, Ruby, Rust oder Swift umsteigt. Genauso wenig wie man eine ganze Stadt oder ein ganzes Land dazu bringen kann, von heute auf morgen zum Vegetarismus oder einer anderen extremen Ver\u00e4nderung \u00fcberzugehen.<\/p>\n<p>Aus Unternehmenssicht ist es sinnvoll, sowohl in neue Technologien zu investieren (durch die Entwicklung von F\u00e4higkeiten und die Einstellung erfahrener Fachleute) als auch den Schutz bestehender Technologien zu maximieren. Im Rahmen der Softwareentwicklung k\u00f6nnen zudem neue Programmiersprachen und Technologien zum Testen von vorhandenem Code ber\u00fccksichtigt werden. Alle anderen Unternehmen k\u00f6nnen unterst\u00fctzend handeln, indem sie beispielsweise in neue Technologien zum Schutz vor Cyberangriffen investieren, aber auch die St\u00e4rke ihrer bestehenden Infrastruktur regelm\u00e4\u00dfig \u00fcberpr\u00fcfen. Mit anderen Worten: Ein umfassender Sicherheitsansatz ist optimal und wird es auch noch lange bleiben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wir analysieren die Verbindung zwischen Software-Sicherheit und Datenlecks beim Umgang mit RAM.<\/p>\n","protected":false},"author":665,"featured_media":29585,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1848,3107,3108],"tags":[4020,1498],"class_list":{"0":"post-29583","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-enterprise","9":"category-smb","10":"tag-ram","11":"tag-schwachstellen"},"hreflang":[{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/the-long-road-to-memory-safety\/29583\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/the-long-road-to-memory-safety\/24957\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/the-long-road-to-memory-safety\/20453\/"},{"hreflang":"en-us","url":"https:\/\/usa.kaspersky.com\/blog\/the-long-road-to-memory-safety\/27517\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/the-long-road-to-memory-safety\/25287\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/the-long-road-to-memory-safety\/25609\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/the-long-road-to-memory-safety\/28167\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/the-long-road-to-memory-safety\/34357\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/the-long-road-to-memory-safety\/46511\/"},{"hreflang":"fr","url":"https:\/\/www.kaspersky.fr\/blog\/the-long-road-to-memory-safety\/19876\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/the-long-road-to-memory-safety\/20461\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/the-long-road-to-memory-safety\/25649\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/the-long-road-to-memory-safety\/31334\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/the-long-road-to-memory-safety\/31043\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.de\/blog\/tag\/schwachstellen\/","name":"Schwachstellen"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/29583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/users\/665"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/comments?post=29583"}],"version-history":[{"count":1,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/29583\/revisions"}],"predecessor-version":[{"id":29586,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/29583\/revisions\/29586"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/media\/29585"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/media?parent=29583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/categories?post=29583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/tags?post=29583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}