[{"data":1,"prerenderedAt":4295},["ShallowReactive",2],{"application-flags":3,"navbar":7,"always-visible-banner":95,"navbar-about-highlight":155,"navbar-resource-highlight":211,"use-case-page":256,"blog/guide-to-secure-browser-extension-deployment":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":3028,"content":3032,"_id":4290,"_type":4291,"_source":4292,"_file":4293,"_stem":4294,"_extension":4291},"/blog/guide-to-secure-browser-extension-deployment","blog",{"id":1280,"publishedAt":1281},"6sprbTRpfnTJsP3mGR2gKa","2025-01-14T13:09:53.616Z",{"json":1283},{"data":1284,"content":1285,"nodeType":1295},{},[1286],{"data":1287,"content":1288,"nodeType":1294},{},[1289],{"data":1290,"marks":1291,"value":1292,"nodeType":1293},{},[],"This blog is intended as a resource for other extension developers looking to improve the security of their extension in the wake of the Cyberhaven attacks. ","text","paragraph","document","Guide to secure browser extension deployment","How to securely deploy browser extensions to the web store","How extension developers can improve their security controls to prevent extension compromise.","2025-01-14T00:00:00.000Z","guide-to-secure-browser-extension-deployment",{"items":1302},[1303,1307],{"sys":1304,"name":1306},{"id":1305},"3pjES4THCIfSAwhGdNwBcy","Identity security",{"sys":1308,"name":1310},{"id":1309},"4ksQNCFeBf8H4QIORqpRLw","Detection & response",{"items":1312},[1313,2036,2380],{"__typename":1314,"sys":1315,"content":1317,"title":2018,"synopsis":2019,"hashTags":118,"publishedDate":2020,"slug":2021,"tagsCollection":2022,"authorsCollection":2028},"BlogPosts",{"id":1316},"6rflXTFCRMvmM8JU8ZPSCt",{"json":1318},{"nodeType":1295,"data":1319,"content":1320},{},[1321,1329,1336,1343,1350,1357,1364,1370,1377,1385,1392,1399,1415,1422,1429,1436,1443,1450,1457,1464,1473,1480,1487,1494,1501,1507,1516,1523,1530,1537,1544,1552,1559,1565,1572,1579,1604,1611,1644,1651,1667,1675,1682,1689,1696,1703,1756,1763,1769,1776,1783,1790,1798,1805,1812,1819,1853,1860,1895,1902,1909,1916,1923,1931,1938,1945,1952,1959,1966,1973,1980,1987,2006,2012],{"nodeType":1322,"data":1323,"content":1324},"heading-1",{},[1325],{"nodeType":1293,"value":1326,"marks":1327,"data":1328},"What is in an identity?",[],{},{"nodeType":1294,"data":1330,"content":1331},{},[1332],{"nodeType":1293,"value":1333,"marks":1334,"data":1335},"Like real identities, digital identities are a little hard to define. Formally it’s a mapping of a human into the digital world, but more often this term is used as synonymous with a credential (e.g. a username and password, a Multi-Factor Authentication (MFA) device, or a fingerprint) - the thing you use to prove you own the identity in an authentication process. When people say an identity is breached, they typically mean the credentials have been stolen.",[],{},{"nodeType":1294,"data":1337,"content":1338},{},[1339],{"nodeType":1293,"value":1340,"marks":1341,"data":1342},"This is a useful simplification, but bear in mind that reality is a bit more complex. For example - identities are typically tied to an account on an application (you want to login to Slack, Slack knows your password), but can also trust a third party (an Identity Provider or IdP) to authenticate an identity on your behalf in what’s known as federation (“login with Google” on Slack).",[],{},{"nodeType":1294,"data":1344,"content":1345},{},[1346],{"nodeType":1293,"value":1347,"marks":1348,"data":1349},"Surprisingly, it’s very common for modern apps to allow a user to authenticate to the same account using a local credential (a username and password) and a federated identity (e.g. the “login with Google” or “login with Microsoft” buttons) interchangeably.",[],{},{"nodeType":1294,"data":1351,"content":1352},{},[1353],{"nodeType":1293,"value":1354,"marks":1355,"data":1356},"That’s how you could wind up with multiple identities tied to a single account, or multiple accounts tied to a single federated identity. This is exactly what you see for real users - and every weird in-between case to boot.",[],{},{"nodeType":1322,"data":1358,"content":1359},{},[1360],{"nodeType":1293,"value":1361,"marks":1362,"data":1363},"The “new perimeter” … from a red-teamer’s perspective",[],{},{"nodeType":1294,"data":1365,"content":1366},{},[1367],{"nodeType":1293,"value":37,"marks":1368,"data":1369},[],{},{"nodeType":1294,"data":1371,"content":1372},{},[1373],{"nodeType":1293,"value":1374,"marks":1375,"data":1376},"To see how identities are the new thing, it helps to see how we got here.",[],{},{"nodeType":1378,"data":1379,"content":1380},"heading-2",{},[1381],{"nodeType":1293,"value":1382,"marks":1383,"data":1384},"The good old days",[],{},{"nodeType":1294,"data":1386,"content":1387},{},[1388],{"nodeType":1293,"value":1389,"marks":1390,"data":1391},"A couple of decades ago, I was just getting started as a red-teamer or penetration tester, or whatever you want to call it. The job is to do what real attackers do so clients could understand the attack techniques and better defend against them. The most stressful part of each project was the first step - getting initial access to the target - getting past their perimeter and into the (usually) soft internals.",[],{},{"nodeType":1294,"data":1393,"content":1394},{},[1395],{"nodeType":1293,"value":1396,"marks":1397,"data":1398},"A security perimeter is a boundary at which controls can be enforced. From an offensive perspective, a security perimeter is the same as an attack surface: where you can target initial attacks to gain a foothold, from which you can launch further attacks. I use perimeter and attack surface interchangeably going forward.",[],{},{"nodeType":1294,"data":1400,"content":1401},{},[1402,1406,1411],{"nodeType":1293,"value":1403,"marks":1404,"data":1405},"A perimeter can be physical, like a wall around a house, or virtual like the network boundary between an internal network and the internet where controls are things like firewalls. A couple of decades ago this internet network boundary was ",[],{},{"nodeType":1293,"value":1407,"marks":1408,"data":1410},"the",[1409],{"type":312},{},{"nodeType":1293,"value":1412,"marks":1413,"data":1414}," perimeter. As any decent red-teamer during this era, we had a pretty well-oiled process of mapping a client’s external network, scanning it for services, and then identifying and exploiting known vulnerabilities in those services. With this foothold on a target network, we could pivot to other, more sensitive internal systems.",[],{},{"nodeType":1294,"data":1416,"content":1417},{},[1418],{"nodeType":1293,"value":1419,"marks":1420,"data":1421},"Blue teams started having success with automated vulnerability scanning and patching programs, during this time. Then red teams responded by focusing on finding new vulnerabilities, especially in custom code like web applications. I fondly remember using techniques like xp_cmdshell with SQL injection to get access to breach perimeter systems and get access to internal networks. As DMZs, SDLC, vuln scanning and a dozen other tactics became generally adopted things improved to the point where those standard red-team playbooks weren’t working anymore. ",[],{},{"nodeType":1378,"data":1423,"content":1424},{},[1425],{"nodeType":1293,"value":1426,"marks":1427,"data":1428},"The shift to targeting users and their endpoints",[],{},{"nodeType":1294,"data":1430,"content":1431},{},[1432],{"nodeType":1293,"value":1433,"marks":1434,"data":1435},"About a decade ago, attackers realized it was easier to breach the perimeter and gain access to internal networks by simply targeting users with endpoints directly connected to the internal network. At the time the main techniques were email phishing and malicious web pages delivering exploits or straight malware. We put down Burp and our other web app testing tools and started spending our time crafting phishing emails with malicious macro-laden Microsoft Office documents for that initial entrypoint.",[],{},{"nodeType":1294,"data":1437,"content":1438},{},[1439],{"nodeType":1293,"value":1440,"marks":1441,"data":1442},"Defenders were on the back foot and even back then the “train your employees to spot attacks” advice felt as totally unrealistic as it’s now proved to be. The zeitgeist suggested, \"Attackers only need to succeed once; defenders must succeed every time.\" Defenders were blind and the focus was firmly on detection. Much much better telemetry was needed, which spawned the endpoint detection and response (EDR) revolution. ",[],{},{"nodeType":1294,"data":1444,"content":1445},{},[1446],{"nodeType":1293,"value":1447,"marks":1448,"data":1449},"EDR required immediate changes to red team tactics, and together with better endpoint security defaults, automatic OS updates (that actually started working) and memory exploit protections (things like DEP and ASLR) the timelines for successful attacks were stretching a lot.",[],{},{"nodeType":1378,"data":1451,"content":1452},{},[1453],{"nodeType":1293,"value":1454,"marks":1455,"data":1456},"The modern perimeter",[],{},{"nodeType":1294,"data":1458,"content":1459},{},[1460],{"nodeType":1293,"value":1461,"marks":1462,"data":1463},"Attackers have had to change tactics yet again, due to the rising cost of attacking endpoints and the fact that data has moved off endpoints and internal networks and onto cloud systems or Software as a Service (SaaS) applications.",[],{},{"nodeType":1465,"data":1466,"content":1472},"embedded-entry-block",{"target":1467},{"sys":1468},{"id":1469,"type":1470,"linkType":1471},"79wGG37CY7aBdRrdjO5eQY","Link","Entry",[],{"nodeType":1294,"data":1474,"content":1475},{},[1476],{"nodeType":1293,"value":1477,"marks":1478,"data":1479},"Identities have always existed as a target for attackers and were a critical part of the kill chain, but they used to be protected by some other perimeter, be that a network perimeter or an endpoint perimeter. ",[],{},{"nodeType":1294,"data":1481,"content":1482},{},[1483],{"nodeType":1293,"value":1484,"marks":1485,"data":1486},"This has fundamentally changed as modern work applications are now directly exposed to the internet  - and the only thing needed to access these apps are identities. That means identities are now no longer the second or third target but the initial target, the new perimeter.",[],{},{"nodeType":1322,"data":1488,"content":1489},{},[1490],{"nodeType":1293,"value":1491,"marks":1492,"data":1493},"Securing the (identity) perimeter",[],{},{"nodeType":1294,"data":1495,"content":1496},{},[1497],{"nodeType":1293,"value":1498,"marks":1499,"data":1500},"To understand how we can protect this new perimeter, I’ll discuss the general approach to securing any perimeter, and then how this applies to the identity attack surface.",[],{},{"nodeType":1465,"data":1502,"content":1506},{"target":1503},{"sys":1504},{"id":1505,"type":1470,"linkType":1471},"c0YSk60vVULBPorLkkBPL",[],{"nodeType":1378,"data":1508,"content":1509},{},[1510],{"nodeType":1293,"value":1511,"marks":1512,"data":1515},"1. Map your perimeter",[1513],{"type":1514},"bold",{},{"nodeType":1294,"data":1517,"content":1518},{},[1519],{"nodeType":1293,"value":1520,"marks":1521,"data":1522},"It’s impossible to secure what you don’t know about. Whether your perimeter is made of network services, user endpoints or identities, you must know what they are before you can implement controls to protect them, and crucially, verify those controls are effective.",[],{},{"nodeType":1294,"data":1524,"content":1525},{},[1526],{"nodeType":1293,"value":1527,"marks":1528,"data":1529},"In a traditional network setting, you might ask IT to inventory public network ranges, domains you own, and internet facing servers and services to get visibility into your attack surface. This is a pretty complex task and lots of the static inventory will quickly become outdated and incomplete. That’s why many orgs will perform network discovery activities to find internet-exposed network services, using anything from basic network scans to find onsite or self-hosted services to querying APIs in cloud infrastructure platforms (like AWS or Azure).",[],{},{"nodeType":1294,"data":1531,"content":1532},{},[1533],{"nodeType":1293,"value":1534,"marks":1535,"data":1536},"There are parallels in the identity perimeter space, like querying Identity Providers (IdPs like Entra/AzureAD or Okta) for federated identities to map the attack surface. Unfortunately there is no equivalent to scanning your public network ranges for identities, since you can’t scan or query an app to find accounts on your domain (would that we could!). This problem is compounded by the fact that while IT and developers are typically the only ones that can create and expose new network services, most apps allow any employee to create a new identity by signing up to a free account outside your SSO solution.",[],{},{"nodeType":1294,"data":1538,"content":1539},{},[1540],{"nodeType":1293,"value":1541,"marks":1542,"data":1543},"Knowing your perimeter without a technical solution is going to be a very hit and miss affair. To have confidence that you understand your identity perimeter, you need an inventory solution that can discover SSO identities (the easy part), as well as identities created outside SSO, like local accounts those employees created just by signing up. To secure identities it’s not enough to know that an employee is accessing an app website, you need to know if they are logged in and what identity they are using (is the username a company email or personal gmail?) or you’ll be dealing with endless false positives.",[],{},{"nodeType":1378,"data":1545,"content":1546},{},[1547],{"nodeType":1293,"value":1548,"marks":1549,"data":1551},"2. Reduce the size of your attack surface",[1550],{"type":1514},{},{"nodeType":1294,"data":1553,"content":1554},{},[1555],{"nodeType":1293,"value":1556,"marks":1557,"data":1558},"Once you have an idea of what makes up your perimeter, it’s generally a good idea to make it as small as possible. If you halve the number of network services an attacker can target, that means you can spend twice as long per service to secure the ones that remain - the same goes for identities!",[],{},{"nodeType":1465,"data":1560,"content":1564},{"target":1561},{"sys":1562},{"id":1563,"type":1470,"linkType":1471},"2XZ5vADLzuEnc2aAdZrkbO",[],{"nodeType":1294,"data":1566,"content":1567},{},[1568],{"nodeType":1293,"value":1569,"marks":1570,"data":1571},"To start this process, remove unused or unnecessary targets from the perimeter. ",[],{},{"nodeType":1294,"data":1573,"content":1574},{},[1575],{"nodeType":1293,"value":1576,"marks":1577,"data":1578},"On a network perimeter that might mean:",[],{},{"nodeType":1580,"data":1581,"content":1582},"unordered-list",{},[1583,1594],{"nodeType":1584,"data":1585,"content":1586},"list-item",{},[1587],{"nodeType":1294,"data":1588,"content":1589},{},[1590],{"nodeType":1293,"value":1591,"marks":1592,"data":1593},"Shutting down unused servers or",[],{},{"nodeType":1584,"data":1595,"content":1596},{},[1597],{"nodeType":1294,"data":1598,"content":1599},{},[1600],{"nodeType":1293,"value":1601,"marks":1602,"data":1603},"Firewalling services that don’t need to be exposed to the internet.",[],{},{"nodeType":1294,"data":1605,"content":1606},{},[1607],{"nodeType":1293,"value":1608,"marks":1609,"data":1610},"In the identity space, you might:",[],{},{"nodeType":1580,"data":1612,"content":1613},{},[1614,1624,1634],{"nodeType":1584,"data":1615,"content":1616},{},[1617],{"nodeType":1294,"data":1618,"content":1619},{},[1620],{"nodeType":1293,"value":1621,"marks":1622,"data":1623},"Make sure new accounts use existing federated identities,",[],{},{"nodeType":1584,"data":1625,"content":1626},{},[1627],{"nodeType":1294,"data":1628,"content":1629},{},[1630],{"nodeType":1293,"value":1631,"marks":1632,"data":1633},"Delete or disable unused SSO identities on your IdP, or ",[],{},{"nodeType":1584,"data":1635,"content":1636},{},[1637],{"nodeType":1294,"data":1638,"content":1639},{},[1640],{"nodeType":1293,"value":1641,"marks":1642,"data":1643},"Manually delete unnecessary user accounts on work apps.",[],{},{"nodeType":1294,"data":1645,"content":1646},{},[1647],{"nodeType":1293,"value":1648,"marks":1649,"data":1650},"Manually deleting an unmanaged local identity on an app, e.g. after an employee leaves your org, is a (very) non-trivial task. This is because you often don’t known of the accounts and don't have access to manage the account (the IT or security team aren’t admin on the app tenant where it exists). You might have access to the user’s mailbox and be able to get access to the account by going through an account recovery flow and delete the account that way - but this is very time consuming and even more difficult if the user enabled MFA (which is what you want them to do!).",[],{},{"nodeType":1294,"data":1652,"content":1653},{},[1654,1658,1663],{"nodeType":1293,"value":1655,"marks":1656,"data":1657},"Given the difficulty of managing these accounts, a better strategy is to ",[],{},{"nodeType":1293,"value":1659,"marks":1660,"data":1662},"make sure they never exist in the first place",[1661],{"type":1514},{},{"nodeType":1293,"value":1664,"marks":1665,"data":1666},". If you find you have lots of identities on an app you may decide the risk warrants IT effort and you can take over management of the app and integrate it with your IdP solution - or ask employees to use an alternative app instead. You can also use browser-based technical controls to prevent users from creating local identities in the first place.",[],{},{"nodeType":1378,"data":1668,"content":1669},{},[1670],{"nodeType":1293,"value":1671,"marks":1672,"data":1674},"3. Harden the perimeter",[1673],{"type":1514},{},{"nodeType":1294,"data":1676,"content":1677},{},[1678],{"nodeType":1293,"value":1679,"marks":1680,"data":1681},"Once you’ve made the perimeter as small as possible, the next step is to make it more difficult to breach that perimeter. Similar to the other objectives, but especially here, there are two sides to this. First the implementation; you have processes, configuration standards, and tools to make sure network services are updated and securely configured. Virtually no one achieves success simply through implementing good processes, you must continually verify that these processes work and that it continues to work.",[],{},{"nodeType":1294,"data":1683,"content":1684},{},[1685],{"nodeType":1293,"value":1686,"marks":1687,"data":1688},"To verify network controls are in place and working you do something like vulnerability scanning, where you check the perimeter for known vulnerabilities that an attacker could exploit and gain a foothold on your internal network. You might even have a risk profile that means you are concerned about more targeted attacks and hire pentesters or run a bug-bounty program to find weaknesses that can’t be automatically discovered. Very few organizations with an external network of any significant size perform a vulnerability scan for the first time - even a low-quality automated one - and find no serious issues. ",[],{},{"nodeType":1294,"data":1690,"content":1691},{},[1692],{"nodeType":1293,"value":1693,"marks":1694,"data":1695},"In the identity space, the status-quo is to be content with making policies and implementing and configuring an SSO system without explicit verification that it works as it should. We should be following the same level of verification processes for the identity perimeter as we do/did for the endpoint and network perimeter. ",[],{},{"nodeType":1294,"data":1697,"content":1698},{},[1699],{"nodeType":1293,"value":1700,"marks":1701,"data":1702},"In this case, the vulnerabilities we are looking for aren’t unpatched systems or zero-days. Instead, we’re looking for:",[],{},{"nodeType":1580,"data":1704,"content":1705},{},[1706,1716,1726,1736,1746],{"nodeType":1584,"data":1707,"content":1708},{},[1709],{"nodeType":1294,"data":1710,"content":1711},{},[1712],{"nodeType":1293,"value":1713,"marks":1714,"data":1715},"Accounts without MFA, ",[],{},{"nodeType":1584,"data":1717,"content":1718},{},[1719],{"nodeType":1294,"data":1720,"content":1721},{},[1722],{"nodeType":1293,"value":1723,"marks":1724,"data":1725},"Those using weak MFA methods that make them phish-able,",[],{},{"nodeType":1584,"data":1727,"content":1728},{},[1729],{"nodeType":1294,"data":1730,"content":1731},{},[1732],{"nodeType":1293,"value":1733,"marks":1734,"data":1735},"Employees re-using the same password across multiple accounts, ",[],{},{"nodeType":1584,"data":1737,"content":1738},{},[1739],{"nodeType":1294,"data":1740,"content":1741},{},[1742],{"nodeType":1293,"value":1743,"marks":1744,"data":1745},"Passwords that exist in public breach dumps,",[],{},{"nodeType":1584,"data":1747,"content":1748},{},[1749],{"nodeType":1294,"data":1750,"content":1751},{},[1752],{"nodeType":1293,"value":1753,"marks":1754,"data":1755},"Identities that should be in SSO but aren’t.",[],{},{"nodeType":1294,"data":1757,"content":1758},{},[1759],{"nodeType":1293,"value":1760,"marks":1761,"data":1762},"It’s not yet standard practice to test or verify that identity controls are in place, but if the past has taught us anything it soon will be. You'd be surprised how many times we find that the MFA policies security teams thought they had in place, actually aren't.",[],{},{"nodeType":1465,"data":1764,"content":1768},{"target":1765},{"sys":1766},{"id":1767,"type":1470,"linkType":1471},"4w5UZcf5hJ7ADuoT5W2tkC",[],{"nodeType":1294,"data":1770,"content":1771},{},[1772],{"nodeType":1293,"value":1773,"marks":1774,"data":1775},"Part of the reason for this lack of verification is due to lack of awareness. While identities used to be an internal thing that we protected with the network perimeter, online identities today are external and have slowly become the perimeter, almost without anyone noticing. While online identities are external, they are absolutely part of your attack surface and must be controlled and hardened to some extent.",[],{},{"nodeType":1294,"data":1777,"content":1778},{},[1779],{"nodeType":1293,"value":1780,"marks":1781,"data":1782},"Verifying controls is also really difficult, which is another reason we may not be making it a crucial step in the process. Customers feel that SSO solutions are security solutions and using security tools on security tools feel wrong. But it’s no different to vuln-scanning to ensure your firewalls are patched and don’t have default passwords. ",[],{},{"nodeType":1294,"data":1784,"content":1785},{},[1786],{"nodeType":1293,"value":1787,"marks":1788,"data":1789},"Verification can also be legally challenging because it’s not yet clear whether pentesters or red teamers are allowed to target online identities during assessments. Often these assets aren’t considered in scope during client assessments. This means these vulnerabilities rarely end up in pentest reports and therefore don’t enter many organization’s security or risk management processes. Since you own the identities (even on a third party identity solution or app) and are allowed to grant permission to the red team to use these identities, it seems to me that adding identities to the scope is distinct from bug hunting or vulnerability research on these apps (which is the legally challenging aspect). I would strongly recommend that you discuss including online identities with the red team as part of your next pentest.",[],{},{"nodeType":1378,"data":1791,"content":1792},{},[1793],{"nodeType":1293,"value":1794,"marks":1795,"data":1797},"4. Limit breach impact",[1796],{"type":1514},{},{"nodeType":1294,"data":1799,"content":1800},{},[1801],{"nodeType":1293,"value":1802,"marks":1803,"data":1804},"The unfortunate reality is that regardless of what we do to harden a perimeter, there will always be a chance that breaches occur. The goal is to reduce that risk by minimizing the attack surface and hardening identities. ",[],{},{"nodeType":1294,"data":1806,"content":1807},{},[1808],{"nodeType":1293,"value":1809,"marks":1810,"data":1811},"When an attacker does get a foothold (by compromising an identity, for instance) you need to to restrict their further actions. Risk involves both the likelihood and the impact of an event. Previously, we focused on reducing the likelihood of breaches. Now, we're also aiming to lessen the impact if they do occur.",[],{},{"nodeType":1294,"data":1813,"content":1814},{},[1815],{"nodeType":1293,"value":1816,"marks":1817,"data":1818},"In our network perimeter story, we might think of using a DMZ network to restrict network access for systems exposed to the internet. A common example of a failure to limit impact on a Windows endpoint breach is having service accounts on all endpoints with Domain Administrator permission - which effectively turns a breach of any endpoint very quickly into a breach of every endpoint.",[],{},{"nodeType":1294,"data":1820,"content":1821},{},[1822,1826,1837,1841,1849],{"nodeType":1293,"value":1823,"marks":1824,"data":1825},"In an identity context, we need to think not only of the direct effect of an identity compromise (e.g. what data can this account read), but also of further lateral movement attacks. Consider this ",[],{},{"nodeType":1827,"data":1828,"content":1830},"hyperlink",{"uri":1829},"https://pushsecurity.com/blog/oktajacking/",[1831],{"nodeType":1293,"value":1832,"marks":1833,"data":1836},"Oktajacking",[1834],{"type":1835},"underline",{},{"nodeType":1293,"value":1838,"marks":1839,"data":1840}," case study where a breached identity with admin permissions on an otherwise low-risk app which is connected to SSO can be used to perform a ",[],{},{"nodeType":1827,"data":1842,"content":1844},{"uri":1843},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/samljacking/description.md",[1845],{"nodeType":1293,"value":1846,"marks":1847,"data":1848},"SAMLjacking",[],{},{"nodeType":1293,"value":1850,"marks":1851,"data":1852}," attack that compromises SSO credentials for all other users of the same low-risk app.",[],{},{"nodeType":1294,"data":1854,"content":1855},{},[1856],{"nodeType":1293,"value":1857,"marks":1858,"data":1859},"In contrast to traditional network or endpoint breaches, identity breaches are scoped to the permissions that the compromised account has. If an identity is compromised, whatever that identity is authorized to do is the scope of the breach. For example:",[],{},{"nodeType":1580,"data":1861,"content":1862},{},[1863,1873],{"nodeType":1584,"data":1864,"content":1865},{},[1866],{"nodeType":1294,"data":1867,"content":1868},{},[1869],{"nodeType":1293,"value":1870,"marks":1871,"data":1872},"If an identity with read access to a code repository was breached you might consider that all the source code (hopefully no secrets!) they had read access to was taken unless you can prove otherwise. This is often more difficult than you expect - last time I checked Github (by far the world's most popular source code repository app) logs didn’t include, for example, zipped repo downloads. ",[],{},{"nodeType":1584,"data":1874,"content":1875},{},[1876],{"nodeType":1294,"data":1877,"content":1878},{},[1879,1883,1891],{"nodeType":1293,"value":1880,"marks":1881,"data":1882},"If an identity with write permission was compromised, you would also need to check all commits/changes to ensure no code was backdoored. The same applies for other apps - think of an identity with write access to a wiki being used to ",[],{},{"nodeType":1827,"data":1884,"content":1886},{"uri":1885},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/link_backdooring/description.md",[1887],{"nodeType":1293,"value":1888,"marks":1889,"data":1890},"drop links to phishing pages",[],{},{"nodeType":1293,"value":1892,"marks":1893,"data":1894},".",[],{},{"nodeType":1294,"data":1896,"content":1897},{},[1898],{"nodeType":1293,"value":1899,"marks":1900,"data":1901},"For primary cloud collaboration platforms with complex data types (think O365 or Google Workspace) your IT team is likely already managing policies to limit the data that a user can read. For primary cloud hosting platforms your DevOps teams are likely maintaining policies to manage privileged access to production systems. The situation is typically very different for the few dozen high risk “core apps” beyond the 2 or 3 apps that receive a lot of attention and have dedicated teams.",[],{},{"nodeType":1294,"data":1903,"content":1904},{},[1905],{"nodeType":1293,"value":1906,"marks":1907,"data":1908},"Starting to review roles and permissions across the few dozen or so high-risk apps that are not as actively managed (or more likely self-managed by the teams using them) is a good way to start addressing the residual risk. The good news here is that most modern work apps use a much simpler permission model based largely around predefined roles like Owner, Admin, or Employee or similar variations. This means less flexibility, but also makes it a lot easier to manage permissions for identities on these apps - on balance, a good trade!",[],{},{"nodeType":1294,"data":1910,"content":1911},{},[1912],{"nodeType":1293,"value":1913,"marks":1914,"data":1915},"Consider this as part of your identity and access management review process. Something that used to be scoped around Active Directory group membership, but in a modern online identity context, now must be applied across many different work apps. ",[],{},{"nodeType":1294,"data":1917,"content":1918},{},[1919],{"nodeType":1293,"value":1920,"marks":1921,"data":1922},"Unless you want to try to get access to each tenant of each app and normalize this data into a mega-spreadsheet, you need access to this data in your identity inventory. This is an especially big challenge as teams find many of the apps they care about support authentication through SSO, but not authorization.",[],{},{"nodeType":1378,"data":1924,"content":1925},{},[1926],{"nodeType":1293,"value":1927,"marks":1928,"data":1930},"5. Detect and respond to attacks",[1929],{"type":1514},{},{"nodeType":1294,"data":1932,"content":1933},{},[1934],{"nodeType":1293,"value":1935,"marks":1936,"data":1937},"Your last line of defense in protecting a perimeter is to monitor for attacks. It’s typically when controls and detections fail that breaches end in the news. ",[],{},{"nodeType":1294,"data":1939,"content":1940},{},[1941],{"nodeType":1293,"value":1942,"marks":1943,"data":1944},"Telemetry is the core building block of attack detection. Typically, you might ingest audit or event logs into a SIEM system. To detect attacks against identities, you’ll typically want to start with telemetry from SSO or IdP logs. These will provide some minimal coverage of many of the IT managed apps, but unfortunately attacks are more likely to happen on apps that aren’t SSO integrated, so we need a strategy to cover these as well. An identity inventory is a critical starting point to identify non-SSO apps from which you can collect event logs, as well as giving you visibility of the identities that are not covered.",[],{},{"nodeType":1294,"data":1946,"content":1947},{},[1948],{"nodeType":1293,"value":1949,"marks":1950,"data":1951},"Monitoring breaches for hosted work apps is different from other domains, largely because you are almost totally reliant on the app vendor to produce the telemetry. Unfortunately (I suspect primarily due to lack of customer demand), many apps don’t offer any centralized logging functionality at all, and those that do offer limited audit logs, or only do so on the top tier “enterprise” license plans. ",[],{},{"nodeType":1294,"data":1953,"content":1954},{},[1955],{"nodeType":1293,"value":1956,"marks":1957,"data":1958},"In the network or endpoint world, when you need more telemetry you have all the access you need to install software or hardware to generate that additional telemetry. You could put a network monitoring appliance in-line with your internet gateways or install an endpoint (EDR) agent to generate more telemetry than your router or endpoint OS will generate. You can add a proxy in front of an app for your users, but (except for a very small number of highly configurable apps) you can’t make attackers go through your proxy.",[],{},{"nodeType":1294,"data":1960,"content":1961},{},[1962],{"nodeType":1293,"value":1963,"marks":1964,"data":1965},"What you can do, however, is generate additional telemetry on what happens to your employee’s identities in the browser. This is possible through browser extensions which can be managed through the enterprise management features available for all mainstream browsers (Chrome, Edge, Firefox, Safari, Brave etc. etc.). This is incredibly powerful, and useful in directly detecting a range of identity attacks like phishing (is an employee trying to enter an SSO password into an app that isn’t the SSO login page?), but also through correlations with existing application or IdP logs that indicate account takeover (e.g. has there been a login event that wasn’t observed through the employee’s browser as well).",[],{},{"nodeType":1322,"data":1967,"content":1968},{},[1969],{"nodeType":1293,"value":1970,"marks":1971,"data":1972},"Same, but different",[],{},{"nodeType":1294,"data":1974,"content":1975},{},[1976],{"nodeType":1293,"value":1977,"marks":1978,"data":1979},"Whether we’re looking at the Verizon DBIR or just keeping up with security news, it’s clear that identity-based attacks are already responsible for a significant number of breaches. Attackers have started shifting their focus and security teams need to recognize this shift and adapt.",[],{},{"nodeType":1294,"data":1981,"content":1982},{},[1983],{"nodeType":1293,"value":1984,"marks":1985,"data":1986},"This doesn’t require that we fundamentally rethink security or anything that radical, just that we apply what we’ve learned over the last couple of decades to this new domain. There are some new technologies and protocols to understand, new tools are needed, but the fundamentals like authentication and authorization are already familiar to any security professional. ",[],{},{"nodeType":1294,"data":1988,"content":1989},{},[1990,1994,2002],{"nodeType":1293,"value":1991,"marks":1992,"data":1993},"If you follow what I’ve outlined here, a lot of the decisions we’ve made with building Push will make perfect sense. For example, you can’t make API integrations with apps to find identities when you don’t know about the apps or identities yet, so we needed a unique new data source. We use our own custom-built browser extension that’s force-deployed to your workforce, so we can observe employee identities as they are used in the browser. This gives us some pretty unique capabilities. If you found this interesting, follow us on ",[],{},{"nodeType":1827,"data":1995,"content":1997},{"uri":1996},"https://www.linkedin.com/company/push-security",[1998],{"nodeType":1293,"value":1999,"marks":2000,"data":2001},"Linkedin",[],{},{"nodeType":1293,"value":2003,"marks":2004,"data":2005}," for more detailed blogs as we unpack this topic.",[],{},{"nodeType":1465,"data":2007,"content":2011},{"target":2008},{"sys":2009},{"id":2010,"type":1470,"linkType":1471},"H7m9DHmbE945FO193oLYP",[],{"nodeType":1294,"data":2013,"content":2014},{},[2015],{"nodeType":1293,"value":37,"marks":2016,"data":2017},[],{},"5 ways to defeat identity-based attacks","In this blog post we will cover what identities are, how we secure perimeters in general, and and how this maps to the identity space.\n","2024-02-26T00:00:00.000Z","5-ways-to-defeat-identity-based-attacks",{"items":2023},[2024,2026],{"sys":2025,"name":1306},{"id":1305},{"sys":2027,"name":1310},{"id":1309},{"items":2029},[2030],{"fullName":2031,"firstName":2032,"jobTitle":2033,"profilePicture":2034},"Jacques Louw","Jacques","Co-founder / CRO",{"url":2035},"https://images.ctfassets.net/y1cdw1ablpvd/39m8bektV23lnCRcEq0G8h/2a08f6276a50744f1a4b499b273f6bb2/Push_Founders_at_Cahoots_October_28_2022_by_Doug_Coombe-21.jpg",{"__typename":1314,"sys":2037,"content":2039,"title":2362,"synopsis":2363,"hashTags":118,"publishedDate":2364,"slug":2365,"tagsCollection":2366,"authorsCollection":2372},{"id":2038},"75wcCkoZEKwEMl7zBmDMtT",{"json":2040},{"data":2041,"content":2042,"nodeType":1295},{},[2043,2050,2057,2077,2097,2120,2127,2143,2150,2157,2164,2168,2175,2195,2214,2220,2240,2247,2254,2260,2267,2273,2306,2313,2333,2336,2343,2350,2356],{"data":2044,"content":2045,"nodeType":1322},{},[2046],{"data":2047,"marks":2048,"value":2049,"nodeType":1293},{},[],"Preventing credential attacks with automated password resets ",{"data":2051,"content":2052,"nodeType":1294},{},[2053],{"data":2054,"marks":2055,"value":2056,"nodeType":1293},{},[],"Preventing credential attacks is not an easy task, especially if you’re a member of the security team tasked with protecting some of your organization’s most valued assets: SSO identities.",{"data":2058,"content":2059,"nodeType":1294},{},[2060,2064,2073],{"data":2061,"marks":2062,"value":2063,"nodeType":1293},{},[],"IdP accounts such as a user’s Okta, Entra, or Google Workspace login are the most lucrative identities that an attacker can take over. By compromising an SSO identity, attackers not only gain access to the account itself, but also any downstream apps accessed via SSO – and the juicy data and functionality stored there. This was evidenced earlier this year when ",{"data":2065,"content":2067,"nodeType":1827},{"uri":2066},"https://www.bleepingcomputer.com/news/security/okta-warns-of-unprecedented-credential-stuffing-attacks-on-customers/",[2068],{"data":2069,"marks":2070,"value":2072,"nodeType":1293},{},[2071],{"type":1835},"Okta users experienced unprecedented levels of credential stuffing attacks",{"data":2074,"marks":2075,"value":2076,"nodeType":1293},{},[],". ",{"data":2078,"content":2079,"nodeType":1294},{},[2080,2084,2093],{"data":2081,"marks":2082,"value":2083,"nodeType":1293},{},[],"You might also be surprised to learn that even these most critical accounts have serious security gaps. For example, ",{"data":2085,"content":2087,"nodeType":1827},{"uri":2086},"https://pushsecurity.com/blog/how-many-vulnerable-identities-do-you-have/",[2088],{"data":2089,"marks":2090,"value":2092,"nodeType":1293},{},[2091],{"type":1835},"in a recent study we identified that",{"data":2094,"marks":2095,"value":2096,"nodeType":1293},{},[],":",{"data":2098,"content":2099,"nodeType":1580},{},[2100,2110],{"data":2101,"content":2102,"nodeType":1584},{},[2103],{"data":2104,"content":2105,"nodeType":1294},{},[2106],{"data":2107,"marks":2108,"value":2109,"nodeType":1293},{},[],"1 in 5 IdP accounts does not have an MFA method set, leaving them exposed to single-factor compromises using stolen credentials.",{"data":2111,"content":2112,"nodeType":1584},{},[2113],{"data":2114,"content":2115,"nodeType":1294},{},[2116],{"data":2117,"marks":2118,"value":2119,"nodeType":1293},{},[],"10% of IdP accounts share a password that is used to access other identities. (We’re not talking about the actual SSO process here – many users will use the same password as they do to log into their Okta or Entra as they do personal accounts such as shopping or food delivery. Yes, really.)  ",{"data":2121,"content":2122,"nodeType":1294},{},[2123],{"data":2124,"marks":2125,"value":2126,"nodeType":1293},{},[],"It’s a constant worry that your CFO’s Microsoft, Google, or Okta credentials are going to show up in the next big darkweb password dump. Ideally you’d want to prevent users from reusing passwords across multiple services. That’s why your information security policy is mandating password manager use, right?",{"data":2128,"content":2129,"nodeType":1294},{},[2130,2134,2139],{"data":2131,"marks":2132,"value":2133,"nodeType":1293},{},[],"No matter how many policies you have in place, ",{"data":2135,"marks":2136,"value":2138,"nodeType":1293},{},[2137],{"type":1835},"people will inevitably use the same passwords across multiple services",{"data":2140,"marks":2141,"value":2142,"nodeType":1293},{},[],". But who can blame them? Having to remember multiple passwords is a drag, especially when they find they can’t log into their company’s password manager from their home computers… The next best thing is to just reuse your Entra or Okta password across all services, right?!",{"data":2144,"content":2145,"nodeType":1294},{},[2146],{"data":2147,"marks":2148,"value":2149,"nodeType":1293},{},[],"At Push we realize that mistakes happen. That's why it's important to look out for when critical credentials are entered into a dodgy ecommerce platform, or the next entry lands on haveibeenpwnd.com.",{"data":2151,"content":2152,"nodeType":1294},{},[2153],{"data":2154,"marks":2155,"value":2156,"nodeType":1293},{},[],"By quickly forcing a password change when an SSO password is reused or breached, we can minimize the chance of it being abused by attackers. ",{"data":2158,"content":2159,"nodeType":1294},{},[2160],{"data":2161,"marks":2162,"value":2163,"nodeType":1293},{},[],"But how will you know when a password is reused or compromised? ",{"data":2165,"content":2166,"nodeType":2167},{},[],"hr",{"data":2169,"content":2170,"nodeType":1322},{},[2171],{"data":2172,"marks":2173,"value":2174,"nodeType":1293},{},[],"Using Push data to alert on password vulnerabilities ",{"data":2176,"content":2177,"nodeType":1294},{},[2178,2182,2191],{"data":2179,"marks":2180,"value":2181,"nodeType":1293},{},[],"Enter the Push browser extension. Push fingerprints passwords (",{"data":2183,"content":2185,"nodeType":1827},{"uri":2184},"https://pushsecurity.com/help/how-does-the-push-browser-extension-securely-track-reused-passwords",[2186],{"data":2187,"marks":2188,"value":2190,"nodeType":1293},{},[2189],{"type":1835},"in a safe way",{"data":2192,"marks":2193,"value":2194,"nodeType":1293},{},[],") as they are used by employees to access apps in their browsers. ",{"data":2196,"content":2197,"nodeType":1294},{},[2198,2202,2211],{"data":2199,"marks":2200,"value":2201,"nodeType":1293},{},[],"When a user logs into an app using credentials that they’ve previously used to login to another account, Push fires off an alert. ",{"data":2203,"content":2205,"nodeType":1827},{"uri":2204},"https://pushsecurity.com/blog/verified-stolen-credential-detection/",[2206],{"data":2207,"marks":2208,"value":2210,"nodeType":1293},{},[2209],{"type":1835},"We can also detect when an active password is stolen and appears on a criminal forum",{"data":2212,"marks":2213,"value":2076,"nodeType":1293},{},[],{"data":2215,"content":2219,"nodeType":1465},{"target":2216},{"sys":2217},{"id":2218,"type":1470,"linkType":1471},"5He3FB0NT3D3lcbwiVtn02",[],{"data":2221,"content":2222,"nodeType":1294},{},[2223,2227,2236],{"data":2224,"marks":2225,"value":2226,"nodeType":1293},{},[],"If you’ve ",{"data":2228,"content":2230,"nodeType":1827},{"uri":2229},"https://pushsecurity.com/help/audience/administrators/docs/connect-to-siem-or-soar/#start",[2231],{"data":2232,"marks":2233,"value":2235,"nodeType":1293},{},[2234],{"type":1835},"connected Push to your SIEM or SOAR",{"data":2237,"marks":2238,"value":2239,"nodeType":1293},{},[],", you’ll be able to create a workflow to respond automatically. ",{"data":2241,"content":2242,"nodeType":1378},{},[2243],{"data":2244,"marks":2245,"value":2246,"nodeType":1293},{},[],"Automating password resets in your SIEM using Push webhooks",{"data":2248,"content":2249,"nodeType":1294},{},[2250],{"data":2251,"marks":2252,"value":2253,"nodeType":1293},{},[],"You can automate password resets for accounts by ingesting this information via webhook into a SIEM, generating an alert. This in turn can fire off another webhook or workflow that sets the ‘force password change on next logon’ attribute on the user’s account.",{"data":2255,"content":2259,"nodeType":1465},{"target":2256},{"sys":2257},{"id":2258,"type":1470,"linkType":1471},"5WFLIVm4DWcuH7a6owQlR1",[],{"data":2261,"content":2262,"nodeType":1294},{},[2263],{"data":2264,"marks":2265,"value":2266,"nodeType":1293},{},[],"Below is some POC python code we use internally. This is specific to Google Workspace, but the general logic should apply to any IdP that allows you to perform these actions via API calls.",{"data":2268,"content":2272,"nodeType":1465},{"target":2269},{"sys":2270},{"id":2271,"type":1470,"linkType":1471},"4YNirRo8BlRrgGKwwzXE8R",[],{"data":2274,"content":2275,"nodeType":1294},{},[2276,2280,2289,2293,2302],{"data":2277,"marks":2278,"value":2279,"nodeType":1293},{},[],"You can perform similar functions in Microsoft Entra ID by modifying the user's ",{"data":2281,"content":2283,"nodeType":1827},{"uri":2282},"https://learn.microsoft.com/en-us/graph/api/user-update?view=graph-rest-1.0&tabs=http#:~:text=DisablePasswordExpiration%2C%20DisableStrongPassword.-,passwordProfile,-PasswordProfile",[2284],{"data":2285,"marks":2286,"value":2288,"nodeType":1293},{},[2287],{"type":1835},"passwordProfile",{"data":2290,"marks":2291,"value":2292,"nodeType":1293},{},[]," attribute via Microsoft Graph API, or in Okta via the ",{"data":2294,"content":2296,"nodeType":1827},{"uri":2295},"https://developer.okta.com/docs/api/openapi/okta-management/management/tag/UserCred/#tag/UserCred/operation/expirePassword",[2297],{"data":2298,"marks":2299,"value":2301,"nodeType":1293},{},[2300],{"type":1835},"expire_password",{"data":2303,"marks":2304,"value":2305,"nodeType":1293},{},[]," API endpoint.",{"data":2307,"content":2308,"nodeType":1294},{},[2309],{"data":2310,"marks":2311,"value":2312,"nodeType":1293},{},[],"You aren’t limited to just IdP accounts either – any app with an API that provides this functionality can be configured for automated password resets using Push data. ",{"data":2314,"content":2315,"nodeType":1294},{},[2316,2320,2329],{"data":2317,"marks":2318,"value":2319,"nodeType":1293},{},[],"We also use SSO password data to ",{"data":2321,"content":2323,"nodeType":1827},{"uri":2322},"https://pushsecurity.com/blog/introducing-sso-password-protection/",[2324],{"data":2325,"marks":2326,"value":2328,"nodeType":1293},{},[2327],{"type":1835},"prevent users from entering their SSO credentials into phishing sites",{"data":2330,"marks":2331,"value":2332,"nodeType":1293},{},[],", providing strong anti-phishing protection that is extremely hard for attackers to bypass. ",{"data":2334,"content":2335,"nodeType":2167},{},[],{"data":2337,"content":2338,"nodeType":1322},{},[2339],{"data":2340,"marks":2341,"value":2342,"nodeType":1293},{},[],"Preventing attackers from exploiting vulnerable credentials has never been easier",{"data":2344,"content":2345,"nodeType":1294},{},[2346],{"data":2347,"marks":2348,"value":2349,"nodeType":1293},{},[],"This is just one of the possible SecOps use cases that Push streamlines and levels up for security teams. To find out more about Push’s browser-based ITDR platform and our other great features, book a demo. ",{"data":2351,"content":2355,"nodeType":1465},{"target":2352},{"sys":2353},{"id":2354,"type":1470,"linkType":1471},"11p9wnGrZHqp3XPpThHFk3",[],{"data":2357,"content":2358,"nodeType":1294},{},[2359],{"data":2360,"marks":2361,"value":37,"nodeType":1293},{},[],"Automating SSO password resets using Push","Using Push to automate password resets for your most critical identities when a password vulnerability is detected.","2024-12-13T00:00:00.000Z","automating-sso-password-resets-using-push",{"items":2367},[2368,2370],{"sys":2369,"name":1306},{"id":1305},{"sys":2371,"name":1310},{"id":1309},{"items":2373},[2374],{"fullName":2375,"firstName":2376,"jobTitle":2377,"profilePicture":2378},"Johann Scheepers","Johann","Senior Security Engineer",{"url":2379},"https://images.ctfassets.net/y1cdw1ablpvd/75IEOH93vR0hbvxuqTu1m3/f6222745ee6892ea07bc18727a5a5ae7/T016S22KZ96-U02LU3SKC2D-e1e755770536-512.png",{"__typename":1314,"sys":2381,"content":2383,"title":3010,"synopsis":3011,"hashTags":118,"publishedDate":3012,"slug":3013,"tagsCollection":3014,"authorsCollection":3020},{"id":2382},"1pJdOGN0dOd3BKVqO4CxHh",{"json":2384},{"nodeType":1295,"data":2385,"content":2386},{},[2387,2394,2401,2408,2427,2434,2441,2444,2452,2459,2466,2473,2479,2486,2489,2497,2504,2511,2518,2525,2531,2538,2541,2549,2557,2564,2571,2578,2598,2606,2613,2620,2627,2634,2642,2649,2656,2662,2665,2673,2680,2687,2694,2701,2708,2711,2719,2726,2733,2740,2747,2754,2868,2884,2891,2897,2900,2908,2915,2984,2991],{"nodeType":1294,"data":2388,"content":2389},{},[2390],{"nodeType":1293,"value":2391,"marks":2392,"data":2393},"2024 was an unprecedented year in terms of the impact of identity-based attacks. Or that’s what it felt like anyway, so I decided to trawl through a year of news to see if reality stacked up. ",[],{},{"nodeType":1294,"data":2395,"content":2396},{},[2397],{"nodeType":1293,"value":2398,"marks":2399,"data":2400},"My main obstacles here were the ever-disappointing levels of public information disclosure for cyber breaches. Even where breaches are disclosed, it’s rare that any public information contains the nature of the initial access vector (though I can’t say I’m surprised — it’s hard to argue the ‘highly sophisticated’ nature of a breach that involved stolen credentials and no MFA). ",[],{},{"nodeType":1294,"data":2402,"content":2403},{},[2404],{"nodeType":1293,"value":2405,"marks":2406,"data":2407},"Publicly disclosed breaches are just the tip of the iceberg, and with the rise in data theft and extortion over more disruptive attacks (e.g. ransomware), there is often no obvious service interruption indicating that an incident has taken place. This makes it more likely that these situations can be settled quietly or smoothed over, without hitting the headlines. ",[],{},{"nodeType":1294,"data":2409,"content":2410},{},[2411,2415,2424],{"nodeType":1293,"value":2412,"marks":2413,"data":2414},"That said, the requirement that US companies submit a Form-8K for breaches of a material nature does appear to have increased the number of voluntary declarations (inside the US, at least) and the growing willingness of the SEC to prosecute negligent or misleading behavior is also a considerable motivator, such as ",[],{},{"nodeType":1827,"data":2416,"content":2418},{"uri":2417},"https://www.bleepingcomputer.com/news/security/sec-charges-tech-companies-for-downplaying-solarwinds-breaches/",[2419],{"nodeType":1293,"value":2420,"marks":2421,"data":2423},"the recent prosecution of companies for misleading investors about the impact of the 2020 SolarWinds Orion hack",[2422],{"type":1835},{},{"nodeType":1293,"value":1892,"marks":2425,"data":2426},[],{},{"nodeType":1294,"data":2428,"content":2429},{},[2430],{"nodeType":1293,"value":2431,"marks":2432,"data":2433},"Despite all this, I totalled 30 breaches that were the result of an identity-based initial access vector, such as phishing, credential stuffing, social engineering, session hijacking, etc. To make the list, it had to have appeared in the public domain, confirmed by the victim or an authoritative source, and the breach vector had to have been named. ",[],{},{"nodeType":1294,"data":2435,"content":2436},{},[2437],{"nodeType":1293,"value":2438,"marks":2439,"data":2440},"Public identity-related breaches in 2024 resulted in hundreds of millions of breached customer records (with the final impact of many still yet to appear in the public domain).",[],{},{"nodeType":2167,"data":2442,"content":2443},{},[],{"nodeType":1322,"data":2445,"content":2446},{},[2447],{"nodeType":1293,"value":2448,"marks":2449,"data":2451},"What is an identity attack?",[2450],{"type":1514},{},{"nodeType":1294,"data":2453,"content":2454},{},[2455],{"nodeType":1293,"value":2456,"marks":2457,"data":2458},"First, what do we mean by identity attack? ",[],{},{"nodeType":1294,"data":2460,"content":2461},{},[2462],{"nodeType":1293,"value":2463,"marks":2464,"data":2465},"An identity attack is any attack (regardless of the steps that follow) involving identity-based techniques, such as phishing, credential stuffing, and session hijacking, to log into an account/service. Basically, where identity is the initial breach vector.",[],{},{"nodeType":1294,"data":2467,"content":2468},{},[2469],{"nodeType":1293,"value":2470,"marks":2471,"data":2472},"The length and complexity of the overall attack chain will vary. For example, a SaaS-based account takeover where the attacker logs in and dumps the data from the app is naturally going to be more direct than a scenario in which an identity-based compromise leads to the takeover of an endpoint or device in a traditional networking environment. ",[],{},{"nodeType":1465,"data":2474,"content":2478},{"target":2475},{"sys":2476},{"id":2477,"type":1470,"linkType":1471},"SCbhb6dzXnaKUianhgLEL",[],{"nodeType":1294,"data":2480,"content":2481},{},[2482],{"nodeType":1293,"value":2483,"marks":2484,"data":2485},"In 2024, we’ve seen examples of both SaaS-based account takeover as well as identity attacks being used for initial access to more traditional networks, often resulting in ransomware deployment.",[],{},{"nodeType":2167,"data":2487,"content":2488},{},[],{"nodeType":1322,"data":2490,"content":2491},{},[2492],{"nodeType":1293,"value":2493,"marks":2494,"data":2496},"Breakdown of public identity breaches in 2024",[2495],{"type":1514},{},{"nodeType":1294,"data":2498,"content":2499},{},[2500],{"nodeType":1293,"value":2501,"marks":2502,"data":2503},"It’s always tricky to gauge the impact of a cyber breach, particularly when considering the limited information typically shared. Different types of breach are easier to assess than others — for example, any breach involving extortion/ransom payment has a clear cost associated. Regulator fines and penalties are also clear cut. But aside from these, you’re looking at the extent of any disruption/downtime, recovery costs, and the like. Long term, indirect impacts such as the loss of customer confidence are naturally tricky to estimate. ",[],{},{"nodeType":1294,"data":2505,"content":2506},{},[2507],{"nodeType":1293,"value":2508,"marks":2509,"data":2510},"However, many identity breaches don’t even have these metrics to go by. The general shift toward data theft only (as opposed to ransomware deployment) continued in 2024, and many of the public identity breaches reflect this. In these attacks, attackers steal data to extort a ransom payment, blackmail end-customers, and/or sell the data via underground criminal marketplaces. ",[],{},{"nodeType":1294,"data":2512,"content":2513},{},[2514],{"nodeType":1293,"value":2515,"marks":2516,"data":2517},"The one consistent metric we do have is the number of breached records, which is available in many (but not all) cases. Some organizations have attempted to calculate the financial impact per breached record. Most notably IBMs annual ‘Cost of a Data Breach’ report estimates the average data breach to cost $4.88m, and the cost per compromised record to be $169. But when applied to the sheer magnitude of 2024’s biggest attacks (in the region of hundreds of millions of breached records) the figures quickly reach unbelievable levels. ",[],{},{"nodeType":1294,"data":2519,"content":2520},{},[2521],{"nodeType":1293,"value":2522,"marks":2523,"data":2524},"All this is to say: It’s hard to pin down the relative impact of data breaches. But with the information available (profile of the victim organization, type of data impacted, number of customers impacted) it’s possible to provide a finger-in-the-air assessment — which is what I’ve attempted to do below. Here, we can see the overall month-by-month impact of public identity breaches, dated from when they were first reported (or using dates provided in said reports). ",[],{},{"nodeType":1465,"data":2526,"content":2530},{"target":2527},{"sys":2528},{"id":2529,"type":1470,"linkType":1471},"2XYuNqLuKhZbISb4II9IW4",[],{"nodeType":1294,"data":2532,"content":2533},{},[2534],{"nodeType":1293,"value":2535,"marks":2536,"data":2537},"Let’s take a closer look at the most notable breaches (and why they were especially significant). ",[],{},{"nodeType":2167,"data":2539,"content":2540},{},[],{"nodeType":1322,"data":2542,"content":2543},{},[2544],{"nodeType":1293,"value":2545,"marks":2546,"data":2548},"Top 3 public identity-related breaches in 2024",[2547],{"type":1514},{},{"nodeType":1378,"data":2550,"content":2551},{},[2552],{"nodeType":1293,"value":2553,"marks":2554,"data":2556},"#3: Microsoft — January 2024",[2555],{"type":1514},{},{"nodeType":1294,"data":2558,"content":2559},{},[2560],{"nodeType":1293,"value":2561,"marks":2562,"data":2563},"The threat group known as APT29, associated with the Russian SVR intelligence service, utilized password spray attacks that successfully compromised a non-production tenant account that did not have multi-factor authentication (MFA) enabled. They then leveraged this account to compromise a ‘test’ OAuth application that had elevated access to the Microsoft corporate environment. This was then used to access the email accounts of Microsoft employees. ",[],{},{"nodeType":1294,"data":2565,"content":2566},{},[2567],{"nodeType":1293,"value":2568,"marks":2569,"data":2570},"The attacks then continued throughout the year using information stolen from Microsoft mailboxes, with password spraying attacks increasing tenfold since the initial attack, resulting in the further compromise of source code repositories. ",[],{},{"nodeType":1294,"data":2572,"content":2573},{},[2574],{"nodeType":1293,"value":2575,"marks":2576,"data":2577},"Microsoft has shared limited information about the breach, but despite this it caused a significant stir. We can expect the number of email accounts compromised to be significant, given that it was later suggested that at least 100 external organizations had been contacted by Microsoft regarding their communications being breached (we only know this because 100-ish organizations reported the email as spam). The list of companies impacted included both public and private sector organizations, from major enterprises to government agencies in the US and other countries. ",[],{},{"nodeType":1294,"data":2579,"content":2580},{},[2581,2585,2594],{"nodeType":1293,"value":2582,"marks":2583,"data":2584},"Microsoft’s challenges with credential management didn’t end here either, ",[],{},{"nodeType":1827,"data":2586,"content":2588},{"uri":2587},"https://pushsecurity.com/blog/learning-from-the-servicenow-disclosure/",[2589],{"nodeType":1293,"value":2590,"marks":2591,"data":2593},"with bug bounty hunters able to use stolen credentials from a TI platform to breach Microsoft’s ServiceNow tenant",[2592],{"type":1835},{},{"nodeType":1293,"value":2595,"marks":2596,"data":2597},", accessing 1,000s of support ticket descriptions and attachments, and 250k+ employee emails.",[],{},{"nodeType":1378,"data":2599,"content":2600},{},[2601],{"nodeType":1293,"value":2602,"marks":2603,"data":2605},"#2: Change Healthcare — February 2024",[2604],{"type":1514},{},{"nodeType":1294,"data":2607,"content":2608},{},[2609],{"nodeType":1293,"value":2610,"marks":2611,"data":2612},"In February, attackers stole 6TB of data from UnitedHealth subsidiary Change Healthcare as part of a severe ransomware attack that caused massive disruption to the US healthcare industry. This impacted a wide range of critical services used by healthcare providers across the U.S., including payment processing, prescription writing, and insurance claims, and caused financial damages estimated at $872 million. The attack impacted the personal medical data of over 100M customers. ",[],{},{"nodeType":1294,"data":2614,"content":2615},{},[2616],{"nodeType":1293,"value":2617,"marks":2618,"data":2619},"The attacker used stolen credentials to breach the company's Citrix remote access service, which did not have multi-factor authentication enabled, as the initial breach vector for the attack. ",[],{},{"nodeType":1294,"data":2621,"content":2622},{},[2623],{"nodeType":1293,"value":2624,"marks":2625,"data":2626},"Following the attack, the organization's IT team replaced thousands of laptops, rotated credentials, and completely rebuilt Change Healthcare's data center network and core services.",[],{},{"nodeType":1294,"data":2628,"content":2629},{},[2630],{"nodeType":1293,"value":2631,"marks":2632,"data":2633},"The UnitedHealth Group admitted to paying a ransom demand to receive a decryptor and for the threat actors to delete the stolen data. The ransom payment was allegedly $22 million, according to the BlackCat ransomware affiliate who conducted the attack.",[],{},{"nodeType":1378,"data":2635,"content":2636},{},[2637],{"nodeType":1293,"value":2638,"marks":2639,"data":2641},"#1: Snowflake — April-June 2024",[2640],{"type":1514},{},{"nodeType":1294,"data":2643,"content":2644},{},[2645],{"nodeType":1293,"value":2646,"marks":2647,"data":2648},"165 organizations around the world were targeted using stolen credentials gathered from infostealer infections dating back to 2020. The impacted accounts lacked MFA, meaning successful authentication only required a valid username and password. As the Snowflake credentials found in infostealer malware credential dumps had not been rotated or updated, they remained valid and could be used to authenticate to user accounts on Snowflake tenants belonging to various customers. It has been touted by some news outlets as ‘one of the biggest breaches ever’. ",[],{},{"nodeType":1294,"data":2650,"content":2651},{},[2652],{"nodeType":1293,"value":2653,"marks":2654,"data":2655},"In total, nine public victims were named following the breach, collectively impacting hundreds of millions of their respective customers. Data was put up for sale on criminal forums for fees ranging from $150k to $2m per organization, while AT&T was also confirmed as paying an undisclosed ransom fee. ",[],{},{"nodeType":1465,"data":2657,"content":2661},{"target":2658},{"sys":2659},{"id":2660,"type":1470,"linkType":1471},"68txz4KkLmCX2hF9QySUZs",[],{"nodeType":2167,"data":2663,"content":2664},{},[],{"nodeType":1322,"data":2666,"content":2667},{},[2668],{"nodeType":1293,"value":2669,"marks":2670,"data":2672},"Identity attacks vs. other attacks in 2024",[2671],{"type":1514},{},{"nodeType":1294,"data":2674,"content":2675},{},[2676],{"nodeType":1293,"value":2677,"marks":2678,"data":2679},"In many ways, 2024 was a year of identity attacks. The attacks on Snowflake customers was unarguably one of (if not the most) significant cyber security event of the year (at least, if you exclude CrowdStrike causing a worldwide outage in July) — certainly, it was the largest perpetrated by a criminal group against commercial enterprises. ",[],{},{"nodeType":1294,"data":2681,"content":2682},{},[2683],{"nodeType":1293,"value":2684,"marks":2685,"data":2686},"Arguably the biggest non-identity story of the year was the Chinese state-sponsored “Salt Typhoon” campaign against global telecommunications firms, with at least nine major providers compromised — including AT&T, Verizon, and T-Mobile. The group reportedly focused on infiltrating telecommunications infrastructure to steal text messages, phone call information, and voicemails from targeted people. The threat actors also targeted the wiretapping platforms used by the US government, raising serious national security concerns.",[],{},{"nodeType":1294,"data":2688,"content":2689},{},[2690],{"nodeType":1293,"value":2691,"marks":2692,"data":2693},"Undoubtedly this was one of the biggest intelligence compromises in US history and is of major significance. But it’s also arguable that identity attacks had a more widespread commercial impact in 2024 when we look at the big picture.   ",[],{},{"nodeType":1294,"data":2695,"content":2696},{},[2697],{"nodeType":1293,"value":2698,"marks":2699,"data":2700},"Attacks on edge networking devices were also incredibly prominent, as were very much interlinked with the targeting of telecommunications infrastructure. A barrage of 0-days generated a huge amount of concern about the software security practices of many vendors. ",[],{},{"nodeType":1294,"data":2702,"content":2703},{},[2704],{"nodeType":1293,"value":2705,"marks":2706,"data":2707},"But despite these honorable mentions, the runaway threat of the year was an identity-based one… ",[],{},{"nodeType":2167,"data":2709,"content":2710},{},[],{"nodeType":1322,"data":2712,"content":2713},{},[2714],{"nodeType":1293,"value":2715,"marks":2716,"data":2718},"Threat of the year: Infostealers",[2717],{"type":1514},{},{"nodeType":1294,"data":2720,"content":2721},{},[2722],{"nodeType":1293,"value":2723,"marks":2724,"data":2725},"2024 saw an unprecedented rise in the role of infostealers. The played a huge role in the attacks on Snowflake customers, where 80% of the accounts were targeted using credentials found in infostealer infections. ",[],{},{"nodeType":1294,"data":2727,"content":2728},{},[2729],{"nodeType":1293,"value":2730,"marks":2731,"data":2732},"News relating to new infostealer variants and distributions campaigns came thick and fast in 2024, as attackers sought to harvest credentials from victims to use as part of their own malicious campaigns, or to sell on to other criminals on underground marketplaces for compromised credentials. Attackers leaned into alternative distribution channels, branching away from email-based campaigns to target victims via gaming forums, Facebook ads, and YouTube video descriptions. GitHub was also continuously targeted as a malware distribution mechanism throughout the year — and the majority of the time it was to push infostealers. ",[],{},{"nodeType":1294,"data":2734,"content":2735},{},[2736],{"nodeType":1293,"value":2737,"marks":2738,"data":2739},"Infostealers are the weapon of choice for attackers looking to harvest credentials at scale. Compared to credential harvesting phishing campaigns, infostealers target a much broader range of credentials, taking everything saved in the victim’s browser (and often also from local apps, including password managers).",[],{},{"nodeType":1294,"data":2741,"content":2742},{},[2743],{"nodeType":1293,"value":2744,"marks":2745,"data":2746},"Infostealers are nothing new, but have historically been seen as a problem affecting less secure personal devices and accounts. But 2024 has demonstrated that infostealers are finding ways to harvest business data — by finding ways around controls like EDR, and because of the ways that personal and business identities and accounts are converging in the modern workplace. For example, it’s not uncommon for employees to log into their personal Google account on their work device (and vice versa), inadvertently saving corporate credentials to their personal password store — which is later compromised through an infostealer infection on a personal device. ",[],{},{"nodeType":1294,"data":2748,"content":2749},{},[2750],{"nodeType":1293,"value":2751,"marks":2752,"data":2753},"The impact of infostealers (and the resulting stolen credentials and session cookies) is underlined by various figures:",[],{},{"nodeType":1580,"data":2755,"content":2756},{},[2757,2780,2802,2824,2846],{"nodeType":1584,"data":2758,"content":2759},{},[2760],{"nodeType":1294,"data":2761,"content":2762},{},[2763,2767,2776],{"nodeType":1293,"value":2764,"marks":2765,"data":2766},"79% of web application compromises were the result of breached credentials (",[],{},{"nodeType":1827,"data":2768,"content":2770},{"uri":2769},"https://www.verizon.com/business/en-gb/resources/reports/dbir/",[2771],{"nodeType":1293,"value":2772,"marks":2773,"data":2775},"Verizon",[2774],{"type":1835},{},{"nodeType":1293,"value":2777,"marks":2778,"data":2779},").",[],{},{"nodeType":1584,"data":2781,"content":2782},{},[2783],{"nodeType":1294,"data":2784,"content":2785},{},[2786,2790,2799],{"nodeType":1293,"value":2787,"marks":2788,"data":2789},"Infostealer activity increased by 266% in 2023, while the number of attacks featuring valid credentials saw a 71% increase year-over-year (",[],{},{"nodeType":1827,"data":2791,"content":2793},{"uri":2792},"https://www.ibm.com/downloads/cas/L0GKXDWJ",[2794],{"nodeType":1293,"value":2795,"marks":2796,"data":2798},"IBM",[2797],{"type":1835},{},{"nodeType":1293,"value":2777,"marks":2800,"data":2801},[],{},{"nodeType":1584,"data":2803,"content":2804},{},[2805],{"nodeType":1294,"data":2806,"content":2807},{},[2808,2812,2821],{"nodeType":1293,"value":2809,"marks":2810,"data":2811},"Nearly half of the malware detected last year targeted victims’ data specifically, and the majority of that malware was classified as infostealers (",[],{},{"nodeType":1827,"data":2813,"content":2815},{"uri":2814},"https://news.sophos.com/en-us/2024/03/12/2024-sophos-threat-report/",[2816],{"nodeType":1293,"value":2817,"marks":2818,"data":2820},"Sophos",[2819],{"type":1835},{},{"nodeType":1293,"value":2777,"marks":2822,"data":2823},[],{},{"nodeType":1584,"data":2825,"content":2826},{},[2827],{"nodeType":1294,"data":2828,"content":2829},{},[2830,2834,2843],{"nodeType":1293,"value":2831,"marks":2832,"data":2833},"39,000 session token attacks are detected per day (",[],{},{"nodeType":1827,"data":2835,"content":2837},{"uri":2836},"https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/microsoft/final/en-us/microsoft-brand/documents/Microsoft%20Digital%20Defense%20Report%202024%20%281%29.pdf",[2838],{"nodeType":1293,"value":2839,"marks":2840,"data":2842},"Microsoft",[2841],{"type":1835},{},{"nodeType":1293,"value":2777,"marks":2844,"data":2845},[],{},{"nodeType":1584,"data":2847,"content":2848},{},[2849],{"nodeType":1294,"data":2850,"content":2851},{},[2852,2856,2865],{"nodeType":1293,"value":2853,"marks":2854,"data":2855},"Attacks on session cookies happen at the same rough order of magnitude as password-based attacks (",[],{},{"nodeType":1827,"data":2857,"content":2859},{"uri":2858},"https://github.com/WICG/dbsc/issues/13#issuecomment-1977657864",[2860],{"nodeType":1293,"value":2861,"marks":2862,"data":2864},"Google",[2863],{"type":1835},{},{"nodeType":1293,"value":2777,"marks":2866,"data":2867},[],{},{"nodeType":1294,"data":2869,"content":2870},{},[2871,2875,2880],{"nodeType":1293,"value":2872,"marks":2873,"data":2874},"And of the confirmed identity-based breaches in the public domain that we identified, ",[],{},{"nodeType":1293,"value":2876,"marks":2877,"data":2879},"a whopping 73% were the result of compromised credentials ",[2878],{"type":1514},{},{"nodeType":1293,"value":2881,"marks":2882,"data":2883},"(the rest were phishing attacks). ",[],{},{"nodeType":1294,"data":2885,"content":2886},{},[2887],{"nodeType":1293,"value":2888,"marks":2889,"data":2890},"As the primary source of compromised credentials, it’s fair to say that infostealers deserve the top spot for 2024.",[],{},{"nodeType":1465,"data":2892,"content":2896},{"target":2893},{"sys":2894},{"id":2895,"type":1470,"linkType":1471},"7mMQEYQTXKAajIGFviDJKt",[],{"nodeType":2167,"data":2898,"content":2899},{},[],{"nodeType":1322,"data":2901,"content":2902},{},[2903],{"nodeType":1293,"value":2904,"marks":2905,"data":2907},"Defend against infostealers with Push",[2906],{"type":1514},{},{"nodeType":1294,"data":2909,"content":2910},{},[2911],{"nodeType":1293,"value":2912,"marks":2913,"data":2914},"As a browser-based identity security platform designed to stop identity attacks, Push helps organizations to defend against the rise in infostealers by:",[],{},{"nodeType":1580,"data":2916,"content":2917},{},[2918,2952,2974],{"nodeType":1584,"data":2919,"content":2920},{},[2921],{"nodeType":1294,"data":2922,"content":2923},{},[2924,2927,2935,2939,2948],{"nodeType":1293,"value":37,"marks":2925,"data":2926},[],{},{"nodeType":1827,"data":2928,"content":2929},{"uri":2204},[2930],{"nodeType":1293,"value":2931,"marks":2932,"data":2934},"Alerting you whenever the valid credentials your employees are using appear in a compromised credential data feed",[2933],{"type":1835},{},{"nodeType":1293,"value":2936,"marks":2937,"data":2938},", which can be leveraged to ",[],{},{"nodeType":1827,"data":2940,"content":2942},{"uri":2941},"https://pushsecurity.com/blog/automating-sso-password-resets-using-push/",[2943],{"nodeType":1293,"value":2944,"marks":2945,"data":2947},"trigger automated password resets",[2946],{"type":1835},{},{"nodeType":1293,"value":2949,"marks":2950,"data":2951}," whenever an event fires and is received by your SIEM tool.",[],{},{"nodeType":1584,"data":2953,"content":2954},{},[2955],{"nodeType":1294,"data":2956,"content":2957},{},[2958,2961,2970],{"nodeType":1293,"value":37,"marks":2959,"data":2960},[],{},{"nodeType":1827,"data":2962,"content":2964},{"uri":2963},"https://pushsecurity.com/blog/introducing-session-token-theft-detection-why-browser-is-best/",[2965],{"nodeType":1293,"value":2966,"marks":2967,"data":2969},"Detecting session hijacking attacks using stolen cookies to identify when an attacker logs into an app",[2968],{"type":1835},{},{"nodeType":1293,"value":2971,"marks":2972,"data":2973}," from an unmanaged device without the Push browser extension — this can also be used to detect suspicious access in general!",[],{},{"nodeType":1584,"data":2975,"content":2976},{},[2977],{"nodeType":1294,"data":2978,"content":2979},{},[2980],{"nodeType":1293,"value":2981,"marks":2982,"data":2983},"Enabling you to enforce MFA the next time an employee logs into an app (even when the app itself doesn’t allow you to enforce mandatory MFA) — particularly handy if a weak, breached, or reused password is detected for their account!  ",[],{},{"nodeType":1294,"data":2985,"content":2986},{},[2987],{"nodeType":1293,"value":2988,"marks":2989,"data":2990},"And much, much more. ",[],{},{"nodeType":1294,"data":2992,"content":2993},{},[2994,2998,3007],{"nodeType":1293,"value":2995,"marks":2996,"data":2997},"If you’d like to explore the platform yourself and discover more of our great features, you can ",[],{},{"nodeType":1827,"data":2999,"content":3001},{"uri":3000},"https://pushsecurity.com/demo",[3002],{"nodeType":1293,"value":3003,"marks":3004,"data":3006},"request a demo",[3005],{"type":1835},{},{"nodeType":1293,"value":1892,"marks":3008,"data":3009},[],{},"Looking back on identity-based breaches in 2024","Reviewing public breaches that stemmed from identity attacks in 2024. ","2025-01-10T00:00:00.000Z","2024-identity-breaches",{"items":3015},[3016],{"sys":3017,"name":3019},{"id":3018},"6A5RXS31ZQx3PwryGb1IMy","Browser-based attacks",{"items":3021},[3022],{"fullName":3023,"firstName":3024,"jobTitle":3025,"profilePicture":3026},"Dan Green","Dan","Threat Research",{"url":3027},"https://images.ctfassets.net/y1cdw1ablpvd/7jik1VhFgA3kgzXBXTm2Vw/fcd8c171da644903d0827eafcfbcaad0/Dan_Headshot_2025.png",{"items":3029},[3030],{"fullName":2031,"firstName":2032,"jobTitle":2033,"profilePicture":3031},{"url":2035},{"json":3033,"links":4261},{"nodeType":1295,"data":3034,"content":3035},{},[3036,3043,3046,3053,3060,3093,3100,3103,3110,3130,3163,3170,3177,3180,3187,3194,3201,3224,3231,3238,3241,3248,3255,3262,3269,3276,3283,3290,3297,3304,3311,3344,3351,3358,3361,3368,3375,3381,3388,3421,3428,3431,3438,3445,3452,3475,3482,3489,3496,3503,3510,3517,3524,3531,3564,3607,3614,3621,3628,3635,3642,3649,3656,3704,3710,3730,3737,3770,3777,3783,3786,3793,3800,3807,3814,3821,3828,3835,3842,3849,3852,3859,3866,3873,3880,3900,3907,3914,3947,3954,3961,3968,3975,3982,4048,4051,4058,4065,4108,4111,4118,4125,4145,4152,4159,4166,4169,4176,4183,4190,4210,4217,4224,4231,4238,4245],{"nodeType":1294,"data":3037,"content":3038},{},[3039],{"nodeType":1293,"value":3040,"marks":3041,"data":3042},"Inline with what was targeted in this campaign, our focus here is on the extension deployment process. All browser vendors stand to benefit from greater security in this area — we hope that sharing what we’ve learned is useful, and look forward to comments and feedback so we can collectively reduce the scope for attacks on browser extensions in the future. ",[],{},{"nodeType":2167,"data":3044,"content":3045},{},[],{"nodeType":1322,"data":3047,"content":3048},{},[3049],{"nodeType":1293,"value":3050,"marks":3051,"data":3052},"TL;DR",[],{},{"nodeType":1294,"data":3054,"content":3055},{},[3056],{"nodeType":1293,"value":3057,"marks":3058,"data":3059},"In this blog, we’ll start with some background and walk through the “why” before discussing the key improvements that we feel are needed. But if you don’t care about the why or just want to cut to the chase, the key parts of defending against these attacks are:",[],{},{"nodeType":1580,"data":3061,"content":3062},{},[3063,3073,3083],{"nodeType":1584,"data":3064,"content":3065},{},[3066],{"nodeType":1294,"data":3067,"content":3068},{},[3069],{"nodeType":1293,"value":3070,"marks":3071,"data":3072},"Disable always-on access for all users to the browser extension store developer portals — you need to automate deployments through CI/CD to enable this.",[],{},{"nodeType":1584,"data":3074,"content":3075},{},[3076],{"nodeType":1294,"data":3077,"content":3078},{},[3079],{"nodeType":1293,"value":3080,"marks":3081,"data":3082},"Implement a multiparty approval process for extension deployments.",[],{},{"nodeType":1584,"data":3084,"content":3085},{},[3086],{"nodeType":1294,"data":3087,"content":3088},{},[3089],{"nodeType":1293,"value":3090,"marks":3091,"data":3092},"Secure your admin identities.",[],{},{"nodeType":1294,"data":3094,"content":3095},{},[3096],{"nodeType":1293,"value":3097,"marks":3098,"data":3099},"For details of how to do this practically, skip ahead to the “Recommended security architecture” section.",[],{},{"nodeType":2167,"data":3101,"content":3102},{},[],{"nodeType":1322,"data":3104,"content":3105},{},[3106],{"nodeType":1293,"value":3107,"marks":3108,"data":3109},"Background: The Cyberhaven incident",[],{},{"nodeType":1294,"data":3111,"content":3112},{},[3113,3117,3126],{"nodeType":1293,"value":3114,"marks":3115,"data":3116},"In December 2024, a campaign targeting browser extension developers was launched, and succeeded in compromising at least ",[],{},{"nodeType":1827,"data":3118,"content":3120},{"uri":3119},"https://www.bleepingcomputer.com/news/security/new-details-reveal-how-hackers-hijacked-35-google-chrome-extensions/",[3121],{"nodeType":1293,"value":3122,"marks":3123,"data":3125},"35 Google Chrome extensions",[3124],{"type":1835},{},{"nodeType":1293,"value":3127,"marks":3128,"data":3129},". Cyberhaven’s extension was the most notable of these, and the campaign has inherited their name.",[],{},{"nodeType":1294,"data":3131,"content":3132},{},[3133,3137,3146,3150,3159],{"nodeType":1293,"value":3134,"marks":3135,"data":3136},"The campaign targeted extension devs through the support email address listed on the extension stores, but notably, the ",[],{},{"nodeType":1827,"data":3138,"content":3140},{"uri":3139},"https://github.com/pushsecurity/saas-attacks/blob/main/techniques/consent_phishing/description.md",[3141],{"nodeType":1293,"value":3142,"marks":3143,"data":3145},"consent phishing attack technique",[3144],{"type":1835},{},{"nodeType":1293,"value":3147,"marks":3148,"data":3149}," was used. While not a new technique, it has rarely been seen — especially given how powerful it is. Rather than a traditional credential and MFA phishing attacks which harvest credentials (or session tokens to bypass MFA), with consent phishing the attacker's goal is to trick the victim into granting them an OAuth token to perform actions on their behalf. In this case the permission or scope used by the attacker granted that token the ability to upload and publish new versions of the victim’s extension to the Chrome Web Store — which in this case included some backdoor code that executed commands that were dynamically configured by the attacker. For more in-depth information, see the ",[],{},{"nodeType":1827,"data":3151,"content":3153},{"uri":3152},"https://secureannex.com/blog/cyberhaven-extension-compromise/",[3154],{"nodeType":1293,"value":3155,"marks":3156,"data":3158},"excellent analysis",[3157],{"type":1835},{},{"nodeType":1293,"value":3160,"marks":3161,"data":3162}," by the Secure Annex team.",[],{},{"nodeType":1294,"data":3164,"content":3165},{},[3166],{"nodeType":1293,"value":3167,"marks":3168,"data":3169},"Because of the dynamic nature of the commands sent to backdoored extensions, it’s difficult to be sure what the impact was — but whatever the case was in this specific incident, it’s perhaps more useful to understand what the impact to users might be so we can work to mitigate future attacks.",[],{},{"nodeType":1294,"data":3171,"content":3172},{},[3173],{"nodeType":1293,"value":3174,"marks":3175,"data":3176},"The simple fact is that for most common extensions that operate across multiple sites (like ad-blockers etc.), using fairly typical permissions, a backdoor would likely be able to reach credentials and session tokens. This would mean an attacker could use a backdoored extension to get access to a user’s accounts on various websites. This poses a very high impact to users, and something that all extension developers should be focused on preventing. ",[],{},{"nodeType":2167,"data":3178,"content":3179},{},[],{"nodeType":1322,"data":3181,"content":3182},{},[3183],{"nodeType":1293,"value":3184,"marks":3185,"data":3186},"How do we stop the next iteration of this attack?",[],{},{"nodeType":1294,"data":3188,"content":3189},{},[3190],{"nodeType":1293,"value":3191,"marks":3192,"data":3193},"Given the value of the data, the relative ease with which this attack was performed (vs. for example something like a browser 0-day), and the success of the attack, it seems very likely this type of attack will happen again. As we saw in 2024, the success of the attacks on Snowflake customers gave rise to a huge increase in infostealer attacks. Attackers are quick to identify areas of potential opportunity and capitalize on them.",[],{},{"nodeType":1294,"data":3195,"content":3196},{},[3197],{"nodeType":1293,"value":3198,"marks":3199,"data":3200},"As an extension user, you should be mainly worried about one of two scenarios;",[],{},{"nodeType":1580,"data":3202,"content":3203},{},[3204,3214],{"nodeType":1584,"data":3205,"content":3206},{},[3207],{"nodeType":1294,"data":3208,"content":3209},{},[3210],{"nodeType":1293,"value":3211,"marks":3212,"data":3213},"The developer of the extension adds malicious code to an extension, they publish the update to the app store, your browser automatically updates, and malicious code runs in your browser",[],{},{"nodeType":1584,"data":3215,"content":3216},{},[3217],{"nodeType":1294,"data":3218,"content":3219},{},[3220],{"nodeType":1293,"value":3221,"marks":3222,"data":3223},"The developer of your extension is attacked, and the attacker gains access to publish an updated version of the extension to the app store, and uses this to push an update that includes their backdoor, your browser automatically updates, and malicious code runs in your browser",[],{},{"nodeType":1294,"data":3225,"content":3226},{},[3227],{"nodeType":1293,"value":3228,"marks":3229,"data":3230},"However, since we’re writing this for honest extension developers, and these attacks targeted the second scenario, that’s what we’ll be focussing on. ",[],{},{"nodeType":1294,"data":3232,"content":3233},{},[3234],{"nodeType":1293,"value":3235,"marks":3236,"data":3237},"The challenge then is to make sure that only legitimate developers can push updates to the extension store. Easy to say, harder to do in the real world.",[],{},{"nodeType":2167,"data":3239,"content":3240},{},[],{"nodeType":1322,"data":3242,"content":3243},{},[3244],{"nodeType":1293,"value":3245,"marks":3246,"data":3247},"Primer on extension stores and the publication process",[],{},{"nodeType":1294,"data":3249,"content":3250},{},[3251],{"nodeType":1293,"value":3252,"marks":3253,"data":3254},"As a light intro for folks that aren’t extension developers but are still interested, here’s a very brief description of this process. It’s not critical to understand the inner workings and differences between the stores to follow this blog, but it is very interesting (in my opinion). ",[],{},{"nodeType":1294,"data":3256,"content":3257},{},[3258],{"nodeType":1293,"value":3259,"marks":3260,"data":3261},"At Push we publish to three main extension stores; Chrome Web Store (this lets us cover all the Chromium-based browsers including Edge and Arc), Firefox Add-ons, and the Apple Store, so these are the stores we’re covering here.",[],{},{"nodeType":1294,"data":3263,"content":3264},{},[3265],{"nodeType":1293,"value":3266,"marks":3267,"data":3268},"The generic process is the same for all stores. To publish an update, you first build (or package, really) your extension source, upload it to your tenant/team/org in the store, and publish it. The publishing step triggers a manual review process in the Chrome and Apple stores, and once complete, the new version appears on the extension stores. In Firefox it goes straight out immediately.",[],{},{"nodeType":1294,"data":3270,"content":3271},{},[3272],{"nodeType":1293,"value":3273,"marks":3274,"data":3275},"A note on the reviews; if you aren’t adding new permissions (something we haven’t seen attackers do because it triggers a new interactive approval for the end-user when the extension is updated — something an attacker wants to avoid to evade detection) then our experience is that the the manual review process is typically fairly cursory. This is likely why the checks implemented at the store level failed to discover malicious updates in these cases.",[],{},{"nodeType":1294,"data":3277,"content":3278},{},[3279],{"nodeType":1293,"value":3280,"marks":3281,"data":3282},"While it’s possible to do this process completely manually, developers often automate builds and include some of the deployment steps above in the build automation process — I’ll use the term CI/CD to refer to this build and deployment process in the rest of this piece. All three stores provide API keys (albeit in different ways) to enable this process.",[],{},{"nodeType":1294,"data":3284,"content":3285},{},[3286],{"nodeType":1293,"value":3287,"marks":3288,"data":3289},"I’ll leave it there for now, but again see the “Extension store differences” section in the Appendix for more detail.",[],{},{"nodeType":1378,"data":3291,"content":3292},{},[3293],{"nodeType":1293,"value":3294,"marks":3295,"data":3296},"So what's the problem with the stores?",[],{},{"nodeType":1294,"data":3298,"content":3299},{},[3300],{"nodeType":1293,"value":3301,"marks":3302,"data":3303},"Ok, so far it sounds like the stores are all pretty standardised, so what's the actual problem here? Why did these attacks succeed?",[],{},{"nodeType":1294,"data":3305,"content":3306},{},[3307],{"nodeType":1293,"value":3308,"marks":3309,"data":3310},"There are a few notable control gaps relating to the extension stores which made this attack possible, and could have mitigated it were they in place. ",[],{},{"nodeType":1580,"data":3312,"content":3313},{},[3314,3324,3334],{"nodeType":1584,"data":3315,"content":3316},{},[3317],{"nodeType":1294,"data":3318,"content":3319},{},[3320],{"nodeType":1293,"value":3321,"marks":3322,"data":3323},"Despite the massive risk related to publishing a malicious extension, none of the mainstream stores provide a mechanism to implement a multiparty approval process, increasing the number of successful phishing attempts required. ",[],{},{"nodeType":1584,"data":3325,"content":3326},{},[3327],{"nodeType":1294,"data":3328,"content":3329},{},[3330],{"nodeType":1293,"value":3331,"marks":3332,"data":3333},"Due to the lack of granular permissions in the Chrome store, any dev with access to the store could be phished. A slightly more granular permission model — for example the ability to have one developer with the permission to upload an extension (but not publish it), and another with the ability to publish an uploaded extension (but not upload a new package) — could have addressed this. ",[],{},{"nodeType":1584,"data":3335,"content":3336},{},[3337],{"nodeType":1294,"data":3338,"content":3339},{},[3340],{"nodeType":1293,"value":3341,"marks":3342,"data":3343},"No log stream that could be easily ingested by a SIEM tool is provided, making it much harder to detect and respond. ",[],{},{"nodeType":1294,"data":3345,"content":3346},{},[3347],{"nodeType":1293,"value":3348,"marks":3349,"data":3350},"But alas, we’re not here to complain about the stores — that’s a different blog post — we’re here to solve problems today!",[],{},{"nodeType":1294,"data":3352,"content":3353},{},[3354],{"nodeType":1293,"value":3355,"marks":3356,"data":3357},"I mentioned before that a multiparty approval process is key. But to understand why, it’s useful to think about this in terms of how this system will be attacked. Threat or attack models are typical approaches to doing this.",[],{},{"nodeType":2167,"data":3359,"content":3360},{},[],{"nodeType":1322,"data":3362,"content":3363},{},[3364],{"nodeType":1293,"value":3365,"marks":3366,"data":3367},"Attack model for publishing a malicious extension",[],{},{"nodeType":1294,"data":3369,"content":3370},{},[3371],{"nodeType":1293,"value":3372,"marks":3373,"data":3374},"The main attack paths enabling an attacker to publish a malicious extension are outlined below. ",[],{},{"nodeType":1465,"data":3376,"content":3380},{"target":3377},{"sys":3378},{"id":3379,"type":1470,"linkType":1471},"2RQTz9QmPxOxAvy4EtXIQZ",[],{"nodeType":1294,"data":3382,"content":3383},{},[3384],{"nodeType":1293,"value":3385,"marks":3386,"data":3387},"You don’t need to follow all the minutia of these attack paths, but some things to note about these attack paths are that they all target single points of failure (a single identity, a single endpoint), primarily through Social Engineering attacks:",[],{},{"nodeType":1580,"data":3389,"content":3390},{},[3391,3401,3411],{"nodeType":1584,"data":3392,"content":3393},{},[3394],{"nodeType":1294,"data":3395,"content":3396},{},[3397],{"nodeType":1293,"value":3398,"marks":3399,"data":3400},"A single user with access to the store needs to fall for a social engineering attack for this to work (as happened in this case). ",[],{},{"nodeType":1584,"data":3402,"content":3403},{},[3404],{"nodeType":1294,"data":3405,"content":3406},{},[3407],{"nodeType":1293,"value":3408,"marks":3409,"data":3410},"Many paths can be completed with an identity or endpoint attack, and in most cases a single identity or endpoint is sufficient.",[],{},{"nodeType":1584,"data":3412,"content":3413},{},[3414],{"nodeType":1294,"data":3415,"content":3416},{},[3417],{"nodeType":1293,"value":3418,"marks":3419,"data":3420},"Attacks against code repos and CI/CD flows are parallel paths, you need to trust those systems already.",[],{},{"nodeType":1294,"data":3422,"content":3423},{},[3424],{"nodeType":1293,"value":3425,"marks":3426,"data":3427},"So in designing a security architecture, we want to do as much to reduce single points of failure, and make social engineering ineffective (even when it succeeds).",[],{},{"nodeType":2167,"data":3429,"content":3430},{},[],{"nodeType":1322,"data":3432,"content":3433},{},[3434],{"nodeType":1293,"value":3435,"marks":3436,"data":3437},"Recommended security architecture",[],{},{"nodeType":1294,"data":3439,"content":3440},{},[3441],{"nodeType":1293,"value":3442,"marks":3443,"data":3444},"You could literally write a book on everything it takes to secure identities, endpoints and code repositories in general, and we’ll certainly mention some of the identity controls we think are effective later on. One thing to note here is that whatever you implement, the attack that succeeds in the real-word today is vastly more likely to involve an element of social engineering vs. for example a vulnerability exploit. This is not just my opinion (solid as I like to think that is), but also well supported by threat reports like the Verizon DBIR, with 68% of attacks involving ‘the human element’ in the 2024 edition. ",[],{},{"nodeType":1294,"data":3446,"content":3447},{},[3448],{"nodeType":1293,"value":3449,"marks":3450,"data":3451},"In tackling attacks that involve social engineering, there are two main workable options:",[],{},{"nodeType":1580,"data":3453,"content":3454},{},[3455,3465],{"nodeType":1584,"data":3456,"content":3457},{},[3458],{"nodeType":1294,"data":3459,"content":3460},{},[3461],{"nodeType":1293,"value":3462,"marks":3463,"data":3464},"Remove the user’s ability to give the attacker what they need.",[],{},{"nodeType":1584,"data":3466,"content":3467},{},[3468],{"nodeType":1294,"data":3469,"content":3470},{},[3471],{"nodeType":1293,"value":3472,"marks":3473,"data":3474},"Assume that at least some users will fall for the attack, and make it as hard as possible for the attacker.",[],{},{"nodeType":1294,"data":3476,"content":3477},{},[3478],{"nodeType":1293,"value":3479,"marks":3480,"data":3481},"You may note I didn’t include security or awareness training in the above — essentially because I’ve never seen it be effective enough to be relied on, which is not to say it’s not very useful (especially if it’s well targeted and relevant — like unpacking what happened to Cyberhaven with your whole extension developer team would be!), just that technical controls are generally more reliable.",[],{},{"nodeType":1294,"data":3483,"content":3484},{},[3485],{"nodeType":1293,"value":3486,"marks":3487,"data":3488},"Anyway, back to what I think makes the cornerstones of a solution.",[],{},{"nodeType":1378,"data":3490,"content":3491},{},[3492],{"nodeType":1293,"value":3493,"marks":3494,"data":3495},"Remove BAU access to extension stores",[],{},{"nodeType":1294,"data":3497,"content":3498},{},[3499],{"nodeType":1293,"value":3500,"marks":3501,"data":3502},"If developers don’t have access to extension stores, they cannot be manipulated into giving attackers access to API keys, they cannot grant attackers authorization to access the store on their behalf, and if the identities are compromised they cannot be used to access the store.",[],{},{"nodeType":1294,"data":3504,"content":3505},{},[3506],{"nodeType":1293,"value":3507,"marks":3508,"data":3509},"The key to achieving this is to lean fully into completely automated CI/CD processes for normal extension updates. This means that after you’ve configured the CI/CD flows, no developer needs access to the extension stores to do their normal work (publishing new versions of the extension).",[],{},{"nodeType":1294,"data":3511,"content":3512},{},[3513],{"nodeType":1293,"value":3514,"marks":3515,"data":3516},"Unfortunately, you will still need to access the web console manually for some tasks like updating branding, updating extension descriptions, and proving justification for new permissions (Chrome and Apple only). For our team, these tasks are infrequent enough that they can be handled using break-glass accounts.",[],{},{"nodeType":1294,"data":3518,"content":3519},{},[3520],{"nodeType":1293,"value":3521,"marks":3522,"data":3523},"A side note here: it might seem that you are just moving the risk around, from the extension store to the code repo & CI/CD system, but you are really already dependent on the security of these systems, so this is just removing the direct access to the extension store from the attack surface. You also have far greater flexibility and control in the CI/CD system as we’ll see in the “Implement multiparty approval in CI/CD” section below.",[],{},{"nodeType":1378,"data":3525,"content":3526},{},[3527],{"nodeType":1293,"value":3528,"marks":3529,"data":3530},"Break-glass store admin accounts",[],{},{"nodeType":1294,"data":3532,"content":3533},{},[3534,3538,3547,3551,3560],{"nodeType":1293,"value":3535,"marks":3536,"data":3537},"In practice you might implement this by issuing developers that need access to the extension stores a second SSO identity that is dedicated to this. You could have a ",[],{},{"nodeType":1827,"data":3539,"content":3541},{"uri":3540},"mailto:john@amce.com",[3542],{"nodeType":1293,"value":3543,"marks":3544,"data":3546},"john@acme.com",[3545],{"type":1835},{},{"nodeType":1293,"value":3548,"marks":3549,"data":3550}," Google account to do normal development work, and a ",[],{},{"nodeType":1827,"data":3552,"content":3554},{"uri":3553},"mailto:john.admin@acme.com",[3555],{"nodeType":1293,"value":3556,"marks":3557,"data":3559},"john.admin@acme.com",[3558],{"type":1835},{},{"nodeType":1293,"value":3561,"marks":3562,"data":3563}," Google account to access the extension stores. You could also:",[],{},{"nodeType":1580,"data":3565,"content":3566},{},[3567,3577,3587,3597],{"nodeType":1584,"data":3568,"content":3569},{},[3570],{"nodeType":1294,"data":3571,"content":3572},{},[3573],{"nodeType":1293,"value":3574,"marks":3575,"data":3576},"Make the .admin accounts disabled by default in Google, and enable one of them at a time as and when needed (this should be very rare).",[],{},{"nodeType":1584,"data":3578,"content":3579},{},[3580],{"nodeType":1294,"data":3581,"content":3582},{},[3583],{"nodeType":1293,"value":3584,"marks":3585,"data":3586},"Put the .admin accounts in a separate OU in GWS, and configure that OU so that those accounts are not allowed to authorize any OAuth integrations.",[],{},{"nodeType":1584,"data":3588,"content":3589},{},[3590],{"nodeType":1294,"data":3591,"content":3592},{},[3593],{"nodeType":1293,"value":3594,"marks":3595,"data":3596},"Ensure that all the .admin accounts use hardware backed passkeys that don’t sync anywhere (we like Yubikeys) and disable password logins.",[],{},{"nodeType":1584,"data":3598,"content":3599},{},[3600],{"nodeType":1294,"data":3601,"content":3602},{},[3603],{"nodeType":1293,"value":3604,"marks":3605,"data":3606},"For bonus points, make sure .admin accounts can only be used on a separate dedicated endpoint (e.g. a locked-down Chromebook).",[],{},{"nodeType":1294,"data":3608,"content":3609},{},[3610],{"nodeType":1293,"value":3611,"marks":3612,"data":3613},"In this way you can have a setup where an attacker would have to successfully target a developer using a hardware-backed identity during the few minutes a year their account is active, and do so without using consent phishing attacks (because all OAuth integrations are disabled for your break-glass accounts). This is a majorly tall order for the attacker.",[],{},{"nodeType":1378,"data":3615,"content":3616},{},[3617],{"nodeType":1293,"value":3618,"marks":3619,"data":3620},"Implement multiparty approval in CI/CD",[],{},{"nodeType":1294,"data":3622,"content":3623},{},[3624],{"nodeType":1293,"value":3625,"marks":3626,"data":3627},"If nobody has active BAU access to extension stores for more than very brief periods, the attacker’s next best option is to target the process that developers are using to publish, i.e. committing code to the repository and waiting for the CI/CD system to publish the extension automatically.",[],{},{"nodeType":1294,"data":3629,"content":3630},{},[3631],{"nodeType":1293,"value":3632,"marks":3633,"data":3634},"In practice this means the attacker would need to attack the identity (account) the employee uses to access the code repository (assuming a typical cloud hosted system like GitHub here), or sneak code in through an endpoint attack. Overwhelmingly, these attacks are likely to include an element of social engineering — whether that’s phishing credentials or session tokens, or tricking the user into downloading malware, perhaps through a malicious dependency or vscode extension.",[],{},{"nodeType":1294,"data":3636,"content":3637},{},[3638],{"nodeType":1293,"value":3639,"marks":3640,"data":3641},"We can make the attacker’s life exponentially harder by requiring that they successfully attack two developers, at the same time, before anyone notices. Quick intuition might make it seem like we’re only doubling the difficulty, but other red-teamers with experience doing this will agree that it’s often very easy to target a random user in a large population quickly (one employee in a large corporate), but a single user in a much smaller team (say an extension dev team) might take repeated attacks. When you need to target multiple users in a small team, in a single attack, and maintain the breach concurrently while taking actions (e.g. committing malicious code hoping no-one notices) it becomes much more likely that the alarm will be raised. ",[],{},{"nodeType":1378,"data":3643,"content":3644},{},[3645],{"nodeType":1293,"value":3646,"marks":3647,"data":3648},"How to implement multiparty approval through CI/CD",[],{},{"nodeType":1294,"data":3650,"content":3651},{},[3652],{"nodeType":1293,"value":3653,"marks":3654,"data":3655},"There are probably dozens of ways to skin this cat, but I’ll share one way of doing this that works with mainstream tools and developer processes — using protected git branches.",[],{},{"nodeType":1580,"data":3657,"content":3658},{},[3659,3674,3689],{"nodeType":1584,"data":3660,"content":3661},{},[3662],{"nodeType":1294,"data":3663,"content":3664},{},[3665,3670],{"nodeType":1293,"value":3666,"marks":3667,"data":3669},"Step 1: ",[3668],{"type":1514},{},{"nodeType":1293,"value":3671,"marks":3672,"data":3673},"Setup multiple branches, these might be dev/stg/prd, or development/prerelease/release, and trigger automated build and deploy to the stores using CI/CD with PR merges to the prd/release branches. ",[],{},{"nodeType":1584,"data":3675,"content":3676},{},[3677],{"nodeType":1294,"data":3678,"content":3679},{},[3680,3685],{"nodeType":1293,"value":3681,"marks":3682,"data":3684},"Step 2: ",[3683],{"type":1514},{},{"nodeType":1293,"value":3686,"marks":3687,"data":3688},"Use branch protection rules that require a second (or even third) named or group of developers to review and approve the PR merge. This achieves multiparty approval.",[],{},{"nodeType":1584,"data":3690,"content":3691},{},[3692],{"nodeType":1294,"data":3693,"content":3694},{},[3695,3700],{"nodeType":1293,"value":3696,"marks":3697,"data":3699},"Step 3:",[3698],{"type":1514},{},{"nodeType":1293,"value":3701,"marks":3702,"data":3703}," Configure fully automated builds and deployments as part of your CI/CD flows. While this is possible for all three stores, some of the stores do make you jump through a few hoops. Take a look at the steps required to automate a publish to the Apple Store:",[],{},{"nodeType":1465,"data":3705,"content":3709},{"target":3706},{"sys":3707},{"id":3708,"type":1470,"linkType":1471},"4b9fc1ZUj4HdKl6Iv7Yx8T",[],{"nodeType":1294,"data":3711,"content":3712},{},[3713,3717,3726],{"nodeType":1293,"value":3714,"marks":3715,"data":3716},"Since we’ve done the work of figuring this out once already, we extracted the critical steps into a ",[],{},{"nodeType":1827,"data":3718,"content":3720},{"uri":3719},"https://github.com/pushsecurity/extension-security-guide",[3721],{"nodeType":1293,"value":3722,"marks":3723,"data":3725},"companion Github repo",[3724],{"type":1835},{},{"nodeType":1293,"value":3727,"marks":3728,"data":3729}," to make this a bit easier to implement.",[],{},{"nodeType":1294,"data":3731,"content":3732},{},[3733],{"nodeType":1293,"value":3734,"marks":3735,"data":3736},"As we’ve described it so far, this is a fairly basic implementation, and there are several other controls you might consider to harden this process, including:",[],{},{"nodeType":1580,"data":3738,"content":3739},{},[3740,3750,3760],{"nodeType":1584,"data":3741,"content":3742},{},[3743],{"nodeType":1294,"data":3744,"content":3745},{},[3746],{"nodeType":1293,"value":3747,"marks":3748,"data":3749},"Make sure you use a secrets protection system to store Web Store API keys in the CI/CD (it’s no use if the attacker can read the API keys from a config file in your code).",[],{},{"nodeType":1584,"data":3751,"content":3752},{},[3753],{"nodeType":1294,"data":3754,"content":3755},{},[3756],{"nodeType":1293,"value":3757,"marks":3758,"data":3759},"Ensure that developers don’t have access to change branch protection rules, or access CI/CD secrets (otherwise one compromised developer account can undo all this good work — let DevOps or other admin users that are not extension developers handle this admin).",[],{},{"nodeType":1584,"data":3761,"content":3762},{},[3763],{"nodeType":1294,"data":3764,"content":3765},{},[3766],{"nodeType":1293,"value":3767,"marks":3768,"data":3769},"Enforce hardware-backed signed commits as a condition for PR merges (this makes it very very difficult to get bad code into the repo without also compromising your dev team’s Yubikeys)",[],{},{"nodeType":1294,"data":3771,"content":3772},{},[3773],{"nodeType":1293,"value":3774,"marks":3775,"data":3776},"Now you have strong hardware-backed multiparty authenticated deployments to the stores, and should end up with something that looks a bit like this:",[],{},{"nodeType":1465,"data":3778,"content":3782},{"target":3779},{"sys":3780},{"id":3781,"type":1470,"linkType":1471},"6tWdfgYKyH2i2Zai05BxzB",[],{"nodeType":2167,"data":3784,"content":3785},{},[],{"nodeType":1322,"data":3787,"content":3788},{},[3789],{"nodeType":1293,"value":3790,"marks":3791,"data":3792},"The next best attack path — IdP admin compromise",[],{},{"nodeType":1294,"data":3794,"content":3795},{},[3796],{"nodeType":1293,"value":3797,"marks":3798,"data":3799},"Once developers don’t have direct access to the stores, and you have multiparty approvals to get code into CI/CD, the next best attack paths are to target other single-points-of-failure — most likely the administrators. ",[],{},{"nodeType":1294,"data":3801,"content":3802},{},[3803],{"nodeType":1293,"value":3804,"marks":3805,"data":3806},"This might be the IdP (Google Workspace, Entra, Okta, etc.) admins, which can then be used to provision access to the stores, or simply recover one or more of the developer or break-glass accounts. Or it might target the code repo or CI/CD (GitHub in our example) admins which have access to API keys and can change branch protection rules.",[],{},{"nodeType":1294,"data":3808,"content":3809},{},[3810],{"nodeType":1293,"value":3811,"marks":3812,"data":3813},"Managing privileged identities like these admin accounts is a constant challenge, but continuing what is perhaps the central thread of this blog, identity attacks (likely through social engineering) are going to be the first port of call for an attacker.",[],{},{"nodeType":1378,"data":3815,"content":3816},{},[3817],{"nodeType":1293,"value":3818,"marks":3819,"data":3820},"Recommendations for hardening admin identities",[],{},{"nodeType":1294,"data":3822,"content":3823},{},[3824],{"nodeType":1293,"value":3825,"marks":3826,"data":3827},"If there’s one thing we know here at Push, it’s identity security — but I’ll fight the urge to go into too much depth with generic recommendations, and focus on where there are opportunities specific to this scope.",[],{},{"nodeType":1294,"data":3829,"content":3830},{},[3831],{"nodeType":1293,"value":3832,"marks":3833,"data":3834},"One of the most critical aspects of securing these admin accounts is making sure that they are phishing resistant. Where possible, you should be using phishing resistant MFA methods. Typically this means some kind of domain bound security key using the WebAuthn protocol — a passkey using your fingerprint reader is good, something like Yubikey is great. I think this is pretty well understood, but where it goes wrong most often is when backup methods and alternative login methods exist. For example, you might be using an Google OIDC login secured with a Yubikey to access the Firefox store, but not realize that this account also has a password to set that doesn’t have MFA, or has phish-able MFA like SMS or an app-code set.",[],{},{"nodeType":1294,"data":3836,"content":3837},{},[3838],{"nodeType":1293,"value":3839,"marks":3840,"data":3841},"Attackers are increasingly using attacks that downgrade MFA methods (so the attacker will request the least secure active MFA method when phishing you, rather than the strong method you might use day-to-day), and this is completely automated in modern MFA-bypass phishing kits.",[],{},{"nodeType":1294,"data":3843,"content":3844},{},[3845],{"nodeType":1293,"value":3846,"marks":3847,"data":3848},"Warning, product plug coming 🙂 — what we do at Push is help you identify issues like these at scale, across all admin, break-glass, dev, and normal user accounts. We also block credential phishing by detecting when users try to enter their SSO credentials on the wrong page, detecting session theft, and can even monitor when credentials stolen via infostealers show up on underground forums.",[],{},{"nodeType":2167,"data":3850,"content":3851},{},[],{"nodeType":1322,"data":3853,"content":3854},{},[3855],{"nodeType":1293,"value":3856,"marks":3857,"data":3858},"Going even further to harden extension deployment",[],{},{"nodeType":1294,"data":3860,"content":3861},{},[3862],{"nodeType":1293,"value":3863,"marks":3864,"data":3865},"This blog is already getting way too long, but there are a lot of other controls that can really help harden extension deployment — if there is interest I might go into detail in a future blog post, but for now let me just mention some of them.",[],{},{"nodeType":1378,"data":3867,"content":3868},{},[3869],{"nodeType":1293,"value":3870,"marks":3871,"data":3872},"Multiparty approvals for Google",[],{},{"nodeType":1294,"data":3874,"content":3875},{},[3876],{"nodeType":1293,"value":3877,"marks":3878,"data":3879},"If you’re going to do multiparty approvals for extension deployments, then enabling this for admin actions that protect that infrastructure seems like a no-brainer.",[],{},{"nodeType":1294,"data":3881,"content":3882},{},[3883,3887,3896],{"nodeType":1293,"value":3884,"marks":3885,"data":3886},"Google allows you to enable ",[],{},{"nodeType":1827,"data":3888,"content":3890},{"uri":3889},"https://support.google.com/a/answer/13790448?hl=en",[3891],{"nodeType":1293,"value":3892,"marks":3893,"data":3895},"multiparty approval for sensitive actions",[3894],{"type":1835},{},{"nodeType":1293,"value":3897,"marks":3898,"data":3899}," in Google Workspace. We wish it was a bit more granular, and covered more configurable actions — but it’s an awesome start, nice work Google!",[],{},{"nodeType":1378,"data":3901,"content":3902},{},[3903],{"nodeType":1293,"value":3904,"marks":3905,"data":3906},"Admin workstations",[],{},{"nodeType":1294,"data":3908,"content":3909},{},[3910],{"nodeType":1293,"value":3911,"marks":3912,"data":3913},"When we used to do red-team exercises, one of the most challenging controls to work around was when the admin accounts we were targeting were only used on dedicated admin workstations. Ideally those workstations would do nothing except admin tasks, and the accounts would be locked down, so in this case that might mean:",[],{},{"nodeType":1580,"data":3915,"content":3916},{},[3917,3927,3937],{"nodeType":1584,"data":3918,"content":3919},{},[3920],{"nodeType":1294,"data":3921,"content":3922},{},[3923],{"nodeType":1293,"value":3924,"marks":3925,"data":3926},"No email access",[],{},{"nodeType":1584,"data":3928,"content":3929},{},[3930],{"nodeType":1294,"data":3931,"content":3932},{},[3933],{"nodeType":1293,"value":3934,"marks":3935,"data":3936},"No extensions",[],{},{"nodeType":1584,"data":3938,"content":3939},{},[3940],{"nodeType":1294,"data":3941,"content":3942},{},[3943],{"nodeType":1293,"value":3944,"marks":3945,"data":3946},"No OAuth apps",[],{},{"nodeType":1294,"data":3948,"content":3949},{},[3950],{"nodeType":1293,"value":3951,"marks":3952,"data":3953},"This becomes incredibly challenging to attack — but it does come with some obvious painful UX impact for admins, so I don’t think this is a no-brainer for everyone.",[],{},{"nodeType":1378,"data":3955,"content":3956},{},[3957],{"nodeType":1293,"value":3958,"marks":3959,"data":3960},"Isolate support emails",[],{},{"nodeType":1294,"data":3962,"content":3963},{},[3964],{"nodeType":1293,"value":3965,"marks":3966,"data":3967},"Sending your support emails to extension developers creates a direct path to start social engineering — something attackers used to great effect in this campaign. If your developers are not also your frontline support team, consider ringfencing developers from that public support email group so attackers have to at least do some reconnaissance work to identify the developers to target.",[],{},{"nodeType":1378,"data":3969,"content":3970},{},[3971],{"nodeType":1293,"value":3972,"marks":3973,"data":3974},"Detection and response",[],{},{"nodeType":1294,"data":3976,"content":3977},{},[3978],{"nodeType":1293,"value":3979,"marks":3980,"data":3981},"As always there are a myriad of things that can be monitored. We think high value would be doing things like:",[],{},{"nodeType":1580,"data":3983,"content":3984},{},[3985,4028,4038],{"nodeType":1584,"data":3986,"content":3987},{},[3988,3995],{"nodeType":1294,"data":3989,"content":3990},{},[3991],{"nodeType":1293,"value":3992,"marks":3993,"data":3994},"Checking whether new versions of your extension appearing in the store is directly related or caused by the CI/CD process, and:",[],{},{"nodeType":1580,"data":3996,"content":3997},{},[3998,4008,4018],{"nodeType":1584,"data":3999,"content":4000},{},[4001],{"nodeType":1294,"data":4002,"content":4003},{},[4004],{"nodeType":1293,"value":4005,"marks":4006,"data":4007},"Alert if there is no direct link here.",[],{},{"nodeType":1584,"data":4009,"content":4010},{},[4011],{"nodeType":1294,"data":4012,"content":4013},{},[4014],{"nodeType":1293,"value":4015,"marks":4016,"data":4017},"You can configure email alerts to trigger this automated check.",[],{},{"nodeType":1584,"data":4019,"content":4020},{},[4021],{"nodeType":1294,"data":4022,"content":4023},{},[4024],{"nodeType":1293,"value":4025,"marks":4026,"data":4027},"You could consider immediate automated roll-back to a previous version of the extension if it wasn’t published via the CI/CD system.",[],{},{"nodeType":1584,"data":4029,"content":4030},{},[4031],{"nodeType":1294,"data":4032,"content":4033},{},[4034],{"nodeType":1293,"value":4035,"marks":4036,"data":4037},"Any activity on break-glass accounts — these accounts should only be used after they are activated by admins to complete a specific task, so this is an obvious alert to configure.",[],{},{"nodeType":1584,"data":4039,"content":4040},{},[4041],{"nodeType":1294,"data":4042,"content":4043},{},[4044],{"nodeType":1293,"value":4045,"marks":4046,"data":4047},"Unusual activity on service accounts — this is a bit of work to profile, but very valuable.",[],{},{"nodeType":2167,"data":4049,"content":4050},{},[],{"nodeType":1322,"data":4052,"content":4053},{},[4054],{"nodeType":1293,"value":4055,"marks":4056,"data":4057},"Our request to extension stores",[],{},{"nodeType":1294,"data":4059,"content":4060},{},[4061],{"nodeType":1293,"value":4062,"marks":4063,"data":4064},"I’ll use this opportunity to make an open request to the browser extension stores for a couple of features that I think would really benefit the entire ecosystem:",[],{},{"nodeType":1580,"data":4066,"content":4067},{},[4068,4078,4088,4098],{"nodeType":1584,"data":4069,"content":4070},{},[4071],{"nodeType":1294,"data":4072,"content":4073},{},[4074],{"nodeType":1293,"value":4075,"marks":4076,"data":4077},"Add the ability to configure an explicit multiparty approval process (and show the public which extensions have enabled these controls!).",[],{},{"nodeType":1584,"data":4079,"content":4080},{},[4081],{"nodeType":1294,"data":4082,"content":4083},{},[4084],{"nodeType":1293,"value":4085,"marks":4086,"data":4087},"More granular permissions or roles (e.g. only edit descriptions, only only upload, only publish, only accept new terms).",[],{},{"nodeType":1584,"data":4089,"content":4090},{},[4091],{"nodeType":1294,"data":4092,"content":4093},{},[4094],{"nodeType":1293,"value":4095,"marks":4096,"data":4097},"Better logs and monitoring – making it easier to ingest events related to your extension via the store into a SIEM would make alerts much easier to configure.",[],{},{"nodeType":1584,"data":4099,"content":4100},{},[4101],{"nodeType":1294,"data":4102,"content":4103},{},[4104],{"nodeType":1293,"value":4105,"marks":4106,"data":4107},"Enforce stronger default identity security controls (even if only for risky or popular extensions) — we enforce MFA by default for GitHub repositories now, it’s about time that we require MFA to access an extension store as well.",[],{},{"nodeType":2167,"data":4109,"content":4110},{},[],{"nodeType":1322,"data":4112,"content":4113},{},[4114],{"nodeType":1293,"value":4115,"marks":4116,"data":4117},"Conclusion",[],{},{"nodeType":1294,"data":4119,"content":4120},{},[4121],{"nodeType":1293,"value":4122,"marks":4123,"data":4124},"We’ve seen in the past that the successful use of new techniques seem to inspire other attackers and lead to many similar attacks, so the smart money is on this happening again.",[],{},{"nodeType":1294,"data":4126,"content":4127},{},[4128,4132,4141],{"nodeType":1293,"value":4129,"marks":4130,"data":4131},"There is lots to work needed to secure this process, and hopefully this blog has provided a starting point. We’d love to hear from you — let’s start ",[],{},{"nodeType":1827,"data":4133,"content":4135},{"uri":4134},"https://github.com/pushsecurity/extension-security-guide/discussions",[4136],{"nodeType":1293,"value":4137,"marks":4138,"data":4140},"sharing some ideas",[4139],{"type":1835},{},{"nodeType":1293,"value":4142,"marks":4143,"data":4144}," around hardening this process even more!",[],{},{"nodeType":1294,"data":4146,"content":4147},{},[4148],{"nodeType":1293,"value":4149,"marks":4150,"data":4151},"If you're a customer rather than an extension developer, this guide hopefully gives you a sense of the supply chain attacks that are likely to happen in the future. Asking your vendors which steps they’ve taken to prevent these attacks might be a sensible addition to your vendor risk assessment process (when the product includes a browser extension). ",[],{},{"nodeType":1294,"data":4153,"content":4154},{},[4155],{"nodeType":1293,"value":4156,"marks":4157,"data":4158},"This kind of due diligence is viable where the developer is a vendor you have a commercial relationship with, but is a non-starter when it’s an extension that’s offered for free by well meaning open source developers. In these cases a sensible response might be to require approvals for new browser extensions, a technical risk review based on (at least) the permissions the extension is asking for, and managed browser policies to control and further limit what some or all extensions can do. For example, you may decide to block access for extensions to your IdP’s domains to protect your SSO accounts. ",[],{},{"nodeType":1294,"data":4160,"content":4161},{},[4162],{"nodeType":1293,"value":4163,"marks":4164,"data":4165},"We’ll be releasing guidance on how to manage third party extensions used in your organization in the near future — subscribe to our mailing list to be notified when we do.",[],{},{"nodeType":2167,"data":4167,"content":4168},{},[],{"nodeType":1322,"data":4170,"content":4171},{},[4172],{"nodeType":1293,"value":4173,"marks":4174,"data":4175},"Appendix: Extension store differences",[],{},{"nodeType":1294,"data":4177,"content":4178},{},[4179],{"nodeType":1293,"value":4180,"marks":4181,"data":4182},"We covered the general process of publishing extensions to the different stores in the “Primer on extension stores and the publication process” section above, now let’s talk about the differences between the stores. Let’s start with how they provision for automated deployments.",[],{},{"nodeType":1378,"data":4184,"content":4185},{},[4186],{"nodeType":1293,"value":4187,"marks":4188,"data":4189},"Automation keys",[],{},{"nodeType":1294,"data":4191,"content":4192},{},[4193,4197,4206],{"nodeType":1293,"value":4194,"marks":4195,"data":4196},"The Chrome Web Store allows automation through an OAuth app. As described in ",[],{},{"nodeType":1827,"data":4198,"content":4200},{"uri":4199},"https://developer.chrome.com/docs/webstore/using-api",[4201],{"nodeType":1293,"value":4202,"marks":4203,"data":4205},"their documentation",[4204],{"type":1835},{},{"nodeType":1293,"value":4207,"marks":4208,"data":4209},", the process is for a developer to create a custom OAuth app (a client on OAuth speak), then a user with access to the store authorizes the OAuth app to access the chrome store on their behalf using the https://www.googleapis.com/auth/chromewebstore scope. ",[],{},{"nodeType":1294,"data":4211,"content":4212},{},[4213],{"nodeType":1293,"value":4214,"marks":4215,"data":4216},"If this sounds familiar, that’s because this is exactly what attackers tricked developers into doing using their own OAuth app in the Cyberhave campaign. In the normal flow, the developer then uses a service key linked to the OAuth app in their CI/CD flow to automate the deployment process.",[],{},{"nodeType":1294,"data":4218,"content":4219},{},[4220],{"nodeType":1293,"value":4221,"marks":4222,"data":4223},"The situation is a bit simpler for Firefox and Apple, which both work by developers just creating simple static API keys, though Apple does allow you to create personal API keys linked to a single account (and that account’s permissions).",[],{},{"nodeType":1378,"data":4225,"content":4226},{},[4227],{"nodeType":1293,"value":4228,"marks":4229,"data":4230},"Accessing the store",[],{},{"nodeType":1294,"data":4232,"content":4233},{},[4234],{"nodeType":1293,"value":4235,"marks":4236,"data":4237},"In a business environment, using SSO to access apps is extremely useful as it simplifies the provisioning and security-ops work of maintaining secure identities — and often provides more secure authentication methods (e.g. hardware backed WebAuthn MFA) than the target app does (as is the case for the web stores). It also simplifies and centralizes the ability to log and monitor the use of these accounts. I can’t recommend the use of strong SSO authentication enough in cases like this where ensuring you have the right controls in place is paramount.",[],{},{"nodeType":1294,"data":4239,"content":4240},{},[4241],{"nodeType":1293,"value":4242,"marks":4243,"data":4244},"Fortunately all the stores provide SSO login methods. For the Chrome store, users login (only) using Google SSO accounts — and if they are part of a Google Workspace, access can be provisioned through membership to a group. Firefox allows access using a username and password, but also offers OIDC SSO logins through Google or Apple accounts. If you make use of Managed Apple IDs, Apple offers OIDC SSO authentication as well. ",[],{},{"nodeType":1294,"data":4246,"content":4247},{},[4248,4252,4257],{"nodeType":1293,"value":4249,"marks":4250,"data":4251},"For Chrome and Firefox there is no real concept of roles (or nothing really useful), and ",[],{},{"nodeType":1293,"value":4253,"marks":4254,"data":4256},"you should assume any user with access to a team in your account has the ability to publish extension updates",[4255],{"type":1835},{},{"nodeType":1293,"value":4258,"marks":4259,"data":4260},". Apple offers more granular roles and permissions - and there are low privileged roles that can’t publish updates.",[],{},{"entries":4262},{"hyperlink":4263,"inline":4264,"block":4265},[],[],[4266,4275,4282],{"sys":4267,"__typename":4268,"title":4269,"caption":4270,"layoutMode":118,"file":4271},{"id":3379},"Image","Attack paths to publishing a malicious extension","Graphic showing the possible high-level attack paths to publishing a malicious extension. The path in bold (consent phishing) represents the path traversed in the Cyberhaven breach. ",{"url":4272,"width":4273,"height":4274},"https://images.ctfassets.net/y1cdw1ablpvd/449fRkebgBONYaYRJQuZZd/f1b9d7487dd6208516a760b5cac458a4/Attack_paths_to_publishing_a_malicious_extension.png",1423,1912,{"sys":4276,"__typename":4268,"title":4277,"caption":4277,"layoutMode":118,"file":4278},{"id":3708},"Steps required to automate a publish to the Apple store",{"url":4279,"width":4280,"height":4281},"https://images.ctfassets.net/y1cdw1ablpvd/63QG3teGwNduKQkKP7QfVo/7a78a4b433ab426bd6b8935b0701137c/image2.png",676,506,{"sys":4283,"__typename":4268,"title":4284,"caption":4285,"layoutMode":118,"file":4286},{"id":3781},"Secure multiparty auth diagram","Strong hardware-backed multiparty authenticated deployments to the stores",{"url":4287,"width":4288,"height":4289},"https://images.ctfassets.net/y1cdw1ablpvd/6j4ZRB7D1VA7TfcvIED9Q1/ebf88ffa4082759f77f5a99594a1a9b7/Secure_multiparty_auth_diagram__3_.png",1920,1080,"content:blog:guide-to-secure-browser-extension-deployment.json","json","content","blog/guide-to-secure-browser-extension-deployment.json","blog/guide-to-secure-browser-extension-deployment",1776359986213]