[{"data":1,"prerenderedAt":695},["ShallowReactive",2],{"/en-us/blog/authors/oliver-smith":3,"navigation-en-us":22,"banner-en-us":432,"footer-en-us":442,"blog-author-posts-en-us-oliver-smith":684},{"id":4,"title":5,"body":6,"config":7,"content":10,"description":6,"extension":15,"meta":16,"navigation":17,"path":18,"seo":19,"stem":20,"__hash__":21},"blogAuthors/en-us/blog/authors/oliver-smith.yml","Oliver Smith",null,{"template":8,"gitlabHandle":9},"BlogAuthor","ojsmith",{"name":5,"role":11,"bio":12,"config":13},"","Senior Threat Intelligence Engineer",{"headshot":14},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1769722302/juupgr8w0batn0fek4xp.jpg","yml",{},true,"/en-us/blog/authors/oliver-smith",{},"en-us/blog/authors/oliver-smith","As55YdsLIHnkiElMCl4VahGEjaCR5uH_Py6RHVb0uxE",{"data":23},{"logo":24,"freeTrial":29,"sales":34,"login":39,"items":44,"search":352,"minimal":383,"duo":402,"switchNav":411,"pricingDeployment":422},{"config":25},{"href":26,"dataGaName":27,"dataGaLocation":28},"/","gitlab logo","header",{"text":30,"config":31},"Get free trial",{"href":32,"dataGaName":33,"dataGaLocation":28},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":35,"config":36},"Talk to sales",{"href":37,"dataGaName":38,"dataGaLocation":28},"/sales/","sales",{"text":40,"config":41},"Sign in",{"href":42,"dataGaName":43,"dataGaLocation":28},"https://gitlab.com/users/sign_in/","sign in",[45,72,167,172,273,333],{"text":46,"config":47,"cards":49},"Platform",{"dataNavLevelOne":48},"platform",[50,56,64],{"title":46,"description":51,"link":52},"The intelligent orchestration platform for DevSecOps",{"text":53,"config":54},"Explore our Platform",{"href":55,"dataGaName":48,"dataGaLocation":28},"/platform/",{"title":57,"description":58,"link":59},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":60,"config":61},"Meet GitLab Duo",{"href":62,"dataGaName":63,"dataGaLocation":28},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":65,"description":66,"link":67},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":68,"config":69},"Learn more",{"href":70,"dataGaName":71,"dataGaLocation":28},"/why-gitlab/","why gitlab",{"text":73,"left":17,"config":74,"link":76,"lists":80,"footer":149},"Product",{"dataNavLevelOne":75},"solutions",{"text":77,"config":78},"View all Solutions",{"href":79,"dataGaName":75,"dataGaLocation":28},"/solutions/",[81,105,128],{"title":82,"description":83,"link":84,"items":89},"Automation","CI/CD and automation to accelerate deployment",{"config":85},{"icon":86,"href":87,"dataGaName":88,"dataGaLocation":28},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[90,94,97,101],{"text":91,"config":92},"CI/CD",{"href":93,"dataGaLocation":28,"dataGaName":91},"/solutions/continuous-integration/",{"text":57,"config":95},{"href":62,"dataGaLocation":28,"dataGaName":96},"gitlab duo agent platform - product menu",{"text":98,"config":99},"Source Code Management",{"href":100,"dataGaLocation":28,"dataGaName":98},"/solutions/source-code-management/",{"text":102,"config":103},"Automated Software Delivery",{"href":87,"dataGaLocation":28,"dataGaName":104},"Automated software delivery",{"title":106,"description":107,"link":108,"items":113},"Security","Deliver code faster without compromising security",{"config":109},{"href":110,"dataGaName":111,"dataGaLocation":28,"icon":112},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[114,118,123],{"text":115,"config":116},"Application Security Testing",{"href":110,"dataGaName":117,"dataGaLocation":28},"Application security testing",{"text":119,"config":120},"Software Supply Chain Security",{"href":121,"dataGaLocation":28,"dataGaName":122},"/solutions/supply-chain/","Software supply chain security",{"text":124,"config":125},"Software Compliance",{"href":126,"dataGaName":127,"dataGaLocation":28},"/solutions/software-compliance/","software compliance",{"title":129,"link":130,"items":135},"Measurement",{"config":131},{"icon":132,"href":133,"dataGaName":134,"dataGaLocation":28},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[136,140,144],{"text":137,"config":138},"Visibility & Measurement",{"href":133,"dataGaLocation":28,"dataGaName":139},"Visibility and Measurement",{"text":141,"config":142},"Value Stream Management",{"href":143,"dataGaLocation":28,"dataGaName":141},"/solutions/value-stream-management/",{"text":145,"config":146},"Analytics & Insights",{"href":147,"dataGaLocation":28,"dataGaName":148},"/solutions/analytics-and-insights/","Analytics and insights",{"title":150,"items":151},"GitLab for",[152,157,162],{"text":153,"config":154},"Enterprise",{"href":155,"dataGaLocation":28,"dataGaName":156},"/enterprise/","enterprise",{"text":158,"config":159},"Small Business",{"href":160,"dataGaLocation":28,"dataGaName":161},"/small-business/","small business",{"text":163,"config":164},"Public Sector",{"href":165,"dataGaLocation":28,"dataGaName":166},"/solutions/public-sector/","public sector",{"text":168,"config":169},"Pricing",{"href":170,"dataGaName":171,"dataGaLocation":28,"dataNavLevelOne":171},"/pricing/","pricing",{"text":173,"config":174,"link":176,"lists":180,"feature":260},"Resources",{"dataNavLevelOne":175},"resources",{"text":177,"config":178},"View all resources",{"href":179,"dataGaName":175,"dataGaLocation":28},"/resources/",[181,214,232],{"title":182,"items":183},"Getting started",[184,189,194,199,204,209],{"text":185,"config":186},"Install",{"href":187,"dataGaName":188,"dataGaLocation":28},"/install/","install",{"text":190,"config":191},"Quick start guides",{"href":192,"dataGaName":193,"dataGaLocation":28},"/get-started/","quick setup checklists",{"text":195,"config":196},"Learn",{"href":197,"dataGaLocation":28,"dataGaName":198},"https://university.gitlab.com/","learn",{"text":200,"config":201},"Product documentation",{"href":202,"dataGaName":203,"dataGaLocation":28},"https://docs.gitlab.com/","product documentation",{"text":205,"config":206},"Best practice videos",{"href":207,"dataGaName":208,"dataGaLocation":28},"/getting-started-videos/","best practice videos",{"text":210,"config":211},"Integrations",{"href":212,"dataGaName":213,"dataGaLocation":28},"/integrations/","integrations",{"title":215,"items":216},"Discover",[217,222,227],{"text":218,"config":219},"Customer success stories",{"href":220,"dataGaName":221,"dataGaLocation":28},"/customers/","customer success stories",{"text":223,"config":224},"Blog",{"href":225,"dataGaName":226,"dataGaLocation":28},"/blog/","blog",{"text":228,"config":229},"Remote",{"href":230,"dataGaName":231,"dataGaLocation":28},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":233,"items":234},"Connect",[235,240,245,250,255],{"text":236,"config":237},"GitLab Services",{"href":238,"dataGaName":239,"dataGaLocation":28},"/services/","services",{"text":241,"config":242},"Community",{"href":243,"dataGaName":244,"dataGaLocation":28},"/community/","community",{"text":246,"config":247},"Forum",{"href":248,"dataGaName":249,"dataGaLocation":28},"https://forum.gitlab.com/","forum",{"text":251,"config":252},"Events",{"href":253,"dataGaName":254,"dataGaLocation":28},"/events/","events",{"text":256,"config":257},"Partners",{"href":258,"dataGaName":259,"dataGaLocation":28},"/partners/","partners",{"backgroundColor":261,"textColor":262,"text":263,"image":264,"link":268},"#2f2a6b","#fff","Insights for the future of software development",{"altText":265,"config":266},"the source promo card",{"src":267},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":269,"config":270},"Read the latest",{"href":271,"dataGaName":272,"dataGaLocation":28},"/the-source/","the source",{"text":274,"config":275,"lists":277},"Company",{"dataNavLevelOne":276},"company",[278],{"items":279},[280,285,291,293,298,303,308,313,318,323,328],{"text":281,"config":282},"About",{"href":283,"dataGaName":284,"dataGaLocation":28},"/company/","about",{"text":286,"config":287,"footerGa":290},"Jobs",{"href":288,"dataGaName":289,"dataGaLocation":28},"/jobs/","jobs",{"dataGaName":289},{"text":251,"config":292},{"href":253,"dataGaName":254,"dataGaLocation":28},{"text":294,"config":295},"Leadership",{"href":296,"dataGaName":297,"dataGaLocation":28},"/company/team/e-group/","leadership",{"text":299,"config":300},"Team",{"href":301,"dataGaName":302,"dataGaLocation":28},"/company/team/","team",{"text":304,"config":305},"Handbook",{"href":306,"dataGaName":307,"dataGaLocation":28},"https://handbook.gitlab.com/","handbook",{"text":309,"config":310},"Investor relations",{"href":311,"dataGaName":312,"dataGaLocation":28},"https://ir.gitlab.com/","investor relations",{"text":314,"config":315},"Trust Center",{"href":316,"dataGaName":317,"dataGaLocation":28},"/security/","trust center",{"text":319,"config":320},"AI Transparency Center",{"href":321,"dataGaName":322,"dataGaLocation":28},"/ai-transparency-center/","ai transparency center",{"text":324,"config":325},"Newsletter",{"href":326,"dataGaName":327,"dataGaLocation":28},"/company/contact/#contact-forms","newsletter",{"text":329,"config":330},"Press",{"href":331,"dataGaName":332,"dataGaLocation":28},"/press/","press",{"text":334,"config":335,"lists":336},"Contact us",{"dataNavLevelOne":276},[337],{"items":338},[339,342,347],{"text":35,"config":340},{"href":37,"dataGaName":341,"dataGaLocation":28},"talk to sales",{"text":343,"config":344},"Support portal",{"href":345,"dataGaName":346,"dataGaLocation":28},"https://support.gitlab.com","support portal",{"text":348,"config":349},"Customer portal",{"href":350,"dataGaName":351,"dataGaLocation":28},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":353,"login":354,"suggestions":361},"Close",{"text":355,"link":356},"To search repositories and projects, login to",{"text":357,"config":358},"gitlab.com",{"href":42,"dataGaName":359,"dataGaLocation":360},"search login","search",{"text":362,"default":363},"Suggestions",[364,366,370,372,376,380],{"text":57,"config":365},{"href":62,"dataGaName":57,"dataGaLocation":360},{"text":367,"config":368},"Code Suggestions (AI)",{"href":369,"dataGaName":367,"dataGaLocation":360},"/solutions/code-suggestions/",{"text":91,"config":371},{"href":93,"dataGaName":91,"dataGaLocation":360},{"text":373,"config":374},"GitLab on AWS",{"href":375,"dataGaName":373,"dataGaLocation":360},"/partners/technology-partners/aws/",{"text":377,"config":378},"GitLab on Google Cloud",{"href":379,"dataGaName":377,"dataGaLocation":360},"/partners/technology-partners/google-cloud-platform/",{"text":381,"config":382},"Why GitLab?",{"href":70,"dataGaName":381,"dataGaLocation":360},{"freeTrial":384,"mobileIcon":389,"desktopIcon":394,"secondaryButton":397},{"text":385,"config":386},"Start free trial",{"href":387,"dataGaName":33,"dataGaLocation":388},"https://gitlab.com/-/trials/new/","nav",{"altText":390,"config":391},"Gitlab Icon",{"src":392,"dataGaName":393,"dataGaLocation":388},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":390,"config":395},{"src":396,"dataGaName":393,"dataGaLocation":388},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":398,"config":399},"Get Started",{"href":400,"dataGaName":401,"dataGaLocation":388},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":403,"mobileIcon":407,"desktopIcon":409},{"text":404,"config":405},"Learn more about GitLab Duo",{"href":62,"dataGaName":406,"dataGaLocation":388},"gitlab duo",{"altText":390,"config":408},{"src":392,"dataGaName":393,"dataGaLocation":388},{"altText":390,"config":410},{"src":396,"dataGaName":393,"dataGaLocation":388},{"button":412,"mobileIcon":417,"desktopIcon":419},{"text":413,"config":414},"/switch",{"href":415,"dataGaName":416,"dataGaLocation":388},"#contact","switch",{"altText":390,"config":418},{"src":392,"dataGaName":393,"dataGaLocation":388},{"altText":390,"config":420},{"src":421,"dataGaName":393,"dataGaLocation":388},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":423,"mobileIcon":428,"desktopIcon":430},{"text":424,"config":425},"Back to pricing",{"href":170,"dataGaName":426,"dataGaLocation":388,"icon":427},"back to pricing","GoBack",{"altText":390,"config":429},{"src":392,"dataGaName":393,"dataGaLocation":388},{"altText":390,"config":431},{"src":396,"dataGaName":393,"dataGaLocation":388},{"title":433,"button":434,"config":439},"See how agentic AI transforms software delivery",{"text":435,"config":436},"Watch GitLab Transcend now",{"href":437,"dataGaName":438,"dataGaLocation":28},"/events/transcend/virtual/","transcend event",{"layout":440,"icon":441,"disabled":17},"release","AiStar",{"data":443},{"text":444,"source":445,"edit":451,"contribute":456,"config":461,"items":466,"minimal":673},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":446,"config":447},"View page source",{"href":448,"dataGaName":449,"dataGaLocation":450},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":452,"config":453},"Edit this page",{"href":454,"dataGaName":455,"dataGaLocation":450},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":457,"config":458},"Please contribute",{"href":459,"dataGaName":460,"dataGaLocation":450},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":462,"facebook":463,"youtube":464,"linkedin":465},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[467,514,568,612,639],{"title":168,"links":468,"subMenu":483},[469,473,478],{"text":470,"config":471},"View plans",{"href":170,"dataGaName":472,"dataGaLocation":450},"view plans",{"text":474,"config":475},"Why Premium?",{"href":476,"dataGaName":477,"dataGaLocation":450},"/pricing/premium/","why premium",{"text":479,"config":480},"Why Ultimate?",{"href":481,"dataGaName":482,"dataGaLocation":450},"/pricing/ultimate/","why ultimate",[484],{"title":485,"links":486},"Contact Us",[487,490,492,494,499,504,509],{"text":488,"config":489},"Contact sales",{"href":37,"dataGaName":38,"dataGaLocation":450},{"text":343,"config":491},{"href":345,"dataGaName":346,"dataGaLocation":450},{"text":348,"config":493},{"href":350,"dataGaName":351,"dataGaLocation":450},{"text":495,"config":496},"Status",{"href":497,"dataGaName":498,"dataGaLocation":450},"https://status.gitlab.com/","status",{"text":500,"config":501},"Terms of use",{"href":502,"dataGaName":503,"dataGaLocation":450},"/terms/","terms of use",{"text":505,"config":506},"Privacy statement",{"href":507,"dataGaName":508,"dataGaLocation":450},"/privacy/","privacy statement",{"text":510,"config":511},"Cookie preferences",{"dataGaName":512,"dataGaLocation":450,"id":513,"isOneTrustButton":17},"cookie preferences","ot-sdk-btn",{"title":73,"links":515,"subMenu":524},[516,520],{"text":517,"config":518},"DevSecOps platform",{"href":55,"dataGaName":519,"dataGaLocation":450},"devsecops platform",{"text":521,"config":522},"AI-Assisted Development",{"href":62,"dataGaName":523,"dataGaLocation":450},"ai-assisted development",[525],{"title":526,"links":527},"Topics",[528,533,538,543,548,553,558,563],{"text":529,"config":530},"CICD",{"href":531,"dataGaName":532,"dataGaLocation":450},"/topics/ci-cd/","cicd",{"text":534,"config":535},"GitOps",{"href":536,"dataGaName":537,"dataGaLocation":450},"/topics/gitops/","gitops",{"text":539,"config":540},"DevOps",{"href":541,"dataGaName":542,"dataGaLocation":450},"/topics/devops/","devops",{"text":544,"config":545},"Version Control",{"href":546,"dataGaName":547,"dataGaLocation":450},"/topics/version-control/","version control",{"text":549,"config":550},"DevSecOps",{"href":551,"dataGaName":552,"dataGaLocation":450},"/topics/devsecops/","devsecops",{"text":554,"config":555},"Cloud Native",{"href":556,"dataGaName":557,"dataGaLocation":450},"/topics/cloud-native/","cloud native",{"text":559,"config":560},"AI for Coding",{"href":561,"dataGaName":562,"dataGaLocation":450},"/topics/devops/ai-for-coding/","ai for coding",{"text":564,"config":565},"Agentic AI",{"href":566,"dataGaName":567,"dataGaLocation":450},"/topics/agentic-ai/","agentic ai",{"title":569,"links":570},"Solutions",[571,573,575,580,584,587,591,594,596,599,602,607],{"text":115,"config":572},{"href":110,"dataGaName":115,"dataGaLocation":450},{"text":104,"config":574},{"href":87,"dataGaName":88,"dataGaLocation":450},{"text":576,"config":577},"Agile development",{"href":578,"dataGaName":579,"dataGaLocation":450},"/solutions/agile-delivery/","agile delivery",{"text":581,"config":582},"SCM",{"href":100,"dataGaName":583,"dataGaLocation":450},"source code management",{"text":529,"config":585},{"href":93,"dataGaName":586,"dataGaLocation":450},"continuous integration & delivery",{"text":588,"config":589},"Value stream management",{"href":143,"dataGaName":590,"dataGaLocation":450},"value stream management",{"text":534,"config":592},{"href":593,"dataGaName":537,"dataGaLocation":450},"/solutions/gitops/",{"text":153,"config":595},{"href":155,"dataGaName":156,"dataGaLocation":450},{"text":597,"config":598},"Small business",{"href":160,"dataGaName":161,"dataGaLocation":450},{"text":600,"config":601},"Public sector",{"href":165,"dataGaName":166,"dataGaLocation":450},{"text":603,"config":604},"Education",{"href":605,"dataGaName":606,"dataGaLocation":450},"/solutions/education/","education",{"text":608,"config":609},"Financial services",{"href":610,"dataGaName":611,"dataGaLocation":450},"/solutions/finance/","financial services",{"title":173,"links":613},[614,616,618,620,623,625,627,629,631,633,635,637],{"text":185,"config":615},{"href":187,"dataGaName":188,"dataGaLocation":450},{"text":190,"config":617},{"href":192,"dataGaName":193,"dataGaLocation":450},{"text":195,"config":619},{"href":197,"dataGaName":198,"dataGaLocation":450},{"text":200,"config":621},{"href":202,"dataGaName":622,"dataGaLocation":450},"docs",{"text":223,"config":624},{"href":225,"dataGaName":226,"dataGaLocation":450},{"text":218,"config":626},{"href":220,"dataGaName":221,"dataGaLocation":450},{"text":228,"config":628},{"href":230,"dataGaName":231,"dataGaLocation":450},{"text":236,"config":630},{"href":238,"dataGaName":239,"dataGaLocation":450},{"text":241,"config":632},{"href":243,"dataGaName":244,"dataGaLocation":450},{"text":246,"config":634},{"href":248,"dataGaName":249,"dataGaLocation":450},{"text":251,"config":636},{"href":253,"dataGaName":254,"dataGaLocation":450},{"text":256,"config":638},{"href":258,"dataGaName":259,"dataGaLocation":450},{"title":274,"links":640},[641,643,645,647,649,651,653,657,662,664,666,668],{"text":281,"config":642},{"href":283,"dataGaName":276,"dataGaLocation":450},{"text":286,"config":644},{"href":288,"dataGaName":289,"dataGaLocation":450},{"text":294,"config":646},{"href":296,"dataGaName":297,"dataGaLocation":450},{"text":299,"config":648},{"href":301,"dataGaName":302,"dataGaLocation":450},{"text":304,"config":650},{"href":306,"dataGaName":307,"dataGaLocation":450},{"text":309,"config":652},{"href":311,"dataGaName":312,"dataGaLocation":450},{"text":654,"config":655},"Sustainability",{"href":656,"dataGaName":654,"dataGaLocation":450},"/sustainability/",{"text":658,"config":659},"Diversity, inclusion and belonging (DIB)",{"href":660,"dataGaName":661,"dataGaLocation":450},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":314,"config":663},{"href":316,"dataGaName":317,"dataGaLocation":450},{"text":324,"config":665},{"href":326,"dataGaName":327,"dataGaLocation":450},{"text":329,"config":667},{"href":331,"dataGaName":332,"dataGaLocation":450},{"text":669,"config":670},"Modern Slavery Transparency Statement",{"href":671,"dataGaName":672,"dataGaLocation":450},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":674},[675,678,681],{"text":676,"config":677},"Terms",{"href":502,"dataGaName":503,"dataGaLocation":450},{"text":679,"config":680},"Cookies",{"dataGaName":512,"dataGaLocation":450,"id":513,"isOneTrustButton":17},{"text":682,"config":683},"Privacy",{"href":507,"dataGaName":508,"dataGaLocation":450},[685],{"content":686,"config":693},{"title":687,"heroImage":688,"category":689,"description":690,"authors":691,"date":692},"GitLab Threat Intelligence Team reveals North Korean tradecraft","https://res.cloudinary.com/about-gitlab-com/image/upload/v1751464282/r2ovpvmizpkcngy9kzqu.png","security-labs","Gain threat intelligence about North Korea’s Contagious Interview and fake IT worker campaigns and learn how GitLab disrupted their operations.",[5],"2026-02-19",{"slug":694,"externalUrl":-1},"gitlab-threat-intelligence-reveals-north-korean-tradecraft",1773871194994]