3.6% nan depo Python teste yo te manke erè vigil

Rezilta yo nan yon etid sou vilnerabilite nan kòd Python nan erè ki gen rapò ak itilizasyon kòrèk vigil nan kòd la te pibliye. Pwoblèm yo koze pa lefèt ke lè enimere, Python otomatikman konkaten fisèl yo nan lis la si yo pa separe pa yon vigil, epi tou trete valè a kòm yon tuple si valè a swiv pa yon vigil. Apre yo fin fè yon analiz otomatik nan 666 depo GitHub ak kòd Python, chèchè yo te idantifye pwoblèm vigil posib nan 5% nan pwojè yo etidye.

Plis enspeksyon manyèl te montre ke erè reyèl te prezan nan sèlman 24 depo (3.6%), ak rès 1.4% yo te fo pozitif (pa egzanp, yon vigil ta ka fè espre omisyon ant liy yo konkatene chemen dosye milti-liy, hash long, HTML. blòk oswa ekspresyon SQL). Li enpòtan pou remake ke pami 24 depo ak erè reyèl te gen gwo pwojè tankou Tensorflow, Google V8, Sentry, Pydata xarray, rapidpro, django-colorfield ak django-helpdesk. Sepandan, pwoblèm ak vigil yo pa espesifik nan Python epi yo souvan rekòlte nan pwojè C/C++ (egzanp dènye repare yo se LLVM, Mono, Tensorflow).

Kalite prensipal yo nan erè etidye:

  • Aksidan manke yon vigil nan lis, tuples, ak ansanm, sa ki lakòz fisèl yo dwe konkatenasyon olye pou yo entèprete kòm valè separe. Pou egzanp, nan Sentry, youn nan tès yo rate yon vigil ant fisèl "releases" ak "dekouvwi" nan lis la, ki te lakòz tcheke yon moun ki pa egziste "/releasesdiscover" okipe, olye pou yo tcheke "/releases" ak " / dekouvri" separeman.
    3.6% nan depo Python teste yo te manke erè vigil

    Yon lòt egzanp se ke yon vigil ki manke nan rapidpro te lakòz de règ diferan yo dwe fizyone sou liy 572:

    3.6% nan depo Python teste yo te manke erè vigil

  • Yon vigil ki manke nan fen yon definisyon tuple yon sèl eleman, sa ki lakòz plasman an bay yon kalite regilye olye ke yon tuple. Pou egzanp, ekspresyon "valè = (1,)" pral lakòz yon plasman nan yon varyab nan yon tuple nan yon sèl eleman, men "valè = (1)" pral lakòz yon plasman nan yon kalite nonb antye relatif. Parantèz yo nan devwa sa yo pa afekte definisyon kalite a epi yo opsyonèl, epi prezans yon tuple detèmine pa analizeur a sèlman ki baze sou prezans vigil. REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated' # yo pral bay yon kòd olye de yon tuple. ) }
  • Sitiyasyon opoze a se vigil siplemantè pandan plasman. Si yo kite yon vigil aksidantèlman nan fen yon plasman, yo pral bay yon tuple kòm valè olye de kalite abityèl la (pa egzanp, si "valè = 1," yo espesifye olye pou yo "valè = 1").

Sous: opennet.ru

Add nouvo kòmantè