{"id":472,"date":"2026-05-18T05:40:43","date_gmt":"2026-05-18T05:40:43","guid":{"rendered":"https:\/\/www.osto.one\/resources\/?p=472"},"modified":"2026-05-18T16:41:20","modified_gmt":"2026-05-18T16:41:20","slug":"how-one-pull-request-stole-grafanas-entire-codebase","status":"publish","type":"post","link":"https:\/\/www.osto.one\/resources\/startup-breaches\/how-one-pull-request-stole-grafanas-entire-codebase\/","title":{"rendered":"The Grafana Breach Explained"},"content":{"rendered":"<p><!-- GRAFANA LABS MAY 2026 BREACH BLOG POST --><\/p>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">In mid-May 2026, <a style=\"color:#1C267A;text-decoration:none;font-weight:500;\" href=\"https:\/\/thehackernews.com\/2026\/05\/grafana-github-token-breach-led-to.html\" target=\"_blank\" rel=\"noopener nofollow\">Grafana Labs<\/a> disclosed that an unauthorized party had downloaded code from five private Grafana repositories. The attacker did not exploit a vulnerability in Grafana&#8217;s product. They did not phish an employee. They did not compromise a production server.<\/p>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">They opened a pull request.<\/p>\n<p><!-- OPENING CALLOUT --><\/p>\n<div style=\"background:#FFF8F8;border-left:5px solid #D94040;padding:20px 24px;margin:32px 0;border-radius:2px;\">\n<p style=\"font-size:17px;font-weight:600;color:#D94040;margin:0;line-height:1.65;\">A single malicious pull request to a Grafana repository was enough to extract a privileged GitHub token, walk into the codebase, and walk back out with the keys to four more private repositories.<\/p>\n<\/div>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">The <a style=\"color:#1C267A;text-decoration:none;font-weight:500;\" href=\"https:\/\/thehackernews.com\/2026\/05\/grafana-github-token-breach-led-to.html\" target=\"_blank\" rel=\"noopener nofollow\">CoinbaseCartel data-extortion crew<\/a>, assessed by Halcyon and Fortinet FortiGuard Labs as an offshoot of the <a style=\"color:#1C267A;text-decoration:none;font-weight:500;\" href=\"https:\/\/www.osto.one\/resources\/startup-breaches\/shinyhunters-figure-phone-call-social-engineering\/\">ShinyHunters<\/a>, Scattered Spider, and LAPSUS$ ecosystems, claimed responsibility and demanded a ransom. Grafana refused to pay, citing FBI guidance. The codebase has not surfaced publicly at time of writing.<\/p>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">What is worth understanding is not the extortion attempt. What is worth understanding is how a misconfigured CI\/CD pipeline became the breach surface, and why thousands of other repositories on GitHub are sitting on the same class of vulnerability right now.<\/p>\n<h2 style=\"font-size:22px;font-weight:600;color:#111;margin:40px 0 14px;padding-bottom:10px;border-bottom:2px solid #EEF1FB;\">The vulnerability class that opened the door<\/h2>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">Public reporting on the May 2026 incident points to a misconfigured <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">pull_request_target<\/code> workflow, a class of GitHub Actions vulnerability called a Pwn Request. Grafana has not yet published a full post-incident review for this breach, so the specific second-stage technique is still emerging. What the security community has published describes the broader attack class, and that is what every engineering team needs to understand.<\/p>\n<p><!-- VULN 1: PWN REQUEST --><\/p>\n<div style=\"border:1px solid #EEF1FB;padding:22px 24px;margin:24px 0 12px;border-radius:2px;\">\n<div style=\"font-size:11px;font-weight:700;letter-spacing:0.15em;text-transform:uppercase;color:#1C267A;margin-bottom:10px;\">Pwn Request explained<\/div>\n<p style=\"font-size:15px;color:#333;margin:0 0 12px;line-height:1.7;\">A Pwn Request is a GitHub Actions misconfiguration where a workflow triggered by an external pull request runs with repository-level permissions and full access to secrets. It happens when a workflow uses the <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">pull_request_target<\/code> trigger instead of the safer <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">pull_request<\/code> trigger.<\/p>\n<p style=\"font-size:15px;color:#333;margin:0;line-height:1.7;\">The distinction matters. A <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">pull_request<\/code> workflow runs in the contributor&#8217;s limited security context with no access to secrets. A <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">pull_request_target<\/code> workflow runs in the base repository&#8217;s privileged context with secrets injected into the environment. It was designed for narrow use cases like commenting on PRs or labelling them by file path. Misused, it becomes a remote code execution surface for anyone who can open a pull request.<\/p>\n<\/div>\n<p><!-- VULN 2: SCRIPT INJECTION --><\/p>\n<div style=\"border:1px solid #EEF1FB;padding:22px 24px;margin:12px 0 28px;border-radius:2px;\">\n<div style=\"font-size:11px;font-weight:700;letter-spacing:0.15em;text-transform:uppercase;color:#1C267A;margin-bottom:10px;\">The common second stage: script injection<\/div>\n<p style=\"font-size:15px;color:#333;margin:0 0 12px;line-height:1.7;\">Pwn Request alone gives a workflow secrets in scope. It does not by itself execute attacker code. The second stage in most documented Pwn Request exploits is a script injection: an inline shell or JavaScript statement inside the workflow that interpolates attacker-controlled values without proper sanitisation. The attacker-controlled values are mundane: branch names, pull request titles, issue comments. None of them feel like an attack surface. All of them are.<\/p>\n<p style=\"font-size:15px;color:#333;margin:0;line-height:1.7;\">By slipping characters that break out of the intended literal context, back-ticks, <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">$()<\/code> command substitution, unescaped quotes, an external contributor can smuggle arbitrary commands into the CI runner. If those commands run in a workflow that already has secrets in scope, the runner becomes a remote shell with full access to whatever the workflow can touch. Whether Grafana&#8217;s May 2026 incident used this exact second stage is not yet public, but it is the pattern the broader Pwn Request class has produced repeatedly.<\/p>\n<\/div>\n<h2 style=\"font-size:22px;font-weight:600;color:#111;margin:40px 0 14px;padding-bottom:10px;border-bottom:2px solid #EEF1FB;\">The exploit chain, step by step<\/h2>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">Reconstructed from Grafana&#8217;s public statements and the coverage from security publications. Some details, particularly the exact exfiltration channel, have not yet been published.<\/p>\n<p><!-- ATTACK CHAIN --><\/p>\n<div style=\"margin:20px 0 32px;display:flex;flex-direction:column;gap:2px;\">\n<div style=\"display:flex;align-items:flex-start;gap:16px;padding:16px 18px;background:#FAFBFF;border:1px solid #EEF1FB;\">\n    <span style=\"background:#1C267A;color:white;font-size:13px;font-weight:700;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;\">1<\/span><\/p>\n<div>\n<div style=\"font-size:15px;font-weight:600;color:#111;margin-bottom:4px;\">Initial access via malicious pull request<\/div>\n<div style=\"font-size:14px;color:#555;line-height:1.6;\">The attacker forked a Grafana repository and opened a pull request that triggered the vulnerable workflow. A <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">curl<\/code> command pulled a malicious payload onto the runner. The privileged GitHub App token, injected into the environment by the <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">pull_request_target<\/code> trigger, was now within the attacker&#8217;s reach.<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div style=\"display:flex;align-items:flex-start;gap:16px;padding:16px 18px;background:#FAFBFF;border:1px solid #EEF1FB;\">\n    <span style=\"background:#1C267A;color:white;font-size:13px;font-weight:700;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;\">2<\/span><\/p>\n<div>\n<div style=\"font-size:15px;font-weight:600;color:#111;margin-bottom:4px;\">Token exfiltration with an encrypted payload<\/div>\n<div style=\"font-size:14px;color:#555;line-height:1.6;\">The payload dumped environment variables, including the GitHub App credentials available in the workflow, into a file. Cyber Security News reports the file was encrypted with a private key embedded in the malicious payload before exfiltration. This pattern keeps the stolen data unreadable to anyone monitoring runner network activity in real time. The exact exfiltration channel for the May 2026 incident has not been published.<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div style=\"display:flex;align-items:flex-start;gap:16px;padding:16px 18px;background:#FAFBFF;border:1px solid #EEF1FB;\">\n    <span style=\"background:#1C267A;color:white;font-size:13px;font-weight:700;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;\">3<\/span><\/p>\n<div>\n<div style=\"font-size:15px;font-weight:600;color:#111;margin-bottom:4px;\">Fork deletion to cover tracks<\/div>\n<div style=\"font-size:14px;color:#555;line-height:1.6;\">After the secrets were exfiltrated, the attacker deleted the fork that hosted the malicious pull request. The CI run logs remained in Grafana&#8217;s environment, but the originating repository was gone. For a security team scanning for suspicious pull request activity, the breadcrumb trail had just been swept.<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div style=\"display:flex;align-items:flex-start;gap:16px;padding:16px 18px;background:#FAFBFF;border:1px solid #EEF1FB;\">\n    <span style=\"background:#1C267A;color:white;font-size:13px;font-weight:700;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;\">4<\/span><\/p>\n<div>\n<div style=\"font-size:15px;font-weight:600;color:#111;margin-bottom:4px;\">Lateral movement across repositories<\/div>\n<div style=\"font-size:14px;color:#555;line-height:1.6;\">The stolen token had access well beyond the original repository. The attacker used it to download code from four additional private Grafana repositories. The blast radius from one misconfigured workflow had expanded across a meaningful portion of the engineering organisation. Grafana&#8217;s investigation later confirmed the stolen artefact was the source code itself. The attacker did not modify code, reach production systems, or access customer data.<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div style=\"display:flex;align-items:flex-start;gap:16px;padding:16px 18px;background:#FAFBFF;border:1px solid #EEF1FB;\">\n    <span style=\"background:#1C267A;color:white;font-size:13px;font-weight:700;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;\">5<\/span><\/p>\n<div>\n<div style=\"font-size:15px;font-weight:600;color:#111;margin-bottom:4px;\">A canary token fired<\/div>\n<div style=\"font-size:14px;color:#555;line-height:1.6;\">Grafana had thousands of canary tokens deployed across its environment as tripwires, a programme it had built out following its previous GitHub Actions incident. One of those tokens was triggered during the lateral movement and alerted the security team. Threat intelligence from Mandiant suggests the average gap between credential theft and active exploitation is around eleven days. Grafana caught it inside that window. The prevention layer had already failed. The detection layer is what bounded the damage.<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<h2 style=\"font-size:22px;font-weight:600;color:#111;margin:40px 0 14px;padding-bottom:10px;border-bottom:2px solid #EEF1FB;\">The extortion attempt and Grafana&#8217;s refusal<\/h2>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">CoinbaseCartel emerged in September 2025 and has claimed roughly 170 victims across healthcare, technology, transportation, manufacturing, and business services. Unlike traditional ransomware groups, they do not encrypt systems. Their leverage is the threat of public release. Steal the data, demand payment, publish if refused.<\/p>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">Grafana refused. The company cited FBI guidance that paying ransoms offers no recovery guarantee and only incentivises more attacks.<\/p>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">That is the right call, and a harder one than it sounds when the leverage is your codebase. Days earlier, the educational technology company Instructure had settled with ShinyHunters after a similar threat aimed at terabytes of data belonging to thousands of US schools and universities. Two extortion demands. Two different decisions. The market is watching which approach holds up over the next twelve months.<\/p>\n<h2 style=\"font-size:22px;font-weight:600;color:#111;margin:40px 0 14px;padding-bottom:10px;border-bottom:2px solid #EEF1FB;\">Why this matters beyond Grafana<\/h2>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">The Pwn Request vulnerability is not exotic. Independent security researchers at Orca Security have demonstrated working exploits against repositories owned by Microsoft, Google, and Nvidia using the same pattern, and have estimated that thousands of repositories remain at risk of exploitation. Many of those repositories belong to companies that have a SOC 2 report and an annual penetration test and consider themselves protected.<\/p>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">For an early-stage company, the implication is direct. CI\/CD pipelines are not a developer convenience. They are a production attack surface with the same blast radius as your application servers. A workflow that runs unsanitised input from an external pull request is functionally equivalent to running unauthenticated code on your build machine, with whatever <a style=\"color:#1C267A;text-decoration:none;font-weight:500;\" href=\"https:\/\/www.osto.one\/resources\/announcement\/osto-biggest-platform-update-trulyone\/\">code security<\/a> coverage that machine has.<\/p>\n<p><!-- TWO PATHS --><\/p>\n<div style=\"display:flex;gap:12px;margin:24px 0 32px;flex-wrap:wrap;\">\n<div style=\"flex:1;min-width:220px;background:#FFF8F8;border-top:4px solid #D94040;padding:20px 22px;border-radius:2px;\">\n<div style=\"font-size:11px;font-weight:700;letter-spacing:0.15em;text-transform:uppercase;color:#D94040;margin-bottom:10px;\">Risky<\/div>\n<div style=\"font-size:15px;font-weight:600;color:#111;margin-bottom:8px;\">pull_request_target with PR checkout<\/div>\n<p style=\"font-size:14px;color:#555;margin:0;line-height:1.6;\">Runs in the base repository&#8217;s context with full access to secrets. Designed for narrow use cases like commenting on PRs. Dangerous if the workflow then checks out and executes PR code or interpolates PR metadata.<\/p>\n<\/p><\/div>\n<div style=\"flex:1;min-width:220px;background:#F5FFF5;border-top:4px solid #2a7a2a;padding:20px 22px;border-radius:2px;\">\n<div style=\"font-size:11px;font-weight:700;letter-spacing:0.15em;text-transform:uppercase;color:#2a7a2a;margin-bottom:10px;\">Safer<\/div>\n<div style=\"font-size:15px;font-weight:600;color:#111;margin-bottom:8px;\">pull_request<\/div>\n<p style=\"font-size:14px;color:#555;margin:0;line-height:1.6;\">Runs in the PR author&#8217;s limited security context with no access to repository secrets. Sufficient for almost all CI workflows: lint, test, build verification. Safe by default.<\/p>\n<\/p><\/div>\n<\/div>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">The fix is not complicated. Audit existing GitHub Actions workflows for <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">pull_request_target<\/code> usage. Replace with <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">pull_request<\/code> wherever the workflow does not specifically need privileged context. Where privileged context is required, never check out or interpolate PR-controlled input from the privileged workflow. Pin Actions to specific commit SHAs rather than tags. Protect production secrets behind GitHub Environments with required approvals. Rotate any high-value secrets every 90 days regardless of incident history.<\/p>\n<h2 style=\"font-size:22px;font-weight:600;color:#111;margin:40px 0 14px;padding-bottom:10px;border-bottom:2px solid #EEF1FB;\">What every engineering team should do this week<\/h2>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">For early-stage companies, the actions are straightforward and inexpensive. None of them require a dedicated security team.<\/p>\n<ul style=\"margin:16px 0 28px;padding-left:0;list-style:none;\">\n<li style=\"display:flex;align-items:flex-start;gap:12px;padding:12px 16px;background:#F5FFF5;border-left:3px solid #2a7a2a;margin-bottom:8px;font-size:16px;color:#333;line-height:1.5;\">\n    <span style=\"color:#2a7a2a;font-size:18px;flex-shrink:0;margin-top:1px;\">\u2713<\/span><br \/>\n    <span><strong>Audit GitHub Actions workflows for <code style=\"background:#EEF1FB;padding:2px 6px;border-radius:2px;font-size:13px;\">pull_request_target<\/code> usage.<\/strong> Open-source tools like Gato-X (by Adnan Khan, which Grafana sponsors) and Zizmor (by William Woodruff) can identify vulnerable workflow patterns in minutes.<\/span>\n  <\/li>\n<li style=\"display:flex;align-items:flex-start;gap:12px;padding:12px 16px;background:#F5FFF5;border-left:3px solid #2a7a2a;margin-bottom:8px;font-size:16px;color:#333;line-height:1.5;\">\n    <span style=\"color:#2a7a2a;font-size:18px;flex-shrink:0;margin-top:1px;\">\u2713<\/span><br \/>\n    <span><strong>Restrict CI secrets to least-privilege scopes.<\/strong> A GitHub App token should not have access to four other repositories. Scope tokens to the minimum repository set their workflow legitimately needs. Review every permission individually.<\/span>\n  <\/li>\n<li style=\"display:flex;align-items:flex-start;gap:12px;padding:12px 16px;background:#F5FFF5;border-left:3px solid #2a7a2a;margin-bottom:8px;font-size:16px;color:#333;line-height:1.5;\">\n    <span style=\"color:#2a7a2a;font-size:18px;flex-shrink:0;margin-top:1px;\">\u2713<\/span><br \/>\n    <span><strong>Move production secrets to GitHub Environments with mandatory reviewers.<\/strong> Environment-scoped secrets require explicit approval before a workflow can access them. Even if a CI workflow is compromised, the deploy secrets stay behind a gate.<\/span>\n  <\/li>\n<li style=\"display:flex;align-items:flex-start;gap:12px;padding:12px 16px;background:#F5FFF5;border-left:3px solid #2a7a2a;margin-bottom:8px;font-size:16px;color:#333;line-height:1.5;\">\n    <span style=\"color:#2a7a2a;font-size:18px;flex-shrink:0;margin-top:1px;\">\u2713<\/span><br \/>\n    <span><strong>Deploy canary tokens.<\/strong> Free options exist. Plant them across high-value repositories, cloud accounts, and admin panels. The point is detection when prevention fails, and Grafana&#8217;s experience shows the difference between a contained incident and an undetected one is measured in days.<\/span>\n  <\/li>\n<li style=\"display:flex;align-items:flex-start;gap:12px;padding:12px 16px;background:#F5FFF5;border-left:3px solid #2a7a2a;margin-bottom:8px;font-size:16px;color:#333;line-height:1.5;\">\n    <span style=\"color:#2a7a2a;font-size:18px;flex-shrink:0;margin-top:1px;\">\u2713<\/span><br \/>\n    <span><strong>Use OIDC federation for cloud deployments.<\/strong> Replace static AWS keys, Docker Hub credentials, and npm publish tokens with short-lived OIDC credentials. Even if a workflow is compromised, OIDC tokens expire before the attacker can use them at scale.<\/span>\n  <\/li>\n<li style=\"display:flex;align-items:flex-start;gap:12px;padding:12px 16px;background:#F5FFF5;border-left:3px solid #2a7a2a;margin-bottom:8px;font-size:16px;color:#333;line-height:1.5;\">\n    <span style=\"color:#2a7a2a;font-size:18px;flex-shrink:0;margin-top:1px;\">\u2713<\/span><br \/>\n    <span><strong>Require approval for first-time contributor workflows.<\/strong> GitHub allows repository owners to require manual approval before a new contributor&#8217;s workflow can run. One toggle. Free. Defends against drive-by Pwn Request attacks like the one that hit Grafana.<\/span>\n  <\/li>\n<\/ul>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">None of this is novel. All of it has been recommended for years. The Grafana breach matters because it is the latest reminder that recommendations and reality drift apart fast when engineering teams are shipping product under time pressure. <a style=\"color:#1C267A;text-decoration:none;font-weight:500;\" href=\"https:\/\/www.osto.one\/resources\/startup-breaches\/roblox-cheat-script-vercel-2-million-breach\/\">Supply chain attacks<\/a> against developer infrastructure are not slowing down. They are becoming the dominant pattern.<\/p>\n<p style=\"font-size:17px;line-height:1.75;color:#333;\">If the company building Grafana can be hit this way, the question for every founder is straightforward: when was the last time someone audited your GitHub Actions workflows?<\/p>\n<p><!-- CLOSING CTA --><\/p>\n<div style=\"background:#1C267A;padding:28px 32px;border-radius:2px;margin-top:32px;\">\n<p style=\"font-size:17px;font-weight:600;color:white;margin:0 0 10px;line-height:1.5;\">CI\/CD pipelines are now a production attack surface. Treat them that way.<\/p>\n<p style=\"font-size:14px;color:rgba(255,255,255,0.75);margin:0 0 18px;line-height:1.7;\">Osto&#8217;s SAST and Code Security modules scan your repositories continuously for the kind of workflow misconfigurations that took Grafana&#8217;s codebase. One platform for source code security, cloud posture, and the entire stack underneath. If your engineering team is shipping faster than your security can keep up, we should talk.<\/p>\n<p>  <a style=\"display:inline-block;background:#FFFFFF;color:#1C267A;font-size:13px;font-weight:bold;padding:11px 22px;text-decoration:none;letter-spacing:0.05em;border-radius:2px;\" href=\"https:\/\/www.osto.one\/\">Talk to us at Osto<\/a>\n<\/div>\n<p><!-- META LINKS --><\/p>\n<p style=\"font-size:14px;line-height:1.75;color:#888;border-top:1px solid #EEF1FB;padding-top:20px;margin-top:32px;\">\n  <a style=\"color:#1C267A;text-decoration:none;font-weight:500;\" href=\"https:\/\/thehackernews.com\/2026\/05\/grafana-github-token-breach-led-to.html\" target=\"_blank\" rel=\"noopener nofollow\">The Hacker News coverage<\/a> &middot;<br \/>\n  <a style=\"color:#1C267A;text-decoration:none;font-weight:500;\" href=\"https:\/\/cybersecuritynews.com\/grafana-labs-security-breach\/\" target=\"_blank\" rel=\"noopener nofollow\">Cyber Security News technical breakdown<\/a> &middot;<br \/>\n  <a style=\"color:#1C267A;text-decoration:none;font-weight:500;\" href=\"https:\/\/www.cyberkendra.com\/2026\/05\/grafana-labs-refuses-ransom-after.html\" target=\"_blank\" rel=\"noopener nofollow\">Cyber Kendra incident analysis<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In mid-May 2026, Grafana Labs disclosed that an unauthorized party had downloaded code from five private Grafana repositories. The attacker\u2026<\/p>\n","protected":false},"author":5,"featured_media":476,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53],"tags":[],"class_list":["post-472","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-startup-breaches"],"_links":{"self":[{"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/posts\/472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/comments?post=472"}],"version-history":[{"count":6,"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/posts\/472\/revisions"}],"predecessor-version":[{"id":488,"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/posts\/472\/revisions\/488"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/media\/476"}],"wp:attachment":[{"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/media?parent=472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/categories?post=472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.osto.one\/resources\/wp-json\/wp\/v2\/tags?post=472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}