{"id":1761,"date":"2023-02-28T19:11:37","date_gmt":"2023-02-28T17:11:37","guid":{"rendered":"https:\/\/certitude.consulting\/blog\/?p=1761"},"modified":"2023-02-28T19:23:01","modified_gmt":"2023-02-28T17:23:01","slug":"the-dangers-from-across-browser-windows","status":"publish","type":"post","link":"https:\/\/certitude.consulting\/blog\/de\/the-dangers-from-across-browser-windows\/","title":{"rendered":"The dangers from across browser-windows"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"379\" src=\"https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/cover-1-1024x379.png\" alt=\"\" class=\"wp-image-1792\" srcset=\"https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/cover-1-1024x379.png 1024w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/cover-1-300x111.png 300w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/cover-1-768x284.png 768w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/cover-1-1536x568.png 1536w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/cover-1.png 1682w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Beim Durchsuchen des Webs versucht Ihr Browser, Sie bestm\u00f6glich zu sch\u00fctzen, aber manchmal scheitert er daran, wenn er nicht ordnungsgem\u00e4\u00df von der Website angewiesen wird, die Sie besuchen. Einer der wichtigsten Sicherheitsmechanismen des Browsers ist die Same-Origin Policy <a id=\"_ftnref1\" href=\"#_ftn1\">[1]<\/a><a id=\"_ftnref2\" href=\"#_ftn2\">[2]<\/a><a id=\"_ftnref3\" href=\"#_ftn3\">[3]<\/a> (SOP), die einschr\u00e4nkt, wie Skripte und Dokumente aus einer Ursprungsquelle mit Ressourcen und Dokumenten aus einer anderen Ursprungsquelle interagieren k\u00f6nnen. Dieser Standard-Schutz ist m\u00f6glicherweise immer noch nicht ausreichend, um einen Angriff auf Benutzer Ihrer Webanwendung zu verhindern. In diesem Beitrag werden verschiedene Angriffe auf Browserfenster und deren Abwehr besprochen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Angriffe auf Browser Fenster<\/h2>\n\n\n\n<p>Die grundlegende Idee hinter einem Angriff auf ein Fenster besteht darin, dass ein Angreifer, der seine eigene Website kontrolliert (im Beispiel eve.com), auf programmatische Weise Zugriff auf einen Handle zu einer Opfer-Website (alice.com) erh\u00e4lt. Dies kann auf viele Arten geschehen und wird durch die SOP nicht verhindert. Die Website des Angreifers kann m\u00f6glicherweise keine Quell\u00fcbergreifenden Inhalte lesen oder schreiben, ist jedoch dennoch berechtigt, eine begrenzte Anzahl von Aktionen durchzuf\u00fchren.<br>Um zu veranschaulichen, was m\u00f6glich ist, k\u00f6nnte der folgende Code auf einer Website des Angreifers enthalten sein:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Dieser Code ist auf eve.com eingebettet<br>\/\/ \u00d6ffnet die seite \u201ealice.com\u201c wo Bob eingelogged ist<br>w = window.open(\u201calice.com\u201d, \u201c_blank\u201d)<\/code><\/pre>\n\n\n\n<p>Nun kann der Angreifer folgende Operationen trotz SOP problemlos durchf\u00fchren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Nachrichten an \u201ealice.com\u201c senden<br>w.postMessage(\u201chello\u201d, \u201c*\u201d)<br>\/\/ Frame z\u00e4hlen<br>console.log(w.length)<br>\/\/ Zu einer andere Seite navigieren<br>\/\/ Zu bemerken ist, dass das kleine L durch ein gro\u00dfes I ersetzt wurde<br>w.location = \u201c\/\/aIice.com\u201d<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"513\" src=\"https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-9-1024x513.png\" alt=\"\" class=\"wp-image-1785\" srcset=\"https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-9-1024x513.png 1024w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-9-300x150.png 300w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-9-768x385.png 768w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-9.png 1535w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Simpler Angriff gegen Bob<\/figcaption><\/figure>\n\n\n\n<p>Die Illustration beschreibt die generelle Idee solch eines Angriffs beziehungsweise was notwendig f\u00fcr einen der folgenden Angriffe ist:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>XS-Search<a id=\"_ftnref4\" href=\"#_ftn4\">[4]<\/a> und XS-Leaks<a id=\"_ftnref5\" href=\"#_ftn5\">[5]<\/a><\/li>\n\n\n\n<li>Tabnabbing<a id=\"_ftnref6\" href=\"#_ftn6\">[6]<\/a><\/li>\n\n\n\n<li>Spectre<a id=\"_ftnref7\" href=\"#_ftn7\">[7]<\/a><\/li>\n<\/ul>\n\n\n\n<p>Das \u00fcbliche Ziel dieser Angriffe ist es Informationen eines Nutzers zu extrahieren oder Login Informationen zu phishen. Durch das Hintereinanderschalten mehrerer Angriffe, ist es einem Angreifer auch m\u00f6glich gut gesch\u00fctzte Informationen abzugreifen, wie wir im folgenden Beispiel zeigen werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Beispiel 1: Chained XS Search<\/h2>\n\n\n\n<p>Bob ist der Administrator einer Website und \u00fcberpr\u00fcft Berichte \u00fcber Probleme mit der von ihm verwalteten Website. Zus\u00e4tzlich gibt es eine administrative Oberfl\u00e4che, auf die Bob von seinem lokalen Netzwerk aus zugreifen kann. Bobs administrative Oberfl\u00e4che verf\u00fcgt \u00fcber ein Abfrage-basiertes Suchsystem, mit dem er Benutzernamen und Passw\u00f6rter abfragen kann. Dieses System gibt eine Seite mit Frames f\u00fcr jedes Ergebnis zur\u00fcck.<\/p>\n\n\n\n<p>Eve entdeckt eine gespeicherte XSS-Schwachstelle auf Bobs Website, die es ihr erm\u00f6glicht, beliebigen Javascript-Code auf einer Seite auf Bobs Website einzuf\u00fcgen, der ausgef\u00fchrt wird, sobald jemand diese Seite \u00f6ffnet. Sie bereitet sorgf\u00e4ltig einen b\u00f6sartigen Javascript-Schnipsel vor und f\u00fcgt ihn in die Website ein. Anschlie\u00dfend sendet sie Bob einen Link zu seiner eigenen Website und beschwert sich dar\u00fcber, dass etwas nicht stimmt.<\/p>\n\n\n\n<p>Bob \u00f6ffnet den Link, ohne zu wissen, dass der b\u00f6sartige Javascript-Code verborgene iframes der sicheren administrativen Suchoberfl\u00e4che mit Abfragen f\u00fcr Benutzernamen\/Passwort-Kombinationen \u00f6ffnet. Dies kann auf viele Arten geschehen, aber hier ist es wichtig zu beachten, dass aufgrund der Ergebnisse in iframes, obwohl die sichere administrative Oberfl\u00e4che sicher auf einer anderen Herkunft liegt, Bobs eigene Website gegen ihn verwendet wird und ermitteln kann, wie viele iframes auf dieser lokal gesicherten Website generiert werden, was es Eves Skript im Grunde erm\u00f6glicht, Anmeldeinformationen aufzulisten.<br>Der grundlegende Javascript-Code, um so etwas zu erreichen, k\u00f6nnte wie folgt aussehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var iframe = document.createElement(\u201ciframe\u201d);\niframe.name = \u201cxleaks\u201d;\ndocument.body.appendChild(iframe);\nvar win = window.open(\u201csecure.admin\/search?pwd=LIKE \u201c + knownPart + guessedCharacter + \u201c.%\u201d, \u201cxsleaks\u201d);\nif(win.length != 0) {\n\tconsole.log(\u201cErratener Buchstabe \u201d + guessedCharacter);\n\t\/\/ Erratenen Buchstaben zu Alice schicken und wiederholen\n}\niframe.remove();<\/code><\/pre>\n\n\n\n<p>Wenn Anmeldeinformationen gefunden wurden, werden sie vom b\u00f6sartigen Javascript-Schnipsel an Eve weitergesendet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"651\" src=\"https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-10-1024x651.png\" alt=\"\" class=\"wp-image-1786\" srcset=\"https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-10-1024x651.png 1024w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-10-300x191.png 300w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-10-768x489.png 768w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-10-1536x977.png 1536w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-10.png 1583w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Komplexer XSS &amp; XS Search Angriff gegen Bob<\/figcaption><\/figure>\n\n\n\n<p>Es ist wichtig zu beachten, dass die SOP-Schwachstelle (Same-Origin Policy) ausgenutzt werden kann, ohne dass die XSS-Schwachstelle ben\u00f6tigt wird. Die XSS-Schwachstelle wird in diesem Beispiel nur hinzugef\u00fcgt, um zu zeigen, wie Schwachstellen miteinander verkn\u00fcpft werden k\u00f6nnen, um einen schwerwiegenderen Angriff zu erstellen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Beispiel 2: Tabnabbing<\/h2>\n\n\n\n<p>Bob navigiert auf seiner Lieblings-Social-Media-Seite &#8220;toebook.com&#8221; und sieht eine Anzeige f\u00fcr etwas, das er immer haben wollte, und beschlie\u00dft, darauf zu klicken. Die Webseite sieht normal aus und beschreibt seinen Artikel der Wahl. Bob nimmt sich Zeit und inspiziert die Beschreibung sorgf\u00e4ltig, aber am Ende entscheidet er, dass er es nicht wirklich mag. Er schlie\u00dft die Registerkarte des Gesch\u00e4fts und kehrt zu &#8220;toebook.com&#8221; zur\u00fcck, nur um herauszufinden, dass er bei toebook ausgeloggt wurde! Begierig darauf, weiter zu surfen, gibt er seine Anmeldeinformationen ein und f\u00e4hrt mit der Social-Media-Seite fort. Was er nicht wei\u00df, ist, dass er gerade von &#8220;t0ebook.com&#8221; gephished wurde.<\/p>\n\n\n\n<p>Die Social-Media-Seite \u00f6ffnet normalerweise Anzeigen mit Javascript:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>window.open(adsite, target=\u201d_blank\u201d)<\/code><\/pre>\n\n\n\n<p>W\u00e4hrend seines Aufenthalts auf der Seite von Eves Gesch\u00e4ft hat ihn b\u00f6sartiger Javascript-Code in eine Tabnabbing-Falle gelockt und den urspr\u00fcnglichen Tab von &#8220;toebook.com&#8221; auf &#8220;t0ebook.com&#8221; navigiert, eine Kopie des Login-Formulars von &#8220;toebook&#8221;, das die Anmeldeinformationen, die in das Login-Formular eingegeben werden, direkt an Eve sendet und den Benutzer auf die echte &#8220;toebook.com&#8221; umleitet.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Navigiert den urspr\u00fcnglichen toebook.com Browsertab zu einer Kope des Login-Formulars das genau wie das echte aussieht\nwindow.opener.location.replace(\u201chttps:\/\/t0ebook.com\u201d)<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"661\" src=\"https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-11-1024x661.png\" alt=\"\" class=\"wp-image-1787\" srcset=\"https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-11-1024x661.png 1024w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-11-300x194.png 300w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-11-768x496.png 768w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-11.png 1410w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Reverse Tabnabbing Angriff auf Bob<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Die Verbindung trennen<\/h2>\n\n\n\n<p>Das Hauptproblem, das solche Angriffe erm\u00f6glicht, besteht darin, dass ein Angreifer eine Referenz zu einem anderen Browserfenster erhalten kann. Obwohl der b\u00f6sartige Akteur durch die SOP eingeschr\u00e4nkt ist, was er mit dieser Fensterreferenz tun kann, werden nicht alle M\u00f6glichkeiten blockiert, was kreative Angriffe erm\u00f6glicht.<\/p>\n\n\n\n<p>Insbesondere k\u00f6nnen, wie wir in den Beispielen gezeigt haben, Angriffe, die die L\u00fccken in der SOP ausnutzen, mit anderen Exploits kombiniert werden, um auch durch sehr verteidigte Setups zu dringen und sensible Informationen abzurufen.<\/p>\n\n\n\n<p>Um solche Probleme zu l\u00f6sen, kann der Browser angewiesen werden, von einem Webserver eine Website in einem isolierten Fenster darzustellen, wodurch es anderen Websites nicht mehr m\u00f6glich ist, eine Referenz darauf zu erhalten. Dies kann erreicht werden, indem beim Bereitstellen einer Webanwendung durch den Webserver das Cross-Origin-Opener-Policy (COOP)<a id=\"_ftnref8\" href=\"#_ftn8\">[8]<\/a> in die Antwort-HTTP(S)-Header eingef\u00fcgt wird.<\/p>\n\n\n\n<p>Die COOP funktioniert wie folgt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wenn sie auf &#8220;same-origin&#8221; eingestellt ist und die Urspr\u00fcnge von zwei Seiten \u00fcbereinstimmen, k\u00f6nnen sie miteinander interagieren, wie wir beschrieben haben.<\/li>\n\n\n\n<li>Wenn das COOP des \u00d6ffners auf &#8220;same-origin-allow-popups&#8221; gesetzt ist und das COOP des Empf\u00e4ngers auf dem Standardwert &#8220;unsafe-none&#8221; gesetzt ist, k\u00f6nnen die Seiten miteinander interagieren.<\/li>\n\n\n\n<li>Wenn eine der Seiten COOP setzt, wird der Browser f\u00fcr jede Seite mit COOP eine neue Kontextgruppe erstellen und somit die Verbindung zwischen den Seiten trennen.<\/li>\n<\/ul>\n\n\n\n<p>Wenn wir nun versuchen, unseren Tabnabbing-Angriff von zuvor auszuf\u00fchren, indem wir versuchen, zur Phishing-Website zu navigieren, werden wir aufgrund des auf &#8220;toebook.com&#8221; festgelegten COOP auf &#8220;same-origin&#8221; schnell mit einem TypeError: window.opener is null abgewiesen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-12-1024x551.png\" alt=\"\" class=\"wp-image-1788\" srcset=\"https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-12-1024x551.png 1024w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-12-300x162.png 300w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-12-768x414.png 768w, https:\/\/certitude.consulting\/blog\/wp-content\/uploads\/2023\/02\/grafik-12.png 1378w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Erfolgreiche Verhinderung eines Tabnabbing Angriffs<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Wie wir gesehen haben, kann es so einfach sein, geeignete Header zu setzen, um sich gegen sehr b\u00f6sartige Versuche zu sch\u00fctzen, Angriffe gegen Ihre Webanwendung aus verschiedenen Browserfenstern zu starten, obwohl dies aufgrund der SOP nicht m\u00f6glich sein sollte. Der entscheidende Teil hierbei ist zu wissen, dass diese Header existieren und Browser anweisen k\u00f6nnen, Ihre Webanwendung zu isolieren und Benutzern den Schutz zu bieten, den sie verdienen.<\/p>\n\n\n\n<p>Zus\u00e4tzlich gibt es Header, die in Verbindung mit COOP verwendet werden k\u00f6nnen, wie z.B. die Cross-Origin-Embedder-Policy (COEP)<a id=\"_ftnref9\" href=\"#_ftn9\">[9]<\/a> und Cross-Origin-Resource-Policy (CORP)<a id=\"_ftnref10\" href=\"#_ftn10\">[10]<\/a>, die es sich lohnt, zu pr\u00fcfen, um Ihre Webanwendung weiter zu isolieren und sich gegen Angriffe welche die Spectre Schwachstelle<a id=\"_ftnref11\" href=\"#_ftn11\">[11]<\/a> nutzen zu verteidigen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><a id=\"_ftn1\" href=\"#_ftnref1\">[1]<\/a> https:\/\/web.dev\/same-origin-policy\/<br><a id=\"_ftn2\" href=\"#_ftnref2\">[2]<\/a> https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Security\/Same-origin_policy<br><a id=\"_ftn3\" href=\"#_ftnref3\">[3]<\/a> https:\/\/appsecmonkey.com\/blog\/same-origin-policy<br><a id=\"_ftn4\" href=\"#_ftnref4\">[4]<\/a> https:\/\/xsleaks.dev\/docs\/attacks\/xs-search\/<br><a id=\"_ftn5\" href=\"#_ftnref5\">[5]<\/a> https:\/\/xsleaks.dev\/<br><a id=\"_ftn6\" href=\"#_ftnref6\">[6]<\/a> https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/HTML5_Security_Cheat_Sheet.html#tabnabbing<br><a id=\"_ftn7\" href=\"#_ftnref7\">[7]<\/a> https:\/\/security.googleblog.com\/2021\/03\/a-spectre-proof-of-concept-for-spectre.html<br><a id=\"_ftn8\" href=\"#_ftnref8\">[8]<\/a> https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Cross-Origin-Opener-Policy<br><a id=\"_ftn9\" href=\"#_ftnref9\">[9]<\/a> https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Cross-Origin-Embedder-Policy<br><a id=\"_ftn10\" href=\"#_ftnref10\">[10]<\/a> https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Cross-Origin-Resource-Policy<br><a id=\"_ftn11\" href=\"#_ftnref11\">[11]<\/a> https:\/\/web.dev\/why-coop-coep\/<br><a id=\"_ftn12\" href=\"#_ftnref12\">[12]<\/a> https:\/\/security.googleblog.com\/2021\/03\/a-spectre-proof-of-concept-for-spectre.html<br><a id=\"_ftn13\" href=\"#_ftnref13\">[13]<\/a> https:\/\/leaky.page\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beim Durchsuchen des Webs versucht Ihr Browser, Sie bestm\u00f6glich zu sch\u00fctzen, aber manchmal scheitert er daran, wenn er nicht ordnungsgem\u00e4\u00df von der Website angewiesen wird, die Sie besuchen. Einer der wichtigsten Sicherheitsmechanismen des Browsers ist die Same-Origin Policy [1][2][3] (SOP), die einschr\u00e4nkt, wie Skripte und Dokumente aus einer Ursprungsquelle mit Ressourcen und Dokumenten aus einer [&hellip;]<\/p>\n","protected":false},"author":17,"featured_media":1790,"comment_status":"closed","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63],"tags":[],"class_list":["post-1761","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technische-analyse"],"_links":{"self":[{"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/posts\/1761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/comments?post=1761"}],"version-history":[{"count":14,"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/posts\/1761\/revisions"}],"predecessor-version":[{"id":1801,"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/posts\/1761\/revisions\/1801"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/media\/1790"}],"wp:attachment":[{"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/media?parent=1761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/categories?post=1761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/certitude.consulting\/blog\/wp-json\/wp\/v2\/tags?post=1761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}