{"id":4107,"date":"2025-02-12T11:36:47","date_gmt":"2025-02-12T10:36:47","guid":{"rendered":"https:\/\/www.capri-soft.de\/blog\/?p=4107"},"modified":"2025-02-12T11:48:10","modified_gmt":"2025-02-12T10:48:10","slug":"wie-funktionieren-buffer-overflows-und-oder-heap-overflows","status":"publish","type":"post","link":"https:\/\/www.capri-soft.de\/blog\/?p=4107","title":{"rendered":"Wie funktionieren Buffer Overflows und\/oder Heap Overflows?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Intention<\/h2>\n\n\n\n<p>Vor einer aktuell kritischen Sicherheitsl\u00fccke von \u00e4lteren Microsoft Server Versionen, Windows 11 und Windows 10 wird in einem <a href=\"https:\/\/www.heise.de\/news\/Patchday-Microsoft-Angreifer-attackieren-Windows-und-loeschen-Daten-10279178.html\">aktuellen Artikel auf heise.de<\/a> gewarnt.<\/p>\n\n\n\n<p>Diese offen gelegten Schwachstellen \/ Sicherheitsl\u00fccken werden <a href=\"https:\/\/msrc.microsoft.com\/update-guide\/vulnerability\">in einer \u00f6ffentlichen Online-Datenbank<\/a> aufgelistet:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cwe.mitre.org\/data\/definitions\/122.html\">https:\/\/cwe.mitre.org\/data\/definitions\/122.html<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/msrc.microsoft.com\/update-guide\/vulnerability\/CVE-2025-21391\">https:\/\/msrc.microsoft.com\/update-guide\/vulnerability\/CVE-2025-21391<\/a> <\/li>\n<\/ul>\n\n\n\n<p>Konkret handelt es sich dabei um die Ausnutzung von Heap-Overflows f\u00fcr das Einschleusen von Schadcode \/ sch\u00e4dlichem Code. In diesem Artikel m\u00f6chte ich darauf eingehen, wie solche Heap-Overflows funktionieren, indem ich die Fragen beantworte, die sich mir vorher gestellt hatten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist der &#8222;Heap&#8220;, der \u00fcberlaufen kann?<\/h2>\n\n\n\n<p>Zun\u00e4chst ist eine Abgrenzung dar\u00fcber n\u00f6tig, was ein Heap eigentlich ist. In der Informatik gibt es zwei verschiedene Konzepte, die beide als &#8222;Heap&#8220; bezeichnet werden:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Heap im Speicher-Management<\/strong>: Dies bezieht sich auf den <strong><em>Bereich des Speichers, der f\u00fcr dynamische Speicherzuweisungen verwendet wird<\/em><\/strong>. Wenn Sie&nbsp;<code>malloc()<\/code>&nbsp;oder \u00e4hnliche Funktionen verwenden, wird der Speicher aus diesem Heap zugewiesen. Ein Heap Overflow tritt auf, wenn mehr Daten in einen Speicherbereich geschrieben werden, als daf\u00fcr vorgesehen ist, was zu einer Besch\u00e4digung des Speichers f\u00fchren kann.<\/li>\n\n\n\n<li><strong>Heap als Datenstruktur<\/strong>: Wir haben in &#8222;Algorithmen und Datenstrukturen&#8220; ebenfalls \u00fcber Heaps gesprochen. Dies ist eine spezielle Baumstruktur, die bestimmte Eigenschaften erf\u00fcllt. Zum Beispiel ist ein Max-Heap ein bin\u00e4rer Baum, bei dem jeder Elternknoten gr\u00f6\u00dfer oder gleich seinen Kindknoten ist. Diese Art von Heap wird h\u00e4ufig in Algorithmen wie Heapsort oder f\u00fcr Priorit\u00e4tswarteschlangen verwendet.<\/li>\n<\/ol>\n\n\n\n<p>Im Nachfolgenden beziehen wir uns auf<strong> Definition 1<\/strong>, da der Heap im dynamisch anforderbaren Speicherbereich liegt. Der Prozess kann also von diesem Bereich neuen Speicher f\u00fcr sich anfordern. Der Heap des Prozessspeichers beschr\u00e4nkt sich bei modernen Betriebssystemen auf den ausgef\u00fchrten Prozess, was bedeutet dass ein Prozess nicht auf den Prozessspeichers eines anderen Prozesses zugreifen kann. Bei fr\u00fcheren Betriebssystemen wie beispielsweise MS DOS war dies noch nicht der Fall, da man hier z.B. direkt in den Bildwiederholspeicher Pixel in einer Farbe durch Speichermanipulation setzen konnte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ist die in Definition 1 genannte Besch\u00e4digung physisch?<\/h2>\n\n\n\n<p>Nein, die Besch\u00e4digung bei einem Heap Overflow ist nicht physisch. Sie betrifft den Speicherbereich des Computers und f\u00fchrt zu einer&nbsp;<strong>logischen Besch\u00e4digung<\/strong>&nbsp;der Daten. Das bedeutet, dass die Daten im Speicher durcheinandergebracht oder \u00fcberschrieben werden, was zu Programmabst\u00fcrzen, unerwartetem Verhalten oder Sicherheitsl\u00fccken f\u00fchren kann. Physische Hardware wird dabei nicht besch\u00e4digt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gibt es ein Beispiel, wie ein Heap Overflow zu einer Sicherheitsl\u00fccke f\u00fchren kann?<\/h2>\n\n\n\n<p>Stellen wir uns vor, ein Programm verwendet die Funktion&nbsp;<code>malloc()<\/code>, um Speicher f\u00fcr Benutzereingaben zu reservieren, \u00fcberpr\u00fcft jedoch nicht, ob die Eingabe die Gr\u00f6\u00dfe des zugewiesenen Speichers \u00fcberschreitet. Ein Angreifer k\u00f6nnte dann eine \u00fcberm\u00e4\u00dfig gro\u00dfe Eingabe senden, die mehr Speicherplatz ben\u00f6tigt, als zugewiesen wurde. Dies f\u00fchrt dazu, dass benachbarte Speicherbereiche \u00fcberschrieben werden.<\/p>\n\n\n\n<p>Ein konkretes Beispiel ist der&nbsp;<strong>Heap Overflow Angriff auf den Microsoft Internet Explorer<\/strong>&nbsp;im Jahr 2014. Angreifer nutzten eine Schwachstelle aus, bei der sie durch gezielte Manipulation des Heaps die <strong><em>Kontrolle \u00fcber den Programmfluss<\/em><\/strong> erlangen konnten. Sie \u00fcberschrieben kritische Datenstrukturen im Speicher und f\u00fchrten so sch\u00e4dlichen Code aus<\/p>\n\n\n\n<p>Solche Angriffe k\u00f6nnen schwerwiegende Folgen haben, einschlie\u00dflich Datenverlust, unbefugtem Zugriff auf Systeme und der Ausf\u00fchrung von Schadsoftware.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie liegen diese Kontrollstrukturen im Speicher vor? <\/h2>\n\n\n\n<p>Kontrollstrukturen wie Schleifen, Bedingungen und Funktionsaufrufe werden im Speicher durch den Programmcode und die zugeh\u00f6rigen Datenstrukturen repr\u00e4sentiert. Hier ist eine kurze \u00dcbersicht, wie sie im Speicher organisiert sind:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Programmcode<\/strong>: Der eigentliche Code der Kontrollstrukturen wird im Textsegment des Speichers abgelegt. Dies umfasst die Anweisungen, die der Prozessor ausf\u00fchrt.<\/li>\n\n\n\n<li><strong>Stack<\/strong>: Der Stack-Speicher wird verwendet, um lokale Variablen, Funktionsaufrufe und R\u00fccksprungadressen zu speichern. Wenn eine Funktion aufgerufen wird, werden die Parameter und die R\u00fccksprungadresse auf den Stack gelegt. Bei Schleifen und Bedingungen werden die aktuellen Zust\u00e4nde und Variablen ebenfalls auf dem Stack verwaltet.<\/li>\n\n\n\n<li><strong>Heap<\/strong>: Dynamisch zugewiesene Speicherbereiche, die durch Funktionen wie&nbsp;<code>malloc()<\/code>&nbsp;angefordert werden, befinden sich im Heap. Kontrollstrukturen selbst nutzen den Heap nicht direkt, aber die Daten, die sie verarbeiten, k\u00f6nnen dort gespeichert sein.<\/li>\n<\/ol>\n\n\n\n<p>Ein Beispiel f\u00fcr eine Sicherheitsl\u00fccke durch einen Heap Overflow ist, wenn ein Angreifer den Heap so manipuliert, dass er die Kontrollstrukturen im Speicher \u00fcberschreibt. Dadurch kann der Angreifer den Programmfluss \u00e4ndern und sch\u00e4dlichen Code ausf\u00fchren<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gibt es ein Beispiel, was eine Kontrollstruktur im Heap abspeichern k\u00f6nnte, was dazu f\u00fchrt dass sie manipuliert wird?<\/h2>\n\n\n\n<p>Ja, ein Beispiel f\u00fcr eine Kontrollstruktur, die im Heap gespeichert wird und manipuliert werden kann, sind&nbsp;<strong>Zeiger auf Funktionszeiger<\/strong>&nbsp;innerhalb von Datenstrukturen. Hier ist ein konkretes Szenario:<\/p>\n\n\n\n<p>Stellen wir uns vor, ein Programm verwendet eine Datenstruktur, die einen Funktionszeiger enth\u00e4lt. Dieser Funktionszeiger zeigt auf eine Routine, die aufgerufen wird, wenn bestimmte Bedingungen erf\u00fcllt sind. Wenn ein Heap Overflow auftritt, kann ein Angreifer den Funktionszeiger \u00fcberschreiben und ihn auf eine sch\u00e4dliche Routine umleiten.<\/p>\n\n\n\n<p>Ein Beispiel f\u00fcr einen solchen Angriff ist der&nbsp;<strong>Heap Overflow Angriff auf den iOS-Kernel<\/strong>. In diesem Fall wurde der Heap so manipuliert, dass ein \u00fcberlaufener Speicherbereich mit einem kritischen Datenobjekt kollidierte. Der Angreifer konnte dadurch den Funktionszeiger innerhalb des Datenobjekts \u00fcberschreiben und die Kontrolle \u00fcber den Programmfluss \u00fcbernehmen.<\/p>\n\n\n\n<p>In dem beschriebenen Szenario hat der Angreifer den Funktionszeiger im&nbsp;<strong>Heap-Speicherbereich<\/strong>&nbsp;\u00fcberschrieben. Der Heap wird f\u00fcr dynamische Speicherzuweisungen verwendet, und in diesem Fall wurde ein Funktionszeiger innerhalb einer Datenstruktur im Heap manipuliert. Durch den Heap Overflow konnte der Angreifer den Funktionszeiger so \u00e4ndern, dass er auf sch\u00e4dlichen Code zeigt, anstatt auf die urspr\u00fcnglich vorgesehene Funktion.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wo lag der sch\u00e4dliche Code, auf den der Funktionszeiger umgeschrieben wurde?<\/h2>\n\n\n\n<p>Der sch\u00e4dliche Code, auf den der Funktionszeiger umgeschrieben wurde, kann sich an verschiedenen Stellen im Speicher befinden. H\u00e4ufig wird er jedoch im&nbsp;<strong>Heap<\/strong>&nbsp;oder im&nbsp;<strong>Textsegment<\/strong>&nbsp;des Speichers platziert. <\/p>\n\n\n\n<p>Hier sind die beiden h\u00e4ufigsten Szenarien:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Heap<\/strong>: Der Angreifer kann den sch\u00e4dlichen Code direkt im Heap platzieren, indem er eine \u00fcberm\u00e4\u00dfige Eingabe sendet, die den Heap \u00fcberl\u00e4uft und den Funktionszeiger \u00fcberschreibt. Der Funktionszeiger wird dann auf den sch\u00e4dlichen Code im Heap umgeleitet.<\/li>\n\n\n\n<li><strong>Textsegment<\/strong>: In einigen F\u00e4llen kann der Angreifer den Funktionszeiger so manipulieren, dass er auf bereits vorhandenen sch\u00e4dlichen Code im Textsegment zeigt. Dies kann durch das Einf\u00fcgen von Shellcode in den Speicher erreicht werden, der dann durch den manipulierten Funktionszeiger ausgef\u00fchrt wird<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Kann man sich auf seinem Rechner den Heap anzeigen lassen?<\/h2>\n\n\n\n<p>Es ist m\u00f6glich, den Heap-Speicherinhalt auf seinem Rechner anzuzeigen, allerdings erfordert dies spezielle Tools und Kenntnisse. Hier sind einige Methoden, wie der Heap-Speicher untersucht werden kann:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Debugger<\/strong>: Mit Debuggern wie&nbsp;<strong>GDB<\/strong>&nbsp;(GNU Debugger) oder&nbsp;<strong>WinDbg<\/strong>&nbsp;(Windows Debugger) kann man den Speicher eines laufenden Programms untersuchen. Diese Tools erm\u00f6glichen es dir, den Heap-Speicher zu durchsuchen und zu analysieren.<\/li>\n\n\n\n<li><strong>Heap-Profiler<\/strong>: Tools wie&nbsp;<strong>Valgrind<\/strong>&nbsp;(insbesondere das Modul&nbsp;<strong>Massif<\/strong>) oder&nbsp;<strong>Visual Studio Profiler<\/strong>&nbsp;k\u00f6nnen verwendet werden, um den Heap-Speicher zu profilieren und Speicherlecks sowie Speicher\u00fcberl\u00e4ufe zu identifizieren.<\/li>\n\n\n\n<li><strong>Speicher-Dump-Analyse<\/strong>: Mit einem Speicher-Dump (Abbild des Speichers) eines laufenden Programms erstellen und diesen mit Tools wie&nbsp;<strong>WinDbg<\/strong>&nbsp;oder&nbsp;<strong>GDB<\/strong>&nbsp;analysieren. Dies erm\u00f6glicht, den Zustand des Heaps zu einem bestimmten Zeitpunkt zu untersuchen.<\/li>\n<\/ol>\n\n\n\n<p>Hier ist ein einfaches Beispiel, wie man mit GDB den Heap-Speicher eines Programms untersuchen kannst:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ngdb .\/das_programm\n(gdb) run\n(gdb) info proc mappings\n(gdb) x\/20xw 0xheap_start_address\n\n<\/pre><\/div>\n\n\n<p>In diesem Beispiel ersetzt man<code>.\/das_programm<\/code>&nbsp;durch den Namen des Programms und&nbsp;<code>0xheap_start_address<\/code>&nbsp;durch die Startadresse des Heaps, die aus den Speicherzuordnungen kommt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie findet man eine Benutzereingabe, die zu einem Heap Overflow f\u00fchrt?<\/h2>\n\n\n\n<p>Das Finden einer Benutzereingabe, die zu einem Heap Overflow f\u00fchrt, ist eine komplexe Aufgabe und erfordert ein tiefes Verst\u00e4ndnis des Zielprogramms sowie der Art und Weise, wie es Speicher verwaltet. Hier sind einige Schritte, die oft verwendet werden:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Quellcode-Analyse<\/strong>: Durchsuche den Quellcode des Programms nach Stellen, an denen dynamischer Speicher zugewiesen wird (z.B. durch&nbsp;<code>malloc()<\/code>,&nbsp;<code>calloc()<\/code>,&nbsp;<code>realloc()<\/code>). Achte besonders auf Funktionen, die Benutzereingaben verarbeiten.<\/li>\n\n\n\n<li><strong>Fuzzing<\/strong>: Verwende Fuzzing-Tools, um das Programm mit zuf\u00e4lligen oder speziell gestalteten Eingaben zu testen. Fuzzing kann helfen, Schwachstellen zu finden, indem es das Programm mit einer Vielzahl von Eingaben bombardiert und nach Abst\u00fcrzen oder ungew\u00f6hnlichem Verhalten sucht. Beispiele f\u00fcr Fuzzing-Tools sind&nbsp;<strong>AFL (American Fuzzy Lop)<\/strong>&nbsp;und&nbsp;<strong>LibFuzzer<\/strong>.<\/li>\n\n\n\n<li><strong>Manuelle Tests<\/strong>: Erstelle manuell Eingaben, die die Grenzen der Puffer \u00fcberschreiten k\u00f6nnten. Dies kann durch das Senden von sehr langen Zeichenketten oder durch das Einf\u00fcgen spezieller Zeichenfolgen geschehen, die das Programm m\u00f6glicherweise nicht korrekt verarbeitet.<\/li>\n\n\n\n<li><strong>Debugging<\/strong>: Verwende Debugger wie&nbsp;<strong>GDB<\/strong>&nbsp;oder&nbsp;<strong>WinDbg<\/strong>, um das Programm w\u00e4hrend der Ausf\u00fchrung zu \u00fcberwachen. Setze Breakpoints an kritischen Stellen und beobachte, wie das Programm auf verschiedene Eingaben reagiert. Achte auf Speicher\u00fcberl\u00e4ufe und \u00fcberpr\u00fcfe, ob der Heap besch\u00e4digt wird.<\/li>\n\n\n\n<li><strong>Speicheranalyse-Tools<\/strong>: Nutze Tools wie&nbsp;<strong>Valgrind<\/strong>&nbsp;oder&nbsp;<strong>AddressSanitizer<\/strong>, um Speicherprobleme zu erkennen. Diese Tools k\u00f6nnen helfen, Speicherlecks, \u00dcberl\u00e4ufe und andere Speicherprobleme zu identifizieren.<\/li>\n<\/ol>\n\n\n\n<p>Hier ist ein einfaches Beispiel f\u00fcr Fuzzing mit AFL:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# Installiere AFL\nsudo apt-get install afl\n\n# Instrumentiere das Zielprogramm\nafl-gcc -o zielprogramm zielprogramm.c\n\n# F\u00fchre AFL aus\nafl-fuzz -i input_dir -o output_dir .\/zielprogramm\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Gibt es ein Beispielcode in C oder C++, wie man einen Heap Overflow verursachen kann?<\/h2>\n\n\n\n<p>Dieser Code sollte nur zu Lernzwecken dienen und nicht in einer produktiven Umgebung verwendet werden, da er Sicherheitsrisiken birgt.<\/p>\n\n\n\n<p>Hier ist ein Beispielcode:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n#include &amp;lt;stdio.h&gt;\n#include &amp;lt;stdlib.h&gt;\n#include &amp;lt;string.h&gt;\n\nvoid vulnerable_function(const char *input) {\n    \/\/ Allokiere einen Puffer von 10 Bytes auf dem Heap\n    char *buffer = (char *)malloc(10 * sizeof(char));\n    if (buffer == NULL) {\n        fprintf(stderr, &quot;Speicherzuweisung fehlgeschlagen\\n&quot;);\n        exit(1);\n    }\n\n    \/\/ Kopiere die Eingabe in den Puffer ohne Gr\u00f6\u00dfen\u00fcberpr\u00fcfung\n    strcpy(buffer, input);\n\n    \/\/ Ausgabe des Puffers\n    printf(&quot;Pufferinhalt: %s\\n&quot;, buffer);\n\n    \/\/ Freigabe des Puffers\n    free(buffer);\n}\n\nint main(int argc, char *argv&#x5B;]) {\n    if (argc &amp;lt; 2) {\n        fprintf(stderr, &quot;Verwendung: %s &amp;lt;Eingabe&gt;\\n&quot;, argv&#x5B;0]);\n        return 1;\n    }\n\n    \/\/ Aufruf der anf\u00e4lligen Funktion mit Benutzereingabe\n    vulnerable_function(argv&#x5B;1]);\n\n    return 0;\n}\n\n<\/pre><\/div>\n\n\n<p>In diesem Beispiel wird ein Puffer von 10 Bytes auf dem Heap allokiert. Die Funktion&nbsp;<code>strcpy<\/code>&nbsp;kopiert die Benutzereingabe in diesen Puffer, ohne die Gr\u00f6\u00dfe der Eingabe zu \u00fcberpr\u00fcfen. Wenn die Eingabe l\u00e4nger als 10 Bytes ist, wird der Puffer \u00fcberlaufen, was zu einem Heap Overflow f\u00fchrt.<\/p>\n\n\n\n<p>Mann kann dieses Programm kompilieren und ausf\u00fchren, um das Verhalten zu beobachten:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ngcc -o heap_overflow_example heap_overflow_example.c\n.\/heap_overflow_example &quot;Dies ist eine sehr lange Eingabe, die den Puffer \u00fcberl\u00e4uft&quot;\n<\/pre><\/div>\n\n\n<p>Dies wird zu einem Heap Overflow f\u00fchren und m\u00f6glicherweise das Programm zum Absturz bringen oder unerwartetes Verhalten verursachen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kann dieses Programm auch Speicherbereiche anderer Programme \u00fcberschreiben und diese manipulieren?<\/h2>\n\n\n\n<p>Nein, dieses Programm kann nicht direkt Speicherbereiche anderer Programme \u00fcberschreiben und manipulieren. In modernen Betriebssystemen gibt es Schutzmechanismen, die verhindern, dass ein Programm auf den Speicherbereich eines anderen Programms zugreift. Diese Schutzmechanismen umfassen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Speicherschutz<\/strong>: Betriebssysteme wie Windows, Linux und macOS verwenden Speicherschutzmechanismen, um sicherzustellen, dass jedes Programm nur auf seinen eigenen Speicherbereich zugreifen kann. Versuche, auf den Speicherbereich eines anderen Programms zuzugreifen, f\u00fchren zu einer Speicherzugriffsverletzung (Segmentation Fault) und dem Absturz des Programms.<\/li>\n\n\n\n<li><strong>Adressraum-Layout-Randomisierung (ASLR)<\/strong>: ASLR ist eine Sicherheitsfunktion, die die Speicheradressen von Programmcode, Daten und Bibliotheken zuf\u00e4llig anordnet. Dies erschwert es Angreifern, vorherzusagen, wo sich bestimmte Speicherbereiche befinden, und macht Exploits schwieriger.<\/li>\n\n\n\n<li><strong>Benutzer- und Kernel-Modus<\/strong>: Betriebssysteme trennen den Speicher in Benutzer- und Kernel-Modus. Programme laufen im Benutzermodus und haben keinen direkten Zugriff auf den Kernel-Speicherbereich, was die Sicherheit weiter erh\u00f6ht.<\/li>\n<\/ol>\n\n\n\n<p>Ein Heap Overflow innerhalb eines Programms kann jedoch dazu f\u00fchren, dass das Programm selbst abst\u00fcrzt oder unerwartetes Verhalten zeigt. In einem Szenario, in dem ein Angreifer den Heap Overflow ausnutzt, k\u00f6nnte der Angreifer sch\u00e4dlichen Code innerhalb des betroffenen Programms ausf\u00fchren, aber nicht direkt andere Programme beeinflussen.<\/p>\n<iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fwww.capri-soft.de%2Fblog%2F%3Fp%3D4107&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" style=\"border:none; overflow:hidden; width:450px;margin-top:5px;\"><\/iframe>","protected":false},"excerpt":{"rendered":"<p>Intention Vor einer aktuell kritischen Sicherheitsl\u00fccke von \u00e4lteren Microsoft Server Versionen, Windows 11 und Windows 10 wird in einem aktuellen Artikel auf heise.de gewarnt. Diese offen gelegten Schwachstellen \/ Sicherheitsl\u00fccken werden in einer \u00f6ffentlichen Online-Datenbank aufgelistet: Konkret handelt es sich dabei um die Ausnutzung von Heap-Overflows f\u00fcr das Einschleusen von Schadcode \/ sch\u00e4dlichem Code. In &hellip; <a href=\"https:\/\/www.capri-soft.de\/blog\/?p=4107\" class=\"more-link\"><span class=\"screen-reader-text\">Wie funktionieren Buffer Overflows und\/oder Heap Overflows?<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[516,373],"tags":[520,524,521,522,523,517,518,519],"class_list":["post-4107","post","type-post","status-publish","format-standard","hentry","category-betriebssysteme","category-it-sicherheit-u-cybersecurity","tag-buffer-overflow","tag-c-2","tag-heap-overflow","tag-pufferueberlauf","tag-stack-overflow","tag-verwundbarkeit","tag-vunlerability","tag-windows-server"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4yGeN-14f","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4107"}],"version-history":[{"count":2,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4107\/revisions"}],"predecessor-version":[{"id":4113,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4107\/revisions\/4113"}],"wp:attachment":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}