[{"data":1,"prerenderedAt":4039},["ShallowReactive",2],{"application-flags":3,"navbar":7,"always-visible-banner":95,"navbar-about-highlight":155,"navbar-resource-highlight":211,"use-case-page":256,"blog/samljacking-a-poisoned-tenant":1276},[4],{"name":5,"enabled":6},"maintenanceMode",false,[8,59,76],{"createdDate":9,"id":10,"name":11,"modelId":12,"published":13,"stageModifiedSincePublish":6,"query":14,"data":15,"variations":50,"lastUpdated":51,"firstPublished":52,"testRatio":33,"createdBy":53,"lastUpdatedBy":53,"folders":54,"meta":55,"rev":58},1742213002749,"efff2a27faf4408e9f908eba4b5542fe","inductive-automation","1c6207a5f24948ab82d4a0b17f251193","published",[],{"testimonial":16,"description":43,"type":19,"link":44,"title":47,"testimonialLink":48,"image":49},{"@type":17,"id":18,"model":19,"value":20},"@builder.io/core:Reference","f028f2b685bb47cd8bf9e82a26dd5a79","testimonial",{"query":21,"folders":22,"createdDate":23,"id":18,"name":24,"modelId":25,"published":13,"data":26,"variations":30,"lastUpdated":31,"firstPublished":32,"testRatio":33,"createdBy":34,"lastUpdatedBy":34,"meta":35,"rev":42},[],[],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":27,"jobTitle":28,"quote":24,"image":29},"Jason Waits","\u003Cp>CISO at Inductive Automation\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Ff04c0c0689ce4a89ac0f0708d78c0a07",{},1735910703862,1735823501152,1,"ST0tXQM8slWpFrmioqKHmENB2qe2",{"kind":36,"lastPreviewUrl":37,"breakpoints":38,"hasAutosaves":41},"data","",{"small":39,"medium":40},640,768,true,"3v32gocrrqz","Join the industry's top security minds as they break down the browser attack landscape.",{"url":45,"text":46},"https://pushsecurity.com/webinar/state-of-browser-security","Save Your Spot","State of Browser Attacks Series","/customer-stories/inductive-automation","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fe94fca10aa7b46ac8052b7ea22de54cd",{},1776257019270,1742221533648,"CydmZnOWU1XuAaLhEDCoYNM4Z8W2",[],{"breakpoints":56,"kind":36,"lastPreviewUrl":37,"hasAutosaves":6},{"xsmall":57,"small":39,"medium":40},320,"motto9r9yg",{"createdDate":60,"id":61,"name":62,"modelId":12,"published":13,"query":63,"data":64,"variations":69,"lastUpdated":70,"firstPublished":71,"testRatio":33,"createdBy":53,"lastUpdatedBy":72,"folders":73,"meta":74,"rev":58},1742208588866,"1c7a4e423bf54ac1a328bb4063459ef2","Banner",[],{"type":65,"url":66,"text":67,"link":68},"web-banner","https://pushsecurity.com/resources/browser-attacks-report","Get our latest report analyzing browser attack techniques in 2026",{},{},1774258294825,1742208637545,"jKjF9r5jcvXU8tzZEfFQm31Iyvr2",[],{"kind":36,"lastPreviewUrl":37,"breakpoints":75,"hasAutosaves":41},{"xsmall":57,"small":39,"medium":40},{"createdDate":77,"id":78,"name":79,"modelId":12,"published":13,"stageModifiedSincePublish":6,"query":80,"data":81,"variations":89,"lastUpdated":90,"firstPublished":91,"testRatio":33,"createdBy":53,"lastUpdatedBy":53,"folders":92,"meta":93,"rev":58},1742208469288,"6763051b201f44a0838c6400c580ca67","Resource highlight",[],{"image":82,"type":83,"description":84,"link":85,"title":88},"https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F7b4a5ebf81d64e8c9d7fc35f6c96c4a9","resource","Learn about the latest techniques being used in the wild.",{"url":86,"text":87},"/resources/browser-attacks-report","Download now","Report: 2026 Browser Attack Techniques",{},1776255866789,1742208570400,[],{"kind":36,"lastPreviewUrl":37,"breakpoints":94,"hasAutosaves":6},{"xsmall":57,"small":39,"medium":40},{"createdDate":96,"id":97,"name":98,"modelId":99,"published":13,"query":100,"data":101,"variations":145,"lastUpdated":146,"firstPublished":147,"testRatio":33,"createdBy":34,"lastUpdatedBy":148,"folders":149,"meta":150,"rev":154},1774965361051,"fd266d0172cc47429be7ad10f48c99ad","always visible banner","0678d178ec8b41efb8a23c09dba7874d",[],{"ctaText":102,"text":103,"url":37,"blocks":104,"state":141},"ewrererw","testrfesssssssssss",[105,129],{"@type":106,"@version":107,"id":108,"component":109,"responsiveStyles":119},"@builder.io/sdk:Element",2,"builder-ca12c06a52de41d7b8743da53118cd38",{"name":110,"tag":110,"options":111,"isRSC":118},"TopBannerContent",{"text":112,"ctaText":46,"url":45,"mainText":113,"cta":116},"New Webinar Series: Join John Hammond, Troy Hunt, and Matt Johansen for the State of Browser Attacks",{"content":114,"fontSize":115},"\u003Cp>New Webinar Series: Join John Hammond, Troy Hunt, and Matt Johansen for the State of Browser Attacks\u003C/p>","text-base",{"content":117,"fontSize":115,"url":45},"\u003Cp>\u003Cstrong style=\"font-weight:700;\">Save Your Spot\u003C/strong>\u003C/p>\n",null,{"large":120},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"marginTop":126,"marginBottom":126,"fontSize":127,"fontWeight":128},"flex","column","relative","0","border-box",".56rem","1.125rem","700",{"id":130,"@type":106,"tagName":131,"properties":132,"responsiveStyles":136},"builder-pixel-08zrjigffq5t","img",{"src":133,"aria-hidden":134,"alt":37,"role":135,"width":124,"height":124},"https://cdn.builder.io/api/v1/pixel?apiKey=f3a1111ff5be48cdbb123cd9f5795a05","true","presentation",{"large":137},{"height":124,"width":124,"display":138,"opacity":124,"overflow":139,"pointerEvents":140},"block","hidden","none",{"deviceSize":142,"location":143},"large",{"path":37,"query":144},{},{},1775137295127,1774968080803,"ax7YYfD0OCeqT1Vxxv1G4FUbqVr1",[],{"breakpoints":151,"hasLinks":6,"kind":152,"lastPreviewUrl":153,"hasAutosaves":6},{"xsmall":57,"small":39,"medium":40},"component","https://pushsecurity.com/?builder.space=f3a1111ff5be48cdbb123cd9f5795a05&builder.user.permissions=read%2Ccreate%2Cpublish%2CeditCode%2CeditDesigns%2CeditLayouts%2CeditLayers%2CeditContentPriority%2CeditFolders%2CeditProjects%2CmodifyMcpServers%2CmodifyWorkflowIntegrations%2CmodifyProjectSettings%2CconnectCodeRepository%2CcreateProjects%2CindexDesignSystems%2CsendPullRequests%2CmergePullRequests&builder.user.role.name=Developer&builder.user.role.id=developer&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","2lvuonnywj",[156,180],{"createdDate":157,"id":158,"name":159,"modelId":160,"published":13,"stageModifiedSincePublish":6,"query":161,"data":162,"variations":173,"lastUpdated":174,"firstPublished":175,"testRatio":33,"createdBy":53,"lastUpdatedBy":53,"folders":176,"meta":177,"rev":179},1776247359804,"9136a8f18b3b4a6ba29b8653a99372b1","testimonial-inductive-automation","20d9eaa352304613b3d1a794b400703d",[],{"link":163,"type":19,"testimonialLink":48,"testimonial":164},{},{"@type":17,"id":18,"model":19,"value":165},{"query":166,"folders":167,"createdDate":23,"id":18,"name":24,"modelId":25,"published":13,"data":168,"variations":169,"lastUpdated":31,"firstPublished":32,"testRatio":33,"createdBy":34,"lastUpdatedBy":34,"meta":170,"rev":172},[],[],{"author":27,"jobTitle":28,"quote":24,"image":29},{},{"kind":36,"lastPreviewUrl":37,"breakpoints":171,"hasAutosaves":41},{"small":39,"medium":40},"7t755zfvte3",{},1776247404986,1776247404973,[],{"breakpoints":178,"kind":36,"lastPreviewUrl":37,"hasAutosaves":6},{"xsmall":57,"small":39,"medium":40},"4moh0qpywtr",{"createdDate":181,"id":182,"name":88,"modelId":160,"published":13,"meta":183,"stageModifiedSincePublish":6,"query":185,"data":186,"variations":207,"lastUpdated":208,"firstPublished":209,"testRatio":33,"createdBy":53,"lastUpdatedBy":53,"folders":210,"rev":179},1776255761419,"05a9322735fc427db12e2740e4302300",{"breakpoints":184,"kind":36,"lastPreviewUrl":37,"hasAutosaves":6},{"xsmall":57,"small":39,"medium":40},[],{"testimonial":187,"link":206,"type":83,"title":88,"description":84,"image":82},{"@type":17,"id":188,"model":19,"value":189},"192acbb1f9ca4cac918c0ec435a8bae3",{"query":190,"folders":191,"createdDate":192,"id":188,"name":193,"modelId":25,"published":13,"data":194,"variations":200,"lastUpdated":201,"firstPublished":202,"testRatio":33,"createdBy":34,"lastUpdatedBy":53,"meta":203,"rev":205},[],[],1728981467463,"Push does for identity what CrowdStrike did for the endpoint",{"video":195,"jobTitle":196,"author":197,"qoute":37,"quote":198,"image":199},"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":36,"lastPreviewUrl":37,"breakpoints":204,"hasAutosaves":41},{"small":39,"medium":40},"6s8ic0w0ao6",{"text":87,"url":86},{},1776255810913,1776255810900,[],[212,235],{"createdDate":213,"id":214,"name":88,"modelId":215,"published":13,"meta":216,"stageModifiedSincePublish":6,"query":218,"data":219,"variations":230,"lastUpdated":231,"firstPublished":232,"testRatio":33,"createdBy":53,"lastUpdatedBy":53,"folders":233,"rev":234},1776256900280,"1f429607996e4e5fae8fe3f9b9610e55","4829faa81e7c4ee8bd2d000e160e8d3c",{"breakpoints":217,"kind":36,"lastPreviewUrl":37,"hasAutosaves":6},{"xsmall":57,"small":39,"medium":40},[],{"testimonial":220,"link":229,"type":83,"title":88,"description":84,"image":82},{"@type":17,"id":188,"model":19,"value":221},{"query":222,"folders":223,"createdDate":192,"id":188,"name":193,"modelId":25,"published":13,"data":224,"variations":225,"lastUpdated":201,"firstPublished":202,"testRatio":33,"createdBy":34,"lastUpdatedBy":53,"meta":226,"rev":228},[],[],{"video":195,"jobTitle":196,"author":197,"qoute":37,"quote":198,"image":199},{},{"kind":36,"lastPreviewUrl":37,"breakpoints":227,"hasAutosaves":41},{"small":39,"medium":40},"r77qqueuo3j",{"text":87,"url":86},{},1776256937553,1776256937540,[],"q0jkez80wkg",{"createdDate":236,"id":237,"name":11,"modelId":215,"published":13,"stageModifiedSincePublish":6,"query":238,"data":239,"variations":250,"lastUpdated":251,"firstPublished":252,"testRatio":33,"createdBy":53,"lastUpdatedBy":53,"folders":253,"meta":254,"rev":234},1776256949234,"ce043785b71b4ece98eac811ecf4ba10",[],{"link":240,"type":19,"testimonial":241,"testimonialLink":48},{},{"@type":17,"id":18,"model":19,"value":242},{"query":243,"folders":244,"createdDate":23,"id":18,"name":24,"modelId":25,"published":13,"data":245,"variations":246,"lastUpdated":31,"firstPublished":32,"testRatio":33,"createdBy":34,"lastUpdatedBy":34,"meta":247,"rev":249},[],[],{"author":27,"jobTitle":28,"quote":24,"image":29},{},{"kind":36,"lastPreviewUrl":37,"breakpoints":248,"hasAutosaves":41},{"small":39,"medium":40},"mnaneamy308",{},1776256974140,1776256974130,[],{"breakpoints":255,"kind":36,"lastPreviewUrl":37,"hasAutosaves":6},{"xsmall":57,"small":39,"medium":40},[257,441,560,679,797,917,1037,1157],{"createdDate":258,"id":259,"name":260,"modelId":261,"published":13,"stageModifiedSincePublish":6,"query":262,"data":268,"variations":429,"lastUpdated":430,"firstPublished":431,"testRatio":33,"screenshot":432,"createdBy":34,"lastUpdatedBy":433,"folders":434,"meta":435,"rev":440},1744829487099,"387451215c314dd5bd654668cdc1a197","Zero-day phishing","cca4143377554c5a9163cc203a8ed2ba",[263],{"@type":264,"property":265,"operator":266,"value":267},"@builder.io/core:Query","urlPath","is","/uc/zero-day-phishing-protection",{"inputs":269,"customFonts":270,"seoTitle":318,"title":318,"tsCode":37,"seoDescription":319,"fontAwesomeIcon":320,"jsCode":37,"blocks":321,"url":267,"state":426},[],[271],{"family":272,"kind":273,"version":274,"lastModified":275,"files":276,"category":295,"menu":296,"subsets":297,"variants":300},"DM Sans","webfonts#webfont","v14","2023-07-13",{"100":277,"200":278,"300":279,"500":280,"600":281,"700":282,"800":283,"900":284,"800italic":285,"900italic":286,"700italic":287,"100italic":288,"italic":289,"regular":290,"200italic":291,"500italic":292,"300italic":293,"600italic":294},"https://fonts.gstatic.com/s/dmsans/v14/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAop1hTmf3ZGMZpg.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAIpxhTmf3ZGMZpg.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwA_JxhTmf3ZGMZpg.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAkJxhTmf3ZGMZpg.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAfJthTmf3ZGMZpg.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwARZthTmf3ZGMZpg.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAIpthTmf3ZGMZpg.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAC5thTmf3ZGMZpg.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat8JCm3zRmYJpso5.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat8gCm3zRmYJpso5.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat9uCm3zRmYJpso5.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat-JDG3zRmYJpso5.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat-JDW3zRmYJpso5.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAopxhTmf3ZGMZpg.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat8JDW3zRmYJpso5.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat-7DW3zRmYJpso5.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat_XDW3zRmYJpso5.ttf","https://fonts.gstatic.com/s/dmsans/v14/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat9XCm3zRmYJpso5.ttf","sans-serif","https://fonts.gstatic.com/s/dmsans/v14/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAopxRT23z.ttf",[298,299],"latin","latin-ext",[301,302,303,304,305,306,128,307,308,309,310,311,312,313,314,315,316,317],"100","200","300","regular","500","600","800","900","100italic","200italic","300italic","italic","500italic","600italic","700italic","800italic","900italic","Zero-day phishing protection","Detect phishing TTPs directly in the browser and stop credential theft.","faFishingRod",[322,421],{"@type":106,"@version":107,"tagName":323,"id":324,"children":325},"div","builder-76c6b8d1499346c7bc1fd56ae4e93638",[326,343,351,358,370,385,396,407,413],{"@type":106,"@version":107,"layerName":327,"id":328,"component":329,"responsiveStyles":340},"UseCaseHero","builder-5228fe062bef4a40a91e43f1112832fa",{"name":327,"options":330,"isRSC":118},{"title":318,"description":331,"points":332,"video":339},"\u003Cp>Push detects phishing as it happens. Autonomous agents hunt for new phishing techniques, identify kit signatures, and deploy detections within minutes of a new attack being analyzed. From cloned login pages to AiTM credential harvesting, Push sees what traditional filters miss and stops threats before they escalate.\u003C/p>",[333,335,337],{"item":334},"Detect phishing that bypasses traditional filters, including AiTM, SSO password theft, and fake login pages",{"item":336},"Stop never-before-seen attacks with AI-native behavioral and on-page analysis inside the browser",{"item":338},"Investigate faster with unified browser, user, and page context","https://cdn.builder.io/o/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F40433ceeb4f94b43a82e039a0f4fd411%2Fcompressed?apiKey=f3a1111ff5be48cdbb123cd9f5795a05&token=40433ceeb4f94b43a82e039a0f4fd411&alt=media&optimized=true",{"large":341},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":342},"transparent",{"@type":106,"@version":107,"id":344,"component":345,"responsiveStyles":348},"builder-96634044407e491299e291ed64669e39",{"name":346,"options":347,"isRSC":118},"TrustedBy",{"AllPartners":41,"backgroundTransparent":6},{"large":349},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":350},"#000",{"@type":106,"@version":107,"id":352,"component":353,"responsiveStyles":356},"builder-2c3768f930534557bb8978e32b6a6a0f",{"name":354,"options":355,"isRSC":118},"Diagonal",{"darkMode":41},{"large":357},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"layerName":359,"id":360,"component":361,"responsiveStyles":368},"TextImageBlockVertical","builder-7c3c1c2840424db2ad2ccbfaf382dd64",{"name":359,"tag":359,"options":362,"isRSC":118},{"darkMode":6,"maxWidth":363,"maxTextWidth":364,"title":365,"description":366,"animatedTitle":37,"image":367,"reverse":6,"descriptionPaddingHorizontal":118},1200,800,"\u003Ch2>Why stop at the inbox?\u003C/h2>","\u003Cp>Phishing attacks have evolved. Whether attackers lure users with QR codes, instant messages, or OAuth consent screens, the outcome is the same: it plays out in the browser. Push gives you real-time detection for in-browser threats, stopping phishing and consent-based attacks before they lead to compromise\u003C/p>\u003Cp>\u003Cbr>\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F7fdcac241f0e4a049166d7076858adeb",{"large":369},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":371,"component":372,"responsiveStyles":380},"builder-41c978b3669749cf947e622b4e79e4d7",{"name":373,"options":374,"isRSC":118},"TextImageBlockHorizontal",{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":376,"title":377,"description":378,"reverse":41,"image":379},600,100,"\u003Cp>Detect phishing at the edge\u003C/p>","\u003Cp>Push uses industry-first telemetry to detect phishing based on behavior, not static indicators. Autonomous agents analyze how phishing pages behave and how users interact with them, uncovering fake logins, credential theft, and phishing kits the moment they load in the browser.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F9df3d180c97b4e61af142af2ccd68721",{"large":381},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"fontFamily":382,"paddingTop":383,"marginTop":384},"DM Sans, sans-serif","20px","0px",{"@type":106,"@version":107,"id":386,"component":387,"responsiveStyles":393},"builder-d2a7bc941feb43cdb898bc116b203cf9",{"name":373,"options":388,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":389,"title":390,"description":391,"reverse":6,"image":392},120,"\u003Ch2>Go beyond blocklists and IOCs\u003C/h2>","\u003Cp>Push goes beyond URLs and easy-to-change indicators. It reads the full phishing playbook like script behavior, session hijacks, DOM changes, user inputs, then connects the dots in real time. This gives your team a complete picture of how the phishing attempt worked, not just an alert.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fabfd58db169b433e96d3f1261797156e",{"large":394},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":395},"36px",{"@type":106,"@version":107,"layerName":373,"id":397,"component":398,"responsiveStyles":404},"builder-42c32198083f4880acb37c5cb76934da",{"name":373,"options":399,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":400,"title":401,"description":402,"reverse":41,"image":403},140,"\u003Ch2>Enhance your phishing response\u003C/h2>","\u003Cp>When phishing enters your environment, speed matters. Push gives you instant access to the telemetry that counts like session data, user behavior, and page activity, so you can investigate fast, trigger in-browser prompts, or forward alerts to your SIEM or SOAR for response. All in real time, right from the browser.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fbb195aec46904056b85e8688629e558e",{"large":405},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":406},"47px",{"@type":106,"@version":107,"id":408,"component":409,"responsiveStyles":411},"builder-9a95b9cbc4854421a92ef7b90f6c7adb",{"name":354,"options":410,"isRSC":118},{"darkMode":6},{"large":412},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":414,"component":415,"responsiveStyles":419},"builder-0afa17a9f25c4661a90f314d5578aa18",{"name":416,"tag":416,"options":417,"isRSC":118},"LatestResources",{"sectionHeading":37,"customClass":418},"bg-black",{"large":420},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"id":422,"@type":106,"tagName":131,"properties":423,"responsiveStyles":424},"builder-pixel-21yj6h3p4wh",{"src":133,"aria-hidden":134,"alt":37,"role":135,"width":124,"height":124},{"large":425},{"height":124,"width":124,"display":138,"opacity":124,"overflow":139,"pointerEvents":140},{"deviceSize":142,"location":427},{"path":37,"query":428},{},{},1776275046831,1745499158657,"https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fff60c30a8442489c8ed7e0af9599d14f","kYgMv6WsbvfmlOUYqR2SFwGzw6e2",[],{"lastPreviewUrl":436,"winningTest":118,"breakpoints":437,"kind":438,"hasLinks":6,"originalContentId":439,"hasAutosaves":6},"https://pushsecurity.com/uc/zero-day-phishing-protection?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=use-case-page&builder.noCache=true&builder.allowTextEdit=true&__builder_editing__=true&builder.overrides.use-case-page=387451215c314dd5bd654668cdc1a197&builder.overrides.387451215c314dd5bd654668cdc1a197=387451215c314dd5bd654668cdc1a197&builder.overrides.use-case-page:/uc/zero-day-phishing-protection=387451215c314dd5bd654668cdc1a197&builder.options.locale=Default",{"xsmall":57,"small":39,"medium":40},"page","2daa5670b8504fc7ba4700633e8bd921","atvz4dp24b7",{"createdDate":442,"id":443,"name":444,"modelId":261,"published":13,"stageModifiedSincePublish":6,"query":445,"data":448,"variations":552,"lastUpdated":553,"firstPublished":554,"testRatio":33,"screenshot":555,"createdBy":34,"lastUpdatedBy":433,"folders":556,"meta":557,"rev":440},1756833377777,"54f8256648f54d439303734b1e69221b","Browser extension security",[446],{"@type":264,"property":265,"operator":266,"value":447},"/uc/browser-extension-security",{"seoDescription":449,"jsCode":37,"fontAwesomeIcon":450,"tsCode":37,"title":444,"seoTitle":444,"customFonts":451,"inputs":456,"blocks":457,"url":447,"state":549},"Shine a light on risky browser extensions.","faPuzzlePiece",[452],{"kind":273,"family":272,"version":274,"files":453,"category":295,"lastModified":275,"subsets":454,"variants":455,"menu":296},{"100":277,"200":278,"300":279,"500":280,"600":281,"700":282,"800":283,"900":284,"100italic":288,"italic":289,"regular":290,"900italic":286,"800italic":285,"700italic":287,"200italic":291,"300italic":293,"500italic":292,"600italic":294},[298,299],[301,302,303,304,305,306,128,307,308,309,310,311,312,313,314,315,316,317],[],[458,544],{"@type":106,"@version":107,"tagName":323,"id":459,"meta":460,"children":461},"builder-71d0648c1d2f4ede8d0d0b5b28b7b94c",{"previousId":324},[462,478,485,492,501,511,521,531,538],{"@type":106,"@version":107,"id":463,"meta":464,"component":465,"responsiveStyles":476},"builder-ff325b4b8fad4edea53f38865947e854",{"previousId":328},{"name":327,"options":466,"isRSC":118},{"title":444,"description":467,"points":468,"video":475},"\u003Cp>Browser extensions introduce new code, new permissions, and new potential for risk. Many include AI features, and most go completely unnoticed. Push gives you full visibility into every extension used across your workforce, across major browsers, so you can uncover shadow IT, assess risky permissions, and block unsafe tools before they lead to compromise.\u003C/p>",[469,471,473],{"item":470},"Discover every browser extension in use",{"item":472},"Spot risky or unsanctioned behavior",{"item":474},"Make informed decisions on extension policy","https://cdn.builder.io/o/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fc538aad95d7f403aa3c3551af72f67c0?alt=media&token=1411fa6d-2eac-4e6c-94bf-ea117da12d67&apiKey=f3a1111ff5be48cdbb123cd9f5795a05",{"large":477},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":342},{"@type":106,"@version":107,"id":479,"meta":480,"component":481,"responsiveStyles":483},"builder-fb89d128c64e47cf9cbb11d90fc24523",{"previousId":344},{"name":346,"options":482,"isRSC":118},{"AllPartners":41,"backgroundTransparent":6},{"large":484},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":350},{"@type":106,"@version":107,"id":486,"meta":487,"component":488,"responsiveStyles":490},"builder-54388d35126c4d0096eeebaf8c4448cd",{"previousId":352},{"name":354,"options":489,"isRSC":118},{"darkMode":41},{"large":491},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"layerName":359,"id":493,"component":494,"responsiveStyles":499},"builder-3c8fa6785dd6466abf52a2470d66d85a",{"name":359,"tag":359,"options":495,"isRSC":118},{"darkMode":6,"maxWidth":363,"maxTextWidth":364,"title":496,"description":497,"image":498,"reverse":6},"\u003Ch2>Take control of browser extensions\u003C/h2>","\u003Cp>Attackers are increasingly using malicious browser extensions to gain access to data processed and stored in the browser. And the problem is, most security teams have no visibility into what extensions are being used. Push changes that. With browser-native telemetry, the Push extension continuously inventories browser extensions across your environment, flags the risky ones, and gives you intelligence to act.&nbsp;\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>\u003Cbr>\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F0a004f16a6874f4c8fdf14344acc9fec",{"large":500},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":502,"meta":503,"component":504,"responsiveStyles":509},"builder-93738f98109a4009affb349afd7bb182",{"previousId":371},{"name":373,"options":505,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":376,"title":506,"description":507,"reverse":41,"image":508},"\u003Ch2>Discover every extension in use\u003C/h2>","\u003Cp>Push gives you structured, searchable data about every extension in your environment, so you’re not just seeing what’s there, but also understanding how it got there, what it can do, and who it affects. It’s the kind of granular insight that’s nearly impossible to get from traditional tools, and it lays the groundwork for better policy decisions and faster investigations.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F0e5727ca99474f14b1b7916bf6bbb782",{"large":510},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"fontFamily":382,"paddingTop":383,"marginTop":384},{"@type":106,"@version":107,"id":512,"meta":513,"component":514,"responsiveStyles":519},"builder-83393acb12ee4fdd840839185b51edb4",{"previousId":386},{"name":373,"options":515,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":389,"title":516,"description":517,"reverse":6,"image":518},"\u003Ch2>Spot risky or malicious extensions\u003C/h2>","\u003Cp>Push highlights extensions with dangerous permissions, broad access, or poor reputations. This includes AI extensions that request access far beyond what their stated purpose requires. You can quickly detect sideloaded, manually installed, or development-mode extensions that bypass normal controls. And because Push shows you who’s using them and where, you can respond precisely and effectively.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fa104d58c8da34fbb8901f738fb21453b",{"large":520},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":395},{"@type":106,"@version":107,"layerName":373,"id":522,"meta":523,"component":524,"responsiveStyles":529},"builder-da98e3de949646d89c53a0d1c2784664",{"previousId":397},{"name":373,"options":525,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":400,"title":526,"description":527,"reverse":41,"image":528},"\u003Ch2>Accelerate security reviews\u003C/h2>","\u003Cp>Most teams have extension policies, they just don’t have the data to enforce them. Push reveals how each extension entered your environment, whether it was installed manually, sideloaded, or deployed in dev mode. You’ll see which users are running what, and where, so you can surface violations, investigate quickly, and respond with confidence.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F229f355be6f243b180f410d237a75bb3",{"large":530},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":406},{"@type":106,"@version":107,"id":532,"meta":533,"component":534,"responsiveStyles":536},"builder-1a689287d1a1418997d57db578a71105",{"previousId":408},{"name":354,"options":535,"isRSC":118},{"darkMode":6},{"large":537},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":539,"component":540,"responsiveStyles":542},"builder-feb4e75029f84c10b6498ef1f8f79128",{"name":416,"tag":416,"options":541,"isRSC":118},{"sectionHeading":37,"customClass":418},{"large":543},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"id":545,"@type":106,"tagName":131,"properties":546,"responsiveStyles":547},"builder-pixel-0edn39avfcei",{"src":133,"aria-hidden":134,"alt":37,"role":135,"width":124,"height":124},{"large":548},{"height":124,"width":124,"display":138,"opacity":124,"overflow":139,"pointerEvents":140},{"deviceSize":142,"location":550},{"path":37,"query":551},{},{},1776275365038,1757000441666,"https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F8d496cf111644ee5afcc046b72d1ca5a",[],{"kind":438,"winningTest":118,"breakpoints":558,"lastPreviewUrl":559,"hasLinks":6,"originalContentId":259,"hasAutosaves":6},{"xsmall":57,"small":39,"medium":40},"https://pushsecurity.com/uc/browser-extension-security?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=use-case-page&builder.noCache=true&builder.allowTextEdit=true&__builder_editing__=true&builder.overrides.use-case-page=54f8256648f54d439303734b1e69221b&builder.overrides.54f8256648f54d439303734b1e69221b=54f8256648f54d439303734b1e69221b&builder.overrides.use-case-page:/uc/browser-extension-security=54f8256648f54d439303734b1e69221b&builder.options.locale=Default",{"createdDate":561,"id":562,"name":563,"modelId":261,"published":13,"query":564,"data":567,"variations":670,"lastUpdated":671,"firstPublished":672,"testRatio":33,"screenshot":673,"createdBy":34,"lastUpdatedBy":674,"folders":675,"meta":676,"rev":440},1744923509705,"94bebb7bb99d48629ad157e80cf4d81d","Account takeover detection",[565],{"@type":264,"property":265,"operator":266,"value":566},"/uc/account-takeover-detection",{"title":563,"customFonts":568,"jsCode":37,"seoTitle":563,"seoDescription":573,"fontAwesomeIcon":574,"tsCode":37,"blocks":575,"url":566,"state":667},[569],{"kind":273,"category":295,"variants":570,"menu":296,"files":571,"family":272,"subsets":572,"version":274,"lastModified":275},[301,302,303,304,305,306,128,307,308,309,310,311,312,313,314,315,316,317],{"100":277,"200":278,"300":279,"500":280,"600":281,"700":282,"800":283,"900":284,"300italic":293,"500italic":292,"800italic":285,"700italic":287,"italic":289,"900italic":286,"600italic":294,"200italic":291,"regular":290,"100italic":288},[298,299],"Stop ATO with stolen credential and compromised token detection.","faUserSecret",[576,662],{"@type":106,"@version":107,"tagName":323,"id":577,"meta":578,"children":579},"builder-e7913a774cae44c5a23d6081c5c30a52",{"previousId":324},[580,596,603,610,619,629,639,649,656],{"@type":106,"@version":107,"id":581,"meta":582,"component":583,"responsiveStyles":594},"builder-f1f1ab1601bc4c0f8c2a8aafd173675d",{"previousId":328},{"name":327,"options":584,"isRSC":118},{"title":563,"description":585,"points":586,"video":593},"\u003Cp>Attackers don’t need to phish, they just need a password that works. Push monitors for signs of credential-based attacks in real time, directly in the browser, catching account takeover attempts before the damage spreads. From ghost logins to credential stuffing, Push cuts off the paths attackers use to quietly slip in the back door.\u003C/p>\u003Cp>\u003Cbr>\u003C/p>",[587,589,591],{"item":588},"Identify credential-based ATO as it unfolds",{"item":590},"Surface hijacked sessions and token misuse",{"item":592},"Strengthen authentication where your IdP can’t","https://cdn.builder.io/o/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fb4dd9db24bc9495b8a686b1b4d492016%2Fcompressed?apiKey=f3a1111ff5be48cdbb123cd9f5795a05&token=b4dd9db24bc9495b8a686b1b4d492016&alt=media&optimized=true",{"large":595},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":342},{"@type":106,"@version":107,"id":597,"meta":598,"component":599,"responsiveStyles":601},"builder-0bc0d1c78ece4994993c3a6427a4d533",{"previousId":344},{"name":346,"options":600,"isRSC":118},{"AllPartners":41,"backgroundTransparent":6},{"large":602},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":350},{"@type":106,"@version":107,"id":604,"meta":605,"component":606,"responsiveStyles":608},"builder-e45de8f3768c4f16938dbf78e4e87524",{"previousId":352},{"name":354,"options":607,"isRSC":118},{"darkMode":41},{"large":609},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":611,"component":612,"responsiveStyles":617},"builder-c98e8bfd341146c1b67c02d5698ff093",{"name":359,"tag":359,"options":613,"isRSC":118},{"darkMode":6,"maxWidth":363,"maxTextWidth":364,"title":614,"description":615,"image":616,"reverse":6},"\u003Ch2>Assume less. See more.\u003C/h2>","\u003Cp>Most account takeovers don’t start with a breach, they start with a login. Whether it’s a reused password, a local account, or an outdated login flow, Push shows you how accounts are actually accessed day to day, not just how policies say they should be. That means no more blind spots around ghost logins, bypassed SSO, or stale access paths that quietly persist.\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>\u003Cbr>\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F18630ad2746d4eb7b7fcc0428b11a8f0",{"large":618},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":620,"meta":621,"component":622,"responsiveStyles":627},"builder-55c1fc38ddc04fd1a0d6a8e2fb819e00",{"previousId":371},{"name":373,"options":623,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":376,"title":624,"description":625,"reverse":41,"image":626},"\u003Ch2>Catch stolen credential use in real time\u003C/h2>","\u003Cp>Push monitors login activity directly in the browser to detect signs of credential-based attacks like leaked password use or suspicious login flows. By analyzing attacker TTPs instead of relying on known indicators, Push spots credential stuffing and account takeover attempts the moment they begin, not after they’ve succeeded.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F52b0123cac2c4dfdb1dc0af6adf9d603",{"large":628},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"fontFamily":382,"paddingTop":384,"marginTop":384},{"@type":106,"@version":107,"id":630,"meta":631,"component":632,"responsiveStyles":637},"builder-dfb31737b30948c6b95323655d571a50",{"previousId":386},{"name":373,"options":633,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":389,"title":634,"description":635,"reverse":6,"image":636},"\u003Ch2>Detect session hijacks and stealth access\u003C/h2>","\u003Cp>Attackers don’t always need a login screen, they often sidestep it entirely using stolen session tokens. Push detects when valid sessions are reused in unexpected ways, identifying hijacked sessions and stealth access attempts that traditional tools miss. Because we monitor directly in the browser, you see what’s happening inside active sessions in real time.\u003C/p>\u003Cp>\u003Cbr>\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F94a6859a99e04d309ffe5841f3dbdf5c",{"large":638},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":395},{"@type":106,"@version":107,"layerName":373,"id":640,"meta":641,"component":642,"responsiveStyles":647},"builder-f7585b90eb974d03a7dc7eae5b58d227",{"previousId":397},{"name":373,"options":643,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":400,"title":644,"description":645,"reverse":41,"image":646},"\u003Ch2>Harden accounts before they’re compromised\u003C/h2>","\u003Cp>Push goes beyond alerts. It identifies apps that still allow local logins, even when SSO is configured, so you can remove weak access paths. Push also flags users without MFA, reused work credentials, or weak passwords, and prompts users in-browser to fix risky behaviors before they’re exploited.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F01c1b638f1b6497093a4f2b8ceddb5bb",{"large":648},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":406},{"@type":106,"@version":107,"id":650,"meta":651,"component":652,"responsiveStyles":654},"builder-ad81d1e3afec49a791214194eae09bdc",{"previousId":408},{"name":354,"options":653,"isRSC":118},{"darkMode":6},{"large":655},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":657,"component":658,"responsiveStyles":660},"builder-8dac1aa4b9d148628d92252bd8eff822",{"name":416,"tag":416,"options":659,"isRSC":118},{"sectionHeading":37,"customClass":418},{"large":661},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"id":663,"@type":106,"tagName":131,"properties":664,"responsiveStyles":665},"builder-pixel-s5u3wmvz7jq",{"src":133,"aria-hidden":134,"alt":37,"role":135,"width":124,"height":124},{"large":666},{"height":124,"width":124,"display":138,"opacity":124,"overflow":139,"pointerEvents":140},{"deviceSize":142,"location":668},{"path":37,"query":669},{},{},1770892814499,1745499162732,"https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F58b660fa94aa4b30b0faeb9b663ae41a","SfUPqW5tkibIPby49keNFMdHFTr1",[],{"lastPreviewUrl":677,"hasLinks":6,"originalContentId":259,"breakpoints":678,"winningTest":118,"kind":438,"hasAutosaves":41},"https://pushsecurity.com/uc/account-takeover-detection?builder.space=f3a1111ff5be48cdbb123cd9f5795a05&builder.user.permissions=read%2Ccreate%2Cpublish%2CeditCode%2CeditDesigns%2CeditLayouts%2CeditLayers%2CeditContentPriority%2CeditFolders%2CeditProjects%2CmodifyMcpServers%2CmodifyWorkflowIntegrations%2CmodifyProjectSettings%2CconnectCodeRepository%2CcreateProjects%2CindexDesignSystems%2CsendPullRequests&builder.user.role.name=Developer&builder.user.role.id=developer&builder.cachebust=true&builder.preview=use-case-page&builder.noCache=true&builder.allowTextEdit=true&__builder_editing__=true&builder.overrides.use-case-page=94bebb7bb99d48629ad157e80cf4d81d&builder.overrides.94bebb7bb99d48629ad157e80cf4d81d=94bebb7bb99d48629ad157e80cf4d81d&builder.overrides.use-case-page:/uc/account-takeover-detection=94bebb7bb99d48629ad157e80cf4d81d&builder.options.includeRefs=true&builder.options.enrich=true&builder.options.locale=Default",{"xsmall":57,"small":39,"medium":40},{"createdDate":680,"id":681,"name":682,"modelId":261,"published":13,"query":683,"data":686,"variations":789,"lastUpdated":790,"firstPublished":791,"testRatio":33,"screenshot":792,"createdBy":34,"lastUpdatedBy":674,"folders":793,"meta":794,"rev":440},1745009370904,"23eb48fb56d3451cab77cb6ed140ee6d","Attack path hardening",[684],{"@type":264,"property":265,"operator":266,"value":685},"/uc/attack-path-hardening",{"tsCode":37,"seoDescription":687,"jsCode":37,"customFonts":688,"fontAwesomeIcon":693,"seoTitle":682,"title":682,"blocks":694,"url":685,"state":786},"Harden access paths with visibility,  detection, and guardrails.",[689],{"kind":273,"files":690,"version":274,"lastModified":275,"subsets":691,"menu":296,"category":295,"variants":692,"family":272},{"100":277,"200":278,"300":279,"500":280,"600":281,"700":282,"800":283,"900":284,"regular":290,"italic":289,"800italic":285,"500italic":292,"600italic":294,"200italic":291,"900italic":286,"700italic":287,"100italic":288,"300italic":293},[298,299],[301,302,303,304,305,306,128,307,308,309,310,311,312,313,314,315,316,317],"faRadar",[695,781],{"@type":106,"@version":107,"tagName":323,"id":696,"meta":697,"children":698},"builder-1d8553eddcaa44d7bba9e2f4ca13af2a",{"previousId":577},[699,715,722,729,738,748,758,768,775],{"@type":106,"@version":107,"id":700,"meta":701,"component":702,"responsiveStyles":713},"builder-84fe3d7c85a743cf8cef649aa974f1ef",{"previousId":581},{"name":327,"options":703,"isRSC":118},{"title":682,"description":704,"points":705,"video":712},"\u003Cp>Push continuously monitors your environment for exposed login paths, weak credentials, and missing protections like MFA. It detects the gaps attackers exploit and helps you close them before they’re used.\u003C/p>",[706,708,710],{"item":707},"Find weak spots like reused passwords, local logins, and missing MFA",{"item":709},"Monitor how users actually log in across apps, flows, and tools",{"item":711},"Enforce secure access with in-browser guardrails","https://cdn.builder.io/o/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fdbdcf52892034f1bbddded77f753a343%2Fcompressed?apiKey=f3a1111ff5be48cdbb123cd9f5795a05&token=dbdcf52892034f1bbddded77f753a343&alt=media&optimized=true",{"large":714},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":342},{"@type":106,"@version":107,"id":716,"meta":717,"component":718,"responsiveStyles":720},"builder-b3f66f5b08054cc78a06fecfc3ae2337",{"previousId":597},{"name":346,"options":719,"isRSC":118},{"AllPartners":41,"backgroundTransparent":6},{"large":721},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":350},{"@type":106,"@version":107,"id":723,"meta":724,"component":725,"responsiveStyles":727},"builder-4c73418b84be49ed85e6e13d2625c5a0",{"previousId":604},{"name":354,"options":726,"isRSC":118},{"darkMode":41},{"large":728},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":730,"component":731,"responsiveStyles":736},"builder-dec0246085e1485c803f7152b1922a81",{"name":359,"tag":359,"options":732,"isRSC":118},{"darkMode":6,"maxWidth":363,"maxTextWidth":364,"title":733,"description":734,"image":735,"reverse":6},"\u003Ch2>Find the gaps that lead to compromise\u003C/h2>","\u003Cp>Misconfigurations don’t show up in your config files, they show up in how users actually access apps. Push monitors real login behavior in the browser, surfacing risky patterns like local login access, duplicate accounts, or missing protections that leave doors wide open.\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>\u003Cbr>\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F309a59bba8d247a19476bb369397460e",{"large":737},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":739,"meta":740,"component":741,"responsiveStyles":746},"builder-ebf049a645604a249550996a88f8f3b6",{"previousId":620},{"name":373,"options":742,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":376,"title":743,"description":744,"reverse":41,"image":745},"\u003Ch2>See real login behavior\u003C/h2>","\u003Cp>Push watches authentication flows as they happen, giving you a live view of how users log in, which methods they choose, and where protections like MFA are missing. Plus, uncover every app and account in use, even shadow IT you didn’t know existed, without relying on stale config files or IdP assumptions. \u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fb51f6b0357cc451b87a7a5016d984e5e",{"large":747},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"fontFamily":382,"paddingTop":383,"marginTop":384},{"@type":106,"@version":107,"id":749,"meta":750,"component":751,"responsiveStyles":756},"builder-431d175c59004669b0b2776b07d71737",{"previousId":630},{"name":373,"options":752,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":389,"title":753,"description":754,"reverse":6,"image":755},"\u003Ch2>Find and fix posture drift\u003C/h2>","\u003Cp>Security posture isn’t static. Push continuously monitors for issues like missing MFA or legacy login methods. When something falls out of policy, you know immediately with custom notifications so you can act before it turns into risk.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F324e39127dfc41e592b1183dfb39892d",{"large":757},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":395},{"@type":106,"@version":107,"layerName":373,"id":759,"meta":760,"component":761,"responsiveStyles":766},"builder-3dffdcbe0a484e2ca4c03f019b6d40ee",{"previousId":640},{"name":373,"options":762,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":400,"title":763,"description":764,"reverse":41,"image":765},"\u003Ch2>Guide users with in-browser guardrails\u003C/h2>","\u003Cp>Push doesn’t just surface problems, it helps you fix them. When users sign in without MFA, reuse a password, or use insecure credentials, Push prompts them directly in the browser to secure their access. It’s faster, more effective, and actually gets results.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fee8b75d13e45488aba55434a8b49ebb0",{"large":767},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":406},{"@type":106,"@version":107,"id":769,"meta":770,"component":771,"responsiveStyles":773},"builder-976bc222cd7647ff905f1e01cfedc453",{"previousId":650},{"name":354,"options":772,"isRSC":118},{"darkMode":6},{"large":774},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":776,"component":777,"responsiveStyles":779},"builder-8c47ec2fd0f74382bb3e6c870555632c",{"name":416,"tag":416,"options":778,"isRSC":118},{"sectionHeading":37,"customClass":418},{"large":780},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"id":782,"@type":106,"tagName":131,"properties":783,"responsiveStyles":784},"builder-pixel-7akm7dayau8",{"src":133,"aria-hidden":134,"alt":37,"role":135,"width":124,"height":124},{"large":785},{"height":124,"width":124,"display":138,"opacity":124,"overflow":139,"pointerEvents":140},{"deviceSize":142,"location":787},{"path":37,"query":788},{},{},1770892844854,1745499166112,"https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F6ca12bf728a045f1a31d40c0beb3bfe5",[],{"kind":438,"lastPreviewUrl":795,"breakpoints":796,"hasLinks":6,"originalContentId":562,"winningTest":118,"hasAutosaves":6},"https://pushsecurity.com/uc/attack-path-hardening?builder.space=f3a1111ff5be48cdbb123cd9f5795a05&builder.user.permissions=read%2Ccreate%2Cpublish%2CeditCode%2CeditDesigns%2CeditLayouts%2CeditLayers%2CeditContentPriority%2CeditFolders%2CeditProjects%2CmodifyMcpServers%2CmodifyWorkflowIntegrations%2CmodifyProjectSettings%2CconnectCodeRepository%2CcreateProjects%2CindexDesignSystems%2CsendPullRequests&builder.user.role.name=Developer&builder.user.role.id=developer&builder.cachebust=true&builder.preview=use-case-page&builder.noCache=true&builder.allowTextEdit=true&__builder_editing__=true&builder.overrides.use-case-page=23eb48fb56d3451cab77cb6ed140ee6d&builder.overrides.23eb48fb56d3451cab77cb6ed140ee6d=23eb48fb56d3451cab77cb6ed140ee6d&builder.overrides.use-case-page:/uc/attack-path-hardening=23eb48fb56d3451cab77cb6ed140ee6d&builder.options.includeRefs=true&builder.options.enrich=true&builder.options.locale=Default",{"xsmall":57,"small":39,"medium":40},{"createdDate":798,"id":799,"name":800,"modelId":261,"published":13,"query":801,"data":804,"variations":909,"lastUpdated":910,"firstPublished":911,"testRatio":33,"screenshot":912,"createdBy":34,"lastUpdatedBy":674,"folders":913,"meta":914,"rev":440},1761675020232,"ea4f309d2ffe46c5aa97ebf0fda4e2e3","ClickFix Protection",[802],{"@type":264,"property":265,"operator":266,"value":803},"/uc/clickfix-protection",{"seoDescription":805,"fontAwesomeIcon":806,"customFonts":807,"seoTitle":812,"jsCode":37,"tsCode":37,"title":812,"blocks":813,"url":803,"state":906},"Block attacks that trick users into running malicious code.","faLaptopCode",[808],{"files":809,"subsets":810,"menu":296,"version":274,"kind":273,"family":272,"lastModified":275,"variants":811,"category":295},{"100":277,"200":278,"300":279,"500":280,"600":281,"700":282,"800":283,"900":284,"200italic":291,"800italic":285,"700italic":287,"600italic":294,"100italic":288,"italic":289,"regular":290,"300italic":293,"500italic":292,"900italic":286},[298,299],[301,302,303,304,305,306,128,307,308,309,310,311,312,313,314,315,316,317],"ClickFix protection",[814,901],{"@type":106,"@version":107,"tagName":323,"id":815,"meta":816,"children":817},"builder-d7eefdde0f2a4b2b9de3dcb2978fd6cb",{"previousId":696},[818,834,841,848,858,868,878,888,895],{"@type":106,"@version":107,"id":819,"meta":820,"component":821,"responsiveStyles":832},"builder-56e2c54bcce040a4af8b92ae03706c12",{"previousId":700},{"name":327,"options":822,"isRSC":118},{"title":812,"description":823,"points":824,"image":831},"\u003Cp>ClickFix attacks are one of the fastest-growing threats, tricking users into copying malicious code from a webpage and running it locally. This technique bypasses traditional EDR, email gateways, and network filters, leading directly to ransomware and data theft. Push stops this attack at the source, in the browser, by detecting and blocking the malicious behavior before the user can ever paste the code.\u003C/p>\u003Cp>\u003Cbr>\u003C/p>",[825,827,829],{"item":826},"Detect ClickFix, FileFix, and fake CAPTCHA in the browser",{"item":828},"Block malicious copy-and-paste actions before code is executed",{"item":830},"See full telemetry into which users were targeted and what they saw","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F7b74af62889847ebb3927364485b0546",{"large":833},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":342},{"@type":106,"@version":107,"id":835,"meta":836,"component":837,"responsiveStyles":839},"builder-05f9614d4e3e4dc88b3ee8658f54e10e",{"previousId":716},{"name":346,"options":838,"isRSC":118},{"AllPartners":41,"backgroundTransparent":6},{"large":840},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":350},{"@type":106,"@version":107,"id":842,"meta":843,"component":844,"responsiveStyles":846},"builder-c4fb5179366243c1b6c32d368675cf47",{"previousId":723},{"name":354,"options":845,"isRSC":118},{"darkMode":41},{"large":847},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":849,"meta":850,"component":851,"responsiveStyles":856},"builder-261af50705fd445d8cca4a6ba20d5391",{"previousId":730},{"name":359,"tag":359,"options":852,"isRSC":118},{"darkMode":6,"maxWidth":363,"maxTextWidth":364,"title":853,"description":854,"reverse":6,"image":855},"\u003Ch2>Stop ClickFix-style attacks before they become a breach\u003C/h2>","\u003Cp>Traditional security tools are blind to malicious copy and paste attacks because the attack exploits a gap between the browser and the endpoint. EDR only sees the payload after it runs, and network tools see only part of the picture.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F98b2f7e08dec4eafaf8e24937605b8cf",{"large":857},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":859,"meta":860,"component":861,"responsiveStyles":866},"builder-7d21b8aab8064c40b1e5dd23c4749309",{"previousId":739},{"name":373,"options":862,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":376,"title":863,"description":864,"reverse":41,"image":865},"\u003Ch2>Discover lures at the source\u003C/h2>","\u003Cp>Push inspects page behavior to identify ClickFix attacks as they happen. By inspecting the page, its structure, and how the user interacts with it, Push can detect and block these in-browser threats in real time. This deep, TTP-based inspection spots the trap even on novel pages that are built to bypass traditional web filters and blocklists.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F665bf47e01544c75bf9ddafd3917927b",{"large":867},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"fontFamily":382,"paddingTop":383,"marginTop":384},{"@type":106,"@version":107,"id":869,"meta":870,"component":871,"responsiveStyles":876},"builder-fb91943adf6149259ed9e1e6566c9afe",{"previousId":749},{"name":373,"options":872,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":389,"title":873,"description":874,"reverse":6,"image":875},"\u003Ch2>Block the malicious action\u003C/h2>","\u003Cp>When Push detects a malicious script, it intercepts the user's action and blocks the code from being copied to the clipboard. The user is protected, the attack is stopped, and no malicious code ever reaches the endpoint. Unlike broad DLP tools, this action is surgical, targeting only malicious behavior without disrupting normal work.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F5ee68f81f1ac416685cbfe91298cf827",{"large":877},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":395},{"@type":106,"@version":107,"layerName":373,"id":879,"meta":880,"component":881,"responsiveStyles":886},"builder-bfac95fada864e5a8259b955b5b5f98b",{"previousId":759},{"name":373,"options":882,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":400,"title":883,"description":884,"reverse":41,"image":885},"\u003Ch2>Accelerate ClickFix investigations\u003C/h2>","\u003Cp>When an attack happens, knowing what the user saw or did is critical. Push provides rich browser session data for rapid investigation and containment. Security teams get detailed telemetry on which users were targeted, what lure they were served, and when the block occurred. This enables defenders to reconstruct what happened and respond quickly, even when other tools miss the activity entirely.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F6cdf2a8aeddc4e9a9023cbf974e40239",{"large":887},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":406},{"@type":106,"@version":107,"id":889,"meta":890,"component":891,"responsiveStyles":893},"builder-136892e831684a6987f87d3be67c33d1",{"previousId":769},{"name":354,"options":892,"isRSC":118},{"darkMode":6},{"large":894},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":896,"component":897,"responsiveStyles":899},"builder-dec26b739f2f42beb5a73cfc6c675b60",{"name":416,"tag":416,"options":898,"isRSC":118},{"sectionHeading":37,"customClass":418},{"large":900},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"id":902,"@type":106,"tagName":131,"properties":903,"responsiveStyles":904},"builder-pixel-zzjpxxgrc2l",{"src":133,"aria-hidden":134,"alt":37,"role":135,"width":124,"height":124},{"large":905},{"height":124,"width":124,"display":138,"opacity":124,"overflow":139,"pointerEvents":140},{"deviceSize":142,"location":907},{"path":37,"query":908},{},{},1770892881888,1761847585203,"https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F375467b8bef34ed1a8a1cc5b8b67d75f",[],{"lastPreviewUrl":915,"originalContentId":681,"winningTest":118,"hasLinks":6,"kind":438,"breakpoints":916,"hasAutosaves":6},"https://pushsecurity.com/uc/clickfix-protection?builder.space=f3a1111ff5be48cdbb123cd9f5795a05&builder.user.permissions=read%2Ccreate%2Cpublish%2CeditCode%2CeditDesigns%2CeditLayouts%2CeditLayers%2CeditContentPriority%2CeditFolders%2CeditProjects%2CmodifyMcpServers%2CmodifyWorkflowIntegrations%2CmodifyProjectSettings%2CconnectCodeRepository%2CcreateProjects%2CindexDesignSystems%2CsendPullRequests&builder.user.role.name=Developer&builder.user.role.id=developer&builder.cachebust=true&builder.preview=use-case-page&builder.noCache=true&builder.allowTextEdit=true&__builder_editing__=true&builder.overrides.use-case-page=ea4f309d2ffe46c5aa97ebf0fda4e2e3&builder.overrides.ea4f309d2ffe46c5aa97ebf0fda4e2e3=ea4f309d2ffe46c5aa97ebf0fda4e2e3&builder.overrides.use-case-page:/uc/clickfix-protection=ea4f309d2ffe46c5aa97ebf0fda4e2e3&builder.options.includeRefs=true&builder.options.enrich=true&builder.options.locale=Default",{"xsmall":57,"small":39,"medium":40},{"createdDate":918,"id":919,"name":920,"modelId":261,"published":13,"query":921,"data":924,"variations":1029,"lastUpdated":1030,"firstPublished":1031,"testRatio":33,"screenshot":1032,"createdBy":34,"lastUpdatedBy":674,"folders":1033,"meta":1034,"rev":440},1745009743870,"a9d5556e77f84a37b5bd52310a7110c1","Incident response",[922],{"@type":264,"property":265,"operator":266,"value":923},"/uc/incident-response",{"seoDescription":925,"customFonts":926,"title":920,"jsCode":37,"fontAwesomeIcon":931,"seoTitle":932,"tsCode":37,"blocks":933,"url":923,"state":1026},"Investigate and respond faster with unique browser telemetry.",[927],{"kind":273,"subsets":928,"menu":296,"variants":929,"category":295,"family":272,"version":274,"lastModified":275,"files":930},[298,299],[301,302,303,304,305,306,128,307,308,309,310,311,312,313,314,315,316,317],{"100":277,"200":278,"300":279,"500":280,"600":281,"700":282,"800":283,"900":284,"900italic":286,"600italic":294,"200italic":291,"300italic":293,"100italic":288,"700italic":287,"800italic":285,"regular":290,"italic":289,"500italic":292},"faSatelliteDish","Browser based incident response",[934,1021],{"@type":106,"@version":107,"tagName":323,"id":935,"meta":936,"children":937},"builder-653c4aed737b4def88dc4cd2d695660a",{"previousId":696},[938,955,962,969,978,988,998,1008,1015],{"@type":106,"@version":107,"id":939,"meta":940,"component":941,"responsiveStyles":953},"builder-18190bd36518467d9154d27d7e945b9b",{"previousId":700},{"name":327,"options":942,"isRSC":118},{"title":943,"description":944,"points":945,"video":952},"Browser-based incident response","\u003Cp>Push gives you real-time visibility into what actually happened during a breach, right in the browser where the attack played out. From credential theft to session hijacking, Push captures high-fidelity telemetry so you can investigate quickly, contain confidently, and shut it down before it spreads.\u003C/p>\u003Cp>\u003Cbr>\u003C/p>",[946,948,950],{"item":947},"Reconstruct what happened with real browser session context",{"item":949},"Investigate faster with real-world session context",{"item":951},"Trigger response actions automatically through your SIEM or SOAR","https://cdn.builder.io/o/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fd00e39d3b6e346c296261d875cf55652%2Fcompressed?apiKey=f3a1111ff5be48cdbb123cd9f5795a05&token=d00e39d3b6e346c296261d875cf55652&alt=media&optimized=true",{"large":954},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":342},{"@type":106,"@version":107,"id":956,"meta":957,"component":958,"responsiveStyles":960},"builder-8a0a8ea63f5d48dd8a6726f2d49cf0ca",{"previousId":716},{"name":346,"options":959,"isRSC":118},{"AllPartners":41,"backgroundTransparent":6},{"large":961},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":350},{"@type":106,"@version":107,"id":963,"meta":964,"component":965,"responsiveStyles":967},"builder-2df65c3f54334df2b26e7cb744886cdc",{"previousId":723},{"name":354,"options":966,"isRSC":118},{"darkMode":41},{"large":968},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":970,"component":971,"responsiveStyles":976},"builder-2c32c869efc2423ab69ef06b150e9f97",{"name":359,"tag":359,"options":972,"isRSC":118},{"darkMode":6,"maxWidth":363,"maxTextWidth":364,"title":973,"description":974,"image":975,"reverse":6},"\u003Ch2>See attacks unfold, not just their aftermath\u003C/h2>","\u003Cp>Attacks happen in the browser, not in logs. Push captures what traditional tools miss: what users clicked, what loaded, what was entered, and how attackers moved. That gives you real-world evidence, not just assumptions, when every second matters.\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>\u003Cbr>\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F36fc719bd1de4a38b916f4d25c81a26d",{"large":977},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":979,"meta":980,"component":981,"responsiveStyles":986},"builder-370e53c6016e432db01e9193a2ce90f6",{"previousId":739},{"name":373,"options":982,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":376,"title":983,"description":984,"reverse":41,"image":985},"\u003Ch2>Investigate faster with high-fidelity data\u003C/h2>","\u003Cp>Reconstructing an incident shouldn’t feel like guesswork. Push records detailed telemetry from inside the browser: page loads, credential inputs, DOM changes, session activity, user behavior. It’s structured, exportable, and ready to plug into your investigation workflows, so you can move fast without digging through proxy logs or relying on user reports.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fa6adda040e684e67a8d68a55c5ce5f6d",{"large":987},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"fontFamily":382,"paddingTop":384,"marginTop":384},{"@type":106,"@version":107,"id":989,"meta":990,"component":991,"responsiveStyles":996},"builder-a7f3767a8d184bd08fb24520bf210e95",{"previousId":749},{"name":373,"options":992,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":389,"title":993,"description":994,"reverse":6,"image":995},"\u003Ch2>Contain and respond in real time\u003C/h2>","\u003Cp>When something looks off, Push doesn’t just alert you, it gives you options. Guide users with in-browser prompts. Terminate sessions. Trigger SOAR workflows. Enrich SIEM alerts. Push gives you the context and control to stop spread before it starts.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fb3dedeed5aba4847a2c2d22e10d0ec12",{"large":997},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":395},{"@type":106,"@version":107,"layerName":373,"id":999,"meta":1000,"component":1001,"responsiveStyles":1006},"builder-b92036ee0ece4b32acdbdcc7c377366b",{"previousId":759},{"name":373,"options":1002,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":400,"title":1003,"description":1004,"reverse":41,"image":1005},"\u003Ch2>Prevent the next one\u003C/h2>","\u003Cp>Push helps you respond fast, but it also helps you fix what went wrong. It surfaces misconfigurations and risky behaviors that made the attack possible in the first place, then guides users in-browser to remediate. One tool. Full loop. No loose ends.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fc1ecc2d5d3814b62b072fac01827ff96",{"large":1007},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":406},{"@type":106,"@version":107,"id":1009,"meta":1010,"component":1011,"responsiveStyles":1013},"builder-5e8ae39655274de89da32ab573a2525a",{"previousId":769},{"name":354,"options":1012,"isRSC":118},{"darkMode":6},{"large":1014},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":1016,"component":1017,"responsiveStyles":1019},"builder-dfd6850cfb4741d2b8a0c16c2780f00a",{"name":416,"tag":416,"options":1018,"isRSC":118},{"sectionHeading":37,"customClass":418},{"large":1020},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"id":1022,"@type":106,"tagName":131,"properties":1023,"responsiveStyles":1024},"builder-pixel-z197gdgcmu",{"src":133,"aria-hidden":134,"alt":37,"role":135,"width":124,"height":124},{"large":1025},{"height":124,"width":124,"display":138,"opacity":124,"overflow":139,"pointerEvents":140},{"deviceSize":142,"location":1027},{"path":37,"query":1028},{},{},1770892908052,1745427419274,"https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fb07017bfd318431690a5bb35bda35b99",[],{"kind":438,"breakpoints":1035,"originalContentId":681,"winningTest":118,"lastPreviewUrl":1036,"hasLinks":6,"hasAutosaves":6},{"xsmall":57,"small":39,"medium":40},"https://pushsecurity.com/uc/incident-response?builder.space=f3a1111ff5be48cdbb123cd9f5795a05&builder.user.permissions=read%2Ccreate%2Cpublish%2CeditCode%2CeditDesigns%2CeditLayouts%2CeditLayers%2CeditContentPriority%2CeditFolders%2CeditProjects%2CmodifyMcpServers%2CmodifyWorkflowIntegrations%2CmodifyProjectSettings%2CconnectCodeRepository%2CcreateProjects%2CindexDesignSystems%2CsendPullRequests&builder.user.role.name=Developer&builder.user.role.id=developer&builder.cachebust=true&builder.preview=use-case-page&builder.noCache=true&builder.allowTextEdit=true&__builder_editing__=true&builder.overrides.use-case-page=a9d5556e77f84a37b5bd52310a7110c1&builder.overrides.a9d5556e77f84a37b5bd52310a7110c1=a9d5556e77f84a37b5bd52310a7110c1&builder.overrides.use-case-page:/uc/incident-response=a9d5556e77f84a37b5bd52310a7110c1&builder.options.includeRefs=true&builder.options.enrich=true&builder.options.locale=Default",{"createdDate":1038,"id":1039,"name":1040,"modelId":261,"published":13,"query":1041,"data":1044,"variations":1149,"lastUpdated":1150,"firstPublished":1151,"testRatio":33,"screenshot":1152,"createdBy":34,"lastUpdatedBy":674,"folders":1153,"meta":1154,"rev":440},1746122471259,"5f118e24433d46ceb79f5099987156d7","Shadow SaaS",[1042],{"@type":264,"property":265,"operator":266,"value":1043},"/uc/shadow-saas",{"seoTitle":1045,"seoDescription":1046,"customFonts":1047,"fontAwesomeIcon":1052,"title":1053,"jsCode":37,"tsCode":37,"blocks":1054,"url":1043,"state":1146},"Find and secure shadow SaaS","See and control shadow SaaS in the browser.",[1048],{"kind":273,"variants":1049,"files":1050,"family":272,"version":274,"subsets":1051,"lastModified":275,"category":295,"menu":296},[301,302,303,304,305,306,128,307,308,309,310,311,312,313,314,315,316,317],{"100":277,"200":278,"300":279,"500":280,"600":281,"700":282,"800":283,"900":284,"300italic":293,"500italic":292,"regular":290,"900italic":286,"italic":289,"100italic":288,"200italic":291,"600italic":294,"700italic":287,"800italic":285},[298,299],"faShieldCheck","Secure shadow SaaS",[1055,1141],{"@type":106,"@version":107,"tagName":323,"id":1056,"meta":1057,"children":1058},"builder-04da805c4cd34652a2db452fcda52e1d",{"previousId":935},[1059,1075,1082,1089,1098,1108,1118,1128,1135],{"@type":106,"@version":107,"id":1060,"meta":1061,"component":1062,"responsiveStyles":1073},"builder-830d414faeaf41439142f9157e8288c8",{"previousId":939},{"name":327,"options":1063,"isRSC":118},{"title":1045,"description":1064,"points":1065,"video":1072},"\u003Cp>SaaS sprawl is one of today’s fastest-growing security blind spots because most tools monitor around the edges. Push sees it at the source, in the browser, revealing every app users access, flagging risky tools, and helping you shut down exposure before it leads to a breach. No guesswork. No nasty surprises. Just real-time visibility and control.\u003C/p>",[1066,1068,1070],{"item":1067},"Discover every SaaS app users access, managed or not",{"item":1069},"Spot accounts with weak security postures like missing MFA, unmanaged access, and no SSO",{"item":1071},"Control usage with in-browser prompts, blocks, and security guardrails","https://cdn.builder.io/o/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F3e4eece318d04d6586e691d59d0741cf%2Fcompressed?apiKey=f3a1111ff5be48cdbb123cd9f5795a05&token=3e4eece318d04d6586e691d59d0741cf&alt=media&optimized=true",{"large":1074},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":342},{"@type":106,"@version":107,"id":1076,"meta":1077,"component":1078,"responsiveStyles":1080},"builder-cd7833f966cb4c7e8adf0d6c979414a6",{"previousId":956},{"name":346,"options":1079,"isRSC":118},{"AllPartners":41,"backgroundTransparent":6},{"large":1081},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":350},{"@type":106,"@version":107,"id":1083,"meta":1084,"component":1085,"responsiveStyles":1087},"builder-49d720b45430454e8b08c526f267c19f",{"previousId":963},{"name":354,"options":1086,"isRSC":118},{"darkMode":41},{"large":1088},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":1090,"component":1091,"responsiveStyles":1096},"builder-3dde0bf6c8544e5e9ab41b18a9d68034",{"name":359,"tag":359,"options":1092,"isRSC":118},{"darkMode":6,"maxWidth":363,"maxTextWidth":364,"title":1093,"description":1094,"image":1095,"reverse":6},"\u003Ch2>Use your browser to curb Saas Sprawl\u003C/h2>","\u003Cp>Shadow SaaS isn’t hiding in your network, it’s in your browser. From AI tools to unsanctioned file-sharing sites, security risks live in the apps your users sign into every day. Push maps your organization's true SaaS footprint in real time, exposing apps and accounts with unmanaged access, poor authentication, or no security oversight.\u003C/p>\u003Cp>\u003Cbr>\u003C/p>\u003Cp>\u003Cbr>\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fb6811a214c7949b6bbe0b9a3bca62efd",{"large":1097},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":1099,"meta":1100,"component":1101,"responsiveStyles":1106},"builder-e2420451ccdc4f088d0a4904cff45935",{"previousId":979},{"name":373,"options":1102,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":376,"title":1103,"description":1104,"reverse":41,"image":1105},"\u003Ch2>Discover hidden SaaS usage\u003C/h2>","\u003Cp>Push captures live browser telemetry across every tab and session. Whether a user signs into a sanctioned app with a personal account or tries a new AI plugin, you’ll see it in real time, with no integrations or manual tagging.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fe16e301f9af94665b95d98232a863d8a",{"large":1107},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"fontFamily":382,"paddingTop":384,"marginTop":384},{"@type":106,"@version":107,"id":1109,"meta":1110,"component":1111,"responsiveStyles":1116},"builder-b36de7fce7994beea9e58d94662e7166",{"previousId":989},{"name":373,"options":1112,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":389,"title":1113,"description":1114,"reverse":6,"image":1115},"\u003Ch2>Spot risky access and unsafe usage\u003C/h2>","\u003Cp>Discovery is just the beginning. Push flags apps with risky traits, no MFA, no SSO, known vulnerabilities, or broad access scopes. You’ll know which tools introduce real risk, and which users are exposed so you can act with precision.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F6585f3c242da4d70ae3cb7d02f481bef",{"large":1117},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":395},{"@type":106,"@version":107,"layerName":373,"id":1119,"meta":1120,"component":1121,"responsiveStyles":1126},"builder-dc366b5134684fe7a508edf8913103ea",{"previousId":999},{"name":373,"options":1122,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":400,"title":1123,"description":1124,"reverse":41,"image":1125},"\u003Ch2>Close gaps before they grow\u003C/h2>","\u003Cp>Push turns insight into action. When risky SaaS use is detected, guide users to enable MFA, block high-risk apps, or apply in-browser guardrails automatically. All without deploying new infrastructure or managing dozens of integrations.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fe6d60b6d91414819bc6258a318f00557",{"large":1127},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":406},{"@type":106,"@version":107,"id":1129,"meta":1130,"component":1131,"responsiveStyles":1133},"builder-8708f6f0d8da4b3f9e17bf16cda70219",{"previousId":1009},{"name":354,"options":1132,"isRSC":118},{"darkMode":6},{"large":1134},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":1136,"component":1137,"responsiveStyles":1139},"builder-8ff4b38d60534cf28cb523ab0f754875",{"name":416,"tag":416,"options":1138,"isRSC":118},{"sectionHeading":37,"customClass":418},{"large":1140},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"id":1142,"@type":106,"tagName":131,"properties":1143,"responsiveStyles":1144},"builder-pixel-d1ul2kmxbed",{"src":133,"aria-hidden":134,"alt":37,"role":135,"width":124,"height":124},{"large":1145},{"height":124,"width":124,"display":138,"opacity":124,"overflow":139,"pointerEvents":140},{"deviceSize":142,"location":1147},{"path":37,"query":1148},{},{},1770892936802,1746714967208,"https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F01bfb2304521412fbd2e1a1180904d40",[],{"originalContentId":919,"winningTest":118,"lastPreviewUrl":1155,"breakpoints":1156,"kind":438,"hasLinks":6,"hasAutosaves":6},"https://pushsecurity.com/uc/shadow-saas?builder.space=f3a1111ff5be48cdbb123cd9f5795a05&builder.user.permissions=read%2Ccreate%2Cpublish%2CeditCode%2CeditDesigns%2CeditLayouts%2CeditLayers%2CeditContentPriority%2CeditFolders%2CeditProjects%2CmodifyMcpServers%2CmodifyWorkflowIntegrations%2CmodifyProjectSettings%2CconnectCodeRepository%2CcreateProjects%2CindexDesignSystems%2CsendPullRequests&builder.user.role.name=Developer&builder.user.role.id=developer&builder.cachebust=true&builder.preview=use-case-page&builder.noCache=true&builder.allowTextEdit=true&__builder_editing__=true&builder.overrides.use-case-page=5f118e24433d46ceb79f5099987156d7&builder.overrides.5f118e24433d46ceb79f5099987156d7=5f118e24433d46ceb79f5099987156d7&builder.overrides.use-case-page:/uc/shadow-saas=5f118e24433d46ceb79f5099987156d7&builder.options.includeRefs=true&builder.options.enrich=true&builder.options.locale=Default",{"xsmall":57,"small":39,"medium":40},{"createdDate":1158,"id":1159,"name":1160,"modelId":261,"published":13,"query":1161,"data":1164,"variations":1268,"lastUpdated":1269,"firstPublished":1270,"testRatio":33,"screenshot":1271,"createdBy":34,"lastUpdatedBy":674,"folders":1272,"meta":1273,"rev":440},1764707470172,"b62629ce2f3741158d961cd10fe74b31","Shadow AI",[1162],{"@type":264,"property":265,"operator":266,"value":1163},"/uc/shadow-ai",{"fontAwesomeIcon":1165,"seoTitle":1166,"jsCode":37,"customFonts":1167,"title":1172,"tsCode":37,"seoDescription":1173,"blocks":1174,"url":1163,"state":1265},"faBrainCircuit","Secure AI native and AI enhanced apps. ",[1168],{"variants":1169,"category":295,"files":1170,"subsets":1171,"family":272,"kind":273,"menu":296,"lastModified":275,"version":274},[301,302,303,304,305,306,128,307,308,309,310,311,312,313,314,315,316,317],{"100":277,"200":278,"300":279,"500":280,"600":281,"700":282,"800":283,"900":284,"800italic":285,"regular":290,"700italic":287,"200italic":291,"italic":289,"500italic":292,"600italic":294,"300italic":293,"100italic":288,"900italic":286},[298,299],"Secure shadow AI","See and control shadow AI apps in the browser.",[1175,1260],{"@type":106,"@version":107,"tagName":323,"id":1176,"meta":1177,"children":1178},"builder-a6e5717a2c914d5695058e4ee201a05d",{"previousId":1056},[1179,1195,1202,1209,1219,1228,1237,1247,1254],{"@type":106,"@version":107,"id":1180,"meta":1181,"component":1182,"responsiveStyles":1193},"builder-3e0ed678683f4a0eb7aa00253cf263b2",{"previousId":1060},{"name":327,"options":1183,"isRSC":118},{"title":1172,"description":1184,"points":1185,"image":1192},"\u003Cp>Your employees are adopting AI faster than you can track it. From native features in corporate apps to unapproved shadow tools, it’s all happening in the browser. Push detects every AI interaction in real time, letting you categorize apps and enforce acceptable use policies in the browser.\u003C/p>",[1186,1188,1190],{"item":1187},"Map every AI tool used across your workforce",{"item":1189},"Review and classify apps by sensitivity, purpose, and policy status",{"item":1191},"Enforce AI usage rules directly in the browser","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F33cf153d920f4e389f3650253577cff7",{"large":1194},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":342},{"@type":106,"@version":107,"id":1196,"meta":1197,"component":1198,"responsiveStyles":1200},"builder-76968f8471d14893b8189d75b08fb426",{"previousId":1076},{"name":346,"options":1199,"isRSC":118},{"AllPartners":41,"backgroundTransparent":6},{"large":1201},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"backgroundColor":350},{"@type":106,"@version":107,"id":1203,"meta":1204,"component":1205,"responsiveStyles":1207},"builder-b55b9d4bc5a649d8839ce7f6c2043d95",{"previousId":1083},{"name":354,"options":1206,"isRSC":118},{"darkMode":41},{"large":1208},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":1210,"meta":1211,"component":1212,"responsiveStyles":1217},"builder-c3f38ef4d75d4989a29b5903175ed8a1",{"previousId":1090},{"name":359,"tag":359,"options":1213,"isRSC":118},{"darkMode":6,"maxWidth":363,"maxTextWidth":364,"title":1214,"description":1215,"image":1216,"reverse":6},"\u003Ch2>Use your browser to govern AI \u003C/h2>","\u003Cp>The AI footprint inside your company is bigger than you think. From text generators to meeting assistants and design copilots, employees test, adopt, and connect new tools constantly. Push shows you those tools and which users are accessing them, without relying on network scans or API integrations.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2F30b43bda6f1644c19478fb1efa20050c",{"large":1218},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":1220,"meta":1221,"component":1222,"responsiveStyles":1226},"builder-90ee9cb9afc44e7f885523715bf51a53",{"previousId":1099},{"name":373,"options":1223,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":376,"title":1224,"description":1225,"reverse":41,"image":1115},"\u003Ch2>Discover every AI tool users touch\u003C/h2>","\u003Cp>Push captures live telemetry from the browser, identifying every AI-native and AI-enhanced application users access. You’ll know which corporate identities are connected, how data flows, and what new AI apps appear across your environment. \u003C/p>",{"large":1227},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"fontFamily":382,"paddingTop":384,"marginTop":384},{"@type":106,"@version":107,"id":1229,"meta":1230,"component":1231,"responsiveStyles":1235},"builder-9e44539fa53c4d8e87406036c921fc46",{"previousId":1109},{"name":373,"options":1232,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":389,"title":1233,"description":1234,"reverse":6,"image":1125},"\u003Ch2>Classify and manage AI risk\u003C/h2>","\u003Cp>For apps you choose to allow, Push lets you apply custom in-browser banners. You can bulk-select categories of AI tools and require users to read and acknowledge your acceptable use policy before they proceed. This creates an auditable trail and moves policy from an easy to forget document to an active, in-workflow control.\u003C/p>",{"large":1236},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":395},{"@type":106,"@version":107,"layerName":373,"id":1238,"meta":1239,"component":1240,"responsiveStyles":1245},"builder-44c1a891926f4bdeaaa37e90721fe6ac",{"previousId":1119},{"name":373,"options":1241,"isRSC":118},{"darkMode":6,"maxWidth":363,"imageMaxWidth":375,"textPaddingTop":400,"title":1242,"description":1243,"reverse":41,"image":1244},"\u003Ch2>Enforce your AI policy in the browser\u003C/h2>","\u003Cp>When an AI tool is deemed non-compliant or too risky, Push blocks it at the source. The block happens directly in the browser, preventing the user from accessing the site or submitting data. This gives you an immediate, powerful lever to stop data exfiltration and enforce a hard line on unacceptable risk.\u003C/p>","https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fa359ac1805af4e15a8a7f84632b9bb55",{"large":1246},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125,"paddingTop":406},{"@type":106,"@version":107,"id":1248,"meta":1249,"component":1250,"responsiveStyles":1252},"builder-dcc906f9cbe54dc68b3c672668e7a38f",{"previousId":1129},{"name":354,"options":1251,"isRSC":118},{"darkMode":6},{"large":1253},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"@type":106,"@version":107,"id":1255,"component":1256,"responsiveStyles":1258},"builder-d2d64780c31b4349bc75805b23a07e38",{"name":416,"tag":416,"options":1257,"isRSC":118},{"sectionHeading":37,"customClass":418},{"large":1259},{"display":121,"flexDirection":122,"position":123,"flexShrink":124,"boxSizing":125},{"id":1261,"@type":106,"tagName":131,"properties":1262,"responsiveStyles":1263},"builder-pixel-wxx9tk70r9p",{"src":133,"aria-hidden":134,"alt":37,"role":135,"width":124,"height":124},{"large":1264},{"height":124,"width":124,"display":138,"opacity":124,"overflow":139,"pointerEvents":140},{"deviceSize":142,"location":1266},{"path":37,"query":1267},{},{},1770892957225,1764950077593,"https://cdn.builder.io/api/v1/image/assets%2Ff3a1111ff5be48cdbb123cd9f5795a05%2Fe558b8b069884037a8e6904f7ecc029c",[],{"winningTest":118,"breakpoints":1274,"originalContentId":1039,"kind":438,"lastPreviewUrl":1275,"hasLinks":6,"hasAutosaves":41},{"xsmall":57,"small":39,"medium":40},"https://pushsecurity.com/uc/shadow-ai?builder.space=f3a1111ff5be48cdbb123cd9f5795a05&builder.user.permissions=read%2Ccreate%2Cpublish%2CeditCode%2CeditDesigns%2CeditLayouts%2CeditLayers%2CeditContentPriority%2CeditFolders%2CeditProjects%2CmodifyMcpServers%2CmodifyWorkflowIntegrations%2CmodifyProjectSettings%2CconnectCodeRepository%2CcreateProjects%2CindexDesignSystems%2CsendPullRequests&builder.user.role.name=Developer&builder.user.role.id=developer&builder.cachebust=true&builder.preview=use-case-page&builder.noCache=true&builder.allowTextEdit=true&__builder_editing__=true&builder.overrides.use-case-page=b62629ce2f3741158d961cd10fe74b31&builder.overrides.b62629ce2f3741158d961cd10fe74b31=b62629ce2f3741158d961cd10fe74b31&builder.overrides.use-case-page:/uc/shadow-ai=b62629ce2f3741158d961cd10fe74b31&builder.options.includeRefs=true&builder.options.enrich=true&builder.options.locale=Default",{"_path":1277,"_dir":1278,"_draft":6,"_partial":6,"_locale":37,"sys":1279,"ogImage":118,"summary":1282,"title":1296,"subtitle":118,"metaTitle":1297,"synopsis":1298,"hashTags":118,"publishedDate":1299,"slug":1300,"tagsCollection":1301,"relatedBlogPostsCollection":1311,"authorsCollection":3499,"content":3503,"_id":4034,"_type":4035,"_source":4036,"_file":4037,"_stem":4038,"_extension":4035},"/blog/samljacking-a-poisoned-tenant","blog",{"id":1280,"publishedAt":1281},"3F96pyn4qqkbVctSOH69vm","2024-03-21T08:59:19.497Z",{"json":1283},{"data":1284,"content":1285,"nodeType":1295},{},[1286],{"data":1287,"content":1288,"nodeType":1294},{},[1289],{"data":1290,"marks":1291,"value":1292,"nodeType":1293},{},[],"In this article, we’re going to demo combining two of our favorite new SaaS attack techniques to make a simple, but effective attack chain.","text","paragraph","document","SAMLjacking a poisoned tenant","SaaS Attack: How to SAMLjack a poisoned tenant","In this article, we’re going to demo combining two of our favorite new SaaS attack techniques to make a simple, but effective attack chain.\n","2023-08-17T00:00:00.000Z","samljacking-a-poisoned-tenant",{"items":1302},[1303,1307],{"sys":1304,"name":1306},{"id":1305},"6A5RXS31ZQx3PwryGb1IMy","Browser-based attacks",{"sys":1308,"name":1310},{"id":1309},"4ksQNCFeBf8H4QIORqpRLw","Detection & response",{"items":1312},[1313,2142,3049],{"__typename":1314,"sys":1315,"content":1317,"title":2124,"synopsis":2125,"hashTags":118,"publishedDate":2126,"slug":2127,"tagsCollection":2128,"authorsCollection":2134},"BlogPosts",{"id":1316},"6VZQJzQ2FNetGNMEjiuXB2",{"json":1318},{"nodeType":1295,"data":1319,"content":1320},{},[1321,1328,1335,1342,1349,1357,1364,1373,1395,1402,1448,1455,1463,1508,1528,1535,1542,1549,1569,1589,1596,1631,1638,1658,1665,1672,1704,1724,1731,1737,1744,1751,1758,1765,1772,1779,1786,1793,1800,1807,1814,1821,1837,1844,1915,1922,1929,1958,1973,1980,1987,1994,2027,2047,2054,2061,2068,2075,2094,2112,2118],{"nodeType":1294,"data":1322,"content":1323},{},[1324],{"nodeType":1293,"value":1325,"marks":1326,"data":1327},"Our goal at Push is simple — to stop identity attacks. Today, the vast majority of identity vulnerabilities exist in the context of SaaS apps. ",[],{},{"nodeType":1294,"data":1329,"content":1330},{},[1331],{"nodeType":1293,"value":1332,"marks":1333,"data":1334},"The reasons for this are clear: Security teams have reduced central oversight and control over SaaS apps than they are used to, these apps exist in large numbers per company, and the identities that are used to access these apps are... complicated, to say the least. Securing hundreds of apps, with thousands of associated identities, is therefore no mean feat. ",[],{},{"nodeType":1294,"data":1336,"content":1337},{},[1338],{"nodeType":1293,"value":1339,"marks":1340,"data":1341},"Securing SaaS use means building controls that are easy to use, easy to understand — and ultimately effective. Not just effective against the hand-wavy concept of “SaaS attacks,” but specific techniques — the most common techniques that are likely to cause real damage.",[],{},{"nodeType":1294,"data":1343,"content":1344},{},[1345],{"nodeType":1293,"value":1346,"marks":1347,"data":1348},"To talk about this, we need to have a shared understanding of what these techniques are. To get that conversation going, we’ve pulled together all the techniques we're aware of, and our research team has even added a bunch of new ones.",[],{},{"nodeType":1350,"data":1351,"content":1352},"heading-1",{},[1353],{"nodeType":1293,"value":1354,"marks":1355,"data":1356},"The SaaS attack matrix",[],{},{"nodeType":1294,"data":1358,"content":1359},{},[1360],{"nodeType":1293,"value":1361,"marks":1362,"data":1363},"We’ve taken inspiration from the MITRE ATT&CK framework (certainly intended as the sincerest form of flattery), but wanted to make a conscious break away from the endpoint-focused ATT&CK techniques and instead focus on techniques that are SaaS-specific. In fact, these techniques don’t touch endpoints (so they bypass EDR) or customer networks (so they bypass network detection) — so we’re calling them networkless attacks.",[],{},{"nodeType":1365,"data":1366,"content":1372},"embedded-entry-block",{"target":1367},{"sys":1368},{"id":1369,"type":1370,"linkType":1371},"768Zv5gTVHyu5rbzJAzL4F","Link","Entry",[],{"nodeType":1294,"data":1374,"content":1375},{},[1376,1380,1391],{"nodeType":1293,"value":1377,"marks":1378,"data":1379},"You can find more detailed descriptions of these techniques (and hopefully PRs for some we missed) on ",[],{},{"nodeType":1381,"data":1382,"content":1384},"hyperlink",{"uri":1383},"https://github.com/pushsecurity/saas-attacks",[1385],{"nodeType":1293,"value":1386,"marks":1387,"data":1390},"GitHub",[1388],{"type":1389},"underline",{},{"nodeType":1293,"value":1392,"marks":1393,"data":1394},".",[],{},{"nodeType":1294,"data":1396,"content":1397},{},[1398],{"nodeType":1293,"value":1399,"marks":1400,"data":1401},"Since we’re not targeting endpoints, let’s talk about the new targets: The accounts/identities on SaaS apps. We found it was useful to think about these identities not as standalone isolated islands — but much more like a graph; less a single web-server on the internet and more like many Windows endpoints on an Active Directory. ",[],{},{"nodeType":1294,"data":1403,"content":1404},{},[1405,1409,1418,1422,1431,1435,1444],{"nodeType":1293,"value":1406,"marks":1407,"data":1408},"You can leverage this access to an identity on a trusted platform to target (so laterally move or escalate privilege to) other users or identities. For example, attacks like using access to SaaS apps to ",[],{},{"nodeType":1381,"data":1410,"content":1412},{"uri":1411},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/in-app_phishing/description.md",[1413],{"nodeType":1293,"value":1414,"marks":1415,"data":1417},"phish other employees through comments",[1416],{"type":1389},{},{"nodeType":1293,"value":1419,"marks":1420,"data":1421}," and ",[],{},{"nodeType":1381,"data":1423,"content":1425},{"uri":1424},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/im_user_spoofing/description.md",[1426],{"nodeType":1293,"value":1427,"marks":1428,"data":1430},"spoofing users on IM platforms",[1429],{"type":1389},{},{"nodeType":1293,"value":1432,"marks":1433,"data":1434}," to social engineer them there — or perhaps ",[],{},{"nodeType":1381,"data":1436,"content":1438},{"uri":1437},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/link_backdooring/description.md",[1439],{"nodeType":1293,"value":1440,"marks":1441,"data":1443},"backdooring links",[1442],{"type":1389},{},{"nodeType":1293,"value":1445,"marks":1446,"data":1447}," in documents.",[],{},{"nodeType":1294,"data":1449,"content":1450},{},[1451],{"nodeType":1293,"value":1452,"marks":1453,"data":1454},"In this case, unusually, it’s not the data in these hundreds of SaaS apps that create risk, and you need to consider low-risk (from a data perspective) apps as a vector to pivot to higher-risk apps in your estate.",[],{},{"nodeType":1456,"data":1457,"content":1458},"heading-2",{},[1459],{"nodeType":1293,"value":1460,"marks":1461,"data":1462},"Initial access and poisoned tenants",[],{},{"nodeType":1294,"data":1464,"content":1465},{},[1466,1470,1479,1482,1491,1495,1504],{"nodeType":1293,"value":1467,"marks":1468,"data":1469},"Attacks like ",[],{},{"nodeType":1381,"data":1471,"content":1473},{"uri":1472},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/credential_stuffing/description.md",[1474],{"nodeType":1293,"value":1475,"marks":1476,"data":1478},"credential stuffing",[1477],{"type":1389},{},{"nodeType":1293,"value":1419,"marks":1480,"data":1481},[],{},{"nodeType":1381,"data":1483,"content":1485},{"uri":1484},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/email_phishing/description.md",[1486],{"nodeType":1293,"value":1487,"marks":1488,"data":1490},"email phishing",[1489],{"type":1389},{},{"nodeType":1293,"value":1492,"marks":1493,"data":1494}," that get you initial access to SaaS apps are fairly well known — because they work and are widely used. We’re also starting to see tools and attacks that suggest that ",[],{},{"nodeType":1381,"data":1496,"content":1498},{"uri":1497},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/im_phishing/description.md",[1499],{"nodeType":1293,"value":1500,"marks":1501,"data":1503},"phishing employees through these IM apps",[1502],{"type":1389},{},{"nodeType":1293,"value":1505,"marks":1506,"data":1507}," is about to go mainstream.",[],{},{"nodeType":1294,"data":1509,"content":1510},{},[1511,1515,1524],{"nodeType":1293,"value":1512,"marks":1513,"data":1514},"Another interesting attack is a spin on the classic waterhole attack called a ",[],{},{"nodeType":1381,"data":1516,"content":1518},{"uri":1517},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/poisoned_tenants/description.md",[1519],{"nodeType":1293,"value":1520,"marks":1521,"data":1523},"poisoned tenant",[1522],{"type":1389},{},{"nodeType":1293,"value":1525,"marks":1526,"data":1527},". Rather than attacking a customer tenant for a SaaS app, the attacker lures employees into joining an attacker-controlled tenant. ",[],{},{"nodeType":1294,"data":1529,"content":1530},{},[1531],{"nodeType":1293,"value":1532,"marks":1533,"data":1534},"SaaS apps allow anyone to name app tenants (a.k.a. spaces, teams, or instances) anything they like — including your company name. Attackers send invites to your employees from within the app with a customized message explaining why they should join this new tenant (or sign up to the app if they are not already a user). ",[],{},{"nodeType":1294,"data":1536,"content":1537},{},[1538],{"nodeType":1293,"value":1539,"marks":1540,"data":1541},"Attackers might even pay for premium licenses in the app to further entice employees to join. The attacker then waits for the employee to upload sensitive data or create integrations with other company apps containing crown jewels.",[],{},{"nodeType":1456,"data":1543,"content":1544},{},[1545],{"nodeType":1293,"value":1546,"marks":1547,"data":1548},"Living-off-the-(SaaS)-land to persist and avoid detection",[],{},{"nodeType":1294,"data":1550,"content":1551},{},[1552,1556,1565],{"nodeType":1293,"value":1553,"marks":1554,"data":1555},"In the endpoint world, a favorite technique is the use of legit OS utilities or ",[],{},{"nodeType":1381,"data":1557,"content":1559},{"uri":1558},"https://lolbas-project.github.io",[1560],{"nodeType":1293,"value":1561,"marks":1562,"data":1564},"LOLBaS",[1563],{"type":1389},{},{"nodeType":1293,"value":1566,"marks":1567,"data":1568}," (Living-Off-the-Land Binaries and Scripts), which are often signed Microsoft utilities. Perhaps the most well-known example is executing scripts through PowerShell rather than building custom malware. That isn’t as useful these days, but there was a time when PowerShell was routinely used to bypass AV, EDR, and even app allow-listing.",[],{},{"nodeType":1294,"data":1570,"content":1571},{},[1572,1576,1585],{"nodeType":1293,"value":1573,"marks":1574,"data":1575},"In that same living-off-the-land mindset, an attacker trying to maintain access to each SaaS app they compromise using custom OAuth integration apps might instead choose to use legit SaaS apps that specialize in workflow automation to create ",[],{},{"nodeType":1381,"data":1577,"content":1579},{"uri":1578},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/shadow_workflows/description.md",[1580],{"nodeType":1293,"value":1581,"marks":1582,"data":1584},"shadow workflows",[1583],{"type":1389},{},{"nodeType":1293,"value":1586,"marks":1587,"data":1588},". Utilizing legit SaaS apps also means they can hide in plain sight from incident responders, instead of having to rely on unverified or unpublished integrations.",[],{},{"nodeType":1294,"data":1590,"content":1591},{},[1592],{"nodeType":1293,"value":1593,"marks":1594,"data":1595},"Perhaps the best example here is using a well-known automation app like Zapier, which claims to have more than 5,000 integrations. These integrations are often verified, approved, and connected to a trusted vendor (Zapier). An attacker might create workflows to:",[],{},{"nodeType":1597,"data":1598,"content":1599},"unordered-list",{},[1600,1611,1621],{"nodeType":1601,"data":1602,"content":1603},"list-item",{},[1604],{"nodeType":1294,"data":1605,"content":1606},{},[1607],{"nodeType":1293,"value":1608,"marks":1609,"data":1610},"Do daily data exfiltration from a victim’s data lake.",[],{},{"nodeType":1601,"data":1612,"content":1613},{},[1614],{"nodeType":1294,"data":1615,"content":1616},{},[1617],{"nodeType":1293,"value":1618,"marks":1619,"data":1620},"Configure a webhook that adds malicious accounts to a Github repo on demand.",[],{},{"nodeType":1601,"data":1622,"content":1623},{},[1624],{"nodeType":1294,"data":1625,"content":1626},{},[1627],{"nodeType":1293,"value":1628,"marks":1629,"data":1630},"Automatically find and replace bank account numbers in emails to the finance team.",[],{},{"nodeType":1294,"data":1632,"content":1633},{},[1634],{"nodeType":1293,"value":1635,"marks":1636,"data":1637},"All appear as legitimate Zapier integrations. But, before you put in alerts specifically for Zapier, know that it’s one of dozens of apps that support these kinds of offensive workflows.",[],{},{"nodeType":1294,"data":1639,"content":1640},{},[1641,1645,1654],{"nodeType":1293,"value":1642,"marks":1643,"data":1644},"A sneaky attacker might go further and use an ",[],{},{"nodeType":1381,"data":1646,"content":1648},{"uri":1647},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/evil_twin_integrations/description.md",[1649],{"nodeType":1293,"value":1650,"marks":1651,"data":1653},"evil twin integration",[1652],{"type":1389},{},{"nodeType":1293,"value":1655,"marks":1656,"data":1657}," to make another instance of an existing integration — making this backdoor almost impossible to discover.",[],{},{"nodeType":1456,"data":1659,"content":1660},{},[1661],{"nodeType":1293,"value":1662,"marks":1663,"data":1664},"Features or vulnerabilities?",[],{},{"nodeType":1294,"data":1666,"content":1667},{},[1668],{"nodeType":1293,"value":1669,"marks":1670,"data":1671},"When looking for attack techniques, you’re typically going after features that have weaknesses you can abuse rather than bugs in a single app that will be patched. ",[],{},{"nodeType":1294,"data":1673,"content":1674},{},[1675,1679,1688,1691,1700],{"nodeType":1293,"value":1676,"marks":1677,"data":1678},"It’s pretty common for SaaS apps to skip email verification or allow multiple simultaneous authentication methods. Both of these are conscious design choices in the name of lowering the friction of account creation and reducing customer support. However, these features make techniques like ",[],{},{"nodeType":1381,"data":1680,"content":1682},{"uri":1681},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/account_ambushing/description.md",[1683],{"nodeType":1293,"value":1684,"marks":1685,"data":1687},"account ambushing",[1686],{"type":1389},{},{"nodeType":1293,"value":1419,"marks":1689,"data":1690},[],{},{"nodeType":1381,"data":1692,"content":1694},{"uri":1693},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/ghost_logins/description.md",[1695],{"nodeType":1293,"value":1696,"marks":1697,"data":1699},"ghost logins",[1698],{"type":1389},{},{"nodeType":1293,"value":1701,"marks":1702,"data":1703}," possible. If these attacks become widespread, these might come to be seen more as bugs rather than a positive feature for users.",[],{},{"nodeType":1294,"data":1705,"content":1706},{},[1707,1711,1720],{"nodeType":1293,"value":1708,"marks":1709,"data":1710},"In other cases, the bugs are serious enough and hard enough to patch that they’re worth noting as a technique. The recently disclosed (and perfectly named) ",[],{},{"nodeType":1381,"data":1712,"content":1714},{"uri":1713},"https://www.descope.com/blog/post/noauth",[1715],{"nodeType":1293,"value":1716,"marks":1717,"data":1719},"nOAuth",[1718],{"type":1389},{},{"nodeType":1293,"value":1721,"marks":1722,"data":1723}," bug fits this bill. ",[],{},{"nodeType":1294,"data":1725,"content":1726},{},[1727],{"nodeType":1293,"value":1728,"marks":1729,"data":1730},"The bug arises from a confusion between an email identity and email metadata field in Microsoft integrations and without a central fix from MS (the fix isn’t trivial), these bugs are likely to be discovered and re-occur on third-party OAuth apps for a while to come.",[],{},{"nodeType":1365,"data":1732,"content":1736},{"target":1733},{"sys":1734},{"id":1735,"type":1370,"linkType":1371},"6iKFd9Qys2SSuNqKVQB7ka",[],{"nodeType":1350,"data":1738,"content":1739},{},[1740],{"nodeType":1293,"value":1741,"marks":1742,"data":1743},"The SaaS market is driving these offensive techniques",[],{},{"nodeType":1294,"data":1745,"content":1746},{},[1747],{"nodeType":1293,"value":1748,"marks":1749,"data":1750},"SaaS apps are basically web apps that are run in the cloud and accessed from endpoints, so then WebApp, endpoint, and cloud security should cover all of SaaS, right? ",[],{},{"nodeType":1294,"data":1752,"content":1753},{},[1754],{"nodeType":1293,"value":1755,"marks":1756,"data":1757},"That was our assumption when we started, but what we found instead was that SaaS marketing practices are driving a lot of pretty interesting techniques that you don’t run into in standalone web apps.",[],{},{"nodeType":1456,"data":1759,"content":1760},{},[1761],{"nodeType":1293,"value":1762,"marks":1763,"data":1764},"Modern SaaS is easy to adopt, easy to use, low friction, low cost, low overhead",[],{},{"nodeType":1294,"data":1766,"content":1767},{},[1768],{"nodeType":1293,"value":1769,"marks":1770,"data":1771},"Making apps easy to sign up for and low effort to support means you need to make some interesting choices when it comes to designing account creation and recovery flows. ",[],{},{"nodeType":1294,"data":1773,"content":1774},{},[1775],{"nodeType":1293,"value":1776,"marks":1777,"data":1778},"Many apps allow users to sign into apps using multiple methods, easily invite collaborators (internal and external) and avoid any additional friction during the signup process. ",[],{},{"nodeType":1294,"data":1780,"content":1781},{},[1782],{"nodeType":1293,"value":1783,"marks":1784,"data":1785},"For example, many apps avoid verifying new account email addresses. This is not laziness, these are conscious design choices — not driven by security clearly, but not accidents.",[],{},{"nodeType":1456,"data":1787,"content":1788},{},[1789],{"nodeType":1293,"value":1790,"marks":1791,"data":1792},"Modern SaaS is highly integrated",[],{},{"nodeType":1294,"data":1794,"content":1795},{},[1796],{"nodeType":1293,"value":1797,"marks":1798,"data":1799},"Most SaaS apps are trying to build app marketplaces or perform well in other apps' marketplaces (often both), and it’s rare these days to find apps that don’t integrate with other apps. ",[],{},{"nodeType":1294,"data":1801,"content":1802},{},[1803],{"nodeType":1293,"value":1804,"marks":1805,"data":1806},"OAuth has become the de facto standard protocol for doing this, and most users have become quite used to approving OAuth2.0 consent flows. These integrations have opened up lots of incredibly useful doors for attackers to persist access and move laterally across SaaS apps that few incident response teams have run into yet. These tokens don’t expire when you reset passwords, aren’t protected by MFA, and actions they performed are rarely logged. ",[],{},{"nodeType":1294,"data":1808,"content":1809},{},[1810],{"nodeType":1293,"value":1811,"marks":1812,"data":1813},"These are not bugs or oversights but rather a consequence of how these APIs are intended to be used (by machines, not human adversaries).",[],{},{"nodeType":1350,"data":1815,"content":1816},{},[1817],{"nodeType":1293,"value":1818,"marks":1819,"data":1820},"Problems with observing SaaS attacks ",[],{},{"nodeType":1294,"data":1822,"content":1823},{},[1824,1828,1833],{"nodeType":1293,"value":1825,"marks":1826,"data":1827},"This research begs one question above others: ",[],{},{"nodeType":1293,"value":1829,"marks":1830,"data":1832},"“Are we seeing these attacks in the wild?",[1831],{"type":312},{},{"nodeType":1293,"value":1834,"marks":1835,"data":1836},"” ",[],{},{"nodeType":1456,"data":1838,"content":1839},{},[1840],{"nodeType":1293,"value":1841,"marks":1842,"data":1843},"Yes, definitely",[],{},{"nodeType":1294,"data":1845,"content":1846},{},[1847,1851,1860,1863,1872,1876,1885,1889,1898,1902,1911],{"nodeType":1293,"value":1848,"marks":1849,"data":1850},"For some of the better-known techniques, like credential stuffing and email phishing, the answer is an easy yes. Stats from ",[],{},{"nodeType":1381,"data":1852,"content":1854},{"uri":1853},"https://www.microsoft.com/en-us/security/blog/2023/05/04/how-microsoft-can-help-you-go-passwordless-this-world-password-day/",[1855],{"nodeType":1293,"value":1856,"marks":1857,"data":1859},"Microsoft (1,287 password attacks every second)",[1858],{"type":1389},{},{"nodeType":1293,"value":1419,"marks":1861,"data":1862},[],{},{"nodeType":1381,"data":1864,"content":1866},{"uri":1865},"https://auth0.com/blog/top-insights-from-our-2022-state-of-secure-identity-report/",[1867],{"nodeType":1293,"value":1868,"marks":1869,"data":1871},"Auth0 (a third of their traffic is credential stuffing)",[1870],{"type":1389},{},{"nodeType":1293,"value":1873,"marks":1874,"data":1875}," speaks volumes. Other sources like the ",[],{},{"nodeType":1381,"data":1877,"content":1879},{"uri":1878},"https://www.gov.uk/government/statistics/cyber-security-breaches-survey-2022/cyber-security-breaches-survey-2022",[1880],{"nodeType":1293,"value":1881,"marks":1882,"data":1884},"NCSC's Cyber Security Breaches Survey 2022",[1883],{"type":1389},{},{"nodeType":1293,"value":1886,"marks":1887,"data":1888}," and the ",[],{},{"nodeType":1381,"data":1890,"content":1892},{"uri":1891},"https://www.verizon.com/business/resources/reports/dbir/",[1893],{"nodeType":1293,"value":1894,"marks":1895,"data":1897},"Verizon 2023 Data Breach Investigations Report",[1896],{"type":1389},{},{"nodeType":1293,"value":1899,"marks":1900,"data":1901}," suggest that phishing is also a major cause of SaaS breaches. Anecdotal reports from colleagues in the Incident Response field suggest that malicious mail forwarding rules are seen a lot, something which is supported by the ",[],{},{"nodeType":1381,"data":1903,"content":1905},{"uri":1904},"https://expel.com/expel-quarterly-threat-report/",[1906],{"nodeType":1293,"value":1907,"marks":1908,"data":1910},"Expel Quarterly Threat Report for Q1 2023",[1909],{"type":1389},{},{"nodeType":1293,"value":1912,"marks":1913,"data":1914}," (see page 6).",[],{},{"nodeType":1294,"data":1916,"content":1917},{},[1918],{"nodeType":1293,"value":1919,"marks":1920,"data":1921},"The takeaway is that the current focus for defenders should be to ensure users have good phishing-resistant account security in place — make sure you have basics like strong unique passwords and MFA in place across your entire SaaS estate.",[],{},{"nodeType":1456,"data":1923,"content":1924},{},[1925],{"nodeType":1293,"value":1926,"marks":1927,"data":1928},"For newer OAuth attacks, it’s a lot less clear …",[],{},{"nodeType":1294,"data":1930,"content":1931},{},[1932,1936,1941,1945,1954],{"nodeType":1293,"value":1933,"marks":1934,"data":1935},"Other techniques like consent phishing have been discussed in some breach disclosures like the ",[],{},{"nodeType":1293,"value":1937,"marks":1938,"data":1940},"2020 SANS breach",[1939],{"type":1389},{},{"nodeType":1293,"value":1942,"marks":1943,"data":1944},". These OAuth techniques also pop up in the news (for example, the ",[],{},{"nodeType":1381,"data":1946,"content":1948},{"uri":1947},"https://www.bleepingcomputer.com/news/security/github-how-stolen-oauth-tokens-helped-breach-dozens-of-orgs/",[1949],{"nodeType":1293,"value":1950,"marks":1951,"data":1953},"2022 Github/Heroku/Travis-CI breach",[1952],{"type":1389},{},{"nodeType":1293,"value":1955,"marks":1956,"data":1957}," where GitHub accounts were breached using stolen Heroku and Travis-CI OAuth tokens). ",[],{},{"nodeType":1294,"data":1959,"content":1960},{},[1961,1965,1970],{"nodeType":1293,"value":1962,"marks":1963,"data":1964},"That said, none of these techniques come up as frequently as their usefulness would suggest. This means one of two things: ",[],{},{"nodeType":1293,"value":1966,"marks":1967,"data":1969},"Either attackers aren’t yet using them widely, or they are and we aren’t detecting them",[1968],{"type":312},{},{"nodeType":1293,"value":1392,"marks":1971,"data":1972},[],{},{"nodeType":1294,"data":1974,"content":1975},{},[1976],{"nodeType":1293,"value":1977,"marks":1978,"data":1979},"There is certainly a case to be made that attackers simply don’t need these newer techniques yet. Many organizations don’t have a way of discovering SaaS use in their organization yet, never mind breached accounts, so new persistence techniques might be a bit more than necessary at the moment.",[],{},{"nodeType":1456,"data":1981,"content":1982},{},[1983],{"nodeType":1293,"value":1984,"marks":1985,"data":1986},"But would we know if it was happening?",[],{},{"nodeType":1294,"data":1988,"content":1989},{},[1990],{"nodeType":1293,"value":1991,"marks":1992,"data":1993},"On the other hand, there is certainly the possibility that these attacks are increasingly used, but are simply not being discovered. A strong argument in favor of this view is the difficulty in investigating these attacks. Very few SaaS apps provide enough logging capability to discover these attacks as a customer. This is true even for the biggest, most mature apps like Office 365 and Google Workspace unless you are on top license tiers. This is doubly true for attacks that use OAuth, with many apps providing no insight or details into actions made using OAuth-authenticated APIs. ",[],{},{"nodeType":1294,"data":1995,"content":1996},{},[1997,2001,2010,2014,2023],{"nodeType":1293,"value":1998,"marks":1999,"data":2000},"This suggests only the SaaS providers for these apps are really in a position to discover and investigate them. This does ring true when you consider that ",[],{},{"nodeType":1381,"data":2002,"content":2004},{"uri":2003},"https://blog.heroku.com/april-2022-incident-review",[2005],{"nodeType":1293,"value":2006,"marks":2007,"data":2009},"Heroku",[2008],{"type":1389},{},{"nodeType":1293,"value":2011,"marks":2012,"data":2013}," relied heavily on Github during the investigation (and in one case even the detection of) their 2022 breaches, and the same seems true for a similar breach affecting ",[],{},{"nodeType":1381,"data":2015,"content":2017},{"uri":2016},"https://circleci.com/blog/jan-4-2023-incident-report/",[2018],{"nodeType":1293,"value":2019,"marks":2020,"data":2022},"CircleCI",[2021],{"type":1389},{},{"nodeType":1293,"value":2024,"marks":2025,"data":2026}," later that year. Github and CircleCI’s customers prompted the investigation after seeing strange behavior, but Github had access to the logs to investigate. It’s difficult to imagine that most or even many SaaS vendors have the resources or inclination to run these investigations effectively as GitHub appears to have.",[],{},{"nodeType":1294,"data":2028,"content":2029},{},[2030,2034,2044],{"nodeType":1293,"value":2031,"marks":2032,"data":2033},"So, are these attacks happening in the real world? My best guess is it’s a little bit of column A and a little bit of column B — there are likely not so many of these attacks happening yet, and when they do, I suspect the vast majority go undetected. ",[],{},{"nodeType":1381,"data":2035,"content":2037},{"uri":2036},"https://www.youtube.com/watch?v=j95kNwZw8YY",[2038],{"nodeType":1293,"value":2039,"marks":2040,"data":2043},"But that’s just like my opinion, man.",[2041,2042],{"type":1389},{"type":312},{},{"nodeType":1293,"value":37,"marks":2045,"data":2046},[],{},{"nodeType":1294,"data":2048,"content":2049},{},[2050],{"nodeType":1293,"value":2051,"marks":2052,"data":2053},"This is part of the reason we think enabling red teamers to try these techniques in anger is useful — this is the time-proven way to understand these risks.",[],{},{"nodeType":1350,"data":2055,"content":2056},{},[2057],{"nodeType":1293,"value":2058,"marks":2059,"data":2060},"What’s next?",[],{},{"nodeType":1294,"data":2062,"content":2063},{},[2064],{"nodeType":1293,"value":2065,"marks":2066,"data":2067},"We’ve barely scratched the surface, but perhaps there is enough here to get the discussion going. From past experience, discussion may not be enough, and it’s likely that live offensive work like penetration tests or more likely red team exercises will be required to make the risks of using these techniques real for the wider security community. ",[],{},{"nodeType":1294,"data":2069,"content":2070},{},[2071],{"nodeType":1293,"value":2072,"marks":2073,"data":2074},"After all, seeing is believing. We think some more practical examples and tools to help red  teamers use these techniques on engagements will help drive awareness forward, so we’ll be looking to build out this content.",[],{},{"nodeType":1294,"data":2076,"content":2077},{},[2078,2082,2091],{"nodeType":1293,"value":2079,"marks":2080,"data":2081},"We’ve started with pure networkless attacks that don’t touch customer networks or endpoints, but there are many useful techniques to connect the old endpoint world to the SaaS world. Consider stealing OAuth tokens from a thick client on an endpoint, or using a ",[],{},{"nodeType":1381,"data":2083,"content":2085},{"uri":2084},"https://github.blog/2023-07-18-security-alert-social-engineering-campaign-targets-technology-industry-employees/",[2086],{"nodeType":1293,"value":2087,"marks":2088,"data":2090},"backdoored GitHub repo to get code execution on endpoints",[2089],{"type":1389},{},{"nodeType":1293,"value":1392,"marks":2092,"data":2093},[],{},{"nodeType":1294,"data":2095,"content":2096},{},[2097,2101,2108],{"nodeType":1293,"value":2098,"marks":2099,"data":2100},"Help us all better understand how widespread these attacks are by sharing some war stories. We’d love some comments, discussions, or PRs on ",[],{},{"nodeType":1381,"data":2102,"content":2103},{"uri":1383},[2104],{"nodeType":1293,"value":1386,"marks":2105,"data":2107},[2106],{"type":1389},{},{"nodeType":1293,"value":2109,"marks":2110,"data":2111},"!",[],{},{"nodeType":1365,"data":2113,"content":2117},{"target":2114},{"sys":2115},{"id":2116,"type":1370,"linkType":1371},"2y0INxqAi594O7rCAVKhTI",[],{"nodeType":1294,"data":2119,"content":2120},{},[2121],{"nodeType":1293,"value":37,"marks":2122,"data":2123},[],{},"Let’s talk about SaaS attack techniques","Offensive security drives defensive security. We're sharing a collection of SaaS attack techniques to help defenders understand the threats they face.","2023-07-27T00:00:00.000Z","saas-attack-techniques",{"items":2129},[2130,2132],{"sys":2131,"name":1306},{"id":1305},{"sys":2133,"name":1310},{"id":1309},{"items":2135},[2136],{"fullName":2137,"firstName":2138,"jobTitle":2139,"profilePicture":2140},"Jacques Louw","Jacques","Co-founder / CRO",{"url":2141},"https://images.ctfassets.net/y1cdw1ablpvd/39m8bektV23lnCRcEq0G8h/2a08f6276a50744f1a4b499b273f6bb2/Push_Founders_at_Cahoots_October_28_2022_by_Doug_Coombe-21.jpg",{"__typename":1314,"sys":2143,"content":2145,"title":3032,"synopsis":2153,"hashTags":118,"publishedDate":3033,"slug":3034,"tagsCollection":3035,"authorsCollection":3041},{"id":2144},"7ygI4NLJ2zpuiVwAlggkTG",{"json":2146},{"nodeType":1295,"data":2147,"content":2148},{},[2149,2156,2163,2196,2203,2210,2229,2236,2243,2250,2279,2286,2293,2309,2316,2323,2357,2364,2371,2378,2385,2392,2398,2405,2412,2419,2427,2434,2454,2461,2468,2475,2482,2489,2496,2503,2510,2517,2523,2530,2550,2557,2576,2582,2588,2594,2601,2608,2615,2621,2627,2634,2641,2648,2655,2662,2668,2688,2708,2715,2721,2727,2734,2741,2748,2755,2778,2784,2790,2797,2804,2811,2823,2829,2836,2842,2848,2855,2862,2869,2875,2881,2888,2895,3011,3018,3025],{"nodeType":1294,"data":2150,"content":2151},{},[2152],{"nodeType":1293,"value":2153,"marks":2154,"data":2155},"In this article, we’re going to demonstrate how combining two of our favorite new SaaS attack techniques makes a simple, but very stealthy persistence approach.",[],{},{"nodeType":1294,"data":2157,"content":2158},{},[2159],{"nodeType":1293,"value":2160,"marks":2161,"data":2162},"—----",[],{},{"nodeType":1294,"data":2164,"content":2165},{},[2166,2170,2178,2182,2192],{"nodeType":1293,"value":2167,"marks":2168,"data":2169},"This is the second post in a series on attack chains formed by combining techniques in the ",[],{},{"nodeType":1381,"data":2171,"content":2172},{"uri":1383},[2173],{"nodeType":1293,"value":2174,"marks":2175,"data":2177},"SaaS attack matrix",[2176],{"type":1389},{},{"nodeType":1293,"value":2179,"marks":2180,"data":2181},". Last post we wrote about ",[],{},{"nodeType":2183,"data":2184,"content":2187},"entry-hyperlink",{"target":2185},{"sys":2186},{"id":1280,"type":1370,"linkType":1371},[2188],{"nodeType":1293,"value":1296,"marks":2189,"data":2191},[2190],{"type":1389},{},{"nodeType":1293,"value":2193,"marks":2194,"data":2195},". ",[],{},{"nodeType":1294,"data":2197,"content":2198},{},[2199],{"nodeType":1293,"value":2200,"marks":2201,"data":2202},"This time we’ll be looking at combining shadow workflows with an evil twin integration for an especially sneaky and flexible method of persistence. We’ll be using Zapier integrating with Azure as our primary example. ",[],{},{"nodeType":1350,"data":2204,"content":2205},{},[2206],{"nodeType":1293,"value":2207,"marks":2208,"data":2209},"What is a shadow workflow?",[],{},{"nodeType":1294,"data":2211,"content":2212},{},[2213,2217,2225],{"nodeType":1293,"value":2214,"marks":2215,"data":2216},"A ",[],{},{"nodeType":1381,"data":2218,"content":2219},{"uri":1578},[2220],{"nodeType":1293,"value":2221,"marks":2222,"data":2224},"shadow workflow ",[2223],{"type":1389},{},{"nodeType":1293,"value":2226,"marks":2227,"data":2228},"is a technique for using SaaS automation apps to provide a code execution-like method for conducting malicious actions from a legitimate source using OAuth integrations. This could be a daily export of files from shared cloud drives, automatic forwarding and deleting of emails, cloning instant messages, exporting user directories — basically anything that is possible using the target app’s API. ",[],{},{"nodeType":1294,"data":2230,"content":2231},{},[2232],{"nodeType":1293,"value":2233,"marks":2234,"data":2235},"The fact automation apps utilize OAuth integrations means they also function as a very effective method of maintaining persistence. Think of shadow workflows as the offensive PowerShell of the SaaS world. ",[],{},{"nodeType":1350,"data":2237,"content":2238},{},[2239],{"nodeType":1293,"value":2240,"marks":2241,"data":2242},"What’s an evil twin integration?",[],{},{"nodeType":1294,"data":2244,"content":2245},{},[2246],{"nodeType":1293,"value":2247,"marks":2248,"data":2249},"Creating a new OAuth integration, even if using a legitimate SaaS application, could be viewed as suspicious if seen by a security team or the affected user. This is especially true if an account compromise is discovered and an IR team sees a consent for a new OAuth integration in the log that the compromised user does not recognize. ",[],{},{"nodeType":1294,"data":2251,"content":2252},{},[2253,2257,2264,2268,2275],{"nodeType":1293,"value":2254,"marks":2255,"data":2256},"An ",[],{},{"nodeType":1381,"data":2258,"content":2259},{"uri":1647},[2260],{"nodeType":1293,"value":1650,"marks":2261,"data":2263},[2262],{"type":1389},{},{"nodeType":1293,"value":2265,"marks":2266,"data":2267},", however, reduces the chances of discovery by reusing an existing ",[],{},{"nodeType":1293,"value":2269,"marks":2270,"data":2274},"legitimate",[2271,2272],{"type":312},{"type":2273},"bold",{},{"nodeType":1293,"value":2276,"marks":2277,"data":2278}," integration for malicious purposes.",[],{},{"nodeType":1350,"data":2280,"content":2281},{},[2282],{"nodeType":1293,"value":2283,"marks":2284,"data":2285},"What’s the benefit of combining them?",[],{},{"nodeType":1294,"data":2287,"content":2288},{},[2289],{"nodeType":1293,"value":2290,"marks":2291,"data":2292},"While shadow workflows are incredibly powerful on their own, as malicious use of OAuth integrations becomes more common, security teams will start regularly checking for new, or unknown, integrations in response to security incidents. While automation apps are legitimate SaaS services, shadow workflow attacks could still raise question marks during incident response if it’s connected shortly after a compromise and/or if the affected user has no knowledge of it. ",[],{},{"nodeType":1294,"data":2294,"content":2295},{},[2296,2300,2305],{"nodeType":1293,"value":2297,"marks":2298,"data":2299},"Additionally, as use of security tools that ",[],{},{"nodeType":1293,"value":2301,"marks":2302,"data":2304},"provide visibility of OAuth integrations",[2303],{"type":1389},{},{"nodeType":1293,"value":2306,"marks":2307,"data":2308}," (check out our product) increases, it will become increasingly dangerous for an adversary to create a new OAuth integration. That’s because the target user and possibly even security teams may be notified.",[],{},{"nodeType":1294,"data":2310,"content":2311},{},[2312],{"nodeType":1293,"value":2313,"marks":2314,"data":2315},"This leads us on to evil twin integrations. Their power is in making use of existing integrations so they can avoid appearing as a new integration and getting flagged or sending alerts to security teams. That makes them much stealthier and increases the likelihood of a successful attack. ",[],{},{"nodeType":1294,"data":2317,"content":2318},{},[2319],{"nodeType":1293,"value":2320,"marks":2321,"data":2322},"There are three possibilities here that lead to two different levels of stealth for the attack:",[],{},{"nodeType":2324,"data":2325,"content":2326},"ordered-list",{},[2327,2337,2347],{"nodeType":1601,"data":2328,"content":2329},{},[2330],{"nodeType":1294,"data":2331,"content":2332},{},[2333],{"nodeType":1293,"value":2334,"marks":2335,"data":2336},"Medium stealth option: Making use of an automation app used legitimately by the organization, but not by the target user, specifically",[],{},{"nodeType":1601,"data":2338,"content":2339},{},[2340],{"nodeType":1294,"data":2341,"content":2342},{},[2343],{"nodeType":1293,"value":2344,"marks":2345,"data":2346},"High stealth option 1: Making use of an automation app used legitimately by the target user themselves",[],{},{"nodeType":1601,"data":2348,"content":2349},{},[2350],{"nodeType":1294,"data":2351,"content":2352},{},[2353],{"nodeType":1293,"value":2354,"marks":2355,"data":2356},"High stealth option 2: Making use of an automation app that has been granted admin consent",[],{},{"nodeType":1456,"data":2358,"content":2359},{},[2360],{"nodeType":1293,"value":2361,"marks":2362,"data":2363},"Medium stealth option: Pre-existing use by organization",[],{},{"nodeType":1294,"data":2365,"content":2366},{},[2367],{"nodeType":1293,"value":2368,"marks":2369,"data":2370},"This option is by far the most likely option to be applicable in a real-world situation. Here’s how it works:",[],{},{"nodeType":1294,"data":2372,"content":2373},{},[2374],{"nodeType":1293,"value":2375,"marks":2376,"data":2377},"The consent for the targeted user will be new and will generate an audit event to show that, but the integration itself will not be new inside the organization and may even be formally approved by the security team already. This will help evade general detection mechanisms as it won’t be seen as a brand new integration at the organization level that requires careful scrutiny. It’s much harder to evaluate new consents on a per-user basis for existing integrations if the organization is of any significant size.",[],{},{"nodeType":1294,"data":2379,"content":2380},{},[2381],{"nodeType":1293,"value":2382,"marks":2383,"data":2384},"The downside, however, is that this attack stands a greater chance of detection if notifications are delivered directly to the affected user. Alternatively, if the original compromise is discovered, incident responders are more likely to discover this consent during an investigation. That’s because the affected user would know they aren’t using the automation app and incident responders are likely to explore logs showing consents to new OAuth integrations and permissions shortly after a successful compromise.",[],{},{"nodeType":1294,"data":2386,"content":2387},{},[2388],{"nodeType":1293,"value":2389,"marks":2390,"data":2391},"Using Azure as an example, while no new service principal is created in this case, the audit logs still show a new consent for the targeted user to the existing Zapier app: ",[],{},{"nodeType":1365,"data":2393,"content":2397},{"target":2394},{"sys":2395},{"id":2396,"type":1370,"linkType":1371},"7m0E0sOulc348jhQguQLb1",[],{"nodeType":1456,"data":2399,"content":2400},{},[2401],{"nodeType":1293,"value":2402,"marks":2403,"data":2404},"High stealth option 1: Pre-existing use by targeted user",[],{},{"nodeType":1294,"data":2406,"content":2407},{},[2408],{"nodeType":1293,"value":2409,"marks":2410,"data":2411},"This is the holy grail option, but is likely to require more luck in the real world. It requires that the target user is already using an automation app, which the adversary could compromise and utilize. If the compromised user has already consented to permissions useful to the adversary, such as access to sensitive data like email and file stores, then new malicious workflows can be created without requiring the user to consent to new permissions. ",[],{},{"nodeType":1294,"data":2413,"content":2414},{},[2415],{"nodeType":1293,"value":2416,"marks":2417,"data":2418},"Consequently, there will be no new integration observed at the organization level, no new user-specific consents for sensitive permissions and the target user would indicate they’re just using a legitimate app if questioned by incident responders. ",[],{},{"nodeType":1294,"data":2420,"content":2421},{},[2422],{"nodeType":1293,"value":2423,"marks":2424,"data":2426},"None of the three audit log entries shown above would be present in this scenario either.",[2425],{"type":2273},{},{"nodeType":1456,"data":2428,"content":2429},{},[2430],{"nodeType":1293,"value":2431,"marks":2432,"data":2433},"High stealth option 2: Azure admin consented app",[],{},{"nodeType":1294,"data":2435,"content":2436},{},[2437,2441,2450],{"nodeType":1293,"value":2438,"marks":2439,"data":2440},"There is a mixed scenario when permissions for an automation app (or any app you want to use for an evil twin integration) have been granted tenant-wide ",[],{},{"nodeType":1381,"data":2442,"content":2444},{"uri":2443},"https://learn.microsoft.com/en-us/azure/active-directory/manage-apps/user-admin-consent-overview#admin-consent",[2445],{"nodeType":1293,"value":2446,"marks":2447,"data":2449},"admin consent in Azure",[2448],{"type":1389},{},{"nodeType":1293,"value":2451,"marks":2452,"data":2453},". In this case, the administrator has effectively consented to permissions for all users, even if they aren’t currently active users of the app. ",[],{},{"nodeType":1294,"data":2455,"content":2456},{},[2457],{"nodeType":1293,"value":2458,"marks":2459,"data":2460},"This means when a new user integrates the app, it does not generate a new permission grant since it is effectively already granted. Consequently, the three log entries shown above would not be present in this scenario even if integrating the app for a user that has never used it before.",[],{},{"nodeType":1294,"data":2462,"content":2463},{},[2464],{"nodeType":1293,"value":2465,"marks":2466,"data":2467},"This gives the best level of flexibility for an adversary as they can avoid generating new permission grant logs for any user. However, it's not quite as stealthy as when the targeted user already makes use of the app as there is no history of legitimate app logins or activity for the user prior to the compromise to blend in with.",[],{},{"nodeType":1350,"data":2469,"content":2470},{},[2471],{"nodeType":1293,"value":2472,"marks":2473,"data":2474},"An example attack - Zapier",[],{},{"nodeType":1294,"data":2476,"content":2477},{},[2478],{"nodeType":1293,"value":2479,"marks":2480,"data":2481},"In this case, we’re going to use Zapier as our automation app example and Azure as the primary target for integrations and there will be no admin consent involved. We’ll also be using Google Workspace for data exfiltration. There are many other examples we could have used here, though - Make.com, IFTTT, Retool, Tines, Microsoft Power Automate and many other SaaS apps have powerful automation and integration capabilities and could be used for similar purposes. ",[],{},{"nodeType":1294,"data":2483,"content":2484},{},[2485],{"nodeType":1293,"value":2486,"marks":2487,"data":2488},"Azure and Google Workspace are also obvious juicy targets for integrations, but automation apps support integrations with vast numbers of other SaaS applications,so there are many possible targets.",[],{},{"nodeType":1294,"data":2490,"content":2491},{},[2492],{"nodeType":1293,"value":2493,"marks":2494,"data":2495},"So, let’s say we’ve compromised a target user’s Azure account. Perhaps we have conducted a successful credential stuffing attack, a phishing attack including MFA code proxying or even achieved a traditional endpoint compromise and have stolen the user’s session tokens.",[],{},{"nodeType":1294,"data":2497,"content":2498},{},[2499],{"nodeType":1293,"value":2500,"marks":2501,"data":2502},"Whatever the case, we have temporary control of the user’s account, either until the session expires or the user changes their password. If the original compromise is detected, that could happen quickly, so we want to conduct some malicious actions to make use of the access while we have it and to also gain persistence so we maintain our access beyond a password change.",[],{},{"nodeType":1294,"data":2504,"content":2505},{},[2506],{"nodeType":1293,"value":2507,"marks":2508,"data":2509},"We want to use an automation app, but we’d prefer to be as stealthy as possible by also making it an evil twin integration. We’d like to see if the target user has existing integrations with any apps we’d like to use - especially an automation app for that high stealth option we mentioned above. ",[],{},{"nodeType":1294,"data":2511,"content":2512},{},[2513],{"nodeType":1293,"value":2514,"marks":2515,"data":2516},"We’ve created a video demo of the full attack below. A step by step write up with more detail then follows:",[],{},{"nodeType":1365,"data":2518,"content":2522},{"target":2519},{"sys":2520},{"id":2521,"type":1370,"linkType":1371},"E1ZHBcjGLZAno0SRtJ3d3",[],{"nodeType":1350,"data":2524,"content":2525},{},[2526],{"nodeType":1293,"value":2527,"marks":2528,"data":2529},"Step 1 - Enumerating potential targets",[],{},{"nodeType":1294,"data":2531,"content":2532},{},[2533,2537,2546],{"nodeType":1293,"value":2534,"marks":2535,"data":2536},"We could perform something as simple as an email search for evidence of sign-ups, but that won’t necessarily show us if actual OAuth integrations have been configured and what permissions are in use. What we really need is a way to perform an ",[],{},{"nodeType":1381,"data":2538,"content":2540},{"uri":2539},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/oauth_token_enumeration/description.md",[2541],{"nodeType":1293,"value":2542,"marks":2543,"data":2545},"OAuth token enumeration",[2544],{"type":1389},{},{"nodeType":1293,"value":2547,"marks":2548,"data":2549}," attack.",[],{},{"nodeType":1456,"data":2551,"content":2552},{},[2553],{"nodeType":1293,"value":2554,"marks":2555,"data":2556},"The first method: myapps.microsoft.com",[],{},{"nodeType":1294,"data":2558,"content":2559},{},[2560,2564,2572],{"nodeType":1293,"value":2561,"marks":2562,"data":2563},"Make use of ",[],{},{"nodeType":1381,"data":2565,"content":2567},{"uri":2566},"https://myapps.microsoft.com",[2568],{"nodeType":1293,"value":2566,"marks":2569,"data":2571},[2570],{"type":1389},{},{"nodeType":1293,"value":2573,"marks":2574,"data":2575}," to see which apps are listed and which permissions have been granted. We can see Zapier is in use and the user has granted it access to their email and files, making it a great target.",[],{},{"nodeType":1365,"data":2577,"content":2581},{"target":2578},{"sys":2579},{"id":2580,"type":1370,"linkType":1371},"6dDez7xRZjliEJR6DAkWHa",[],{"nodeType":1365,"data":2583,"content":2587},{"target":2584},{"sys":2585},{"id":2586,"type":1370,"linkType":1371},"7M0imWv4n3z1RYQu3AdMF5",[],{"nodeType":1365,"data":2589,"content":2593},{"target":2590},{"sys":2591},{"id":2592,"type":1370,"linkType":1371},"3fwFBK03tc5g064k0IyADO",[],{"nodeType":1456,"data":2595,"content":2596},{},[2597],{"nodeType":1293,"value":2598,"marks":2599,"data":2600},"The second method: Microsoft’s graph API",[],{},{"nodeType":1294,"data":2602,"content":2603},{},[2604],{"nodeType":1293,"value":2605,"marks":2606,"data":2607},"\nMicrosoft’s graph API doesn’t make it possible to list out service principals without admin permissions, but you can enumerate individual OAuth permission grants and app role assignments for your own user account. ",[],{},{"nodeType":1294,"data":2609,"content":2610},{},[2611],{"nodeType":1293,"value":2612,"marks":2613,"data":2614},"The client ID listed for permission grants is actually the tenant-specific service principal ID, rather than the globally unique OAuth app ID, but the app role assignments call gives us the app display name. We can match up the IDs from the app role assignments with the OAuth permission grants to see which permissions have been granted to the given app. ",[],{},{"nodeType":1365,"data":2616,"content":2620},{"target":2617},{"sys":2618},{"id":2619,"type":1370,"linkType":1371},"519mlRMbaZYBAVdSADwop7",[],{"nodeType":1365,"data":2622,"content":2626},{"target":2623},{"sys":2624},{"id":2625,"type":1370,"linkType":1371},"3g4WBQBEvqx5mXXnZzZzUG",[],{"nodeType":1350,"data":2628,"content":2629},{},[2630],{"nodeType":1293,"value":2631,"marks":2632,"data":2633},"Step 2 - Create shadow workflows",[],{},{"nodeType":1294,"data":2635,"content":2636},{},[2637],{"nodeType":1293,"value":2638,"marks":2639,"data":2640},"Ok, so we’ve figured out the user already makes use of Zapier and they’ve even already granted access to their email and files - that’s a juicy target we can’t turn down! So the next step is to create our own malicious workflows, or shadow workflows if you will, to get Zapier to do our dirty work for us.",[],{},{"nodeType":1294,"data":2642,"content":2643},{},[2644],{"nodeType":1293,"value":2645,"marks":2646,"data":2647},"First of all, we’ll see if we can scope out the user’s existing Zapier account to better understand the setup. Then we’ll create a new Zapier account and link it to the target user’s account that we’ve compromised. Here’s how that would work:",[],{},{"nodeType":1456,"data":2649,"content":2650},{},[2651],{"nodeType":1293,"value":2652,"marks":2653,"data":2654},"Scope out the existing Zapier account",[],{},{"nodeType":1294,"data":2656,"content":2657},{},[2658],{"nodeType":1293,"value":2659,"marks":2660,"data":2661},"If the user uses SSO or social logins then we can login directly and, since we now control their Azure account, we can just log directly into their Zapier account!",[],{},{"nodeType":1365,"data":2663,"content":2667},{"target":2664},{"sys":2665},{"id":2666,"type":1370,"linkType":1371},"5IgmxUEm6n19OBL1cSZVkr",[],{"nodeType":1294,"data":2669,"content":2670},{},[2671,2675,2684],{"nodeType":1293,"value":2672,"marks":2673,"data":2674},"Alternatively, if they have created a standard password account, then we might already know the password if it’s the same used for their Azure account. Otherwise, we could potentially make use of an ",[],{},{"nodeType":1381,"data":2676,"content":2678},{"uri":2677},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/account_recovery/description.md",[2679],{"nodeType":1293,"value":2680,"marks":2681,"data":2683},"account recovery",[2682],{"type":1389},{},{"nodeType":1293,"value":2685,"marks":2686,"data":2687}," attack to gain access.",[],{},{"nodeType":1294,"data":2689,"content":2690},{},[2691,2695,2704],{"nodeType":1293,"value":2692,"marks":2693,"data":2694},"Once we have logged into their account, we can see their existing workflows and integrations. Technically, we could backdoor these or create new ones - a form of an ",[],{},{"nodeType":1381,"data":2696,"content":2698},{"uri":2697},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/abuse_existing_oauth_integrations/description.md",[2699],{"nodeType":1293,"value":2700,"marks":2701,"data":2703},"abuse existing OAuth integrations",[2702],{"type":1389},{},{"nodeType":1293,"value":2705,"marks":2706,"data":2707}," attack. However, that runs the risk of the user discovering our shadow workflows and also almost certainly being locked out of the account during the next password change. ",[],{},{"nodeType":1294,"data":2709,"content":2710},{},[2711],{"nodeType":1293,"value":2712,"marks":2713,"data":2714},"Instead, we can stick to an evil twin integration from our own Zapier account, which we’ll create later.",[],{},{"nodeType":1365,"data":2716,"content":2720},{"target":2717},{"sys":2718},{"id":2719,"type":1370,"linkType":1371},"2vhyTcVLq27QVa2HFFWBhH",[],{"nodeType":1365,"data":2722,"content":2726},{"target":2723},{"sys":2724},{"id":2725,"type":1370,"linkType":1371},"3jPSdBPSQgigA4yKK1udCV",[],{"nodeType":1294,"data":2728,"content":2729},{},[2730],{"nodeType":1293,"value":2731,"marks":2732,"data":2733},"Now we can see what the user was actually using Zapier for — they’ve set up an integration with both Outlook and OneDrive so they can forward emails related to their business expenses to a folder in their OneDrive. Probably a time-saving hack, which we can take advantage of since it won’t be unusual to see Zapier regularly accessing their Outlook and OneDrive. That means our attack will be extra stealthy.",[],{},{"nodeType":1456,"data":2735,"content":2736},{},[2737],{"nodeType":1293,"value":2738,"marks":2739,"data":2740},"Create our own malicious Zapier account",[],{},{"nodeType":1294,"data":2742,"content":2743},{},[2744],{"nodeType":1293,"value":2745,"marks":2746,"data":2747},"Given in this case we, at least temporarily, control the user’s Azure account there is nothing stopping us connecting this to our own malicious Zapier account completely separately from the user’s legitimate Zapier account. We then maintain full control over the Zapier account and the user will not be able to discover our shadow workflows as they won’t have any knowledge of our Zapier account: ",[],{},{"nodeType":1294,"data":2749,"content":2750},{},[2751],{"nodeType":1293,"value":2752,"marks":2753,"data":2754},"Let’s create our own shadow workflows:",[],{},{"nodeType":1597,"data":2756,"content":2757},{},[2758,2768],{"nodeType":1601,"data":2759,"content":2760},{},[2761],{"nodeType":1294,"data":2762,"content":2763},{},[2764],{"nodeType":1293,"value":2765,"marks":2766,"data":2767},"One that sends every new OneDrive file to our own separate Google Drive account. This allows us to maintain a complete view of the user’s files into the future. ",[],{},{"nodeType":1601,"data":2769,"content":2770},{},[2771],{"nodeType":1294,"data":2772,"content":2773},{},[2774],{"nodeType":1293,"value":2775,"marks":2776,"data":2777},"And one to forward every new Outlook email to our own GMail account.",[],{},{"nodeType":1365,"data":2779,"content":2783},{"target":2780},{"sys":2781},{"id":2782,"type":1370,"linkType":1371},"6eK8uNjPnkrfVjgFzl03SM",[],{"nodeType":1365,"data":2785,"content":2789},{"target":2786},{"sys":2787},{"id":2788,"type":1370,"linkType":1371},"6xJvuS374tbflAoNmhnqYP",[],{"nodeType":1294,"data":2791,"content":2792},{},[2793],{"nodeType":1293,"value":2794,"marks":2795,"data":2796},"We can now see we are logged in with a separate GMail account, but have created shadow workflows to forward emails from the user’s Outlook to our GMail account and harvest files from their OneDrive to our Google Drive.",[],{},{"nodeType":1294,"data":2798,"content":2799},{},[2800],{"nodeType":1293,"value":2801,"marks":2802,"data":2803},"The major benefit of creating our own Zapier account for an evil twin integration is that once we are locked out of the target user’s account via a password change or otherwise, not only do our existing shadow workflows continue to operate via OAuth, but we are able to create new shadow workflows and reuse the existing OAuth connections. That’s the power of having full control of the Zapier account. ",[],{},{"nodeType":1294,"data":2805,"content":2806},{},[2807],{"nodeType":1293,"value":2808,"marks":2809,"data":2810},"One small downside to this approach is that creating the new OAuth integrations inside a new Zapier account generates an interactive login event for the Zapier integrations from the adversary’s IP address. This occurs due to creating integrations from the new Zapier account, but because the user has already consented to all the relevant permissions for Zapier’s own OAuth apps there are no audit logs for new consents or applications, just the login event itself. ",[],{},{"nodeType":1294,"data":2812,"content":2813},{},[2814,2818],{"nodeType":1293,"value":2815,"marks":2816,"data":2817},"However, determining that a successful login to an app a user legitimately uses is actually malicious in this case is obviously extremely difficult to build detection logic for.   ",[],{},{"nodeType":1293,"value":2819,"marks":2820,"data":2822}," ",[2821],{"type":312},{},{"nodeType":1365,"data":2824,"content":2828},{"target":2825},{"sys":2826},{"id":2827,"type":1370,"linkType":1371},"1oZBtlL8rNl7TjmfJqRjUG",[],{"nodeType":1294,"data":2830,"content":2831},{},[2832],{"nodeType":1293,"value":2833,"marks":2834,"data":2835},"Beyond the initial login events, the only evidence of malicious activity in the future will be from the activity logs showing the actions conducted by our shadow workflows every time they are triggered to run. For example, the following screenshots show that the Zapier Todo app (ClientAppId 29246358-1970-4d6d-bc75-acf34edc758b) has been seen both uploading a file and downloading a file: \n",[],{},{"nodeType":1365,"data":2837,"content":2841},{"target":2838},{"sys":2839},{"id":2840,"type":1370,"linkType":1371},"2vYOSilB5W05aIHw2ZKqdC",[],{"nodeType":1365,"data":2843,"content":2847},{"target":2844},{"sys":2845},{"id":2846,"type":1370,"linkType":1371},"2fFwrdFO25BwY4vI7EKMA0",[],{"nodeType":1294,"data":2849,"content":2850},{},[2851],{"nodeType":1293,"value":2852,"marks":2853,"data":2854},"The file upload in this case relates to the legitimate workflow and the file download relates to the shadow workflow. The IP addresses relate to Zapier’s legitimate infrastructure so really only a very thorough and specific investigation is going to be able to uncover that one of these events is malicious.",[],{},{"nodeType":1350,"data":2856,"content":2857},{},[2858],{"nodeType":1293,"value":2859,"marks":2860,"data":2861},"Step 3 - Profit",[],{},{"nodeType":1294,"data":2863,"content":2864},{},[2865],{"nodeType":1293,"value":2866,"marks":2867,"data":2868},"Now we just need to sit back and let our shadow workflows do the work for us, 24/7 and from Zapier’s infrastructure via a legitimate OAuth integration. Here we can see files the user created in OneDrive and emails they received in Outlook mirrored to our own GMail and Google Drive via the magic of shadow workflows.",[],{},{"nodeType":1365,"data":2870,"content":2874},{"target":2871},{"sys":2872},{"id":2873,"type":1370,"linkType":1371},"4lJBrdJLEVnhBUjgtGo8T1",[],{"nodeType":1365,"data":2876,"content":2880},{"target":2877},{"sys":2878},{"id":2879,"type":1370,"linkType":1371},"azQ3IO0n4Idih5LDwOogV",[],{"nodeType":1350,"data":2882,"content":2883},{},[2884],{"nodeType":1293,"value":2885,"marks":2886,"data":2887},"Impact",[],{},{"nodeType":1294,"data":2889,"content":2890},{},[2891],{"nodeType":1293,"value":2892,"marks":2893,"data":2894},"Ok, we’ve covered a lot of ground here so it’s worth taking a step back and considering the key impact points of this attack chain:",[],{},{"nodeType":1597,"data":2896,"content":2897},{},[2898,2908,2918,2928,2938,2991,3001],{"nodeType":1601,"data":2899,"content":2900},{},[2901],{"nodeType":1294,"data":2902,"content":2903},{},[2904],{"nodeType":1293,"value":2905,"marks":2906,"data":2907},"An adversary who has gained (temporary) access to a user account that supports OAuth integrations can use shadow workflows to execute malicious actions and to maintain persistence",[],{},{"nodeType":1601,"data":2909,"content":2910},{},[2911],{"nodeType":1294,"data":2912,"content":2913},{},[2914],{"nodeType":1293,"value":2915,"marks":2916,"data":2917},"This access will continue even if the user changes their password or resets MFA",[],{},{"nodeType":1601,"data":2919,"content":2920},{},[2921],{"nodeType":1294,"data":2922,"content":2923},{},[2924],{"nodeType":1293,"value":2925,"marks":2926,"data":2927},"Not only do existing shadow workflows continue to work after password changes, an adversary can continue to create new ones and reuse the existing integrations.",[],{},{"nodeType":1601,"data":2929,"content":2930},{},[2931],{"nodeType":1294,"data":2932,"content":2933},{},[2934],{"nodeType":1293,"value":2935,"marks":2936,"data":2937},"Any relevant logs will show access via legitimate IP addresses and OAuth integrations for SaaS automation apps ",[],{},{"nodeType":1601,"data":2939,"content":2940},{},[2941,2948],{"nodeType":1294,"data":2942,"content":2943},{},[2944],{"nodeType":1293,"value":2945,"marks":2946,"data":2947},"Automation apps are so flexible that an adversary can do pretty much anything - it’s basically the offensive PowerShell of the SaaS world. Just some examples:",[],{},{"nodeType":1597,"data":2949,"content":2950},{},[2951,2961,2971,2981],{"nodeType":1601,"data":2952,"content":2953},{},[2954],{"nodeType":1294,"data":2955,"content":2956},{},[2957],{"nodeType":1293,"value":2958,"marks":2959,"data":2960},"Monitor all emails and files the user creates",[],{},{"nodeType":1601,"data":2962,"content":2963},{},[2964],{"nodeType":1294,"data":2965,"content":2966},{},[2967],{"nodeType":1293,"value":2968,"marks":2969,"data":2970},"Delete email security alerts before the user sees them",[],{},{"nodeType":1601,"data":2972,"content":2973},{},[2974],{"nodeType":1294,"data":2975,"content":2976},{},[2977],{"nodeType":1293,"value":2978,"marks":2979,"data":2980},"Intercept password reset and passwordless login emails to access other apps",[],{},{"nodeType":1601,"data":2982,"content":2983},{},[2984],{"nodeType":1294,"data":2985,"content":2986},{},[2987],{"nodeType":1293,"value":2988,"marks":2989,"data":2990},"Monitor instant messaging apps and use it to send targeted internal social engineering emails",[],{},{"nodeType":1601,"data":2992,"content":2993},{},[2994],{"nodeType":1294,"data":2995,"content":2996},{},[2997],{"nodeType":1293,"value":2998,"marks":2999,"data":3000},"If targeted users are already using automation apps legitimately, it’s even more stealthy - you won’t even see any new integrations or permission grants appear as the user will have already granted these legitimately.",[],{},{"nodeType":1601,"data":3002,"content":3003},{},[3004],{"nodeType":1294,"data":3005,"content":3006},{},[3007],{"nodeType":1293,"value":3008,"marks":3009,"data":3010},"If admin consent has been granted to the automation app, any user can be targeted without generating new permission grant logs even if they have never used the app.",[],{},{"nodeType":1350,"data":3012,"content":3013},{},[3014],{"nodeType":1293,"value":3015,"marks":3016,"data":3017},"Conclusion",[],{},{"nodeType":1294,"data":3019,"content":3020},{},[3021],{"nodeType":1293,"value":3022,"marks":3023,"data":3024},"We have seen how two new SaaS-focused attack techniques can be combined into one more effective attack chain - in this case, a particularly nasty and stealthy persistence technique. This shows how even if a user compromise is detected very early, with password and MFA resets immediately issued, adversaries can maintain control over the account regardless.",[],{},{"nodeType":1294,"data":3026,"content":3027},{},[3028],{"nodeType":1293,"value":3029,"marks":3030,"data":3031},"This shows how even legitimate SaaS applications have incredibly powerful offensive use cases and very careful attention needs to be paid to integrations with highly sensitive permissions, even when they are approved and vetted applications. Incident response teams especially need to be well aware of these techniques when investigating potential user account compromises as persistence approaches can extend much further than endpoint implants and stolen passwords.",[],{},"The shadow workflow’s evil twin: A nearly invisible attack chain","2023-09-11T00:00:00.000Z","nearly-invisible-attack-chain",{"items":3036},[3037,3039],{"sys":3038,"name":1306},{"id":1305},{"sys":3040,"name":1310},{"id":1309},{"items":3042},[3043],{"fullName":3044,"firstName":3045,"jobTitle":3046,"profilePicture":3047},"Luke Jennings","Luke","Vice President, R&D",{"url":3048},"https://images.ctfassets.net/y1cdw1ablpvd/4Hosb4zKi1dA0PUyDLMe1h/27e09d894861f2196ba794037986fb08/T016S22KZ96-U02NVQM7ZD4-57761d542d83-512.jpeg",{"__typename":1314,"sys":3050,"content":3052,"title":3487,"synopsis":3488,"hashTags":118,"publishedDate":3489,"slug":3490,"tagsCollection":3491,"authorsCollection":3495},{"id":3051},"3QpljiYU9YHEUhd5gsvypj",{"json":3053},{"nodeType":1295,"data":3054,"content":3055},{},[3056,3063,3070,3077,3084,3091,3097,3104,3111,3118,3125,3131,3138,3144,3164,3171,3177,3196,3217,3236,3243,3250,3257,3264,3270,3276,3283,3290,3297,3304,3310,3317,3365,3371,3377,3395,3401,3408,3414,3421,3427,3434,3441,3447,3453,3459,3466,3473,3480],{"nodeType":1294,"data":3057,"content":3058},{},[3059],{"nodeType":1293,"value":3060,"marks":3061,"data":3062},"As an attacker, we have a wide range of persistence options available to us in a traditional account or endpoint compromise scenario. From discovering a user's password, to creating new backdoor accounts, to using one of an insane number of \"run keys\" to keep an implant running beyond reboot, or even moving laterally to other internal systems - an attacker has plenty of choice.",[],{},{"nodeType":1294,"data":3064,"content":3065},{},[3066],{"nodeType":1293,"value":3067,"marks":3068,"data":3069},"But how does this change in a SaaS-first world? In this post, we'll consider some of the new challenges and opportunities that are presented to an attacker who wants to maintain persistence in the new world order, so you can better investigate incidents and quickly defend against attacks. We'll cover a variety of techniques, including malicious mail rules, OAuth backdoor tricks and document sharing links to see how persistence can be maintained, even in the event of password changes and device wipes.",[],{},{"nodeType":1350,"data":3071,"content":3072},{},[3073],{"nodeType":1293,"value":3074,"marks":3075,"data":3076},"So what’s changed?",[],{},{"nodeType":1294,"data":3078,"content":3079},{},[3080],{"nodeType":1293,"value":3081,"marks":3082,"data":3083},"In a traditional compromise scenario, a common example would be an endpoint compromised through phishing, which is used to deliver a malicious implant to establish a command and control channel with the endpoint. In order to maintain access, an attacker would likely use one or more endpoint persistence methods to ensure their implant is launched again post-reboot when the user turns their laptop off for the day. ",[],{},{"nodeType":1294,"data":3085,"content":3086},{},[3087],{"nodeType":1293,"value":3088,"marks":3089,"data":3090},"This would often become a foothold into the internal network of the compromised organization. The endpoint or user is the start, but an attacker may seek to move laterally to other endpoints and servers on the internal network, where security is often much lower than the external perimeter.",[],{},{"nodeType":1365,"data":3092,"content":3096},{"target":3093},{"sys":3094},{"id":3095,"type":1370,"linkType":1371},"5aSsHI9aZjsZIIXcV3YDYk",[],{"nodeType":1294,"data":3098,"content":3099},{},[3100],{"nodeType":1293,"value":3101,"marks":3102,"data":3103},"In a SaaS-first world, this situation has begun to change somewhat. There are many companies now that have significantly reduced the size of their internal networks or are even fully in the cloud and do not have any internal network infrastructure. In this case, traditional lateral movement becomes much more difficult or impossible. Additionally, endpoints are becoming increasingly hard targets to compromise and incident response teams have matured and have gotten better at cleaning up endpoint compromises. ",[],{},{"nodeType":1294,"data":3105,"content":3106},{},[3107],{"nodeType":1293,"value":3108,"marks":3109,"data":3110},"The consequence of this is that attackers need to make the most use of the access they have during an endpoint or user compromise and maintain access where possible, even in the event of a password reset and full laptop wipe. Additionally, new SaaS-focused persistence options are now possible, which are also often resistant to password changes and endpoints wipes, so these are increasingly attractive options for an attacker. ",[],{},{"nodeType":1294,"data":3112,"content":3113},{},[3114],{"nodeType":1293,"value":3115,"marks":3116,"data":3117},"One other change is that persistence is less binary than it has been traditionally. Typically, persistence would often be on a per-user or per-endpoint basis. Either an attacker would have full control of a user account (e.g. knowing the password) or full control of an endpoint (e.g. an implant running on the endpoint). The main differentiation would be in whether endpoint-level access was administrative level control over the endpoint or an implant running as a low-privileged user account. However, in the SaaS-world persistence is much more asset dependent and thus less binary. It could be persistent access to email, or documents, or chat conversations or any number of other assets and capabilities.",[],{},{"nodeType":1456,"data":3119,"content":3120},{},[3121],{"nodeType":1293,"value":3122,"marks":3123,"data":3124},"Mail rules",[],{},{"nodeType":1365,"data":3126,"content":3130},{"target":3127},{"sys":3128},{"id":3129,"type":1370,"linkType":1371},"3bcLzOfZupSDatdzfFrJDQ",[],{"nodeType":1294,"data":3132,"content":3133},{},[3134],{"nodeType":1293,"value":3135,"marks":3136,"data":3137},"Mail rules are a handy feature found in most email clients. You might have used them to forward emails to your teammates while you’re off sipping Piña Coladas, or to move incoming email from that spammy colleague to the “don’t read” folder. However, they can also be used for a range of malicious activities, such as forwarding emails to an external address (e.g. password resets, invoices, “confidential” emails etc) or deleting emails (e.g. security alerts!). A good example of a real-world attack involving this technique was the 2020 SANS breach.\n",[],{},{"nodeType":1365,"data":3139,"content":3143},{"target":3140},{"sys":3141},{"id":3142,"type":1370,"linkType":1371},"5RoIfopOGmTaORtG7fqYQo",[],{"nodeType":1294,"data":3145,"content":3146},{},[3147,3151,3161],{"nodeType":1293,"value":3148,"marks":3149,"data":3150},"If you want to read more about this technique, you can check out our ",[],{},{"nodeType":2183,"data":3152,"content":3156},{"target":3153},{"sys":3154},{"id":3155,"type":1370,"linkType":1371},"2zZ8kxP0t8Smi9b6hpT34k",[3157],{"nodeType":1293,"value":3158,"marks":3159,"data":3160},"previous article",[],{},{"nodeType":1293,"value":1392,"marks":3162,"data":3163},[],{},{"nodeType":1456,"data":3165,"content":3166},{},[3167],{"nodeType":1293,"value":3168,"marks":3169,"data":3170},"OAuth attack #1: Custom OAuth app integration",[],{},{"nodeType":1365,"data":3172,"content":3176},{"target":3173},{"sys":3174},{"id":3175,"type":1370,"linkType":1371},"7suW3GZpDsu2RnopkUiA3L",[],{"nodeType":1294,"data":3178,"content":3179},{},[3180,3184,3193],{"nodeType":1293,"value":3181,"marks":3182,"data":3183},"OAuth apps can be used to request permanent access to a set of permissions on behalf of a user. This can be as simple as the ability to verify a user’s identity for a simple social login or it could be as permissive as having full control over email, document stores, wiki pages, admin capabilities, etc. You can read more details about this in our ",[],{},{"nodeType":2183,"data":3185,"content":3189},{"target":3186},{"sys":3187},{"id":3188,"type":1370,"linkType":1371},"68syxk4cmD6QOdVRcDqgEZ",[3190],{"nodeType":1293,"value":3158,"marks":3191,"data":3192},[],{},{"nodeType":1293,"value":2193,"marks":3194,"data":3195},[],{},{"nodeType":1294,"data":3197,"content":3198},{},[3199,3203,3213],{"nodeType":1293,"value":3200,"marks":3201,"data":3202},"However, from an attacker’s perspective a custom OAuth app could be created with sensitive permissions and connected to a user’s account in order to maintain access to their data. In the event that an attacker has compromised a user’s account or endpoint, they could directly consent to their own malicious OAuth app on behalf of the user in order to gain persistence. This could also be achieved as part of a ",[],{},{"nodeType":2183,"data":3204,"content":3208},{"target":3205},{"sys":3206},{"id":3207,"type":1370,"linkType":1371},"1bV8YTSQHvveCTnRc4H8su",[3209],{"nodeType":1293,"value":3210,"marks":3211,"data":3212},"consent phishing",[],{},{"nodeType":1293,"value":3214,"marks":3215,"data":3216}," attack to effectively compromise a user’s account and gain this persistence at the same time. In either case, this would enable continued access to the user’s data even if their password is changed and their endpoint fully wiped.   ",[],{},{"nodeType":1294,"data":3218,"content":3219},{},[3220,3224,3232],{"nodeType":1293,"value":3221,"marks":3222,"data":3223},"Attacks utilizing these types of techniques are becoming increasingly common and Microsoft even ",[],{},{"nodeType":1381,"data":3225,"content":3227},{"uri":3226},"https://www.microsoft.com/en-us/security/blog/2022/09/22/malicious-OAuth-applications-used-to-compromise-email-servers-and-spread-spam/",[3228],{"nodeType":1293,"value":3229,"marks":3230,"data":3231},"wrote about some real-world attacks",[],{},{"nodeType":1293,"value":3233,"marks":3234,"data":3235}," they uncovered recently that involved the use of malicious OAuth apps.",[],{},{"nodeType":1456,"data":3237,"content":3238},{},[3239],{"nodeType":1293,"value":3240,"marks":3241,"data":3242},"OAuth attack #2: SaaS platform integration",[],{},{"nodeType":1294,"data":3244,"content":3245},{},[3246],{"nodeType":1293,"value":3247,"marks":3248,"data":3249},"A similar approach to using a custom OAuth app is to make use of legitimate SaaS services that allow an attacker to make sensitive integrations as a more hide-in-plain-sight approach. For example, let’s take the popular SaaS platform Canva, a graphic design tool that is used to create social media graphics, presentations, posters, documents and other visual content, as an example. Canva, like many SaaS platforms, allows you to make integrations with document stores like OneDrive and Google Drive in order to easily import and export files between Canva and them. If an attacker is interested primarily in maintaining access to a user’s files, then they could make an integration with a platform like Canva and then use that to maintain access.",[],{},{"nodeType":1294,"data":3251,"content":3252},{},[3253],{"nodeType":1293,"value":3254,"marks":3255,"data":3256},"While this doesn’t provide any raw capabilities beyond a custom OAuth app, an attacker may be more likely to go undetected in this scenario. Discovering an integration with a completely unknown, unverified OAuth app that hasn’t been seen in use elsewhere in the organization, or anywhere at all, is suspicious. Finding an integration with a major SaaS platform, particularly if it is one in use by other users in the organization, is much less suspicious. Additionally, many of them will have verified ticks having been through Microsoft’s or Google’s own verification processes. The only downside for an attacker is having to find SaaS platforms that request the correct permissions and provide the functionality that the attacker is looking for, whereas a custom OAuth app could be used to request any permissions and code could be written to use those permissions however an attacker would like.",[],{},{"nodeType":1294,"data":3258,"content":3259},{},[3260],{"nodeType":1293,"value":3261,"marks":3262,"data":3263},"If a custom OAuth app is the equivalent of a custom implant on an endpoint, then using a legitimate SaaS platform integration is the equivalent of a more living-off-the-land approach, such as using TeamViewer, RDP or Powershell, etc.\n",[],{},{"nodeType":1365,"data":3265,"content":3269},{"target":3266},{"sys":3267},{"id":3268,"type":1370,"linkType":1371},"53pL4O8zgfLBKqZbbcN3aI",[],{"nodeType":1365,"data":3271,"content":3275},{"target":3272},{"sys":3273},{"id":3274,"type":1370,"linkType":1371},"6ovQnE1bu7tVCJr4OfzfhI",[],{"nodeType":1456,"data":3277,"content":3278},{},[3279],{"nodeType":1293,"value":3280,"marks":3281,"data":3282},"OAuth attack #3: Legitimate desktop/mobile app impersonation",[],{},{"nodeType":1294,"data":3284,"content":3285},{},[3286],{"nodeType":1293,"value":3287,"marks":3288,"data":3289},"Ok, we promise this is the last OAuth variation example - but it’s another interesting way to abuse OAuth connections! Previously, we spoke of either connecting a custom OAuth app or using an OAuth integration via a legitimate SaaS platform. A custom OAuth app has the most flexibility for an attacker, but looks far more suspicious if discovered, whereas a legitimate SaaS platform looks much more….well, legitimate!",[],{},{"nodeType":1294,"data":3291,"content":3292},{},[3293],{"nodeType":1293,"value":3294,"marks":3295,"data":3296},"What if you could have both of those advantages in one? Well, that can be achieved, too! The reason SaaS platforms don’t have the same flexibility is because they keep their client IDs and secrets for their apps so the attacker can only use the OAuth app indirectly via the features provided by the SaaS platform. However, some OAuth connections are made using desktop or mobile apps that obviously can’t keep their OAuth app secrets secret from a user. While it is generally not possible for an attacker to make use of these in a consent phishing attack, due to not controlling the reply URLs, they can be used in a pure persistence scenario with an already compromised account. ",[],{},{"nodeType":1294,"data":3298,"content":3299},{},[3300],{"nodeType":1293,"value":3301,"marks":3302,"data":3303},"Let’s take Mozilla Thunderbird, a cross-platform email client, as an example. The client IDs and secrets for different OAuth apps are actually stored in the source code in this case: ",[],{},{"nodeType":1365,"data":3305,"content":3309},{"target":3306},{"sys":3307},{"id":3308,"type":1370,"linkType":1371},"3Ed90clKC3GG4BcPfeV6Nm",[],{"nodeType":1294,"data":3311,"content":3312},{},[3313],{"nodeType":1293,"value":3314,"marks":3315,"data":3316},"As an attacker, this gives us multiple advantages. ",[],{},{"nodeType":1597,"data":3318,"content":3319},{},[3320,3335,3350],{"nodeType":1601,"data":3321,"content":3322},{},[3323],{"nodeType":1294,"data":3324,"content":3325},{},[3326,3331],{"nodeType":1293,"value":3327,"marks":3328,"data":3330},"App Impersonation",[3329],{"type":2273},{},{"nodeType":1293,"value":3332,"marks":3333,"data":3334}," - These are client IDs that will be seen in use legitimately by other users and we can impersonate them. In Thunderbird’s case, the Microsoft app isn’t actually a verified app but the Google one shows as verified. Whatever the case, it looks much less suspicious than a completely unknown app with no known business use case. ",[],{},{"nodeType":1601,"data":3336,"content":3337},{},[3338],{"nodeType":1294,"data":3339,"content":3340},{},[3341,3346],{"nodeType":1293,"value":3342,"marks":3343,"data":3345},"Flexible Use",[3344],{"type":2273},{},{"nodeType":1293,"value":3347,"marks":3348,"data":3349}," - We have access to the client IDs and secrets, so we can do whatever we want with the OAuth integration, writing custom code to query APIs as we please. We are not limited to the functionality provided by Thunderbird itself.\n",[],{},{"nodeType":1601,"data":3351,"content":3352},{},[3353],{"nodeType":1294,"data":3354,"content":3355},{},[3356,3361],{"nodeType":1293,"value":3357,"marks":3358,"data":3360},"Arbitrary Permission Granting",[3359],{"type":2273},{},{"nodeType":1293,"value":3362,"marks":3363,"data":3364}," - We aren’t actually limited to just the permissions that Thunderbird would normally request (e.g. email/calendar). Since we’re in control of the OAuth secrets, we can just request whatever scopes we want. For example, shown below is us using the Microsoft Thunderbird OAuth secrets to request permissions that also include access to all files, Sharepoint, AD access, etc. \n",[],{},{"nodeType":1365,"data":3366,"content":3370},{"target":3367},{"sys":3368},{"id":3369,"type":1370,"linkType":1371},"22nQPPKCgUUEr7QPQBFHNS",[],{"nodeType":1365,"data":3372,"content":3376},{"target":3373},{"sys":3374},{"id":3375,"type":1370,"linkType":1371},"5eIVlfPzpxuO7D41r7DPfe",[],{"nodeType":1597,"data":3378,"content":3379},{},[3380],{"nodeType":1601,"data":3381,"content":3382},{},[3383],{"nodeType":1294,"data":3384,"content":3385},{},[3386,3391],{"nodeType":1293,"value":3387,"marks":3388,"data":3390},"(Semi-)Bypass Google Restricted Scopes",[3389],{"type":2273},{},{"nodeType":1293,"value":3392,"marks":3393,"data":3394}," - When it comes to arbitrary permission granting, there is a caveat with Google in that some of the more sensitive scopes Google offer are only available to selected approved and verified apps. Therefore, we can’t necessarily just request access to any permission with Google. For example, if we modify Thunderbird to request access to Google Drive (a restricted scope) then we get the following: ",[],{},{"nodeType":1365,"data":3396,"content":3400},{"target":3397},{"sys":3398},{"id":3399,"type":1370,"linkType":1371},"3HIcve3zqVFheiZ2tJILJl",[],{"nodeType":1294,"data":3402,"content":3403},{},[3404],{"nodeType":1293,"value":3405,"marks":3406,"data":3407},"Access to Gmail is also considered a restricted scope. However, obviously Thunderbird is an email client, so if it uses OAuth it’s going to want access to Gmail, right? Well, yes, the Thunderbird app ID is permitted access to Gmail data, so we can use it to gain that access and appear as a legitimate verified app, in addition to requesting any other non-restricted permissions we’re interested in: ",[],{},{"nodeType":1365,"data":3409,"content":3413},{"target":3410},{"sys":3411},{"id":3412,"type":1370,"linkType":1371},"5SqY9Q2g7DpHhCGJVQDcgF",[],{"nodeType":1456,"data":3415,"content":3416},{},[3417],{"nodeType":1293,"value":3418,"marks":3419,"data":3420},"Document-sharing links",[],{},{"nodeType":1365,"data":3422,"content":3426},{"target":3423},{"sys":3424},{"id":3425,"type":1370,"linkType":1371},"2EEC98Ros0MdMX2gt4OGKe",[],{"nodeType":1294,"data":3428,"content":3429},{},[3430],{"nodeType":1293,"value":3431,"marks":3432,"data":3433},"Ok, no more OAuth, we promise! The final option we want to highlight is the (ab-)use of document-sharing links. Many organizations make use of OneDrive, Sharepoint and Google Drive for document editing, sharing and collaboration. However, it’s pretty common to want to share documents with people outside your organization sometimes too, right? That’s where document-sharing links come in. You can create a document sharing link to share with specific individuals in other Google/Azure organizations or you can create anonymous links that anyone with knowledge of the (unguessable randomized) link can access.",[],{},{"nodeType":1294,"data":3435,"content":3436},{},[3437],{"nodeType":1293,"value":3438,"marks":3439,"data":3440},"Very similar functionality is present in both OneDrive and Google Drive, but this same legitimate functionality can also be abused by attackers to maintain backdoor access to either select files or entire root folders. Sharing a root folder will cause future files to inherit those sharing permissions. This is a modern repeat of the age-old problem of access control list (ACL) management on internal file servers, only now internet-based attackers can potentially abuse this without needing VPN or similar access. ",[],{},{"nodeType":1365,"data":3442,"content":3446},{"target":3443},{"sys":3444},{"id":3445,"type":1370,"linkType":1371},"4IUv2rbEMXrJUAdEYC9xxD",[],{"nodeType":1365,"data":3448,"content":3452},{"target":3449},{"sys":3450},{"id":3451,"type":1370,"linkType":1371},"bMAt7XvLmIEIDwzZrAawU",[],{"nodeType":1456,"data":3454,"content":3455},{},[3456],{"nodeType":1293,"value":3015,"marks":3457,"data":3458},[],{},{"nodeType":1294,"data":3460,"content":3461},{},[3462],{"nodeType":1293,"value":3463,"marks":3464,"data":3465},"We've demonstrated a few new persistence options attackers are using against organizations as they move to the cloud. While some existing persistence and lateral movement options are no longer working in these environments, attackers have been able to quickly adapt to new conditions to get at their targets.",[],{},{"nodeType":1294,"data":3467,"content":3468},{},[3469],{"nodeType":1293,"value":3470,"marks":3471,"data":3472},"Some of these attacks have already been seen in the wild and others may already be happening under the radar. In any case, being aware of how attackers will try to compromise SaaS-first organizations helps you prepare to defend and respond to these attacks. ",[],{},{"nodeType":1294,"data":3474,"content":3475},{},[3476],{"nodeType":1293,"value":3477,"marks":3478,"data":3479},"It’s extremely important for incident response teams to adapt to these changes, as a password reset and a device wipe is not sufficient to regain control of a user account, even when no lateral movement to internal systems has been performed.",[],{},{"nodeType":1294,"data":3481,"content":3482},{},[3483],{"nodeType":1293,"value":3484,"marks":3485,"data":3486},"New steps need to be added to IR playbooks in the event of user or device compromises to cover the revocation of OAuth permissions and refresh tokens, the auditing of mail rules and changes to document sharing configurations.",[],{},"Maintaining persistent access in a SaaS-first world","Attackers have loads of persistence options in an endpoint compromise scenario, but what changes in a SaaS-first world? We talk new attack methods in this post.","2022-11-29T00:00:00.000Z","maintaining-persistent-access-in-a-saas-first-world",{"items":3492},[3493],{"sys":3494,"name":1306},{"id":1305},{"items":3496},[3497],{"fullName":3044,"firstName":3045,"jobTitle":3046,"profilePicture":3498},{"url":3048},{"items":3500},[3501],{"fullName":3044,"firstName":3045,"jobTitle":3046,"profilePicture":3502},{"url":3048},{"json":3504,"links":3957},{"data":3505,"content":3506,"nodeType":1295},{},[3507,3525,3532,3539,3546,3564,3571,3590,3596,3603,3610,3617,3624,3631,3638,3658,3665,3672,3678,3685,3692,3699,3705,3711,3717,3724,3731,3737,3744,3751,3758,3764,3771,3778,3785,3792,3799,3805,3812,3819,3825,3832,3839,3845,3851,3858,3923,3930,3936,3943,3950],{"data":3508,"content":3509,"nodeType":1294},{},[3510,3514,3521],{"data":3511,"marks":3512,"value":3513,"nodeType":1293},{},[],"We published the ",{"data":3515,"content":3516,"nodeType":1381},{"uri":1383},[3517],{"data":3518,"marks":3519,"value":2174,"nodeType":1293},{},[3520],{"type":1389},{"data":3522,"marks":3523,"value":3524,"nodeType":1293},{},[]," on GitHub, which is an open-source research project to demonstrate the multitude of attacks that are possible against SaaS-native and hybrid SaaS organizations. On release day it contained 38 different techniques. ",{"data":3526,"content":3527,"nodeType":1294},{},[3528],{"data":3529,"marks":3530,"value":3531,"nodeType":1293},{},[],"However, we know it’s not just individual attack techniques and the phases of the cyber kill chain that matter - it’s also how you chain attacks together. Two lower risk vulnerabilities chained together could be a critical issue.",{"data":3533,"content":3534,"nodeType":1294},{},[3535],{"data":3536,"marks":3537,"value":3538,"nodeType":1293},{},[],"In this article, we’re going to demonstrate that by combining two of our favorite new SaaS attack techniques, poisoned tenants and SAMLjacking, you can make a simple, but effective attack chain.",{"data":3540,"content":3541,"nodeType":1350},{},[3542],{"data":3543,"marks":3544,"value":3545,"nodeType":1293},{},[],"What is a poisoned tenant?",{"data":3547,"content":3548,"nodeType":1294},{},[3549,3552,3560],{"data":3550,"marks":3551,"value":37,"nodeType":1293},{},[],{"data":3553,"content":3554,"nodeType":1381},{"uri":1517},[3555],{"data":3556,"marks":3557,"value":3559,"nodeType":1293},{},[3558],{"type":1389},"Poisoned tenants",{"data":3561,"marks":3562,"value":3563,"nodeType":1293},{},[]," involve an adversary registering a tenant for a SaaS app they control and tricking target users to join it, often using built-in invite functionality. The end goal is to have some target users actively using a tenant you (as the adversary) control.",{"data":3565,"content":3566,"nodeType":1350},{},[3567],{"data":3568,"marks":3569,"value":3570,"nodeType":1293},{},[],"What the hell is SAMLjacking?",{"data":3572,"content":3573,"nodeType":1294},{},[3574,3577,3586],{"data":3575,"marks":3576,"value":37,"nodeType":1293},{},[],{"data":3578,"content":3580,"nodeType":1381},{"uri":3579},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/samljacking/description.md",[3581],{"data":3582,"marks":3583,"value":3585,"nodeType":1293},{},[3584],{"type":1389},"SAMLjacking",{"data":3587,"marks":3588,"value":3589,"nodeType":1293},{},[]," is where an attacker makes use of SAML SSO configuration settings for a SaaS tenant they control in order to redirect users to a malicious link of their choosing during the authentication process. This can be highly effective for phishing as the original URL will be a legitimate SaaS URL and users are expecting to provide credentials.",{"data":3591,"content":3592,"nodeType":1350},{},[3593],{"data":3594,"marks":3595,"value":2283,"nodeType":1293},{},[],{"data":3597,"content":3598,"nodeType":1294},{},[3599],{"data":3600,"marks":3601,"value":3602,"nodeType":1293},{},[],"A poisoned tenant on its own could be an epic supply chain attack if you get really lucky. Imagine discovering an organization was wanting to migrate to Slack and then catching some key teams with a Slack poisoned tenant and gradually getting the whole organization migrated over. You’d have a goldmine of information as an administrator of the platform.",{"data":3604,"content":3605,"nodeType":1294},{},[3606],{"data":3607,"marks":3608,"value":3609,"nodeType":1293},{},[],"However, it might be hard to trick a whole organization into using an attacker controlled slack instance without anyone realizing, but it could be a lot easier to successfully invite e.g. a marketing team into using/adopting a new marketing app that helps them do SEO. This might be easier to perform, but it doesn't really give the attacker valuable data in the poisoned tenant of the marketing app, so it seems a bit pointless.",{"data":3611,"content":3612,"nodeType":1294},{},[3613],{"data":3614,"marks":3615,"value":3616,"nodeType":1293},{},[],"On the other hand, what about SAMLjacking? It’s a great technique on its own, but you still need to get users to login to the app. Sure, you’ll be sending them a legitimate SaaS URL with a valid TLS certificate etc and so it’s going to pass the sniff test for many people and also bypass email security appliances and similar security tools. However, you’re still effectively phishing them for credentials, the one thing we train users to be most suspicious about, so there is still a possibility they will spot the attack. ",{"data":3618,"content":3619,"nodeType":1294},{},[3620],{"data":3621,"marks":3622,"value":3623,"nodeType":1293},{},[],"But what if you could combine these techniques so that a poisoned tenant didn’t need to be a big, juicy target to be useful and a SAMLjacking attack didn’t even necessarily require phishing someone directly? What if the attack could be successful just from a target accessing their own bookmarks or open tabs for an app they already use?",{"data":3625,"content":3626,"nodeType":1294},{},[3627],{"data":3628,"marks":3629,"value":3630,"nodeType":1293},{},[],"In a combination scenario, a user doesn't need to be phished for SAMLjacking. One day they go back to their tab and it's logged out and they get SAMLjacked while logging back in. They don't have to click a link in an email. That’s what we are talking about here, so let’s consider an example of this making use of the SaaS-based wiki, Nuclino.",{"data":3632,"content":3633,"nodeType":1350},{},[3634],{"data":3635,"marks":3636,"value":3637,"nodeType":1293},{},[],"An example attack - Nuclino",{"data":3639,"content":3640,"nodeType":1294},{},[3641,3645,3654],{"data":3642,"marks":3643,"value":3644,"nodeType":1293},{},[],"Before moving on, I’d just like to point out that this isn’t a vulnerability with ",{"data":3646,"content":3648,"nodeType":1381},{"uri":3647},"https://www.nuclino.com/",[3649],{"data":3650,"marks":3651,"value":3653,"nodeType":1293},{},[3652],{"type":1389},"Nuclino",{"data":3655,"marks":3656,"value":3657,"nodeType":1293},{},[]," per se and it won’t be limited to Nuclino either. I’ve used Nuclino as an example because it’s a great wiki platform we use at Push Security, so I’m familiar with it. ",{"data":3659,"content":3660,"nodeType":1294},{},[3661],{"data":3662,"marks":3663,"value":3664,"nodeType":1293},{},[],"It also allows custom SAML authentication, both as part of its free trial and as part of its lowest tier paid plan. This should be commended as many SaaS apps don’t support SAML or other forms of SSO, and many of those that do charge a huge premium via enterprise plans to gain access to it. We love you Nuclino, sorry!",{"data":3666,"content":3667,"nodeType":1294},{},[3668],{"data":3669,"marks":3670,"value":3671,"nodeType":1293},{},[],"We'll take a walkthrough of how the attack chain works now. However, if you'd like to jump straight to a demo of the attack then checkout the video here:",{"data":3673,"content":3677,"nodeType":1365},{"target":3674},{"sys":3675},{"id":3676,"type":1370,"linkType":1371},"3y6ZMPPsbh6PYlQ7IOxOzS",[],{"data":3679,"content":3680,"nodeType":1294},{},[3681],{"data":3682,"marks":3683,"value":3684,"nodeType":1293},{},[],"Next, we'll do a full walkthrough of the attack.",{"data":3686,"content":3687,"nodeType":1456},{},[3688],{"data":3689,"marks":3690,"value":3691,"nodeType":1293},{},[],"Step 1 - Setup a poisoned tenant and invite target users",{"data":3693,"content":3694,"nodeType":1294},{},[3695],{"data":3696,"marks":3697,"value":3698,"nodeType":1293},{},[],"The first step for an adversary is to set up their poisoned tenant and then make use of the invite functionality to target some employees of the target organization. With Nuclino, you can either do this by sending sharing links directly to the target or invite them through the Nuclino app, and it will send out legit email invitations on your behalf.",{"data":3700,"content":3704,"nodeType":1365},{"target":3701},{"sys":3702},{"id":3703,"type":1370,"linkType":1371},"740nQhGSFp2nFU1b4DP7Mp",[],{"data":3706,"content":3710,"nodeType":1365},{"target":3707},{"sys":3708},{"id":3709,"type":1370,"linkType":1371},"4GFL1L7Mmp3nnBODwC9SbH",[],{"data":3712,"content":3716,"nodeType":1365},{"target":3713},{"sys":3714},{"id":3715,"type":1370,"linkType":1371},"7KUWKFFlDyvBVoM3MEhPwR",[],{"data":3718,"content":3719,"nodeType":1456},{},[3720],{"data":3721,"marks":3722,"value":3723,"nodeType":1293},{},[],"Step 2 - Target responds to the invitation or later signs up for Nuclino",{"data":3725,"content":3726,"nodeType":1294},{},[3727],{"data":3728,"marks":3729,"value":3730,"nodeType":1293},{},[],"The interesting thing here is that whether the target signs up for Nuclino directly from the joining link or they sign up for an account separately in future, they get mapped to the workspace they have been invited to by default.",{"data":3732,"content":3736,"nodeType":1365},{"target":3733},{"sys":3734},{"id":3735,"type":1370,"linkType":1371},"2GlTHcT1cpQ44jb5lN9dr4",[],{"data":3738,"content":3739,"nodeType":1456},{},[3740],{"data":3741,"marks":3742,"value":3743,"nodeType":1293},{},[],"Step 3 - Configure a malicious SAML server",{"data":3745,"content":3746,"nodeType":1294},{},[3747],{"data":3748,"marks":3749,"value":3750,"nodeType":1293},{},[],"Once the adversary has a critical mass of users on their poisoned tenant, they can later engage the SAMLjacking attack. ",{"data":3752,"content":3753,"nodeType":1294},{},[3754],{"data":3755,"marks":3756,"value":3757,"nodeType":1293},{},[],"To do this, they need to configure a custom SAML server. You can point this to a fake authentication provider they control that mirrors the appearance of the SSO provider the target users are accustomed to using in order to capture credentials.",{"data":3759,"content":3763,"nodeType":1365},{"target":3760},{"sys":3761},{"id":3762,"type":1370,"linkType":1371},"1RbhUTZd5Ak4UvjiZhub4V",[],{"data":3765,"content":3766,"nodeType":1294},{},[3767],{"data":3768,"marks":3769,"value":3770,"nodeType":1293},{},[],"If you toggle the setting to require SSO, existing users will be sent emails prompting them to link their accounts to SSO. That leads to two possible paths to a user compromise.",{"data":3772,"content":3773,"nodeType":1350},{},[3774],{"data":3775,"marks":3776,"value":3777,"nodeType":1293},{},[],"Paths to user compromise ",{"data":3779,"content":3780,"nodeType":1456},{},[3781],{"data":3782,"marks":3783,"value":3784,"nodeType":1293},{},[],"The first possibility",{"data":3786,"content":3787,"nodeType":1294},{},[3788],{"data":3789,"marks":3790,"value":3791,"nodeType":1293},{},[],"This compromise occurs when the target sees the email that SSO has been configured and clicks the link in order to link their account to SSO. A smart adversary may improve the social engineering quality with an email sent out in advance informing users that the internal security team has requested Nuclino be linked to SSO. This makes the target expect the email and consider it legitimate. ",{"data":3793,"content":3794,"nodeType":1294},{},[3795],{"data":3796,"marks":3797,"value":3798,"nodeType":1293},{},[],"Even though the email is an official email from Nuclino and the link contained is an official Nuclino URL, it will immediately redirect to the malicious SAML server that has been configured, where credentials can then be captured.",{"data":3800,"content":3804,"nodeType":1365},{"target":3801},{"sys":3802},{"id":3803,"type":1370,"linkType":1371},"6zWiAfBx7aaUeo6t04AtUl",[],{"data":3806,"content":3807,"nodeType":1456},{},[3808],{"data":3809,"marks":3810,"value":3811,"nodeType":1293},{},[],"Second compromise possibility",{"data":3813,"content":3814,"nodeType":1294},{},[3815],{"data":3816,"marks":3817,"value":3818,"nodeType":1293},{},[],"If the user ignores the email, the other potential outcome occurs when their session expires and they need to login again to regain access. This is similar to a watering hole attack. When their session expires, the target’s open tabs or bookmarks will redirect back to the workspace specific login page, which will now look like this:",{"data":3820,"content":3824,"nodeType":1365},{"target":3821},{"sys":3822},{"id":3823,"type":1370,"linkType":1371},"580CvVtdyEpqdiK8T1lSfQ",[],{"data":3826,"content":3827,"nodeType":1294},{},[3828],{"data":3829,"marks":3830,"value":3831,"nodeType":1293},{},[],"Clicking the button to login with SSO will immediately redirect to the malicious SAML server and launch the attack. Alternatively, if the target attempts to login without SSO, the login will fail with an error message telling them to login with SSO.",{"data":3833,"content":3834,"nodeType":1294},{},[3835],{"data":3836,"marks":3837,"value":3838,"nodeType":1293},{},[],"Either way, once the SAMLjacking has taken effect, they’ll be faced with a familiar-looking SSO login page from a trusted source at a point they are expecting to enter their credentials - something even the most paranoid of users could easily fall for unknowingly. ",{"data":3840,"content":3844,"nodeType":1365},{"target":3841},{"sys":3842},{"id":3843,"type":1370,"linkType":1371},"5eFctGgFywtmhhjaXVraqN",[],{"data":3846,"content":3847,"nodeType":1350},{},[3848],{"data":3849,"marks":3850,"value":2885,"nodeType":1293},{},[],{"data":3852,"content":3853,"nodeType":1294},{},[3854],{"data":3855,"marks":3856,"value":3857,"nodeType":1293},{},[],"At this point, having compromised multiple user’s Google credentials, an adversary has a lot of options available:",{"data":3859,"content":3860,"nodeType":1597},{},[3861,3871,3881,3903],{"data":3862,"content":3863,"nodeType":1601},{},[3864],{"data":3865,"content":3866,"nodeType":1294},{},[3867],{"data":3868,"marks":3869,"value":3870,"nodeType":1293},{},[],"Access all data in Google apps like GMail, Google Drive etc",{"data":3872,"content":3873,"nodeType":1601},{},[3874],{"data":3875,"content":3876,"nodeType":1294},{},[3877],{"data":3878,"marks":3879,"value":3880,"nodeType":1293},{},[],"Access other SaaS apps that use SSO with the same Google account",{"data":3882,"content":3883,"nodeType":1601},{},[3884],{"data":3885,"content":3886,"nodeType":1294},{},[3887,3891,3900],{"data":3888,"marks":3889,"value":3890,"nodeType":1293},{},[],"Access other SaaS apps that use ",{"data":3892,"content":3894,"nodeType":1381},{"uri":3893},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/passwordless_logins/description.md",[3895],{"data":3896,"marks":3897,"value":3899,"nodeType":1293},{},[3898],{"type":1389},"passwordless logins",{"data":3901,"marks":3902,"value":37,"nodeType":1293},{},[],{"data":3904,"content":3905,"nodeType":1601},{},[3906],{"data":3907,"content":3908,"nodeType":1294},{},[3909,3913,3920],{"data":3910,"marks":3911,"value":3912,"nodeType":1293},{},[],"Access other SaaS apps via email ",{"data":3914,"content":3915,"nodeType":1381},{"uri":2677},[3916],{"data":3917,"marks":3918,"value":2680,"nodeType":1293},{},[3919],{"type":1389},{"data":3921,"marks":3922,"value":37,"nodeType":1293},{},[],{"data":3924,"content":3925,"nodeType":1294},{},[3926],{"data":3927,"marks":3928,"value":3929,"nodeType":1293},{},[],"Essentially, this can potentially lead to a compromise of every SaaS application accessible by the compromised user - all from the use of a poisoned tenant for an app with no particularly sensitive data or permissions.",{"data":3931,"content":3932,"nodeType":1456},{},[3933],{"data":3934,"marks":3935,"value":3015,"nodeType":1293},{},[],{"data":3937,"content":3938,"nodeType":1294},{},[3939],{"data":3940,"marks":3941,"value":3942,"nodeType":1293},{},[],"We have seen how two new SaaS-focused attack techniques can be combined into one more effective attack chain. This shows how a successful poisoned tenant attack for even a low risk app can still be a significant threat when combined with a SAMLjacking attack. ",{"data":3944,"content":3945,"nodeType":1294},{},[3946],{"data":3947,"marks":3948,"value":3949,"nodeType":1293},{},[],"This demonstrates even the least sensitive edge cases of SaaS sprawl can represent a vector to laterally move to compromise much more valuable assets. History taught us that protecting core production assets was not enough. Adversaries often achieved compromises via test systems and unsecured development resources. What we are seeing now is that this parallel exists in the SaaS-native world too. Therefore, we need to be protecting all SaaS resources with greater vigilance than their standalone sensitivity would indicate.",{"data":3951,"content":3952,"nodeType":1294},{},[3953],{"data":3954,"marks":3955,"value":3956,"nodeType":1293},{},[],"So what can be done about it? Well, like much in security, there is no silver bullet solution to this issue. SaaS apps are here to stay and are designed to be flexible, easy to sign up for and use. The key first step is always to get good visibility into the SaaS sprawl across your organization. If certain employees or teams start making use of a new SaaS app (or a new tenant for an existing one), that’s probably something your security team should be aware of so they can make sure it’s legitimate and being used as securely as possible. ",{"entries":3958},{"hyperlink":3959,"inline":3960,"block":3961},[],[],[3962,3971,3980,3988,3996,4004,4012,4020,4027],{"sys":3963,"__typename":3964,"title":3965,"youTubeUrl":3966,"imagePlaceholder":3967},{"id":3676},"ExternalVideo"," SAMLjacking a poisoned tenant demo","https://youtu.be/4gAeSxbycXU",{"url":3968,"width":3969,"height":3970},"https://images.ctfassets.net/y1cdw1ablpvd/4FbsSA4V25lkk95JLiezSx/600a821e26d50927a1467ee8075445eb/Screenshot_2023-08-17_at_12.20.11_PM.png",1976,992,{"sys":3972,"__typename":3973,"title":3974,"caption":3975,"layoutMode":118,"file":3976},{"id":3703},"Image","Nuclino team invite","Sharing link method of inviting new users  ",{"url":3977,"width":3978,"height":3979},"https://images.ctfassets.net/y1cdw1ablpvd/10AKFD5hMvE2PYWZ3LaulV/f323a8614df7a1c4f65f4207a5acc6a6/image8.png",1158,656,{"sys":3981,"__typename":3973,"title":3982,"caption":3983,"layoutMode":118,"file":3984},{"id":3709},"Nuclino email invite"," Email invite method of inviting new users",{"url":3985,"width":3986,"height":3987},"https://images.ctfassets.net/y1cdw1ablpvd/hqwOoJ3oacQLReve31WOU/ac949d7c0c440fba6e5bc382afce3e62/image3.png",1152,1104,{"sys":3989,"__typename":3973,"title":3990,"caption":3991,"layoutMode":118,"file":3992},{"id":3715},"Nuclino legit email invite","Example legit email a target user will receive from Nuclino when invited to join a workspace",{"url":3993,"width":3994,"height":3995},"https://images.ctfassets.net/y1cdw1ablpvd/2jPY0vvPllYE7A5mkZqQSc/9eb51364f71b9f4b0e1011214df7c4ac/image2.png",1999,1034,{"sys":3997,"__typename":3973,"title":3998,"caption":3999,"layoutMode":118,"file":4000},{"id":3735},"Nuclino account creation poisoned tenant","Account creation process the target user is prompted with on joining the workspace",{"url":4001,"width":4002,"height":4003},"https://images.ctfassets.net/y1cdw1ablpvd/2mOASAKuRVDJBG9Kxj49gT/63cc74501f0b68a093a179fe9181b40c/image7.png",507,599,{"sys":4005,"__typename":3973,"title":4006,"caption":4007,"layoutMode":118,"file":4008},{"id":3762},"Nuclino custom SAML settings","Custom SAML server settings pointing to a malicious SAML server",{"url":4009,"width":4010,"height":4011},"https://images.ctfassets.net/y1cdw1ablpvd/6ruhgorFea9H78bVp94Ux/558f3d93c65410580607f16048520820/image1.png",1524,828,{"sys":4013,"__typename":3973,"title":4014,"caption":4015,"layoutMode":118,"file":4016},{"id":3803},"Nuclino legit SSO linking email","SSO linking email sent by Nuclino to existing users",{"url":4017,"width":4018,"height":4019},"https://images.ctfassets.net/y1cdw1ablpvd/5joyiKTydkVP0754d1qlgi/5d036ae41c778f4d0f4f38bb539f91e4/image5.png",1516,826,{"sys":4021,"__typename":3973,"title":4022,"caption":4022,"layoutMode":118,"file":4023},{"id":3823},"Workspace login page post SSO configuration",{"url":4024,"width":4025,"height":4026},"https://images.ctfassets.net/y1cdw1ablpvd/1z3d7ItA95c1zDcXC4ufQa/d76037c7502ae405443c9824408f3ed2/image4.png",403,462,{"sys":4028,"__typename":3973,"title":4029,"caption":4029,"layoutMode":118,"file":4030},{"id":3843},"Fake Google SSO login page the target user is redirected to",{"url":4031,"width":4032,"height":4033},"https://images.ctfassets.net/y1cdw1ablpvd/OqmMgyW9UVuvu6NI31mYQ/22b2de1e4ab8d4a48a6b239ce00186dd/image6.png",673,895,"content:blog:samljacking-a-poisoned-tenant.json","json","content","blog/samljacking-a-poisoned-tenant.json","blog/samljacking-a-poisoned-tenant",1776359991302]