Datadog Japanã¯6æ4æ¥ããªã³ã©ã€ã³ã§DevSecOpsã®çŸç¶èª¿æ»ã«é¢ããèšè 説æäŒãéå¬ãããDevSecOpsãšã¯ãéçšãµã€ã¯ã«ãè¿ éãã€ç¶ç¶çã«è¡ãDevOpsã«ãã»ãã¥ãªãã£ãçµã¿èŸŒãã ãœãããŠã§ã¢éçºææ³ã ã
調æ»ã¯2024幎2æïœ4æã«ãããŠåéãããããŒã¿ã«ããšã¥ããŠãããæ°äžã®ã¢ããªã±ãŒã·ã§ã³ãšã³ã³ããã€ã¡ãŒãžãæ°åã®ã¯ã©ãŠãç°å¢ãåæããŠãã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ãã¹ãã£ãè©äŸ¡ã
DevSecOpsã®ãã¹ããã©ã¯ãã£ã¹ãšããŠãIaC(Infrastructure as CodeïŒã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£)ãèªååãããã¯ã©ãŠããããã€ã¡ã³ããã»ãã¥ã¢ãªã¢ããªã±ãŒã·ã§ã³éçºãã©ã¯ãã£ã¹ãCI/CD(ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³/ç¶ç¶çããªããªãŒ)ãã€ãã©ã€ã³ã§ã®æå¹æéãçãèªèšŒæ å ±ã®æ¡çšãè©äŸ¡ãã7ã€ã®ãã€ã³ãããŸãšããŠããã
Datadog Japan ã·ãã¢ããããããŒã¢ããã±ã€ã è©éãããæ°ã¯ãå®å šãªã³ãŒããè¿ éãã€å€§èŠæš¡ã«é åžããããšã¯ããœãããŠã§ã¢æ¥çå šäœã®èª²é¡ãšãªã£ãŠãããæšä»ã泚ç®ãéããããŒã¿äŸµå®³ãé倧ãªè匱æ§ã«é¢ãããã¥ãŒã¹ãç¶ããŠããããšãããæããããããã課é¡ã«å¯ŸåŠããããã«ããã¹ãŠã®çµç¹ãDevSecOpsãæ¡çšããåŸåããããããã¯ã¢ããªã±ãŒã·ã§ã³éçºè ãéçºã©ã€ããµã€ã¯ã«å šäœãéããŠãéçšããŒã ãã»ãã¥ãªãã£ããŒã ãšç·å¯ã«é£æºããææ³ã§ãããããšè¿°ã¹ãã
Javaã®ãµãŒãã¹ããµãŒãããŒãã£ã®ã©ã€ãã©ãªã«ããè匱æ§ã®åœ±é¿ãæãåãããã
調æ»çµæã«ãããšãã¯ã©ãŠãå±éã®ã»ãã¥ãªãã£ç¢ºä¿ã«é¢ããŠãå€ãã®äŒæ¥ãèªååãæ¡çšããŠããªãããšã倿ããã1ã€ç®ã¯ãããŸããŸãªããã°ã©ãã³ã°èšèªã§æžãããã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ãã¹ãã£ãåæããJavaã®ãµãŒãã¹ããµãŒãããŒãã£ã®ã©ã€ãã©ãªã«ããè匱æ§ã«å¯ŸããŠæã圱é¿ãåããããããšãæããã«ãªã£ããšããã
ä»ã®æè¡ã®å¹³åã47%ã§ããã®ã«å¯ŸããŠãJavaããŒã¹ã®ãµãŒãã¹ã®90%ããµãŒãããŒãã£ã®ã©ã€ãã©ãªã«ãã£ãŠãããããã1件以äžã®ã¯ãªãã£ã«ã«ãŸãã¯é«é倧床ã®è匱æ§ã«å¯ŸããŠåœ±é¿ãåããŠããã
-

ã¯ãªãã£ã«ã«ãªè匱æ§ãé«ãªã¹ã¯ã®è匱æ§ãå«ãŸãããµãŒãã¹ã®å²åã瀺ããã°ã©ã
Javaã®ãµãŒãã¹ã¯ãæ»æè ã«ããå®éã®æªçšãææžåãããè匱æ§ã«å¯ŸããŠããç¹ã«è匱ã§ããããšãå€ããšã®ããšãç±³CISA(Cybersecurity and Infrastructure Security Agency)ãKEV(Known Exploited Vulnerabilities)ã«ã¿ãã°ã«èšèŒãããŠããè匱æ§ããJavaã®ãµãŒãã¹ã®ãã¡55%ã圱é¿ãåããŠããããšãåãããä»èšèªã䜿çšãããµãŒãã¹7%æ¯èŒããŠé«ãå²åã«ãªã£ãŠããã
ç¹å®ã®ã«ããŽãªã®è匱æ§ã«çŠç¹ãåœãŠãŠããJavaã®ãµãŒãã¹ã®23%ãRCE(ãªã¢ãŒãã³ãŒãå®è¡)ã«å¯ŸããŠè匱ã§42%ã®çµç¹ã«åœ±é¿ãäžããŠãããTomcatãSpring FrameworkãApache StrutsãLog4jãActiveMQãšãã£ãäžè¬çãªJavaã©ã€ãã©ãªã«åœ±é¿ãåãŒãè匱æ§ãèå»¶ããŠããããšãæ°å€ãé«ããªã£ãŠããäžå ã ãšããŠããã
ãããã仮説ã¯ããããã®è匱æ§ãã©ãããçºçããŠããã®ãã調ã¹ãããšã§ç¢ºå®æ§ãé«ããããããšãããJavaã§ã¯é倧ãªè匱æ§ã®63%ã鿥çãªäŸåé¢ä¿ããçããŠãããšãããããã¯ãã¢ããªã±ãŒã·ã§ã³ãšãšãã«éæ¥çã«ããã±ãŒãžåããããµãŒãããŒãã£ã®ã©ã€ãã©ãªã«ç±æ¥ããåºçŸãã远å ã®ã©ã€ãã©ãªãå€ãã®å Žåãéçºè ã®ç¥ããªãéã«ã¢ããªã±ãŒã·ã§ã³ã«å°å ¥ãããŠãããããéåžžã¯ç¹å®ãå°é£ãšã®ããšã ã
è©éæ°ã¯ãã¢ããªã±ãŒã·ã§ã³ã®è匱æ§ãã¹ãã£ã³ããéã¯ãçŽæ¥çãªäŸåé¢ä¿ã ãã§ãªããäŸåé¢ä¿ããªãŒå šäœãèæ ®ããããšãéèŠããŸããã¢ããªã±ãŒã·ã§ã³ã«è¿œå ããäŸåé¢ä¿ãé©åã«ç®¡çãããã®äŸåé¢ä¿ãé »ç¹ã«ã¢ããã°ã¬ãŒããããŠãããåŠããç¥ãããšãå¿ èŠã ãOpenSSF Scorecardãªã©ã®ãã¬ãŒã ã¯ãŒã¯ã¯ããªãŒãã³ãœãŒã¹ã©ã€ãã©ãªã®å¥å šæ§ãè¿ éã«è©äŸ¡ããããšã«åœ¹ç«ã€ããšè©±ãã
å®åæ åœè ã¯è匱æ§ã®å€ãã«å§åãããŠãã
2ã€ç®ã¯ãããŸããŸãªèšèªã§éçºãããã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿããå€ãã®æªçšã®è©Šã¿ãåæããçµæãèªåã»ãã¥ãªãã£ã¹ãã£ããŒããã®æ»æãæªçšã®è©Šã¿ã®å€§åãå ããŠããããšãæããã«ãªã£ãã
ãããã®ã¹ãã£ããŒã¯ããªãŒãã³ãœãŒã¹ã§äžè¬çãªããŒã«ã§ããNucleiãZGrabãSQLmapãªã©ãšãªããæ»æè ãã€ã³ã¿ãŒãããå šäœãã¹ãã£ã³ããè匱ãªã·ã¹ãã ãç¹å®ããããã«å€§èŠæš¡ã«å®è¡ããããšãããšããã
èªåã»ãã¥ãªãã£ã¹ãã£ããŒã«ãã£ãŠå®è¡ãããæ»æã®å€§éšåã¯ç¡å®³ã§ãããé²åŸ¡åŽã«ãšã£ãŠã¯åãªããã€ãºãçæããã ãã§ããããšã倿ãããããã®ã¹ãã£ããŒããã®äœåäžãã®æªæã®ãããªã¯ãšã¹ãã®äžã§ãè匱æ§ãããªã¬ãŒããã®ã¯0.0065%ã«éããªããšããã
ãã®ãããé²åŸ¡è ãçã®WebãµãŒããã°ãå¢çã®Webã¢ããªã±ãŒã·ã§ã³ãã¡ã€ã¢ãŠã©ãŒã«(WAF)ã®ã¢ã©ãŒãã广çã«ç£èŠããããã«ãã¢ã©ãŒãã®åªå é äœãå®ããããã®ãã¬ãŒã ã¯ãŒã¯ãéèŠã§ãããè åšã€ã³ããªãžã§ã³ã¹ãšã¢ããªã±ãŒã·ã§ã³ã®ã©ã³ã¿ã€ã ã³ã³ããã¹ããã»ãã¥ãªãã£æ€åºã«çµ±åããããšã§ãäŒæ¥ã¯æãéèŠãªè åšããã£ã«ã¿ãªã³ã°ãããããªããšã®èŠè§£ã ã
3ã€ç®ã¯åªå ããè匱æ§ãžã®å¯Ÿå¿ã«ã€ããŠã2023幎ã®CVE(Common Vulnerabilities and Exposures)ãããžã§ã¯ãã§ã¯ã4000è¶ ã®é«åºŠãªè匱æ§ãš1000è¶ ã®ã¯ãªãã£ã«ã«ãªè匱æ§ãç¹å®ãããã€ã³ãã³ããªåãããã
å瀟ã®èª¿æ»ã§ã¯ãå¹³åçãªãµãŒãã¹ã¯ãããã®è匱æ§ã«å¯ŸããŠ19ã®è匱æ§ãããããšãåãã£ãããéå»ã®åŠè¡ç ç©¶ã§ã¯æ»æè ãå®éã«æªçšããŠããè匱æ§ã¯å šäœã®çŽ5%ã«éããªããšããã
å®åæ åœè ã¯è匱æ§ã®å€ãã«å§åãããåªå é äœä»ãã®ãã¬ãŒã ã¯ãŒã¯ãå¿ èŠãšã®ããšãå瀟ã§ã¯å€ãã®è匱æ§ãåæããæåããæªçšã®å¯èœæ§ãšåœ±é¿ãè©äŸ¡ããããã«ãè匱ãªãµãŒãã¹ã¯ã€ã³ã¿ãŒãããã«å ¬éãããŠãããïŒããããã¯æ¬çªãéçºããã¹ãç°å¢ã®ã©ããªã®ãïŒããæªçšã³ãŒãããªã³ã©ã€ã³ã§å ¬éãããŠããããè匱æ§ãæªçšããæ¹æ³ã«ã€ããŠã®æç€ºã¯ãããïŒããªã©ã®è¿œå çãªèŠå ã«ããšã¥ããèª¿æŽæžã¿ã¹ã³ã¢ãèšç®ã
å ããŠãEPSS(Exploit Prediction Scoring System)ã®ã¹ã³ã¢ãèæ ®ã«å ¥ããã¡ããªã¯ã¹ã§é«ãã¹ã³ã¢ãåŸãè匱æ§ã«éç¹ã眮ãããããã®æ¹æ³ããã¹ãŠã®è匱æ§ã«é©çšãã調æŽåŸã®ã¹ã³ã¢ã«ããšã¥ããŠãã©ãã ãã®è匱æ§ãåŒãç¶ãã¯ãªãã£ã«ã«ã§ããããè©äŸ¡ããã
調æŽåŸã®ã¹ã³ã¢ãªã³ã°ãé©çšããçµæãé倧床ãã¯ãªãã£ã«ã«ãªè匱æ§ãæã€çµç¹ã®63%ãã¯ãªãã£ã«ã«ãªè匱æ§ãæããªãããšã確èªãããäžæ¹ã§ã30%ã®çµç¹ã¯ã¯ãªãã£ã«ã«ãªè匱æ§ã®æ°ãååä»¥äžæžå°ããã
åªå ãã¹ãè匱æ§ã決å®ããéã«ã¯ãçµç¹ã¯åé¡ã®é倧床ãäžè²«ããŠè©äŸ¡ã§ãããã¬ãŒã ã¯ãŒã¯ãæ¡çšããã¹ãã ãšãããè©éæ°ã¯ãã©ã³ã¿ã€ã ã³ã³ããã¹ãã調æŽããããã°ãå€ãã®ã¯ãªãã£ã«ã«ãªè匱æ§ã解決ã§ããããšã®èªèã ã
AWSç°å¢ã®IaCããŒã«ãšããŠTerraformãæã䜿çšãããŠãã
4ã€ç®ã¯ã³ã³ããã€ã¡ãŒãžã«é¢ããŠã ããœãããŠã§ã¢éçºãšã»ãã¥ãªãã£ã®äž¡æ¹ã«ãããŠãå°ãªãã»ã©è¯ãããšããããšããããããã¯ã³ã³ããããŒã¹ã€ã¡ãŒãžãªã©ã®ãµãŒãããŒãã£äŸåé¢ä¿ã«ç¹ã«åœãŠã¯ãŸããšããã
ããŒã¹ã€ã¡ãŒãžã®éžæè¢ã«ã¯ãUbuntuãªã©ã®å€å žçãªLinux ãã£ã¹ããªãã¥ãŒã·ã§ã³ãããŒã¹ã«ãã倧ããªã€ã¡ãŒãžã䜿çšãããAlpine LinuxãBusyBoxãªã©ã®è»œéãã£ã¹ããªãã¥ãŒã·ã§ã³ãããŒã¹ã«ããã¹ãªã ãªã€ã¡ãŒãžã䜿çšãããã¢ããªã±ãŒã·ã§ã³ã®å®è¡ã«å¿ èŠãªæå°éã®ã©ã³ã¿ã€ã ã®ã¿ãå«ããdistroless imageã䜿çšããããšãªã©ãããã
äœåãã®ã³ã³ããã€ã¡ãŒãžãåæããçµæãã³ã³ããã€ã¡ãŒãžãå°ããã»ã©è匱æ§ãå°ãªãããšãããããå«ãŸããŠãããµãŒãããŒãã£ã®ã©ã€ãã©ãªãå°ãªããããšèãããããšããã
å¹³åããŠã100MBæªæºã®ã³ã³ããã€ã¡ãŒãžã«ã¯4.4åã®é«åºŠãªè匱æ§ãŸãã¯ã¯ãªãã£ã«ã«ãªè匱æ§ãããã250MBãã500MBã®ã€ã¡ãŒãžã«ã¯42.2åããããã倧ããã€ã¡ãŒãžã«ã¯çŽ80åã®è匱æ§ããããã³ã³ããåãããç°å¢ã«ãããŠè»œéãªã€ã¡ãŒãžã䜿çšããããšããæ»æå¯Ÿè±¡é åãæå°éã«æããããã®éèŠãªææ³ã§ããããšã瀺ããŠãããšã®ããšã ã
5ã€ç®ã¯IaCã®æ¡çšã«ã€ããŠã1990幎代ã«CFEngineãPuppetãChefãªã©ã®ãããžã§ã¯ãã§å°å ¥ãããIaCã¯ãã¯ã©ãŠãç°å¢ãããããžã§ãã³ã°ããããã®æšæºãšããŠæ¥éã«åºãŸã£ãŠããã
AWS(Amazon Web Services)ã¯ãTerraformãCloudFormationãPulumiãªã©ãå°ãªããšã1ã€ã®äžè¬çãªIaCæè¡ãéããŠã71%以äžã®çµç¹ãIaCã䜿çšããŠããããGoogle Cloudã§ã¯ 55%ãšäœããªã£ãŠãããAzureã«é¢ããŠã¯ã¢ã¯ãã£ããã£ãã°ãHTTPãŠãŒã¶ãŒãšãŒãžã§ã³ããèšé²ããªãã
AWSãšGoogle Cloudå šäœã§ã¯ãTerraformãæã人æ°ã®ãããã¯ãããžãŒã§ãã¯ã©ãŠãåºæã®IaCããŒã«ã§ããCloudFormationãGoogle Deployment Managerãããäžè¬çãšãªã£ãŠããã
DevSecOpsãé©çšããŠããã«ã¯ïŒ
6ã€ç®ã¯ã¯ã©ãŠããããã€ã«ãŸã€ãããã®ã ãã¯ã©ãŠãã®æ¬çªç°å¢ã§ã¯ãéåžžã¯CI/CDãã€ãã©ã€ã³ãã€ã³ãã©ã¹ãã©ã¯ãã£ãšã¢ããªã±ãŒã·ã§ã³ãžã®å€æŽããããã€ãã責任ãæã¡ããã€ãã©ã€ã³ã§è¡ãããèªååã¯IaCããŒã«ãã¯ã©ãŠããããã€ãåºæã®ããŒã«ã䜿çšããã¹ã¯ãªããã«ãã£ãŠè¡ãããã
èªååã«ããããšã³ãžãã¢ã¯æ¬çªç°å¢ã«åžžã«ç¹æš©ã¢ã¯ã»ã¹ããå¿ èŠããªããªãããããã€ãé©åã«è¿œè·¡ããããã¢ã¬ãã¥ãŒãããããã«ãªãããã¯ã©ãŠãã³ã³ãœãŒã«ããæåã§ã¢ã¯ã·ã§ã³ãå®è¡ããã¯ãªãã¯éçš(ClickOps)ã¯ãAWSã®å°ãªããšã38%ã®çµç¹ããã¹ãŠã®AWSã¢ã«ãŠã³ãã§ClickOpsã䜿çšããŠããããšã確èªããã
AWS Management Consoleãä»ããŠã¯ãŒã¯ããŒãããããã€ããããã»ã³ã·ãã£ããªã¢ã¯ã·ã§ã³ãæåã§å®è¡ãããããããšãæå³ããããã«ã¯æ¬çªç°å¢ã§ã®æäœãå«ãŸããã
æåŸã¯CI/CDãã€ãã©ã€ã³ã«ãããè³æ Œæ å ±ã«é¢ãããã®ãéåžžãCI/CDãã€ãã©ã€ã³ã¯é«ãæš©éãæã¡ãéå°ãªãã®ã³ã°ããœãããŠã§ã¢äŸåé¢ä¿ã®äŸµå®³ããã«ãææç©ãéããŠè³æ Œæ å ±ãæŒããããå¯èœæ§ããããããæ»æå¯Ÿè±¡ãå¢å ããããšããã
ããã¯codecovã®äŸµå®³ãšé¡äŒŒããŠãããããCI/CDãã€ãã©ã€ã³ã§æå¹æéãçãè³æ Œæ å ±ã䜿çšããããšã¯ãã¯ã©ãŠãç°å¢ãä¿è·ããããã§æãéèŠãªåŽé¢ã®1ã€ãšãªã£ãŠãããããããAWSç°å¢ã§æå¹æéãçãè³æ Œæ å ±ãå®çšçã§å®å šã§ããå Žåã§ããå€ãã®çµç¹ãäŸç¶ãšããŠæå¹æéãé·ãè³æ Œæ å ±ã«äŸåããŠããããšã確èªãããã
GitHubãæäŸããCI/CDãµãŒãã¹ãGitHub Actionsãã䜿çšããŠããçµç¹å šäœ(AWSã§çšŒåããŠããçµç¹ã®31%以äžã«çžåœ)ã§ãæå¹æéãçãèªèšŒæ å ±ãšOpenID Connect(OIDC)ã«ããšã¥ããããŒã¬ã¹èªèšŒãå°éçã«äœ¿çšããŠããã®ã¯37%ãšãªã£ãŠããã
äžæ¹ã§ã63%ã®çµç¹ãGitHub Actionsãã€ãã©ã€ã³ã®èªèšŒã«IAMãŠãŒã¶ãŒ(æå¹æéãé·ãè³æ Œæ å ±ã®äžåœ¢æ )ãå°ãªããšãäžåºŠã¯äœ¿çšããŠããã42%ãIAMãŠãŒã¶ãŒã®ã¿ã䜿çšããŠãããšããçµæã«ãªã£ãã
äžé£ã®èª¿æ»çµæããµãŸããè©éæ°ã¯ã¢ããªã±ãŒã·ã§ã³ã¯å®è£ æ¹æ³ã ãã§ãªããéçšç°å¢ã§ã®ãããã€ã»å®è¡æ¹æ³ã«ãããŠå®å šã§ãªããã°ãªããªãã»ããææ°ã®DevOpsãã¹ããã©ã¯ãã£ã¹ãæ¡çšããŠã»ãã¥ãªãã£åŒ·åãå éããããšãéèŠã ãšããã
ãŸããã»ãã¥ãªãã£ãªã¹ã¯ãå¯èŠåããŠããã€ãºã«æããããã«ç確ã«å¯Ÿå¿ããã«ã¯ãæ£ããã³ã³ããã¹ãåªå é äœä»ããäžå¯æ¬ ã ãšãææããŠããã
åæ°ã¯ãã»ãã¥ãªãã£åäžã®ããã®èªååã¯æ¹åã®äœå°ããããã»ãã¥ãªãã£éšéãšDevOpséšéã坿¥ã«é£æºããDevSecOpsã®é©çšæ¡å€§ãäžççã«å¿ èŠãšãããŠããããšçµãã ã




