ã³ã³ãã¥ãŒã¿ãŒã®ã»ãã¥ãªãã£ã«é¢ããè匱æ§-ã·ã¹ãã ã®æ¬ é¥ã§ãæå³çã«æŽåæ§ã䟵害ãããã誀åäœãåŒãèµ·ããããããããšãã§ããŸãã å®è·µã瀺ãããã«ãäžèŠäºçŽ°ãªãã°ã§ãã£ãŠããæ·±å»ãªè匱æ§ã«ãªãå¯èœæ§ããããŸãã è匱æ§ã¯ãéçåæãå«ããœãããŠã§ã¢ã®æ€èšŒãšæ€èšŒã®ããŸããŸãªæ¹æ³ã䜿çšããŠåé¿ã§ããŸãã PVS-Studioãè匱æ§ã¹ãã£ã³ã¿ã¹ã¯ãåŠçããæ¹æ³ã«ã€ããŠèª¬æããŸãã
PVS-Studioã¯ããšã©ãŒã ãã§ãªãè匱æ§ãé²ãããŒã«ã§ã
ãã®çµè«ã«è³ã£ãçµç·¯ã以äžã«å°ã説æããŸãã ããã§ãPVS-Studioãšã¯äœãã説æããããšæããŸããã
PVS-Studioã¯ãCãC ++ãCïŒã§èšè¿°ãããããã°ã©ã ã®ãšã©ãŒïŒããã³åŸè¿°ããè匱æ§ïŒãæ€çŽ¢ããéçã³ãŒãã¢ãã©ã€ã¶ãŒã§ãã Windowsããã³Linuxã§åäœãããã©ã°ã€ã³ãšããŠVisual Studio IDEã«çµ±åã§ããŸãã çŸåšãã¢ãã©ã€ã¶ãŒã«ã¯450ãè¶ ãã蚺æã«ãŒã«ãå®è£ ãããŠãããããããã«ããã¥ã¡ã³ããæ·»ä»ãããŠããŸã ã
å·çæç¹ã§ãPVS-Studioã䜿çšããŠã 280ãè¶ ãããªãŒãã³ãœãŒã¹ãããžã§ã¯ãããã¹ãããã 11,000ãè¶ ãããšã©ãŒãæ€åºãããŸããã ãããã®ãšã©ãŒã®ãã¡ãã©ãã ããè匱æ§ãªã®ã§ãããã...
å ¬åŒWebãµã€ãããPVS-StudioãããŠã³ããŒãããŠãè©Šããã ããã
ãšããã§ãã»ãã¥ãªãã£ã®å°é家ã«PVS-Studioã®ã©ã€ã»ã³ã¹ãæäŸããŠããŸãã ããªããå ¬å®ã®å°é家ã§ãããè匱æ§ãæ¢ããŠããå Žåã¯ãã©ã€ã»ã³ã¹ãååŸããããã«ç§ãã¡ã«é£çµ¡ããŠãã ããã ãã®ææ¡ã®è©³çŽ°ã«ã€ããŠã¯ãã ã»ãã¥ãªãã£ã®å°é家ã«PVS-Studioã¢ãã©ã€ã¶ãŒãæäŸããŠããŸãããšããèšäºãã芧ãã ããã
çšèª
çšèªã«ç²ŸéããŠããå Žåã¯ãCVEãšCWEã®éããããã³ãããã®å ±éç¹ãç¥ã£ãŠããå Žåã¯ããã®ã»ã¯ã·ã§ã³ãã¹ãããã§ããŸãã åŸã§ç解ããããããããã«ãæ®ãã®éšåãããç解ããããšããå§ãããŸãã
CWEïŒCommon Weakness EnumerationïŒ-ã»ãã¥ãªãã£æ¬ é¥ã®äžè¬çãªãªã¹ãã éçºè ããã³ãœãããŠã§ã¢ã»ãã¥ãªãã£ã®å°é家åãã«èšèšãããŠããŸãã ããã¯ããœãããŠã§ã¢ã®ã¢ãŒããã¯ãã£ãèšèšãã³ãŒãããŸãã¯å®è£ ã«çŸããå¯èœæ§ã®ããäžè¬çãªã»ãã¥ãªãã£æ¬ é¥ã®å ¬åŒã¬ãžã¹ããªãŸãã¯èŸæžã§ãããæ»æè ãã·ã¹ãã ãžã®äžæ£ã¢ã¯ã»ã¹ãååŸããããã«äœ¿çšã§ããŸãã ãã®ãªã¹ãã¯ããœãããŠã§ã¢ã»ãã¥ãªãã£ã®æ¬ é¥ãèšè¿°ããããã®æ®éçãªå ¬åŒèšèªãšããŠããŸãããã®ãããªæ¬ é¥ãæ€åºãããããã®æ¬ é¥ãèªèãé€å»ãé²æ¢ããããŒã«ã®æå¹æ§ã枬å®ããããã®æšæºãšããŠéçºãããŸããã
CVEïŒCommon Vulnerabilities and ExposuresïŒ-æ»æè ãçŽæ¥äœ¿çšã§ããããã°ã©ã ãšã©ãŒã
MITER Corporationã¯ãäžè¬çãªãœãããŠã§ã¢ã®è匱æ§ãšè匱æ§ïŒCVEïŒã®ãªã¹ããäœæããã1999幎ã«ããœãããŠã§ã¢ã®è匱æ§ã®åé¡ã«é¢ããäœæ¥ãéå§ããŸããã 2005幎ãCVEã·ã¹ãã ã®ãããªãéçºã®äžç°ãšããŠãèè ã®ããŒã ã¯ãäžè¬çãªãœãããŠã§ã¢ã»ãã¥ãªãã£ã®æ¬ é¥ãèå¥ããããã«ãè匱æ§ãæ»æãã¯ã©ãã·ã¥ãããã³ãã®ä»ã®çš®é¡ã®ã»ãã¥ãªãã£åé¡ã®äºååé¡ãéå§ããŸããã ãã ããCVEã®ãã¬ãŒã ã¯ãŒã¯å ã§äœæãããåé¡ã¯èªçµŠèªè¶³ã§ãããã¢ãã©ã€ã¶ãŒã䜿çšããã³ãŒãã»ãã¥ãªãã£è©äŸ¡æ¹æ³ãå®çŸ©ããã³åé¡ããã«ã¯ããŸãã«ãç²éã§ããããšãå€æããŸããã ãã®åé¡ã解決ããããã«ãCWEãªã¹ããäœæãããŸããã
PVS-StudioïŒç°ãªãããžã·ã§ãã³ã°
èæ¯
PVS-Studioã¯ãåžžã«ããã°ã©ã ã³ãŒãã®ãšã©ãŒãèŠã€ããããã®ããŒã«ãšããŠäœçœ®ä»ããããŠããŸããã ãããžã§ã¯ãã®æ€èšŒã«é¢ããèšäºã§ã¯ããã°ããšã©ãŒãã¿ã€ããã¹ãªã©ã®é©åãªçšèªã䜿çšããŸããã ãšã©ãŒããšã«éèŠåºŠãç°ãªãããšã¯æããã§ãããã®ã³ãŒãã¯åçŽã«åé·ã§ããã°ã©ããæ··ä¹±ãããå¯èœæ§ãé«ãã®ã§ããããã®ãšã©ãŒã®ããã«ã·ã¹ãã å šäœã3æ¥ããšã«åå5æã«ã¯ã©ãã·ã¥ããŸãã ããã¯ç解ã§ãããã®æŠå¿µã¯é·ãéããããªãéçºãåããŸããã§ãã-ééãããããã¯ééãã§ãã
ããããæéã®çµéãšãšãã«ãPVS-Studioã«ãã£ãŠæ€åºããããšã©ãŒã®äžéšã¯ããæ·±å»ãªæ¹æ³ã§åŠçã§ããããšãå€æããŸããã ããšãã°ã printfé¢æ°ã®äžé©åãªäœ¿çšã¯ã stdoutã«ééã£ãã¡ãã»ãŒãžã衚瀺ãããããã¯ããã«æªãçµæãããããå¯èœæ§ããããŸãã å€ãã®èšºæã«ãŒã«ã®å©ããåããŠããšã©ãŒã ãã§ãªãæœåšçãªè匱æ§ïŒCWEïŒãæ€åºã§ããããšãæããã«ãªã£ããšããåé¡ã«ããã«è©³ããã¢ãããŒãããPVS-StudioãšCWEã®èšºæã«ãŒã«ãã©ã®ããã«é¢é£ãããã確èªããããšã«ããŸããã
PVS-Studioããã³CWEèŠåç
PVS-StudioãšCWEã¢ã©ãŒãã®é¢ä¿ãç¹å®ããäœæ¥ã®çµæã«åºã¥ããŠã次ã®è¡šãã³ã³ãã€ã«ãããŸããã
CWE | PVS-Studio | CWEã®èª¬æ |
---|---|---|
CWE-14 | V597 | ã³ã³ãã€ã©ãŒã«ãããããã¡ãŒãã¯ãªã¢ããã³ãŒãã®åé€ |
CWE-36 | V631ãV3039 | 絶察ãã¹ãã©ããŒãµã« |
CWE-121 | V755 | ã¹ã¿ãã¯ããŒã¹ã®ãããã¡ãªãŒããŒãã㌠|
CWE-122 | V755 | ããŒãããŒã¹ã®ãããã¡ãªãŒããŒãã㌠|
CWE-123 | V575 | æžã蟌ã¿å Žææ¡ä»¶ |
CWE-129 | V557ãV781ãV3106 | é åã€ã³ããã¯ã¹ã®äžé©åãªæ€èšŒ |
CWE-190 | V636 | æŽæ°ãªãŒããŒãããŒãŸãã¯ã©ããã¢ã©ãŠã³ã |
CWE-193 | V645 | ãªããã€ã¯ã³ãšã©ãŒ |
CWE-252 | V522ãV575 | æªãã§ãã¯ã®æ»ãå€ |
CWE-253 | V544ãV545ãV676ãV716ãV721ãV724 | é¢æ°ã®æ»ãå€ã®èª€ã£ããã§ã㯠|
CWE-390 | V565 | ã¢ã¯ã·ã§ã³ãªãã®ãšã©ãŒç¶æ ã®æ€åº |
CWE-476 | V522ãV595ãV664ãV757ãV769ãV3019ãV3042ãV3080ãV3095ãV3105ãV3125 | NULLãã€ã³ã¿ãŒéåç § |
CWE-481 | V559ãV3055 | æ¯èŒãã代ããã«å²ãåœãŠã |
CWE-482 | V607 | å²ãåœãŠã代ããã«æ¯èŒãã |
CWE-587 | V566 | ãã€ã³ã¿ãŒãžã®åºå®ã¢ãã¬ã¹ã®å²ãåœãŠ |
CWE-369 | V609ãV3064 | ãŒãã§é€ç® |
CWE-416 | V723ãV774 | ç¡æã§äœ¿çš |
CWE-467 | V511ãV512ãV568 | ãã€ã³ã¿ãŒåã§ã®sizeofïŒïŒã®äœ¿çš |
CWE-805 | V512ãV594ãV3106 | äžæ£ãªé·ãã®å€ãæã€ãããã¡ã¢ã¯ã»ã¹ |
CWE-806 | V512 | ãœãŒã¹ãããã¡ã®ãµã€ãºã䜿çšãããããã¡ã¢ã¯ã»ã¹ |
CWE-483 | V640ãV3043 | äžæ£ãªãããã¯åºåã |
CWE-134 | V576ãV618ãV3025 | å€éšå¶åŸ¡åœ¢åŒæååã®äœ¿çš |
CWE-135 | V518ãV635 | ãã«ããã€ãæååã®é·ãã®èª€ã£ãèšç® |
CWE-462 | V766ãV3058 | é£æ³ãªã¹ãïŒãªã¹ãïŒã®éè€ã㌠|
CWE-401 | V701ãV773 | æåŸã®åç §ãåé€ããåã®ã¡ã¢ãªã®äžé©åãªãªãªãŒã¹ïŒãã¡ã¢ãªãªãŒã¯ãïŒ |
CWE-468 | V613ãV620ãV643 | 誀ã£ããã€ã³ã¿ãŒã®ã¹ã±ãŒãªã³ã° |
CWE-588 | V641 | éæ§é ãã€ã³ã¿ãŒã®åã«ã¢ã¯ã»ã¹ããè©Šã¿ |
CWE-843 | V641 | äºææ§ã®ãªãã¿ã€ãã䜿çšãããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ïŒãã¿ã€ãã®æ··ä¹±ãïŒ |
CWE-131 | V512ãV514ãV531ãV568ãV620ãV627ãV635ãV641ãV645ãV651ãV687ãV706ãV727 | ãããã¡ãµã€ãºã®èª€ã£ãèšç® |
CWE-195 | V569 | 眲åãããŠããªãå€æãšã©ãŒãžã®çœ²å |
CWE-197 | V642 | æ°å€åãæšãŠãšã©ãŒ |
CWE-762 | V611ãV780 | ã¡ã¢ãªç®¡çã«ãŒãã®äžäžèŽ |
CWE-478 | V577ãV719ãV622ãV3002 | Switchã¹ããŒãã¡ã³ãã«ããã©ã«ãã®ã±ãŒã¹ããªã |
CWE-415 | V586 | ããã«ç¡æ |
CWE-188 | V557ãV3106 | ããŒã¿/ã¡ã¢ãªã¬ã€ã¢ãŠããžã®äŸå |
CWE-562 | V558 | ã¹ã¿ãã¯å€æ°ã¢ãã¬ã¹ã®è¿åŽ |
CWE-690 | V522ãV3080 | NULLãã€ã³ã¿ãŒéåç §ãžã®æªãã§ãã¯ã®æ»ãå€ |
CWE-457 | V573ãV614ãV730ãV670ãV3070ãV3128 | åæåãããŠããªãå€æ°ã®äœ¿çš |
CWE-404 | V611ãV773 | äžé©åãªãªãœãŒã¹ã®ã·ã£ããããŠã³ãŸãã¯ãªãªãŒã¹ |
CWE-563 | V519ãV603ãV751ãV763ãV3061ãV3065ãV3077ãV3117 | 䜿çšããªãå€æ°ãžã®å²ãåœãŠïŒãæªäœ¿çšå€æ°ãïŒ |
CWE-561 | V551ãV695ãV734ãV776ãV779ãV3021 | ãããã³ãŒã |
CWE-570 | V501ãV547ãV517ãV560ãV625ãV654ãV3022ãV3063 | åŒã¯åžžã«åœ |
CWE-571 | V501ãV547ãV560ãV617ãV654ãV694ãV768ãV3022ãV3063 | è¡šçŸã¯åžžã«çå® |
CWE-670 | V696 | åžžã«ééã£ãå¶åŸ¡ãããŒã®å®è£ |
CWE-674 | V3110 | å¶åŸ¡ãããªãååž° |
CWE-681 | V601 | æ°å€åéã®èª€ã£ãå€æ |
CWE-688 | V549 | åŒæ°ãšããŠèª€ã£ãå€æ°ãŸãã¯åç §ãæã€é¢æ°åŒã³åºã |
CWE-697 | V556ãV668 | äžååãªæ¯èŒ |
è¡šN1-ãã©ããCWE察å¿è¡šãšPVS-Studio蚺æ
ããã¯è¡šã®æçµããŒãžã§ã³ã§ã¯ãããŸããããPVS-StudioãšCWEã®èŠåãçžäºã«ã©ã®ããã«é¢é£ããŠãããã«ã€ããŠã®ã¢ã€ãã¢ãæäŸããŸãã PVS-Studioã¯ããã°ã ãã§ãªãæœåšçãªè匱æ§ãã€ãŸãCWEã§ãããã°ã©ã ã³ãŒãã§æ£åžžã«æ€åºãããïŒãããŠåžžã«æ€åºãããïŒããšãæããã«ãªããŸããã ãã®ãããã¯ã«é¢ããŠããã€ãã®èšäºãæžãããŠããŸããããã®ãªã¹ãã¯çŸåšã®èšäºã®æåŸã«ãããŸãã
CVEããŒã¹
æœåšçãªè匱æ§ïŒCWEïŒ-ãŸã è匱æ§ïŒCVEïŒã¯ãããŸããã ãªãŒãã³ãœãŒã¹ãšãããã©ã€ãšã¿ãªãããžã§ã¯ãã®äž¡æ¹ã§çºèŠãããå®éã®è匱æ§ã¯ããµã€ãhttp://cve.mitre.orgã§åéãããŠããŸã ã ããã§ãç¹å®ã®è匱æ§ã®èª¬æã衚瀺ããããè¿œå ã®ãªã³ã¯ãèŠã€ãããããããšãã§ããŸãïŒããšãã°ããã£ã¹ã«ãã·ã§ã³ãžã®ãªã³ã¯ãè匱æ§ä¿®æ£ã®éå ±ãè匱æ§ãã«ããŒããã³ããããžã®ãªã³ã¯ãªã©ïŒã å¿ èŠã«å¿ããŠããã®ããŒã¿ããŒã¹ãç®çã®åœ¢åŒã§å®å šã«ããŠã³ããŒãã§ããŸãã å·çæç¹ã§ã¯ãããã¹ã圢åŒã®ããŒã¿ããŒã¹ã¯ããµã€ãºãçŽ100MBããµã€ãºã270äžè¡ãè¶ ãã.txtãã¡ã€ã«ã§ããã ãšãŠãå°è±¡çã§ãåæããŸãã
äœæ¥ã®éçšã§ãèå³ã®ãã人ã«åœ¹ç«ã€ãããããªãå¥ã®èå³æ·±ããªãœãŒã¹-http://www.cvedetails.com/ãèŠã€ããŸããã 次ã®ãããªæ©èœãæäŸãããšããç¹ã§äŸ¿å©ã§ãã
- CWEèå¥åã«ããCVEæ€çŽ¢ã
- ç¹å®ã®è£œåã§ã®CVEæ€çŽ¢ã
- è匱æ§ã®åºçŸ/ä¿®æ£ã«é¢ããçµ±èšã®è¡šç€ºã
- CVEã«é¢é£ããäœããã®æ¹æ³ã§ããŸããŸãªããŒã¿ããŒãã«ã衚瀺ããïŒããšãã°ããœãããŠã§ã¢è£œåãæãå€ãã®è匱æ§ãçºèŠããäŒæ¥ã®è©äŸ¡ïŒã
- ãªã©
PVS-Studioã䜿çšããŠèŠã€ããããšãã§ããããã€ãã®CVE
PVS-Studioã¢ãã©ã€ã¶ãŒãè匱æ§ïŒå°ãªããšããããã®ããã€ãïŒããã¢ããªã±ãŒã·ã§ã³ãä¿è·ã§ããããšã瀺ãããã«ããã®èšäºãæžããŠããŸãã
PVS-Studioã䜿çšããŠæ€åºãããç¹å®ã®æ¬ é¥ãè匱æ§ãšããŠæªçšãããå¯èœæ§ããããã©ããã¯èª¿æ»ããŠããŸããã ããã¯é£ããããã®ãããªä»äºã¯ãããŸããã ãããã£ãŠãç§ã¯å¥ã®æ¹æ³ã§è¡åããŸãããã§ã«çºèŠããã説æãããŠããããã€ãã®è匱æ§ãåãäžããPVS-Studioã䜿çšããŠã³ãŒããå®æçã«ãã§ãã¯ããã°åé¿ã§ããããšã瀺ããŸãã
ã泚æ ãã®èšäºã§èª¬æãããŠããè匱æ§ã¯ãåæäŸã§ã¯ãªããå€ããããžã§ã¯ããªããžã§ã³ããååŸãããå®éã®ãœãŒã¹ãã¡ã€ã«ã§èŠã€ãããŸããã
ã€ã«ã¢ã²ãŒã
æåã«è°è«ãããè匱æ§ã¯ãillumos-gateãããžã§ã¯ãã®ãœãŒã¹ã³ãŒãã§çºèŠãããŸããã illumos-gateã¯ãUnixããã³BSDã«æ ¹ããããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ã³ã¢ã圢æãããªãŒãã³ãœãŒã¹ãããžã§ã¯ãïŒ GitHubãªããžããªã§å©çšå¯èœïŒã§ãã
ãã®è匱æ§ã®ã³ãŒãããŒã ã¯CVE-2014-9491ã§ãã
説æCVE-2014-9491 ïŒillumosã®devzvol_readdiré¢æ°ã¯strchråŒã³åºãã®æ»ãå€ããã§ãã¯ããŸãããããã«ããããªã¢ãŒãã®æ»æè ãäžç¹å®ã®ãã¯ãã«ãä»ããŠãµãŒãã¹æåŠïŒ NULLãã€ã³ã¿ãŒã®éåç §ãšãããã¯ïŒãåŒãèµ·ããããšãã§ããŸã ã
åé¡ã®ã³ãŒãã¯devzvol_readdiré¢æ°ã«ããã 次ã®ããã«èŠããŸããã
static int devzvol_readdir(....) { .... char *ptr; .... ptr = strchr(ptr + 1, '/') + 1; rw_exit(&sdvp->sdev_contents); sdev_iter_datasets(dvp, ZFS_IOC_DATASET_LIST_NEXT, ptr); .... }
strchré¢æ°ã¯ã2çªç®ã®åŒæ°ãšããŠæž¡ãããæåã®æåã®åºçŸãæããã€ã³ã¿ãŒãè¿ããŸãã ãã ããå ã®æååã«æåãèŠã€ãããªãã£ãå Žåãé¢æ°ã¯NULLãã€ã³ã¿ãŒãè¿ãå ŽåããããŸãã ãããããã®äºå®ã¯å¿ããããŠããããèæ ®ãããŠããŸããã ãã®çµæãæ»ãå€ã«1ãè¿œå ãããçµæãptrå€æ°ã«æžã蟌ãŸããŸãããã®åŸããã€ã³ã¿ãŒã¯ããã®ãŸãŸãåäœããŸãã çµæã®ãã€ã³ã¿ãŒãnullã§ããå Žåããã®ãã€ã³ã¿ãŒãè¿œå ãããšãç¡å¹ãªãã€ã³ã¿ãŒãååŸãããŸããNULLã®äžçåŒããã§ãã¯ããŠãããã®æå¹æ§ã¯æå³ããŸããã ç¹å®ã®æ¡ä»¶äžã§ã¯ããã®ã³ãŒãã¯ã«ãŒãã«ãããã¯ãåŒãèµ·ããå¯èœæ§ããããŸã ã
PVS-Studioã¯ã V769蚺æã«ãŒã«ã䜿çšããŠãã®è匱æ§ãæ€åºãã strchré¢æ°ã«ãã£ãŠè¿ããããã€ã³ã¿ãŒãnullã«ãªãå¯èœæ§ãããããšãå ±åããåæã«ïŒè¿œå 1ã«ããïŒç ŽæããŸãã
V769 'strchrïŒptr + 1ã' / 'ïŒ+ 1'åŒã® 'strchrïŒptr + 1ã' / 'ïŒ'ãã€ã³ã¿ãŒã¯nullptrã«ãªãå¯èœæ§ããããŸãã ãã®ãããªå Žåãçµæã®å€ã¯ç¡æå³ã«ãªãã䜿çšããªãã§ãã ããã
ãããã¯ãŒã¯ãªãŒãã£ãªã·ã¹ãã
ãããã¯ãŒã¯ãªãŒãã£ãªã·ã¹ãã ïŒNASïŒã¯ã SourceForgeã§å©çšå¯èœãªãªãŒãã³ãœãŒã¹ã®ã¯ã©ã€ã¢ã³ããµãŒããŒãªãŒãã£ãªã·ã¹ãã ã§ã ã NASã¯UnixãšWindowsã®äž¡æ¹ã§æ©èœããŸãã
ãã®ãããžã§ã¯ãã§çºèŠãããè匱æ§ã®ã³ãŒãããŒã ã¯CVE-2013-4258ã§ãã
説æCVE-2013-4258 ïŒãããã¯ãŒã¯ãªãŒãã£ãªã·ã¹ãã ïŒNASïŒ1.9.3ã®server / os / aulog.cã®osLogMsgé¢æ°ã«ãã©ãŒãããæååã®è匱æ§ãããããããªã¢ãŒãã®æ»æè ããµãŒãã¹æåŠïŒã¯ã©ãã·ã¥ïŒãåŒãèµ·ãããå Žåã«ãã£ãŠã¯ä»»æã®ã³ãŒããå®è¡ã§ããŸãã syslogã«é¢é£ãããæå®ãããŠããªããã¯ãã«ã®æååæå®åããã©ãŒãããããŸãã
ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸããã
.... if (NasConfig.DoDaemon) { /* daemons use syslog */ openlog("nas", LOG_PID, LOG_DAEMON); syslog(LOG_DEBUG, buf); closelog(); } else { errfd = stderr; ....
ãã®ã³ãŒãã¹ããããã§ã¯ã syslogé¢æ°ã誀ã£ãŠäœ¿çšãããŠããŸãã ãã®é¢æ°ã®å®£èšã¯æ¬¡ã®ãšããã§ãã
void syslog(int priority, const char *format, ...);
2çªç®ã®ãã©ã¡ãŒã¿ãŒã¯ãã©ãŒãããæååã§ãåŸç¶ã®ãã©ã¡ãŒã¿ãŒã¯ãã®æååã«å¿ èŠãªããŒã¿ã§ãªããã°ãªããŸããã ããã§ã¯ããã©ãŒãããæååãååšãããã¿ãŒã²ããã¡ãã»ãŒãžïŒ bufå€æ°ïŒãåŒæ°ãšããŠçŽæ¥æž¡ãããŸãã ããããä»»æã®ã³ãŒãã®å®è¡ã«ã€ãªããè匱æ§ã®çç±ã§ããã
SecurityFocusããŒã¿ããŒã¹ã®ãšã³ããªã«ãããšããã®è匱æ§ã¯Debianããã³Gentooãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«çŸããŸããã
PVS-Studioãšã¯äœã§ããïŒ PVS-Studioã¯ã V618蚺æã«ãŒã«ã䜿çšããŠãã®ãšã©ãŒãæ€åºããèŠåãçºè¡ããŸãã
V618ãã®ãããªæ¹æ³ã§ãsyslogãé¢æ°ãåŒã³åºãããšã¯å±éºã§ããæž¡ãããè¡ã«ã¯åœ¢åŒã®ä»æ§ãå«ãŸããŠããå¯èœæ§ãããããã§ãã å®å šãªã³ãŒãã®äŸïŒprintfïŒ "ïŒ s"ãstrïŒ;
ãã®ãšã©ãŒããã³åæ§ã®ãšã©ãŒãæ€åºããããšã¯ãã¢ãã©ã€ã¶ãŒã«å®è£ ãããé¢æ°æ³šéã¡ã«ããºã ãšå€æ°ã®æ³šéã«åœ¹ç«ã¡ãŸããçŸåšããããã®æ°ã¯CãC ++ã§6500ãCïŒã§900ãè¶ ããŠããŸãã
ãã®é¢æ°ãæ£ããåŒã³åºããŠããã®è匱æ§ã解決ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
syslog(LOG_DEBUG, "%s", buf);
ããã§ã¯ããã©ãŒãããæååãïŒ sãã䜿çšãããŸã ãããã«ããã syslogé¢æ°ã®åŒã³åºããå®å šã«ãªããŸãã
YtnefïŒYeraseã®TNEFã¹ããªãŒã ãªãŒããŒïŒ
Ytnefã¯ã GitHubã§å©çšå¯èœãªãªãŒãã³ãœãŒã¹ããã°ã©ã ã§ã ã ããšãã°ãOutlookã§äœæãããTNEFã¹ããªãŒã ã®ãã³ãŒãçšã«èšèšãããŠããŸãã
2017幎ã®éå»ã®æéã«ã ããã§èª¬æããå€ãã®è匱æ§ãæããã«ãªããŸããã ãã®ãªã¹ãã«èšèŒãããŠããCVEãšã³ããªã®1ã€ã CVE-2017-6298ãæ€èšããŠãã ãã ã
説æCVE-2017-6298 ïŒ1.9.1ããåã®ytnefã§åé¡ãçºèŠãããŸããã ããã¯ãã1 of 9. Null Pointer Deref / calloc return value not checkedããšããŠèª¬æãããŠãããããã«é¢é£ããŠããŸãã
NULLãã€ã³ã¿ãŒã®éåç §ãçºçããå¯èœæ§ã®ããä¿®æ£ããããã¹ãŠã®å Žæã¯ãã»ãŒåãã§ããã
vl->data = calloc(vl->size, sizeof(WORD)); temp_word = SwapWord((BYTE*)d, sizeof(WORD)); memcpy(vl->data, &temp_word, vl->size);
ãã®ãããªãã¹ãŠã®å Žæã§ãè匱æ§ã¯callocé¢æ°ã®äžé©åãªäœ¿çšã«é¢é£ä»ããããŠããŸãã èŠæ±ãããã¡ã¢ãªãããã¯ãå²ãåœãŠãããšãã§ããªãã£ãå Žåããã®é¢æ°ã¯NULLãã€ã³ã¿ãè¿ãããšãã§ããŸãã ãã ããçµæã®ãã€ã³ã¿ãŒã¯NULLã®äžçåŒã¯ãã§ãã¯ãããŸãããã callocã¯åžžã«ãŒã以å€ã®ãã€ã³ã¿ãŒãè¿ããšããèšç®ã§äœ¿çšãããŸãã ããã¯ããäžæ³šæã§ãã
PVS-Studioã¯ãã®ãããªè匱æ§ã®æ€åºã«ã©ã®ããã«å¯ŸåŠããŸããïŒ ããã¯å®å šã«èœã¡çããŠããŸãïŒã¢ãã©ã€ã¶ãŒã¯ãnullãã€ã³ã¿ãŒã§ã®äœæ¥ãæ€åºããããŸããŸãªèšºæã«ãŒã«ãå®è£ ããŠããŸãã
ç¹ã«ãäžèšã®è匱æ§ã¯èšºæã«ãŒã«V575ã䜿çšããŠæ€åºãããŸãã èŠåã¯æ¬¡ã®ãšããã§ãã
V575æœåšçãªãã«ãã€ã³ã¿ãŒã 'memcpy'é¢æ°ã«æž¡ãããŸãã æåã®åŒæ°ã調ã¹ãŸãã
ã¢ãã©ã€ã¶ãŒã¯ã callocé¢æ°ã®åŒã³åºãã«ãã£ãŠååŸãããæœåšçã«nullã®ãã€ã³ã¿ãŒãNULLäžçåŒããã§ãã¯ããã«memcpyé¢æ°ã«æž¡ãããããšãçºèŠããŸããã
ãããã£ãŠãPVS-Studioããã®è匱æ§ãçºèŠããŸããã ããããã¢ãã©ã€ã¶ãŒãã³ãŒããèšè¿°ããããã»ã¹ã§å®æçã«äœ¿çšãããŠããå Žåããã®åé¡ã¯ããŒãžã§ã³ç®¡çã·ã¹ãã ã«å ¥ãåã§ãã£ãŠãé²ãããšãã§ããŸãã...
MySQL
MySQLã¯ç¡æã®ãªã¬ãŒã·ã§ãã«ããŒã¿ããŒã¹ç®¡çã·ã¹ãã ã§ãã éåžžãMySQLã¯ããŒã«ã«ãŸãã¯ãªã¢ãŒãã¯ã©ã€ã¢ã³ãããã¢ã¯ã»ã¹ããããµãŒããŒãšããŠäœ¿çšãããŸããããã£ã¹ããªãã¥ãŒã·ã§ã³ã«ã¯ãMySQLãã¹ã¿ã³ãã¢ãã³ãââãã°ã©ã ã«å«ããããšãã§ããå éšãµãŒããŒã©ã€ãã©ãªãå«ãŸããŠããŸãã
ãã®ãããžã§ã¯ãã§çºèŠãããè匱æ§ã®1ã€ã§ããCVE-2012-2122ãæ€èšããŠãã ãã ã
CVE-2012-2122説æïŒ Oracle MySQL 5.1.xããåã®5.1.xã5.5.24ããåã®5.5.xã5.6.6ããåã®5.6.xãããã³5.1.62ããåã®MariaDB 5.1.xã®sql / password.c 5.2.xããåã®5.2.xã5.3.xããåã®5.3.6ã5.5.xããåã®5.5.xã¯ã memcmpé¢æ°ã®ç¹å®ã®å®è£ ã䜿çšããŠç¹å®ã®ç°å¢ã§å®è¡ããå Žåãåããã®ã§ç¹°ãè¿ãèªèšŒããããšã«ããèªèšŒããã€ãã¹ããããšãã§ããŸã誀ã£ããã¹ã¯ãŒããããã«ãããæ»ãå€ãæ£ãããã§ãã¯ãããªãã£ããããæçµçã«ããŒã¯ã³æ¯èŒãæåããŸãã
è匱æ§ãå«ãã³ãŒãã¯æ¬¡ã®ãšããã§ãã
typedef char my_bool; my_bool check_scramble(const char *scramble_arg, const char *message, const uint8 *hash_stage2) { .... return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE); }
memcmpé¢æ°ã®æ»ãå€ã®åã¯intã§ããã check_scrambleé¢æ°ã®æ»ãå€ã®åã¯my_bool ãå®éã«ã¯charã§ãã ãã®çµæã int㯠charã«ãã£ã¹ãããã ããã§æäžäœããããç Žæ£ãããŸãã ããã«ããã256ã®ãã¡çŽ1ã±ãŒã¹ã§ããŠãŒã¶ãŒåãç¥ã£ãŠããä»»æã®ãã¹ã¯ãŒãã§æ¥ç¶ããããšãã§ããŸããã 300åã®æ¥ç¶è©Šè¡ã«1ç§ãããããªãã£ãããããã®ä¿è·ã¯äžåšãšåããããè¯å¥œã§ãã ãã®è匱æ§ã®è©³çŽ°ã«ã€ããŠã¯ã CVE-2012-2122ããŒãžã«èšèŒãããŠãããªã³ã¯ãåç §ããŠãã ãã ã
PVS-Studioã¯ã V642蚺æã«ãŒã«ã䜿çšããŠãã®åé¡ãæ€åºããŸãã èŠåã¯æ¬¡ã®ãšããã§ãã
V642 'memcmp'é¢æ°ã®çµæã 'char'åå€æ°å ã«ä¿åããã®ã¯äžé©åã§ãã ããã°ã©ã ã®ããžãã¯ãå£ããŠãéèŠãªãããã倱ãããå¯èœæ§ããããŸãã password.c
ãã®è匱æ§ã¯PVS-Studioã䜿çšããŠçºèŠãããããšãå€æããŠããŸãã
iOS
iOSã¯ãã¢ã¡ãªã«ã®äŒç€ŸAppleã«ãã£ãŠéçºããã³è£œé ãããã¹ããŒããã©ã³ãé»åã¿ãã¬ãããããã³ããŒã¿ãã«ãã¬ãŒã€ãŒçšã®ã¢ãã€ã«ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ãã
ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããããããè匱æ§ã®1ã€ã CVE-2014-1266ãæ€èšããŠãã ãã ã 幞ããªããšã«ããããªãã¯ãã¡ã€ã³ã«ã¯ãåé¡ã®å 容ã瀺ãã³ãŒãããããŸãã
CVE-2014-1266ã®è匱æ§ã®èª¬æ ïŒApple iOS 6.xããåã®6.1.6ããã³7.xããåã®7.0.6ãApple TVã®ããŒã¿ã»ãã¥ãªãã£ã³ã³ããŒãã³ãã®ã»ãã¥ã¢ãã©ã³ã¹ããŒãæ©èœã®libsecurity_ssl / lib / sslKeyExchange.cã®SSLVerifySignedServerKeyExchangeé¢æ°6.0.2ããåã®6.xãããã³10.9.2ããåã®Apple OS X 10.9.xã¯ãTLSãµãŒããŒããŒäº€æã¡ãã»ãŒãžã®çœ²åããã§ãã¯ããŸãããããã«ãããäžéè æ»æè ãïŒ1ïŒã«ããSSLãµãŒããŒãã¹ããŒãã£ã³ã°ã§ããããã«ãªããŸãã眲åã¹ãããã«ä»»æã®ç§å¯éµã䜿çšããããïŒ2ïŒçœ²åã¹ããããçç¥ããŸãã
è匱æ§ã«ã€ãªãã£ãã³ãŒãã®æçã¯æ¬¡ã®ããã«èŠããŸããã
static OSStatus SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams, uint8_t *signature, UInt16 signatureLen) { OSStatus err; .... if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0) goto fail; if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0) goto fail; goto fail; if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0) goto fail; .... fail: SSLFreeBuffer(&signedHashes); SSLFreeBuffer(&hashCtx); return err; }
åé¡ã¯ãé£å士ã«ãã2ã€ã®gotoã¹ããŒãã¡ã³ãã§ãã ãããã®æŒç®åã®ãã¡ãæåã®æŒç®åã®ã¿ãifã¹ããŒãã¡ã³ããåç §ãã2çªç®ã®æŒç®åã¯åç §ããŸããã ãããã£ãŠãåã®æ¡ä»¶ã®å€ã«é¢ä¿ãªãã 倱æã©ãã«ãžã®ç§»è¡ãå®è¡ãããŸãã 2çªç®ã®gotoã¹ããŒãã¡ã³ãã®å®è¡ã«ããã errã¯æåããŸãã ããã«ãããæ»æè ãSSLãµãŒããŒãåœè£ ããå¯èœæ§ãçããŸããã
PVS-Studioã¯ã2ã€ã®èšºæã«ãŒã«ïŒ V640ãšV779ïŒã䜿çšããŠãã®åé¡ãæ€åºããŸãã èŠåã¯æ¬¡ã®ãšããã§ãã
- V640ã³ãŒãã®æäœããžãã¯ããã®ãã©ãŒãããã«å¯Ÿå¿ããŠããŸããã ã¹ããŒãã¡ã³ãã¯å³åŽã«ã€ã³ãã³ããããŸãããåžžã«å®è¡ãããŸãã äžæ¬åŒ§ãæ¬ èœããŠããå¯èœæ§ããããŸãã
- V779å°éäžèœã³ãŒããæ€åºãããŸããã ãšã©ãŒãååšããå¯èœæ§ããããŸã
ãããã£ãŠãã¢ãã©ã€ã¶ãŒã¯ã圌ã«ãšã£ãŠçããããšæãããããã€ãã®ããšã«ã€ããŠäžåºŠã«èŠåããŸãã
- ããã°ã©ã ã®ããžãã¯ã¯ã³ãŒãã®èšèšã«å¯Ÿå¿ããŠããŸãããã¢ã©ã€ã¡ã³ãã«ãã£ãŠå€æãããšãäž¡æ¹ã®gotoã¹ããŒãã¡ã³ãã¯ifã¹ããŒãã¡ã³ãã«å±ããŠããããã§ãããããã§ã¯ãããŸããã æåã®gotoã¹ããŒãã¡ã³ãã¯å®éã«æ¡ä»¶ã®åœ±é¿ãåããŸããã2çªç®ã®ã¹ããŒãã¡ã³ãã¯ããã§ã¯ãããŸããã
- å°éäžèœã³ãŒãã®ååšïŒ2çªç®ã®gotoã¹ããŒãã¡ã³ãã¯ç¡æ¡ä»¶ã«å®è¡ããããããããã«ç¶ãã³ãŒãã¯å®è¡ãããŸããã
ããã§ãPVS-Studioãæ£åžžã«æ©èœããããšãããããŸãã
éç解æã®å¹æçãªäœ¿çš
ãã®èšäºã®ç®çã¯ãåè¿°ããããã«ãPVS-Studioãè匱æ§æ€çŽ¢ãæ£åžžã«åŠçããããšã瀺ãããšã§ãã ãã®ç®æšãéæããããã«éžæãããã¢ãããŒãã¯ãã¢ãã©ã€ã¶ãŒãããã€ãã®æ¢ç¥ã®è匱æ§ãæ€åºããããšãå®èšŒããããšã§ãã äžèšã®è³æã¯ãéçåæã䜿çšããŠè匱æ§ãæ¢ãããšãã§ãããšããäºå®ã確èªããããã«å¿ èŠã§ããã
次ã«ããããæãå¹æçã«è¡ãæ¹æ³ã«ã€ããŠã話ãããããšæããŸãã çæ³çã«ã¯ãè匱æ§ã¯ãã®ããã«ãªãåã«çºèŠããå¿ èŠããããŸãïŒã€ãŸãã誰ããããããçºèŠããããããã©ã®ããã«æªçšãããå¯èœæ§ãããããç解ãããšãïŒã éçåæãé©åã«äœ¿çšãããšãã³ãŒãã£ã³ã°æ®µéã§ãè匱æ§ãæ€åºã§ããŸãã ãããã©ã®ããã«éæã§ãããã以äžã«èª¬æããŸãã
ã泚æ ãã®ã»ã¯ã·ã§ã³ã§ã¯ãäžè²«æ§ãä¿ã€ããã«ãããšã©ãŒããšããèšèã䜿çšããŸãã ãããããããŸã§èŠãŠããããã«ãåçŽãªãšã©ãŒã¯æœåšçãªè匱æ§ã§ããå¯èœæ§ããããŸãã å¿ããªãã§ãã ããã
äžè¬çã«ããã°ãæ©æã«æ€åºããä¿®æ£ãããã»ã©ãä¿®æ£ã³ã¹ãã¯å®ããªããŸãã 以äžã®å³ã¯ãCapers Jonesã®æžç±ãApplied Software Measurementãã®ããŒã¿ã瀺ããŠããŸãã
ã°ã©ããããããããã«ãã³ãŒãã£ã³ã°æ®µéã§çŽ85ïŒ ã®ãšã©ãŒãçºçããŸããããã®æ®µéã§ã®ä¿®æ£ã³ã¹ãã¯æå°éã§ãã åæã«ãããã°ã©ã ã³ãŒãã«ãšã©ãŒãååšããããããããä¿®æ£ããã³ã¹ãã¯çµ¶ããå¢å ããŸããã³ãŒãã£ã³ã°æ®µéã§ãšã©ãŒã®è§£æ¶ã«çŽ25ãã«ãããå ŽåããœãããŠã§ã¢è£œåã®ãªãªãŒã¹åŸããã®æ°åã¯æ°äžãã«ã«å¢å ããŸãã ãªãªãŒã¹åŸã«çºèŠãããè匱æ§ã®ã³ã¹ãã¯ã話ã䟡å€ãããããŸããã
ããããç°¡åãªçµè«ãåŸãããŸã-ãšã©ãŒãæ€åºãããŠä¿®æ£ãããã®ãæ©ããã°æ©ãã»ã©è¯ãã§ãã éçåæã®ç®çã¯ãã³ãŒãã®ãšã©ãŒãã§ããã ãæ©ãæ€åºããããšã§ãã éç解æã¯ãä»ã®ãœãããŠã§ã¢æ€èšŒããã³æ€èšŒããŒã«ã®ä»£æ¿ã§ã¯ãããŸããããããããè£å®ããŸãã
éçã¢ãã©ã€ã¶ãŒã䜿çšããå©ç¹ãæ倧åããæ¹æ³ã¯ïŒ æåã®ã«ãŒã«ã¯ãã³ãŒããå®æçã«ãã§ãã¯ããããšã§ãã çæ³çã«ã¯ããšã©ãŒã¯ããŒãžã§ã³ç®¡çã·ã¹ãã ã«çµã¿èŸŒãŸããåã«ãã³ãŒããèšè¿°ãã段éã§ãä¿®æ£ãããå¿ èŠããããŸãã
ãã ããéçºè ã®ãã·ã³ã§é²è¡äžã®ãã§ãã¯ãå®è¡ããã®ã¯äžäŸ¿ãããããŸããã ããã«ãã³ãŒãå šäœããã§ãã¯ããæäœã¯éåžžã«é·ããªãå¯èœæ§ããããç·šéåŸã®ã³ãŒãã®ããã«ãã§ãã¯ãé²ãããšãã§ããŸãã PVS-Studioã§ã¯ããã®ããã«ã€ã³ã¯ãªã¡ã³ã¿ã«åæã¢ãŒããå®è£ ãããŠãããååã®ãã«ã以éã«å€æŽ/圱é¿ãåããã³ãŒãã®ã¿ãåæã§ããŸãã ããã«ããã®æ©èœã䜿çšãããšãã¢ã»ã³ããªåŸã«åæãèªåçã«å®è¡ã§ãããããåæã®ç¬ç«ããèµ·åã«ãã£ãŠéçºè ãéªéãããããšããªããªããŸãã åæãå®äºããåŸãå€æŽããããã¡ã€ã«ã§ãšã©ãŒãæ€åºãããå Žåãããã°ã©ããŒã«é©åãªéç¥ãäžããããŸãã
ãã®ãããªæ¡ä»¶äžã§ããããŒãžã§ã³ç®¡çã·ã¹ãã ã«ãšã©ãŒãå ¥ãããšããããŸãã ãããã£ãŠãã第2ã¬ãã«ã®ä¿è·ããã€ãŸããã«ããµãŒããŒã§ã®éçã¢ãã©ã€ã¶ãŒã®äœ¿çšãå¿ èŠã§ãã ããšãã°ãã³ãŒãåæãå€éã®ãã«ãããã»ã¹ã«çµ±åããŸãã ããã«ãããå€éãååäžã«ãããžã§ã¯ããå®æçã«ãã§ãã¯ããŠãããŒãžã§ã³ç®¡çã·ã¹ãã ã«ã©ã®ãšã©ãŒãçºçãããã«é¢ããæ å ±ãååŸã§ããŸãã ãã®å Žåã®éèŠãªãã€ã³ãã¯ããã®æ¹æ³ã§æ€åºããããšã©ãŒãè¿ éã«ä¿®æ£ããå¿ èŠãããããšã§ã-ã§ããã°ããã«ç¿æ¥ã ããã§ãªããã°ãæéã®çµéãšãšãã«ã誰ãæ°ãããšã©ãŒã®åºçŸã«æ³šæãæããªããªãããã®ãããªãã§ãã¯ããæå³ããªããªããŸãã
éçºããã»ã¹ã«éçåæãå°å ¥ããããšã¯ããããžã§ã¯ãããŒãããéçºãããŠããªãå ŽåãéèŠãªã¿ã¹ã¯ã®ããã«æãããããããŸããã ãã®å Žåã«éçåæã®äœ¿çšãéå§ããæ¹æ³ã«ã€ããŠã¯ãèšäºã 倧èŠæš¡ãããžã§ã¯ãã§éçåæãè¿ éã«å®è£ ããæ¹æ³ ããåç §ããŠãã ããã
ãããã«
次ã®ããšããèŠãã§ãããšæããŸãã
- åçŽãªäžèŠãã°ã§ãã£ãŠããæ·±å»ãªè匱æ§ã«ãªãå¯èœæ§ããããŸãã
- PVS-Studioã¯ãã³ãŒãå ã®ãšã©ãŒã®æ€çŽ¢ã ãã§ãªããCWEããã³CVEã®æ€çŽ¢ãæ£åžžã«åŠçããŸãã
ãããŠãã³ãŒãã®åçŽãªãšã©ãŒã®ã³ã¹ããæéãšãšãã«å€§å¹ ã«å¢å ããå Žåãè匱æ§ã®ã³ã¹ãã«ã€ããŠèšãããšã¯ãããŸãã...ããã«ãéçåæã䜿çšããå Žåãå€ãã®è匱æ§ã¯ããŒãžã§ã³ç®¡çã·ã¹ãã ã«å ¥ãåã§ãä¿®æ£ã§ããŸã誰ããèŠã€ããŠæŽ»çšããããã«ã
æåŸã«ããããžã§ã¯ãã§PVS-Studioãè©ŠããŠã¿ãããšããå§ãããŸã-çªç¶ããããžã§ã¯ããCVEããŒã¿ããŒã¹ã«å ¥ããªãããã«ããèå³æ·±ããã®ãèŠã€ããããšãã§ããŸãã
ãµã€ããªã³ã¯
- ã»ãã¥ãªãã£ã®å°é家ã«PVS-Studioã¢ãã©ã€ã¶ãŒãæäŸããŸãã
- PVS-StudioïŒã»ãã¥ãªãã£ã®æ¬ é¥ãæ€çŽ¢ããŸãã
- ããæ©ãFreeBSDã³ãŒãã®56ã®æœåšçãªè匱æ§ãèŠã€ããæ¹æ³ ã
- PVS-StudioããŒã ã¯ãTizenãããžã§ã¯ãã«åãçµãæºåãã§ããŠããŸãã
- 倧èŠæš¡ãããžã§ã¯ãã«éç解æããã°ããçµã¿èŸŒãæ¹æ³
ãã®èšäºãè±èªåã®èŽè¡ãšå ±æãããå Žåã¯ã翻蚳ãžã®ãªã³ã¯ã䜿çšããŠãã ããïŒã»ã«ã²ã€ãŽã¡ã·ãªãšãã PVS-Studioã¯è匱æ§ã®æ€åºã«ã©ã®ããã«åœ¹ç«ã¡ãŸããïŒ
èšäºãèªãã§è³ªåããããŸããïŒ
å€ãã®å Žåãèšäºã«ã¯åã質åãå¯ããããŸãã ããã§åçãåéããŸããïŒ PVS-StudioããŒãžã§ã³2015ã«é¢ããèšäºã®èªè
ããã®è³ªåãžã®åç ã ãªã¹ããã芧ãã ããã