{"id":38158,"date":"2026-05-08T13:54:15","date_gmt":"2026-05-08T11:54:15","guid":{"rendered":"https:\/\/enginsight.com\/?p=38158"},"modified":"2026-05-08T13:54:16","modified_gmt":"2026-05-08T11:54:16","slug":"copyfail-cve-2026-31431-funktionsweise-erkennung-und-schutzmassnahmen-fuer-linux-systeme","status":"publish","type":"post","link":"https:\/\/enginsight.com\/de\/blog\/copyfail-cve-2026-31431-funktionsweise-erkennung-und-schutzmassnahmen-fuer-linux-systeme\/","title":{"rendered":"CopyFail (CVE-2026-31431): Funktionsweise, Erkennung und Schutzma\u00dfnahmen f\u00fcr Linux-Systeme"},"content":{"rendered":"<p>Am 29. April 2026 wurde die Schwachstelle CVE-2026-31431 mit dem Namen &#x201E;Copy Fail&#x201C; <a href=\"https:\/\/xint.io\/blog\/copy-fail-linux-distributions#the-fix-6\" data-type=\"link\" data-id=\"https:\/\/xint.io\/blog\/copy-fail-linux-distributions#the-fix-6\" target=\"_blank\" rel=\"noopener\">&#xF6;ffentlich bekannt gemacht<\/a>.<\/p>\n\n\n\n<p>Sie betrifft viele Linux-Distributionen mit betroffenen Kernel-Versionen. Der Angriff nutzt hierbei drei Kernel-Komponenten.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Wie-funktioniert-der-Angriff\">Wie funktioniert der Angriff<\/h2>\n\n\n\n<p><code>AF_ALG<\/code> ist eine Socket-basierte Kernel-Schnittstelle f&#xFC;r Kryptografie, &#xFC;ber die unprivilegierte Nutzer kryptografische Operationen wie Verschl&#xFC;sselung und Hashing ausf&#xFC;hren k&#xF6;nnen, ohne Root-Rechte zu ben&#xF6;tigen. &#xDC;ber diese Schnittstelle ist unter anderem auch das Template <code>authencesn<\/code> erreichbar, das mehrere kryptografische Verfahren kombiniert. In diesem befindet sich der Logikfehler. Mithilfe von <code>splice()<\/code> k&#xF6;nnen Daten aus einer Datei ohne Kopieren direkt aus dem Page Cache in den Krypto-Socket &#xFC;bergeben werden, wobei lediglich Referenzen auf die bestehenden Speicherseiten verwendet werden. Durch eine Kernel-Optimierung zeigen Eingabe- und Ausgabepuffer dabei auf dieselben Speicherseiten. Wenn <code>authencesn<\/code> diese Daten verarbeitet, schreibt es aufgrund eines Fehlers vier Bytes au&#xDF;erhalb des vorgesehenen Puffers und damit direkt in den urspr&#xFC;nglichen Speicherbereich zur&#xFC;ck, aus dem die Eingabe stammt.<\/p>\n\n\n\n<p>Durch den Fehler wird einem unprivilegierten lokalen Nutzer erm&#xF6;glicht, einen eingeschr&#xE4;nkt kontrollierbaren 4-Byte-Schreibzugriff in den Page Cache von Dateien auszul&#xF6;sen, f&#xFC;r die der Angreifer Leseberechtigungen besitzt. Der Page Cache ist dabei der Puffer, den der Linux-Kernel zwischen Arbeitsspeicher und Datentr&#xE4;ger nutzt. Liest ein Prozess eine Datei, wird deren Inhalt einmalig in den RAM geladen und dort zwischengespeichert. Genau diese im Speicher liegende Kopie wird durch den Angriff ver&#xE4;ndert, nicht jedoch die Datei auf der Festplatte selbst. Besonders kritisch ist, dass diese &#xC4;nderungen nicht als &#x201E;dirty&#x201C; markiert werden und somit weder vom Writeback-Mechanismus noch von klassischen Integrit&#xE4;tspr&#xFC;fungen erkannt werden. Da der Page Cache systemweit und auch &#xFC;ber Container-Grenzen hinweg geteilt wird, k&#xF6;nnen die manipulierten Daten von anderen Prozessen &#xFC;bernommen werden.<\/p>\n\n\n\n<p>Ein lediglich 732 Byte gro&#xDF;es Python-Skript, das nur Standardbibliotheken nutzt, reicht aus, um diesen Mechanismus auszunutzen und auf praktisch allen g&#xE4;ngigen Linux-Distributionen Root-Rechte zu erlangen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Warum-ist-die-CVE-so-gef&#xE4;hrlich?\"><strong>Warum ist die CVE so gef&#xE4;hrlich?<\/strong><\/h2>\n\n\n\n<p>Der Exploit muss nicht als schadhaftes Programm in Erscheinung treten. Jede Anwendung, jedes automatisierte Script, jedes kompromittierte Paket-Update kann ihn heimlich mittransportieren. Der Nutzer sieht dabei eine normal laufende Software. Im Hintergrund werden Root-Rechte erlangt, persistente Backdoors eingerichtet, Zugangsdaten ausgelesen oder andere Systeme im Netzwerk angegriffen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Die-Exploit-Kette-erkl&#xE4;rt:\">Die Exploit Kette erkl&#xE4;rt:<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>AF_ALG-Socket einrichten<\/strong><br>Der Angreifer &#xF6;ffnet einen <code>AF_ALG<\/code>-Socket und bindet ihn an das Template <code>authencesn(hmac(sha256),cbc(aes))<\/code>. Das ist ein normaler, unprivilegierter Syscall. Der Kernel stellt diese Schnittstelle bereit, damit Userspace-Programme die Krypto-Hardware nutzen k&#xF6;nnen (z. B. f&#xFC;r IPsec). Danach wird ein &#x201E;Request Socket&#x201C; per <code>accept()<\/code> erzeugt, &#xFC;ber den die eigentlichen Krypto-Operationen laufen.<br><br><code>authencesn(hmac(sha256),cbc(aes))<\/code> ist eine Kernel-interne Notation &#xFC;r ein zusammengesetztes kryptografisches Template. Es beschreibt, welche zwei Verfahren <code>authencesn<\/code> kombiniert und wie.<br><\/li>\n\n\n\n<li><strong>Zieldatei in den Socket einspeisen<\/strong><br>Normalerweise w&#xFC;rde man mit <code>write()<\/code>in einen Socket schreiben, da die Bytes dabei kopiert werden.<code>splice()<\/code> &#xFC;bergibt hingegen einen Zeiger auf die bereits im Speicher gecachten Seiten der Datei (Page Cache), ohne sie zu kopieren. Der Angreifer &#xF6;ffnet <code>\/usr\/bin\/su<\/code> (lesbar f&#xFC;r jeden) und splei&#xDF;t einen bestimmten Bereich dieser Datei in eine Pipe und von dort in den AF_ALG-Socket.<br><\/li>\n\n\n\n<li><strong>Den 4-Byte-Schreibvorgang platzieren<\/strong><br>Vor dem eigentlichen Krypto-Aufruf schickt der Angreifer per <code>sendmsg()<\/code> die AAD (Associated Authenticated Data) an den Socket. In den Bytes 4&#x2013;7 der AAD stecken die <strong>4 Bytes, die sp&#xE4;ter in die Zieldatei geschrieben werden sollen<\/strong>. Beispielsweise der Beginn eines Shellcode-Opcodes.<br><br>Im n&#xE4;chsten Schritt wird <code>recvmsg()<\/code> aufgerufen, was die AEAD-Entschl&#xFC;sselung ausl&#xF6;st. Im Inneren von <code>authencesn<\/code> l&#xE4;uft nun folgendes ab:<br><br>Der Algorithmus liest bestimmte Bytes (ESN) aus den Zusatzdaten (AAD). Anschlie&#xDF;end werden 4 dieser Bytes, die von einem Angreifer kontrolliert werden k&#xF6;nnen, an eine bestimmte Speicherstelle geschrieben. Aufgrund einer Optimierung im Kernel seit 2017 zeigt diese Speicherstelle jedoch nicht mehr auf einen sicheren Puffer, sondern auf eine im Speicher befindliche Datei, zum Beispiel <code>\/usr\/bin\/su<\/code> im sogenannten Page Cache. Dadurch kann ein Angreifer gezielt 4 Bytes in den Kernel-Speicher schreiben. Zwar erkennt das System danach, dass die Nachricht ung&#xFC;ltig ist, weil die HMAC-Pr&#xFC;fung fehlschl&#xE4;gt, und gibt einen Fehler zur&#xFC;ck. Allerdings ist die Schreiboperation zu diesem Zeitpunkt bereits erfolgt und wird nicht r&#xFC;ckg&#xE4;ngig gemacht. Dadurch entsteht die M&#xF6;glichkeit, trotz fehlgeschlagener Integrit&#xE4;tspr&#xFC;fung Daten im Speicher zu ver&#xE4;ndern.<br><\/li>\n\n\n\n<li><strong>Ausf&#xFC;hrung &#x2013; execve als Z&#xFC;nder<\/strong><br>Wenn alle Chunks geschrieben sind, ruft der Angreifer <code>execve(&quot;\/usr\/bin\/su&quot;)<\/code> auf.Der Kernel sucht nun die Datei im Page Cache und findet sie dort sofort, denn die Seiten sind bereits geladen. Er l&#xE4;dt den (im Page Cache korrumpierten) Code und f&#xFC;hrt ihn aus. Da <code>su<\/code> das <strong>setuid-Bit<\/strong> gesetzt hat, wechselt der Kernel beim Start automatisch auf UID 0 (root), unabh&#xE4;ngig davon, wer die Datei aufruft.Der eingebettete Shellcode l&#xE4;uft jetzt mit Root-Rechten.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Nachstellung-Exploit-und-Analyse-im-SIEM\">Nachstellung Exploit und Analyse im SIEM<\/h2>\n\n\n\n<p>Ein Exploit wurde unter <a href=\"https:\/\/copy.fail\/#exploit\" data-type=\"link\" data-id=\"https:\/\/copy.fail\/#exploit\" target=\"_blank\" rel=\"noopener\">diesem Link<\/a> ver&#xF6;ffentlicht und getestet. Dabei manipuliert das Pytho Skript den Kernel_page-Cache der Ziel Bin&#xE4;rdatei (<code>\/usr\/bin\/su<\/code> oder ein anderes <code>setuid<\/code>-Binary) direkt im Speicher. Da <code>setuid<\/code>-Bin&#xE4;rdateien mit root-Rechten ausgef&#xFC;hrt werden, reicht es, deren Code im Cache zu &#xFC;berschreiben. Der n&#xE4;chste Aufruf von <code>su<\/code> f&#xFC;hrt dann den manipulierten Code als <code>uid=0<\/code> (root) aus.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"159\" src=\"https:\/\/enginsight.com\/wp-content\/uploads\/grafik-1024x159.png\" alt=\"\" class=\"wp-image-38159\" srcset=\"https:\/\/enginsight.com\/wp-content\/uploads\/grafik-1024x159.png 1024w, https:\/\/enginsight.com\/wp-content\/uploads\/grafik-300x47.png 300w, https:\/\/enginsight.com\/wp-content\/uploads\/grafik-768x120.png 768w, https:\/\/enginsight.com\/wp-content\/uploads\/grafik.png 1060w\" sizes=\"(max-width: 1024px) 100vw, 1024px\"\/><\/figure>\n\n\n\n<p>&#xDC;ber Sysmon ist leider nur erkennbar, dass ein privilegierter Nutzer (<code>test<\/code>) eine Shell startet, und diese Shell l&#xE4;uft als <strong>root <\/strong>l&#xE4;uft. Dies f&#xFC;hrt leider oft zu false positves, da auch legitime Tools wie Ansible sehr viele kurzlebige Shells als root spwant. Aus diesem Grund ist das Log kein Indikator f&#xFC;r einen Exploit.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"727\" height=\"495\" src=\"https:\/\/enginsight.com\/wp-content\/uploads\/grafik-1.png\" alt=\"\" class=\"wp-image-38160\" srcset=\"https:\/\/enginsight.com\/wp-content\/uploads\/grafik-1.png 727w, https:\/\/enginsight.com\/wp-content\/uploads\/grafik-1-300x204.png 300w\" sizes=\"(max-width: 727px) 100vw, 727px\"\/><\/figure>\n\n\n\n<p>Eine Alternative zur Erkennung des Exploits ist <code>auditd<\/code>. Dieses &#xFC;berwacht Sicherheitsereignisse auf Linux, unter anderem SOCKET-Events und Funtkionsaufrufe.<\/p>\n\n\n\n<p>Daf&#xFC;r ben&#xF6;tigt es Regeln zu &#xDC;berwachung, die wie folgt aussehen k&#xF6;nnten:<\/p>\n\n\n\n<div style=\"background:#FFFFFF;border:1px solid #E2E2E2;border-radius:8px;overflow:hidden;font-family:'Fira Code','Source Code Pro',Consolas,Monaco,monospace;font-size:14px;line-height:1.6;max-width:100%;margin:1.5em 0;\">\n<div style=\"background:#F6F6F6;color:#6B7280;font-size:12px;padding:8px 16px;border-bottom:2px solid #E91E8C;\">Code<\/div>\n<div style=\"overflow-x:auto;padding:12px 16px;color:#24292E;white-space:pre;\"><span style=\"color:#9CA3AF\"># Alle AF_ALG Socket-Events<\/span>\nausearch <span style=\"color:#0E7490\">&#x2013;<\/span>k af_alg_socket\n<span style=\"color:#9CA3AF\"># splice()-Aufrufe der letzten Stunde<\/span>\nausearch <span style=\"color:#0E7490\">&#x2013;<\/span>k splice_call <span style=\"color:#0E7490\">&#x2014;<\/span>start recent\n<span style=\"color:#9CA3AF\"># Lesezugriffe auf \/usr\/bin\/su von Nicht-Root<\/span>\nausearch <span style=\"color:#0E7490\">&#x2013;<\/span>k setuid_read <span style=\"color:#0E7490\">|<\/span> grep <span style=\"color:#0E7490\">&#x2013;<\/span>v <span style=\"color:#22863A\">&#x201A;uid=0&#x2018;<\/span>\n<span style=\"color:#9CA3AF\"># UID-Spr&#xFC;nge auf root<\/span>\nausearch <span style=\"color:#0E7490\">&#x2013;<\/span>k uid_to_root\n<span style=\"color:#9CA3AF\"># Alle Events einer verd&#xE4;chtigen PID zusammen<\/span>\nausearch <span style=\"color:#0E7490\">&#x2014;<\/span>pid <span style=\"color:#D46B08\">4321<\/span><\/div>\n<\/div>\n\n\n\n<p>Dadurch ist es m&#xF6;glich, Sessions zu identifizeren in denen <code>af_alg_socket<\/code> + <code>splice<\/code> + <code>setuid_exec<\/code> zusammen auftauchen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"734\" height=\"801\" src=\"https:\/\/enginsight.com\/wp-content\/uploads\/grafik-2.png\" alt=\"\" class=\"wp-image-38161\" srcset=\"https:\/\/enginsight.com\/wp-content\/uploads\/grafik-2.png 734w, https:\/\/enginsight.com\/wp-content\/uploads\/grafik-2-275x300.png 275w\" sizes=\"(max-width: 734px) 100vw, 734px\"\/><\/figure>\n\n\n\n<p>Das Log sagt folgendes aus.<\/p>\n\n\n\n<div style=\"background:#FFFFFF;border:1px solid #E2E2E2;border-radius:8px;overflow:hidden;font-family:'Fira Code','Source Code Pro',Consolas,Monaco,monospace;font-size:14px;line-height:1.6;max-width:100%;margin:1.5em 0;\">\n<div style=\"background:#F6F6F6;color:#6B7280;font-size:12px;padding:8px 16px;border-bottom:2px solid #E91E8C;\">Code<\/div>\n<div style=\"overflow-x:auto;padding:12px 16px;color:#24292E;white-space:pre;\"><span style=\"color:#B8860B\">syscall<\/span><span style=\"color:#0E7490\">=<\/span><span style=\"color:#D46B08\">59<\/span>        <span style=\"color:#9CA3AF\">&#x2192; execve() &#x2013; eine Datei wird ausgef&#xFC;hrt<\/span>\n<span style=\"color:#B8860B\">exe<\/span><span style=\"color:#0E7490\">=<\/span><span style=\"color:#22863A\">\/usr\/bin\/su<\/span>   <span style=\"color:#9CA3AF\">&#x2192; die Zieldatei<\/span>\n<span style=\"color:#B8860B\">uid<\/span><span style=\"color:#0E7490\">=<\/span><span style=\"color:#D46B08\">1000<\/span>          <span style=\"color:#9CA3AF\">&#x2192; aufgerufen von einem normalen Nutzer<\/span>\n<span style=\"color:#B8860B\">euid<\/span><span style=\"color:#0E7490\">=<\/span><span style=\"color:#D46B08\">0<\/span>            <span style=\"color:#9CA3AF\">&#x2192; aber l&#xE4;uft als root (effective UID = 0)<\/span>\n<span style=\"color:#B8860B\">key<\/span><span style=\"color:#0E7490\">=<\/span><span style=\"color:#22863A\">setuid_exec<\/span>   <span style=\"color:#9CA3AF\">&#x2192; die Audit-Regel hat angeschlagen<\/span>\n<span style=\"color:#B8860B\">ses<\/span><span style=\"color:#0E7490\">=<\/span><span style=\"color:#D46B08\">3<\/span>             <span style=\"color:#9CA3AF\">&#x2192; Session 3 &#x2013;  verd&#xE4;chtige Session<\/span>\n<span style=\"color:#B8860B\">success<\/span><span style=\"color:#0E7490\">=<\/span><span style=\"color:#E91E8C\">yes<\/span>       <span style=\"color:#9CA3AF\">&#x2192; Ausf&#xFC;hrung war erfolgreich<\/span><\/div>\n<\/div>\n\n\n\n<p>Im weiteren Verlauf kann anhand der Session 3 die folgenden Aufrufe gesucht werden, um den Exploit zu best&#xE4;tigen.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>AF_ALG Socket<\/td><td><code>af_alg_socket<\/code><\/td><\/tr><tr><td>splice()-Aufrufe<\/td><td><code>splice_call<\/code><\/td><\/tr><tr><td>Lesezugriff auf su<\/td><td><code>setuid_read<\/code><\/td><\/tr><tr><td><strong>dieser Event<\/strong><\/td><td><code>setuid_exec<\/code><\/td><\/tr><tr><td>UID-Wechsel<\/td><td><code>uid_to_root<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Handlungsempfehlungen:\">Handlungsempfehlungen:<\/h2>\n\n\n\n<p>1.<code>AF_ALG<\/code>-Socket Erstellung blockieren:<\/p>\n\n\n\n<p>Das Kernel-Modul <code>algif_aead<\/code> sollte deaktiviert bzw. nicht geladen werden, sofern es im System nicht zwingend ben&#xF6;tigt wird. Dieses Modul stellt die Schnittstelle bereit, &#xFC;ber die AEAD-Algorithmen via <code>AF_ALG<\/code>-Sockets aus dem Userspace angesprochen werden k&#xF6;nnen. Wird das Modul nicht geladen, ist es f&#xFC;r Nutzer nicht m&#xF6;glich, entsprechende Sockets zu &#xF6;ffnen. Dadurch wird der gesamte beschriebene Angriffsweg effektiv unterbunden, da bereits der erste Schritt, das Binden des Sockets, fehlschl&#xE4;gt. <a href=\"https:\/\/xint.io\/blog\/copy-fail-linux-distributions#the-fix-6\" data-type=\"link\" data-id=\"https:\/\/xint.io\/blog\/copy-fail-linux-distributions#the-fix-6\" target=\"_blank\" rel=\"noopener\">Mehr<\/a> dazu.<\/p>\n\n\n\n<div style=\"background:#FFFFFF;border:1px solid #E2E2E2;border-radius:8px;overflow:hidden;font-family:'Fira Code','Source Code Pro',Consolas,Monaco,monospace;font-size:14px;line-height:1.6;max-width:100%;margin:1.5em 0;\">\n<div style=\"background:#F6F6F6;color:#6B7280;font-size:12px;padding:8px 16px;border-bottom:2px solid #E91E8C;\">Code<\/div>\n<div style=\"overflow-x:auto;padding:12px 16px;color:#24292E;white-space:pre;\"><span style=\"color:#0891B2\">echo<\/span> <span style=\"color:#22863A\">&#x201E;install algif_aead \/bin\/false&#x201C;<\/span> <span style=\"color:#0E7490\">&gt;<\/span> \/etc\/modprobe.d\/disable-algif-aead.conf\n<span style=\"color:#0891B2\">rmmod<\/span> algif_aead <span style=\"color:#D46B08\">2<\/span><span style=\"color:#0E7490\">&gt;<\/span>\/dev\/null<\/div>\n<\/div>\n\n\n\n<p>2. Bei manchen Distributionen ist <code>algif_aead<\/code> kein Modul, sondern fest im Kernel einkompiliert (Beispiel Red Hat). Die L&#xF6;sung daf&#xFC;r ist das Blockieren des Aufrufs der Kernel-Funktion. Daf&#xFC;r muss man beim Boot dem Kernel folgenden Parameter &#xFC;bergeben: <code>initcall_blacklist=algif_aead_init<\/code>. <a href=\"https:\/\/news.ycombinator.com\/item?id=47956504\" data-type=\"link\" data-id=\"https:\/\/news.ycombinator.com\/item?id=47956504\" target=\"_blank\" rel=\"noopener\">Mehr<\/a> dazu.<\/p>\n\n\n\n<p>3. Kernel Paket der genutzten Distribution patchen<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Am 29. April 2026 wurde die Schwachstelle CVE-2026-31431 mit dem Namen &#x201E;Copy Fail&#x201C; &#xF6;ffentlich bekannt gemacht. Sie betrifft viele Linux-Distributionen mit betroffenen Kernel-Versionen. Der Angriff nutzt hierbei drei Kernel-Komponenten. Wie funktioniert der Angriff AF_ALG ist eine Socket-basierte Kernel-Schnittstelle f&#xFC;r Kryptografie, &#xFC;ber die unprivilegierte Nutzer kryptografische Operationen wie Verschl&#xFC;sselung und Hashing ausf&#xFC;hren k&#xF6;nnen, ohne Root-Rechte zu [&#x2026;]<\/p>\n","protected":false},"author":36,"featured_media":38162,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","_eb_attr":"","footnotes":""},"categories":[334],"tags":[],"class_list":["post-38158","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-schwachstellen"],"_links":{"self":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts\/38158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/comments?post=38158"}],"version-history":[{"count":1,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts\/38158\/revisions"}],"predecessor-version":[{"id":38163,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/posts\/38158\/revisions\/38163"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/media\/38162"}],"wp:attachment":[{"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/media?parent=38158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/categories?post=38158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enginsight.com\/de\/wp-json\/wp\/v2\/tags?post=38158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}