Pechodau marwol diogelwch gwefan: yr hyn a ddysgom o ystadegau sganwyr bregusrwydd am y flwyddyn

Tua blwyddyn yn ôl, fe wnaethom ni yn DataLine lansio gwasanaeth i chwilio a dadansoddi gwendidau mewn cymwysiadau TG. Mae'r gwasanaeth yn seiliedig ar y datrysiad cwmwl Qualys, am weithrediad y mae dywedasom eisoes. Dros gyfnod o flwyddyn o weithio gyda'r datrysiad, fe wnaethom gynnal 291 o sganiau ar gyfer gwahanol wefannau ac ystadegau cronedig ar wendidau cyffredin mewn cymwysiadau gwe. 

Yn yr erthygl isod byddaf yn dangos i chi yn union pa dyllau yn niogelwch gwefan sydd wedi'u cuddio y tu ôl i wahanol lefelau o feirniadaeth. Dewch i ni weld pa wendidau y canfu'r sganiwr yn arbennig o aml, pam y gallent ddigwydd, a sut i amddiffyn eich hun. 

Pechodau marwol diogelwch gwefan: yr hyn a ddysgom o ystadegau sganwyr bregusrwydd am y flwyddyn

Mae Qualys yn rhannu holl wendidau cymwysiadau gwe yn dair lefel o gritigedd: isel, canolig ac uchel. Os edrychwch ar y dosbarthiad yn ôl “difrifoldeb”, mae'n ymddangos nad yw popeth mor ddrwg. Ychydig iawn o wendidau sydd â lefel uchel o gritigol, gan mwyaf i gyd yn anfeirniadol: 

Pechodau marwol diogelwch gwefan: yr hyn a ddysgom o ystadegau sganwyr bregusrwydd am y flwyddyn

Ond nid yw anfeirniadol yn golygu diniwed. Gallant hefyd achosi difrod difrifol. 

Gwendidau “anfeirniadol” uchaf

  1. Gwendidau cynnwys cymysg.

    Y safon ar gyfer diogelwch gwefan yw trosglwyddo data rhwng y cleient a'r gweinydd trwy'r protocol HTTPS, sy'n cefnogi amgryptio ac yn amddiffyn gwybodaeth rhag rhyng-gipio. 

    Mae rhai safleoedd yn defnyddio cynnwys cymysg: Trosglwyddir peth data trwy'r protocol HTTP ansicr. Dyma sut mae'n cael ei gyfleu amlaf cynnwys goddefol - gwybodaeth sy'n effeithio ar arddangosiad y wefan yn unig: lluniau, arddulliau css. Ond weithiau dyma sut mae'n cael ei drosglwyddo cynnwys gweithredol: sgriptiau sy'n rheoli ymddygiad y safle. Yn yr achos hwn, gan ddefnyddio meddalwedd arbennig, gallwch ddadansoddi gwybodaeth gyda chynnwys gweithredol yn dod o'r gweinydd, addasu eich ymatebion ar y hedfan a gwneud i'r peiriant weithio mewn ffordd na fwriadwyd gan ei grewyr. 

    Mae fersiynau mwy newydd o borwyr yn rhybuddio defnyddwyr bod gwefannau gyda chynnwys cymysg yn anniogel ac yn rhwystro'r cynnwys. Mae datblygwyr gwefannau hefyd yn derbyn rhybuddion porwr yn y consol. Er enghraifft, dyma sut mae'n edrych i mewn Firefox

    Pechodau marwol diogelwch gwefan: yr hyn a ddysgom o ystadegau sganwyr bregusrwydd am y flwyddyn

    Pam ei fod yn beryglus?: Mae ymosodwyr yn defnyddio protocol ansicr i ryng-gipio gwybodaeth defnyddwyr, disodli sgriptiau ac anfon ceisiadau i'r wefan ar ei ran. Hyd yn oed os nad yw ymwelydd safle wedi mewnbynnu data, nid yw hyn yn ei amddiffyn rhag gwe-rwydo – cael gwybodaeth gyfrinachol gan ddefnyddio dulliau twyllodrus. Er enghraifft, gan ddefnyddio sgript, gallwch ailgyfeirio'r defnyddiwr i wefan anniogel sy'n cuddio fel un sy'n gyfarwydd i'r defnyddiwr. Mewn rhai achosion, mae'r wefan faleisus yn edrych hyd yn oed yn well na'r gwreiddiol, a gall y defnyddiwr lenwi'r ffurflen ei hun a chyflwyno data cyfrinachol. 

    Yr hyn y dylai datblygwr gwe ei gofio: Hyd yn oed os yw gweinyddwr y wefan wedi gosod a ffurfweddu tystysgrif SSL/TLS, gall fod yn agored i niwed oherwydd gwall dynol. Er enghraifft, os nad ydych yn rhoi dolen gymharol ar un o'r tudalennau, ond dolen absoliwt o http, ac yn ogystal â hynny ni wnaethoch chi sefydlu ailgyfeiriadau o http i https. 

    Gallwch ganfod cynnwys cymysg ar wefan gan ddefnyddio porwr: chwiliwch god ffynhonnell y dudalen, darllenwch hysbysiadau yn y consol datblygwr. Fodd bynnag, bydd yn rhaid i'r datblygwr tincian gyda'r cod am amser hir ac yn ddiflas. Gallwch gyflymu'r broses gydag offer dadansoddi awtomataidd, er enghraifft: Gwiriad SSL, meddalwedd Lighthouse am ddim neu feddalwedd taledig Screaming Frog SEO Spider.

    Hefyd, gall y bregusrwydd godi oherwydd problemau gyda'r cod etifeddiaeth - cod a etifeddwyd. Er enghraifft, os yw rhai tudalennau'n cael eu cynhyrchu gan ddefnyddio hen dempled, nad yw'n ystyried trosglwyddo gwefannau i https.    

  2. Cwcis heb y baneri "HTTPonly" a "diogel".

    Mae'r briodwedd "HTTPOnly" yn amddiffyn cwcis rhag cael eu prosesu gan sgriptiau y mae ymosodwyr yn eu defnyddio i ddwyn data defnyddwyr. Nid yw'r faner "ddiogel" yn caniatáu i gwcis gael eu hanfon mewn testun clir. Dim ond os defnyddir y protocol HTTPS diogel i anfon y cwci y caniateir cyfathrebu. 

    Mae'r ddwy nodwedd wedi'u nodi yn y priodweddau cwci:

    Set-Cookie: Secure; HttpOnly

    Pam ei fod yn beryglus?: Os na wnaeth datblygwr y wefan nodi'r priodoleddau hyn, gallai ymosodwr ryng-gipio gwybodaeth y defnyddiwr o'r cwci a'i hecsbloetio. Os defnyddir cwcis ar gyfer dilysu ac awdurdodi, bydd yn gallu herwgipio sesiwn y defnyddiwr a chyflawni gweithredoedd ar y wefan ar ei ran. 

    Yr hyn y dylai datblygwr gwe ei gofio: Fel rheol, mewn fframweithiau poblogaidd mae'r priodoleddau hyn yn cael eu gosod yn awtomatig. Ond dal i wirio cyfluniad gweinydd gwe a gosod y faner: Set-Cookie HttpOnly; Diogel.

    Yn yr achos hwn, bydd y briodwedd “HTTPOnly” yn gwneud cwcis yn anweledig i'ch JavaScript eich hun.  

  3. Gwendidau Seiliedig ar Lwybr.

    Mae'r sganiwr yn adrodd am y fath fregusrwydd os yw'n dod o hyd i ffeil neu gyfeiriadur gwefan sy'n hygyrch i'r cyhoedd gyda gwybodaeth a allai fod yn gyfrinachol. Er enghraifft, mae'n canfod ffeiliau cyfluniad system unigol neu fynediad i'r system ffeiliau gyfan. Mae'r sefyllfa hon yn bosibl os yw hawliau mynediad wedi'u gosod yn anghywir ar y safle.

    Pam ei fod yn beryglus?: Os yw'r system ffeiliau yn “glynu,” gall ymosodwr ddisgyn i ryngwyneb y system weithredu a cheisio dod o hyd i ffolderi gyda chyfrineiriau os ydynt yn cael eu storio mewn testun clir (peidiwch â gwneud hynny!). Neu gallwch ddwyn hashes cyfrinair a grym 'n Ysgrublaidd ddyfalu'r cyfrinair, a hefyd yn ceisio codi breintiau yn y system a symud yn ddyfnach i mewn i'r seilwaith.  

    Yr hyn y dylai datblygwr gwe ei gofio: Peidiwch ag anghofio am hawliau mynediad a ffurfweddu'r llwyfan, gweinydd gwe, cymhwysiad gwe fel ei bod yn amhosibl “dianc” o'r cyfeiriadur gwe.

  4. Ffurflenni ar gyfer mewnbynnu data sensitif gyda llenwi'n awtomatig wedi'i alluogi.

    Os yw defnyddiwr yn llenwi ffurflenni ar wefannau yn aml, mae eu porwr yn storio'r wybodaeth hon gan ddefnyddio'r nodwedd llenwi awtomatig. 

    Gall ffurflenni ar wefannau gynnwys meysydd gyda gwybodaeth sensitif, megis cyfrineiriau neu rifau cardiau credyd. Ar gyfer meysydd o'r fath, mae'n werth analluogi swyddogaeth llenwi ffurflenni ar y wefan ei hun. 

    Pam ei fod yn beryglus?: Os yw porwr y defnyddiwr yn storio gwybodaeth sensitif, gall ymosodwr ei rhyng-gipio yn ddiweddarach, er enghraifft trwy we-rwydo. Yn y bôn, mae datblygwr gwe sydd wedi anghofio am y naws hwn yn sefydlu ei ddefnyddwyr. 

    Yr hyn y dylai datblygwr gwe ei gofio: Yn yr achos hwn, mae gennym wrthdaro clasurol: cyfleustra vs diogelwch. Os yw datblygwr gwe yn meddwl am brofiad y defnyddiwr, gall ddewis awtolenwi yn ymwybodol. Er enghraifft, os yw'n bwysig dilyn Canllawiau Hygyrchedd Cynnwys Gwe – argymhellion ar gyfer hygyrchedd cynnwys i ddefnyddwyr ag anableddau. 

    Ar gyfer y rhan fwyaf o borwyr, gallwch analluogi awtogwblhau gyda'r briodwedd autocompete="off", er enghraifft:

     <body>
        <form action="/cy/form/submit" method="get" autocomplete="off">
          <div>
            <input type="text" placeholder="First Name">
          </div>
          <div>
            <input type="text" id="lname" placeholder="Last Name" autocomplete="on">
          </div>
          <div>
            <input type="number" placeholder="Credit card number">
          </div>
          <input type="submit">
        </form>
      </body>

    Ond ni fydd yn gweithio i Chrome. Mae JavaScript yn osgoi hyn, a gellir dod o hyd i amrywiad o'r rysáit yma

  5. Nid yw pennyn X-Frame-Options wedi'i osod yng nghod y wefan. 

    Mae'r pennawd hwn yn effeithio ar ffrâm, iframe, mewnosod, neu dagiau gwrthrych. Gyda'i help, gallwch chi wahardd yn llwyr ymgorffori'ch gwefan y tu mewn i ffrâm. I wneud hyn, mae angen i chi nodi gwerth X-Frame-Options: gwadu. Neu gallwch nodi X-Frame-Options: sameorigin, yna bydd ymgorffori mewn iframe ar gael ar eich parth yn unig.

    Pam ei fod yn beryglus?: Gellir defnyddio absenoldeb pennawd o'r fath ar safleoedd maleisus i clicio. Ar gyfer yr ymosodiad hwn, mae'r ymosodwr yn creu ffrâm dryloyw ar ben y botymau ac yn twyllo'r defnyddiwr. Er enghraifft: mae sgamwyr yn fframio tudalennau rhwydweithio cymdeithasol ar wefan. Mae'r defnyddiwr yn meddwl ei fod yn clicio botwm ar y wefan hon. Yn lle hynny, mae'r clic yn cael ei rhyng-gipio ac anfonir cais y defnyddiwr i'r rhwydwaith cymdeithasol lle mae sesiwn weithredol. Dyma sut mae ymosodwyr yn anfon sbam ar ran y defnyddiwr neu'n ennill tanysgrifwyr a hoff. 

    Os na fyddwch yn analluogi'r nodwedd hon, gall ymosodwr osod botwm eich cais ar safle maleisus. Efallai y bydd ganddo ddiddordeb yn eich rhaglen atgyfeirio neu'ch defnyddwyr.  

    Yr hyn y dylai datblygwr gwe ei gofio: Gall y bregusrwydd ddigwydd os gosodir X-Frame-Options gyda gwerth gwrthdaro ar y gweinydd gwe neu'r balancer llwyth. Yn yr achos hwn, bydd y gweinydd a'r balancer yn ailysgrifennu'r pennawd yn syml, gan fod ganddynt flaenoriaeth uwch o'i gymharu â'r cod backend.  

    Bydd y gwerthoedd gwadu a sameorigin ​​y pennawd X-Frame-Options yn ymyrryd â gweithrediad y gwyliwr gwe Yandex. Er mwyn caniatáu defnyddio iframes ar gyfer y gwyliwr gwe, mae angen i chi ysgrifennu rheol ar wahân yn y gosodiadau. Er enghraifft, ar gyfer nginx gallwch ei ffurfweddu fel hyn:

    http{
    ...
     map $http_referer $frame_options {
     "~webvisor.com" "ALLOW-FROM http://webvisor.com";
     default "SAMEORIGIN";
     }
     add_header X-Frame-Options $frame_options;
    ...
    }
    
    

  6. Gwendidau PRSSI (mewnforio taflen arddull sy'n berthnasol i Lwybr).  

    Mae hyn yn fregusrwydd yn arddull y safle. Mae'n digwydd os defnyddir dolenni cymharol fel href="/cy/somefolder/styles.css/" i gyrchu ffeiliau arddull. Bydd ymosodwr yn manteisio ar hyn os bydd yn dod o hyd i ffordd i ailgyfeirio'r defnyddiwr i dudalen faleisus. Bydd y dudalen yn mewnosod dolen gymharol yn ei url ac yn efelychu galwad arddulliau. Byddwch yn cael cais fel badsite.ru/…/somefolder/styles.css/, a all berfformio gweithredoedd maleisus dan gochl arddull. 

    Pam ei fod yn beryglus?: Gallai twyllwr fanteisio ar y bregusrwydd hwn os bydd yn dod o hyd i dwll diogelwch arall. O ganlyniad, mae'n bosibl dwyn data defnyddwyr o gwcis neu docynnau.

    Yr hyn y dylai datblygwr gwe ei gofio: Gosodwch y pennawd X-Content-Type-Options i: nosniff. Yn yr achos hwn, bydd y porwr yn gwirio'r math o gynnwys ar gyfer yr arddulliau. Os yw'r math yn wahanol i destun/css, bydd y porwr yn rhwystro'r cais.

Gwendidau critigol

  1. Mae tudalen gyda maes cyfrinair yn cael ei drosglwyddo o'r gweinydd dros sianel anniogel (mae ffurflen HTML sy'n cynnwys maes(iau) cyfrinair yn cael ei chyflwyno dros HTTP).

    Mae ymateb y gweinydd dros sianel heb ei hamgryptio yn agored i ymosodiadau “Dyn yn y canol”. Gall ymosodwr ryng-gipio traffig a lletem ei hun rhwng y cleient a'r gweinydd wrth i'r dudalen deithio o'r gweinydd i'r cleient. 

    Pam ei fod yn beryglus?: Bydd y twyllwr yn gallu disodli'r dudalen ac anfon ffurflen at y defnyddiwr ar gyfer data cyfrinachol, a fydd yn mynd at weinydd yr ymosodwr. 

    Yr hyn y dylai datblygwr gwe ei gofio: Mae rhai safleoedd yn anfon cod un-amser i ddefnyddwyr trwy e-bost/ffôn yn lle cyfrinair. Yn yr achos hwn, nid yw'r bregusrwydd mor hanfodol, ond bydd y mecanwaith yn cymhlethu bywydau defnyddwyr.

  2. Anfon ffurflen gyda mewngofnodi a chyfrinair dros sianel ansicr (Ni chyflwynir Ffurflen Mewngofnodi Trwy HTTPS).

    Yn yr achos hwn, anfonir ffurflen gyda mewngofnodi a chyfrinair gan y defnyddiwr i'r gweinydd trwy sianel heb ei hamgryptio.

    Pam ei fod yn beryglus?: Yn wahanol i'r achos blaenorol, mae hyn eisoes yn agored i niwed difrifol. Mae'n haws rhyng-gipio data sensitif oherwydd nid oes angen i chi hyd yn oed ysgrifennu cod i'w wneud. 

  3. Defnyddio llyfrgelloedd JavaScript gyda gwendidau hysbys.

    Yn ystod y sgan, y llyfrgell a ddefnyddiwyd fwyaf oedd jQuery gyda nifer helaeth o fersiynau. Mae gan bob fersiwn o leiaf un, neu hyd yn oed fwy, gwendidau hysbys. Gall yr effaith fod yn wahanol iawn yn dibynnu ar natur y bregusrwydd.

    Pam ei fod yn beryglus?: Mae yna gampau ar gyfer gwendidau hysbys, er enghraifft:

    Pechodau marwol diogelwch gwefan: yr hyn a ddysgom o ystadegau sganwyr bregusrwydd am y flwyddyn

    Yr hyn y dylai datblygwr gwe ei gofio: Dychwelyd i'r cylch yn rheolaidd: chwiliwch am wendidau hysbys - trwsio - gwirio. Os ydych yn defnyddio hen lyfrgelloedd yn fwriadol, er enghraifft i gefnogi porwyr hŷn neu i arbed arian, edrychwch am gyfle i drwsio bregusrwydd hysbys. 

  4. Sgriptio traws-safle (XSS). 
    Mae Sgriptio Traws-Safle (XSS), neu sgriptio traws-safle, yn ymosodiad ar raglen we sy'n arwain at gyflwyno meddalwedd maleisus i'r gronfa ddata. Os yw Qualys yn canfod bod mor agored i niwed, mae'n golygu y gall ymosodwr posibl neu eisoes wedi cyflwyno ei sgript js ei hun i god y wefan i gyflawni gweithredoedd maleisus.

    XSS wedi'i storio yn fwy peryglus, gan fod y sgript wedi'i fewnosod ar y gweinydd a'i weithredu bob tro y bydd y dudalen ymosod yn cael ei hagor yn y porwr.

    XSS wedi'i adlewyrchu haws i'w chyflawni gan y gall sgript faleisus gael ei chwistrellu i mewn i gais HTTP. Bydd y cais yn derbyn cais HTTP, ni fydd yn dilysu'r data, bydd yn ei becynnu, a'i anfon ar unwaith. Os yw ymosodwr yn rhyng-gipio traffig ac yn mewnosod sgript tebyg

    <script>/*+что+то+плохое+*/</script> 

    yna bydd cais maleisus yn cael ei anfon ar ran y cleient.

    Enghraifft drawiadol o XSS: sniffers js sy'n efelychu tudalennau ar gyfer mynd i mewn i CVC, dyddiad dod i ben cerdyn, ac ati. 

    Yr hyn y dylai datblygwr gwe ei gofio: Yn y pennawd Cynnwys-Diogelwch-Polisi, defnyddiwch y priodoledd script-src i orfodi'r porwr cleient i lawrlwytho a gweithredu cod o ffynhonnell ddibynadwy yn unig. Er enghraifft, mae sgript-src 'hunan' yn rhestru'r holl sgriptiau o'n gwefan yn unig. 
    Yr arfer gorau yw cod Inline: caniatewch javascript mewnol yn unig gan ddefnyddio'r gwerth mewn-lein anniogel. Mae'r gwerth hwn yn caniatáu defnyddio js/css mewnol, ond nid yw'n gwahardd cynnwys ffeiliau js. Ar y cyd â sgript-src 'self' rydym yn analluogi sgriptiau allanol rhag cael eu gweithredu.

    Gwnewch yn siŵr eich bod yn logio popeth gan ddefnyddio report-uri ac edrychwch ar ymdrechion i'w roi ar waith ar y wefan.

  5. pigiadau SQL.
    Mae'r bregusrwydd yn dynodi'r posibilrwydd o chwistrellu cod SQL i wefan sy'n cyrchu cronfa ddata'r wefan yn uniongyrchol. Mae chwistrelliad SQL yn bosibl os na chaiff data gan y defnyddiwr ei sgrinio: nid yw'n cael ei wirio i sicrhau ei fod yn gywir ac fe'i defnyddir ar unwaith yn yr ymholiad. Er enghraifft, mae hyn yn digwydd os nad yw ffurflen ar wefan yn gwirio a yw'r mewnbwn yn cyfateb i'r math o ddata. 

    Pam ei fod yn beryglus?: Os bydd ymosodwr yn mewnbynnu ymholiad SQL i'r ffurflen hon, gall chwalu'r gronfa ddata neu ddatgelu gwybodaeth gyfrinachol. 

    Yr hyn y dylai datblygwr gwe ei gofio: Peidiwch ag ymddiried yn yr hyn a ddaw o'r porwr. Mae angen i chi amddiffyn eich hun ar ochr y cleient ac ochr y gweinydd. 

    Ar ochr y cleient, ysgrifennwch ddilysiad maes gan ddefnyddio JavaScript. 

    Mae swyddogaethau adeiledig mewn fframweithiau poblogaidd hefyd yn helpu i ddianc rhag cymeriadau amheus ar y gweinydd. Argymhellir hefyd defnyddio ymholiadau cronfa ddata paramedr ar y gweinydd.

    Penderfynwch ble yn union y mae'r rhyngweithio â'r gronfa ddata yn digwydd ar y rhaglen we. 

    Mae rhyngweithio yn digwydd pan fyddwn yn derbyn unrhyw wybodaeth: cais gydag ID (newid id), creu defnyddiwr newydd, sylw newydd, neu gofnodion newydd yn y gronfa ddata. Dyma lle gall pigiadau SQL ddigwydd. Hyd yn oed os byddwn yn dileu cofnod o'r gronfa ddata, mae chwistrelliad SQL yn bosibl.

Argymhellion cyffredinol

Peidiwch ag ailddyfeisio'r olwyn - defnyddiwch fframweithiau profedig. Yn gyffredinol, mae fframweithiau poblogaidd yn fwy sicr. Ar gyfer .NET - ASP.NET MVC ac ASP.NET Core, ar gyfer Python - Django neu Flask, ar gyfer Ruby - Ruby on Rails, ar gyfer PHP - Symfony, Laravel, Yii, ar gyfer JavaScript - Node.JS-Express.js, ar gyfer Java - MVC y Gwanwyn.

Dilynwch ddiweddariadau gwerthwr a'u diweddaru'n rheolaidd. Byddant yn dod o hyd i fregusrwydd, yna'n ysgrifennu camfanteisio, yn sicrhau ei fod ar gael i'r cyhoedd, a bydd popeth yn digwydd eto. Tanysgrifio i ddiweddariadau i fersiynau sefydlog gan y gwerthwr meddalwedd.

Gwiriwch hawliau mynediad. Ar ochr y gweinydd, dylech drin eich cod bob amser fel pe bai, o'r cyntaf i'r llythyr olaf, wedi'i ysgrifennu gan eich gelyn mwyaf cas, sydd am dorri'ch gwefan, yn torri cywirdeb eich data. Ar ben hynny, weithiau mae hyn yn wir.

Defnyddiwch glonau, safleoedd prawf, ac yna eu defnyddio ar gyfer cynhyrchu. Bydd hyn yn helpu, yn gyntaf, i osgoi camgymeriadau a chamgymeriadau mewn amgylchedd cynhyrchiol: mae amgylchedd cynhyrchiol yn dod ag arian, mae amgylchedd cynhyrchiol syml yn hollbwysig. Wrth ychwanegu, trwsio neu gau unrhyw broblem, mae'n werth gweithio mewn amgylchedd prawf, yna gwirio'r ymarferoldeb a'r gwendidau a ddarganfuwyd, ac yna cynllunio i weithio gyda'r amgylchedd cynhyrchu. 

Diogelwch eich cais gwe gyda Wal dân cymhwysiad gwe ac integreiddio adroddiadau o'r sganiwr bregusrwydd ag ef. Er enghraifft, mae DataLine yn defnyddio Qualys a FortiWeb fel bwndel o wasanaethau.

Ffynhonnell: hab.com

Ychwanegu sylw