
ãã¥ãŒãªã³ã°ãã©ã€ã¹-ãããã¯ãã¹ãŠ
TL / DRïŒããã°ã©ã ã»ãã¥ãªãã£ã®éçãã¹ãã®ã¿ã¹ã¯ã¯ã¢ã«ãŽãªãºã çã«è§£æ±ºã§ããŸããã
å ¥åããŒã¿ã®ããã€ãã®ã»ããã§ãã³ã°ã¢ããããä»ã®ããã€ãã®æäœã®åŸã«åæ¢ããæ¹æ³ã®ã¿ãç¥ã£ãŠããå€ãã®å®å šã«æœè±¡çãªPããã°ã©ã ãæ³åããŠãã ããã æããã«ãã¯ã©ã¹Pã¯çè«çã«å¯èœãªãã¹ãŠã®ããã°ã©ã ãã«ããŒããŸãããã®ããããã£ã¯ãããã®ããããã«èµ·å ããããã§ãã
ããã§ããããã®ããã°ã©ã ã®1ã€ïŒãããhãšåŒã³ãŸãïŒãç°¡åãªè³ªåã«çããããšãã§ããã¢ãã©ã€ã¶ãŒã§ãããšæ³åããŠãã ãããã»ããPããã®ä»»æã®ããã°ã©ã pã¯ãç¹å®ã®ããŒã¿ã»ããnã§ãã³ã°ããŸããïŒ æããã«ãhã¯ãèªåã®äœæ¥ãå®äºããããã«ãã£ãŠpãnã§åæ¢ããŠããããšãå ±åããããšã«ãã£ãŠã®ã¿ãã®è³ªåã«çããããšãã§ããŸãã ã€ãŸããpïŒnïŒãåæ¢ããªãå ŽåãhïŒpïŒnïŒïŒã¯æéæ°ã®ã¹ãããã§äœæ¥ãå®äºããå¿ èŠããããpïŒnïŒãåæ¢ããå ŽåãhïŒpïŒnïŒïŒã¯ããªãŒãºããå¿ èŠããããŸãã
ããŠãä»ããã®ãããªã¢ãã©ã€ã¶ãŒã®å©ããåããŠè³ªåã«çããããšãããšã©ããªããæ³åããŠã¿ãŠãã ããïŒããèªäœãåæããããèªäœãåæããçµæãããèªäœãããªãŒãºããŸããïŒ hïŒïŒ ãã®å ŽåãhïŒhïŒnïŒïŒãåæ¢ãããšhïŒnïŒã®åæããã³ã°ããhïŒhïŒnïŒïŒïŒããã³ã°ãããšhïŒnïŒã®åæãåæ¢ããããšãããããŸãã ããããhã¯æ£ç¢ºã«hïŒnïŒã§ããããããã£ãŠãããã§ççŸããããhã®ãããªã¢ãã©ã€ã¶ãŒã«ã¯ååšããæš©å©ããããŸããã
説æãããŠããã®ã¯ã1936幎ã«ã¢ã©ã³ãã¥ãŒãªã³ã°ïŒçŸä»£ã®çè«çã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®åµå§è ïŒã«ãã£ãŠå®åŒåãããã¹ãããå®çã®èšŒæã®ç¡æãã¬ãŒã³ããŒã·ã§ã³ã§ãã ãã®å®çã¯ãå¥ã®ããã°ã©ã ãåæããå ¥åããŒã¿ã®ç¹å®ã®ã»ããã§åæ¢ãããã©ããã®è³ªåã«çãããããªããã°ã©ã ã¯ååšããªãããšã瀺ããŠããŸãã ããããããã°ã©ã ã®ä»ã®ããããã£ã«é¢ãã質åã«çããããã°ã©ã ãäœæã§ããŸããïŒ
ã»ããPã«ã¯ãã¹ãŠã®å¯èœãªããã°ã©ã ãå«ãŸããŠãããããããã°ã©ã å ã®éèªæãªäžå€ããããã£ã®ååšã«åºã¥ããŠãåžžã«2ã€ã®ã¯ã©ã¹ã«åå²ã§ããŸãïŒAãšBããããŸãïŒã éèªæãªäžå€ããããã£ãšã¯ãã»ããPã®ä»»æã®ããã°ã©ã ãææãããããŸãã¯ææãããåæã«ãã¹ãŠã®æ©èœçã«åäžã®ããã°ã©ã ïŒåºåã§åãããŒã¿ã»ããã«å ¥åã§åãããŒã¿ã»ãããäžããïŒãŸãã¯ãã¹ãŠäžç·ã«ãã®ããããã£ãæã€ããããã£ãæå³ããŸãããŸãã¯ãã¹ãŠäžç·ã«ææããŠããŸããã
éåPã®ä»»æã®ããã°ã©ã pãååŸããpãã¯ã©ã¹ã®1ã€ã«å±ããå Žåã«åæ¢ããqã¢ãã©ã€ã¶ãŒããããšæ³åããŠã¿ãŸãããã æ確ã«ãããããã¯ã©ã¹AãšããŸããpaãã¯ã©ã¹Aã«å±ããä»»æã®å ¥åã§ã«ãŒãããããã°ã©ã ãšããŸãã ãŸããã¯ã©ã¹Bããä»»æã®ããã°ã©ã pbãéžæããŸãã åããã°ã©ã pã«å¯ŸããŠãããŒã¿xãå ¥åãšããŠåãåãã次ã®ã¢ã«ãŽãªãºã ãå®è¡ããããã°ã©ã p 'ãå®çŸ©ããŸãã
1. p(p) 2. pb(x)
ããã§ãä»»æã®ããã°ã©ã pãå ¥åãšããŠåãåãããã®ããã«p 'ãæ§ç¯ããqïŒp'ïŒãèšç®ããããã°ã©ã q 'ãæ§ç¯ããŸãã
pãæåã®ã¹ãããã§ãã³ã°ããå Žåãpã¯æ©èœçã«paãšåãã§ããïŒã¯ã©ã¹Aã«å±ããŸãïŒããããã£ãŠqã¯ããã«åæ¢ããå¿ èŠããããŸãã pãæåã®ã¹ããããééããå Žåãpã¯æ©èœçã«pbãšåãïŒã¯ã©ã¹Bã«å±ããïŒã§ãããããqã¯ãã³ã°ããã¯ãã§ãã ãããã£ãŠãããã°ã©ã pã«ã€ããŠã¯ãpïŒpïŒãåæ¢ããªããšãã«q 'ïŒpïŒãåæ¢ããŸãã ããããq 'èªèº«ãpã®åœ¹å²ãæãããŠããå¯èœæ§ããããŸãããããã£ãŠãpïŒpïŒã¯ãpïŒpïŒãåæ¢ããªãå Žåã«ã®ã¿åæ¢ããŸãã åã³ççŸãçããŸããã
ä»»æã®ããã°ã©ã ã®éèªæãªäžå€ç¹æ§ã®ååšã«ã€ããŠã®è³ªåã«çããããšãã§ãããããªããã°ã©ã ã¯ãªããšãã声æã¯ã1953幎ã«ç§åŠè ãã³ãªãŒã»ã©ã€ã¹ã«ãã£ãŠèšŒæãããŸããã å®éãç¹å®ã®ããŒã¿ã»ããã§åæ¢ããããããã£ã¯èªæã§ã¯ãªãäžå€ãªã®ã§ã圌ã®ç 究ã¯åæ¢å®çãäžè¬åããŸãã ã©ã€ã¹ã®å®çã¯ããããã°ã©ã ã䜿çšããŠå¥ã®ããã°ã©ã ã«ãã£ãŠå®è£ ãããã¢ã«ãŽãªãºã ãåé¡ããããšã¯äžå¯èœã§ããããããã°ã©ã ã䜿çšããŠä»ã®2ã€ã®ããã°ã©ã ãåãã¢ã«ãŽãªãºã ãå®è£ ããããšã蚌æããããšã¯ã§ããŸããããã䜿çšã§ããªããã«ãã£ãŠãå®çšçãªæå³ãç¡éã«ãããŸãããŒã¿ã»ããäžã®å¥ã®ããã°ã©ã ãã©ã®ç¶æ ã«ããªã£ãŠããªãããšã蚌æããããã°ã©ã ...ããªã© ãããŠãããã§ããã«è©³ãã説æããæåŸã®äŸã瀺ããŸãã
ãŠãããŒãµã«å®è¡ããã°ã©ã ïŒããšãã°ãOSãã€ã³ã¹ããŒã«ãããæ¬æ Œçãªã³ã³ãã¥ãŒã¿ãŒããšãã¥ã¬ãŒãããä»®æ³ãã·ã³ïŒã®ïŒæœè±¡ããã³å®ïŒã¢ã«ãŽãªãºã ã®å®è¡æã«ããã·ã³ãšãã®å€éšç°å¢ã®ã¢ãã¬ã¹ç©ºéã«ãããããã°ã©ã èªäœã®ç¶æ ãå«ãããã®ãã·ã³ã®ã¹ãããã·ã§ãããååŸã§ããŸããã£ã¹ã¯ãã©ã€ããå€éšããã€ã¹ã®ã¹ããŒã¿ã¹ãªã©ã ãã®åŸã埩å ããŠãåãå Žæããããã°ã©ã ãç¶è¡ããŸãã å®éãããã°ã©ã ãå®è¡ããããã»ã¹å šäœã¯äžé£ã®å€åããç¶æ ã§ããããã®ã·ãŒã±ã³ã¹ã¯ã³ãŒãã«ãã£ãŠæ£ç¢ºã«æ±ºå®ãããŸãã ããã«ãããã°ã©ã èªäœãšãããå®è¡ãããã·ã³ã®äž¡æ¹ã®æ§æãŸãã¯å®è£ ã«ãšã©ãŒãããå Žåãå®è¡ããã»ã¹ã¯éçºè ãæ¬æ¥æå³ããŠããªãç¶æ ã«ãªãå¯èœæ§ããããŸãã
ãããŠãè匱æ§ãšã¯äœã§ããïŒ ããã¯ãå ¥åããŒã¿ã䜿çšããŠãããã»ã¹ã«ãã£ãŠåŠçãããæ å ±ã«é¢ããè åšã®ããããã®å®çŸã«ã€ãªããç¶æ ãå®è¡ããã»ã¹ã«åŒ·å¶ããããã®æ©äŒã§ãã ãã®ãããããã°ã©ã ã®ã»ãã¥ãªãã£æ©èœãããã®åæã®å ¥åããŒã¿ã«é¢ä¿ãªãããã®ã»ãã¥ãªãã£ããªã·ãŒã決å®ãã蚱容ç¶æ ã®æå®ã®ã»ããã®ãã¬ãŒã ã¯ãŒã¯å ã§ããã€ã§ãç¶æã§ããèœåãšããŠå®çŸ©ããããšãã§ããŸãã ãã®å Žåãããã°ã©ã ã®ã»ãã¥ãªãã£ãåæããã¿ã¹ã¯ã¯æããã«ãä»»æã®å ¥åããŒã¿ã®ã»ãã¥ãªãã£ããªã·ãŒã«ãã£ãŠè§£æ±ºãããªãç¶æ ãžã®ç§»è¡ã®äžå¯èœæ§ãåæããããšã«ãªããŸãã ã€ãŸããã¢ã«ãŽãªãºã ã®è§£ããªãããšããã³ãªãŒã»ã©ã€ã¹ã«ãã£ãŠãã£ãšåã«èšŒæããããŸãã«ãã®åé¡ã«å¯ŸããŠã§ãã
çµå±ã®ãšãããSASTããŒã«ãããåžå Žå šäœã¯ããç£æ¥ã§ãã çè«çã«ã¯-ã¯ããå®éã«ã¯ãã¹ãŠãéåžžéãã§ã-ãªãã·ã§ã³ãå¯èœã§ãã
å®éã®SASTçè«
çè«çãªåéã«æ®ã£ãŠããŠããå®éã®ç°å¢ã§å®è¡ãããŠããå®éã®ããã°ã©ã ã«å¯Ÿããã©ã€ã¹ã®å£°æã«ããã€ãã®è²æ©ãããããšã¯ããªãå¯èœã§ãã ãŸããçè«æ å ±åŠã§ã¯ããããã°ã©ã ããšã¯ãæã匷åãªã³ã³ãã¥ãŒãã£ã³ã°ãã·ã³ã§ãããã¥ãŒãªã³ã°ãã·ã³ïŒMTïŒãšåçã®æ°åŠçæœè±¡åãæå³ããŸãã ãã ããå®éã®ããã°ã©ã ã§ã¯ãã³ãŒãã®ãã¹ãŠã®ãã©ã°ã¡ã³ããMTã«çžåœããããã§ã¯ãããŸããã èšç®èœåã®éå±€ã®äžã«ã¯ãç·åœ¢å¢çãã¹ã¿ãã¯ãããã³æéç¶æ ãã·ã³ããããŸãã åŸè ã®2ã€ã®ã»ãã¥ãªãã£ã®åæã¯ãçè«ççè«èªäœã®æ çµã¿å ã§ãå¯èœã§ãã
第äºã«ãMTã®ç¹åŸŽã¯ãç¡éã®ãµã€ãºã®ã¡ã¢ãªã«ã¢ã¯ã»ã¹ã§ããããšã§ãã èšç®ããã»ã¹ã®ãã¹ãŠã®å¯èœãªç¶æ ãååŸããããšã¯äžå¯èœã§ããã®ã¯ããã®æ©èœããã§ã-åçŽã«ç¡éã®æ°ããããŸãã ãã ããå®éã®ã³ã³ãã¥ãŒã¿ãŒã§ã¯ãã¡ã¢ãªã¯ç¡éã§ã¯ãããŸããã ããã«éèŠãªããšã¯ãå®éã®ããã°ã©ã ã§ã¯ãã»ãã¥ãªãã£åæåé¡ã®èŠ³ç¹ããã®é¢å¿ã®ããç¶æ ã®æ°ãæéã§ãïŒãã ããç¡æ°ã«å€§ããïŒã
第äžã«ãã©ã€ã¹ã«ããããã°ã©ã ã®ç¹æ§ã®èšç®ã¯ãå°æ°ã®ç¶æ ãšãããã®éã®å¯èœãªé·ç§»ãæã€å€æ°ã®å°ããªMTã«ãšã£ãŠè§£æ±ºå¯èœãªåé¡ã§ãã 2ã4ã€ã®ç¶æ ãæã€å®éã®ããã°ã©ã ãæ³åããã®ã¯å°é£ã§ãã ãã ãããã®ãããªããã°ã©ã ã®*ãã©ã°ã¡ã³ã*ã¯æ³åãããããã®ã§ãã
ãã®çµæããªã¹ããããåºæºã«è©²åœããããã°ã©ã ã³ãŒãã®åã ã®ãã©ã°ã¡ã³ãã®å¹æçãªåæãå¯èœã§ãã å®éã«ã¯ãããã¯æ¬¡ã®ããšãæå³ããŸãã
- ãµã€ã¯ã«ãšååž°ã®ãªãã³ãŒããã©ã°ã¡ã³ããå æ¬çã«åæã§ããŸãã ã¹ããŒããã·ã³ãšåç;
- çµäºæ¡ä»¶ãå ¥åããŒã¿ã«äŸåããªããµã€ã¯ã«ãŸãã¯ååž°ãå«ããã©ã°ã¡ã³ãã¯ãæéãªãŒãããã³ãŸãã¯ã¹ã¿ãã¯ãªãŒãããã³ãšããŠåæã§ããŸãã
- ã«ãŒããŸãã¯ååž°ãçµäºããããã®æ¡ä»¶ãã劥åœãªãããå€ã«ãã£ãŠé·ããå¶éãããŠããå ¥åããŒã¿ã«äŸåããå Žåãå Žåã«ãã£ãŠã¯ããã®ãããªãã©ã°ã¡ã³ãã¯ç·åœ¢å¢çãªãŒãããã³ãŸãã¯å°ããªMTã®ã·ã¹ãã ãšããŠåæã§ããŸãã
ããããä»ã®ãã¹ãŠ-æ²ããããªããã-ã¯éçãªã¢ãããŒãã§ã¯åæã§ããŸããã ããã«ããœãŒã¹ã³ãŒãã»ãã¥ãªãã£ã¢ãã©ã€ã¶ãŒã®éçºã¯ããšã³ãžãã¢ãæ¯æ¥EXPSPACE <-> EXPTIMEãã¬ãŒããªãã§äœæ¥ããæ¹åã§ãããç¹å¥ãªã±ãŒã¹ããµãææ°ã«æžãããŠãã圌ãã¯æ¬åœã«ã¯ãŒã«ãªã®ã§ãåäŸãšããŠå¹žãã§ãã æåŸã®å®è¡ãã€ã³ãã§å€æ°parm1ã®å€ãã®å€ã®ãã¯ãŒã¯ã©ããªãããèããŠãã ããã
var parm1 = Request.Params["parm1"]; var count = int.Parse(Request.Params["count"]); for (var i = 0; i < count; i++) { i % 2 == 0 ? parm1 = parm1 + i.ToString(): parm1 = i.ToString() + parm1; } Response.Write(parm1);
ãããçŸåšã®èšç®èœåã§ãããã«ã¶ã€ããã®ãéåžžã«é£ããã®ã§ãããªããæ¬åœã«çè«çãªå¶éã«ã€ããŠå¿é ããããšãã§ããªãçç±ã§ãã ãã ãããããã®å¶éã®åè¿°ã®ç·©åã¯ãææ°ã®éçã¢ãã©ã€ã¶ãŒã®éçºã«æ£ããæ¹åãèšå®ããããããŸã çæãã䟡å€ããããŸãã
DASTãIASTãããã³ãã¹ãŠãã¹ãŠ
å®éã«å®è¡ããã«ããã°ã©ã ã³ãŒããæäœããéçãªã¢ãããŒããšã¯å¯Ÿç §çã«ãåçïŒåçã¢ããªã±ãŒã·ã§ã³ã»ãã¥ãªãã£ãã¹ããDASTïŒã¯ãéçºãããã¢ããªã±ãŒã·ã§ã³ã©ã³ã¿ã€ã ã®ååšãšãåæã®èŠ³ç¹ããæãèå³æ·±ãå ¥åããŒã¿ã»ããã§ã®å®è¡ãæå³ããŸãã ç°¡ç¥åããããã«ããæ å ±ã«åºã¥ããç§åŠççªç Žãã®æ¹æ³ãšããŠèª¬æã§ããŸãïŒããã®ãããªæ»æã«ç¹åŸŽçãªãããã®ããŒã¿ãããã°ã©ã ã«äžããŠããã®çµæã確èªããŸããããïŒã ãã®æ¬ ç¹ã¯æããã§ãïŒåæãããã·ã¹ãã ãè¿ éã«å±éããïŒãããŠãã°ãã°åçŽã«çµã¿ç«ãŠãïŒããšã¯åžžã«äžå¯èœã§ãããã·ã¹ãã ã®ä»»æã®ç¶æ ãžã®ç§»è¡ã¯ä»¥åã®ããŒã¿ã»ããã®åŠçã®çµæã§ããå Žåããããå®éã®ã·ã¹ãã ã®åäœã®å æ¬çãªåæã®ããã«ã¯ãå ¥åããŒã¿ã»ããã®æ°ã¯éåžžã«çŽ æŽãããã®ã§ã圌ã®æéæ§ã«ã€ããŠçè«çã«æšæž¬ããããšããã§ããŸããã
æ¯èŒçæè¿ãSASTãšDASTã®å©ç¹ãçµã¿åãããã¢ãããŒã-ã€ã³ã¿ã©ã¯ãã£ãåæïŒInteractive ...ãIASTïŒãææã§ãããšèŠãªãããŸããã ãã®ã¢ãããŒãã®ç¹åŸŽã¯ãSASTã䜿çšããŠå ¥åããŒã¿ã®ã»ãããšæåŸ ãããçµæã®ãã¿ãŒã³ãçæããDASTããããã®ã»ããã«å¯ŸããŠã·ã¹ãã ãã¹ããå®è¡ããããšã§ãã ãã®ã¢ãããŒãã®ç®èãªç¹ã¯ãSASTãšDASTã®é·æãšçæã®äž¡æ¹ãåãå ¥ããŠããããšã§ãããããã¯ãå®éã®é©çšå¯èœæ§ã«åœ±é¿ãäžããã ãã§ããã
ããããåç解æã®å Žåãããã°ã©ã å šäœãå®è¡ããå¿ èŠããããšèª°ãèšã£ãã§ããããïŒ äžèšã®ããã«ãéçã¢ãããŒãã䜿çšããŠã³ãŒãã®å€§éšåãåæããããšã¯éåžžã«çŸå®çã§ãã åçãªæ®ãã®ãã©ã°ã¡ã³ãã®ã¿ã䜿çšããŠåæããããšã劚ãããã®ã¯äœã§ããïŒ èšç»ã®ããã«èãããŸã...
ãããŠåœŒå¥³ã®ããªã³ã«ã®äž
éç解æã«ã¯ããã€ãã®äŒçµ±çãªã¢ãããŒãããããã¢ãã©ã€ã¶ãŒã調æ»äžã®ã³ãŒãã®ç¹å®ã®ããããã£ãå°åºããåºç€ãšãªãã¢ãã«ãç°ãªããŸãã æãåå§çã§æçœãªã®ã¯ãã³ãŒãè¡šçŸã®æ§æã¢ãã«ã§ã®ãã³ãã¬ãŒãã®åºçŸã®æ€çŽ¢ã«åºã¥ã眲åæ€çŽ¢ã§ãïŒååãšããŠãããŒã¯ã³ã®ã¹ããªãŒã ãŸãã¯æœè±¡æ§æããªãŒã®ããããã§ãïŒã ãã®ã¢ãããŒãã®å®è£ ã«ã¯ãããè€éãªã¢ãã«ïŒã»ãã³ãã£ãã¯ããªãŒãåã ã®ããŒã¿ã¹ããªãŒã ã®ã°ã©ããžã®ãããã³ã°ãªã©ïŒã䜿çšãããã®ããããŸãããäžè¬çã«ããã®ã¢ãããŒãã¯ãè£å©çãªãã®ãšããŠã®ã¿èããããšãã§ããŸããæåæ€èšŒã ããã«ã€ããŠã¯è©³ãã説æããŸããããèå³ã®ãã人ã¯ãIvan Kochurkinã圌ã«æ§ããäžé£ã®èšäºã«ç®ãåããããšãã§ããŸãã
ããæŽç·Žãããã¢ãããŒãã¯ãã³ãŒãã®ïŒè¡šçŸãã»ãã³ãã£ã¯ã¹ã§ã¯ãªãïŒå®è¡ã¢ãã«ã§æ¢ã«åäœããŠããŸãã ãã®ãããªã¢ãã«ã¯ãååãšããŠããå€éšããå¶åŸ¡ãããããŒã¿ã¹ããªãŒã ãè匱æ§ã«ã€ãªããå®è¡ãã€ã³ãã«å°éããããšãã§ããŸããïŒããšãã質åã«å¯ŸããçããæäŸããŸãã ã»ãšãã©ã®å Žåãããã§ã®ã¢ãã«ã¯ã å®è¡ãããŒã°ã©ããšããŒã¿ ãããŒã®ãããã¯ã®ããªãšãŒã·ã§ã³ããŸãã¯ãããã®çµã¿åããïŒ ã³ãŒãããããã£ã°ã©ããªã© ïŒã§ãã ãã®ãããªã¢ãããŒãã®æ¬ ç¹ãæããã§ããéèŠãªã³ãŒãã§ã¯ããã®è³ªåã«çããã ãã§ã¯è匱æ§ãæ€åºããã®ã«ååã§ã¯ãããŸããã ããšãã°ããã©ã°ã¡ã³ãã®å ŽåïŒ
var requestParam = Request.Params["param"]; var filteredParam = string.Empty; foreach(var symbol in requestParam) { if (symbol >= 'a' && symbol <= 'z') { filteredParam += symbol; } } Response.Write(filteredParam);
ãã®ãããªã¢ãã©ã€ã¶ãŒã¯ãæ§ç¯ãããã¢ãã«ããã `Response.WriteïŒfilteredParamïŒ`å®è¡ãã€ã³ãã®å°éå¯èœæ§ãšãããŒã¿ã¹ããªãŒã `Request.Params [â paramâ]ã«ããç¹å®ã®ãã€ã³ãã§ã®XSSè匱æ§ã®ååšã«é¢ããè¯å®çãªåçãå°ããŸãã åæã«ãå®éã«ã¯ããã®ã¹ããªãŒã ã¯å¹æçã«ãã£ã«ã¿ãªã³ã°ãããŠãããæ»æãã¯ãã«ã®ãã£ãªã¢ã«ã¯ãªãåŸãŸããã ããŒã¿ã¹ããªãŒã ã®ååŠçã«é¢é£ããç¹å®ã®ã±ãŒã¹ã«å¯Ÿå¿ããæ¹æ³ã¯å€æ°ãããŸãããæçµçã«ã¯ãã¹ãŠã第1ã¿ã€ããšç¬¬2ã¿ã€ãã®èª€æ€ç¥ã®åççãªãã©ã³ã¹ã«ãªããŸãã

äž¡æ¹ã®ã¿ã€ãã®ãšã©ãŒãæå°åããã«ã¯ã©ãããã°ããã§ããïŒ ãã®ãããæœåšçã«è匱ãªå®è¡ãã€ã³ããšããã®ãããªãã€ã³ãã«å°çããããŒã¿ã¹ããªãŒã å€ã®ã»ããã®äž¡æ¹ã®å°éå¯èœæ§æ¡ä»¶ãèæ ®ããå¿ èŠããããŸãã ãã®æ å ±ã«åºã¥ããŠãæ¹çšåŒã®ã·ã¹ãã ãæ§ç¯ããããšãå¯èœã«ãªããŸããæ¹çšåŒã®è§£ã®ã»ããã¯ãããã°ã©ã å ã®æœåšçã«è匱ãªãã€ã³ãã«å°éããããã«å¿ èŠãªãã¹ãŠã®å ¥åããŒã¿ã®ã»ãããæäŸããŸãã ãã®ã»ãããšèãããããã¹ãŠã®æ»æãã¯ãã«ã®ã»ããã®äº€å·®ç¹ã¯ãå ¥åããŒã¿ã®ãã¹ãŠã®ã»ããã®ã»ãããæäŸããããã°ã©ã ãè匱ãªç¶æ ã«ããŸãã ããã¯çŽ æŽãããããã«èãããŸãããå¿ èŠãªãã¹ãŠã®æ å ±ãå«ãã¢ãã«ãååŸããã«ã¯ã©ãããã°ããã§ããïŒ
æœè±¡è§£éãšã·ã³ããªãã¯ã³ã³ãã¥ãŒãã£ã³ã°
笊å·ãåŒã-42 / 8 * 100500ããå®çŸ©ããçªå·ã決å®ããã¿ã¹ã¯ã«çŽé¢ããŠãããšä»®å®ããŸãã æãç°¡åãªæ¹æ³ã¯ããã®åŒãèšç®ããè² ã®æ°ãåä¿¡ãããããšã確èªããããšã§ãã ãã¹ãŠã®åŒæ°ã®æ確ã«å®çŸ©ãããå€ãæã€åŒã®èšç®ã¯ãå ·è±¡èšç®ãšåŒã°ããŸãã ãããããã®åé¡ã解決ããå¥ã®æ¹æ³ããããŸãã äœããã®çç±ã§ãã®åŒãå ·äœçã«èšç®ããæ¹æ³ããªãããšãå°ãæ³åããŠã¿ãŸãããã ããšãã°ãå€æ° `-42 / 8 * 100500 * x`ãè¿œå ãããå Žåã æ°å€ã®æŒç®çµæã笊å·èŠåã®ã¿ã«ãã£ãŠæ±ºå®ãããåŒæ°ã®å€ãç¡èŠãããæœè±¡ç®è¡ãå®çŸ©ããŸãã
(+a) = (+) (-a) = (-) (-) * (+) = (-) (-) / (+) = (-) ... (-) + (+) = (+-) ...
ãã®ã»ãã³ãã£ã¯ã¹ã®ãã¬ãŒã ã¯ãŒã¯ã§å ã®åŒã解éãããšã次ã®ããã«ãªããŸãïŒ `ïŒ-ïŒ/ïŒ+ïŒ*ïŒ+ïŒ*ïŒ+ïŒ`-> `ïŒ-ïŒ*ïŒ+ïŒ*ïŒ+ïŒ`-> `ïŒ-ïŒ*ïŒ +ïŒ `->`ïŒ-ïŒ `ã ãã®ã¢ãããŒãã¯ãå ç®ãŸãã¯æžç®æŒç®ãåŒã«çŸãããŸã§æèµ·ãããåé¡ã«å¯Ÿããæ確ãªçããäžããŸãã ç®è¡ãè£å®ããŠãæŒç®ã®åŒæ°ã®å€ãèæ ®ãããããã«ããŸãããã
(-a) * (+b) = (-c) (-a) / (+b) = (-c) ... (-a) + (+b) = a <= b -> (+) a > b -> (-) ...
æ°ããã»ãã³ãã£ã¯ã¹ã§åŒã-42 / 8 * 100500 + xãã解éãããšãçµæãx> = -527625->ïŒ+ïŒãx <-527625->ïŒ-ïŒããåŸãããŸãã
äžèšã®ã¢ãããŒãã¯æœè±¡è§£éãšåŒã°ããé åºã»ããäžã®å調é¢æ°ã«åºã¥ãåŒã®ã»ãã³ãã£ã¯ã¹ã®å®å®ããè¿äŒŒãšããŠæ£åŒã«å®çŸ©ãããŠããŸãã ç°¡åã«èšãã°ãããã¯ãç¹å®ã®ã»ãã³ãã£ãã¯ãã£ãŒã«ãå ã®æ å ±ãåéããããã«ãç¹å®ã®èšç®ãè¡ããªãåŒã®è§£éã§ãã åã ã®åŒã®è§£éããä»»æã®èšèªã®ããã°ã©ã ã³ãŒãã®è§£éã«ã¹ã ãŒãºã«ç§»è¡ããèšèªèªäœã®ã»ãã³ãã£ã¯ã¹ãã»ãã³ãã£ãã¯ãã£ãŒã«ããšããŠå®çŸ©ãããã¹ãŠã®å ¥åããŒã¿ãæªç¥ã®å€æ°ïŒã·ã³ããªãã¯å€ïŒãšããŠæäœããã«ãŒã«ã§è£å®ãããšãã·ã³ããªãã¯ãšããã¢ãããŒããåŸãããŸãéçã³ãŒãåæã®ææãªåéã®å€§éšåãå®è¡ã ããã®åºç€ãšããŠããŸãã
ã·ã³ããªãã¯èšç®ã®å©ããåããŠãã·ã³ããªãã¯èšç®ã®ã³ã³ããã¹ãã°ã©ãïŒå¥åïŒèšç®ãããŒã®ã°ã©ãïŒ-調æ»äžã®ããã°ã©ã ãèšç®ããããã»ã¹ãå æ¬çã«èšè¿°ããã¢ãã«ãæ§ç¯ããããšãå¯èœã«ãªããŸãã ãã®ã¢ãã«ã¯ãã¬ããŒãããœãŒã¹ã³ãŒãã®ãããã®èªåçæãããã³ã³ãŒãã»ãã¥ãªãã£ã®åæãžã®å¿çš- ããœãŒã¹ã³ãŒãã®åæãšãšã¯ã¹ããã€ãã®èªåçæãã®èšäºã§æ€èšãããŸããã ãã®èšäºã®ãã¬ãŒã ã¯ãŒã¯ã§ããããå床èæ ®ããããšã¯ã»ãšãã©æå³ããããŸããã ãã®ã¢ãã«ã䜿çšãããšãå®è¡ãããŒã®ä»»æã®ãã€ã³ããããã³ããã«å°éãããã¹ãŠã®åŒæ°ã®å€ã®ã»ããã®å°éå¯èœæ§æ¡ä»¶ãååŸã§ããããšã«æ³šæããŠãã ããã ã€ãŸããåé¡ã解決ããããã«ãŸãã«å¿ èŠãªãã®ã§ãã
èšç®ãããŒã°ã©ãã§è匱æ§ãæ€çŽ¢ãã
ç¹å®ã®ã¯ã©ã¹ã®æ»æã«å¯Ÿããè匱æ§ã®åºæºããããŒã°ã©ãã®èŠ³ç¹ããå®åŒåããã®ã§ã調æ»äžã®ã³ãŒãã®æœè±¡çãªè§£éã®çµæãšããŠåŸãããç¹å®ã®ã¢ãã«ã®ããããã£ã解決ããããšã«ãããã³ãŒãã»ãã¥ãªãã£ã®åæãå®è£ ã§ããŸãã ããšãã°ãã€ã³ãžã§ã¯ã·ã§ã³æ»æïŒSQLiãXSSãXPATHiããã¹ãã©ããŒãµã«ãªã©ïŒã®è匱æ§åºæºã¯ã次ã®ããã«åœ¢åŒåã§ããŸãã
Cã調æ»äžã®ã³ãŒãã®èšç®ãããŒã®ã°ã©ããšããŸãã
pvfïŒtïŒãCã®å¶åŸ¡ãããŒã®å°éå¯èœãªé ç¹ãšããŸããããã¯ã圢åŒææ³Gã«å¯Ÿå¿ããããã¹ãtã®çŽæ¥ãŸãã¯éæ¥è§£éã®é¢æ°ã®åŒã³åºãã§ãã
eãCã®å ¥ååŒæ°ã¹ããªãŒã ãšããŸãã
DeãeããçæãããCäžã®ããŒã¿ã¹ããªãŒã ã®ã»ãããšããŸãã
tãDeã«å±ããDeå€ã®ã»ããã«å°ãªããšã1çµã®èŠçŽ ãå«ãŸããŠããå Žåãã¢ããªã±ãŒã·ã§ã³ã¯ãpvfïŒtïŒã³ãŒã«ãã€ã³ãã§ã®ã€ã³ãžã§ã¯ã·ã§ã³æ»æã«å¯ŸããŠè匱ã§ããåéã®æšã
åæ§ã«ãä»ã®æ»æã¯ã©ã¹ã«å¯Ÿããè匱æ§ã圢åŒåãããŠããŸãã ãã ããããã§ã¯ãåæãããã³ãŒãã®ã¿ãã掟çããã¢ãã«ã®ãã¬ãŒã ã¯ãŒã¯å ã§ãã¹ãŠã®ã¿ã€ãã®è匱æ§ãæ£åŒåã§ããããã§ã¯ãªãããšã«æ³šæããŠãã ããã å Žåã«ãã£ãŠã¯ãè¿œå æ å ±ãå¿ èŠã«ãªãããšããããŸãã ããšãã°ãããžãã¹ããžãã¯ã«å¯Ÿããæ»æã«å¯Ÿããè匱æ§ã圢åŒåããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãµããžã§ã¯ããšãªã¢ã®åœ¢åŒåãããã«ãŒã«ãã¢ã¯ã»ã¹å¶åŸ¡ã«å¯Ÿããæ»æã«å¯Ÿããè匱æ§ã圢åŒåããå¿ èŠããããŸãïŒã¢ã¯ã»ã¹å¶åŸ¡ã®åœ¢åŒåãããããªã·ãŒãªã©ïŒã
ç空äžã®çæ³çãªçé¢ã³ãŒãã»ãã¥ãªãã£ã¢ãã©ã€ã¶ãŒ
éé ·ãªçŸå®ããå°ãè±ç·ããä»®æ³ã®çæ³çãªã¢ãã©ã€ã¶ãŒã®ã³ã¢ã«å¿ èŠãªæ©èœã«ã€ããŠå°ãèããŠã¿ãŸãããïŒãIAããšåŒã³ãŸãããïŒã
ãŸããSASTãšDASTã®å©ç¹ãåãå ¥ããå¿ èŠããããŸãããããã®æ¬ ç¹ã¯å«ãŸããŸããã ç¹ã«ãIAã¯ãã©ã³ã¿ã€ã ç°å¢ã§ã®ã¢ããªã±ãŒã·ã§ã³ã®å®å šæ§ãŸãã¯å±éãå¿ èŠãšããã«ãæ¢åã®ã¢ããªã±ãŒã·ã§ã³ã³ãŒãïŒãœãŒã¹ãŸãã¯ãã€ããªïŒã§æä»çã«åäœã§ããå¿ èŠããããŸãã èšãæããã°ãå€éšäŸåé¢ä¿ãæ¬ èœããŠãããããžã§ã¯ãããã¢ããªã±ãŒã·ã§ã³ã®ã¢ã»ã³ããªãšãããã€ã劚ãããã®ä»ã®èŠå ããããããžã§ã¯ãã®åæããµããŒãããå¿ èŠããããŸãã åæã«ãäžè¶³ããŠããäŸåé¢ä¿ãžã®ãªã³ã¯ãå«ãã³ãŒãã®æçã䜿çšããäœæ¥ã¯ãããããã®ã±ãŒã¹ã§å¯èœãªéãå®å šã«å®è£ ããå¿ èŠããããŸãã äžæ¹ãIAã¯ãã¥ãŒãªã³ã°èšç®ã¢ãã«ã«ãã£ãŠèª²ããããçè«äžã®å¶éãå¹æçã«ãåé¿ãã§ããã ãã§ãªãã劥åœãªæéã§ã¹ãã£ã³ãå®è¡ããåççãªéã®ã¡ã¢ãªãæ¶è²»ããå¯èœãªãµãææ°ã®ãéã¿ã«ããŽãªããéµå®ã§ããå¿ èŠããããŸãã
第äºã«ã第1çš®ã®ãšã©ãŒãçºçãã確çã¯ãè«çæ¹çšåŒã®ã·ã¹ãã ãæ§ç¯ããã³è§£æ±ºãããŠãŒã¶ãŒã1ã€ã®ã¢ã¯ã·ã§ã³ã§è匱æ§ã®ååšã確èªã§ããäœæ¥æ»æãã¯ãã«ãçæããããšã«ãã£ãŠæå°éã«æããå¿ èŠããããŸãã
第äžã«ãIAã¯ç¬¬2çš®ã®ãšã©ãŒãå¹æçã«åŠçããå¿ èŠãããããŠãŒã¶ãŒã¯å®è¡ãããŒã®æœåšçã«è匱ãªãã€ã³ãããã¹ãŠæåã§ãã§ãã¯ã§ããŸããIAèªäœã®è匱æ§ã¯ç¢ºèªãæåŠãã§ããŸããã
ã·ã³ããªãã¯èšç®ã«åºã¥ããã¢ãã«ã䜿çšãããšãçè«äžã®å¶éãšå¯ææ°ã«é¢é£ããéšåãé€ãããèšèšããšåŒã°ããããããã¹ãŠã®èŠä»¶ãå®è£ ã§ããŸãããããŠãããã§ããšããã§ãç§ãã¡ã®èšç»ããããŸã-éç解æã倱æããå Žæã§åç解æã䜿çšããããšã§ãã
éšåèšç®ãéé¢æ°ãããã³é 延解é
IAã«ã¯ãæšæºèšèªã©ã€ãã©ãªãŸãã¯ã¢ããªã±ãŒã·ã§ã³ã©ã³ã¿ã€ã ãæãäžè¬çãªãã¬ãŒã ã¯ãŒã¯ãCMSã«å®è£ ãããŠããå ¥åããŒã¿å€æé¢æ°ã®ã»ãã³ãã£ã¯ã¹ãèšè¿°ããç¹å®ã®ç¥èããŒã¹ãå«ãŸããŠãããšæ³åããŠãã ãããããšãã°ãBase64Decodeé¢æ°ãšBase64Encodeé¢æ°ã¯çžäºã«éã§ããããStringBuilder.AppendãåŒã³åºããã³ã«ããã®ã¯ã©ã¹ã®äžéã¢ãã¥ã ã¬ãŒã¿ãŒå€æ°ã«æ¢ã«æ ŒçŽãããŠããè¡ã«æ°ããè¡ãè¿œå ããŸãããã®ãããªç¥èãããã°ãIAã¯ã©ã€ãã©ãªã³ãŒãã«ããã©ãŒã«ã¹ã«ãŒãããå¿ èŠæ§ãå ãããã®åæããã¹ãŠã®èšç®äžã®å¶éã«è©²åœããŸãã
// cond2 if (Encoding.UTF8.GetString(Convert.FromBase64String(cond2)) == "true") { var sb = new StringBuilder(); sb.Append(Request.Params["param"]); // sb.ToString StringBuilder, Response.Write(sb.ToString()); }
ããããIAãã¬ããžããŒã¹ã«èšèŒãããŠããªãé¢æ°åŒã³åºããã³ãŒãã«å«ãŸããŠããå Žåã¯ã©ãã§ããããïŒ IAã«ã¯ãç¹å®ã®ã³ã³ããã¹ãã§åæãããã³ãŒãã®ä»»æã®ãã©ã°ã¡ã³ããå®è¡ãããã®å®è¡çµæãååŸã§ãããããçš®ã®ä»®æ³ãµã³ãããã¯ã¹ç°å¢ãããããšãæ³åããŠã¿ãŸããããããããéšåèšç®ããšåŒã³ãŸãã次ã«ãæ£çŽã«æªç¥ã®é¢æ°ã«ã倱æãããæœè±¡çã«è§£éãéå§ããåã«ãIAã¯ãéšåãã¡ãžã³ã°ããšåŒã°ããããªãã¯ãè©Šã¿ãããšããããŸãã圌ã®äžè¬çãªã¢ã€ãã¢ã¯ãã©ã€ãã©ãªå€æé¢æ°ãšãæ¢ç¥ã®ãã¹ãããŒã¿ã»ããã«å¯Ÿããé£ç¶ããåŒã³åºãã®çµã¿åããã«é¢ããç¥èããŒã¹ãäºåã«æºåããããšã§ãããã®ãããªããŒã¿ããŒã¹ã䜿çšãããšãåãããŒã¿ã»ããã§æªç¥ã®æ©èœãå®è¡ããçµæãç¥èããŒã¹ã®ãµã³ãã«ãšæ¯èŒã§ããŸããæªç¥ã®é¢æ°ãå®è¡ããçµæããã©ã€ãã©ãªé¢æ°ã®æ¢ç¥ã®ãã§ãŒã³ãå®è¡ããçµæãšäžèŽããå Žåãããã¯ãIAãæªç¥ã®é¢æ°ã®ã»ãã³ãã£ã¯ã¹ãèªèãã解éããå¿ èŠããªãããšãæå³ããŸãã
ãã©ã°ã¡ã³ãã«ã€ããŠããã®ãã©ã°ã¡ã³ãã«æ¥ããã¹ãŠã®ããŒã¿ã¹ããªãŒã ã®å€ã®ã»ãããæ¢ç¥ã§ããããã©ã°ã¡ã³ãèªäœã«å±éºãªæäœãå«ãŸããŠããªãå ŽåãIAã¯ãã¹ãŠã®å¯èœãªããŒã¿ã¹ããªãŒã ã§åçŽã«å®è¡ãããã®ã³ãŒããã©ã°ã¡ã³ãã®æœè±¡è§£éã®ä»£ããã«çµæã䜿çšã§ããŸããããã«ããã®ãã©ã°ã¡ã³ãã¯ãèšç®ã®è€éãã®ä»»æã®ã¯ã©ã¹ã«å±ããããšãã§ããå®è¡ã®çµæã«ã¯åœ±é¿ããŸãããããã«ããã©ã°ã¡ã³ãã«å°çããããŒã¿ã¹ããªãŒã ã®å€ã®ã»ãããäºåã«ããããªãå Žåã§ããIAã¯ç¹å®ã®å±éºãªæäœã®æ¹çšåŒã®è§£ãå§ãŸããŸã§ããã®ãã©ã°ã¡ã³ãã®è§£éã延æããå ŽåããããŸãã解決段éã§ã¯ãç¹å®ã®æ»æã®ãã¯ãã«ã®å ¥åããŒã¿å ã®ååšã«é¢ããå ¥åããŒã¿ã®å€ã®ã»ããã«è¿œå ã®å¶éã課ãããŸããããã«ãããé 延ãã©ã°ã¡ã³ãã«å ¥åãããè€æ°ã®å ¥åå€ãæ³å®ã§ããããããã®æ®µéã§éšåçã«èšç®ã§ããŸãã
ããã«ããœãªã¥ãŒã·ã§ã³æ®µéã§ã¯ãIAãå±éºç¹ãšãã®åŒæ°ã®å°éå¯èœæ§ã®æçµåŒïŒåæãããã³ãŒããèšè¿°ãããŠããã®ãšåãèšèªã®æ§æãšã»ãã³ãã£ã¯ã¹ãçµã¿èŸŒãã®ãæãç°¡åïŒãååŸãã察象ã®ãã¯ãã«ã®æ¢ç¥ã®ãã¹ãŠã®å€ã§ãæªãããããšã劚ãããã®ã¯ãããŸããåŒã®ãã¹ãŠã®ãã£ã«ã¿ãªã³ã°é¢æ°ãééãããµãã»ãããååŸããŸãã
// Response.Write, , parm1 XSS Response.Write(CustomFilterLibrary.CustomFilter.Filter(parm1));
äžèšã®ã¢ãããŒãã«ããããã¥ãŒãªã³ã°å®å šãªã³ãŒãã®ãã©ã°ã¡ã³ãã®ããªãã®éšåã®åæã«å¯ŸåŠããããšãã§ããŸãããç¥èããŒã¹ãåããæšæºåã®ã»ãã³ãã£ã¯ã¹ã®ãšãã¥ã¬ãŒã·ã§ã³ãæé©åãã芳ç¹ãããããã³éšåçãªã³ãŒãå®è¡ã®ãµã³ãããã¯ã¹ãå®è£ ãã芳ç¹ãããååãªãšã³ãžãã¢ãªã³ã°ç 究ãå¿ èŠã§ãïŒèª°ãæãã§ããŸããïŒåæããã»ã¹ã¯ãFile.Deleteã®ãããªãã®ãçªç¶å®è¡ããŸããïŒãnããŒã«ã«ã®æªç¥ã®é¢æ°ã®ãã¡ãžã³ã°ããµããŒãããéšåèšç®ã®æŠå¿µãSMTãœã«ããŒãªã©ãšçµ±åããŸããããã ããåŸæ¥ã®SASTã®ã¬ãŒããšã¯ç°ãªããå®è£ ã«å€§ããªå¶éã¯ãããŸããã
åä»ãªã«ã¢ã¿ã€ãã³ã°ãçœé³¥ã«ãªããšã

次ã®ã³ãŒããåæããå¿ èŠããããšæ³åããŠãã ããã
var argument = "harmless value"; // UnknownType - , UnknownType.Property1 = parm1; UnknownType.Property2 = UnknownType.Property1; if (UnknownType.Property3 == "true") { argument = UnknownType.Property2; } Response.Write(argument);
ããã§ã¯ãXSSã«å¯Ÿããéæå¯èœãªè匱æ§ãç°¡åã«èŠãããšãã§ããŸããããããæ¢åã®éçã¢ãã©ã€ã¶ãŒã®ã»ãšãã©ã¯ãUnknownTypeåã«ã€ããŠäœãç¥ããªããããå®å šã«ãããå°ç¡ãã«ããŸãããã ããããã§IAã«å¿ èŠãªããšã¯ãéçåä»ããå¿ããŠãã¢ãã«ã«ç§»ãããšã ãã§ãããã®ãããªæ§æã®è§£éã®ã»ãã³ãã£ã¯ã¹ã¯ããã®äœ¿çšã®ã³ã³ããã¹ãã«å®å šã«äŸåããå¿ èŠããããŸããã¯ããã€ã³ã¿ãŒããªã¿ãŒã¯ `UnknownType.Property1`ãäœã§ããããç¥ããŸãã-ããããã£ããã£ãŒã«ããããã«ã¯ããªã²ãŒãïŒCïŒã®ã¡ãœãããžã®åç §ïŒã§ããããããããã䜿çšããæäœã¯ãããçš®ã®å€æ°ã¡ã³ããŒã®ããã«å®è¡ããããããã€ã³ã¿ãŒããªã¿ãŒããã®æ¹æ³ã§åŠçããããšã劚ãããã®ã¯äœããããŸããããããŠãäŸãã°ãã³ãŒãã®ããã«äžã«ãUnknownType.Property1ïŒïŒããæ§ç¯ãããŠããå Žåããã®ã¡ãœããã®åŒã³åºãã®è§£éã劚ãããã®ã¯äœããããŸããã以åã«Property1ã«å²ãåœãŠããããªã³ã¯ããªã©ãã¢ãã«ã®ãã£ã³ããªã³ã®ããªãŒããŒã®æé«ã®äŒçµ±ã§ã
ãŸãšãããš
ãã¡ããã販売è ã®èŠ³ç¹ãããããã¢ãã©ã€ã¶ãŒãå¥ã®ã¢ãã©ã€ã¶ãŒãšä»ã®ã¢ãã©ã€ã¶ãŒã奜æçã«æ¯èŒããããŒã±ãã£ã³ã°ã®marketingããããããããŸãããã ãã補åã®ã³ã¢ã䜿çšããåºæ¬æ©èœãæäŸã§ããªãå Žåããããã¯äœ¿çšã§ããŸããããããŠããããæäŸããããã«ãåæè£ çœ®ã¯èšè¿°ãããIAã«å¯Ÿããèœåã«åŸã£ãŠåªåããªããã°ãªããŸãããããã§ãªããã°ã圌ãåŠçãããããžã§ã¯ãã«æ¬åœã®ã»ãã¥ãªãã£ã®è©±ã¯ã§ããŸããã
æ°å¹Žåãã¯ã©ã€ã¢ã³ãã®1人ãã圌ãéçºããã·ã¹ãã ã®ã»ãã¥ãªãã£ã®åæãæ±ããŸãããå ¥åããŒã¿ã®äžã§ã圌ã¯ãåœæã®SASTããŒã«åžå Žã®ãªãŒããŒã ã£ã補åã䜿çšãããããžã§ã¯ãã®ã³ãŒãã®åæã«é¢ããã¬ããŒããæäŸããŸãããã¬ããŒãã«ã¯çŽ2,000件ã®ã¬ã³ãŒããå«ãŸããŠããããã®ã»ãšãã©ãããžãã£ããã©ãŒã«ã¹ããžãã£ããšããŠæ€èšŒãããŸãããããããææªã®ããšã¯ãã¬ããŒãã«ãªããã®ã§ãããæåã§ã³ãŒããåæããçµæãã¹ãã£ã³äžã«èŠéãããæ°åã®è匱æ§ãçºèŠããŸããããã®ãããªã¢ãã©ã€ã¶ãŒã䜿çšãããšããã¹ãŠã®åœéœæ§ã®çµæã解æããã®ã«æéãããããåœé°æ§ã®çµæã«ããã»ãã¥ãªãã£ã®é¯èŠãçããè¯ãããšããã害ã倧ãããªããŸãããšããã§ããã®äºä»¶ã¯ãç¬èªã®ã¢ãã©ã€ã¶ãŒãéçºããçç±ã®1ã€ã«ãªããŸããã
ã話ã¯å®ããã³ãŒããèŠããŠãã ãããã
å®éã«ã¢ãã©ã€ã¶ãŒã®çæ³ã®åºŠåãã確èªã§ããå°ããªã³ãŒãäŸã§èšäºãçµäºããªãã®ã¯å¥åŠã§ããåºæ¥äžãã-以äžã®ã³ãŒãã«ã¯ãæœè±¡çãªè§£éã«å¯Ÿãã説æãããã¢ãããŒãã§ã«ããŒããããã¹ãŠã®åºæ¬çãªã±ãŒã¹ãå«ãŸããŠããŸãããããåå§çãªã¢ãããŒãã§ã¯ã«ããŒãããŠããŸãããåã±ãŒã¹ã¯å¯èœãªéãç°¡åã«ãæå°éã®èšèªæ瀺ã§å®è£ ãããŸããããã¯CïŒ/ ASP.Net WebFormsã®äŸã§ããã詳现ã¯å«ãŸããŠããããä»ã®OOPèšèªããã³Webãã¬ãŒã ã¯ãŒã¯ã§ç°¡åã«ã³ãŒãã«å€æã§ããŸãã
var parm1 = Request.Params["parm1"]; const string cond1 = "ZmFsc2U="; // "false" base64- Action<string> pvo = Response.Write; // False-negative // , , pvo(parm1); // , , #region var argument = "harmless value"; UnknownType.Property1 = parm1; UnknownType.Property2 = UnknownType.Property1; UnknownType.Property3 = cond1; if (UnknownType.Property3 == null) { argument = UnknownType.Property2; } // False-positive // , , Response.Write(argument); #endregion // False-positive // , , if (cond1 == null) { Response.Write(parm1); } // False-positive // , , Response.Write(WebUtility.HtmlEncode(parm1)); // False-positive // , , // (CustomFilter.Filter `s.Replace("<", string.Empty).Replace(">", string.Empty)`) Response.Write(CustomFilterLibrary.CustomFilter.Filter(parm1)); if (Encoding.UTF8.GetString(Convert.FromBase64String(cond1)) == "true") { // False-positive // , , Response.Write(parm1); } var sum = 0; for (var i = 0; i < 10; i++) { for (var j = 0; j < 15; j++) { sum += i + j; } } if (sum != 1725) { // False-positive // , , Response.Write(parm1); } var sb = new StringBuilder(); sb.Append(cond1); if (sb.ToString() == "true") { // False-positive // , , Response.Write(parm1); }
ãã®ã³ãŒãã®åæçµæã¯ãåŒ `pvoïŒparm1ïŒ`ã®XSSæ»æã«å¯Ÿããå¯äžã®è匱æ§ã«é¢ããã¡ãã»ãŒãžã«ãªãã¯ãã§ãããã¡ãããã¹ãã£ã³å¯Ÿå¿ãããžã§ã¯ããå ¥åããŠã³ã³ãã€ã«ã§ããŸãã
ãããã圌ããèšãããã«ããäžåºŠèŠãæ¹ããã...ããšããŸããéçºäžã®IAã¢ãã©ã€ã¶ãŒã®ã³ã³ãã©ã€ã¢ã³ã¹ããã§ãã¯ããŸãããããã¯ãå¶ç¶AIãšåŒã°ããŠããŸãã
ãã§ã«ãã§ãã¯ããŸãããïŒ ;ïŒ
æåŸãŸã§èªãã 人ãžã®ããŒãã¹ãšããŠïŒ
ç¡æã®ApproofãŠãŒãã£ãªãã£ã®ãããªãã¯ã¢ã«ãã¡ãã¹ããéå§ããŸããã³ãŒãåââæã®æ©èœã¯å«ãŸããŠããããäžèšã®å®å šãªããŒãã³ã¢ã䜿çšããŠããŸãããããããžã§ã¯ãå ã®è匱ãªå€éšã³ã³ããŒãã³ããããŒã¿æŒããã«ææãªæ§æã®æ¬ é¥ãåã蟌ã¿Webã·ã§ã«ããã³æªæã®ããã³ãŒããæ€åºããæ©èœãå«ãŸããŠããŸãïŒ

ãã®ãŠãŒãã£ãªãã£ã¯ãå ¬åŒWebãµã€ãããããŠã³ããŒãã§ããŸãã䜿çšããåã«ãå¿ ãã©ã€ã»ã³ã¹å¥çŽããèªã¿ãã ãããåæäžã«ãApproofã¯éæ©å¯ã®ãããžã§ã¯ãçµ±èšïŒCLOCããã¡ã€ã«ã¿ã€ãã䜿çšæžã¿ãã¬ãŒã ã¯ãŒã¯ãªã©ïŒãåéãããªãã·ã§ã³ã§PTãµãŒããŒã«éä¿¡ããŸããã¢ããªã±ãŒã·ã§ã³ã®[About]ã»ã¯ã·ã§ã³ã§ãçµ±èšã®éä¿¡ãç¡å¹ã«ããããåéãããããŒã¿ãå«ãçã®jsonã衚瀺ã§ããŸãã