Docker Hardened Imagesã¯çŸåšç¡æã§æäŸãããŠãããAlpineãDebianããããŠããŒã¿ããŒã¹ãã©ã³ã¿ã€ã ãã¡ãã»ãŒãžãã¹ãå«ã0001ã€ã¡ãŒãžãã«ããŒããŠããŸããã»ãã¥ãªãã£ããŒã ã«ãšã£ãŠãããã¯ã³ã³ããè匱æ§ç®¡çã®çµæžæ§ãå€ããŸãã
DHIã«ã¯Dockerã®ã»ãã¥ãªãã£ããŒã ã«ããã»ãã¥ãªãã£ä¿®æ£ãå«ãŸããŠãããã»ãã¥ãªãã£å¯Ÿå¿ãç°¡çŽ åããŠããŸãããã©ãããã©ãŒã ããŒã ã¯ãããé©çšæžã¿ã®ããŒã¹ã€ã¡ãŒãžãåãåºããè¿ éã«åãããã€ã§ããŸããããããããªãŒããŒãç»åã¯çåãæããããŸããããã¯ã»ãã¥ãªãã£ã®å®è·µãã©ã®ããã«å€ããã¹ãã?Dockerã§ã®ç§ãã¡ã®èãæ¹ãã©ã®ããã«é²åããŠããããã玹ä»ããŸãã
äœãå€ããã®ã(ãããŠäœãå€ãããªãã®ã)
DHIã¯ã»ãã¥ãªãã£ã®ããŠã©ãŒã¿ãŒã©ã€ã³ããæäŸããŸãããããããã®äžã§ã¯Dockerãè匱æ§ç®¡çãææããŠããŸãããã®äžã«ããã®ã¯ãããªãã§ããã¹ãã£ããŒãDHIã¬ã€ã€ãŒã§äœãããã©ã°ä»ãããå Žåãããã¯ããªãã®ããŒã ã察å¿ã§ãããã®ã§ã¯ãããŸãããDHIå¢çããäžã®ãã¹ãŠã®åå°ã¯ããªãã®ãã®ãšãªããŸãã
ç¯å²ã¯äœ¿çšããDHIç»åã«ãã£ãŠç°ãªããŸãã匷åãããPythonã€ã¡ãŒãžã¯OSãšã©ã³ã¿ã€ã ãã«ããŒããã¢ããªã±ãŒã·ã§ã³ã³ãŒããçŽæ¥çãªäŸåé¢ä¿ã«éããµãŒãã§ã¹ãçž®å°ããŸããããŒãåãããããŒã¹ã€ã¡ãŒãžãšèªåã®ã©ã³ã¿ã€ã ãäžã«é 眮ãããšãå¢çã¯äœããªããŸããç®æšã¯æ°Žç·ãã§ããã ãé«ãæŒãäžããããšã§ãã
匱ç¹ã¯æ¶ããŸãããæ°Žç·äžã§ã¯ãããããããDHIç»åãè¿ éã«åŒãåºãå¿ èŠããããŸãããã®äžã§ããã¢ããªã±ãŒã·ã§ã³ã³ãŒããäŸåé¢ä¿ããããŠäžã«éãããã®ãææããŠããŸãã
ãµãã©ã€ãã§ãŒã³ã®éé¢
DHIã¯CVEã®ä¿®åŸ©ãè¶ ãããµãã©ã€ãã§ãŒã³ã®éé¢ãæäŸããŸãã
python:3.11ã®ãããªã³ãã¥ããã£ç»åã«ã¯æé»ã®ä¿¡é ŒãåæãšãããŠããŸããäŸãã°ãä¿å®è
ã®èªèšŒæ
å ±ã䟵害ãããŠããªããã¿ã°ã®äžæžãã«ããæªæããã¬ã€ã€ãŒæ³šå
¥ãªããæåŸã®ãã«ä»¥éã®æ¹ãããªããShai Huludãã£ã³ããŒã³ã¯ãæ»æè
ãçãŸããPATãã¿ã°ã®å¯å€æ§ãå©çšããŠãšã³ã·ã¹ãã ãéããŠæ¡æ£ããå Žåã®çµæã瀺ããŸããã
DHIã€ã¡ãŒãžã¯ãDockerããœãŒã¹ããåæ§ç¯ããã¬ãã¥ãŒããã»ã¹ãã¯ãŒã«ããŠã³æéãçµãŠå¶åŸ¡ãããåå空éããæ¥ãŠããŸããã³ãã¥ããã£ã®ã€ã¡ãŒãžãçŒãå°œãããµãã©ã€ãã§ãŒã³æ»æã¯DHIå¢çã§æ¢ãŸããŸãããµãã©ã€ãã§ãŒã³ã®ãªã¹ã¯ããå®å šã«å ããããã§ã¯ãããŸããããã³ãã¥ããã£ã€ã¡ãŒãžã®ä¿¡é Œã¢ãã«ãæªçšããæ»æã®ãªã¹ã¯ãæé€ããŸããã
ããã¯ãCVEåæžãšã¯ç°ãªãäŸ¡å€ææ¡ã§ããããã¯ããŸããŸãé«åºŠåããæ»æã®äžçŸ€ããéé¢ããããšã§ãã
è©äŸ¡åäœãšããŠã®ã³ã³ããã€ã¡ãŒãž
ã»ãã¥ãªãã£ã¹ãã£ã³ã¯æççã§ããäŸåã¹ãã£ã³ãSASTãSCAã¯ãã¹ãŠç°ãªãã³ã³ããã¹ãã§åäœããå±éæã«ãã¹ãŠãã©ã®ããã«çµã¿åããã£ãŠããããå®å šã«ææ¡ã§ãããã®ã§ã¯ãããŸããã
ã³ã³ããã€ã¡ãŒãžãããããã¹ãŠãåæããéšåã§ããããã¯å®éã®ãããã€ã¢ãŒãã£ãã¡ã¯ãã§ãããéçºè
ã®ã¯ãŒã¯ã¹ããŒã·ã§ã³ããæ¬çªç°å¢ãŸã§äžè²«ããé©çšãä¿èšŒãããã§ãã¯ãã€ã³ããšãªã£ãŠããŸããããŒã«ã«ã§å®è¡ããè©äŸ¡åºæºã¯ãCIã§å®è¡ããããã®ãæ¬çªç°å¢ã®ã²ãŒããšåäž docker build å ŽåããããŸãã
ããã§ä»¥åã®ãã€ãã©ã€ã³ã¹ãã£ã³ãå®å šã«çœ®ãæããå¿ èŠã¯ãããŸãããã€ã¡ãŒãžã¯ããªã·ãŒã®äžè²«æ§ã匷å¶ãããããã€ãããã®ã«çŽæ¥å¯Ÿå¿ããäžè²«ããç£æ»ã®è»è·¡ãæ§ç¯ããå Žæã§ãã
ããªã·ãŒé§ååèªåå
ãã¹ãŠã®äŒæ¥ã«ã¯è匱æ§ç®¡çããªã·ãŒããããŸããã®ã£ããã¯éåžžãæ¹é(PDFããŠã£ã)ãšå®è·µ(ã¹ãã¬ããã·ãŒããJiraãã±ãã)ã®éã«ãããŸãã
DHIã¯ãããããæ¿çæ±ºå®ãå¿ èŠãšããçºèŠã®éãåçã«æžããããã®ã®ã£ãããåããããããŸããã¹ãã£ããŒã50500ã§ã¯ãªãCVEãè¿ããšãåºæ¬çãªæ·±å»åºŠãã£ã«ã¿ãªã³ã°ããããå§åçãªããã¯ãã°ã§ã¯ãªããå®çšçãªããªã¢ãŒãžã·ã¹ãã ãšãªããŸãã
ã·ã³ãã«ã§å®çŸå¯èœãªä¿éºã«ã¯ã以äžã®ãããªãã®ãå«ãŸããŸãã
- é«é床ãã€é倧ãªè匱æ§ã¯ã修埩ãŸãã¯äŸå€ã®ææžåãå¿ èŠã§ã
- äžçšåºŠä»¥äžã®åé¡ã¯å®æçãªèŠçŽãã§åãå ¥ããããŸã
- CISA KEVã®è匱æ§ã¯åžžã«å¯Ÿè±¡ãšãªããŸã
ã»ãšãã©ã®ã¹ãã£ã³ãã©ãããã©ãŒã ã¯ãã®ã¬ãã«ã®ãã£ã«ã¿ãªã³ã°ããã€ãã£ãã§ãµããŒãããŠãããGrypeãTrivyãSnykãWizãPrisma CloudãAquaãDocker Scoutãªã©ãå«ãŸããŸããéç床ã®éŸå€ãå®çŸ©ããèªåçã«é©çšãã人éã®å€æãå¿ èŠãªéšåã ããæµ®ã圫ãã«ããŸãã
DHIã«ãã¬ããžããŒã¿ãšã®ããç·å¯ãªçµ±åãæ±ããããŒã ã®ããã«ãDocker Scoutã¯DHIã¹ããŒã¿ã¹ãçŽæ¥ç §åããŠããªã·ãŒãè©äŸ¡ããŸãããµãŒãããŒãã£ã®ã¹ãã£ããŒã¯ããã€ãã©ã€ã³ã®ã¹ã¯ãªãããDHIã«ãã¬ããžæ å ±ããšã¯ã¹ããŒãããŠæ¯èŒããããšã§åæ§ã®çµæãåŸãããšãã§ããŸãã
ç®æšã¯å®ç§ãªèªååã§ã¯ãªããæ¢åã®æ¹éãæè¡è ãæ¶èãããããšãªããæ¢åã®æ¹éã匷å¶åã®ãããã®ã«ããã»ã©ãã€ãºãæžããããšã§ãã
VEX:仿¥ã§ããããš
Docker Hardened Imagesã¯ãDockerãæèã§æªçšäžå¯ãšè©äŸ¡ããCVEãæå¶ãã VEX èªèšŒä»ãã§æäŸãããŸããèªç¶ãªæ¡åŒµãšããŠãããŒã ãã¢ããªã±ãŒã·ã§ã³å±€ã®çºèŠçšã«ç¬èªã®VEXã¹ããŒãã¡ã³ãã远å ããããšã«ãªããŸãã
仿¥ãããªãã®ã»ãã¥ãªãã£ããŒã ãã§ããããšã¯ä»¥äžã®éãã§ã:
DHI VEXããŒã¿ãæ¶è²»ããŠãã ããã ã°ãªã (v0.65+),Trivyã Wizã Docker Scoutã¯ãã¹ãŠ DHI VEXã®èªèšŒãèªåçã«ãŸãã¯ãã©ã°ã§åã蟌ã¿ãŸããVEXãµããŒãã®ãªãã¹ãã£ããŒã§ããæœåºãã蚌èšã䜿ã£ãŠæåããªã¢ãŒãžã«åœ¹ç«ãŠãããšãã§ããŸãã
èªåã§VEXã¹ããŒãã¡ã³ããæžããŸãããã OpenVEX ã¯JSON圢åŒãæäŸããŠããŸããvextlã䜿ã£ãŠã¹ããŒãã¡ã³ããçæã眲åããŠãã ããã
ç»åã«VEXãæ·»ä»ããŠãã ãããDockerã¯ãæ¢ã«ã¬ãžã¹ããªã«VEXãä»ããããã®docker scout attestation addãæšå¥šããŠããŸã:
docker scout attestation add \
--file ./cve-2024-1234.vex.json \
--predicate-type https://openvex.dev/ns/v0.2.0 \
<image>
ãããã¯ããã«ãæã«COPY VEXããã¥ã¡ã³ããã€ã¡ãŒãžãã¡ã€ã«ã·ã¹ãã ã«èšé²ããŸãããããã«ããåæ§ç¯ãªãã§ã¯æŽæ°ãã§ããŸããã
ã¹ãã£ããŒã®VEXã€ã³ãžã§ã¹ãèšå®ããŠãã ãããã¯ãŒã¯ãããŒã¯ãã¹ãã£ã³ãã調æ»çµæãç¹å®ããVEXãšããŠææžåããã¹ãã£ããŒã®èšå®ã«ãã£ãŒãããã¯ãããå°æ¥ã®ã¹ãã£ã³ã§ã¯èªåçã«è©äŸ¡ãããè匱æ§ãæå¶ãããŸãã
ã³ã³ãã©ã€ã¢ã³ã¹:DHIãå®éã«æäŸããŠãããã®
ISO27001 ãSOC ã2 EUãµã€ããŒã¬ãžãªãšã³ã¹æ³ ãªã©ã® ã³ã³ãã©ã€ã¢ã³ã¹ãã¬ãŒã ã¯ãŒã¯ã¯ãäœç³»çãã€ç£æ»å¯èœãªè匱æ§ç®¡çãæ±ããŠããŸããDHIã¯ç¹å®ã®å¶åŸ¡èŠä»¶ã«å¯Ÿå¿ããŠããŸã:
è匱æ§ç®¡çææž(ISO 27001 A.8.8. Soc 2 CC7.1)ãŠã©ãŒã¿ãŒã©ã€ã³ã¢ãã«ã¯ãåºç€ç»åã®è匱æ§ãã©ã®ããã«æ±ãã®ã?ããšããåãã«å¯ŸããŠæ£åœãªçããæäŸããŸããDHIãæã瀺ããèªèšŒã¢ãã«ã説æããæ°Žç·ããäžã®ãã¹ãŠã®å°åã«é¢ããæ¹éã瀺ããŠãã ããã
ç¶ç¶çãªã¢ãã¿ãªã³ã°èšŒæ ãDHIç»åã¯å®ãããããªãºã ã§åæ§ç¯ã»åã¹ãã£ã³ããŸããæ°ãããã€ãžã§ã¹ãã¯çŸåšã®è©äŸ¡ãæå³ããŸããã¹ãã£ããŒã®ç¶ç¶çãªã¢ãã¿ãªã³ã°ãšçµã¿åãããããšã§ãåãªããã€ã³ãã€ã³ã¿ã€ã ãã§ãã¯ã§ã¯ãªãç¶ç¶çãªè©äŸ¡ã瀺ããŠããŸãã
修埩ã®ãã¬ãŒãµããªãã£ãVEXã®èšŒæã¯ãåCVEãã©ã®ããã«æ±ãããããæ©æ¢°ã§èªã¿åããèšé²ãäœæããŸããç£æ»äººãç¹å®ã®ãããã€ã¡ã³ãã«ãããç¹å®ã®CVEã«ã€ããŠå°ããå Žåãåçã¯ã€ã¡ãŒãžãã€ãžã§ã¹ããã¿ã€ã ã¹ã¿ã³ãã«çµã³ã€ããŠããŸãã
CRAã®ã¢ã©ã€ã¡ã³ãããµã€ããŒã¬ãžãªãšã³ã¹æ³ã¯ããã¥ãŒããªãžã§ã³ã¹ãè匱æ§åŠçãšSBOMsã矩åä»ããŠããŸããDHIç»åã«ã¯ SBOMã®èšŒæãå«ãŸããŠãããVEXã¯CRAã®è匱æ§ã«é¢ããæåŸ ã«æ²¿ã£ãŠããŸãã
ããã¯ãã¹ãŠã®ç£æ»ã®è³ªåã«çããããã§ã¯ãããŸããããå€ãã®çµç¹ãæ¬ ããŠããåºç€ãæäŸããŸãã
ãã®æçš¿ãèªãã åŸã«äœããã¹ãã
- é«ããªã¥ãŒã ã®ããŒã¹ç»åãç¹å®ããŸããæã䜿ãããŠããç»å(PythonãNodeãGoãAlpineãDebian)ã«ã€ããŠã¯ãDocker Hubã®Hardened Imagesã«ã¿ãã° (My Hub â Hardened Images â Catalog)ããã§ãã¯ããŠãã ããã
- ç»åãäžã€äº€æãããéèŠã§ãªããµãŒãã¹ãéžã³ãFROMã©ã€ã³ãDHI察å¿ã«å€ããåæ§ç¯ããã¹ãã£ã³ããçµæãæ¯èŒããŸãã
- ããªã·ãŒããŒã¹ã®ãã£ã«ã¿ãªã³ã°ãèšå®ããŸãããã DHIã§ã«ããŒãããè匱æ§ãšã¢ããªã±ãŒã·ã§ã³å±€ã®çºèŠãåºå¥ã§ããããã«ã¹ãã£ããŒãèšå®ããŸãããããã€ãã£ããªVEXçµ±åã«ã¯Docker ScoutãWizã䜿ãããæœåºããVEXããŒã¿ã«åºã¥ããŠGrypeãTrivyã®ããªã·ãŒãç¡èŠããèšå®ãããŠãã ããã
- 氎蟺ã®èšé²ãã€ããŠãã ãããDHIãã«ããŒããå 容ãšãæ®ãè²¬ä»»ãæžãçããŠãã ããããããããªãã®ä¿éºå¥çŽã®åç §ããã³ç£æ»ææžãšãªããŸãã
- VEXã®èšºçæãå§ããŸããããéå ¬åŒã«ææžåãããè匱æ§è©äŸ¡ãVEXæã«å€æããé¢é£ããç»åã«æ·»ä»ããŸãã
DHIã¯ãåºç€ã€ã¡ãŒãžã®è匱æ§ããµãã©ã€ãã§ãŒã³ã®ä¿¡é Œã«é¢ããç¹å®ãã€é«é¡ãªåé¡ã解決ããŸãããã£ã³ã¹ã¯ããããäžå¿ã«ã¹ã±ãŒã«ã§ããå®è·µãç¯ãããšã§ãã
ãã倧ããªèŠç¹
DHIã®ã«ãã¬ããžã¯æ¡å€§ããŠããŸãã仿¥ã¯OSå±€ãã«ããŒãããããããŸããããææ¥ã«ã¯ã©ã³ã¿ã€ã ãããŒãåãããã©ã€ãã©ãªã«ãŸã§åã¶ãããããŸãããå¢çãã©ãã«ãããã«äŸåããªãæ çµã¿ãæ§ç¯ããŸããããããããåé¡ã¯åžžã«åãã§ãââDockerãäœã蚌æããäœãè©äŸ¡ãã¹ãã?
DockerãDHIã«äœ¿çšããæ¹æ³è«(ããªã·ãŒé§ååè©äŸ¡ãVEXèªèšŒãç£æ»å¯èœãªæææ±ºå®)ã¯ãã¢ããªã±ãŒã·ã§ã³å±€ã«ãåã³ãŸããã«ã¹ã¿ã ã³ãŒããææããããšã¯ã§ããŸããããæ°Žç·ä»¥äžã§äžè²«ããå®è·µã®ããã®æ çµã¿ãæäŸã§ããŸããã¹ã«ãŠãããŠã£ãºãã°ã©ã€ããããªããŒããããã¯ä»ã®ã¹ãã£ããŒã䜿ã£ãŠãããã¿ãŒã³ã¯åãã§ããDHIã«ã«ããŒç¯å²ãä»»ããæ®ãéšåã®ããªã·ãŒãèªååããã¢ãŒãã£ãã¡ã¯ãã䌎ã圢åŒã§æææ±ºå®ãææžåã§ããŸãã
Dockerã§ã¯ã瀟å ã§DHIã䜿ã£ãŠãã®è匱æ§ç®¡çã¢ãã«ãæ§ç¯ããŠããŸãããã¬ãŒã ã¯ãŒã¯ã¯ã仿¥ã©ãã ãã¹ã¿ãã¯ãããŒãåããŠãã1幎åŸãšæ¯ã¹ãŠå€ãããå€ãããå€ãããŸãããåãã®ã¯å¢çã ãã ã
硬åããç»åã¯ç¡æã§ããVEXã®èšŒææžãå«ãŸããŠããŸããæ®ãã¯ããããã®èŠçŽ ãçµ±åããã³ã³ãããçå®ã®åäœãšãªããããªã·ãŒãèªååãæšé²ãããã¹ãŠã®èåŒ±æ§æ±ºå®ãããã©ã«ãã§èšé²ããããããªäžè²«ããã»ãã¥ãªãã£å®è·µã«çµã¿èŸŒãããšã§ãã
ãã匷åãªä¿èšŒãFIPS察å¿ããã³STIG察å¿ã®ã€ã¡ãŒãžãã«ã¹ã¿ãã€ãºãå¿ èŠãšããçµç¹ã«ãšã£ãŠãDHI Enterpriseã¯ãã®çšéã«ç¹åããŠããŸãããã¢ããåžæã®å Žåã¯DockerããŒã ã«ãé£çµ¡ãã ããããŸã æ¢ããŠãããªãã ã«ã¿ãã° (ç»é²äžèŠ)ããã§ãã¯ãããã DHI Enterpriseã®ç¡æãã©ã€ã¢ã«ã詊ããŠã¿ãŠãã ããã