ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯åŸ®åŠãªåé¡ã§ãã ãããŠéåžžã«ä¿è·ãããŠããŸãïŒ é²åŸ¡ã¡ã«ããºã ãåé¿ããããšã¯è€éã§æéã®ãããäœæ¥ã§ãããéæ³ã«å°ã䌌ãŠããŸãã ãããã圌ãã¯ãæ¯èŠªã®æ¯åã®æ¯åããã§ã«ããã€ãã®
RCEè匱æ§ãçºèŠãããšã¯ã¹ããã€ããäœæãããã¹ãŠã®é²åŸ¡ã¡ã«ããºã ããã€ãã¹ãããšèšããŸãã ç§ãã¡ã詊ããŠã¿ãŸãïŒ
éå»ã®
NeoQUEST-2018ã®ã¿ã¹ã¯çªå·11ã®äŸã§ãã£ãŠã¿ãŸãããã ã¿ã¹ã¯ã¯çŸå®çã§ã-ãã©ãŠã¶ã§Javascriptãšã³ãžã³ã®æäœäžã«çºçãããã®ã«äŒŒãããªã¢ãŒãã³ãŒãå®è¡çšã®ãã©ã€ããã¹ã¯ãªãããæ€èšããŠãã ããã ç¹å®ã®ã€ã³ã¿ãŒããªã¿ãŒã§è匱æ§ãæ¢ããARWããªããã£ããåä¿¡ããŠââããããå®è£
ããŸãããã®çµæããŠãŒã¶ãŒã¢ãŒãã®Windows OSä¿è·ããã€ãã¹ããŸãã ãã®ã¿ã¹ã¯
ãæž¡ãã®ã¯éåžžã«
å°é£ã§ããããšã倿ãããããæåãžã®éã®è©³çްãªèª¬æãšãšãã«äžé£ã®èšäºå
šäœãåãäžããŸãã
äŒèª¬ã«ãããšã
ãã€ããªããã°ã©ã ãšããã®ãµãŒãã¹ãã¹ãã³ããŠããã¢ãã¬ã¹ããããŸãã ãŸããæåãžã®æåã®ã¹ãããã¯ç¹å®ã®ãããŒãæ©èœã§ããããšãèšåãããŠããŸãã
ããã§ã¯å§ããŸãããïŒ
ããŒæ€çŽ¢
ãœãŒã¹ããŒã¿ãæ€èšããŸãã ã¿ãŒã²ããããã°ã©ã ã¯ãæ°å€ããã¯ãã«ãè¡åã®3çš®é¡ã®ããŒã¿ãæäœããããã®äžçš®ã®ã³ãã³ãã€ã³ã¿ãŒããªã¿ãŒã§ãã helpã³ãã³ãã䜿çšããŸã-ããã«ããããµããŒããããŠããã³ãã³ãã®ã»ãããããããŸãã ã€ã³ã¿ããªã¿ã§ã¯æ¬¡ã®ããšãã§ããŸãã
- ããŸããŸãªãµã€ãºã®ãã¯ãã«ãè¡åãæ°å€ã®å€æ°ãäœæããŸãã
- 倿°ãåå²ãåœãŠããŠã³ããŒããŸãã
- ãã¯ãã«è¡åã®åã
ã®ã»ã«ãæ°å€ãšããŠåŠçãããããã䜿çšããŠç°¡åãªç®è¡æŒç®ãå®è¡ããŸãã
- ãã¯ãã«/è¡åã®å€ãæ€çŽ¢ãã倿°ã®ã¿ã€ããšãã®å€ãèŠã€ããŸãã
- 倿°ã®å¢çãšã¹ãããã§ã«ãŒããäœæããŸãã
ããã°ã©ã ã¯ãã³ãã³ããåŠçããç¡éã®ãµã€ã¯ã«ãšããŠå®è£
ãããŸãã
ãŸããåããŒã ã¯åå¥ã®æ£èŠè¡šçŸã§è¡šãããŸãã
ãã®ããããããŒãæ©èœãæ€çŽ¢ããéã«ãäžçã®ãã¹ãŠã®èšèªã§ãããŒããšããåèªã«é¢é£ä»ããããç¹æ§ç·ã®ãã€ããªããã§ãã¯ããŸãã ç®çã®ãã©ã°ã¡ã³ãããã°ããèŠã€ããŸãã
ãã€ããªã«ã¯ããŒããªãããã«èŠããŸãïŒããã¯è«ççã§ãïŒïŒã ã©ããããåããã€ããªããµãŒããŒäžã§å転ããŠãããåŒæ°aFirstKeyIs2c7fã®è¡ã«æ£ããããŒããããŸãïŒ ãããããªã¢ãŒããµãŒããŒãã倿Žãããè¡ã®å
容ãååŸããæ¹æ³ã¯ïŒ
åçåæã§ã¯ãèŠã€ãã£ã颿°ãåŒã³åºãã ãã§ãããããŒã®ããè¡ãæšæºåºåã«åºåãããããšã確èªããŠããŸãã ãã®é¢æ°ã¯ãããã¯ã©ã¹ã®ä»®æ³ã¡ãœããã§ãããšæãããŸãã
- ã³ãŒãã«ã¯ããã®é¢æ°ãŸãã¯ã¹ã¿ã颿°sub_40E120ãžã®çŽæ¥åŒã³åºãã¯ãããŸããã
- sub_40E120åŒã³åºãã¯ãä»®æ³ã¡ãœããã«äžè¬çãªå¶åŸ¡ãããŒã¬ãŒãã¡ã«ããºã ã®èгç¹ããèš±å¯ããããªã¹ãã«ãããŸãããããã®ã¡ãœããã¯ã鿥åŒã³åºãã«ãã£ãŠåŒã³åºãããŸãã
ãããã£ãŠãäœæ¥ã®æåç·ã¯æç¢ºã§ãããµãŒããŒåŽã®ãã€ããªã§ç®çã®ä»®æ³ã¡ãœãããåŒã³åºãæ¹æ³ãåŠã¶å¿
èŠããããŸãã 2ã€ã®ã·ããªãªããããŸãã
- ç®çã®ã¡ãœãããåŒã³åºãæ£åœãªæ©äŒãèŠã€ããŠãã ããã çè«çã«ã¯ãããã¯ããã°ã©ã ã®ææžåãããŠããªãæ©èœã§ããå¯èœæ§ããããŸãã
- è匱æ§ãæ€çŽ¢ããŸãã ä»»æã®ã³ãŒããå®è¡ããéæ³ããã¹ã¿ãŒã§ãããã®ãèŠã€ããå Žåãç°¡åã«ç®çã®ã¡ãœãããåŒã³åºããŠããŒãååŸã§ããŸãã
ã©ãããå§ããŸããïŒ
ããã¯ããŒã¯ã¯çã
ãŸããææžåãããŠããªãæ©èœã®ã³ãŒããåæããŸãããã æããã«ãå
¥åè¡åŠç颿°ã«ã¯ããããå«ãŸããŠããŸãããããã§äœ¿çšãããæ£èŠè¡šçŸã¯ãäžèšã®ã³ãã³ãã«ã®ã¿é©çšãããŸãã ãŸããã³ãŒãå
ã§ãã®é¢æ°ãçŽæ¥åŒã³åºãããšã¯ãããŸããã ãããããææžåãããã³ãã³ãã®äžã«ã鿥çã«å¿
èŠãªãããŒã颿°ãåŒã³åºãé ãããå¯èœæ§ããããŸããïŒ
ããããéããŸãã äžéšã®ã³ãã³ãïŒfindãwhatïŒã«ã¯ä»®æ³ã¡ãœããã®éæ¥åŒã³åºããå«ãŸããŠããŸãããåŒã³åºãããã¡ãœããã®éžæã«åœ±é¿ãäžããããšã¯äžå¯èœã§ããvtableã®ãªãã»ããã¯ã©ãã§ãåºå®ãããŠããŸãã
æ²ããããªã倱æïŒ ä»ããããããŒãæ©èœãåŒã³åºãããšãã§ããè匱æ§ã®
èšãèš³ãæ¢ãæã§ãã
æ±ããè
ã¯åžžã«æ±ãããã®ãèŠã€ãã
ç§ãã¡ã¯ãã¶ãŒããã°ã©ããªã®ã§ãã€ã³ã¿ããªã¿çšã®ã³ãã³ãã®ã©ã³ãã ã§æ§æçã«æ£ããã»ãããçæããç°¡åãª
ãã¡ã¶ãŒãäœæããããšããŸãã ãã¡ã¶ãŒJavascriptãšDOMã¯ããã©ãŠã¶ãŒã§è匱æ§ãæ€çŽ¢ãããšãã«åãæ¹æ³ã§äœæãããŸãã ãã¡ã¶ãŒã¯ãã€ã³ã¿ãŒããªã¿ãŒãããããããããããšãæåŸ
ããŠãã³ãã³ãã®ããŸããŸãªã·ãŒã±ã³ã¹ãçæããŸãã æ¬¡ã®äžé£ã®ã³ãã³ããçæãããšãã®ãã¡ã¶ãŒæäœã®åçã¯æ¬¡ã®ãšããã§ãã
- æåã«ãããŸããŸãªã¿ã€ããšãµã€ãºã®å€æ°ã倿°äœæãããŸãã 倿°ã®ååãšã¿ã€ãã¯ãåŸã§äœ¿çšããããã«ä¿åãããŸãã
- 次ã«ã䜿çšå¯èœãªå€æ°ã®ãªã¹ãã«åŸã£ãŠãåã³ãã³ããã©ã³ãã ã«çæãããŸãã
- ä»»æã®ã³ãã³ãïŒãã©ã¡ãŒã¿ãŒãé€ãïŒããªã¹ãããéžæãããŸãïŒæ°ãã倿°ãäœæããã³ãã³ããç®è¡æŒç®ãå²ãåœãŠã³ãã³ããæ€çŽ¢ãå°å·ã³ãã³ãã
- ã³ãã³ãã®ã¿ã€ãã«å¿ããŠãä»»æã®åŒæ°ã远å ãããŸãã ããšãã°ãfindã³ãã³ãã®å Žåã䜿çšå¯èœãªå€æ°ã®ãªã¹ãããä»»æã®åå+ä»»æã®çªå·ïŒ2çªç®ã®åŒæ°ïŒãéžæãããŸãã ç®è¡æŒç®ã³ãã³ãã®å Žåããã©ã¡ãŒã¿ãŒã®æ°ã¯å€ãïŒæŒç®èšå·ã倿°ããã¯ãã«ãšè¡åã®ã€ã³ããã¯ã¹ïŒããããããä»»æã«éžæãããŸãã
- çæãããã³ãã³ããçŸåšã®ã·ãŒã±ã³ã¹ã«è¿œå ãããŸãã äžéšã®ã³ãã³ãã¯æ°ãã倿°ãäœæããæ¢åã®å€æ°ã®ã¿ã€ãã倿Žã§ããããããããã®å Žåã倿°ãå«ããªã¹ããæŽæ°ãããŸãã ããã«ãããåŸç¶ã®ã³ãã³ããçæããããã»ã¹ã§æ°ãã/倿Žããã倿°ã䜿çšã§ããããã«ãªããŸãã
- ã€ã³ã¿ãŒããªã¿ãŒã¯ãããã¬ãŒã®äžã§å®è¡ãããŸãã çæãããã·ãŒã±ã³ã¹ã¯ãã€ã³ã¿ãŒããªã¿ãŒãžã®å
¥åã«éä¿¡ãããŸãã éä¿¡ãããã³ãã³ãã®åŠçäžã«èµ·ããããã¯ã©ãã·ã¥ã®ç»é²ã
III ...åå©ïŒ ãã¡ã¶ãŒãèµ·åããåŸãã€ã³ã¿ãŒããªã¿ãŒããèœã¡ããè匱ãªã³ãã³ãã·ãŒã±ã³ã¹ããã°ããèŠã€ããããšãã§ããŸããã çµæã¯æºè¶³ã®ãããã®ã§ã-æå€§2ã€ã®ç°ãªãè匱æ§ïŒ
è匱æ§No. 1ïŒUaFïŒ
æåã®ã·ãŒã±ã³ã¹ãåä¿¡ããããããäžèŠãªã³ãã³ãïŒã€ã³ã¿ãŒããªã¿ãŒã®èœäžã«åœ±é¿ããªãïŒãã¯ãªã¢ãããšãæ¬¡ã®æŠå¿µå®èšŒãåŸãããŸãã
ããèŠãŠã¿ãŸãããã ããããŸããïŒ ç§ãã¡ã®åã«ã¯ã
Use-After-Freeã®ãããªå€å
žçãªè匱æ§ããã
ãŸã ïŒ ãã®äžé£ã®ã³ãã³ãã§èµ·ããããšã¯æ¬¡ã®ãšããã§ãã
- 倧ããªvecãã¯ãã«ãšintvalæŽæ°ãäœæãããŸãã
- vecãã¯ãã«ã®ã³ããŒ-倿°vec2ãäœæãããŸãã
- 倿°vec2ã«ã¯ ãå¥ã®ã¿ã€ãã®å€æ°ïŒæŽæ°ïŒ ãå²ãåœãŠãããŸãã
- å
ã®vecãã¯ãã«ãæäœããããšãããšãè§£æŸãããã¡ã¢ãªã«æžã蟌ã¿ãè¡ãããããã«å¿ããŠããã°ã©ã ãã¯ã©ãã·ã¥ããŸãã
ã€ã³ã¿ãŒããªã¿ãŒã¯Copy-On-Writeã®æŠå¿µãå®è£
ããŠããããã§ãããã®çµæã倿°
vecãš
vec2ã«ã¯ã¡ã¢ãªå
ã®åããããã¡ãŒãžã®åç
§ãå«ãŸããŠããŸããã 倿°ã®1ã€ãåå²ãåœãŠãããšããããã¡ã¯å¥ã®å€æ°ã§åç
§ãããŠãããšããäºå®ãèæ
®ããã«è§£æŸãããŸããã ãã®åŸã
vec倿°ã«ã¯è§£æŸãããã¡ã¢ãªãžã®ãã€ã³ã¿ãå«ãŸããèªã¿åãããã³æžã蟌ã¿ã®ããã«ã¢ã¯ã»ã¹ã§ããŸããã ãã®çµæããã®è匱æ§ã«ãããä»ã®ããã°ã©ã ãªããžã§ã¯ããååšããå¯èœæ§ã®ããã¡ã¢ãªãžã®ã©ã³ãã ã¢ã¯ã»ã¹ãå¯èœã«ãªããŸãã
è匱æ§No. 2ïŒæŽæ°ãªãŒããŒãããŒïŒ
2çªç®ã®åé¡ã¯ããããªãã¯ã¹ãªããžã§ã¯ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒã«é¢é£ããŠããŸãã æ°å€é
åã«ã¡ã¢ãªãå²ãåœãŠããšã
ã«ããããªãã¯ã¹ã®å¹
Wãšé«ã
Hã®æ€èšŒãæ£ããå®è£
ãããŠããŸããã
èšèšè
ã¯ã
W *
HæŽæ°ã»ã«ã«ã¡ã¢ãªãäºåã«å²ãåœãŠãŸãã ç©
W *
Hã2
32 -1ãã倧ããå ŽåãæŽæ°ãªãŒããŒãããŒã®ããã«éåžžã«å°ããªãããã¡ãŒãå²ãåœãŠãããŸãã ããã¯ãã¯ã©ã¹ã³ã³ã¹ãã©ã¯ã¿ãŒã®ãã€ããªã§çŽæ¥ç¢ºèªã§ããŸãã
ãã ãããã®é
åã®ã»ã«ãžã®åŸç¶ã®ã¢ã¯ã»ã¹ã®å¯èœæ§ã¯ã
Wãš
Hã®å€§ããªå¢çã«ãã£ãŠæ±ºãŸãã
W *
Hã®ãªãŒããŒãããŒå€ã«ãã£ãŠã¯æ±ºãŸããŸããã
ãã®è匱æ§ã¯ãæåã®è匱æ§ãšåæ§ã«ã蚱容ç¯å²ãè¶
ããŠã¡ã¢ãªã®èªã¿åããšæžã蟌ã¿ãå¯èœã«ããŸãã
èŠã€ãã£ãåè匱æ§ã«ãããRCEã®ç¥ã«ãªããä»»æã®ã³ãŒããå®è¡ãããšããæãŸããçµæãéæã§ããŸãã äž¡æ¹ã®ã±ãŒã¹ã§ãã®æé ãæ€èšããŠãã ããã
ç§ã¯ããªããã³ã³ãããŒã«ããŸãïŒ
ããŒãäžã®ç©ºãã¡ã¢ãªãžã®ã©ã³ãã ã¢ã¯ã»ã¹ã®å¯èœæ§ã¯ãæªçšã®åŒ·åãªããªããã£ãã§ãã ããã»ã¹ããŒãå
ã®ä»ã®ãªããžã§ã¯ãã®å¶åŸ¡ããã倿Žã®ããã«ãç Žæãã
vecãªããžã§ã¯ãïŒæåã®å Žåã¯ãã¯ãã«ã2çªç®ã®å Žåã¯ãããªãã¯ã¹ïŒã䜿çšããå¿
èŠããããŸãïŒ
ç ç²è
ãšåŒã³ãŸãããïŒã
ç ç²ãªããžã§ã¯ãã®å
éšãã£ãŒã«ããé©åã«å€æŽããããšã«ãããä»»æã®ã³ãŒãã®å®è¡ãå®çŸããŸãã
ãŸããæ°å€ããã¯ãã«ãè¡åã®ãªããžã§ã¯ããã¡ã¢ãªå
ã«ãããã®ãçè§£ããŸãã ããäžåºŠãã€ããªãèŠãŠã¿ãŸããããå
¥åã³ãã³ãåŠç颿°ããããã»ã©é ããªããšããã«ã察å¿ããã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒåŒã³åºãããããŸãã ãããã¯ãã¹ãŠåºæ¬ã¯ã©ã¹ã®ç¶æ¿è
ã§ãããåæ§ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãæã£ãŠããŸãã ããšãã°ããã¯ãã«ãªããžã§ã¯ãã®ã³ã³ã¹ãã©ã¯ã¿ã¯æ¬¡ã®ããã«ãªããŸãã
ãªããžã§ã¯ããäœæãããšããåºæ¬ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºããããªããžã§ã¯ãã®ãã£ãŒã«ãã¯ãã®ã¿ã€ãã«åŸã£ãŠå
¥åãããŸãã ãã£ãŒã«ãã®ç®çãšé åºãèŠãããšãã§ããŸãïŒä»®æ³é¢æ°ããŒãã«ã¢ãã¬ã¹ããã¯ã¿ãŒãµã€ãºããããã¡ã¢ãã¬ã¹ãæ°å€èå¥åãšããŠã®ãªããžã§ã¯ãã¿ã€ãã
ç Žæãã
vecãªããžã§ã¯ãã§ã¢ã¯ã»ã¹å¯èœãªè§£æŸãããã¡ã¢ãªé åã«
ç ç²å€æ°
ã衚瀺ãããããšã確èªããã«ã¯ã©ãããã°ããã§ããïŒ
vecãªããžã§ã¯ããæå·ç¶æ
ã«ããçŽåŸã«ãããã»ã¹ã®ããŒãã«æ°ãããªããžã§ã¯ããäœæããŸãã ãŸããè§£æŸãããã¡ã¢ãªã«åé¡ããããªããžã§ã¯ããæ€çŽ¢ããã«ã¯
ãã€ã³ã¿ãŒããªã¿ãŒã®
æ€çŽ¢ã³ãã³ãã䜿çšã
ãŸã ã äœæãããªããžã§ã¯ãã®ãã£ãŒã«ãã®1ã€ã«ãããçš®ã®ããžãã¯ãã³ããŒãšããçããå€ãå
¥ããŸãããã æããã«ããããã¡ãµã€ãºã¯ããã«æé©ã§ãã æ°ãããªããžã§ã¯ããäœæãããšãã«ãŠãŒã¶ãŒãçŽæ¥èšå®ããŸãã ç Žæãã
vecãªããžã§ã¯ãã®ãããã¡ãŒã§ãã®å€ã®æ€çŽ¢ãæåããå Žåãç®çã®ãªããžã§ã¯ããèŠã€ãããŸããïŒ
äž¡æ¹ã®è匱æ§ã«å¯Ÿãã
被害è
ãªããžã§ã¯ãã®å Žæã瀺ããŸãã ãã®æ®µéã§ã®ã¢ã¯ã·ã§ã³ã¯ãäºãã«ãããã«ç°ãªããŸãã
UaFã¿ã€ãã®æåã®è匱æ§ã®å Žåã
findã³ãã³ãã¯ã¡ã¢ãªã®éãããé åãæ€çŽ¢ããŸã-ãã®ãµã€ãºã¯
vecãªããžã§ã¯ãã®è§£æŸããããããã¡ã®ãµã€ãºãšäžèŽããŸãã ããŒãå
ã®ãªããžã§ã¯ãã®å²ãåœãŠã¯ãã·ã¹ãã ã¢ãã±ãŒã¿ã«ãã£ãŠå®è¡ããã確å®çãªããã»ã¹ã§ã¯ãããŸããã å
ã®
vecãªããžã§ã¯ããšäœæããããªããžã§ã¯ããããããã¡ãŒãµã€ãºãéžæãããããã®äžéšãå°æ°ã®è©Šè¡ã§é©åãªã¡ã¢ãªãŒã«å
¥ãããã«ããŸãã
ããŠã被害è
ãªããžã§ã¯ãã®
被害è
ïŒãã®å Žåã¯
v1 ïŒãçºèŠããŸããïŒ
2çªç®ã®è匱æ§ã䜿çšããŠåãã·ããªãªãå®è¡ãããšããã¹ãŠãå€å°è€éã«ãªããŸãã ãã®å Žåããããªãã¯ã¹ã®å¹
WãŸãã¯é«ã
Hã倧ãããªããããã¡ã¢ãªå
šäœã§æ€çŽ¢ãå®è¡ãããå¯èœæ§ããããŸãã ãã ãããããã¡ã®ããè¿ãã«å¿
èŠãªæ°ããªãå Žåãæ€çŽ¢ãµã€ã¯ã«ã¯ã¢ãã¬ã¹ç©ºéã«ããããããã¡ã¢ãªã®å¢çãè¶
ããŸãã ããã¯ãåæãããŠããããžãã¯ãã³ããŒãèŠã€ãããŸã§ãã€ã³ã¿ãŒããªã¿ãŒããã»ã¹ã®åŽ©å£ã«ã€ãªãããŸãã ãã®åé¡ã¯ãã¡ã¢ãªå
ã®å€æ°ã®ãªããžã§ã¯ããå²ãåœãŠãããšã§è§£æ±ºãããŸã-å°ãªããšã1ã€ã®ãªããžã§ã¯ããããããã¡ã®ããè¿ãã§ã¡ã¢ãªã«å
¥ããŸãã
ãã³ãŽïŒ ãã®å Žåã
被害è
ãªããžã§ã¯ããèŠã€ãããŸããïŒ
ãããŠä»ãæãè峿·±ãéšåã¯ã
ç ç²ãªããžã§ã¯ãã倿Žããæ¹æ³ãšãããã§å¿
èŠãªã³ãŒãã®å®è¡ãéå§ããæ¹æ³ãæ£ç¢ºã«çè§£ããå¿
èŠããããšããããšã§ãã ãããã£ãŠããvectorãã¯ã©ã¹ã®ãªããžã§ã¯ããè§£æŸãããã¡ã¢ãªã«æ£åžžã«é
眮ããŸããã æŠç¥çã«ã¯ã次ã®ããã«ãªããŸãã
被害è
ãªããžã§ã¯ãã¯ã
vecãªããžã§ã¯ãã䜿çšããŠã¢ã¯ã»ã¹å¯èœãªããŒãã»ã¯ã·ã§ã³ã«ããã
被害è
ãªããžã§ã¯ãã®ãã£ãŒã«ããèªã¿åãã倿Žããããšãã§ããŸãã ãŸãã
vecãªããžã§ã¯ãã®ãããã¡å
ã®æ°å€bufsizeã®ãªãã»ãããç¥ã£ãŠããŸãã æ¬¡ã«ã
ç ç²ãªããžã§ã¯ããæ¬¡ã®ããã«å€æŽããŸãã
- vtableã®ã¢ãã¬ã¹ãèªã¿åããããã«ãã£ãŠã¡ã¢ãªå
ã®å®è¡å¯èœã¢ãã¬ã¹ãæããã«ããŸãïŒãããŠASLRä¿è·ãç¡å¹ã«ããŸãïŒã
- ã€ã³ã¿ãŒããªã¿ãŒãã€ããªã調ã¹ãåŸããã¯ã¿ãŒãªããžã§ã¯ãã®ããŒãã«vtableã®ã¢ãã¬ã¹ãšãããŒã颿°ã®ã¢ãã¬ã¹ãšã®äžå®ã®å·®ãèŠã€ããŸãã ããã«ããããµãŒããŒåŽã®ãããŒãæ©èœã®ã¢ãã¬ã¹ãèšç®ã§ããŸãã
- ç ç²ãªããžã§ã¯ãã®ãããã¡ã«åœã®ããŒãã«vtableãçŽæ¥äœæããŸããããã§ããããŒã颿°ã®èšç®ãããã°ããã®ã¢ãã¬ã¹ãæžã蟌ã¿ãŸãã
- ç ç²ãªããžã§ã¯ãã®çã®ããŒãã«vtableã®ã¢ãã¬ã¹ãåœã®ã¢ãã¬ã¹ã«çœ®ãæããŸãã
- ç ç²ãªããžã§ã¯ãã§whatã³ãã³ããåŒã³åºããŸãã vtableã®æäœã®ãããã§ãçã®ä»®æ³ã¡ãœããã®ä»£ããã«ããããŒã颿°ãåŒã³åºãããŸãã åã
ã®ROPã¬ãžã§ããã§ã¯ãªãã颿°å
šäœãåŒã³åºããããContol Flow Guardã®ä¿è·ã¯é¢æ°ã®åŒã³åºãã劚ããŸããã

å¿
èŠãªé¢æ°ãåŒã³åºããã®ã¹ããŒã ã¯ãäž¡æ¹ã®è匱æ§ã§åãã§ãã
ç§ãã¡ã¯æåããäžæ©é¢ããŠããŸããããã¹ãŠããŸãšããŠéµãæã«å
¥ããããšãæ®ã£ãŠããŸãïŒ ä»¥äžã§ã¯ãäž¡æ¹ã®äŸãæ€èšããŸãã
ããã¯ãUse-After-Freeè匱æ§ã®æå¹ãªãšã¯ã¹ããã€ãã®ã³ãŒãã§ãã
è§£æŸåŸäœ¿çšã®è匱æ§ãæªçšããã³ãŒãvar vec[4096] var m2:=vec var va=3 m2:=va va=find(vec,256) var v1[256] va=find(vec,256) var vtb=0 vtb=va-1 var buf=0 buf=va+1 var func=0 func=vec[vtb]-1547208 func=func+57632 v1[0]=func vec[vtb]=vec[buf] what v1
ãªã©-æŽæ°ãªãŒããŒãããŒã¿ã€ãã®è匱æ§ã®å ŽåïŒ

æŽæ°ãªãŒããŒãããŒã®è匱æ§ã®æªçšã³ãŒã var m[65537][65536] var v1[256] var v2[256] var v3[256] var v4[256] var v6[256] var v5[256] var v7[256] var v8[256] var v9[256] var v10[256] var v11[256] var v12[256] var v13[256] var v14[256] var v16[256] var v15[256] var v17[256] var v18[256] var v19[256] var v20[256] var v21[256] var v22[256] var v23[256] var v24[256] var v25[256] var v26[256] var v27[256] var v28[256] var v29[256] var v30[256] var v31[256] var v32[256] var v33[256] var v34[256] var v35[256] var v36[256] var v37[256] var v38[256] var v39[256] var v40[256] var varr=0 var varc=0 varr=find(m,256).row varc=find(m,256).col var vtb=0 vtb=varc-1 var buf=0 buf=varc+1 var func=0 func=m[varr][vtb]-1547208 func=func+57632 v1[0]=func v2[0]=func v3[0]=func v4[0]=func v5[0]=func v6[0]=func v7[0]=func v8[0]=func v9[0]=func v10[0]=func v11[0]=func v12[0]=func v13[0]=func v14[0]=func v15[0]=func v16[0]=func v17[0]=func v18[0]=func v19[0]=func v20[0]=func v21[0]=func v22[0]=func v23[0]=func v24[0]=func v25[0]=func v26[0]=func v27[0]=func v28[0]=func v29[0]=func v30[0]=func v31[0]=func v32[0]=func v33[0]=func v34[0]=func v35[0]=func v36[0]=func v37[0]=func v38[0]=func v39[0]=func v40[0]=func m[varr][vtb]=m[varr][buf] what v1 what v2 what v3 what v4 what v5 what v5 what v6 what v7 what v8 what v9 what v10 what v11 what v12 what v13 what v14 what v15 what v16 what v17 what v18 what v19 what v20 what v21 what v22 what v23 what v24 what v25 what v26 what v27 what v28 what v29 what v30 what v31 what v32 what v33 what v34 what v35 what v36 what v37 what v38 what v39 what v40
ãã£ãïŒ ããŒãåä¿¡ãããããã«å¯ŸããããŒãã¹ã¯éèŠãªæ
å ±ã§ãã 2çªç®ã®ããŒããããŸããããµãŒããŒåŽã®ãã€ããªã®é£ã®ãã¡ã€ã«ã«ãããŸãã ãã®åé¡ã解決ããã«ã¯ãROPãã§ãŒã³ãæ§ç¯ããå¿
èŠããããŸããã€ãŸããCFGããã€ãã¹ããå¿
èŠããããŸãã ããããããã«ã€ããŠã¯æ¬¡ã®èšäºã§è©³ãã説æããŸãïŒ
ãããŠã
NeoQUEST-2018ã§å°ãªããšã1ã€ã®ã¿ã¹ã¯ãå®äºãããã¹ãŠã®äººã«è³åãäžããããããšãæãåºãããŠãã ããïŒ ã¡ãŒã«ã§æçŽã確èªããå±ããªãå Žåã¯
support@neoquest.ruã«ã¡ãŒã«ããŠ
ãã ãã ïŒ