ãåç¥ã®ãšããããšã³ã¯ã¬ãŒãã§å®è¡ãããã³ãŒãã®æ©èœã¯å€§å¹ ã«å¶éãããŠããŸãã ã·ã¹ãã ã³ãŒã«ãè¡ãããšã¯ã§ããŸããã I/O æäœã¯å®è¡ã§ããŸããã ãã¹ã ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒã ã»ã°ã¡ã³ãã®ããŒã¹ ã¢ãã¬ã¹ã¯ããããŸããã jmp ãå®è¡ãããããã¹ã ã¢ããªã±ãŒã·ã§ã³ ã³ãŒããåŒã³åºãããããããšã¯ã§ããŸããã ãã¹ã ã¢ããªã±ãŒã·ã§ã³ã管çããã¢ãã¬ã¹ç©ºéæ§é (ããšãã°ãã©ã®ããŒãžãããããããŠããããã©ã®ãããªçš®é¡ã®ããŒã¿ããããã®ããŒãžã«é 眮ãããŠããããªã©) ã«ã€ããŠã¯ããããŸããã ãã¹ã ã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¢ãªã®äžéšããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã«ãããããããã«èŠæ±ããããšã¯ã§ããŸãã (ããšãã°ã/proc/pid/maps ãéããŠ)ã æžã蟌ã¿ã®è©Šã¿ã¯èšããŸã§ããªãããã¹ã ã¢ããªã±ãŒã·ã§ã³ã®ä»»æã®ã¡ã¢ãªé åãç²ç®çã«èªã¿åãããšããåçŽãªè©Šã¿ã¯ãé ããæ©ãã (åè ã§ããå¯èœæ§ãé«ã) ãšã³ã¯ã¬ãŒã ããã°ã©ã ã®åŒ·å¶çµäºã«ã€ãªãããŸãã ããã¯ããšã³ã¯ã¬ãŒãã«ãã£ãŠèŠæ±ãããä»®æ³ã¢ãã¬ã¹ç©ºéé åããã¹ã ã¢ããªã±ãŒã·ã§ã³ããã¢ã¯ã»ã¹ã§ããªãå Žåã«åžžã«çºçããŸãã
ãã®ãããªå³ããçŸå®ãèžãŸãããšããŠã€ã«ã¹äœæè ã¯æªæã®ããç®çãéæããããã« SGX ãšã³ã¯ã¬ãŒãã䜿çšã§ããã§ãããã?
äžèšã®ãã¹ãŠã«åºã¥ããŠããšã³ã¯ã¬ãŒãã¯ãã¹ã ã¢ããªã±ãŒã·ã§ã³ã«ã®ã¿ãµãŒãã¹ãæäŸããããšãã§ããæªæã®ãããã®ãå«ããŠç¬èªã®ã€ãã·ã¢ãã£ããè¡äœ¿ããããšã¯ã§ããªãããšãäžè¬ã«åãå ¥ããããŠããŸãã ããã¯ããŠã€ã«ã¹äœæè ã«ãšã£ãŠãšã³ã¯ã¬ãŒãã¯å®éçãªäŸ¡å€ããªãããšãæå³ããŸãã ãã®æ§æ¥ãªä»®å®ã¯ãSGX ä¿è·ãé察称ã§ããçç±ã® XNUMX ã€ã§ãããã¹ã ã¢ããªã±ãŒã·ã§ã³ ã³ãŒãã¯ãšã³ã¯ã¬ãŒã ã¡ã¢ãªã«ã¢ã¯ã»ã¹ã§ããŸãããããšã³ã¯ã¬ãŒã ã³ãŒãã¯ä»»æã®ãã¹ã ã¢ããªã±ãŒã·ã§ã³ ã¡ã¢ãª ã¢ãã¬ã¹ã«å¯ŸããŠèªã¿æžãã§ããŸãã
ãããã£ãŠãæªæã®ãããšã³ã¯ã¬ãŒã ã³ãŒãããã¹ã ã¢ããªã±ãŒã·ã§ã³ã«ä»£ãã£ãŠä»»æã®ã·ã¹ãã ã³ãŒã«ãå®è¡ããä»»æã®ã³ãŒããå®è¡ãããã¹ã ã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¢ãªãã¹ãã£ã³ããŠãã®äžã«æªçšå¯èœãª ROP ãã§ãŒã³ãèŠã€ããããšãã§ããå Žåããã¹ã ã¢ããªã±ãŒã·ã§ã³ã®å®å šãªå¶åŸ¡ãææ¡ããå¯èœæ§ããããŸããã¹ãã«ã¹ã¢ãŒãã ãŠãŒã¶ãŒãã¡ã€ã«ãçãã§æå·åããã ãã§ãªãããŠãŒã¶ãŒã«ä»£ãã£ãŠåäœããããšãã§ããŸãã ããšãã°ã圌ã®ä»£ããã«ãã£ãã·ã³ã°ã¡ãŒã«ãéä¿¡ããããDoS æ»æãå®è¡ãããããŸãã ã¹ã¿ã㯠ã«ããªã¢ãã¢ãã¬ã¹ ãµãã¿ã€ãºãªã©ã®ææ°ã®ä¿è·ã¡ã«ããºã ãæããããšã¯ãããŸããã
ããã§ã¯ãæ»æè ãäžèšã®å¶éãå æã㊠SGX ãèªãã®æªæã®ããç®ç (ROP æ»æ) ã«æªçšããããã«äœ¿çšãããããã³ã°ãããã€ã玹ä»ããŸãã ãã¹ã ã¢ããªã±ãŒã·ã§ã³ ããã»ã¹ãåœè£ ããä»»æã®ã³ãŒããå®è¡ãã (ãã«ãŠã§ã¢ã§ãã䜿çšãããããã»ã¹ ãããŒã€ã³ã°ãšåæ§)ããŸãã¯æ¢æã®ãã«ãŠã§ã¢ãåœè£ ãã (ãŠã€ã«ã¹å¯Ÿçããã®ä»ã®é²åŸ¡ã¡ã«ããºã ã«ãã迫害ãããã«ãŠã§ã¢ãå®ããã)ã
ã¢ãã¬ã¹ã調æ»ããŠèªã¿åãããã©ããã確èªããããã¯
ãšã³ã¯ã¬ãŒãã¯ãä»®æ³ã¢ãã¬ã¹ç©ºéã®ã©ã®ç¯å²ããã¹ã ã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹å¯èœã§ããããèªèãããã¢ã¯ã»ã¹ã§ããªãã¢ãã¬ã¹ãèªã¿åãããšãããšãšã³ã¯ã¬ãŒãã¯åŒ·å¶çµäºããããããæ»æè ã¯ãã©ãŒã«ããèŠã€ããæ¹æ³ãèŠã€ãããšãã課é¡ã«çŽé¢ããŸããã¢ãã¬ã¹ç©ºéãå¯å®¹ã«ã¹ãã£ã³ããŸãã å©çšå¯èœãªä»®æ³ã¢ãã¬ã¹ããããã³ã°ããæ¹æ³ãèŠã€ããŸãã æªåœ¹ã¯ã€ã³ãã«ã® TSX ãã¯ãããžãŒãæªçšããããšã§ãã®åé¡ã解決ããŸãã TSX ã®å¯äœçšã® XNUMX ã€ã䜿çšããŸããã¡ã¢ãª ã¢ã¯ã»ã¹é¢æ°ã TSX ãã©ã³ã¶ã¯ã·ã§ã³ã«é 眮ãããŠããå Žåãç¡å¹ãªã¢ãã¬ã¹ãžã®ã¢ã¯ã»ã¹ããçºçããäŸå€ã¯ããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã«å°éããããšãªã TSX ã«ãã£ãŠæå¶ãããŸãã ç¡å¹ãªã¡ã¢ãª ã¢ãã¬ã¹ã«ã¢ã¯ã»ã¹ããããšãããšããšã³ã¯ã¬ãŒã ããã°ã©ã å šäœã§ã¯ãªããçŸåšã®ãã©ã³ã¶ã¯ã·ã§ã³ã®ã¿ãäžæ¢ãããŸãã ããã TSX ã䜿çšãããšããšã³ã¯ã¬ãŒãã¯ã厩å£ã®ãªã¹ã¯ãªãã«ããã©ã³ã¶ã¯ã·ã§ã³å ããä»»æã®ã¢ãã¬ã¹ã«å®å šã«ã¢ã¯ã»ã¹ã§ããŸãã
ãã æå®ãããã¢ãã¬ã¹ã¯å©çšå¯èœã§ã ãã¹ã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãTSX ãã©ã³ã¶ã¯ã·ã§ã³ã¯ã»ãšãã©ã®å ŽåæåããŸãã ãŸãã«ãå²ã蟌㿠(ã¹ã±ãžã¥ãŒã©å²ã蟌ã¿ãªã©)ããã£ãã·ã¥ã®åé€ãè€æ°ã®ããã»ã¹ã«ããã¡ã¢ãªäœçœ®ã®åæå€æŽãªã©ã®å€éšã®åœ±é¿ã«ããã倱æããããšããããŸãã ãã®ãããªãŸããªã±ãŒã¹ã§ã¯ãTSX ã¯é害ãäžæçãªãã®ã§ããããšã瀺ããšã©ãŒ ã³ãŒããè¿ããŸãã ãã®ãããªå Žåã¯ããã©ã³ã¶ã¯ã·ã§ã³ãåéããã ãã§æžã¿ãŸãã
ãã æå®ãããã¢ãã¬ã¹ã¯å©çšã§ããŸãã ãã¹ã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãTSX ã¯çºçããäŸå€ãæå¶ã (OS ã«ã¯éç¥ãããŸãã)ããã©ã³ã¶ã¯ã·ã§ã³ãäžæ¢ããŸãã ãã©ã³ã¶ã¯ã·ã§ã³ããã£ã³ã»ã«ããããšããäºå®ã«åå¿ã§ããããã«ããšã©ãŒ ã³ãŒãããšã³ã¯ã¬ãŒã ã³ãŒãã«è¿ãããŸãã ãããã®ãšã©ãŒ ã³ãŒãã¯ãåé¡ã®ã¢ãã¬ã¹ããã¹ã ã¢ããªã±ãŒã·ã§ã³ã§å©çšã§ããªãããšã瀺ããŸãã
ãšã³ã¯ã¬ãŒãå éšããã® TSX ã®ãã®æäœã«ã¯ãæªè ã«ãšã£ãŠçŽ æŽãããæ©èœããããŸããã»ãšãã©ã®ããŒããŠã§ã¢ ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã¯ããšã³ã¯ã¬ãŒã ã³ãŒãã®å®è¡æã«æŽæ°ãããªãããããšã³ã¯ã¬ãŒãå ã§å®è¡ããã TSX ãã©ã³ã¶ã¯ã·ã§ã³ã远跡ããããšã¯äžå¯èœã§ãã ãããã£ãŠãTSX ã®æªæã®ããæäœã¯ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã«ã¯å®å šã«èªèãããŸããã
ããã«ãäžèšã®ãããã³ã°ã¯ã·ã¹ãã ã³ãŒã«ã«äŸåããŠããªããããã·ã¹ãã ã³ãŒã«ããããã¯ããã ãã§ã¯æ€åºãé²æ¢ãã§ããŸããã ããã¯éåžžãæ¡åµãšã®æŠãã§è¯ãçµæããããããŸãã
æªåœ¹ã¯äžèšã®ããã¯ã䜿çšããŠããã¹ã ã¢ããªã±ãŒã·ã§ã³ ã³ãŒããã ROP ãã§ãŒã³ã®åœ¢æã«é©ããã¬ãžã§ãããæ€çŽ¢ããŸãã åæã«ããã¹ãŠã®ã¢ãã¬ã¹ã調æ»ããå¿ èŠã¯ãããŸããã ä»®æ³ã¢ãã¬ã¹ç©ºéã®åããŒãžãã 16 ã€ã®ã¢ãã¬ã¹ããããŒãããã ãã§ååã§ãã 45 GB ã®ã¡ã¢ãªãã¹ãŠããããŒãããã«ã¯ãçŽ 7 åããããŸã (Intel i6700-XNUMXK ã®å Žå)ã ãã®çµæãæªåœ¹ã¯ ROP ãã§ãŒã³ã®æ§ç¯ã«é©ããå®è¡å¯èœããŒãžã®ãªã¹ããåãåããŸãã
ã¢ãã¬ã¹ã®æžã蟌ã¿å¯èœæ§ã調æ»ããããã®ããã¯
ROP æ»æã®ãšã³ã¯ã¬ãŒã ããŒãžã§ã³ãå®è¡ããã«ã¯ãæ»æè ã¯ãã¹ã ã¢ããªã±ãŒã·ã§ã³ã®æžã蟌ã¿å¯èœãªæªäœ¿çšã®ã¡ã¢ãªé åãæ€çŽ¢ã§ããå¿ èŠããããŸãã æ»æè ã¯ãããã®ã¡ã¢ãªã®å Žæã䜿çšããŠãåœã®ã¹ã¿ã㯠ãã¬ãŒã ãæ¿å ¥ãããã€ããŒã (ã·ã§ã«ã³ãŒã) ãæ¿å ¥ããŸãã èŠããã«ãæªæã®ãããšã³ã¯ã¬ãŒãã¯ããã¹ã ã¢ããªã±ãŒã·ã§ã³ã«ã¡ã¢ãªã®å²ãåœãŠãèªåèªèº«ã«èŠæ±ããããšã¯ã§ããŸãããããã®ä»£ããã«ããã¹ã ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠãã§ã«å²ãåœãŠãããŠããã¡ã¢ãªãæªçšããå¯èœæ§ããããšããããšã§ãã ãã¡ããã圌ãé£ã³å°ã厩å£ãããã«ãã®ãããªãšãªã¢ãèŠã€ããããšãã§ããå Žåã
æªåœ¹ã¯ãTSX ã®å¥ã®å¯äœçšãå©çšããŠãã®æ€çŽ¢ãå®è¡ããŸãã ãŸããåã®ã±ãŒã¹ãšåæ§ã«ãã¢ãã¬ã¹ãååšãããã©ããã調ã¹ãŠããããã®ã¢ãã¬ã¹ã«å¯Ÿå¿ããããŒãžãæžã蟌ã¿å¯èœãã©ããããã§ãã¯ããŸãã ãããè¡ãããã«ãæªåœ¹ã¯æ¬¡ã®ããã¯ã䜿çšããŸããTSX ãã©ã³ã¶ã¯ã·ã§ã³ã«æžã蟌ã¿é¢æ°ãé 眮ãããã©ã³ã¶ã¯ã·ã§ã³ãå®äºããåŸãå®äºããåã«ãã©ã³ã¶ã¯ã·ã§ã³ã匷å¶çã«äžæ¢ããŸã (æ瀺çãªäžæ¢)ã
æ»æè ã¯ãTSX ãã©ã³ã¶ã¯ã·ã§ã³ããã®ãªã¿ãŒã³ ã³ãŒãã調ã¹ãããšã§ããããæžã蟌ã¿å¯èœãã©ãããç解ããŸãã ããããæ瀺çãªäžçµ¶ãã§ããã°ãæªåœ¹ã¯ãããå®è¡ããŠããã°é²é³ã¯æåããã§ãããããšãç解ããŠããŸãã ããŒãžãèªã¿åãå°çšã®å Žåããã©ã³ã¶ã¯ã·ã§ã³ã¯ãæ瀺çãªäžæ¢ã以å€ã®ãšã©ãŒã§çµäºããŸãã
TSX ã®ãã®æäœã«ã¯ã(ããŒããŠã§ã¢ ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã«ãã远跡ãäžå¯èœã§ããããšä»¥å€ã«) æªè ã«ãšã£ãŠå¬ããæ©èœããã XNUMX ã€ãããŸãããã¹ãŠã®ã¡ã¢ãªæžã蟌ã¿ã³ãã³ãã¯ãã©ã³ã¶ã¯ã·ã§ã³ãæåããå Žåã«ã®ã¿ã³ããããããããããã©ã³ã¶ã¯ã·ã§ã³ã匷å¶çã«å®äºãããããšã§ããããŒããããã¡ã¢ãª ã»ã«ã確å®ã«ã¯å€ãããªããŸãŸã§ãã
å¶åŸ¡ãããŒããªãã€ã¬ã¯ããããããã³ã°
åŸæ¥ã® ROP æ»æãšã¯ç°ãªãããšã³ã¯ã¬ãŒããã ROP æ»æãå®è¡ããå Žåãæ»æè ã¯æ»æ察象ããã°ã©ã ã®ãã° (ãããã¡ ãªãŒããŒãããŒãªã©) ãæªçšããããšãªããRIP ã¬ãžã¹ã¿ã®å¶åŸ¡ãååŸã§ããŸãã æ»æè ã¯ãã¹ã¿ãã¯ã«ä¿åãããŠãã RIP ã¬ãžã¹ã¿ã®å€ãçŽæ¥äžæžãããå¯èœæ§ããããŸãã ç¹ã«ããã®ã¬ãžã¹ã¿ã®å€ãç¬èªã® ROP ãã§ãŒã³ã«çœ®ãæããããšãã§ããŸãã
ãã ããROP ãã§ãŒã³ãé·ãå Žåããã¹ã ã¢ããªã±ãŒã·ã§ã³ã®ã¹ã¿ãã¯ã®å€§ããªéšåãäžæžããããšãããŒã¿ã®ç Žæãäºæããªãããã°ã©ã ã®åäœãçºçããå¯èœæ§ããããŸãã ç§å¯è£ã«æ»æãå®è¡ããããšããæªåœ¹ã¯ããã®ç¶æ³ã«æºè¶³ããŠããŸããã ãããã£ãŠãããèªäœã®ããã«åœã®äžæã¹ã¿ã㯠ãã¬ãŒã ãäœæãããã®äžã« ROP ãã§ãŒã³ãæ ŒçŽããŸãã åœã®ã¹ã¿ã㯠ãã¬ãŒã ã¯ã©ã³ãã ãªæžã蟌ã¿å¯èœãªã¡ã¢ãªã®å Žæã«é 眮ãããå®éã®ã¹ã¿ãã¯ã¯ãã®ãŸãŸæ®ããŸãã
äžèšã® XNUMX ã€ã®ããã¯ã¯æªåœ¹ã«äœããããããŸãã?
(1) ãŸããæªæã®ããé£ã³å°ãä»ã㊠ã¢ãã¬ã¹ã調æ»ããŠèªã¿åãããã©ããã確èªããããã®ãããã³ã°, â ãã¹ã ã¢ããªã±ãŒã·ã§ã³å ã§æªçšå¯èœãª ROP ã¬ãžã§ãããæ€çŽ¢ããŸãã
(2)ãã®åŸã ã¢ãã¬ã¹ã®æžã蟌ã¿å¯èœæ§ã調æ»ããããã®ãããã³ã°, â æªæã®ãããšã³ã¯ã¬ãŒãã¯ããã€ããŒãã®æ¿å ¥ã«é©ãããã¹ã ã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¢ãªå ã®é åãç¹å®ããŸãã
(3) 次ã«ããšã³ã¯ã¬ãŒãã¯ãã¹ããã (1) ã§æ€åºãããã¬ãžã§ãããã ROP ãã§ãŒã³ãäœæãããã®ãã§ãŒã³ããã¹ã ã¢ããªã±ãŒã·ã§ã³ ã¹ã¿ãã¯ã«æ¿å ¥ããŸãã
(4) æåŸã«ããã¹ã ã¢ããªã±ãŒã·ã§ã³ãåã®ã¹ãããã§äœæããã ROP ãã§ãŒã³ã«ééãããšããã¹ã ã¢ããªã±ãŒã·ã§ã³ã®æš©éãšã·ã¹ãã ã³ãŒã«ãè¡ãæ©èœã䜿çšããŠãæªæã®ãããã€ããŒããå®è¡ãéå§ããŸãã
æªåœ¹ããããã®ããã¯ã䜿çšããŠã©ã³ãŸã¯ãªãäœæããæ¹æ³
ãã¹ã ã¢ããªã±ãŒã·ã§ã³ã ECALL ã® XNUMX ã€ãä»ããŠãšã³ã¯ã¬ãŒãã«å¶åŸ¡ã移ããåŸ (ãã®ãšã³ã¯ã¬ãŒããæªæã®ãããã®ã§ãããšçãããšãªã)ãæªæã®ãããšã³ã¯ã¬ãŒãã¯ã³ãŒããæ¿å ¥ããããã«ãã¹ã ã¢ããªã±ãŒã·ã§ã³ã®ã¡ã¢ãªå ã®ç©ºãã¹ããŒã¹ãæ€çŽ¢ããŸã (ãããã®ã»ã«ã®ã·ãŒã±ã³ã¹ã空ãã¹ããŒã¹ãšããŠååŸããŸã)ããŒãã§åããããŠããŸãïŒã ãããã ã¢ãã¬ã¹ã調æ»ããŠèªã¿åãããã©ããã確èªããããã®ãããã³ã°, â ãšã³ã¯ã¬ãŒãã¯ãã¹ã ã¢ããªã±ãŒã·ã§ã³å ã®å®è¡å¯èœããŒãžãæ€çŽ¢ããçŸåšã®ãã£ã¬ã¯ããªã«ãRANSOMããšããååã®æ°ãããã¡ã€ã«ãäœæãã ROP ãã§ãŒã³ãçæã (å®éã®æ»æã§ã¯ããšã³ã¯ã¬ãŒãã¯æ¢åã®ãŠãŒã¶ãŒ ãã¡ã€ã«ãæå·åããŸã)ã身代éã¡ãã»ãŒãžã衚瀺ããŸãã åæã«ããã¹ã ã¢ããªã±ãŒã·ã§ã³ã¯ããšã³ã¯ã¬ãŒããåã« XNUMX ã€ã®æ°å€ãå ç®ããŠããã ãã ãšåçŽã«ä¿¡ããŸãã ããã¯ã³ãŒãã§ã¯ã©ã®ããã«èŠããã§ãããã?
ç解ããããããã«ãå®çŸ©ãéããŠããã€ãã®ããŒã¢ããã¯ã玹ä»ããŸãããã
ãã€ããŒãã®å®è¡åŸã«ãã¹ã ã¢ããªã±ãŒã·ã§ã³ã®éåžžã®åäœã埩å ããããã«ãRSP ã¬ãžã¹ã¿ãš RBP ã¬ãžã¹ã¿ã®å ã®å€ãä¿åããŸãã
é©åãªã¹ã¿ã㯠ãã¬ãŒã ãæ¢ããŠããŸã (ãå¶åŸ¡ãããŒããªãã€ã¬ã¯ãããããã®ããã¯ãã»ã¯ã·ã§ã³ã®ã³ãŒããåç §)ã
é©å㪠ROP ã¬ãžã§ãããèŠã€ãã:
ãã€ããŒããæ³šå ¥ããå ŽæãèŠã€ãã:
ROP ãã§ãŒã³ãæ§ç¯ããŸãã
ãã®ããã«ããŠãæªæã®ããããã°ã©ã ã«å¯Ÿæããããã«èšèšããã Intel ã® SGX ãã¯ãããžãŒããæªåœ¹ã«ãã£ãŠéã®ç®çãéæããããã«æªçšãããŸãã
åºæïŒ habr.com