Schon seit Mitte der 90er Jahre sind die Betriebssystemhersteller dabei, bei allen APIs Puffer vor einem Überlauf zu sichern. Wie man jedoch immer wieder in Security-Bulletins nachlesen kann, werden auch heute noch regelmäßig Sicherheitslücken gefunden, die einen Pufferüberlauf ausnutzen. Die Häufigkeit von Pufferüberläufen in Sicherheitswarnungen nimmt zwar ab, dennoch kann man nicht von einer Entwarnung reden.
Managed Code lässt keine Pufferüberläufe zu. Zu jedem Objekt gehört seine Länge in Bytes. Beim Arbeiten mit Objekten wird jedes Mal überprüft, ob die Längenbeschränkung eingehalten wird, selbst wenn das nicht nötig wäre. Das führt dazu, dass Managed Code zum Teil deutlich langsamer ist als Unmanaged Code. So ist zum Beispiel der folgende C-Code als sicher einzustufen:
const char* const yesno[2] = {"No", "Yes"];
char answer[4];
int condition;
if ( ... ) condition = 1; else condition = 0;
strcpy(answer, yesno[condition]);
Die grundsätzlich unsichere Funktion strcpy kann in diesem Fall verwendet werden, weil sichergestellt ist, das answer nur Yes oder No annehmen kann. Dafür ist answer mit vier Bytes, nämlich drei Zeichen und dem Nullterminator, ausreichend dimensioniert. In einer Managed-Code-Umgebung bekommt der obige Code jedoch in etwa folgendes Äquivalent in C:
const char* const yesno[2] = {"No", "Yes"];
const int maxlen = 4;
char answer[maxlen];
int condition;
if ( ... ) condition = 1; else condition = 0;
if (strlen(yesno[condition]) >= maxlen )
errorHandler();
else
strcpy(answer, yesno[condition]);
Diesen zusätzlichen Code kann ein Optimizer meist nicht ganz ausmerzen. Das gilt insbesondere dann, wenn die Definition des String-Arrays yesno in einem anderen Modul steht als der Rest des Beispielcodes.
Anders als oft angenommen ist Managed Code nicht deswegen langsamer, weil der Sourcecode zunächst in einen Bytecode und erst später auf dem Zielsystem in Native Code übersetzt wird. Im Gegenteil, ein Just-In-Time-Compiler kann spezifische Befehlssatzerweiterungen, zum Beispiel SSE2, SSE4.2 oder 3DNow, ausnutzen. Die geringere Ausführungsgeschwindigkeit kommt fast ausschließlich von den redundanten Überprüfungen.
Kontinuierliche Content Produktion und Markenaufbau sind essentieller Pfeiler von langfristigen Unternehmenserfolg. Das ist mittlerweile auch…
KI-Funktionen beschleunigen die Erholung des PC-Markts. Der Nettogewinn legt um 44 Prozent zu, der Umsatz…
Googles App-Entwickler-Kit dient der Tarnung des schädlichen Codes. Der Sicherheitsanbieter Jamf hält die Schadsoftware für…
Ausgeklügelte Phishing-Kampagne verwendet eine weiterentwickelte Version der Rhadamanthys-Stealer-Malware.
Die EU-Kommission kritisiert die Verknüpfung von Facebook und dem hauseigenen Online-Kleinanzeigendienst. Sie sieht darin einen…
Fast zwei Drittel halten jedoch eine Umsetzung aller Vorgaben von NIS 2 bis Jahresende für…