ãã®èšäºã§ã¯ããã³ãã¹ã¿ãŒã®ããŒã ã倧èŠæš¡ãããžã§ã¯ããMyOfficeãã®éçºãµã€ã¯ã«ã«å°å ¥ããçµéšãå ±æããããšæããŸãã ãã·ã¢èªã®å®éã®çäŸãšåæ§ã®äž»é¡ã®è³æãèŠã€ããããšã¯ã»ãšãã©äžå¯èœã§ãã ãã³ãã¹ããçè«ãå®è·µããã¯ããã¯ãããŒã«ã®ãã¡ãã·ã§ããã«ãªåéã«èå³ããããå®å šãªéçºã®ã³ã³ããã¹ãã§å®éã«è匱æ§ãçºèŠãã人ã¯èª°ã§ãç«ã«ããããã ãã®èšäºã«ã¯ãçè«çããã³å®çšçãªè³æãžã®æçšãªãªã³ã¯ããããããããŸãã ããããé çªã«èŠãŠã¿ãŸãããã
å
責äºé
ïŒ
ãã®èšäºã¯2ã€ã®éšåã§æ§æãããŠããŸãã æåã®éšåã¯çµç¹ã§ãããåââé¡ãç¹å®ããäžè¬çã«äŸµå
¥ãã¹ããžã®ã¢ãããŒããšã¿ã¹ã¯ã解決ããæ¹æ³ã«ã€ããŠè©±ããŸãïŒããããå€ãã®äººã«ç¥ãããŠããæ
å ±ãå«ãŸããŠããŸãïŒã 2ã€ç®ã¯ããæè¡çã§ãçºèŠãããããŒã«ãšè匱æ§ã®èª¬æããããŸãã
ïŒ
usernameïŒ
ïŒæè¡çãªè©³çŽ°ãªã©ïŒã®å Žåã¯ã2çªç®ã®éšåã«é²ãããšãã§ããŸãã
ãããŠãã¡ããããè¶ãã¯ãããŒãšäžç·ã«å¿ããªãã§ãã ããã
åéããŠé åžããŸã
ãã³ãã¹ãã¢ãããŒãã®ã¢ã€ãã¢
ãã³ãã¹ããšãã®æ©èœãžã®ã¢ãããŒãã説æããçã玹ä»ããå§ãã䟡å€ããããŸãã ããŸããŸãªãããã¡ã€ã«ã®ããŸããŸãªäŒæ¥ãã«ããŒããåœç€Ÿã®çµéšã«åºã¥ããŠã次ã®éšéãæé©ãšæãããŸãã
1åã®äŸµå ¥ãã¹ã
äžéšã®çµç¹ïŒéè¡ãå ¬çäŒæ¥ãå«ãïŒãäŸµå ¥ãã¹ããµãŒãã¹ãæäŸããäŒç€Ÿã«æ¥ãŠããã³ãã¹ã¿ãŒã«ââã¢ãã¬ã¹ã®ç¯å²ãçºè¡ããã¯ã©ã·ãã¯ããŒãžã§ã³ã äœæ¥ãå®è¡ããåŸãå®è£ ããŒã ã¯è匱æ§ã®ä¿®æ£ã«é¢ããæšå¥šäºé ãæäŸããŸãã
ä»äºã®çš®é¡ïŒ
- å¢çã»ãã¥ãªãã£ç£æ»
- å¢çã»ãã¥ãªãã£ç£æ»
- ç©ççã»ãã¥ãªãã£
- ã¢ãã€ã«ã¢ããª
- ã³ãŒãåââæ
- ãœãŒã·ã£ã«ãšã³ãžãã¢ãªã³ã°
- äžè¬çã«ãããªããæãã€ãããšãã§ãããã¹ãŠã®ãã®ïŒããããåå ãã䟡å€ã¯ãããŸããïŒ
è€éãªããã»ã¹ãšåæ§ã«ãå®å šæ§ã«ã¯ãç¹å¹è¬ãã¯ãããŸãããã¢ã³ããŠã€ã«ã¹ãœãããŠã§ã¢ãäŸµå ¥æ€ç¥ã·ã¹ãã ãªã©ãã·ã¹ãã ã®ã»ãã¥ãªãã£ã«å®å šãªä¿¡é Œãäžããæ段ã¯ãããŸããã äŸµå ¥ãã¹ãã«ã€ããŠãåãããšãèšããŸããäŸµå ¥ãã¹ãã§ã¯ãããããã«ãã€ãã¹ãšãã©ã¹ããããããæ®éçãªã¢ãããŒãã¯ãããŸããã
äžæçãªäŸµå ¥ãã¹ãã¯ãã»ãã¥ãªãã£ã®äžè¬çãªç¶æ ãè©äŸ¡ããã®ã«å¹æçã§ãããã³ãã¹ã¿ãŒã¯ãè³éãéãããæ»æè ãçæéã§ã·ã¹ãã ã«äŸµå ¥ããããšããç¶æ³ãšãããã顧客ã®äŒç€Ÿã«äžããæ害ãã·ãã¥ã¬ãŒãããŸãã
äŸµå ¥ãã¹ãNã幎ã«1åç¹°ãè¿ããŸã
ãã®ã¢ãããŒãã¯ãã1åéãã®ãã³ãã¹ãããŸãã¯ãã®åã ã®éšåãç¹°ãè¿ããŸãã ãã®å Žåãã»ãã¥ãªãã£ç£æ»ã¯å¹Žã«æ°åå®è¡ãããŸãã äœæ¥ã®çš®é¡ã¯ãæåã®ã¢ãããŒããšåãã§ãã
äžè¬çãªã»ãã¥ãªãã£åé¡ã®è©äŸ¡ã䌎ãæåã®ç£æ»ã®åŸããã®ã¢ãããŒãã«ãããéå»ã®ç£æ»ã§èŠã€ãã£ãè匱æ§ã«é©çšå¯èœãªä¿®æ£ãä¿®æ£ãé©çšããéã«çºçããåé¡ïŒã¯ãããŸãçºçïŒãããã³æ¬¡ã®ãã§ãã¯ã®çµæã«é ããã«ã€ããŠããããšãã§ããŸãã
ãã®ãªãã·ã§ã³ã䜿çšãããšãéå»ã®äŸµå ¥ãã¹ãã®çµæã«åºã¥ããµãŒãã¹ã«å¯Ÿããèªèãé«ãŸããããç£æ»äººã«ããäŒç€Ÿã®å¢çã®ãã培åºçãªèª¿æ»ãå¯èœã«ãªããŸãã
ãã°ããŠã³ãã£ã®ã¢ãŠããœãŒã·ã³ã°
ãã®ã¢ãããŒãã®æ¬è³ªã¯ããªãŒãã³/ã¯ããŒãºããŒã¹ã§ç¬èªã®ãã°ããŠã³ãããã°ã©ã ãäœæããããšã§ãããããã¯å€éšçµç¹ã«ãã£ãŠç¶æãããŸãã ãã®ãããªããŒã ã¯ããã³ãã¹ã¿ãŒãæä¹ çã«ä»äºã«åŒãä»ããè匱æ§ããšã«åå¥ã«æ¯æããè¡ããŸãã ããã¯ãç 究è ã«ãšã£ãŠãããªãåå ¥ã®è¯ãæ©äŒã§ãã ãã®ã¢ãããŒãã®äœ¿çšäŸã¯ãã¢ã¡ãªã«ã®äŒç€ŸSYNACKã§ãã
ãããã¯HackerOneãšã©ã®ããã«éãã®ã§ããïŒããšããåççãªçåãçããŸããäž»ãªéãã¯ãç 究è ã®æ°ãšåœŒãã®ã¹ãã«ã§ãã ãã®ããã°ã©ã ã«åå ããã«ã¯ãæ»æçãªäŒç€Ÿã®ä»äºã«å¿åãããšãã®ããã«ãé¢æ¥ãšãã¹ãã¿ã¹ã¯ãè¡ãå¿ èŠããããŸãã ãã®çµæãåå è ã¯å°ãªããªããŸãããå šäœçãªã¹ãã«ã¬ãã«ã¯é«ããªããŸãïŒãŸããã¹ãã£ããŒã¬ããŒããæããã®ã倧奜ããªãã£ã©ã¯ã¿ãŒãããªããšããããšããããŸãïŒã
äœæ¥ã®çš®é¡ïŒãã®ã¢ãããŒãã®ãã¬ãŒã ã¯ãŒã¯å ïŒïŒ
- å¢çã»ãã¥ãªãã£ç£æ»
- ã¢ãã€ã«ã¢ããª
- ãã€ããªç 究
ãã®ã¢ãããŒãã«ã¯ãè匱æ§ã«å¯Ÿããå ±é ¬ã«åæ©ä»ããããæ°å人ã®äººéã®ãã¹ãã£ããŒãã«ãããµãŒãã¹ã®ç¶ç¶çãªèª¿æ»ãå«ãŸããŸãã ããã«ãããäœæ¥äžã«ããå€ãã®ã«ãã¬ããžãæäŸã§ããŸãã
äžèšã®å©ç¹ã«ããããããããã®ã¢ãããŒãã«ã¯æ¬ ç¹ããããŸãã
- ãã³ãã¹ããžã®å€å žçãªã¢ãããŒããšæ¯èŒããäœåã®éãããç¯å²ã ãã®æ¬ ç¹ã¯ããã¹ãŠã®ç 究è ã®ãªã¢ãŒãã¯ãŒã¯ãšã»ãã¥ãªãã£ãã¬ã³ãã®äººæ°ã®çµæã§ãã
- äœæ¥çµæã®æ¯æããžã®äŸåã å€æ°ã®ç 究è ã絶察ã«å šå¡ã®é¢äžãä¿èšŒããããã§ã¯ãããŸãããå ±é ¬ã®å€§ããã¯ããã°ã©ã ã®äººæ°ã«å€§ããªåœ±é¿ãåãŒããŸãã
- äºç®èšç»ã®é£ããã¯ããã°å ±å¥šéããã°ã©ã ã®å žåçãªåé¡ã§ãã
ã»ãã¥ãªãã£åæã¯ç¶ç¶çã«æ©èœããŸã
ãã®ã¢ãããŒãã«ã€ããŠã¯ãèšäºã§è©³ããæ€èšããŸãã ãã®æ¬è³ªã¯ããªãªãŒã¹ãããªãªãŒã¹ãŸã§éçºããã補åã®ç¶ç¶çãªç 究ã§ãã
ãã®å Žåã®äœæ¥ã®çš®é¡ã®ãªã¹ãã¯ãäžèšã®ã¢ãããŒããããããåºç¯ã§ãã 以äžãå«ãŸããŸãã
- å¢çã»ãã¥ãªãã£ç£æ»
- å¢çã»ãã¥ãªãã£ç£æ»
- ã¢ãã€ã«ã¢ããª
- ãã¹ã¯ãããã¢ããª
- 匷åïŒå®å šãªãµãŒããŒæ§æïŒ
- éçºè ãã¬ãŒãã³ã°
ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãHarderingãªã©ã®ã¢ã€ãã ã«é¢ããŠã¯ãã¿ã¹ã¯ã¯ãã€ããªã®è匱æ§ãèŠã€ããããšã§ã¯ãªãïŒãã¹ã¯ãããã«ã€ããŠèª¬æããå ŽåïŒãããžãå®å šã«ç· ããããšã§ã¯ãããŸããïŒHarderingã®å ŽåïŒã äž»ãªãã®ã¯ãPentesteråŽããã®ã·ã¹ãã ã®ãã¥ãŒã§ãã
ãã®ã¢ãããŒãã®ç¹åŸŽã¯ãå éšããã®ä¿è·ãäœæããäŒæ¥ã®å°å ã®èŠåå¡ã®ä»äºã«å¯èœãªéãè¿ããšããããšã§ãã
- äœæ¥ïŒç¹å®ã®è£œåãç 究ããéã«ããã¥ã¡ã³ããšç§ãã¡èªèº«ã®çµéšã«ã¢ã¯ã»ã¹ããããïŒãšå éšãµãŒãã¹ã®éçºïŒéçºããã»ã¹ã«åœ±é¿ãäžããã¿ã€ãã³ã°ãçŽæ¥ç£èŠããèœåïŒã«å¯Ÿããé«ãæèã
- éçºãã補åã®ãœãŒã¹ã³ãŒããžã®ã¢ã¯ã»ã¹ã
- 建ç¯ã®å»ºèšã«åå ããæ©äŒã ããã«ãããã³ãŒããèšè¿°ããåã«è匱æ§ãèŠã€ããããšãã§ããŸãã ããšãã°ãCSRFããŒã¯ã³ã ããŒã¯ã³ã®ãããªéèŠã§åçŽãªããšã人ã ãåã«å¿ããŠããŸãããšããããŸãã ãªãªãŒã¹ã®å±éåŸã«ãã®åé¡ãçºçããå Žåãä¿®æ£ã¯ã³ã¹ããšæéã®ãããäœæ¥ã«ãªãå¯èœæ§ããããŸãïŒãã¡ããããã¹ãŠãã·ã¹ãã ã®ãµã€ãºã«äŸåããŸãïŒã
- ç 究ãã補åã®é«ãé¢é£æ§ã æ°ãããªãªãŒã¹ããªãªãŒã¹ããããã»ãã¥ãªãã£ã«çŽæ¥åœ±é¿ããéèŠãªã³ãŒãè¡ãããã€ãå€æŽãããšãããã«å€æŽãååŸããŠãã¹ãŠã®ãã¹ããéå§ã§ããŸãã
ãã®çµæãäœæ¥ã¯ãã¯ãé»ã§ã¯ãªããç§ãã¡ã®æããçœãç®±ã«ãã£ãŠè¡ãããããšãããããŸããã
ãã®ã¢ãããŒãã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ãåæããããã®äŒç€Ÿç¬èªã®ãªãœãŒã¹ïŒã»ãã¥ãªãã£ã®å°é家ïŒã®äžè¶³ãªã©ã®åé¡ã®è§£æ±ºã«ã圹ç«ã€ããšã«æ³šæããããšãéèŠã§ãã å€ãã®ç 究è ã¯ãæ å ±ã»ãã¥ãªãã£ã®ããŸããŸãªåéã§åžžã«çµéšãç©ãã§ãããããæ»æçãªäŒæ¥ã奜ãåŸåããããŸãã
SDLCãšåœŒã®å人SecureSDLCã«ã€ããŠå°ã
SDLC
å®çŸ©ããå§ããŸãããã SDLCã¯ãã¢ã€ãã¢ãçãŸããŠããå®éã«äœ¿çšããããŸã§ã®éã«ã¢ããªã±ãŒã·ã§ã³ãäœæããããã«çµç¹ã䜿çšããããã»ã¹ãå®çŸ©ããéçºãã¬ãŒã ã¯ãŒã¯ã§ãã
çŸæç¹ã§ã¯ãå€æ°ã®SDLCã¢ãã«ããããŸãããæãæåãªãã®ã¯WaterfallãIterativeãAgileã§ãïŒè©³çŽ°ã«ã€ããŠã¯ã ãã¡ããåç §ããŠãã ãã ïŒã ãããã¯ãã¹ãŠç¬èªã®é·æãšçæããããããããã®äœ¿çšæ¹æ³ã¯éåžžã«ç°ãªããŸãã ããã¯ãã¹ãŠããããžã§ã¯ãã®èŠæš¡ãäºç®ã人çè³æºã®éãããã³ãã®ä»ã®æ©èœã«äŸåããŸãã ãããã¯ãã¹ãŠã6ã€ã®äž»èŠãªã¹ããŒãžã®ååšã«ãã£ãŠçµåãããŠããŸãã
- èšç»ã¯ã解決ãã¹ãåé¡ã決å®ããããªãœãŒã¹ãšã³ã¹ããèšç®ããã代æ¿ãœãªã¥ãŒã·ã§ã³ãæ±ãããããªã©ã®äž»èŠãªã¹ãããã®1ã€ã§ãã
- åæ-èŠä»¶ã®éçºãå®çŸå¯èœæ§èª¿æ»ã®å®æœãªã©
ããŸãæããŠããªãããšã - ãã¶ã€ã³ã ãã®æ®µéã§ãã¢ãŒããã¯ãã£ãæ§ç¯ãããã³ã³ããŒãã³ããã¢ãžã¥ãŒã«ãã€ã³ã¿ãŒãã§ã€ã¹ãªã©ãéžæãããŸãã
- éçºãšå®è£ ã¯æ倧ãã€æãéèŠãªæ®µéã§ããããã§ã³ãŒããèšè¿°ããããããžã§ã¯ãã®éã®éšåã®æ§æãšæ§æïŒããå ŽåïŒãè¡ãããŸãã
- ãã¹ããšçµ±å-ããã§ã¯ãçµæãã¿ã¹ã¯ã«ã©ã®ããã«å¯Ÿå¿ãããã確èªããŸãã
- ã·ã¹ãã ã®ãµããŒãã éçºããã·ã¹ãã ã®é¢é£æ§ãç£èŠããŸãã ããã«ã¯ãããŒããŠã§ã¢ã®äº€æãšããŸããŸãªãœãããŠã§ã¢ã³ã³ããŒãã³ãã®æŽæ°ã®äž¡æ¹ãå«ãŸããŸãã
SecureSDLC
SecureSDLCã¯åãSDLCã§ãããSecureãã¬ãã£ãã¯ã¹ãä»ããŠããŸãã ãã¬ãã£ãã¯ã¹ãè¿œå ããã ãã§ããã¹ãŠãå®å šã«ãªããŸãïŒãããïŒã ãã®ãã¹ãŠã®æ¬è³ªã¯éåžžã«ç°¡åã§ããã€ã³ã¿ãŒãããã®çŸããåçãããããããã«ãã»ãã¥ãªãã£é¢é£ã®ã¢ã¯ã·ã§ã³ïŒãªã¹ã¯èšç®ãéç/åçã³ãŒãåæããã¡ãžã³ã°ããã¬ãŒãã³ã°ãªã©ïŒãåéçºæ®µéã«è¿œå ãããŠããŸãã
åŸæ¥ã®SDLCå®è£ ã§ã¯ãã»ãã¥ãªãã£ãã¹ãã¯ãã¹ããã§ãŒãºã«éãããŠããŸããã
æ¡åŒµãããå®è£ ã®ç®çã¯æ¬¡ã®ãšããã§ãã
- æ¢åã®/æ€åºãããè匱æ§ã®ä¿®æ£ã®æ°žç¶çãªç£èŠã
- éçºã®åæ段éã§è匱æ§ãèŠã€ããããšã«ãããè匱æ§ãä¿®æ£ããã³ã¹ããåæžããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®è©³çŽ°ãªåæã«ããéçºã®å質ã®åäžã éçºè èªèº«ã®ããã®ã»ãã¥ãªãã£ãã¬ãŒãã³ã°ã«åãçµã¿ãŸãã
ãã¹ãŠã¯äœã«åºã¥ããŠããŸããïŒ
çŸåšãå€ãã®äŒæ¥ãå®å šãªéçºãå®è·µããŠããŸãã ããšãã°ãMicrosoftãCiscoãDellãªã©ã®å€§èŠæš¡ã§æåãªãã®ã§ãã ä»æ¥ãèªå°å¿ã®ãããã³ããŒã¯ææ決å®ã®ã»ãã¥ãªãã£ãç£èŠããŠããŸãïŒããããããã¯åžžã«ããŸããããšã¯éããŸããïŒã åã¡ãŒã«ãŒã«ã¯ç¬èªã®ã¢ãããŒãããããéçºã®å éšæ©èœã«åºã¥ããŠåœ¢æãããŸãã
ã¹ã±ã«ãã³ãšããŠãå®å šãªéçºãæ§ç¯ããå Žåãå€ãã®äººãäžçã§äžè¬çã«åãå ¥ããããŠããæ £è¡ã䜿çšããŸãã
- OWASPã«ãããªãŒãã³ã»ãã¥ãªãã£ä¿èšŒæç床ã¢ãã«ïŒ OpenSAMM ïŒ
- ãã€ã¯ããœããã»ãã¥ãªãã£éçºã©ã€ããµã€ã¯ã«ïŒSDLïŒã ããã»ã¹ã¬ã€ãã³ã¹
ã€ã³ã¿ãŒãããã®æ¬¡ã®åçã§ã¯ãããžãã¹æ©èœãšã»ãã¥ãªãã£å¯Ÿçã®å¯Ÿå¿ãèŠãããšãã§ããŸãã
ã¿ã¹ã¯æ¡ä»¶
çŸåšã倧èŠæš¡ãªãããžã§ã¯ãïŒè©³çŽ°ãšæ©èœ-以äžïŒãå®æœããŠããã2ã€ã®å€§ããªé åã§éçºãè¡ã£ãŠããŸããéçºããã補åã®ãæé«ããšãã€ããªç 究ã§ãã ãã®èšäºã§ã¯ããã³ãã¹ã¿ãŒéšåã«çŠç¹ãåœãŠãŸãã
æåã«ããã®ãããžã§ã¯ãã®è匱æ§ãæ€çŽ¢ããããã»ã¹ã¯ãåäžã®ãã³ãã¹ããããã³ãã¹ããŸã§ã®æ®µéãçµãŠã幎ã«æ°åãå€éšå¢çãµãŒãã¹ãšéçºäžã®è£œåã®äž¡æ¹ã§ç¹°ãè¿ãããŸããã ç§ãã¡ã®æèŠã§ã¯ããããã®ã¢ãããŒãã¯ãç¶ç¶çã«ã»ãã¥ãªãã£ãåæãããããžã§ã¯ããšã¯ç°ãªããããã»ã©å¹æçã§ãããšèšŒæãããŠããŸããã
å€å žçãªã¢ãããŒãã§ç§ãã¡ã«åããªãã£ããã®ã¯äœã§ããïŒ 1åéãã®ãã³ãã¹ãã«ã¯ããã€ãã®æ¬ ç¹ããããŸãã
- äœæ¥ã®äºå®ã«é¢ããå€æ°ã®å ±åã Pentesterã®ã¬ããŒããèŠãããšããããªããããã¯å·šå€§ã§å¹³å100ããŒãžãããããšãç¥ã£ãŠããŸãã ãã®äœæã«ã¯ã人çããã³äžæçãªãªãœãŒã¹ã®é åãå¿ èŠã§ãã è匱æ§ãæ€çŽ¢ãã代ããã«ãç 究è ã¯ã¬ããŒããäœæããŸãã
- éçºè ãšã®çžäºäœçšãããŸã調æŽãããŠããŸããã åŸè ã¯ããã³ãã¹ãã®çµäºåŸã«ã®ã¿èŠã€ãã£ãåé¡ãžã®å¯Ÿå¿ãéå§ã§ããŸãã ãã ããå€ãã®å ŽåãçºèŠãããè匱æ§ã®é倧æ§ãšããããä¿®æ£ããæ¹æ³ã«ã€ããŠç解ããŠãããããã¯ãã³ã¿ã¹ã¿ãŒãšã¯ç°ãªãå ŽåããããŸãã
- 調æ»å¯Ÿè±¡ã·ã¹ãã ã®å éšæ©èœã«é¢ãããã³ãã¹ã¿ãŒã®èªèãäœãã ç 究è ã¯å®å šæ§ãåæããŠããäŒç€Ÿã®åŸæ¥å¡ã§ã¯ãªããããéçºããã»ã¹ã®ãã¹ãŠã®æ©èœãç¥ãããšãã§ãããææžããœãŒã¹ã³ãŒããžã®ã¢ã¯ã»ã¹ããŸã£ãããªãã
- ç£æ»åœ¹ããŒããŒã·ã§ã³ã ä»ã®1åéãã®ãããžã§ã¯ããŸãã¯é²è¡äžã®ãããžã§ã¯ããååšããããããã®ãããžã§ã¯ããæåŸã«èª¿æ»ãããã³ã¿ã¹ã¿ãŒã«ãã£ãŠåŠçãããŠããªããšããç¶æ³ãçºçããå ŽåããããŸãã ãã®ããã以åã®äŸµå ¥ãã¹ãã®æ çµã¿ã§æ¢ã«ç 究ãããŠãããµãŒãã¹ã®äžè¬çãªèªèã¯äœäžããŠããŸãã
éçºäžã®è£œåã®å éšæ©èœã«ã€ããŠã®ç£æ»äººã®èªèãäœããã³ã³ããŒãã³ãã«ããåé¢ããªãããïŒãã³ãã¹ã¿ãŒã®å Žåã補åã¯ç¹å®ã®ã¢ãã¬ã¹ããã±ãŒãžãã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ããã±ãŒãžããŸãã¯ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãã€ããªã®ããã«èŠããŸãïŒã補åã®ãªã¹ãã¯å€ãã®æ¬ãå«ãæ¬æ£ã®ããã«èŠããŸãæ¬ èœããŠããåå-ç®ã¯è±å¯ãªãµãŒãã¹ããéãåºããŸãã
ãã®ãããæéã®å²ãåœãŠã®åé¡ãçºçããŸããããã¯ãããžã§ã¯ãå šäœã«å²ãåœãŠãããã³ã³ããŒãã³ãã«ããŸã泚æãæãããšãã§ããŸããã ãªãœãŒã¹ã®å²ãåœãŠã¯éå¹ççã§ããã補åã®è©³çŽ°ãªèª¿æ»ã«ã¯é©ããŠããŸããã ãããã£ãŠã補åãæ¡ä»¶ä»ãã³ã³ããŒãã³ãã«åå²ããããšã決å®ãããŸããã
補åã®ãªã¹ããåéããŸã
ç§ãã¡ã®å Žåãããã¥ã¡ã³ãã®å ±åç·šéããã¡ã€ã«ã®ä¿åãã¡ãŒã«ã·ã¹ãã ãã¡ãã»ã³ãžã£ãŒã®ãã©ãããã©ãŒã ã§ããMyOfficeãšãã補åã§ãNew Cloud Technologies瀟ãšååããŠããŸãã ããããã¹ãŠã®ããã«ãã¢ãã€ã«çãšãã¹ã¯ãããçã®äž¡æ¹ããããŸãã
MyOfficeã®ãããªå€§èŠæš¡ãªè£œåã§äœæ¥ãéå§ããåã«ãã¡ã€ã³ã®ã¢ãžã¥ãŒã«ãšããŒãïŒäžèŠåå²ã§ããªãããã«èŠããŸãïŒã匷調衚瀺ããŠããŸã£ããåãæ¬æ£ãæ©èœããªãããã«ããå¿ èŠããããŸãã ããã¯ãã¢ããªã±ãŒã·ã§ã³ã®å éšããã»ã¹ãšããŒã ãªãœãŒã¹ã®å²ãåœãŠãããããç解ããããã«å¿ èŠã§ãã
次ã®ããã«ãªããŸããã
- Webã¯å®éã®SPAã¢ããªã±ãŒã·ã§ã³ã§ãããjs / css / htmlãã¡ã€ã«ã®ã¿ã§ãã ãã®ã³ã³ããŒãã³ãã«å«ãŸãããµãŒãã¹ïŒã¡ãŒã«ãã«ã¬ã³ããŒãé£çµ¡å ããã£ã¹ã¯ãããã¥ã¡ã³ããšãã£ã¿ãŒã管çè ã³ã³ãããŒã«ããã«ãããŽïŒã¡ãã»ã³ãžã£ãŒïŒã
- ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³-ãã©ãããã©ãŒã ããšã«3ã€ã®ã¢ããªã±ãŒã·ã§ã³ïŒããã¥ã¡ã³ããšãã£ã¿ãŒãã¡ãŒã«ã¯ã©ã€ã¢ã³ããããŽ-ã¡ãã»ã³ãžã£ãŒïŒ-iOSãAndroidãTizenïŒã¯ããé©ããªãã§ãã ããïŒã
- LinuxãOS XãWindowsã®3ã€ã®ãã©ãããã©ãŒã çšã®ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ïŒããã¥ã¡ã³ããã¡ãŒã«ãã¡ãã»ã³ãžã£ãŒïŒã
- ãµãŒããŒAPIãå ¬éãããŠããŸãã
- çžäºã«éä¿¡ããå éšãµãŒãã¹ïŒRedisãSwiftãªã©ïŒã
ããã¯ãã¹ãŠãç 究è ã«ãšã£ãŠéåžžã«èå³æ·±ããã®ã§ãããããŸã§ã«ãªãåäŸã®ãªãæè¡ãç 究ããæ©äŒãšããã§ã«ç 究ããããããã¯ãããã«æŽ»çšããæ©äŒã®äž¡æ¹ã§ãã
ã¹ããªã³ãèšç»
ãã®ãããªè£œåã®éçºããã»ã¹ã«ã·ãŒã ã¬ã¹ã«çµ±åããã«ã¯ãã°ããŒãã«ãªèšç»ãµã€ã¯ã«ããã®å Žåã¯ãªãªãŒã¹ãµã€ã¯ã«ã«é©å¿ããå¿ èŠããããŸãã ãMyOfficeãã®æ°ããããŒãžã§ã³ã®ãªãªãŒã¹ã¯3ãæããšã«è¡ãããŸãã ãããã£ãŠãç§ãã¡ã¯ããã3ãæéã ãã¹ããªã³ããçããŸãã ç§ãã¡ã®ç解ã«ãããã¹ããªã³ããšã¯äœã§ããïŒ
ç§ãã¡ã«ãšã£ãŠã®ã¹ããªã³ãã¯ãå¯èœãªéãäœæ¥ãèšç»ããããšããæéã®ã»ã«ã§ãã 倧ããªã¹ããªã³ãã®å éšã«ã¯ãããå°ããªæž¬å®åäœãã€ãŸã1é±éã«çžåœããã¹ãããããããŸãã å©çšå¯èœãªè£œåãå ¥æãããããã®ãµã€ã¯ã«ãšå€æŽã®æ¡ä»¶ã確èªãããããã®è£œåã®ç£æ»ãå¿ èŠãªé åºã§ã¹ããªã³ãã®ã¹ã±ãžã¥ãŒã«ã«å ¥ããŠãã¹ãããã«åå²ããŸãã
åœç¶ãéçºæ¥ãæ§ããã«èšã£ãŠããéåžžã«ã²ã©ãçµæã«ãªãããšãããã£ãŠããããããæéãæ¥ããã©ãããã®ïŒããšããæ£åœãªè³ªåãäºæ³ãããŸãã
ããã§ãå€ãåäŸåãã®ã²ãŒã ãå©ãã«ãªããŸã-ãã¿ã°ãã ä»ã®ãããã移åã§ãã空ã®ã»ã«ããããããã«ãã£ãŠããã¯ã¹ãé¢ããããšãªãé åºãå€æŽã§ããããšãèŠããŠããŸããïŒ ç§ãã¡ã®å Žåãããã¯ã¹-ããã¯ãã¹ããªã³ããã§ãã
ããŸããŸãªãäºå®å€ã®ãäœæ¥ãéçºããã補åã§äœ¿çšããããµãŒãããŒãã£ãœãªã¥ãŒã·ã§ã³ã®ã¬ãã¥ãŒãããã³ãããžã§ã¯ãã«é¢é£ããä»ã®äœæ¥ãããããã空ã®ã¹ãããã®æ°ãå¢ããããšã決å®ãããŸããã ãããã£ãŠãç§ãã¡ã¯èšç»ãç«ãŠãŠç§»åãã空ã®ã¹ãããã¯ãã€ã§ãæºããããšãã§ããŸãã
ã¹ããªã³ãã®1ã€ã®äŸïŒæåã®æ°åã¯ã¹ããªã³ãã®é±çªå·ã§ãïŒïŒ
- ã³ã³ããŒãã³ãWebã¢ããªã±ãŒã·ã§ã³ïŒã¡ãŒã«ãé£çµ¡å ãã«ã¬ã³ããŒïŒ
- ã³ã³ããŒãã³ãWebã¢ããªã±ãŒã·ã§ã³ïŒã¡ãŒã«ãé£çµ¡å ãã«ã¬ã³ããŒïŒ
- AndroidãiOSãTizençšã®ãã€ãã£ãã¢ãã€ã«ã¢ããª
- AndroidãiOSãTizençšã®ãã€ãã£ãã¢ãã€ã«ã¢ããª
- èªèšŒãµãŒã㌠Webã¢ããªã±ãŒã·ã§ã³ããã¯ãšã³ã
- ãã¡ã€ã«ãµãŒããŒããã¯ãšã³ããWebããã·ã¥ããŒããããã³ç®¡çAPI
- ããã¥ã¡ã³ããšãã£ã¿ãŒWebããã«ãBeckendãšãã£ã¿ãŒ
- ãã¡ã€ã«ãµãŒããŒã®ãã¹ã¯ãããã¯ã©ã€ã¢ã³ã
- ã¡ãŒã«ãã«ã¬ã³ããŒãé£çµ¡å ãããã¥ã¡ã³ãçšã®ãã¹ã¯ãããã¯ã©ã€ã¢ã³ã
- WebãMacOSãWinãLinuxããã³ãããã®APIçšã®ã¡ãã»ã³ãžã£ãŒ
- ãã¹
- ãã¹
- ãã¹
Miscã¯ãããã®ç©ºãã¹ãããã«ãããããã®ååšã¯éåžžã«éèŠã§ãã , , ( , API-), (10 ). Misc security- .
, (, , , - , , ). , , .
- , . , . ââ .
ã¹ã¿ã³ã
, , . , , «» , , , . , â , â â.
â , , , -.
JIRA ( , ), , HackerOne:
- 圹è·
- â
, , - IT.
.
: , - . , , - .
ããããŒã°ãéããŠããããã§ããã»ãã¥ãªãã£åæèªäœã«çŽæ¥è¡ããŸãããïŒæ声ãæè¡çãªè©³çŽ°ïŒã
çµéšè±å¯ãªãã³ãã¹ã¿ãŒã®ä»äºã®èå³æ·±ãèŠçŽ ã®1ã€ã¯ããã¡ãã·ã§ããã«ã§ææ°ã®ãã¯ãããžãŒã®äœ¿çšã§ããããããèŠãŠã¿ãŸããããå§ããåã«ããã¡ãããWebãèŠãŠãåæã«ååãç»é²ããŸããã
'â><svg onload=alert(1)>{{7*7}}
ãã¡ã€ã«ãã¢ããããŒããããã¡ãŒã«ãéä¿¡ãããã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãã€ã³ã¹ããŒã«ãããå
šäœãšããŠããã¹ãŠãã©ã®ããã«æ©èœãããã調ã¹ãŸããã
ãã®åŸãéçºããŒã ã«è¡ãããã£ããããã®å£ã«ã¯ã»ãšãã©åãŸããªãA1ã®å€§ããªã·ãŒãã§ãµãŒããŒã¢ãŒããã¯ãã£ã®å³ãäœæããŸããã ããã«ã¯æ¿å
¥ããŸããããäžè¬çã«ã¯ãã¹ãŠãããªãæšæºçã§ã¯ãŒã«ã§ãïŒ
- ãŠãŒã¶ãŒã¯2ã€ã®ããŒãã䜿çšã§ããŸãïŒ80ããã³443ïŒã ãããã®èåŸã«ãããã®ã¯ãã¹ãŠãã¯ã©ã¹ã¿ãŒããã³ä¿¡é ŒãŸãŒã³ãšèŠãªãããŸãã
- ã¯ã©ã¹ã¿ãŒ-ããã¯ãç¡å¶éã®æ°ã®ãµãŒããŒãã·ã³ã«ããããšãã§ããŸãïŒã€ã³ã¹ããŒã«ã§ã¯-2ïŒãããã¯ãå€æ°ã®ãã€ã¯ããµãŒãã¹ïŒjavaãgoãc ++-ãšãã£ã¿ãŒãããŒã¿ããŒã¹ãSWIFTãªã©ã®ã³ã¢ïŒãå®è¡ããŸãã
- äžéšã®ãµãŒãã¹ã¯RPMããã±ãŒãžããæäŸãããäžéšã¯dockerã³ã³ããã§ãïŒè¿œå ã®åé¢ãæäŸããŸããããã¯ããã¥ã¡ã³ãå€æã§äœæ¥ããå Žåã«ç¹ã«éèŠã§ãïŒã
Web
ã¯ã©ã€ã¢ã³ãéšåã¯ãAngularJSãšãµãŒããŒAPIããã®æ瀺çãªæŸèæã®ãªãæ¬æ ŒçãªSPAã§ã ïŒããããŠãããã§ããã¯ãšã³ããããã©ãŒã ãæäŸããŸãïŒããªã©ïŒã
ãµãŒããŒåŽ-ããŸããŸãªæ¹æ³ã§ãããã³ããšããŠnginxã䜿çšãããã®åŸã«ã¯ã©ã€ã¢ã³ãèŠæ±ãåŠçããå€ãã®java / golangãµãŒãã¹ãç¶ããŸãã
SPAã¢ããªã±ãŒã·ã§ã³ã®åæã¯éåžžã«ã¯ãŒã«ã§éåžžã«äŸ¿å©ã§ããèŠæ±ãšå¿çã®èŠ³ç¹ããèŠããšããã¹ãŠãè«ççã§æãç³ãŸããŠããŸãã SPAèªäœã®è匱æ§ãèŠã€ããããšã¯ããã¡ãããããªãé£ããäœæ¥ã§ãã
ãã£ã·ã¹ã€ãŒã
ã¯ããç§å¯ã¯ãããŸãããå€ãã®äººãããã§ããããã«ãBurpïŒLarry Lauãªããã©ã€ã»ã³ã¹ã®ã¿ïŒãšãã®ã¢ãžã¥ãŒã«ã䜿çšããŠãããŸããŸãªçš®é¡ã®è匱æ§ïŒã€ã³ãžã§ã¯ã·ã§ã³ã IDOR ã SSTIãªã©ïŒãæ€çŽ¢ããŸãã ãã®ããŒã«ããªããã°ãäœããããŸããã
ãŸããéçºè ã¯ç§ãã¡ã«å°ããŠããã»ã¹å šäœã䌞ã°ã代ããã«ãè匱æ§ãä¿®æ£ããåŸãããã䜿çšããŠçµæã確èªã§ããŸãã ããã«ã¯ãç¡æçãšProxyãšRepeaterã®2ã€ã®ã¿ãã§ååã§ãã
ãŸããå€æ°ã®ã«ã¹ã¿ã ã¹ã¯ãªããã䜿çšããŠããŸãããã®ãã¡ã®1ã€ãæ€èšããŠãã ããã
ãã§ã«ãåç¥ã®ããã«ãåœç€Ÿã調æ»ãã補åã«ã¯ã¡ãŒã«ããããŸãã ããã§æã匷åãªæ»æã®1ã€ã¯ãé»åã¡ãŒã«ã®XSSã§ãã ãŸããã¬ã¿ãŒã§ã¯ãHTMLã䜿çšããŠãã¬ãŒã³ããã¹ãã ãã§ãªãäŒæ¥ã¹ã¿ã€ã«ã®çŸããã¬ã¿ãŒãäœæã§ãããšããäºå®ã«ãã£ãŠãäŸç¶ãšããŠè€éã§ãã éçºè ã¯ãéä¿¡è ãJavaScriptãåã蟌ãããšãã§ããªãããã«HTMLã䜿çšã§ããããã«ãããšãã課é¡ã«çŽé¢ããŠããŸãã
ã»ãã¥ãªãã£ã®äžçã«ã¯ãGoogleãªã©ã®ããŸããŸãªå€§èŠæš¡ãµãŒãã¹ã§XSSãèŠã€ããããšã«å€ãã®æéãè²»ãããç 究è ã®Mario Heiderich @ 0x6D6172696F ïŒ.marioïŒãããŸãã ãããŠæãéèŠãªããš-圌ã¯åœŒå¥³ã®ããã«èªåãã¹ããå ¬éããŸãããããã¯ããŸããŸãªããªãã¯ãšãã©ãŠã¶ãšHTML5ã®å·§åŠãã䜿çšããŠããŸãã JSãå®è£ ããå¯èœæ§ã«ã€ããŠã¡ãŒã«ãµãŒãã¹ããã¹ãããããã®çæ³çãªãœãªã¥ãŒã·ã§ã³ã
âãã¢ãšãã¹ããžã®ãªã³ã¯
â ãããŠãHTML5ã®ç¹å¥ãªãã¯ã¿ãŒãå¿ããªãã§ãã ãã
ç§ãã¡ã¯äœãããŸãããïŒ éåžžã¯HTMLãWebã¯ã©ã€ã¢ã³ãããéä¿¡ããããšã¯ã§ãããã¡ãŒã«ãµãŒããŒã«çŽæ¥éä¿¡ããã ãã§ãåæã«ãã©ãŠã¶ãŒã§æåãéãããããããã®ãã¹ãïŒ+ããã€ãã®ã·ãŒã¯ã¬ãããã³ãè¿œå ïŒãååŸããPythonã¹ã¯ãªããã§IMAPãµãŒããŒã«10è¡ã§éä¿¡ããŸãã JSãå®çŸããŸãããïŒ ãã±ãããéå§ããŸãã
ãŠãŒã¶ãŒãã¬ã¿ãŒã®ç»åïŒimgã¿ã°ïŒã䜿çšããŠã¬ã¿ãŒã®éå§ãæ€åºã§ããããšã¯èª°ããç¥ã£ãŠããŸãããä»ã®ã¿ã°ã䜿çšããŠãããè¡ãããšãã§ããŸãã ããã§ãã Cure53ãªããžããªã圹ç«ã¡ãŸãã ããã«ããããŠãŒã¶ãŒæ å ±ãããŒãžããã¿ã°ãæ€åºã§ããŸãã
ããã€ãã®ã¿ã°ã®ã¹ããŒã ã®å¶éãããšãã°ãåã "img src"ã®fileïŒ///ã䜿çšã§ããªãçç±ïŒè©³çŽ°ã«ã€ããŠã¯ValdikSSã® ãªã³ã¯ãåç § ïŒã¯ãéçºäžã«ããã«èæ ®ãããŸããã
次ã®åé¡ã¯æ·»ä»ãã¡ã€ã«ã§ãã XSS-loadã䜿çšããŠãããŸããŸãªåœ¢åŒã®æ·»ä»ãã¡ã€ã«ãå¿ ããã¹ãããŠãã ãã ã ããã§ããããååŸã§ããŸã ã ããã«ãããæ·»ä»ãã¡ã€ã«ããµãŒããŒãæåã§ä¿åããã³æäŸããæ¹æ³ã確èªããŸãã
ã¢ãã€ã«ã¢ããª
åãã©ãããã©ãŒã ã®ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã¯ãåŸæ¥ã®ãã€ãã£ãã¢ããªã±ãŒã·ã§ã³ã§ãã
ã©ã¡ãã®ã¢ãããŒãããèªååãããæåã®iOSãšAndroidã®èª¿æ»ã«äœ¿çšãããŸãã Tizenã®å Žå-ããã¥ã¢ã«ã®ã¿ã èªååã«ã€ããŠ-MobSFã¯ããã¶ãäžãã£ãŠããæç©ãã®é€å»ã«å€§ãã«åœ¹ç«ã¡ãŸãã
äžè¬çãªåé¡ãèªåçã«åéããåä¿¡è ããµãŒãã¹ãªã©ã®ã¬ãã¥ãŒãè¡ãããšãã§ããŸãã Androidã§ã®äºæãããœãŒã¹ã³ãŒãåæã®äžéšã®é¡äŒŒæ§ããå®è¡ããŸãïŒéã³ã³ãã€ã«åŸïŒã ãŸããã³ã³ãã€ã«æã«ãã©ã°ïŒã¹ã¿ãã¯ã¹ããã·ã³ã°ä¿è·ãPIE ...ïŒããã§ãã¯ããŸãã
æååæ-AndroidïŒ+ã«ãŒãïŒãiOS +ãžã§ã€ã«ãã¬ã€ã¯ïŒçŸæç¹ã§ã¯ãiOS 9.3.3ã§å©çšå¯èœãªææ°ã®ãžã§ã€ã«ã䜿çšããŠããŸãïŒã
ããããTizenã®äœ¿çšã¯ããã»ã©ç°¡åã§ã¯ãããŸããã 圌èªèº«ã¯éåžžã«å¥åŠã§çããã§ãã ãã®ã·ã¹ãã ã¯ãHTML5ããµããŒããã1ââã€ã®å€§ããªãã©ãŠã¶ã§ãããé·ãééçºãç¶ããããŠãããã»ãã¥ãªãã£ç 究è ã«ãšã£ãŠãèå³æ·±ããæ°ãããã®ãç 究ãããŠããªããã®ã§ãã
ããããã質åã¯-TizenOSã§ã©ã®ãããã®é»è©±ãæã£ãŠããã®ã§ããïŒ ãã®ãã©ãããã©ãŒã ã«åæ°ã®èšäºãšã»ãã¥ãªãã£ããŒã«ããããŸãã ç§ãã¡ã¯éçºè ã®éãé²ã¿ãŸãã-Tizen SDKãããŠã³ããŒãããé»è©±ã«æ¥ç¶ããŠã¢ããªã±ãŒã·ã§ã³ãããã¥ãŒããŸããã ãã®ã¢ãŒãã§ã¯ããã¡ã€ã«ã·ã¹ãã ã衚瀺ãããããããã°ã³ã³ãœãŒã«ãååŸããããã»ãã¥ãªãã£ã®åé¡ãèŠã€ããã®ã«åœ¹ç«ã€ãã®ä»ã®æäœãå®è¡ãããã§ããŸãã æ®å¿µãªãããæ©èœã¯ããªãå¶éãããŠãããOSã«ã³ã³ãœãŒã«ããçŽæ¥ã¢ã¯ã»ã¹ããããšã¯ã§ããŸããã
ãã®ããŒã«ã¯Tizenã®å ¬åŒWebãµã€ãã«ãããŸãã ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ç²Ÿéãããå Žåã¯ããšãã¥ã¬ãŒã¿ã䜿çšã§ããŸãã
Tizenãã©ãããã©ãŒã èªäœã«ã¯çŸåšãå€æ°ã®ã»ãã¥ãªãã£äžã®æ¬ é¥ããããŸãã ãã©ãããã©ãŒã ãšãã®åºçç©ã® 40ã®zerodeyã«é¢ããæè¿ã®ãã¥ãŒã¹ãæãåºãããšãã§ããŸãã ãŸããTizenOSã圱é¿ãåããSmartTVã®ããã€ãã®è匱æ§ã«ã€ããŠBeLove - presentationã«èªã£ãã
ãã¹ã¯ããã
ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ãMyOfficeãã«ã€ããŠã¯ããã€ããªãã¡ãžã³ã°ã«é¢ããèšäºãå¥ã«ãããŸãã ãããã®äœåã®ãã¬ãŒã ã¯ãŒã¯ïŒãã³ãã¹ããªã©ïŒã§ããã¡ã€ã«ã·ã¹ãã ãšã®çžäºäœçšïŒäžæãã©ã«ããŒããããã«å¯Ÿããæš©å©ãªã©ïŒãDLLãã€ãžã£ãã¯ããããã¯ãŒã¯ïŒå®å šãªãã£ãã«ãä»ããããŒã¿ã®éä¿¡-TLSïŒãã¹ãã¬ãŒãžãªã©ã®é åããŒã¯ã³ãªã©ã
å€ãã®ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³ã¯Electronã«åºã¥ããŠèšè¿°ãããŠãããGitHubãSlackãDiscordãªã©ãäœæãããŠããŸãã Electronèªäœã¯ãªãŒãã³ãããžã§ã¯ãã§ããããŠã§ããã¥ãŒãã€ãŸãããã€ãã£ãã¢ããªã±ãŒã·ã§ã³ãšèŠèŠçã«åºå¥ã§ããªãå°ããªãã©ãŠã¶ã§ãã
ãµãŒãããŒãã£è£œåã®ç 究ã DOMPurifyãšSafariã¯ã©ãã§
å€ãã®å Žåã補åã®ã»ãã¥ãªãã£ã調æ»ããéã«ãè匱æ§ãèŠã€ãã£ãå Žæãåžžã«éæã§æ確ã§ã¯ãªããããåé¡ãçºçããŸãïŒé¡§å®¢ã®ã«ã¹ã¿ã èšè¿°ã³ãŒããŸãã¯ãµãŒãããŒãã£è£œåãã©ã€ãã©ãªãéçºã§äœ¿çšããããã¬ãŒã ã¯ãŒã¯ã ãã®ãããªã±ãŒã¹ããããŸããã
ã³ã³ããŒãã³ãã®1ã€ã調ã¹ããšãã¯ã©ã€ã¢ã³ãéšåã®ããªãé倧ãªè匱æ§ãã€ãŸãJSã³ãŒãã®å°å ¥ããŸãã¯XSSã®å°å ¥ãèŠã€ãããŸããã åœåããã®ã³ã³ããŒãã³ããXSSããä¿è·ããããã«åãJSã©ã€ãã©ãªDOMPurifyã䜿çšããããããããçºçããçç±ã¯æããã§ã¯ãããŸããã§ããã
DOMPurifyã¯ãDOMå°çšã®ããŒã«ã§ãããHTMLãMathMLãããã³SVGïŒGitaããã®èª¬æã®äžéšïŒçšã®è¶ é«éã§ãéåžžã«å¯å®¹ãªXSSæ¶æ¯ãœãªã¥ãŒã·ã§ã³ã§ãã MathMLã¯ãæ°åŠèšå·ãšæ°åŒãè¡šãããã®XMLããŒã¹ã®ããŒã¯ã¢ããèšèªã§ãã ãã¡ãããããã¯ãã¹ãŠHTML5ãããã®ã³ã³ããã¹ãã§æ©èœããŸãã ã€ãŸãããã®è£œåã«ã¯ææ°ã§ææ°ã®ãã®ããã¹ãŠå«ãŸããŠããŸãã
JavaScriptã§èšè¿°ãããŠããããã¹ãŠã®äžè¬çãªãã©ãŠã¶ãŒã§åäœããŸãã
- ãµãã¡ãª
- ãªãã©ïŒ15+ïŒ
- Internet ExplorerïŒ10以éïŒ
- Firefox
- ã¯ãã
- BlinkãŸãã¯WebKitã䜿çšãããã¹ãŠã®ãã®
ãã®ããŒã«ã¯ãCure53ãç¹ã«Mario Heiderich @ 0x6D6172696F ïŒ.marioïŒã«ãã£ãŠéçºãããŠããã @ filedescriptorã@shafigullinãªã©ã®æå人ãè²¢ç®ããŸãã æãã¯ãŒã«ãªWebã»ãã¥ãªãã£ç 究è ã®ãã®ãããªããŒã ã¯ãã¯ã©ã€ã¢ã³ãåŽã®è匱æ§ããä¿è·ããããã®ãªãŒãã³ãœãŒã¹ããŒã«ã«åãçµãã§ããããšãããããŸããã
Geetãžã®ãªã³ã¯ã
å°ãèããŠã¿ããšãè匱æ§ã¯å®éã«ã¯éçºãããã¢ããªã±ãŒã·ã§ã³ã§ã¯ãªããæ¥ç¶ãããJSã©ã€ãã©ãªã«ãããšããçµè«ã«éããŸããã
次ã«ãææ°ããŒãžã§ã³ã®DOMPurifyã®è匱æ§ã確èªããSafariã®äžã§ã®ã¿ãã®ãããªåçŽãªãã€ããŒããäœã®ããªãã¯ããªãæ©èœããããšã«éåžžã«é©ããŸããã
Payload: <svg onload=alert(document.domain)>
圌ãã¯ããã«è匱æ§ãä¿®æ£ããDOMPurifyããã°ããŠã³ãããã°ã©ã ã®ç®¡çäžã«çœ®ããFastMailã¯ããããŒã«ã®ããã«ãå°ããéãæã£ãŠãããŸããã
ããããããã§çµããã§ã¯ãããŸããã§ãããç©Žã¯Safariã§ããæ©èœããªãã£ãããããã®æ¹åãå°ãæãäžããçµæãDOMParseré¢æ°ãæ£ããæ©èœãããhtmlããŒãžã解æãããšãã«JSãå®è¡ãããããšãããããŸããã IEïŒãAppleã§å ±åããŸããã
Payload: new DOMParser().parseFromString('<svg onload=alert(document.domain)>', 'text/html');
ãããŠå æ¥ãAppleã¯CVE-2017-7038ãçºè¡ããŸãããããã¯UXSSã®è匱æ§ã«éåžžã«äŒŒãŠããŸããã SOPããã€ãã¹ããŸããã èãããããã¹ãŠã®è匱ãªæ©èœã®è©³çŽ°ã«ã€ããŠã¯ããããããã€ãå¥ã®èšäºã§èª¬æããŸãã
ãã®çµæãSVGã¿ã°ãåŠçããªãã£ãDOMPurifyã©ã€ãã©ãªã®æ¥ç¶ã«ãããMyOfficeã¢ããªã±ãŒã·ã§ã³ã§XSSãå¯èœã«ãªããŸããïŒããããå¿ èŠããããŸãïŒãããšã©ãŒã§å®è£ ãããæšæºã®ãã©ãŠã¶ãŒé¢æ°DOMParserã«çŽæ¥äžããŸããã
ãã®ããã«é·ãéãç§ãã¡ã¯ã¯ã©ã€ã¢ã³ãã®è匱æ§ãä¿®æ£ããã ãã§ãªããäžçãå°ãå®å šã«ããŸããã
æ¬åœã®è匱æ§
倧ããªãã®ãæžããŠãã°ãé²ãããšã¯äžå¯èœã§ãããã®ãããªæ¹æ³è«ã¯ãããŸããã ãããã£ãŠãããã€ãã®å®éã®è匱æ§ãé«ã¬ãã«ã®é倧床ã§åæããŸãã
å€éšXMLãšã³ãã£ãã£ã®åã蟌ã¿
ããã¥ã¡ã³ãã®ä¿åãšç·šéããããããå¿ èŠã«å¿ããŠäœããã®æ¹æ³ã§ããã¥ã¡ã³ãããŠãŒã¶ãŒã«æç»ããå€æŽããå¿ èŠããããŸãã ãåç¥ãããããŸããããçŸä»£ã®ãªãã£ã¹ããã¥ã¡ã³ãã¯ãã¢ãŒã«ã€ãã«ããã±ãŒãžåãããXMLãã¡ã€ã«ã®ã³ã¬ã¯ã·ã§ã³ã§ãã ãããŠãXMLããŒãµãŒã䜿çšããªãããã¥ã¡ã³ãç·šé
åWebãã©ãŠã¶ã¯ããã«XXEã«ã€ããŠèããŸãã ãã®å Žåããã®è匱æ§ãã©ã®ããã«åäœããŠããã®ãã確èªããã«ã¯
- ããã¥ã¡ã³ããããŠã³ããŒããã
- ãµãŒããŒã¯ã¢ãŒã«ã€ãã解åããŸã
- XMLãå éšåœ¢åŒã«å€æããããšããŸã
- ãµãŒããŒã«ç®çã®åœ¢åŒã§ä¿åããŸã
ã¹ããã3ã¯å±éºã§ããããã¯ãå€éšãšã³ãã£ãã£ãæ¥ç¶ã§ãããªãŒãã³ãœãŒã¹ã©ã€ãã©ãªã䜿çšããŠå®è¡ãããŸãã ç§ãã¡ã¯äœãããŸãããïŒ
- æå¹ãª.docxããã¥ã¡ã³ããäœæããŸãã
- é梱
- è¿œå ãããxmlãã¡ã€ã«ã®1ã€
<!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///etc/passwd" >]> ⊠<foo>&xxe;</foo>
- ããã¯ããã¯ã.docxã«ååå€æŽ
- ãµãŒããŒã«ã¢ããããŒããããŸãã
ãããŠãåŠçåŸã/ etc / passwdã®å 容ãèŠãŸããã ãã ãããã®è匱æ§ã䜿çšãããšããµãŒããŒäžã®ãã¡ã€ã«ãèªã¿åãããšãã§ããŸããã
äœããã®æ¹æ³ã§ããã¹ãŠã®è§£æã¯éé¢ãããã³ã³ããïŒdockerïŒã§è¡ããããããéèŠãªãã®ãèªã¿åãããšãã§ããŸããã§ããã ãã®è匱æ§ã¯ããã«è§£æ±ºãããŸããã
ãšããã§ã ããŒã«ã䜿çšããŠãã®ãããªãã¡ã€ã«ãçæããXXEã確èªã§ããŸãã ãã®å©ãã«ãããäžéšã®ç 究è ã¯ãã°ããŠã³ãããã°ã©ã ã§ãXXEãçºèŠããŸããã
ELã€ã³ãžã§ã¯ã·ã§ã³ãä»ãããªã¢ãŒãã³ãã³ãå®è¡
ãŸããæ£çŽãªRCE-ãµãŒããŒã§ã®OSã³ãã³ãã®ãªã¢ãŒãå®è¡ã«ã€ããŠã説æããŸãã äžéšã®ãã€ã¯ããµãŒãã¹ã¯ãSpringã®äœ¿çšãå«ããJavaã§èšè¿°ãããŠããŸãã Springã®ãã®çš®ã®è匱æ§ïŒ EL Injection ïŒïŒã ãã§ãªãïŒã¯ã{{7 * 7}}ããµãŒããŒã«éä¿¡ãããšãããŒãžã®å¿çã§49ã«çããæ°åŠé¢æ°ãååŸããå Žåããã¡ãžã³ã°ã«éåžžã«åœ¹ç«ã¡ãŸãã
ããã«ãããªãã¯ãã§ã«èšèªã®æ©èœãå®è¡ããããã«ä»¥äžã§ã³ãã³ããå®è¡ããããšããããšãã§ããŸãïŒ
${T(java.lang.Runtime).getRuntime().exec("ls")}
Spring Boot Oauthã¢ãžã¥ãŒã«ã®åæ§ã®è匱æ§ã®è©³çŽ°ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã ãããŠgitã®ãã±ããããã®å Žåãã³ãŒãã®å®è¡ãåŒãèµ·ãããåé¡ã説æããŸãã
ããããç¹å®ã®ç¶æ³ã§ã¯ãWebãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ãããšãã«åŒçšç¬ŠãURLãšã³ã³ãŒããééããSpringãç¹æ®æåãšããŠèªèããªãã£ãããããã®ãããªãã€ããŒãã®åçŽãªéä¿¡ã¯æ©èœããŸããã§ããã ãã®ç¶æ³ã§äœããã¹ããïŒ ãã¹ãŠãéåžžã«ç°¡åã§ããæšæºèšèªããŒã«ã䜿çšããŠãjava.lang.Character.toStringïŒïŒé¢æ°ã䜿çšããŠæ°å€ããæåã«ãšã³ã³ãŒããããã¹ãŠã®æåãé£çµã§ããŸãã ãã®ããªãã¯ã«ã€ããŠã¯ãã¡ããã芧ãã ãã ã
ãã®çµæã倧ãããŠæããããã€ããŒãïŒ/ etc / passwd /ãèªãïŒãåŸãŸããïŒ
${T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(99).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(32)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(101)).concat(T(java.lang.Character).toString(116)).concat(T(java.lang.Character).toString(99)).concat(T(java.lang.Character).toString(47)).concat(T(java.lang.Character).toString(112)).concat(T(java.lang.Character).toString(97)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(115)).concat(T(java.lang.Character).toString(119)).concat(T(java.lang.Character).toString(100))).getInputStream())}
RCEã¯ããã«ãŒã³ã³ããå ã«ããããä¿è·ã®ããã«äœæãããããã§ã¯ãããŸããããäœããã®åé¢ãæäŸããŠããããšã«æ³šæããŠãã ããã
ãããã«
ããŠãããã§èšäºã®çµããã§ãã ããã§ãã¢ãããŒããåŸæ¥ã®äŸµå ¥ãã¹ããšã©ã®ããã«ç°ãªããããŸãšããŸãããã
- ç£æ»å¡ã¯ã補åéçºããã»ã¹ãšéçšãããããç¥ã£ãŠããŸãã èªèã¯ãããã¥ã¡ã³ããžã®ã¢ã¯ã»ã¹ãšéçºã®ããŒã¹ãç£èŠããæ©èœã«ãã£ãŠéæãããŸãã
- ã¢ãŒããã¯ãã£ã®æ§ç¯ã«åå ããæ©äŒãããã«ãããèšç»æ®µéã§åé¡ãè匱æ§ãèŠã€ããããšãã§ããŸãã
- ãœãŒã¹ã³ãŒããžã®ã¢ã¯ã»ã¹ã
- ãã©ãã¯ããã¯ã¹ãããã¯ã€ãããã¯ã¹ãžã®äœæ¥ãªãã»ããã ãã®ç¹ã§ãéåžžã®ãã¹ãã¯éåžžââéåžžã«å¶éãããŠããŸãã
- 倧èŠæš¡ãªã¬ããŒããçæããåé¡ã®è§£æ¶ã
- ç£æ»äººãªãœãŒã¹ã®é©åãªå²ãåœãŠã ãã¹ãŠã¯é±ããšã«ã¹ã±ãžã¥ãŒã«ãããæéã¯å¹ççã«äœ¿çšãããã³ã³ããŒãã³ãã®å éšæ©èœãç¥ã£ãŠãã人ã¯åžžã«ãããžã§ã¯ãã«åå ããŸãã
- å€æ°ã®ããŸããŸãªãµãŒãã¹ã®ç 究ã«ãããå°éç¥èã®ã¬ãã«ãåäžããŸãã
- éçºã«äœ¿çšããããµãŒãããŒãã£è£œåã®è匱æ§ãæ€çŽ¢ããäžçããããã¯ãªãŒã³ã§æ¥œããããã®ã«ããèœåãæã€ã
- ã·ã¹ãã ã®ãã詳现ãªèª¿æ»ã è¡šé¢çãªãäœåãæç©ãã®åéããåã³ã³ããŒãã³ãã®åå¥èª¿æ»ãžã®ç§»è¡ã«ãããããè€éãªè匱æ§ãæ€çŽ¢ããããšãå¯èœã«ãªããŸããã
åã¢ãããŒããæ¹åããå¿ èŠããããŸããå šäœåãææ¡ããããã«ãé«åºŠã«å°éåãããã¹ãã·ã£ãªã¹ãã®ããŒã ãæ¡å€§ããéçºè ã«ããã«ã¢ã¯ãã£ããªã¢ã¯ã·ã§ã³ãè¿œå ããã»ãã¥ãªãã£ã®åéã§ãã¬ãŒãã³ã°ãè¡ãããšãã§ããŸãã
ãã¡ããããã®ã¢ãããŒãã¯è£œåã®å®å šæ§ã«100ïŒ ã®ä¿¡é Œãäžãããã®ã§ã¯ãããŸããããåŸæ¥ã®äŸµå ¥ãã¹ãããã系統çã§åºç¯å²ã«æž¡ããŸãã æãè¿ éãªå¯Ÿå¿ãæ°ããã³ãŒãã®ãªãªãŒã¹ãããã³å¯èœãªéãæ©ã段éã§ã®è匱æ§ã®æé€ãç®çãšããŠããŸãã
ããªããããªãèªèº«ã®ããã«äœãæ°ãããã®ãåŒãåºãããšãã§ãã倧èŠæš¡ãªãããžã§ã¯ãã®è匱æ§ãèŠã€ããããã®äœæ¥ãã©ã®ããã«è¡ãããããç解ã§ããããšãé¡ã£ãŠããŸãã
䟿å©ãªãªã³ã¯
- 7ã€ã®åºæ¬çãªéçºãã¯ãã㯠ã
- OWASPã«ãã Open Security Assurance Maturity ModelïŒ OpenSAMM ïŒã
- ãã€ã¯ããœããã»ãã¥ãªãã£éçºã©ã€ããµã€ã¯ã«ïŒSDLïŒã ããã»ã¹ã¬ã€ãã³ã¹
- DOMPurify ã
- XSS ãã¯ãã«ãš DOMPurify ã㢠ã
- HTML5ã®XSS ãã¯ãã« ã
- ããŸããŸãªHTMLã¿ã°ã䜿çšããŠãŠãŒã¶ãŒã远跡ããŸãã
- æ·»ä»ãã¡ã€ã«çšã®XSSãã¯ãã«ãæã€ãã¡ã€ã«ã
- ãã¡ã€ã«ã¹ããŒãã«ããWindowsãŠãŒã¶ãŒã®å¿åå ã
- ã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã®è匱æ§ãèªåçã«ãã§ãã¯ããã¿ã«ãµ ã
- Tizen Developer Toolkitã
- Tizenã®40ã®ãããŠæ œå¹è ã«é¢ããæçš¿ ã
- Tizen OSã®ãã°ã«é¢ããæçš¿ ã
- è匱æ§SmartTV ã
- å€éšãšã³ãã£ãã£ãå®è£ ããè匱æ§ã
- XXEãã¯ãã«ã䜿çšãããã¡ã€ã«ã®èªåçæçšã®ã¿ã«ãµ ã
- ã¹ããªã³ã°ããŒãRCE ã
- ã¹ããªã³ã°ããŒãRCEããªã㯠ã
PS BeLoveãããªã¢ã«ã®æºåã«ãååããã ãããããšãããããŸãã