[{"data":1,"prerenderedAt":2965},["ShallowReactive",2],{"application-flags":3,"navbar":7,"always-visible-banner":36,"navbar-about-highlight":108,"navbar-resource-highlight":182,"blog/cross-idp-impersonation":226},[4],{"name":5,"enabled":6},"maintenanceMode",false,[8],{"createdDate":9,"id":10,"name":11,"modelId":12,"published":13,"query":14,"data":15,"variations":20,"lastUpdated":21,"firstPublished":22,"testRatio":23,"createdBy":24,"lastUpdatedBy":25,"folders":26,"meta":27,"rev":35},1742208588866,"1c7a4e423bf54ac1a328bb4063459ef2","Banner","1c6207a5f24948ab82d4a0b17f251193","published",[],{"type":16,"url":17,"text":18,"link":19},"web-banner","https://pushsecurity.com/resources/browser-attacks-report","Get our latest report analyzing browser attack techniques in 2026",{},{},1774258294825,1742208637545,1,"CydmZnOWU1XuAaLhEDCoYNM4Z8W2","jKjF9r5jcvXU8tzZEfFQm31Iyvr2",[],{"kind":28,"lastPreviewUrl":29,"breakpoints":30,"hasAutosaves":34},"data","",{"xsmall":31,"small":32,"medium":33},320,640,768,true,"ga0kpxjhh76",{"createdDate":37,"id":38,"name":39,"modelId":40,"published":13,"stageModifiedSincePublish":6,"query":41,"data":42,"variations":97,"lastUpdated":98,"firstPublished":99,"testRatio":23,"createdBy":100,"lastUpdatedBy":101,"folders":102,"meta":103,"rev":107},1774965361051,"fd266d0172cc47429be7ad10f48c99ad","always visible banner","0678d178ec8b41efb8a23c09dba7874d",[],{"ctaText":43,"text":44,"url":29,"blocks":45,"state":93},"ewrererw","testrfesssssssssss",[46,73,81],{"@type":47,"@version":48,"id":49,"component":50,"responsiveStyles":63},"@builder.io/sdk:Element",2,"builder-ca12c06a52de41d7b8743da53118cd38",{"name":51,"tag":51,"options":52,"isRSC":62},"TopBannerContent",{"text":53,"ctaText":54,"url":55,"mainText":56,"cta":59},"New Webinar Series: Join John Hammond, Troy Hunt, and Matt Johansen for the State of Browser Attacks","Save Your Spot","https://pushsecurity.com/webinar/state-of-browser-security",{"content":57,"fontSize":58},"\u003Cp>Meet Push's browser security experts at BlackHat 2026.\u003C/p>","text-base",{"content":60,"fontSize":58,"url":61},"\u003Cp>Book a meeting →\u003C/p>","https://pushsecurity.com/events/blackhat-2026-meeting",null,{"large":64},{"display":65,"flexDirection":66,"position":67,"flexShrink":68,"boxSizing":69,"marginTop":70,"marginBottom":70,"fontSize":71,"fontWeight":72},"flex","column","relative","0","border-box",".56rem","1.125rem","700",{"@type":47,"@version":48,"id":74,"component":75,"responsiveStyles":79},"builder-a2e1f4b9f30b464bb814d7f5de5b0aa7",{"name":76,"options":77,"isRSC":62},"Custom Code",{"code":78,"scriptsClientOnly":6},"\u003Cstyle>\n  .top-banner.bg-web-orange{background:rgb(114, 79, 255);}\n\u003C/style>\n",{"large":80},{"display":65,"flexDirection":66,"position":67,"flexShrink":68,"boxSizing":69},{"id":82,"@type":47,"tagName":83,"properties":84,"responsiveStyles":88},"builder-pixel-o503s4fpvk","img",{"src":85,"aria-hidden":86,"alt":29,"role":87,"width":68,"height":68},"https://cdn.builder.io/api/v1/pixel?apiKey=f3a1111ff5be48cdbb123cd9f5795a05","true","presentation",{"large":89},{"height":68,"width":68,"display":90,"opacity":68,"overflow":91,"pointerEvents":92},"block","hidden","none",{"deviceSize":94,"location":95},"large",{"path":29,"query":96},{},{},1783541846936,1774968080803,"ST0tXQM8slWpFrmioqKHmENB2qe2","kYgMv6WsbvfmlOUYqR2SFwGzw6e2",[],{"kind":104,"lastPreviewUrl":105,"hasLinks":6,"breakpoints":106,"hasErrors":6,"hasAutosaves":6},"component","https://pushsecurity.com/?builder.space=f3a1111ff5be48cdbb123cd9f5795a05&builder.user.permissions=read%2Ccreate%2Cpublish%2CeditDesigns%2CeditLayouts%2CeditLayers%2CeditContentPriority%2CeditFolders%2CcreateProjects%2CsendPullRequests&builder.user.role.name=Designer&builder.user.role.id=creator&builder.cachebust=true&builder.preview=always-visible-banner&builder.noCache=true&builder.allowTextEdit=true&__builder_editing__=true&builder.overrides.always-visible-banner=fd266d0172cc47429be7ad10f48c99ad&builder.overrides.fd266d0172cc47429be7ad10f48c99ad=fd266d0172cc47429be7ad10f48c99ad&builder.options.locale=Default",{"xsmall":31,"small":32,"medium":33},"kyujw1aptq",[109,145],{"createdDate":110,"id":111,"name":112,"modelId":113,"published":13,"stageModifiedSincePublish":6,"query":114,"data":115,"variations":138,"lastUpdated":139,"firstPublished":140,"testRatio":23,"createdBy":24,"lastUpdatedBy":24,"folders":141,"meta":142,"rev":144},1776247359804,"9136a8f18b3b4a6ba29b8653a99372b1","testimonial-inductive-automation","20d9eaa352304613b3d1a794b400703d",[],{"link":116,"type":117,"testimonialLink":118,"testimonial":119},{},"testimonial","/customer-stories/inductive-automation",{"@type":120,"id":121,"model":117,"value":122},"@builder.io/core:Reference","f028f2b685bb47cd8bf9e82a26dd5a79",{"query":123,"folders":124,"createdDate":125,"id":121,"name":126,"modelId":127,"published":13,"data":128,"variations":132,"lastUpdated":133,"firstPublished":134,"testRatio":23,"createdBy":100,"lastUpdatedBy":100,"meta":135,"rev":137},[],[],1735823466309,"We found Push to be more accurate when compared to competitors and the browser agent offered features that others couldn’t match.","42035571a56940ac98bff4544aa79aa5",{"author":129,"jobTitle":130,"quote":126,"image":131},"Jason Waits","\u003Cp>CISO at Inductive Automation\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Ff04c0c0689ce4a89ac0f0708d78c0a07",{},1735910703862,1735823501152,{"kind":28,"lastPreviewUrl":29,"breakpoints":136,"hasAutosaves":34},{"small":32,"medium":33},"e8bsg4qrgtu",{},1776247404986,1776247404973,[],{"breakpoints":143,"kind":28,"lastPreviewUrl":29,"hasAutosaves":6},{"xsmall":31,"small":32,"medium":33},"g9lqcuxphw7",{"createdDate":146,"id":147,"name":148,"modelId":113,"published":13,"meta":149,"stageModifiedSincePublish":6,"query":151,"data":152,"variations":178,"lastUpdated":179,"firstPublished":180,"testRatio":23,"createdBy":24,"lastUpdatedBy":24,"folders":181,"rev":144},1776255761419,"05a9322735fc427db12e2740e4302300","Report: 2026 Browser Attack Techniques",{"breakpoints":150,"kind":28,"lastPreviewUrl":29,"hasAutosaves":6},{"xsmall":31,"small":32,"medium":33},[],{"testimonial":153,"link":172,"type":175,"title":148,"description":176,"image":177},{"@type":120,"id":154,"model":117,"value":155},"192acbb1f9ca4cac918c0ec435a8bae3",{"query":156,"folders":157,"createdDate":158,"id":154,"name":159,"modelId":127,"published":13,"data":160,"variations":166,"lastUpdated":167,"firstPublished":168,"testRatio":23,"createdBy":100,"lastUpdatedBy":24,"meta":169,"rev":171},[],[],1728981467463,"Push does for identity what CrowdStrike did for the endpoint",{"video":161,"jobTitle":162,"author":163,"qoute":29,"quote":164,"image":165},"https://cdn.builder.io/o/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F8b30e8ca50064058bbaef0f3c6164575%2Fcompressed?apiKey=f3a1111ff5be48cdbb123cd9f5795a05&token=8b30e8ca50064058bbaef0f3c6164575&alt=media&optimized=true","\u003Cp>Deputy CISO at Microsoft\u003C/p>\u003Cp>Former LinkedIn, Slack, Palantir\u003C/p>","Geoff Belknap","Push does for identity what CrowdStrike did for the endpoint.","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F748f0ad0a5064a00a13f4721fcc8dea1",{},1742902158597,1728981782923,{"kind":28,"lastPreviewUrl":29,"breakpoints":170,"hasAutosaves":34},{"small":32,"medium":33},"ulhc0im1hfo",{"text":173,"url":174},"Download now","/resources/browser-attacks-report","resource","Learn about the latest techniques being used in the wild.","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F7b4a5ebf81d64e8c9d7fc35f6c96c4a9",{},1776255810913,1776255810900,[],[183,205],{"createdDate":184,"id":185,"name":148,"modelId":186,"published":13,"meta":187,"stageModifiedSincePublish":6,"query":189,"data":190,"variations":200,"lastUpdated":201,"firstPublished":202,"testRatio":23,"createdBy":24,"lastUpdatedBy":24,"folders":203,"rev":204},1776256900280,"1f429607996e4e5fae8fe3f9b9610e55","4829faa81e7c4ee8bd2d000e160e8d3c",{"breakpoints":188,"kind":28,"lastPreviewUrl":29,"hasAutosaves":6},{"xsmall":31,"small":32,"medium":33},[],{"testimonial":191,"link":199,"type":175,"title":148,"description":176,"image":177},{"@type":120,"id":154,"model":117,"value":192},{"query":193,"folders":194,"createdDate":158,"id":154,"name":159,"modelId":127,"published":13,"data":195,"variations":196,"lastUpdated":167,"firstPublished":168,"testRatio":23,"createdBy":100,"lastUpdatedBy":24,"meta":197,"rev":171},[],[],{"video":161,"jobTitle":162,"author":163,"qoute":29,"quote":164,"image":165},{},{"kind":28,"lastPreviewUrl":29,"breakpoints":198,"hasAutosaves":34},{"small":32,"medium":33},{"text":173,"url":174},{},1776256937553,1776256937540,[],"xggsv10v1q9",{"createdDate":206,"id":207,"name":208,"modelId":186,"published":13,"stageModifiedSincePublish":6,"query":209,"data":210,"variations":220,"lastUpdated":221,"firstPublished":222,"testRatio":23,"createdBy":24,"lastUpdatedBy":24,"folders":223,"meta":224,"rev":204},1776256949234,"ce043785b71b4ece98eac811ecf4ba10","inductive-automation",[],{"link":211,"type":117,"testimonial":212,"testimonialLink":118},{},{"@type":120,"id":121,"model":117,"value":213},{"query":214,"folders":215,"createdDate":125,"id":121,"name":126,"modelId":127,"published":13,"data":216,"variations":217,"lastUpdated":133,"firstPublished":134,"testRatio":23,"createdBy":100,"lastUpdatedBy":100,"meta":218,"rev":137},[],[],{"author":129,"jobTitle":130,"quote":126,"image":131},{},{"kind":28,"lastPreviewUrl":29,"breakpoints":219,"hasAutosaves":34},{"small":32,"medium":33},{},1776256974140,1776256974130,[],{"breakpoints":225,"kind":28,"lastPreviewUrl":29,"hasAutosaves":6},{"xsmall":31,"small":32,"medium":33},{"id":227,"title":228,"authorsCollection":229,"content":237,"extension":1207,"faqItemsCollection":1208,"faqTitle":62,"featured":6,"hashTags":62,"meta":1210,"metaTitle":1211,"ogImage":1212,"publishedDate":1213,"relatedBlogPostsCollection":1214,"slug":2941,"stem":2942,"subtitle":62,"summary":2943,"synopsis":2954,"sys":2955,"tagsCollection":2958,"__hash__":2964},"blog/blog/cross-idp-impersonation.json","Cross-IdP impersonation: Hijacking SSO to access downstream apps",{"items":230},[231],{"fullName":232,"firstName":233,"jobTitle":234,"profilePicture":235},"Dan Green","Dan","Threat Research",{"url":236},"https://images.ctfassets.net/y1cdw1ablpvd/7jik1VhFgA3kgzXBXTm2Vw/fcd8c171da644903d0827eafcfbcaad0/Dan_Headshot_2025.png",{"json":238,"links":1153},{"nodeType":239,"data":240,"content":241},"document",{},[242,251,258,292,299,303,311,321,341,348,355,364,371,378,403,410,417,458,465,468,475,513,519,526,533,536,544,551,584,590,597,600,608,628,635,642,662,665,673,693,700,716,732,735,743,763,770,777,870,877,883,890,897,930,937,940,948,955,962,995,1002,1009,1012,1020,1040,1047,1054,1097,1103,1110,1129,1135,1141,1147],{"nodeType":243,"data":244,"content":245},"paragraph",{},[246],{"nodeType":247,"value":248,"marks":249,"data":250},"text","Two stories have hit the headlines in recent months involving attackers and researchers, demonstrating ways of taking over a SaaS account by accessing it using an SSO login from an IdP that you’ve never used before.",[],{},{"nodeType":243,"data":252,"content":253},{},[254],{"nodeType":247,"value":255,"marks":256,"data":257},"Yes, you read that right. An attacker created an IdP account on an IdP that you don’t use. And because the account matched your actual company domain, they used it to log into your actual downstream accounts on the apps that you use. ",[],{},{"nodeType":243,"data":259,"content":260},{},[261,265,274,278,288],{"nodeType":247,"value":262,"marks":263,"data":264},"We're calling this technique ",[],{},{"nodeType":266,"data":267,"content":269},"hyperlink",{"uri":268},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/cross-idp_impersonation/description.md",[270],{"nodeType":247,"value":271,"marks":272,"data":273},"cross-IdP impersonation",[],{},{"nodeType":247,"value":275,"marks":276,"data":277},". If you’re familiar with our other research, this is basically ",[],{},{"nodeType":266,"data":279,"content":281},{"uri":280},"https://pushsecurity.com/blog/ghost-logins-when-forgotten-identities-come-back-to-haunt-you/",[282],{"nodeType":247,"value":283,"marks":284,"data":287},"ghost logins",[285],{"type":286},"underline",{},{"nodeType":247,"value":289,"marks":290,"data":291}," on steroids — you’re effectively making your own! ",[],{},{"nodeType":243,"data":293,"content":294},{},[295],{"nodeType":247,"value":296,"marks":297,"data":298},"Let’s take a look at some examples.",[],{},{"nodeType":300,"data":301,"content":302},"hr",{},[],{"nodeType":304,"data":305,"content":306},"heading-1",{},[307],{"nodeType":247,"value":308,"marks":309,"data":310},"Cross-IdP impersonation in the wild",[],{},{"nodeType":312,"data":313,"content":314},"heading-2",{},[315],{"nodeType":247,"value":316,"marks":317,"data":320},"Spoofing Zendesk support emails and infiltrating connected apps (via Apple SSO)",[318],{"type":319},"bold",{},{"nodeType":243,"data":322,"content":323},{},[324,328,337],{"nodeType":247,"value":325,"marks":326,"data":327},"A 15-year-old researcher was able to ",[],{},{"nodeType":266,"data":329,"content":331},{"uri":330},"https://gist.github.com/hackermondev/68ec8ed145fcee49d2f5e2b9d2cf2e52",[332],{"nodeType":247,"value":333,"marks":334,"data":336},"access Zendesk support ticket history via spoofing a company’s support email, and later use it to access connected apps",[335],{"type":286},{},{"nodeType":247,"value":338,"marks":339,"data":340}," (Slack, in this case) via SSO, successfully targeting hundreds of companies.  ",[],{},{"nodeType":243,"data":342,"content":343},{},[344],{"nodeType":247,"value":345,"marks":346,"data":347},"The attack is based around the fact that Zendesk support tickets are easy to enumerate. The typical method of setting up Zendesk is to have your existing support email address (e.g. support@company.com) forward emails to Zendesk. ",[],{},{"nodeType":243,"data":349,"content":350},{},[351],{"nodeType":247,"value":352,"marks":353,"data":354},"The researcher was able to abuse this feature to create an account for an existing company domain on an IdP not currently being used by the company, and then use that account to authenticate to a third-party app used by the company. ",[],{},{"nodeType":356,"data":357,"content":363},"embedded-entry-block",{"target":358},{"sys":359},{"id":360,"type":361,"linkType":362},"3A6fHQ0XB2qAjQdJGvAb9N","Link","Entry",[],{"nodeType":243,"data":365,"content":366},{},[367],{"nodeType":247,"value":368,"marks":369,"data":370},"The researcher found that, although Zendesk had started blocking emails from ‘noreply@’ addresses (probably to prevent this kind of attack), Apple sent its verification emails from an ‘appleid@’ address, making the attack possible when using Apple IdP.",[],{},{"nodeType":243,"data":372,"content":373},{},[374],{"nodeType":247,"value":375,"marks":376,"data":377},"There’s a couple of things to note here:",[],{},{"nodeType":379,"data":380,"content":381},"unordered-list",{},[382,393],{"nodeType":383,"data":384,"content":385},"list-item",{},[386],{"nodeType":243,"data":387,"content":388},{},[389],{"nodeType":247,"value":390,"marks":391,"data":392},"Apple could be swapped out for any IdP that doesn’t send verification emails from a ‘noreply@’ address.",[],{},{"nodeType":383,"data":394,"content":395},{},[396],{"nodeType":243,"data":397,"content":398},{},[399],{"nodeType":247,"value":400,"marks":401,"data":402},"Slack could be swapped out for just about any downstream SaaS app. ",[],{},{"nodeType":243,"data":404,"content":405},{},[406],{"nodeType":247,"value":407,"marks":408,"data":409},"Taking a step back — what if an attacker had discovered this exploit? The researcher states that, after Zendesk refused to acknowledge the issue through its bug bounty program operated by HackerOne, he individually contacted ‘hundreds’ of affected organizations. ",[],{},{"nodeType":243,"data":411,"content":412},{},[413],{"nodeType":247,"value":414,"marks":415,"data":416},"So that’s hundreds of vulnerable organizations, and potentially tens to hundreds of business apps per victim organization that could be accessed via Apple SSO. Any app that allows ‘sign in with Apple’ could be targeted where:",[],{},{"nodeType":379,"data":418,"content":419},{},[420,439],{"nodeType":383,"data":421,"content":422},{},[423],{"nodeType":243,"data":424,"content":425},{},[426,430,435],{"nodeType":247,"value":427,"marks":428,"data":429},"An app with an ",[],{},{"nodeType":247,"value":431,"marks":432,"data":434},"existing",[433],{"type":286},{},{"nodeType":247,"value":436,"marks":437,"data":438}," account belonging to the specific email & domain combination could be taken over.",[],{},{"nodeType":383,"data":440,"content":441},{},[442],{"nodeType":243,"data":443,"content":444},{},[445,449,454],{"nodeType":247,"value":446,"marks":447,"data":448},"A ",[],{},{"nodeType":247,"value":450,"marks":451,"data":453},"new",[452],{"type":286},{},{"nodeType":247,"value":455,"marks":456,"data":457}," account could also be created on apps allowing anyone with a company email to join the company tenant. ",[],{},{"nodeType":243,"data":459,"content":460},{},[461],{"nodeType":247,"value":462,"marks":463,"data":464},"It’s unclear whether Zendesk will have implemented a global fix for the issue either, as the vulnerability stems from a configuration option that could be remediated by disabling email collaboration, but is on by default. ",[],{},{"nodeType":300,"data":466,"content":467},{},[],{"nodeType":312,"data":469,"content":470},{},[471],{"nodeType":247,"value":472,"marks":473,"data":474},"Google domain verification bug similarities",[],{},{"nodeType":243,"data":476,"content":477},{},[478,482,491,495,500,504,509],{"nodeType":247,"value":479,"marks":480,"data":481},"The Zendesk attack shares some similarities with ",[],{},{"nodeType":266,"data":483,"content":485},{"uri":484},"https://krebsonsecurity.com/2024/07/crooks-bypassed-googles-email-verification-to-create-workspace-accounts-access-3rd-party-services/",[486],{"nodeType":247,"value":487,"marks":488,"data":490},"a recent (now resolved) Google email verification vulnerability",[489],{"type":286},{},{"nodeType":247,"value":492,"marks":493,"data":494}," which allowed a newly created Google account/domain to be used to authenticate to downstream apps via SSO — ",[],{},{"nodeType":247,"value":496,"marks":497,"data":499},"this time",[498],{"type":319},{},{"nodeType":247,"value":501,"marks":502,"data":503}," ",[],{},{"nodeType":247,"value":505,"marks":506,"data":508},"without verifying ownership of the domain",[507],{"type":319},{},{"nodeType":247,"value":510,"marks":511,"data":512},". ",[],{},{"nodeType":356,"data":514,"content":518},{"target":515},{"sys":516},{"id":517,"type":361,"linkType":362},"6EeN0uKbhz9daUOo4E6wzR",[],{"nodeType":243,"data":520,"content":521},{},[522],{"nodeType":247,"value":523,"marks":524,"data":525},"Whereas the Zendesk attack took advantage of Apple email configs, this attack was much more direct in that Google enabled SSO to downstream apps prior to domain verification. ",[],{},{"nodeType":243,"data":527,"content":528},{},[529],{"nodeType":247,"value":530,"marks":531,"data":532},"The Google attack is definitely a bug rather than abusing a feature, and has since been patched. But, we’re starting to see a concerning pattern emerge. ",[],{},{"nodeType":300,"data":534,"content":535},{},[],{"nodeType":304,"data":537,"content":538},{},[539],{"nodeType":247,"value":540,"marks":541,"data":543},"How big of a problem is this?",[542],{"type":319},{},{"nodeType":243,"data":545,"content":546},{},[547],{"nodeType":247,"value":548,"marks":549,"data":550},"First, let’s recap the general attack path:",[],{},{"nodeType":379,"data":552,"content":553},{},[554,564,574],{"nodeType":383,"data":555,"content":556},{},[557],{"nodeType":243,"data":558,"content":559},{},[560],{"nodeType":247,"value":561,"marks":562,"data":563},"The attacker signs up for an account on an app that functions as an IdP, linking it to the victim’s existing company email address via the ‘use existing email’ option.",[],{},{"nodeType":383,"data":565,"content":566},{},[567],{"nodeType":243,"data":568,"content":569},{},[570],{"nodeType":247,"value":571,"marks":572,"data":573},"The attacker either bypasses domain verification or verifies the domain via email (typically by clicking a link or entering a one-time password) either through an attack like the ones above, or by social engineering the victim user.",[],{},{"nodeType":383,"data":575,"content":576},{},[577],{"nodeType":243,"data":578,"content":579},{},[580],{"nodeType":247,"value":581,"marks":582,"data":583},"The attacker logs into an account on a downstream app using the ‘sign in with …’ SSO login option. ",[],{},{"nodeType":356,"data":585,"content":589},{"target":586},{"sys":587},{"id":588,"type":361,"linkType":362},"5lz0Nqq3j3Q1XasHYszRXy",[],{"nodeType":243,"data":591,"content":592},{},[593],{"nodeType":247,"value":594,"marks":595,"data":596},"Let’s look more closely at why this is a cause for concern.",[],{},{"nodeType":300,"data":598,"content":599},{},[],{"nodeType":312,"data":601,"content":602},{},[603],{"nodeType":247,"value":604,"marks":605,"data":607},"It gets around your most hardened IdP accounts",[606],{"type":319},{},{"nodeType":243,"data":609,"content":610},{},[611,615,624],{"nodeType":247,"value":612,"marks":613,"data":614},"The notion of IdP impersonation isn’t necessarily new. Take for example ",[],{},{"nodeType":266,"data":616,"content":618},{"uri":617},"https://sec.okta.com/articles/2023/08/cross-tenant-impersonation-prevention-and-detection",[619],{"nodeType":247,"value":620,"marks":621,"data":623},"cross-tenant impersonation",[622],{"type":286},{},{"nodeType":247,"value":625,"marks":626,"data":627},", which focuses on mapping an attacker-controlled Okta tenant to a compromised Okta tenant to give full access to connected user accounts and enable unrestricted lateral movement.",[],{},{"nodeType":243,"data":629,"content":630},{},[631],{"nodeType":247,"value":632,"marks":633,"data":634},"Cross-IdP impersonation, however, doesn’t require that you’ve already compromised an IdP admin account. You pick a user account (or multiple) that you want to take over, you enroll them with a new IdP matching the tenant and address structure, and then authenticate to whichever apps you’re interested in taking over. ",[],{},{"nodeType":243,"data":636,"content":637},{},[638],{"nodeType":247,"value":639,"marks":640,"data":641},"So, compromising your target’s main IdP isn’t necessary when the data and functionality that you’re most interested in lives in downstream apps. This means that even if your primary IdP is super locked down with phishing-resistant authentication (e.g. passkeys) this technique enables attackers to get around it. ",[],{},{"nodeType":243,"data":643,"content":644},{},[645,649,658],{"nodeType":247,"value":646,"marks":647,"data":648},"And a smart attacker who does their OSINT will identify potential app admins whose accounts to mirror, eliminating any noise that would be generated by privilege escalation & lateral movement attempts such as ",[],{},{"nodeType":266,"data":650,"content":652},{"uri":651},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/in-app_phishing/description.md",[653],{"nodeType":247,"value":654,"marks":655,"data":657},"in-app phishing.",[656],{"type":286},{},{"nodeType":247,"value":659,"marks":660,"data":661}," ",[],{},{"nodeType":300,"data":663,"content":664},{},[],{"nodeType":312,"data":666,"content":667},{},[668],{"nodeType":247,"value":669,"marks":670,"data":672},"App-based prevention measures are inconsistent",[671],{"type":319},{},{"nodeType":243,"data":674,"content":675},{},[676,680,689],{"nodeType":247,"value":677,"marks":678,"data":679},"It’s worth noting that this attack doesn’t work the same on all apps. At the point of using a new login method to access an app, ",[],{},{"nodeType":266,"data":681,"content":683},{"uri":682},"https://auth0.com/docs/manage-users/user-accounts/user-account-linking",[684],{"nodeType":247,"value":685,"marks":686,"data":688},"it is considered best practice to require re-verification",[687],{"type":286},{},{"nodeType":247,"value":690,"marks":691,"data":692}," — for example by logging in with the original login method, or approving the request via an email code or link. ",[],{},{"nodeType":243,"data":694,"content":695},{},[696],{"nodeType":247,"value":697,"marks":698,"data":699},"Requiring re-authentication with the original login method is probably game over for the attacker, but if the attacker has already found a way of verifying a new IdP via email, the latter option is probably less of an obstacle. ",[],{},{"nodeType":243,"data":701,"content":702},{},[703,707,712],{"nodeType":247,"value":704,"marks":705,"data":706},"But not all apps follow these best practices around adding new login methods. We tested a range of the most popular apps that our customers use by creating an account, adding a password and an SSO method, and subsequently adding another SSO method using a different IdP, and ",[],{},{"nodeType":247,"value":708,"marks":709,"data":711},"found that 60% (3 in 5) of the apps we tested do not require re-verification by default",[710],{"type":319},{},{"nodeType":247,"value":713,"marks":714,"data":715}," when adding a new SSO login method.",[],{},{"nodeType":717,"data":718,"content":719},"blockquote",{},[720],{"nodeType":243,"data":721,"content":722},{},[723,728],{"nodeType":247,"value":724,"marks":725,"data":727},"60% (3 in 5) of the apps we tested do not require re-verification by default",[726],{"type":319},{},{"nodeType":247,"value":729,"marks":730,"data":731}," when adding a new SSO login method",[],{},{"nodeType":300,"data":733,"content":734},{},[],{"nodeType":312,"data":736,"content":737},{},[738],{"nodeType":247,"value":739,"marks":740,"data":742},"There are more IdPs than you realize",[741],{"type":319},{},{"nodeType":243,"data":744,"content":745},{},[746,750,759],{"nodeType":247,"value":747,"marks":748,"data":749},"IdP accounts have always been a valuable target. Earlier this year we saw ",[],{},{"nodeType":266,"data":751,"content":753},{"uri":752},"https://www.bleepingcomputer.com/news/security/okta-warns-of-unprecedented-credential-stuffing-attacks-on-customers/",[754],{"nodeType":247,"value":755,"marks":756,"data":758},"a dramatic spike in the attacks on Okta accounts",[757],{"type":286},{},{"nodeType":247,"value":760,"marks":761,"data":762},", for example. But these accounts are often well protected with strong credentials (or passkeys) and MFA. ",[],{},{"nodeType":243,"data":764,"content":765},{},[766],{"nodeType":247,"value":767,"marks":768,"data":769},"In contrast, cross-IdP impersonation gives attackers a way of getting the benefit of an IdP compromise without needing to take over a locked down IdP account. ",[],{},{"nodeType":243,"data":771,"content":772},{},[773],{"nodeType":247,"value":774,"marks":775,"data":776},"Apps accept a wide variety of SSO login options. An app might support any combination of, for example:",[],{},{"nodeType":379,"data":778,"content":779},{},[780,790,800,810,820,830,840,850,860],{"nodeType":383,"data":781,"content":782},{},[783],{"nodeType":243,"data":784,"content":785},{},[786],{"nodeType":247,"value":787,"marks":788,"data":789},"Log in with Google",[],{},{"nodeType":383,"data":791,"content":792},{},[793],{"nodeType":243,"data":794,"content":795},{},[796],{"nodeType":247,"value":797,"marks":798,"data":799},"Log in with Facebook",[],{},{"nodeType":383,"data":801,"content":802},{},[803],{"nodeType":243,"data":804,"content":805},{},[806],{"nodeType":247,"value":807,"marks":808,"data":809},"Log in with Apple",[],{},{"nodeType":383,"data":811,"content":812},{},[813],{"nodeType":243,"data":814,"content":815},{},[816],{"nodeType":247,"value":817,"marks":818,"data":819},"Log in with X",[],{},{"nodeType":383,"data":821,"content":822},{},[823],{"nodeType":243,"data":824,"content":825},{},[826],{"nodeType":247,"value":827,"marks":828,"data":829},"Log in with Microsoft",[],{},{"nodeType":383,"data":831,"content":832},{},[833],{"nodeType":243,"data":834,"content":835},{},[836],{"nodeType":247,"value":837,"marks":838,"data":839},"Log in with GitHub",[],{},{"nodeType":383,"data":841,"content":842},{},[843],{"nodeType":243,"data":844,"content":845},{},[846],{"nodeType":247,"value":847,"marks":848,"data":849},"Log in with Okta ",[],{},{"nodeType":383,"data":851,"content":852},{},[853],{"nodeType":243,"data":854,"content":855},{},[856],{"nodeType":247,"value":857,"marks":858,"data":859},"Log in with SAML",[],{},{"nodeType":383,"data":861,"content":862},{},[863],{"nodeType":243,"data":864,"content":865},{},[866],{"nodeType":247,"value":867,"marks":868,"data":869},"Log in with SSO",[],{},{"nodeType":243,"data":871,"content":872},{},[873],{"nodeType":247,"value":874,"marks":875,"data":876},"And there are many, many IdPs — probably more than you realize — all of which could potentially be hijacked by an attacker to impersonate your organization.  ",[],{},{"nodeType":356,"data":878,"content":882},{"target":879},{"sys":880},{"id":881,"type":361,"linkType":362},"3EOOr4dVQoiPjl2ucUs1mA",[],{"nodeType":243,"data":884,"content":885},{},[886],{"nodeType":247,"value":887,"marks":888,"data":889},"But it’s not just about attackers creating new IdP accounts: What other IdPs might your users have inadvertently created? And are these accounts as securely configured as your primary company IdP (most commonly Okta, Microsoft Entra, or Google Workspace)?",[],{},{"nodeType":243,"data":891,"content":892},{},[893],{"nodeType":247,"value":894,"marks":895,"data":896},"In fact, there are a few different scenarios to be aware of here:",[],{},{"nodeType":379,"data":898,"content":899},{},[900,910,920],{"nodeType":383,"data":901,"content":902},{},[903],{"nodeType":243,"data":904,"content":905},{},[906],{"nodeType":247,"value":907,"marks":908,"data":909},"An attacker creates a new account on a previously unused IdP mapping to your company domain and email, and exploits a flaw to bypass domain verification.",[],{},{"nodeType":383,"data":911,"content":912},{},[913],{"nodeType":243,"data":914,"content":915},{},[916],{"nodeType":247,"value":917,"marks":918,"data":919},"An attacker creates a new account on a previously unused IdP mapping to your company domain and email, and social engineers the target user to convince them to complete the domain verification request. ",[],{},{"nodeType":383,"data":921,"content":922},{},[923],{"nodeType":243,"data":924,"content":925},{},[926],{"nodeType":247,"value":927,"marks":928,"data":929},"A legitimate user signs up for an account that functions as an IdP with their company email, using a weak password and no MFA. This account is later compromised by an attacker. ",[],{},{"nodeType":243,"data":931,"content":932},{},[933],{"nodeType":247,"value":934,"marks":935,"data":936},"In all of these cases, an attacker would be able to authenticate to downstream apps and take over user accounts. ",[],{},{"nodeType":300,"data":938,"content":939},{},[],{"nodeType":312,"data":941,"content":942},{},[943],{"nodeType":247,"value":944,"marks":945,"data":947},"We’re only scratching the surface of what’s possible",[946],{"type":319},{},{"nodeType":243,"data":949,"content":950},{},[951],{"nodeType":247,"value":952,"marks":953,"data":954},"The Zendesk attack demonstrates a creative way of abusing an app’s functionality, combined with the way in which the Apple IdP is configured. ",[],{},{"nodeType":243,"data":956,"content":957},{},[958],{"nodeType":247,"value":959,"marks":960,"data":961},"It would be naive to suggest that similar issues don’t exist for other IdPs. Or that apps other than Zendesk don’t have features that can be exploited.",[],{},{"nodeType":243,"data":963,"content":964},{},[965,969,978,982,991],{"nodeType":247,"value":966,"marks":967,"data":968},"For example, we’ve previously documented ",[],{},{"nodeType":266,"data":970,"content":972},{"uri":971},"https://pushsecurity.com/blog/nearly-invisible-attack-chain/#id-an-example-attack-zapier",[973],{"nodeType":247,"value":974,"marks":975,"data":977},"using Zapier to create malicious automated workflows",[976],{"type":286},{},{"nodeType":247,"value":979,"marks":980,"data":981}," to compromise integrated apps, or ",[],{},{"nodeType":266,"data":983,"content":985},{"uri":984},"https://pushsecurity.com/blog/oktajacking/",[986],{"nodeType":247,"value":987,"marks":988,"data":990},"changing the SAML configuration of an app",[989],{"type":286},{},{"nodeType":247,"value":992,"marks":993,"data":994}," to direct logins to a malicious Okta tenant. ",[],{},{"nodeType":243,"data":996,"content":997},{},[998],{"nodeType":247,"value":999,"marks":1000,"data":1001},"Until now, there hasn’t been much research in this space. It’s not surprising when we consider that this kind of bug bounty isn’t paying out, and I know of only a handful of forward-thinking security consultancies conducting any real offensive security testing with their clients in this space. ",[],{},{"nodeType":243,"data":1003,"content":1004},{},[1005],{"nodeType":247,"value":1006,"marks":1007,"data":1008},"All organizations should be taking SaaS and identity attacks seriously — a good starting point would be to normalize SaaS and IdP configuration testing as part of routine security assessments, as well as demonstrating in-app post exploitation activity to raise awareness of how direct and dangerous these attacks can be. ",[],{},{"nodeType":300,"data":1010,"content":1011},{},[],{"nodeType":304,"data":1013,"content":1014},{},[1015],{"nodeType":247,"value":1016,"marks":1017,"data":1019},"Expect more cross-IdP impersonation in future",[1018],{"type":319},{},{"nodeType":243,"data":1021,"content":1022},{},[1023,1027,1036],{"nodeType":247,"value":1024,"marks":1025,"data":1026},"With the ",[],{},{"nodeType":266,"data":1028,"content":1030},{"uri":1029},"https://pushsecurity.com/blog/identity-attacks-in-the-wild/#id-snowflake-june-2024",[1031],{"nodeType":247,"value":1032,"marks":1033,"data":1035},"success of the attacks on Snowflake customers",[1034],{"type":286},{},{"nodeType":247,"value":1037,"marks":1038,"data":1039}," it feels like attackers and researchers are starting to take note, and the research scrutiny is amping up. It would be wise to expect more of these attacks in future. ",[],{},{"nodeType":243,"data":1041,"content":1042},{},[1043],{"nodeType":247,"value":1044,"marks":1045,"data":1046},"Cross-IdP impersonation could be largely prevented if all apps required re-verification upon adding a new login method by default (specifically, requiring that you log in with the original method, not approving via email link/code). This is yet another example of the inconsistencies in SaaS authentication introducing vulnerabilities. ",[],{},{"nodeType":243,"data":1048,"content":1049},{},[1050],{"nodeType":247,"value":1051,"marks":1052,"data":1053},"As this is unlikely to happen anytime soon, to mitigate the threat of cross-IdP impersonation we recommend that you:",[],{},{"nodeType":379,"data":1055,"content":1056},{},[1057,1067,1077,1087],{"nodeType":383,"data":1058,"content":1059},{},[1060],{"nodeType":243,"data":1061,"content":1062},{},[1063],{"nodeType":247,"value":1064,"marks":1065,"data":1066},"Set email alerts for employees receiving IdP activation emails to their corporate mailbox and forward to your SIEM. This will provide visibility both of unauthorized IdPs being connected to your domain by employees (which can lead to your corporate apps and accounts being compromised via less secure accounts, such as their Apple, LinkedIn, X, etc.), and of attackers attempting to register a new IdP as part of an attack. ",[],{},{"nodeType":383,"data":1068,"content":1069},{},[1070],{"nodeType":243,"data":1071,"content":1072},{},[1073],{"nodeType":247,"value":1074,"marks":1075,"data":1076},"Warn users of the risks associated with creating new IdP accounts and connecting them to their primary corporate email (as well as the possibility of phishing scams designed to trick the user into completing the verification process or passing on a verification code). ",[],{},{"nodeType":383,"data":1078,"content":1079},{},[1080],{"nodeType":243,"data":1081,"content":1082},{},[1083],{"nodeType":247,"value":1084,"marks":1085,"data":1086},"Where configurable, require downstream applications to enforce re-verification when adding new SSO methods. Requiring login with the original method, rather than email approval, is a more secure approach.",[],{},{"nodeType":383,"data":1088,"content":1089},{},[1090],{"nodeType":243,"data":1091,"content":1092},{},[1093],{"nodeType":247,"value":1094,"marks":1095,"data":1096},"Where possible, prevent the conversion of personal accounts to corporate accounts within the main IdP providers. For example, Apple Business Manager recently released the ability to lock your domain and prevent new accounts being created, as well as locking the authentication to your preferred IdP (preventing local accounts from being created) — convenient timing!",[],{},{"nodeType":356,"data":1098,"content":1102},{"target":1099},{"sys":1100},{"id":1101,"type":361,"linkType":362},"56sqxSy9QuTxzOGvUmcYBK",[],{"nodeType":243,"data":1104,"content":1105},{},[1106],{"nodeType":247,"value":1107,"marks":1108,"data":1109},"However, your ability to prevent attackers from creating new accounts on IdPs and connecting them to your domain is going to vary from IdP to IdP, so complete remediation may not be possible. And unless handled carefully, joining multiple IdPs to your primary IdP has the potential to increase your attack surface, not reduce it!",[],{},{"nodeType":243,"data":1111,"content":1112},{},[1113,1117,1125],{"nodeType":247,"value":1114,"marks":1115,"data":1116},"If you want a bit more technical detail on how this technique can be combined with verification phishing to reliably create new IdP accounts, ",[],{},{"nodeType":266,"data":1118,"content":1120},{"uri":1119},"https://pushsecurity.com/blog/a-new-class-of-phishing-verification-phishing-and-cross-idp-impersonation/",[1121],{"nodeType":247,"value":1122,"marks":1123,"data":1124},"check out this blog post.",[],{},{"nodeType":247,"value":1126,"marks":1127,"data":1128}," Here's a quick demo of the attack chain to whet your appetite... ",[],{},{"nodeType":356,"data":1130,"content":1134},{"target":1131},{"sys":1132},{"id":1133,"type":361,"linkType":362},"1rfmqEdOlYeWCkpQE0c0IE",[],{"nodeType":243,"data":1136,"content":1137},{},[1138],{"nodeType":247,"value":29,"marks":1139,"data":1140},[],{},{"nodeType":356,"data":1142,"content":1146},{"target":1143},{"sys":1144},{"id":1145,"type":361,"linkType":362},"3MGuq0h7IfW7F2ueNbc5v4",[],{"nodeType":243,"data":1148,"content":1149},{},[1150],{"nodeType":247,"value":29,"marks":1151,"data":1152},[],{},{"entries":1154},{"hyperlink":1155,"inline":1156,"block":1157},[],[],[1158,1166,1171,1176,1184,1191,1200],{"sys":1159,"__typename":1160,"title":1161,"caption":1161,"layoutMode":62,"file":1162},{"id":360},"Image","Zendesk to Slack attack path (via Apple SSO)",{"url":1163,"width":1164,"height":1165},"https://images.ctfassets.net/y1cdw1ablpvd/4i4h3IKgVEPtLH5Egs8qND/4b0c1c8dea8b4c0a8721cfceb51b925d/image5.png",1535,690,{"sys":1167,"__typename":1160,"title":1168,"caption":1168,"layoutMode":62,"file":1169},{"id":517},"Google domain verification bypass",{"url":1170,"width":1164,"height":1165},"https://images.ctfassets.net/y1cdw1ablpvd/7EbqwEZZ6Z0J4bSmwAavvI/becb2d959771dfe75f86807779a1a933/image4.png",{"sys":1172,"__typename":1160,"title":1173,"caption":1173,"layoutMode":62,"file":1174},{"id":588},"Generic cross-IdP impersonation attack path",{"url":1175,"width":1164,"height":1165},"https://images.ctfassets.net/y1cdw1ablpvd/3fPWMDLgVomv5ePNfVRJl1/fb870e9bfef9d402791086c3ce01f8fb/ServiceNow_Attack_Path__2_.png",{"sys":1177,"__typename":1160,"title":1178,"caption":1179,"layoutMode":62,"file":1180},{"id":881},"Managed vs. unmanaged IdPs","Managed IdPs can be administered centrally by the organization (which owns and operates the IdP and the identities on it), whereas unmanaged ‘social’ IdPs are controlled by the vendor, and identities are owned and administered by the user.",{"url":1181,"width":1182,"height":1183},"https://images.ctfassets.net/y1cdw1ablpvd/6qDjvYcLbUxlC4w24VvDLO/4da66c4e755c9b1c00b285a5ab3f9c57/image1.png",1500,1000,{"sys":1185,"__typename":1160,"title":1186,"caption":1186,"layoutMode":62,"file":1187},{"id":1101},"Apple business manager update providing more options to manage verified domains",{"url":1188,"width":1189,"height":1190},"https://images.ctfassets.net/y1cdw1ablpvd/3NH2d6WMqAmPfrPMQas4e0/35676fdc69d7e91c3c1dd163fe3ff51d/image2.png",1394,942,{"sys":1192,"__typename":1193,"title":1194,"youTubeUrl":1195,"imagePlaceholder":1196},{"id":1133},"ExternalVideo","Verification Phishing & Cross-IdP Impersonation Demo","https://www.youtube.com/watch?v=53JMEmZV6ck",{"url":1197,"width":1198,"height":1199},"https://images.ctfassets.net/y1cdw1ablpvd/KXQAXbpFMRJprAkzoKhtx/ac370fb92687122022e753120bb7cb47/Slide_Front_Cover__20_.png",1920,1080,{"sys":1201,"__typename":1202,"type":1203,"ctaText":1204,"buttonLabel":1205,"buttonColour":1206,"buttonUrl":1119},{"id":1145},"CtaWidget","Custom","Learn how cross-IdP impersonation can be combined with verification phishing to bypass locked-down IdP accounts by phishing a single OTP","Read Blog","sunny orange","json",{"items":1209},[],{},"Cross-IdP impersonation: hijacking SSO using fraudulent IdPs",{"url":1175},"2024-11-19T00:00:00.000Z",{"items":1215},[1216,1748,2603],{"__typename":1217,"sys":1218,"content":1220,"title":1730,"synopsis":1731,"hashTags":62,"publishedDate":1732,"slug":1733,"tagsCollection":1734,"authorsCollection":1744},"BlogPosts",{"id":1219},"3N6eBccHWWc3cZWTZsaJVV",{"json":1221},{"nodeType":239,"data":1222,"content":1223},{},[1224,1256,1276,1283,1290,1293,1301,1308,1333,1340,1346,1353,1360,1393,1396,1404,1411,1431,1434,1442,1449,1456,1462,1481,1484,1492,1510,1517,1524,1544,1547,1555,1562,1569,1576,1579,1587,1594,1614,1621,1628,1635,1642,1649,1652,1660,1667,1710],{"nodeType":243,"data":1225,"content":1226},{},[1227,1231,1240,1244,1252],{"nodeType":247,"value":1228,"marks":1229,"data":1230},"We’ve been shouting about the risk posed by account takeover attacks on third party apps since we first released the ",[],{},{"nodeType":266,"data":1232,"content":1234},{"uri":1233},"https://github.com/pushsecurity/saas-attacks",[1235],{"nodeType":247,"value":1236,"marks":1237,"data":1239},"SaaS attack matrix",[1238],{"type":286},{},{"nodeType":247,"value":1241,"marks":1242,"data":1243}," in early 2023. 18 months later (and with some encouragement from the success of the ",[],{},{"nodeType":266,"data":1245,"content":1246},{"uri":1029},[1247],{"nodeType":247,"value":1248,"marks":1249,"data":1251},"attacks on Snowflake customers",[1250],{"type":286},{},{"nodeType":247,"value":1253,"marks":1254,"data":1255},") it feels like the security community has woken up to the risk — and attackers likewise have sensed the opportunity. ",[],{},{"nodeType":243,"data":1257,"content":1258},{},[1259,1263,1272],{"nodeType":247,"value":1260,"marks":1261,"data":1262},"Last week, it emerged that ",[],{},{"nodeType":266,"data":1264,"content":1266},{"uri":1265},"https://medium.com/@moblig/how-i-accessed-microsofts-servicenow-exposing-all-microsoft-employee-emails-chat-support-5f8d535eb63b",[1267],{"nodeType":247,"value":1268,"marks":1269,"data":1271},"bug bounty hunters were able to use stolen credentials from a TI platform to Microsoft’s ServiceNow tenant",[1270],{"type":286},{},{"nodeType":247,"value":1273,"marks":1274,"data":1275},", accessing 1,000s of support ticket descriptions and attachments, and 250k+ employee emails. ",[],{},{"nodeType":243,"data":1277,"content":1278},{},[1279],{"nodeType":247,"value":1280,"marks":1281,"data":1282},"But this isn’t specifically a Microsoft problem. The researcher could have picked from a long list of potential targets. If even Microsoft with their vast security resources can be caught off guard by this, what chance do other organizations have? If anything, it illustrates the scale of the challenge facing organizations when it comes to securing their identity surface. ",[],{},{"nodeType":243,"data":1284,"content":1285},{},[1286],{"nodeType":247,"value":1287,"marks":1288,"data":1289},"Let’s take a closer look at what we can learn from this attack — and what it tells us about the direction that identity attacks are (rapidly) heading in. ",[],{},{"nodeType":300,"data":1291,"content":1292},{},[],{"nodeType":304,"data":1294,"content":1295},{},[1296],{"nodeType":247,"value":1297,"marks":1298,"data":1300},"Taking over ServiceNow accounts through credential stuffing (via infostealers)",[1299],{"type":319},{},{"nodeType":243,"data":1302,"content":1303},{},[1304],{"nodeType":247,"value":1305,"marks":1306,"data":1307},"A bug bounty hunter was able to compromise Microsoft’s ServiceNow account using stolen credentials from historical infostealer infections, found using a commercial TI feed. ",[],{},{"nodeType":243,"data":1309,"content":1310},{},[1311,1315,1320,1324,1329],{"nodeType":247,"value":1312,"marks":1313,"data":1314},"The researcher was able to enumerate a login page for Microsoft at ",[],{},{"nodeType":247,"value":1316,"marks":1317,"data":1319},"microsoft.servicenow.com/login.do",[1318],{"type":286},{},{"nodeType":247,"value":1321,"marks":1322,"data":1323},", with the /login.do meaning that ",[],{},{"nodeType":247,"value":1325,"marks":1326,"data":1328},"SSO was enabled but not enforced",[1327],{"type":319},{},{"nodeType":247,"value":1330,"marks":1331,"data":1332},". At this point, the attacker was able to authenticate using the stolen credentials only (as the target account lacked MFA).",[],{},{"nodeType":243,"data":1334,"content":1335},{},[1336],{"nodeType":247,"value":1337,"marks":1338,"data":1339},"After logging in they were presented with a blank UI. However, because they now had an authenticated session, they were able to switch to the REST API, and subsequently access two key endpoints through which they were able to collect and exfiltrate sensitive data including 1,000s of support ticket attachments, over 250,000+ employee emails, and an xlsx file with historical ticket submissions to the MSRC team. ",[],{},{"nodeType":356,"data":1341,"content":1345},{"target":1342},{"sys":1343},{"id":1344,"type":361,"linkType":362},"1Q2cL7mJhQUx1it0tU3MhJ",[],{"nodeType":243,"data":1347,"content":1348},{},[1349],{"nodeType":247,"value":1350,"marks":1351,"data":1352},"Naturally, at this point the researcher ended their attack and sought out a bounty for their efforts. ",[],{},{"nodeType":243,"data":1354,"content":1355},{},[1356],{"nodeType":247,"value":1357,"marks":1358,"data":1359},"But a real attacker wouldn’t have stopped there. Immediately, you’d be thinking:",[],{},{"nodeType":379,"data":1361,"content":1362},{},[1363,1373,1383],{"nodeType":383,"data":1364,"content":1365},{},[1366],{"nodeType":243,"data":1367,"content":1368},{},[1369],{"nodeType":247,"value":1370,"marks":1371,"data":1372},"How many other organizations are likely impacted by this issue? Are there other credentials that correspond with these exposed login pages available online? ",[],{},{"nodeType":383,"data":1374,"content":1375},{},[1376],{"nodeType":243,"data":1377,"content":1378},{},[1379],{"nodeType":247,"value":1380,"marks":1381,"data":1382},"Are there any ways that I could turn this access into a privileged account takeover? Would I be able to access even more information that way? ",[],{},{"nodeType":383,"data":1384,"content":1385},{},[1386],{"nodeType":243,"data":1387,"content":1388},{},[1389],{"nodeType":247,"value":1390,"marks":1391,"data":1392},"How could this data be used to conduct further attacks? Would other criminal groups pay me for this information if I don’t want to do this myself? ",[],{},{"nodeType":300,"data":1394,"content":1395},{},[],{"nodeType":304,"data":1397,"content":1398},{},[1399],{"nodeType":247,"value":1400,"marks":1401,"data":1403},"This isn’t just a Microsoft problem",[1402],{"type":319},{},{"nodeType":243,"data":1405,"content":1406},{},[1407],{"nodeType":247,"value":1408,"marks":1409,"data":1410},"It seems unlikely that only Microsoft is affected here. Other ServiceNow tenants could have been taken over using the same approach. Other company credentials could be (will be) available online.",[],{},{"nodeType":243,"data":1412,"content":1413},{},[1414,1418,1427],{"nodeType":247,"value":1415,"marks":1416,"data":1417},"Using straightforward ",[],{},{"nodeType":266,"data":1419,"content":1421},{"uri":1420},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/subdomain_tenant_discovery/description.md",[1422],{"nodeType":247,"value":1423,"marks":1424,"data":1426},"tenant enumeration techniques",[1425],{"type":286},{},{"nodeType":247,"value":1428,"marks":1429,"data":1430}," and the list of ServiceNow named customers, it’s very easy to identify different customer tenants. And spending a few minutes using the same credential feed as the researcher, I found multiple organizations with many more breached credentials available linked to the same login.do page. ",[],{},{"nodeType":300,"data":1432,"content":1433},{},[],{"nodeType":304,"data":1435,"content":1436},{},[1437],{"nodeType":247,"value":1438,"marks":1439,"data":1441},"Similarities with Snowflake",[1440],{"type":319},{},{"nodeType":243,"data":1443,"content":1444},{},[1445],{"nodeType":247,"value":1446,"marks":1447,"data":1448},"There are no prizes for connecting this attack path with the infamous attacks on Snowflake customers earlier this year, which resulted in 165+ victims, and hundreds of millions of breached customer records. ",[],{},{"nodeType":243,"data":1450,"content":1451},{},[1452],{"nodeType":247,"value":1453,"marks":1454,"data":1455},"The Snowflake attack path was startlingly similar, and gives us a feel for what this attack could have turned into if conducted by a real attacker. ",[],{},{"nodeType":356,"data":1457,"content":1461},{"target":1458},{"sys":1459},{"id":1460,"type":361,"linkType":362},"2J92gFLs1wAAGC4nQTaiWu",[],{"nodeType":243,"data":1463,"content":1464},{},[1465,1469,1478],{"nodeType":247,"value":1466,"marks":1467,"data":1468},"Both attacks began with stolen credentials breached in historical infostealer infections. In Snowflake’s case, 80% of the credentials used were connected to infostealer infections dating back to 2020, ",[],{},{"nodeType":266,"data":1470,"content":1472},{"uri":1471},"https://cloud.google.com/blog/topics/threat-intelligence/unc5537-snowflake-data-theft-extortion",[1473],{"nodeType":247,"value":1474,"marks":1475,"data":1477},"according to Mandiant",[1476],{"type":286},{},{"nodeType":247,"value":510,"marks":1479,"data":1480},[],{},{"nodeType":300,"data":1482,"content":1483},{},[],{"nodeType":304,"data":1485,"content":1486},{},[1487],{"nodeType":247,"value":1488,"marks":1489,"data":1491},"Ghost logins strike again",[1490],{"type":319},{},{"nodeType":243,"data":1493,"content":1494},{},[1495,1498,1506],{"nodeType":247,"value":29,"marks":1496,"data":1497},[],{},{"nodeType":266,"data":1499,"content":1500},{"uri":280},[1501],{"nodeType":247,"value":1502,"marks":1503,"data":1505},"Ghost logins",[1504],{"type":286},{},{"nodeType":247,"value":1507,"marks":1508,"data":1509}," are one of the leading factors in successful credential stuffing attacks. Simply put, ghost logins are often-forgotten local logins that are tricky for security teams to manage and secure.  ",[],{},{"nodeType":243,"data":1511,"content":1512},{},[1513],{"nodeType":247,"value":1514,"marks":1515,"data":1516},"Ghost logins are a problem for security teams because they often lack best practice security configurations, with things like weak, previously breached, and reused passwords — and no MFA. ",[],{},{"nodeType":243,"data":1518,"content":1519},{},[1520],{"nodeType":247,"value":1521,"marks":1522,"data":1523},"Many organizations think that by migrating an app to use SSO, where they’ve enforced MFA at the IdP level, it’s job done. However, this usually doesn’t eliminate previously created local accounts, meaning they need to be manually unset. But because organizations often lack app-level visibility of account configuration and login methods (it’s simply not provided by most app vendors) these accounts can fly under the radar for extended periods — often until situations like this when they are compromised. ",[],{},{"nodeType":243,"data":1525,"content":1526},{},[1527,1531,1540],{"nodeType":247,"value":1528,"marks":1529,"data":1530},"Ghost logins were a particular problem in the Snowflake attacks because MFA could not be globally enforced at the time of the incident. This meant that local accounts would need to be manually unset using the SQL interface — which unhelpfully ",[],{},{"nodeType":266,"data":1532,"content":1534},{"uri":1533},"https://pushsecurity.com/resources/video/demonstrating-ghost-logins-in-snowflake-and-how-to-remediate-them/",[1535],{"nodeType":247,"value":1536,"marks":1537,"data":1539},"provided inaccurate information about the account status and took extended periods of time to update",[1538],{"type":286},{},{"nodeType":247,"value":1541,"marks":1542,"data":1543}," after a change had been made, creating uncertainty and confusion for responders. But this is just one example of many illustrating how difficult in-app identity management can be. ",[],{},{"nodeType":300,"data":1545,"content":1546},{},[],{"nodeType":304,"data":1548,"content":1549},{},[1550],{"nodeType":247,"value":1551,"marks":1552,"data":1554},"So what?",[1553],{"type":319},{},{"nodeType":243,"data":1556,"content":1557},{},[1558],{"nodeType":247,"value":1559,"marks":1560,"data":1561},"If we hadn’t realized it yet, attacks targeting third-party business apps are everywhere. It’s not just the flavor of the month — it’s here to stay. ",[],{},{"nodeType":243,"data":1563,"content":1564},{},[1565],{"nodeType":247,"value":1566,"marks":1567,"data":1568},"This is because it’s so easy for attackers to monetize these compromises. Log into app > dump data > profit. ",[],{},{"nodeType":243,"data":1570,"content":1571},{},[1572],{"nodeType":247,"value":1573,"marks":1574,"data":1575},"And the easiest way to achieve this isn’t through complex software exploits, it’s through identity attacks. In the ServiceNow case, using public information (that was available to the security team too) to log into an app. It’s too easy.",[],{},{"nodeType":300,"data":1577,"content":1578},{},[],{"nodeType":304,"data":1580,"content":1581},{},[1582],{"nodeType":247,"value":1583,"marks":1584,"data":1586},"Identity attacks are misunderstood",[1585],{"type":319},{},{"nodeType":243,"data":1588,"content":1589},{},[1590],{"nodeType":247,"value":1591,"marks":1592,"data":1593},"The researcher notes that, despite the severity of the bug, it wasn’t paid out under the MSRC bug bounty scheme. And while this is perhaps not a classic software exploit, you can’t argue about the risk it poses. This is just as impactful as any classic vulnerability, if not more so — because the technical barrier to entry is so much lower. ",[],{},{"nodeType":243,"data":1595,"content":1596},{},[1597,1601,1610],{"nodeType":247,"value":1598,"marks":1599,"data":1600},"Pat Gray of the Risky Biz podcast ",[],{},{"nodeType":266,"data":1602,"content":1604},{"uri":1603},"https://risky.biz/RB766/",[1605],{"nodeType":247,"value":1606,"marks":1607,"data":1609},"said of another recent disclosure",[1608],{"type":286},{},{"nodeType":247,"value":1611,"marks":1612,"data":1613},", where a 15 year-old researcher was able to turn a Zendesk ‘feature’ into hijacking Apple SSO to log into downstream SaaS, that there’s a lack of imagination in understanding how these third-party apps can be abused by an attacker. I’d tend to agree here.",[],{},{"nodeType":243,"data":1615,"content":1616},{},[1617],{"nodeType":247,"value":1618,"marks":1619,"data":1620},"Part of the challenge here is perhaps a lack of awareness of just how severe these issues are. Certainly in the Zendesk case, the initial disclosure (email spoofing) was thrown out, but when it was demonstrated that it could be used to take over downstream apps like Slack, affected companies were happy to pay up, and Zendesk (via HackerOne) got back in touch. ",[],{},{"nodeType":243,"data":1622,"content":1623},{},[1624],{"nodeType":247,"value":1625,"marks":1626,"data":1627},"If I were the researcher, I would have considered reporting this issue to ServiceNow too, not just Microsoft — as it undoubtedly affects many organizations. Yes, the fact that Microsoft credentials were accessible online is a Microsoft problem, but given the potential spread of organizations also susceptible to this attack, does the vendor not have a responsibility to help mitigate these attacks? I would hope that ServiceNow have contacted their customers to be cautious of experiencing an increase in credential stuffing attacks in the near future at the very least. ",[],{},{"nodeType":243,"data":1629,"content":1630},{},[1631],{"nodeType":247,"value":1632,"marks":1633,"data":1634},"There’s clearly a need for better security-by-default from SaaS vendors — things like mandatory MFA enforcement would be a good start. Because there are simply too many apps, and too many accounts to manage — and no effective centralized way of managing them across your SaaS inventory. ",[],{},{"nodeType":243,"data":1636,"content":1637},{},[1638],{"nodeType":247,"value":1639,"marks":1640,"data":1641},"It makes you wonder how many other apps are impacted by ‘on by default’ configurations that can be abused in ways we just don’t know about yet. Partly because nobody is really looking — bug bounties aren’t being paid out, and I know of only a handful of forward-thinking security consultancies conducting any real offensive security testing with their clients in this space. ",[],{},{"nodeType":243,"data":1643,"content":1644},{},[1645],{"nodeType":247,"value":1646,"marks":1647,"data":1648},"We are also reminded, again and again, that credential stuffing attacks are as effective as ever. Despite the investment in SSO, MFA, and all of the identity management and hygiene tools that organizations have nowadays, attackers and researchers keep finding gaps.  ",[],{},{"nodeType":300,"data":1650,"content":1651},{},[],{"nodeType":304,"data":1653,"content":1654},{},[1655],{"nodeType":247,"value":1656,"marks":1657,"data":1659},"What can you do about it? ",[1658],{"type":319},{},{"nodeType":243,"data":1661,"content":1662},{},[1663],{"nodeType":247,"value":1664,"marks":1665,"data":1666},"The most important step is to acknowledge the severity of the threat — and the ways that expected controls are failing.",[],{},{"nodeType":379,"data":1668,"content":1669},{},[1670,1680,1690,1700],{"nodeType":383,"data":1671,"content":1672},{},[1673],{"nodeType":243,"data":1674,"content":1675},{},[1676],{"nodeType":247,"value":1677,"marks":1678,"data":1679},"There will almost always be gaps in any organization’s identity security perimeter, simply because it’s almost impossible to have the required visibility — even if you’re Microsoft with your vast security resources.",[],{},{"nodeType":383,"data":1681,"content":1682},{},[1683],{"nodeType":243,"data":1684,"content":1685},{},[1686],{"nodeType":247,"value":1687,"marks":1688,"data":1689},"There will always be ways to abuse app features and configurations, and we’ve barely begun to scratch the surface of what’s now possible in the world of connected SaaS.",[],{},{"nodeType":383,"data":1691,"content":1692},{},[1693],{"nodeType":243,"data":1694,"content":1695},{},[1696],{"nodeType":247,"value":1697,"marks":1698,"data":1699},"These attacks are very difficult to intercept once an attacker is active inside an app, because there’s very little meaningful visibility. ",[],{},{"nodeType":383,"data":1701,"content":1702},{},[1703],{"nodeType":243,"data":1704,"content":1705},{},[1706],{"nodeType":247,"value":1707,"marks":1708,"data":1709},"Once they’re inside, the attack can be over incredibly quickly, and can be repeated across app tenants for maximum impact (again, just look at Snowflake). ",[],{},{"nodeType":243,"data":1711,"content":1712},{},[1713,1717,1726],{"nodeType":247,"value":1714,"marks":1715,"data":1716},"At Push, we’re focused primarily on detecting and intercepting account takeover for these reasons — it’s your earliest opportunity, and for many attacks it’s also your last. If you want to learn more, ",[],{},{"nodeType":266,"data":1718,"content":1720},{"uri":1719},"https://pushsecurity.com/blog/shifting-detection-left-for-more-effective-itdr/",[1721],{"nodeType":247,"value":1722,"marks":1723,"data":1725},"check out our recent design philosophy blog",[1724],{"type":286},{},{"nodeType":247,"value":1727,"marks":1728,"data":1729}," discussing why we’re shifting detection left to focus on account takeover.  ",[],{},"What we can learn from the recent ServiceNow/Microsoft disclosure","Account takeover on third-party apps is the flavor of the month for security researchers — what can we learn from it? ","2024-11-01T00:00:00.000Z","learning-from-the-servicenow-disclosure",{"items":1735},[1736,1740],{"sys":1737,"name":1739},{"id":1738},"6A5RXS31ZQx3PwryGb1IMy","Browser-based attacks",{"sys":1741,"name":1743},{"id":1742},"3pjES4THCIfSAwhGdNwBcy","Browser security",{"items":1745},[1746],{"fullName":232,"firstName":233,"jobTitle":234,"profilePicture":1747},{"url":236},{"__typename":1217,"sys":1749,"content":1751,"title":2587,"synopsis":2588,"hashTags":62,"publishedDate":2589,"slug":2590,"tagsCollection":2591,"authorsCollection":2599},{"id":1750},"174u87EYeKMKHzYYxBLlHO",{"json":1752},{"nodeType":239,"data":1753,"content":1754},{},[1755,1762,1769,1776,1807,1814,1821,1840,1847,1854,1872,1879,1886,1893,1899,1906,1949,1956,1963,1970,1993,2000,2007,2014,2062,2069,2076,2083,2090,2102,2109,2117,2124,2157,2164,2171,2178,2185,2255,2263,2270,2277,2311,2318,2326,2333,2340,2352,2368,2401,2421,2428,2446,2453,2460,2477,2484,2491,2498,2531,2538,2557,2575,2581],{"nodeType":243,"data":1756,"content":1757},{},[1758],{"nodeType":247,"value":1759,"marks":1760,"data":1761},"Identity attacks like phishing, credential stuffing, and session hijacking are now the leading cause of cyber security breaches, as attackers shift their attention to the sprawl of third-party applications and services that has become the backbone of business IT. ",[],{},{"nodeType":243,"data":1763,"content":1764},{},[1765],{"nodeType":247,"value":1766,"marks":1767,"data":1768},"The attacker’s goal in these attacks is account takeover: logging into a user account to access your company app tenant. From there, the attacker can usually achieve all of their objectives from inside the compromised app, usually involving dumping sensitive data with which to hold the company to ransom, or selling the data on underground criminal marketplaces. ",[],{},{"nodeType":243,"data":1770,"content":1771},{},[1772],{"nodeType":247,"value":1773,"marks":1774,"data":1775},"These attack techniques have been commonplace for over a decade — but the shift in attack context away from attacking endpoints (user devices and servers) to cloud services is seeing something of an identity attack renaissance. ",[],{},{"nodeType":243,"data":1777,"content":1778},{},[1779,1782,1790,1794,1803],{"nodeType":247,"value":29,"marks":1780,"data":1781},[],{},{"nodeType":266,"data":1783,"content":1785},{"uri":1784},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/ghost_logins/description.md",[1786],{"nodeType":247,"value":1502,"marks":1787,"data":1789},[1788],{"type":286},{},{"nodeType":247,"value":1791,"marks":1792,"data":1793}," are one of the leading factors in successful ",[],{},{"nodeType":266,"data":1795,"content":1797},{"uri":1796},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/credential_stuffing/description.md",[1798],{"nodeType":247,"value":1799,"marks":1800,"data":1802},"credential stuffing",[1801],{"type":286},{},{"nodeType":247,"value":1804,"marks":1805,"data":1806}," attacks driving account takeover.",[],{},{"nodeType":304,"data":1808,"content":1809},{},[1810],{"nodeType":247,"value":1811,"marks":1812,"data":1813},"Ghost logins 101",[],{},{"nodeType":243,"data":1815,"content":1816},{},[1817],{"nodeType":247,"value":1818,"marks":1819,"data":1820},"Simply put, ghost logins are often-forgotten alternative login methods that are tricky for security teams to manage and secure — because they don’t know about them. Because of this, they’re likely to possess weak configurations that make them susceptible to account takeover attacks. ",[],{},{"nodeType":243,"data":1822,"content":1823},{},[1824,1828,1836],{"nodeType":247,"value":1825,"marks":1826,"data":1827},"We found that ",[],{},{"nodeType":266,"data":1829,"content":1831},{"uri":1830},"https://pushsecurity.com/blog/how-many-vulnerable-identities-do-you-have/",[1832],{"nodeType":247,"value":1833,"marks":1834,"data":1835},"ghost logins are present in ~10% of the accounts per organization",[],{},{"nodeType":247,"value":1837,"marks":1838,"data":1839},". ",[],{},{"nodeType":312,"data":1841,"content":1842},{},[1843],{"nodeType":247,"value":1844,"marks":1845,"data":1846},"Why do ghost logins exist?",[],{},{"nodeType":243,"data":1848,"content":1849},{},[1850],{"nodeType":247,"value":1851,"marks":1852,"data":1853},"Identity management used to be something that was centrally contained and managed using an enterprise identity service like Active Directory. Most users probably only had one or two identities that you really cared about: the one they used to log into their company laptop and domain, and maybe also to log into a VPN. ",[],{},{"nodeType":243,"data":1855,"content":1856},{},[1857,1861,1868],{"nodeType":247,"value":1858,"marks":1859,"data":1860},"Now, there are ",[],{},{"nodeType":266,"data":1862,"content":1863},{"uri":1830},[1864],{"nodeType":247,"value":1865,"marks":1866,"data":1867},"200+ business apps in use per company, creating 1000s of sprawled identities",[],{},{"nodeType":247,"value":1869,"marks":1870,"data":1871}," across an ecosystem of business apps and services accessed over the internet.",[],{},{"nodeType":243,"data":1873,"content":1874},{},[1875],{"nodeType":247,"value":1876,"marks":1877,"data":1878},"Most businesses have tried to solve this problem with single sign on (SSO). The logic being that if you can use a single set of credentials (and therefore, a single identity) to access all of your business apps, and then secure those credentials with MFA, then this problem goes away. However…",[],{},{"nodeType":312,"data":1880,"content":1881},{},[1882],{"nodeType":247,"value":1883,"marks":1884,"data":1885},"SSO expectations versus reality",[],{},{"nodeType":243,"data":1887,"content":1888},{},[1889],{"nodeType":247,"value":1890,"marks":1891,"data":1892},"Unfortunately, the reality of SSO implementation is flawed. Most apps accept multiple login methods that can be configured — and used — simultaneously (yes, most apps don’t have proper session controls).  ",[],{},{"nodeType":356,"data":1894,"content":1898},{"target":1895},{"sys":1896},{"id":1897,"type":361,"linkType":362},"3sOz3HkiyJpY9nFtGCWEOV",[],{"nodeType":243,"data":1900,"content":1901},{},[1902],{"nodeType":247,"value":1903,"marks":1904,"data":1905},"This is made worse by the fact that:",[],{},{"nodeType":379,"data":1907,"content":1908},{},[1909,1919,1929,1939],{"nodeType":383,"data":1910,"content":1911},{},[1912],{"nodeType":243,"data":1913,"content":1914},{},[1915],{"nodeType":247,"value":1916,"marks":1917,"data":1918},"Most apps can't be locked down to restrict which login methods are accepted.",[],{},{"nodeType":383,"data":1920,"content":1921},{},[1922],{"nodeType":243,"data":1923,"content":1924},{},[1925],{"nodeType":247,"value":1926,"marks":1927,"data":1928},"Users often self-adopt apps, and default to a username and password (and typically miss out MFA). ",[],{},{"nodeType":383,"data":1930,"content":1931},{},[1932],{"nodeType":243,"data":1933,"content":1934},{},[1935],{"nodeType":247,"value":1936,"marks":1937,"data":1938},"SSO isn’t always possible if you aren’t using a supported IdP — and only one in three apps support SAML, the preferred enterprise-grade protocol.",[],{},{"nodeType":383,"data":1940,"content":1941},{},[1942],{"nodeType":243,"data":1943,"content":1944},{},[1945],{"nodeType":247,"value":1946,"marks":1947,"data":1948},"Even where SSO is possible, configuring an app for SSO doesn't automatically delete any legacy local logins.",[],{},{"nodeType":243,"data":1950,"content":1951},{},[1952],{"nodeType":247,"value":1953,"marks":1954,"data":1955},"Inevitably, this means that there are many situations in which users will create local accounts — typically with a username and password, and without MFA. This is how ghost logins are born.",[],{},{"nodeType":312,"data":1957,"content":1958},{},[1959],{"nodeType":247,"value":1960,"marks":1961,"data":1962},"How are ghost logins created? ",[],{},{"nodeType":243,"data":1964,"content":1965},{},[1966],{"nodeType":247,"value":1967,"marks":1968,"data":1969},"Ghost logins can be created in the following ways:",[],{},{"nodeType":379,"data":1971,"content":1972},{},[1973,1983],{"nodeType":383,"data":1974,"content":1975},{},[1976],{"nodeType":243,"data":1977,"content":1978},{},[1979],{"nodeType":247,"value":1980,"marks":1981,"data":1982},"A user self-adopts an app, setting up an account with a local username and password. The app is later adopted companywide and brought under SSO. This creates an additional SSO login method, likely as the default, but the local login will continue to exist unless explicitly disabled or deleted. ",[],{},{"nodeType":383,"data":1984,"content":1985},{},[1986],{"nodeType":243,"data":1987,"content":1988},{},[1989],{"nodeType":247,"value":1990,"marks":1991,"data":1992},"Secondary/backup login methods can often be added later in the app settings after logging in. This includes things like setting up a secondary email to send a login link to, or setting up API access to remove the need to authenticate altogether. ",[],{},{"nodeType":243,"data":1994,"content":1995},{},[1996],{"nodeType":247,"value":1997,"marks":1998,"data":1999},"So, ghost logins are very easily introduced through the normal course of app adoption and use by employees. ",[],{},{"nodeType":312,"data":2001,"content":2002},{},[2003],{"nodeType":247,"value":2004,"marks":2005,"data":2006},"Why do ghost logins pose a risk? ",[],{},{"nodeType":243,"data":2008,"content":2009},{},[2010],{"nodeType":247,"value":2011,"marks":2012,"data":2013},"Ghost logins pose a risk for a number of reasons, as they: ",[],{},{"nodeType":379,"data":2015,"content":2016},{},[2017,2032,2047],{"nodeType":383,"data":2018,"content":2019},{},[2020],{"nodeType":243,"data":2021,"content":2022},{},[2023,2028],{"nodeType":247,"value":2024,"marks":2025,"data":2027},"Typically have less secure configurations ",[2026],{"type":319},{},{"nodeType":247,"value":2029,"marks":2030,"data":2031},"than your preferred login method – and may be missing key controls like MFA.  ",[],{},{"nodeType":383,"data":2033,"content":2034},{},[2035],{"nodeType":243,"data":2036,"content":2037},{},[2038,2043],{"nodeType":247,"value":2039,"marks":2040,"data":2042},"Are effectively shadow logins",[2041],{"type":319},{},{"nodeType":247,"value":2044,"marks":2045,"data":2046}," – IT/security don’t know about them, and if using an IdP as your primary identity security interface, they won’t necessarily be visible without taking a deeper look at individual apps. ",[],{},{"nodeType":383,"data":2048,"content":2049},{},[2050],{"nodeType":243,"data":2051,"content":2052},{},[2053,2058],{"nodeType":247,"value":2054,"marks":2055,"data":2057},"Can be used simultaneously with SSO",[2056],{"type":319},{},{"nodeType":247,"value":2059,"marks":2060,"data":2061}," – so you can have an unrestricted number of concurrent sessions with SSO and non SSO logins active at the same time, without the user being kicked out of the previous session.",[],{},{"nodeType":243,"data":2063,"content":2064},{},[2065],{"nodeType":247,"value":2066,"marks":2067,"data":2068},"Ghost logins provide opportunities for attackers to bypass security controls for initial access and persistence in an application (which we’ll come onto in more detail later). They also provide an opportunity for malicious insiders, e.g. a disgruntled employee, to access systems even after SSO access is revoked. If the security team relies on IdP logs to audit app logins, these accounts can go undetected.",[],{},{"nodeType":243,"data":2070,"content":2071},{},[2072],{"nodeType":247,"value":2073,"marks":2074,"data":2075},"To be able to identify them, you’d need to log into the app admin dashboard. But depending on how the app was adopted, you (as a security admin) may not even be an app-level admin — it’s not unusual for individual teams to administer their own apps. And even if you do have access, it’s not always easy (or possible) to gather this level of information about user account configuration. ",[],{},{"nodeType":243,"data":2077,"content":2078},{},[2079],{"nodeType":247,"value":2080,"marks":2081,"data":2082},"It’s very easy to see how these vulnerable login methods can be overlooked by security teams – let’s look at how they can be identified and exploited by attackers. ",[],{},{"nodeType":304,"data":2084,"content":2085},{},[2086],{"nodeType":247,"value":2087,"marks":2088,"data":2089},"How can ghost logins be exploited by attackers?",[],{},{"nodeType":243,"data":2091,"content":2092},{},[2093,2098],{"nodeType":247,"value":2094,"marks":2095,"data":2097},"Let’s take an example scenario:",[2096],{"type":319},{},{"nodeType":247,"value":2099,"marks":2100,"data":2101}," You’re using an IdP solution like Okta or Microsoft/Entra with SAML SSO as the default login method for your core business apps. Via your IdP you require MFA when authenticating to your IdP apps page, and also potentially when signing into an individual connected app. ",[],{},{"nodeType":243,"data":2103,"content":2104},{},[2105],{"nodeType":247,"value":2106,"marks":2107,"data":2108},"However, you only recently introduced your IdP solution, and your users previously accessed this app with a local username and password. Although you asked your users to configure MFA in the app itself, not all of them did. And when you deployed your IdP solution, you didn’t manually unset all the local password-based logins for the apps you connected to it. ",[],{},{"nodeType":243,"data":2110,"content":2111},{},[2112],{"nodeType":247,"value":2113,"marks":2114,"data":2116},"Unknown to you, there are now hundreds of local accounts for core business apps which lack MFA. ",[2115],{"type":319},{},{"nodeType":243,"data":2118,"content":2119},{},[2120],{"nodeType":247,"value":2121,"marks":2122,"data":2123},"There are two main scenarios in which ghost logins can be utilized by an attacker:",[],{},{"nodeType":379,"data":2125,"content":2126},{},[2127,2142],{"nodeType":383,"data":2128,"content":2129},{},[2130],{"nodeType":243,"data":2131,"content":2132},{},[2133,2138],{"nodeType":247,"value":2134,"marks":2135,"data":2137},"To bypass robustly configured login methods",[2136],{"type":319},{},{"nodeType":247,"value":2139,"marks":2140,"data":2141}," such as SSO to compromise an app identity during the initial access phase of an attack. ",[],{},{"nodeType":383,"data":2143,"content":2144},{},[2145],{"nodeType":243,"data":2146,"content":2147},{},[2148,2153],{"nodeType":247,"value":2149,"marks":2150,"data":2152},"To create additional login methods for an already compromised account to ensure persistent access",[2151],{"type":319},{},{"nodeType":247,"value":2154,"marks":2155,"data":2156}," – even if the original compromised login method is revoked or disabled. This could be either the result of compromising an identity belonging to a specific app, or having previously compromised an IdP account (e.g. Okta).",[],{},{"nodeType":243,"data":2158,"content":2159},{},[2160],{"nodeType":247,"value":2161,"marks":2162,"data":2163},"Let's look at these use cases in more detail. ",[],{},{"nodeType":312,"data":2165,"content":2166},{},[2167],{"nodeType":247,"value":2168,"marks":2169,"data":2170},"Ghost logins for initial access",[],{},{"nodeType":243,"data":2172,"content":2173},{},[2174],{"nodeType":247,"value":2175,"marks":2176,"data":2177},"Arguably the most dangerous use case for ghost logins is to conduct credential attacks against accounts using a username and password. Logins with a weak or guessable password, or a reused password that has appeared in a public data breach dump, are primed for account takeover. ",[],{},{"nodeType":243,"data":2179,"content":2180},{},[2181],{"nodeType":247,"value":2182,"marks":2183,"data":2184},"The cyber crime ecosystem is leaning toward the theft, sale, and use of stolen credentials (not just emails and passwords, but session tokens too). ",[],{},{"nodeType":379,"data":2186,"content":2187},{},[2188,2211,2233],{"nodeType":383,"data":2189,"content":2190},{},[2191],{"nodeType":243,"data":2192,"content":2193},{},[2194,2198,2207],{"nodeType":247,"value":2195,"marks":2196,"data":2197},"There are 600 million identity attacks per day, with 99% involving passwords (",[],{},{"nodeType":266,"data":2199,"content":2201},{"uri":2200},"https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/microsoft/final/en-us/microsoft-brand/documents/Microsoft%20Digital%20Defense%20Report%202024%20%281%29.pdf",[2202],{"nodeType":247,"value":2203,"marks":2204,"data":2206},"Microsoft",[2205],{"type":286},{},{"nodeType":247,"value":2208,"marks":2209,"data":2210},").",[],{},{"nodeType":383,"data":2212,"content":2213},{},[2214],{"nodeType":243,"data":2215,"content":2216},{},[2217,2221,2230],{"nodeType":247,"value":2218,"marks":2219,"data":2220},"Over 1000 credentials are posted online per day, per marketplace with an average sale price of $10, and 65% posted less than one day after being collected (",[],{},{"nodeType":266,"data":2222,"content":2224},{"uri":2223},"https://www.verizon.com/business/en-gb/resources/reports/dbir/",[2225],{"nodeType":247,"value":2226,"marks":2227,"data":2229},"Verizon",[2228],{"type":286},{},{"nodeType":247,"value":2208,"marks":2231,"data":2232},[],{},{"nodeType":383,"data":2234,"content":2235},{},[2236],{"nodeType":243,"data":2237,"content":2238},{},[2239,2243,2252],{"nodeType":247,"value":2240,"marks":2241,"data":2242},"One million new stealer logs are distributed every month, with an estimated 3-5% containing credentials and session cookies to corporate IT environments (",[],{},{"nodeType":266,"data":2244,"content":2246},{"uri":2245},"https://www.bleepingcomputer.com/news/security/single-sign-on-and-the-cybercrime-ecosystem/",[2247],{"nodeType":247,"value":2248,"marks":2249,"data":2251},"Flare",[2250],{"type":286},{},{"nodeType":247,"value":2208,"marks":2253,"data":2254},[],{},{"nodeType":243,"data":2256,"content":2257},{},[2258],{"nodeType":247,"value":2259,"marks":2260,"data":2262},"So, it’s easier than ever for attackers to gather breached credentials and weaponize them at scale. ",[2261],{"type":319},{},{"nodeType":243,"data":2264,"content":2265},{},[2266],{"nodeType":247,"value":2267,"marks":2268,"data":2269},"Realistically, any username and password combination for addresses belonging to a specific organization/domain can be attempted on any app. Breached credential data will often provide a strong indicator of other apps also in use for that organization. And for apps with a custom tenant URL (that cannot be easily guessed) data dumps often helpfully include the URLs for those login pages, too.  ",[],{},{"nodeType":243,"data":2271,"content":2272},{},[2273],{"nodeType":247,"value":2274,"marks":2275,"data":2276},"The risk posed by the massive amounts of leaked credentials available is heightened because: ",[],{},{"nodeType":379,"data":2278,"content":2279},{},[2280,2301],{"nodeType":383,"data":2281,"content":2282},{},[2283],{"nodeType":243,"data":2284,"content":2285},{},[2286,2290,2297],{"nodeType":247,"value":2287,"marks":2288,"data":2289},"Many employees reuse passwords, with ",[],{},{"nodeType":266,"data":2291,"content":2292},{"uri":1830},[2293],{"nodeType":247,"value":2294,"marks":2295,"data":2296},"~9% of all accounts using a breached, weak, or reused password",[],{},{"nodeType":247,"value":2298,"marks":2299,"data":2300},". This isn’t just for low-risk apps either, and includes the reuse of highly sensitive IdP creds. ",[],{},{"nodeType":383,"data":2302,"content":2303},{},[2304],{"nodeType":243,"data":2305,"content":2306},{},[2307],{"nodeType":247,"value":2308,"marks":2309,"data":2310},"Organizations don’t typically rotate or enforce changes to SaaS app passwords in the same way they might for company account/device login connected to Active Directory.  ",[],{},{"nodeType":243,"data":2312,"content":2313},{},[2314],{"nodeType":247,"value":2315,"marks":2316,"data":2317},"Ghost logins aren’t limited to just username and password either. For example, a breached social account such as Facebook or Google can result in a broader compromise if those accounts have been connected to any corporate apps.   ",[],{},{"nodeType":243,"data":2319,"content":2320},{},[2321],{"nodeType":247,"value":2322,"marks":2323,"data":2325},"So, exploiting ghost logins can be a highly effective method for attackers to gain initial access to a user account from which to launch further attacks.  ",[2324],{"type":319},{},{"nodeType":312,"data":2327,"content":2328},{},[2329],{"nodeType":247,"value":2330,"marks":2331,"data":2332},"Ghost logins for persistence and defense evasion",[],{},{"nodeType":243,"data":2334,"content":2335},{},[2336],{"nodeType":247,"value":2337,"marks":2338,"data":2339},"Now, we’ll take a look at how attackers can leverage ghost logins as part of the later stages of an attack, having already established an initial foothold via account compromise. ",[],{},{"nodeType":243,"data":2341,"content":2342},{},[2343,2347],{"nodeType":247,"value":2344,"marks":2345,"data":2346},"If an organization has a reasonable level of security monitoring in-place (depending on log availability from the particular app vendor), or a victim receives a notification about an unusual login (e.g. from a new device or unusual IP) then access to an account can be short-lived. ",[],{},{"nodeType":247,"value":2348,"marks":2349,"data":2351},"However, ghost logins can provide attackers with the tools to maintain persistent access to a compromised account, even if the initial compromised login method is disabled or revoked. ",[2350],{"type":319},{},{"nodeType":243,"data":2353,"content":2354},{},[2355,2359,2364],{"nodeType":247,"value":2356,"marks":2357,"data":2358},"For example, if a social login is used to access an account, an adversary may be able to configure a separate username/password login, or even (though much less commonly) connect a second social account that the adversary controls. This allows the adversary to maintain persistent access to the user account ",[],{},{"nodeType":247,"value":2360,"marks":2361,"data":2363},"even in the event of password changes or MFA changes",[2362],{"type":319},{},{"nodeType":247,"value":2365,"marks":2366,"data":2367},". The attack will go unnoticed if the victim organization relies on SSO logs for auditing access to SaaS applications because the attack bypasses SSO, as the login remains local to the SaaS app or, in the case of an OIDC SSO login, the adversary’s own social account.",[],{},{"nodeType":243,"data":2369,"content":2370},{},[2371,2375,2384,2388,2397],{"nodeType":247,"value":2372,"marks":2373,"data":2374},"Another quirk is that it’s common for ordinary users to become app-level admins when an app is self-adopted by an individual or team. If an attacker is able to gain control of such an account, it can then be used to target other users without needing to deliver phishing links by hijacking SAML-based authentication. In this scenario, users attempting to sign in using SAML SSO are directed it to an attacker-controlled tenant in a watering hole attack (also known as ",[],{},{"nodeType":266,"data":2376,"content":2378},{"uri":2377},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/samljacking/description.md",[2379],{"nodeType":247,"value":2380,"marks":2381,"data":2383},"SAMLjacking",[2382],{"type":286},{},{"nodeType":247,"value":2385,"marks":2386,"data":2387},", which you can ",[],{},{"nodeType":266,"data":2389,"content":2391},{"uri":2390},"https://pushsecurity.com/blog/samljacking-a-poisoned-tenant/",[2392],{"nodeType":247,"value":2393,"marks":2394,"data":2396},"read more about in another blog post",[2395],{"type":286},{},{"nodeType":247,"value":2398,"marks":2399,"data":2400},"). ",[],{},{"nodeType":243,"data":2402,"content":2403},{},[2404,2408,2417],{"nodeType":247,"value":2405,"marks":2406,"data":2407},"If you're curious as to how an attacker might be able to compromise an IdP account such as Okta, ",[],{},{"nodeType":266,"data":2409,"content":2411},{"uri":2410},"https://pushsecurity.com/blog/phishing-2-0-how-phishing-toolkits-are-evolving-with-aitm/",[2412],{"nodeType":247,"value":2413,"marks":2414,"data":2416},"you should check out our blog post on AitM and BitM phishing techniques",[2415],{"type":286},{},{"nodeType":247,"value":2418,"marks":2419,"data":2420},".  ",[],{},{"nodeType":304,"data":2422,"content":2423},{},[2424],{"nodeType":247,"value":2425,"marks":2426,"data":2427},"Case study: Snowflake",[],{},{"nodeType":243,"data":2429,"content":2430},{},[2431,2435,2442],{"nodeType":247,"value":2432,"marks":2433,"data":2434},"The ",[],{},{"nodeType":266,"data":2436,"content":2437},{"uri":1029},[2438],{"nodeType":247,"value":2439,"marks":2440,"data":2441},"recent attacks on 165 Snowflake customers",[],{},{"nodeType":247,"value":2443,"marks":2444,"data":2445},", resulting in hundreds of millions of breached customer records, were the product of a credential stuffing campaign using stolen credentials from infostealer infections dating back to 2020. ",[],{},{"nodeType":243,"data":2447,"content":2448},{},[2449],{"nodeType":247,"value":2450,"marks":2451,"data":2452},"The industry response to Snowflake was typical: check whether Snowflake has been set up for SSO, and if so, job done — we’re protected by MFA.",[],{},{"nodeType":243,"data":2454,"content":2455},{},[2456],{"nodeType":247,"value":2457,"marks":2458,"data":2459},"The reality was that MFA was not — and could not — be centrally enforced for username and password accounts. Even if MFA was applied at the IdP level for SSO logins, it was not enforced for local username and password logins. It needed to be opted-into by the user. ",[],{},{"nodeType":243,"data":2461,"content":2462},{},[2463,2467,2474],{"nodeType":247,"value":2464,"marks":2465,"data":2466},"This meant the most logical thing to do was to disable local accounts. But because Snowflake is essentially a cloud-hosted SQL database, there was no easy-to-use GUI to access local account config data. Once you’d managed to get an admin account with the right permissions, you needed to run various commands to find and unset the accounts. ",[],{},{"nodeType":266,"data":2468,"content":2469},{"uri":1533},[2470],{"nodeType":247,"value":2471,"marks":2472,"data":2473},"But if you didn’t have the exact type of admin account, misleading results would be returned — and even after you had fixed the vulnerability it took hours to update the database. ",[],{},{"nodeType":247,"value":29,"marks":2475,"data":2476},[],{},{"nodeType":243,"data":2478,"content":2479},{},[2480],{"nodeType":247,"value":2481,"marks":2482,"data":2483},"This meant that organizations were exposed to these attacks for a prolonged period, and were left uncertain as to whether they had addressed the vulnerabilities or not. ",[],{},{"nodeType":304,"data":2485,"content":2486},{},[2487],{"nodeType":247,"value":2488,"marks":2489,"data":2490},"Using Push to find and fix ghost logins across your app inventory",[],{},{"nodeType":243,"data":2492,"content":2493},{},[2494],{"nodeType":247,"value":2495,"marks":2496,"data":2497},"Finding and fixing ghost logins is a challenge for most organizations. Since you can’t rely on the view provided by your IdP, you need to:",[],{},{"nodeType":379,"data":2499,"content":2500},{},[2501,2511,2521],{"nodeType":383,"data":2502,"content":2503},{},[2504],{"nodeType":243,"data":2505,"content":2506},{},[2507],{"nodeType":247,"value":2508,"marks":2509,"data":2510},"Discover the apps in use across your organization",[],{},{"nodeType":383,"data":2512,"content":2513},{},[2514],{"nodeType":243,"data":2515,"content":2516},{},[2517],{"nodeType":247,"value":2518,"marks":2519,"data":2520},"Get admin rights, audit each app, and unset any local credentials (enforcing MFA at the app-level too if you can, for good measure)",[],{},{"nodeType":383,"data":2522,"content":2523},{},[2524],{"nodeType":243,"data":2525,"content":2526},{},[2527],{"nodeType":247,"value":2528,"marks":2529,"data":2530},"Configure the app to prevent local accounts being created (again, if possible)",[],{},{"nodeType":243,"data":2532,"content":2533},{},[2534],{"nodeType":247,"value":2535,"marks":2536,"data":2537},"Not only is this a sisyphean task with continually moving goalposts, but depending on which apps you use, and how they’ve been designed, it may not be possible to remediate every instance of ghost logins. For that reason, it’s important to also invest in your identity threat detection and response capabilities — for when, not if, an account takeover attempt occurs. ",[],{},{"nodeType":243,"data":2539,"content":2540},{},[2541,2545,2554],{"nodeType":247,"value":2542,"marks":2543,"data":2544},"Push helps organizations to defend against ghost logins and other identity threats with a defense-in-depth approach: Using a browser-based agent to generate visibility of all logins (not just via IdP logs) while also detecting, intercepting, and shutting down account takeover attempts via phishing, credential stuffing, and session hijacking. ",[],{},{"nodeType":266,"data":2546,"content":2548},{"uri":2547},"https://pushsecurity.com/",[2549],{"nodeType":247,"value":2550,"marks":2551,"data":2553},"Learn more here.",[2552],{"type":286},{},{"nodeType":247,"value":29,"marks":2555,"data":2556},[],{},{"nodeType":243,"data":2558,"content":2559},{},[2560,2564,2572],{"nodeType":247,"value":2561,"marks":2562,"data":2563},"And if you'd like to learn more about ghost logins and other identity attack techniques, ",[],{},{"nodeType":266,"data":2565,"content":2567},{"uri":2566},"https://github.com/pushsecurity/saas-attacks?tab=readme-ov-file",[2568],{"nodeType":247,"value":2569,"marks":2570,"data":2571},"check out the SaaS attack matrix on GitHub",[],{},{"nodeType":247,"value":1837,"marks":2573,"data":2574},[],{},{"nodeType":356,"data":2576,"content":2580},{"target":2577},{"sys":2578},{"id":2579,"type":361,"linkType":362},"1VMpMgZvx9hgps2OoxCTmF",[],{"nodeType":243,"data":2582,"content":2583},{},[2584],{"nodeType":247,"value":29,"marks":2585,"data":2586},[],{},"Ghost logins: When forgotten identities come back to haunt you","How ghost logins can be used by cyber attackers for account takeover and persistence.","2024-07-10T00:00:00.000Z","ghost-logins-when-forgotten-identities-come-back-to-haunt-you",{"items":2592},[2593,2595],{"sys":2594,"name":1739},{"id":1738},{"sys":2596,"name":2598},{"id":2597},"4ksQNCFeBf8H4QIORqpRLw","Detection & response",{"items":2600},[2601],{"fullName":232,"firstName":233,"jobTitle":234,"profilePicture":2602},{"url":236},{"__typename":1217,"sys":2604,"content":2606,"title":2923,"synopsis":2924,"hashTags":62,"publishedDate":2925,"slug":2926,"tagsCollection":2927,"authorsCollection":2933},{"id":2605},"4bYO5rVy9n2OO3vtMVQeda",{"json":2607},{"nodeType":239,"data":2608,"content":2609},{},[2610,2617,2636,2652,2659,2666,2669,2676,2683,2736,2743,2749,2752,2759,2766,2773,2780,2787,2804,2810,2817,2824,2841,2847,2854,2861,2868,2875,2882,2885,2892,2911,2917],{"nodeType":304,"data":2611,"content":2612},{},[2613],{"nodeType":247,"value":2614,"marks":2615,"data":2616},"All phishing eventually leads to the browser",[],{},{"nodeType":243,"data":2618,"content":2619},{},[2620,2624,2633],{"nodeType":247,"value":2621,"marks":2622,"data":2623},"The best attack detection methods are those that focus on ",[],{},{"nodeType":266,"data":2625,"content":2627},{"uri":2626},"https://pushsecurity.com/blog/our-design-philosophy-detecting-what-matters/",[2628],{"nodeType":247,"value":2629,"marks":2630,"data":2632},"detecting indicators that are difficult for attackers to change or obfuscate",[2631],{"type":286},{},{"nodeType":247,"value":510,"marks":2634,"data":2635},[],{},{"nodeType":243,"data":2637,"content":2638},{},[2639,2643,2648],{"nodeType":247,"value":2640,"marks":2641,"data":2642},"For a credential phishing attack to succeed, the victim ",[],{},{"nodeType":247,"value":2644,"marks":2645,"data":2647},"has",[2646],{"type":286},{},{"nodeType":247,"value":2649,"marks":2650,"data":2651}," to enter their password into a webpage. There’s no two-ways about it, attackers cannot change this. ",[],{},{"nodeType":243,"data":2653,"content":2654},{},[2655],{"nodeType":247,"value":2656,"marks":2657,"data":2658},"So it stands to reason that, if you can detect this user behavior, and block them from entering their password, then you can stop phishing. ",[],{},{"nodeType":243,"data":2660,"content":2661},{},[2662],{"nodeType":247,"value":2663,"marks":2664,"data":2665},"This is exactly what Push does.",[],{},{"nodeType":300,"data":2667,"content":2668},{},[],{"nodeType":312,"data":2670,"content":2671},{},[2672],{"nodeType":247,"value":2673,"marks":2674,"data":2675},"Most anti-phishing tools are easily bypassed",[],{},{"nodeType":243,"data":2677,"content":2678},{},[2679],{"nodeType":247,"value":2680,"marks":2681,"data":2682},"Other anti-phishing tools rely on detecting elements of the attack that attackers can change and hide, such as domains or the webpage contents. Attackers use tricks to evade these detection, like:",[],{},{"nodeType":379,"data":2684,"content":2685},{},[2686,2696,2706,2716,2726],{"nodeType":383,"data":2687,"content":2688},{},[2689],{"nodeType":243,"data":2690,"content":2691},{},[2692],{"nodeType":247,"value":2693,"marks":2694,"data":2695},"Using Cloudflare Workers to block automatic analysis of their phishing site",[],{},{"nodeType":383,"data":2697,"content":2698},{},[2699],{"nodeType":243,"data":2700,"content":2701},{},[2702],{"nodeType":247,"value":2703,"marks":2704,"data":2705},"Hacking a Wordpress blog to get a reputable domain that passes domain checks ",[],{},{"nodeType":383,"data":2707,"content":2708},{},[2709],{"nodeType":243,"data":2710,"content":2711},{},[2712],{"nodeType":247,"value":2713,"marks":2714,"data":2715},"Using redirects and rotating the URLs delivered to the victim to bypass link analysis",[],{},{"nodeType":383,"data":2717,"content":2718},{},[2719],{"nodeType":243,"data":2720,"content":2721},{},[2722],{"nodeType":247,"value":2723,"marks":2724,"data":2725},"Randomizing the HTML title for the web page to bypass blocklists ",[],{},{"nodeType":383,"data":2727,"content":2728},{},[2729],{"nodeType":243,"data":2730,"content":2731},{},[2732],{"nodeType":247,"value":2733,"marks":2734,"data":2735},"One-time phishing links that only work the first time they are clicked",[],{},{"nodeType":243,"data":2737,"content":2738},{},[2739],{"nodeType":247,"value":2740,"marks":2741,"data":2742},"Push is putting an end to this game of cat and mouse, by keeping it really simple; you can’t phish someone who can’t put their password into a phishing page. ",[],{},{"nodeType":356,"data":2744,"content":2748},{"target":2745},{"sys":2746},{"id":2747,"type":361,"linkType":362},"6AwOZSpqaChmeksnj4SyWE",[],{"nodeType":300,"data":2750,"content":2751},{},[],{"nodeType":312,"data":2753,"content":2754},{},[2755],{"nodeType":247,"value":2756,"marks":2757,"data":2758},"Domain-binding passwords",[],{},{"nodeType":243,"data":2760,"content":2761},{},[2762],{"nodeType":247,"value":2763,"marks":2764,"data":2765},"If you’re familiar with how passkeys are domain-bound, then think of what Push does as domain-binding passwords. We pin the password to its legitimate domain(s) and then don’t allow it to be entered into any webpage on any other domain. ",[],{},{"nodeType":243,"data":2767,"content":2768},{},[2769],{"nodeType":247,"value":2770,"marks":2771,"data":2772},"But just because you’ve stopped your users from being phished doesn’t mean you don’t want to know when attackers are attempting to phish your users and how. ",[],{},{"nodeType":243,"data":2774,"content":2775},{},[2776],{"nodeType":247,"value":2777,"marks":2778,"data":2779},"Push still inspects webpages to see if attackers are rendering cloned app login pages in the browser or if known AitM and BitM toolkits are being used. This way you don’t lose visibility of the unsuccessful attacks that are targeting your users. Think of it as a handy second and third layer of defense.",[],{},{"nodeType":243,"data":2781,"content":2782},{},[2783],{"nodeType":247,"value":2784,"marks":2785,"data":2786},"Lets run through a quick before and after example:",[],{},{"nodeType":312,"data":2788,"content":2789},{},[2790,2794,2800],{"nodeType":247,"value":2791,"marks":2792,"data":2793},"Scenario 1: An attacker attempts to phish an employee that ",[],{},{"nodeType":247,"value":2795,"marks":2796,"data":2799},"doesn’t",[2797,2798],{"type":286},{"type":319},{},{"nodeType":247,"value":2801,"marks":2802,"data":2803}," have Push deployed to their browser.",[],{},{"nodeType":356,"data":2805,"content":2809},{"target":2806},{"sys":2807},{"id":2808,"type":361,"linkType":362},"2CbGMUSJsP1mNeHkmpLl6N",[],{"nodeType":243,"data":2811,"content":2812},{},[2813],{"nodeType":247,"value":2814,"marks":2815,"data":2816},"Here, an attacker hacks a Wordpress blog to get a reputable domain and then runs a phishing toolkit on the webpage. They email one of your employees a link to it. Your SWG / email scanning solution inspects it in a sandbox but the phish kit detects this and redirects to a benign site so that it passes the inspection. ",[],{},{"nodeType":243,"data":2818,"content":2819},{},[2820],{"nodeType":247,"value":2821,"marks":2822,"data":2823},"Your user gets the email with the link and is now free to interact with the phishing page. They enter their credentials plus MFA code into the page and voila! The attacker steals them and is able to compromise the user’s account.  ",[],{},{"nodeType":312,"data":2825,"content":2826},{},[2827,2831,2837],{"nodeType":247,"value":2828,"marks":2829,"data":2830},"Scenario 2: An attacker attempts to phish an employee that ",[],{},{"nodeType":247,"value":2832,"marks":2833,"data":2836},"does",[2834,2835],{"type":286},{"type":319},{},{"nodeType":247,"value":2838,"marks":2839,"data":2840}," have Push deployed to their browser. ",[],{},{"nodeType":356,"data":2842,"content":2846},{"target":2843},{"sys":2844},{"id":2845,"type":361,"linkType":362},"77smnID1woCfFJrJPyTvKY",[],{"nodeType":243,"data":2848,"content":2849},{},[2850],{"nodeType":247,"value":2851,"marks":2852,"data":2853},"This time, the attacker uses the same phishing toolkit and domain from the first example. But in reality, they don’t have to send it to your employee using email, instead, they could use LinkedIn messenger, Slack, Teams, or any application that allows employees to communicate with each other. ",[],{},{"nodeType":243,"data":2855,"content":2856},{},[2857],{"nodeType":247,"value":2858,"marks":2859,"data":2860},"Like before, the user receives the link, opens it and starts to enter their credentials into the webpage. This time though, the Push browser extension inspects the webpage running in the user's browser. Push observes that the webpage is a login page and the user is entering their password into the page.",[],{},{"nodeType":243,"data":2862,"content":2863},{},[2864],{"nodeType":247,"value":2865,"marks":2866,"data":2867},"The first detection Push makes is checking that the password the user is entering matches the domain that password is pinned to. Since it doesn't match, based on this detection alone the user is automatically redirected to a blocking page. An important point to make here is that the password never leaves the user’s browser and the check is made using a shortened salted hash of the password.   ",[],{},{"nodeType":243,"data":2869,"content":2870},{},[2871],{"nodeType":247,"value":2872,"marks":2873,"data":2874},"The second detection Push makes is that the rendered web app is using a cloned app login page. The third detection is that a phishing toolkit is running in the web app code. ",[],{},{"nodeType":243,"data":2876,"content":2877},{},[2878],{"nodeType":247,"value":2879,"marks":2880,"data":2881},"In this particular scenario these second and third detections serve as useful context for understanding the nature of the phishing attack. But both will still redirect to a blocking page if they are triggered in isolation of the other phishing detections. ",[],{},{"nodeType":300,"data":2883,"content":2884},{},[],{"nodeType":304,"data":2886,"content":2887},{},[2888],{"nodeType":247,"value":2889,"marks":2890,"data":2891},"We don’t just stop phishing attacks",[],{},{"nodeType":243,"data":2893,"content":2894},{},[2895,2899,2908],{"nodeType":247,"value":2896,"marks":2897,"data":2898},"We also detect other identity-related attack techniques used to compromise user accounts. That includes credential stuffing, password spraying and session hijacking using stolen session tokens. If you want to learn more about how Push helps you to detect and defeat common identity attack techniques, ",[],{},{"nodeType":266,"data":2900,"content":2902},{"uri":2901},"https://pushsecurity.com/demo/",[2903],{"nodeType":247,"value":2904,"marks":2905,"data":2907},"book some time with one of our team",[2906],{"type":286},{},{"nodeType":247,"value":2418,"marks":2909,"data":2910},[],{},{"nodeType":356,"data":2912,"content":2916},{"target":2913},{"sys":2914},{"id":2915,"type":361,"linkType":362},"2JSmYDaiAciOx7Z1MRuJlA",[],{"nodeType":243,"data":2918,"content":2919},{},[2920],{"nodeType":247,"value":29,"marks":2921,"data":2922},[],{},"Detecting and blocking phishing attacks in the browser","How Push detects and blocks phishing attempts in the browser – explained in less than two minutes. ","2024-10-23T00:00:00.000Z","detecting-and-blocking-phishing-attacks-in-the-browser",{"items":2928},[2929,2931],{"sys":2930,"name":1739},{"id":1738},{"sys":2932,"name":2598},{"id":2597},{"items":2934},[2935],{"fullName":2936,"firstName":2937,"jobTitle":2938,"profilePicture":2939},"Alex Henshall","Alex","Product Team",{"url":2940},"https://images.ctfassets.net/y1cdw1ablpvd/2rz3Pre3b1MexPIQ4hzPUe/0ef8a092b7e7df00fbce3f7d1ccb96d1/Alex_Henshall.jpeg","cross-idp-impersonation","blog/cross-idp-impersonation",{"json":2944},{"data":2945,"content":2946,"nodeType":239},{},[2947],{"data":2948,"content":2949,"nodeType":243},{},[2950],{"data":2951,"marks":2952,"value":2953,"nodeType":247},{},[],"Cross-IdP impersonation is a growing trend as a method of hijacking SSO to access downstream apps — without needing to compromise accounts on your company’s main IdP. ","Cross-IdP impersonation is a method of hijacking SSO to access downstream apps — without needing to compromise accounts on your company’s main IdP. ",{"id":2956,"publishedAt":2957},"2PpB1KSjZkmpzYDhDLRBYx","2024-11-25T09:54:10.238Z",{"items":2959},[2960,2962],{"sys":2961,"name":1739},{"id":1738},{"sys":2963,"name":2598},{"id":2597},"agpTcF6NUWd8SmzY0kt2y-Gl-J1h5INsTtuBroq4_f8",1784196728852]