{"id":12697,"date":"2022-09-30T06:15:15","date_gmt":"2022-09-29T20:15:15","guid":{"rendered":"https:\/\/terem.tech\/?p=12697"},"modified":"2022-10-07T10:34:11","modified_gmt":"2022-10-06T23:34:11","slug":"optus-api-hack-analysis","status":"publish","type":"post","link":"https:\/\/terem.tech\/optus-api-hack-analysis\/","title":{"rendered":"Optus API Hack &#8211; Analysis"},"content":{"rendered":"\n<p class=\"has-text-align-center\"><strong><img src=\"https:\/\/lh4.googleusercontent.com\/oJVIdrXsjm1tXfhNArf4JmmO3F3x5-BlouwpRmg8PZNBn911HOklEO0kC89YvO1-cJpq-Mz_amXODR-3SasrN4II1RPr56M_GjLLPtpske1IlMyCxTXG_biYLoWDJE-csAiiFOfQ3mRwB1DZ84819rK1CucYb2AjdLJwn6We0ZRMTiAJQli0fzhxqg\" width=\"602\" height=\"601\"><\/strong><\/p>\n\n\n\n<p>The Optus hack is <a href=\"https:\/\/www.upguard.com\/blog\/biggest-data-breaches-australia\">the third biggest breach<\/a> of Australian consumer Personally Identifiable Information (PII) in history, with 9.8m customer records being exposed.&nbsp;<\/p>\n\n\n\n<p>Optus maintains that the hack was a sophisticated attack, using rotating IP addresses to carry out the attack.&nbsp;<\/p>\n\n\n\n<p>The Minister For Cyber Security, Clare O\u2019Neil, and the Federal Government have slammed Optus, indicating that their belief is that Optus <a href=\"https:\/\/www.aljazeera.com\/economy\/2022\/9\/27\/optus-australian-govt-clash-over-massive-data-breach\">&#8220;left the window open\u201d<\/a>. It\u2019s worth noting that this is a technique that has been in use so long it\u2019s been consumerised into products that do it for you and even into browsers. For example, Brave Browser has a built-in ToR network routing and <a href=\"https:\/\/github.com\/baatout\/tor-ip-rotation-python-example\">with about 40 lines of python code you can force new IP address circuits<\/a>.&nbsp;<\/p>\n\n\n\n<p>Who is right? Sophisticated attack or a gaping hole in security? Let\u2019s look at thoughts from several analysts. While there is an ongoing criminal investigation, some of the details are under wraps, analysts are fairly sure they understand the nature of the breach.&nbsp;<\/p>\n\n\n\n<p>It is so simple it\u2019s scary.<\/p>\n\n\n\n<h3><strong>Cardinal Sin 1 &#8211; Unauthenticated endpoint<\/strong><\/h3>\n\n\n\n<p>There is some debate over whether the endpoint had authentication at ALL. Journalist Jeremy Kirk <a href=\"https:\/\/twitter.com\/jeremy_kirk\/status\/1573652986437726208\">talked to the hacker responsible<\/a>. They claimed it was a completely unauthenticated endpoint that they accessed the data through.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/ORQcSPlfiKuruie1Az2Tym657sLWMsv2_t-c5eNMgdxmQr2RgpuR9WG7-aSvxYjpPv2T_U6JYvyG_Xq3GCawcmJ4FOF_jx_aIZTlEHciFz3OuZIqEczg5qytBNYmqVO4OL-xXaAKEEB7sxF0HWRzndrAwsXcSFx1XfDt6NUGfc0HWepPBT_dPOWlqA\" alt=\"\"\/><\/figure>\n\n\n\n<p>Optus has since taken the endpoint down so we can no longer validate this fact. If the hacker is correct then Optus had at least one endpoint that was completely devoid of any authentication or authorisation. You could have whipped up a curl script (a simple script that kids learn in school) and have made a request against this endpoint with no login credentials.<\/p>\n\n\n\n<p>If this is true it wouldn&#8217;t be a particularly sophisticated hack. You can\u2019t exactly call it a security breach if you don\u2019t have any security.&nbsp;<\/p>\n\n\n\n<p>There is some contention over whether or not the endpoint was secure. Some analysts believe that it at least had some kind of cookie based authentication. In code samples of API consumers we can see that cookies are set, but without insight we may never know.&nbsp;<\/p>\n\n\n\n<p>If we give Optus the benefit of the doubt and assume it was an authenticated endpoint then surely with a secure endpoint there\u2019s no way for this breach to have occurred? Unfortunately, this brings us to the next attack vector.<\/p>\n\n\n\n<h3><strong>Cardinal Sin 2 &#8211; Insecure direct object references<\/strong><\/h3>\n\n\n\n<p>Back in <a href=\"https:\/\/owasp.org\/www-pdf-archive\/OWASP_Top_10_2007.pdf\">2007<\/a> OWASP brought the IDOR (Insecure Direct Object References) vulnerability to the forefront of people\u2019s attention by placing it at number 4 in their top 10 most critical risks to web applications.&nbsp;<\/p>\n\n\n\n<p>What is an IDOR vulnerability? Let\u2019s take a look, we can use Optus as an example (thanks to <a href=\"https:\/\/twitter.com\/onejvo\">@onejvo<\/a> for breaking this <a href=\"https:\/\/twitter.com\/onejvo\/status\/1573929672748208128\">example<\/a> down for us).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/-of-7r6h66elWhSb2wMg_ZE114JLw4JsCxORwptD9lL3z9de1PMQ6CRVmME916bFkIZiUnSwYQDwS9NjGBRyxrQJUKk9eOmkOxYID0vGomSnmEdM4Wv9gSJhmG_u_t2LvtvjbG2Dlfa4Ex0DoHFEiDc-D6YG1pPN9NDPKz9FefUyOy4gEzYyEzQt0g\" alt=\"\"\/><\/figure>\n\n\n\n<p>This is code pulled from a public github repo that talks to the endpoint in question (the hacker and one other anonymous source confirmed the endpoint with Jeremy Kirk).<\/p>\n\n\n\n<p>Line 78 defines an endpoint. It looks rather harmless, It has two query string params and an ID as part of its route.&nbsp;<\/p>\n\n\n\n<ul><li>Customer Number<\/li><li>Account Number<\/li><li>Subscription ID<\/li><\/ul>\n\n\n\n<p>Analysts currently believe that this endpoint did not use the authorised&nbsp; user to vet access to the customer data. Instead it relied solely on the customer number parameter passed in the query string.<\/p>\n\n\n\n<p>Let\u2019s look at this part here:&nbsp;<\/p>\n\n\n\n<p>\/customer\/#{cust_num}<\/p>\n\n\n\n<p>It\u2019s a pretty common REST-ish pattern. A noun that describes the object you\u2019re accessing then an ID to indicate the ID of the noun you want.&nbsp;<\/p>\n\n\n\n<p>Hypothetically, let\u2019s say I&#8217;m logged in as user Roy. My cookie has the auth state for Roy but I make this request:<\/p>\n\n\n\n<p>\/customer\/Deckard<\/p>\n\n\n\n<p><strong>Does the API give you Deckard\u2019s data?&nbsp;<\/strong><\/p>\n\n\n\n<p>It shouldn\u2019t but in the case of an IDOR vulnerability it will incorrectly give you Deckard\u2019s data.<\/p>\n\n\n\n<p>Let that sink in. It will give you a different user\u2019s data.<\/p>\n\n\n\n<p>If a nefarious actor knew other customer numbers\/ account numbers or Subscription IDs i could do the following:<\/p>\n\n\n\n<ol><li>Find the Customer\/Account\/Subscription ID of some other random Optus customer. Let\u2019s use Deckard again.<\/li><li>Log in as Roy, an actual Optus customer.<\/li><li>Reusing the auth state for Roy, make the above api call but, pass in Deckard\u2019s IDs.<\/li><li>Receive Deckard\u2019s data.&nbsp;<\/li><li>Upset Deckard&nbsp;<\/li><\/ol>\n\n\n\n<p>In this example we can see that IDOR vulnerabilities usually result in horizontal privilege escalation (that is the same level of permission but across different users) but there are cases where it can result in vertical privilege escalation (accessing additional permissions)<\/p>\n\n\n\n<p>How do you fix it, you say? If you\u2019re impatient you can scroll to the end but first let\u2019s address the thing you\u2019re hopefully thinking about.<\/p>\n\n\n\n<p>Item 1. Finding another user\u2019s ID<\/p>\n\n\n\n<p>The IDOR vulnerability hinges on a hacker\u2019s ability to get their hands on other users\u2019 IDs)<\/p>\n\n\n\n<p>Which brings us onto Cardinal Sin number 3. (Which technically is more of an ordinal sin. )<\/p>\n\n\n\n<h3><strong>Cardinal Sin 3 &#8211; Enumerable Keys<\/strong><\/h3>\n\n\n\n<p>By itself isn\u2019t a critical issue but combined with the above issue there is a huge problem with having primary keys and IDs that are predictable.<\/p>\n\n\n\n<p>What do we mean by enumerable keys?<\/p>\n\n\n\n<p>I\u2019ll spare you the math and instead lean on another example:<\/p>\n\n\n\n<p>We used Deckard and Roy as example customer IDs above. (They\u2019re unlikely to be actual primary keys, but it\u2019s way easier than just a list of GUIDS).&nbsp; Let\u2019s just add some for completeness\u2019 sake:&nbsp;<\/p>\n\n\n\n<p>set1 = [\u201cdeckard\u201d, \u201croy\u201d, \u201cjessica\u201d, \u201dgaff\u201d]<\/p>\n\n\n\n<p>And now perhaps a more reasonable set for comparison:<\/p>\n\n\n\n<p>set2 = [\u201cCustomer\u20131\u201d, \u201dCustomer-2\u201d, \u201dCustomer-3\u201d]<\/p>\n\n\n\n<p>Set2 is enumerable because we can see a relationship between the natural numbers (1,2,3,4,&#8230;.n) and the ID.<\/p>\n\n\n\n<p>id(n) = Customer-n<\/p>\n\n\n\n<p>Where n is a natural number 1,2,3,4,etc<\/p>\n\n\n\n<p>Set1 does not exhibit this at all. There is no function that turns 1-&gt; deckard, 2-&gt;roy for all ids. Disclaimer: I mean a formal mathematical function. You could of course warm up your IDE and write a function that maps between ids and integers\u2026hint: id(n) = set1[n]<\/p>\n\n\n\n<p>Why is this important? It means that a hacker can just enumerate through all the customer IDs and using the IDOR vulnerability get details for the 1st customer, then the 2nd, the 3rd all the way to the <em>n<\/em>th. For Optus, n was roughly 10 million\u2026<\/p>\n\n\n\n<p>A hacker doesn\u2019t need to guess at the user IDs. He or she can just loop through them all.<\/p>\n\n\n\n<p>If you use integer primary keys. This is important for you! Integer primary keys are enumerable!&nbsp;<\/p>\n\n\n\n<h3><strong>What do you need to do, right now?<\/strong><\/h3>\n\n\n\n<p><strong>Secure the unsecured<\/strong><\/p>\n\n\n\n<p>The obvious one is to secure your endpoints, don\u2019t have unnecessarily open endpoints. They introduce vectors of attack that are simply not needed. Review any endpoints that have no authentication and authorisation.&nbsp;<\/p>\n\n\n\n<p><strong>Can I just get rid of enumerable keys?<\/strong><\/p>\n\n\n\n<p>No. Apart from being quite a huge undertaking, it doesn\u2019t guarantee that those primary keys are not exposed elsewhere.. A great example would be trying to split a fare through Uber, you need to search and select another user. This means Uber needs to expose some form of customer Identifier.<\/p>\n\n\n\n<p>Just because your primary keys are not enumerable doesn\u2019t mean they are not exposed, on purpose and by design.<\/p>\n\n\n\n<p><strong>Fix any Insecure Direct Object Reference Vulnerabilities<\/strong><\/p>\n\n\n\n<p>Unfortunately IDOR types of vulnerabilities are implementation mistakes and there\u2019s not an easy security layer you can just adjust. Instead you\u2019ll need to change the implementation of the endpoints with this vulnerability.<\/p>\n\n\n\n<p>OWASP put together a proposal for a general solution to addressing this type of vulnerability.&nbsp;<\/p>\n\n\n\n<p>You can find the full writeup <a href=\"https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet.html\">here<\/a>.<\/p>\n\n\n\n<p>The gist is, don\u2019t use the real ids. Instead hash them! Any time you want to expose a primary key, don\u2019t! Instead use a hashed key and look it up on the server side.<\/p>\n\n\n\n<p>There are various paths to implementation out there, including building a hashtable on login of the ID\u2019s a user has access to and looking up the hashed ID in that table for it to resolve to an actual ID.&nbsp;<br>I highly recommend at least having a read of the OWASP <a href=\"https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet.html\">proposal<\/a> and the comments from Eric Sheridan.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Optus hack is the third biggest breach of Australian consumer Personally Identifiable Information (PII) in history, with 9.8m customer records being exposed.&nbsp; Optus maintains that the hack was a sophisticated attack, using rotating IP addresses to carry out the attack.&nbsp; The Minister For Cyber Security, Clare O\u2019Neil, and the Federal Government have slammed Optus, [&hellip;]<\/p>\n","protected":false},"author":32,"featured_media":12700,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[361,364,644],"tags":[199,656],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Optus API Hack - Analysis - Terem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/terem.tech\/optus-api-hack-analysis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Optus API Hack - Analysis - Terem\" \/>\n<meta property=\"og:description\" content=\"The Optus hack is the third biggest breach of Australian consumer Personally Identifiable Information (PII) in history, with 9.8m customer records being exposed.&nbsp; Optus maintains that the hack was a sophisticated attack, using rotating IP addresses to carry out the attack.&nbsp; The Minister For Cyber Security, Clare O\u2019Neil, and the Federal Government have slammed Optus, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/terem.tech\/optus-api-hack-analysis\/\" \/>\n<meta property=\"og:site_name\" content=\"Terem\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/pages\/Terem-Technologies\/260762007388800\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-29T20:15:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-10-06T23:34:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/terem.tech\/wp-content\/uploads\/2022\/09\/optus-api-hack.png\" \/>\n\t<meta property=\"og:image:width\" content=\"602\" \/>\n\t<meta property=\"og:image:height\" content=\"602\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"James Piskorz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/terem.tech\/#organization\",\"name\":\"Terem\",\"url\":\"https:\/\/terem.tech\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/pages\/Terem-Technologies\/260762007388800\",\"https:\/\/www.linkedin.com\/company\/terem-technologies\",\"https:\/\/www.youtube.com\/channel\/UClTRWiXCjzWnQUMJ3HAJK8w\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/terem.tech\/#logo\",\"inLanguage\":\"en-AU\",\"url\":\"https:\/\/terem.tech\/wp-content\/uploads\/2022\/01\/terem_logo_dark_1.png\",\"contentUrl\":\"https:\/\/terem.tech\/wp-content\/uploads\/2022\/01\/terem_logo_dark_1.png\",\"width\":512,\"height\":204,\"caption\":\"Terem\"},\"image\":{\"@id\":\"https:\/\/terem.tech\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/terem.tech\/#website\",\"url\":\"https:\/\/terem.tech\/\",\"name\":\"Terem\",\"description\":\"Tech Product Development and Strategy Firm\",\"publisher\":{\"@id\":\"https:\/\/terem.tech\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/terem.tech\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-AU\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/terem.tech\/optus-api-hack-analysis\/#primaryimage\",\"inLanguage\":\"en-AU\",\"url\":\"https:\/\/terem.tech\/wp-content\/uploads\/2022\/09\/optus-api-hack.png\",\"contentUrl\":\"https:\/\/terem.tech\/wp-content\/uploads\/2022\/09\/optus-api-hack.png\",\"width\":602,\"height\":602,\"caption\":\"Optus API Hack\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/terem.tech\/optus-api-hack-analysis\/#webpage\",\"url\":\"https:\/\/terem.tech\/optus-api-hack-analysis\/\",\"name\":\"Optus API Hack - Analysis - Terem\",\"isPartOf\":{\"@id\":\"https:\/\/terem.tech\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/terem.tech\/optus-api-hack-analysis\/#primaryimage\"},\"datePublished\":\"2022-09-29T20:15:15+00:00\",\"dateModified\":\"2022-10-06T23:34:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/terem.tech\/optus-api-hack-analysis\/#breadcrumb\"},\"inLanguage\":\"en-AU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/terem.tech\/optus-api-hack-analysis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/terem.tech\/optus-api-hack-analysis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/terem.tech\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"APIs\",\"item\":\"https:\/\/terem.tech\/category\/apis\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Optus API Hack &#8211; Analysis\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/terem.tech\/optus-api-hack-analysis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/terem.tech\/optus-api-hack-analysis\/#webpage\"},\"author\":{\"@id\":\"https:\/\/terem.tech\/#\/schema\/person\/41f887aed2bccb3c96e453e6afd02bb0\"},\"headline\":\"Optus API Hack &#8211; Analysis\",\"datePublished\":\"2022-09-29T20:15:15+00:00\",\"dateModified\":\"2022-10-06T23:34:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/terem.tech\/optus-api-hack-analysis\/#webpage\"},\"wordCount\":1393,\"publisher\":{\"@id\":\"https:\/\/terem.tech\/#organization\"},\"image\":{\"@id\":\"https:\/\/terem.tech\/optus-api-hack-analysis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/terem.tech\/wp-content\/uploads\/2022\/09\/optus-api-hack.png\",\"keywords\":[\"API\",\"security\"],\"articleSection\":[\"APIs\",\"Blog\",\"Software Engineering\"],\"inLanguage\":\"en-AU\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/terem.tech\/#\/schema\/person\/41f887aed2bccb3c96e453e6afd02bb0\",\"name\":\"James Piskorz\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/terem.tech\/#personlogo\",\"inLanguage\":\"en-AU\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7bc67355c29f2cb7278e305aa63437f0?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7bc67355c29f2cb7278e305aa63437f0?s=96&r=g\",\"caption\":\"James Piskorz\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Optus API Hack - Analysis - Terem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/terem.tech\/optus-api-hack-analysis\/","og_locale":"en_US","og_type":"article","og_title":"Optus API Hack - Analysis - Terem","og_description":"The Optus hack is the third biggest breach of Australian consumer Personally Identifiable Information (PII) in history, with 9.8m customer records being exposed.&nbsp; Optus maintains that the hack was a sophisticated attack, using rotating IP addresses to carry out the attack.&nbsp; The Minister For Cyber Security, Clare O\u2019Neil, and the Federal Government have slammed Optus, [&hellip;]","og_url":"https:\/\/terem.tech\/optus-api-hack-analysis\/","og_site_name":"Terem","article_publisher":"http:\/\/www.facebook.com\/pages\/Terem-Technologies\/260762007388800","article_published_time":"2022-09-29T20:15:15+00:00","article_modified_time":"2022-10-06T23:34:11+00:00","og_image":[{"width":602,"height":602,"url":"https:\/\/terem.tech\/wp-content\/uploads\/2022\/09\/optus-api-hack.png","path":"\/home\/teremtec\/public_html\/wp-content\/uploads\/2022\/09\/optus-api-hack.png","size":"full","id":12700,"alt":"Optus API Hack","pixels":362404,"type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"James Piskorz","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/terem.tech\/#organization","name":"Terem","url":"https:\/\/terem.tech\/","sameAs":["http:\/\/www.facebook.com\/pages\/Terem-Technologies\/260762007388800","https:\/\/www.linkedin.com\/company\/terem-technologies","https:\/\/www.youtube.com\/channel\/UClTRWiXCjzWnQUMJ3HAJK8w"],"logo":{"@type":"ImageObject","@id":"https:\/\/terem.tech\/#logo","inLanguage":"en-AU","url":"https:\/\/terem.tech\/wp-content\/uploads\/2022\/01\/terem_logo_dark_1.png","contentUrl":"https:\/\/terem.tech\/wp-content\/uploads\/2022\/01\/terem_logo_dark_1.png","width":512,"height":204,"caption":"Terem"},"image":{"@id":"https:\/\/terem.tech\/#logo"}},{"@type":"WebSite","@id":"https:\/\/terem.tech\/#website","url":"https:\/\/terem.tech\/","name":"Terem","description":"Tech Product Development and Strategy Firm","publisher":{"@id":"https:\/\/terem.tech\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/terem.tech\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-AU"},{"@type":"ImageObject","@id":"https:\/\/terem.tech\/optus-api-hack-analysis\/#primaryimage","inLanguage":"en-AU","url":"https:\/\/terem.tech\/wp-content\/uploads\/2022\/09\/optus-api-hack.png","contentUrl":"https:\/\/terem.tech\/wp-content\/uploads\/2022\/09\/optus-api-hack.png","width":602,"height":602,"caption":"Optus API Hack"},{"@type":"WebPage","@id":"https:\/\/terem.tech\/optus-api-hack-analysis\/#webpage","url":"https:\/\/terem.tech\/optus-api-hack-analysis\/","name":"Optus API Hack - Analysis - Terem","isPartOf":{"@id":"https:\/\/terem.tech\/#website"},"primaryImageOfPage":{"@id":"https:\/\/terem.tech\/optus-api-hack-analysis\/#primaryimage"},"datePublished":"2022-09-29T20:15:15+00:00","dateModified":"2022-10-06T23:34:11+00:00","breadcrumb":{"@id":"https:\/\/terem.tech\/optus-api-hack-analysis\/#breadcrumb"},"inLanguage":"en-AU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/terem.tech\/optus-api-hack-analysis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/terem.tech\/optus-api-hack-analysis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/terem.tech\/"},{"@type":"ListItem","position":2,"name":"APIs","item":"https:\/\/terem.tech\/category\/apis\/"},{"@type":"ListItem","position":3,"name":"Optus API Hack &#8211; Analysis"}]},{"@type":"Article","@id":"https:\/\/terem.tech\/optus-api-hack-analysis\/#article","isPartOf":{"@id":"https:\/\/terem.tech\/optus-api-hack-analysis\/#webpage"},"author":{"@id":"https:\/\/terem.tech\/#\/schema\/person\/41f887aed2bccb3c96e453e6afd02bb0"},"headline":"Optus API Hack &#8211; Analysis","datePublished":"2022-09-29T20:15:15+00:00","dateModified":"2022-10-06T23:34:11+00:00","mainEntityOfPage":{"@id":"https:\/\/terem.tech\/optus-api-hack-analysis\/#webpage"},"wordCount":1393,"publisher":{"@id":"https:\/\/terem.tech\/#organization"},"image":{"@id":"https:\/\/terem.tech\/optus-api-hack-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/terem.tech\/wp-content\/uploads\/2022\/09\/optus-api-hack.png","keywords":["API","security"],"articleSection":["APIs","Blog","Software Engineering"],"inLanguage":"en-AU"},{"@type":"Person","@id":"https:\/\/terem.tech\/#\/schema\/person\/41f887aed2bccb3c96e453e6afd02bb0","name":"James Piskorz","image":{"@type":"ImageObject","@id":"https:\/\/terem.tech\/#personlogo","inLanguage":"en-AU","url":"https:\/\/secure.gravatar.com\/avatar\/7bc67355c29f2cb7278e305aa63437f0?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7bc67355c29f2cb7278e305aa63437f0?s=96&r=g","caption":"James Piskorz"}}]}},"_links":{"self":[{"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/posts\/12697"}],"collection":[{"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/comments?post=12697"}],"version-history":[{"count":3,"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/posts\/12697\/revisions"}],"predecessor-version":[{"id":12701,"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/posts\/12697\/revisions\/12701"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/media\/12700"}],"wp:attachment":[{"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/media?parent=12697"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/categories?post=12697"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/terem.tech\/wp-json\/wp\/v2\/tags?post=12697"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}