Сайт қауіпсіздігінің өлімге әкелетін күнәлары: бір жылдағы осалдық сканерінің статистикасынан не білдік

Шамамен бір жыл бұрын біз DataLine-де іске қостық қызмет көрсету АТ қолданбаларындағы осалдықтарды іздеу және талдау. Қызмет Qualys бұлттық шешіміне негізделген, оның жұмысы туралы бұрын айттық. Шешіммен жұмыс істеген бір жыл ішінде біз әртүрлі сайттарға 291 сканерлеу жүргіздік және веб-қосымшалардағы жалпы осалдықтар туралы статистиканы жинақтадық. 

Төмендегі мақалада мен сізге веб-сайт қауіпсіздігіндегі қандай саңылаулар сыниліктің әртүрлі деңгейлерінің артында жасырылғанын көрсетемін. Сканер қандай осалдықтарды жиі анықтайтынын, олар неліктен пайда болуы мүмкін екенін және өзіңізді қалай қорғау керектігін көрейік. 

Сайт қауіпсіздігінің өлімге әкелетін күнәлары: бір жылдағы осалдық сканерінің статистикасынан не білдік

Qualys веб-бағдарламаның барлық осалдықтарын сыниліктің үш деңгейіне бөледі: төмен, орташа және жоғары. Егер сіз «ауырлық» бойынша бөлуге қарасаңыз, бәрі соншалықты жаман емес сияқты. Сынилік деңгейі жоғары осалдықтар аз, негізінен барлығы сыни емес: 

Сайт қауіпсіздігінің өлімге әкелетін күнәлары: бір жылдағы осалдық сканерінің статистикасынан не білдік

Бірақ сыншылдық зиянсыз дегенді білдірмейді. Олар сондай-ақ елеулі зақым келтіруі мүмкін. 

Үздік «сыни емес» осалдықтар

  1. Аралас мазмұнның осалдықтары.

    Веб-сайт қауіпсіздігінің стандарты шифрлауды қолдайтын және ақпаратты ұстап қалудан қорғайтын HTTPS протоколы арқылы клиент пен сервер арасында деректерді беру болып табылады. 

    Кейбір сайттар пайдаланады аралас мазмұн: Кейбір деректер қауіпті HTTP протоколы арқылы тасымалданады. Көбінесе осылай жеткізіледі пассивті мазмұн – тек сайттың дисплейіне әсер ететін ақпарат: суреттер, CSS стильдері. Бірақ кейде ол осылай беріледі белсенді мазмұн: сайт әрекетін басқаратын сценарийлер. Бұл жағдайда арнайы бағдарламалық құралды пайдалана отырып, сіз серверден келетін белсенді мазмұны бар ақпаратты талдай аласыз, жауаптарыңызды жылдам өзгерте аласыз және құрылғыны жасаушылар ойламаған түрде жұмыс істей аласыз. 

    Браузерлердің жаңа нұсқалары пайдаланушыларға аралас мазмұны бар сайттардың қауіпті екенін ескертеді және мазмұнды блоктайды. Веб-сайт әзірлеушілері консольде браузер ескертулерін де алады. Мысалы, ол осылай көрінеді Firefox

    Сайт қауіпсіздігінің өлімге әкелетін күнәлары: бір жылдағы осалдық сканерінің статистикасынан не білдік

    Қауіпті: Шабуылшылар пайдаланушы ақпаратын ұстап алу, сценарийлерді ауыстыру және оның атынан сайтқа сұрау жіберу үшін қауіпті протоколды пайдаланады. Тіпті сайтқа кіруші деректерді енгізбесе де, бұл оны одан қорғамайды фишинг – алаяқтық әдістерді қолдана отырып, құпия ақпаратты алу. Мысалы, сценарийді пайдалану арқылы пайдаланушыны пайдаланушыға таныс сайт ретінде көрсететін қауіпті сайтқа қайта бағыттауға болады. Кейбір жағдайларда зиянды сайт түпнұсқадан да жақсы көрінеді және пайдаланушы пішінді өзі толтырып, құпия деректерді жібере алады. 

    Веб-әзірлеуші ​​нені есте сақтауы керек: Сайт әкімшісі SSL/TLS сертификатын орнатып, конфигурациялаған болса да, адам қателігіне байланысты осалдық пайда болуы мүмкін. Мысалы, егер сіз беттердің бірінде салыстырмалы сілтеме емес, http-дан абсолютті сілтеме қойсаңыз, сонымен қатар сіз http-ден https-ке қайта бағыттауларды орнатпасаңыз. 

    Браузер арқылы сайттағы аралас мазмұнды анықтауға болады: беттің бастапқы кодын іздеңіз, әзірлеуші ​​консоліндегі хабарландыруларды оқыңыз. Дегенмен, әзірлеушіге кодпен ұзақ уақыт және жалықтырып отыруға тура келеді. Автоматтандырылған талдау құралдарымен процесті жылдамдатуға болады, мысалы: SSL тексеру, ақысыз Lighthouse бағдарламалық құралы немесе ақылы бағдарламалық құрал Screaming Frog SEO Spider.

    Сондай-ақ, осалдық мұраға алынған бұрынғы кодқа қатысты мәселелерге байланысты туындауы мүмкін. Мысалы, кейбір беттер сайттардың https-қа ауысуын ескермейтін ескі үлгіні пайдаланып жасалса.    

  2. "Тек HTTP" және "қауіпсіз" жалаушалары жоқ cookie файлдары.

    "HTTPOnly" төлсипаты cookie файлдарын шабуылдаушылар пайдаланушы деректерін ұрлау үшін пайдаланатын сценарийлер арқылы өңдеуден қорғайды. «Қауіпсіз» жалауша cookie файлдарын анық мәтінде жіберуге мүмкіндік бермейді. Қауіпсіз HTTPS протоколы cookie файлдарын жіберу үшін пайдаланылған жағдайда ғана байланысқа рұқсат етіледі. 

    Екі атрибут cookie сипаттарында көрсетілген:

    Set-Cookie: Secure; HttpOnly

    Қауіпті: Егер сайт әзірлеушісі бұл атрибуттарды көрсетпесе, шабуылдаушы cookie файлынан пайдаланушының ақпаратын ұстап алып, оны пайдалануы мүмкін. Егер cookie файлдары аутентификация және авторизация үшін пайдаланылса, ол пайдаланушының сеансын басып алып, оның атынан сайтта әрекеттерді орындай алады. 

    Веб-әзірлеуші ​​нені есте сақтауы керек: Әдетте, танымал фреймворктерде бұл атрибуттар автоматты түрде орнатылады. Бірақ бәрібір веб-сервер конфигурациясын тексеріп, жалаушаны орнатыңыз: Set-Cookie HttpOnly; Қауіпсіз.

    Бұл жағдайда «HTTPOnly» төлсипаты cookie файлдарын өзіңіздің JavaScript-ке көрінбейтін етеді.  

  3. Жолға негізделген осалдықтар.

    Сканер ықтимал құпия ақпараты бар жалпыға қолжетімді файлды немесе веб-сайт каталогын тапса, мұндай осалдық туралы хабарлайды. Мысалы, ол жеке жүйе конфигурация файлдарын немесе бүкіл файлдық жүйеге кіруді анықтайды. Бұл жағдай сайтта кіру құқығы дұрыс орнатылмаған жағдайда мүмкін болады.

    Қауіпті: Егер файлдық жүйе «жабысып» қалса, шабуылдаушы операциялық жүйе интерфейсіне түсіп, егер олар анық мәтінде сақталған болса, құпия сөздері бар қалталарды табуға тырысуы мүмкін (бұлай етпеңіз!). Немесе құпия сөз хэштерін ұрлауға және құпия сөзді дөрекі түрде қолдануға болады, сонымен қатар жүйеде артықшылықтарды көтеруге және инфрақұрылымға тереңірек өтуге тырысуға болады.  

    Веб-әзірлеуші ​​нені есте сақтауы керек: Қол жеткізу құқықтарын ұмытпаңыз және платформаны, веб-серверді, веб-қосымшаны веб-каталогтан «қашып кету» мүмкін болмайтындай етіп конфигурациялаңыз.

  4. Автоматты толтыру қосылған құпия деректерді енгізуге арналған пішіндер.

    Пайдаланушы веб-сайттардағы пішіндерді жиі толтырса, оның шолғышы бұл ақпаратты автотолтыру мүмкіндігін пайдаланып сақтайды. 

    Веб-сайттардағы пішіндер құпия сөздер немесе несие картасы нөмірлері сияқты құпия ақпараты бар өрістерді қамтуы мүмкін. Мұндай өрістер үшін сайттың өзінде пішінді автотолтыру функциясын өшірген жөн. 

    Қауіпті: Егер пайдаланушының шолғышы құпия ақпаратты сақтаса, шабуылдаушы оны кейін ұстай алады, мысалы, фишинг арқылы. Негізінде, бұл нюансты ұмытып кеткен веб-әзірлеуші ​​өз пайдаланушыларын орнатуда. 

    Веб-әзірлеуші ​​нені есте сақтауы керек: Бұл жағдайда бізде классикалық қайшылық бар: ыңғайлылық пен қауіпсіздік. Егер веб-әзірлеуші ​​пайдаланушы тәжірибесі туралы ойласа, ол саналы түрде автотолтыруды таңдай алады. Мысалы, ұстану маңызды болса Веб-мазмұнға қол жетімділік жөніндегі нұсқаулық – мүмкіндіктері шектеулі пайдаланушылар үшін мазмұнның қолжетімділігі бойынша ұсыныстар. 

    Көптеген браузерлер үшін autocompete="off" атрибутымен автотолтыруды өшіруге болады, мысалы:

     <body>
        <form action="/kk/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>

    Бірақ ол Chrome үшін жұмыс істемейді. Бұл JavaScript арқылы айналып өтті, рецепттің нұсқасын табуға болады осында

  5. X-Frame-Options тақырыбы сайт кодында орнатылмаған. 

    Бұл тақырып кадрға, iframe, ендіру немесе нысан тегтеріне әсер етеді. Оның көмегімен сіз өз сайтыңызды жақтаудың ішіне ендіруге толығымен тыйым сала аласыз. Ол үшін X-Frame-Options: deny мәнін көрсету керек. Немесе X-Frame-Options: sameorigin параметрін көрсетуге болады, содан кейін iframe ішіне ендіру тек сіздің доменіңізде қолжетімді болады.

    Қауіпті: Мұндай тақырыптың болмауы зиянды сайттарда қолданылуы мүмкін кликтеу. Бұл шабуыл үшін шабуылдаушы түймелердің үстіне мөлдір жақтауды жасайды және пайдаланушыны алдайды. Мысалы: алаяқтар веб-сайттағы әлеуметтік желі беттерін жақтайды. Пайдаланушы бұл сайттағы түймені басып жатыр деп ойлайды. Оның орнына басу тоқтатылады және пайдаланушының сұрауы белсенді сеанс бар әлеуметтік желіге жіберіледі. Осылайша шабуылдаушылар пайдаланушы атынан спам жібереді немесе жазылушылар мен ұнатулар жинайды. 

    Бұл мүмкіндікті өшірмесеңіз, шабуылдаушы қолданба түймеңізді зиянды сайтқа орналастыра алады. Ол сіздің жолдама бағдарламаңызға немесе пайдаланушыларыңызға қызығушылық танытуы мүмкін.  

    Веб-әзірлеуші ​​нені есте сақтауы керек: X-Frame-Options қайшы мәні бар веб-серверде немесе жүктеме балансында орнатылған болса, осалдық орын алуы мүмкін. Бұл жағдайда сервер мен баланстауыш жай ғана тақырыпты қайта жазады, өйткені олардың серверлік кодпен салыстырғанда басымдығы жоғары.  

    X-Frame-Options тақырыбының теріске шығару және бірдей бастапқы мәндері Yandex веб-қарау құралының жұмысына кедергі келтіреді. Веб-қарау құралы үшін iframe файлдарын пайдалануға рұқсат беру үшін параметрлерде бөлек ереже жазу керек. Мысалы, nginx үшін оны келесідей конфигурациялауға болады:

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

  6. PRSSI (Path-relative stylesheet import) осалдықтары.  

    Бұл сайттың сәндеуіндегі осалдық. Мәнер файлдарына қатынасу үшін href="/kk/somefolder/styles.css/" сияқты салыстырмалы сілтемелер пайдаланылса, ол орын алады. Шабуылдаушы пайдаланушыны зиянды бетке қайта бағыттау жолын тапса, мұны пайдаланады. Бет өзінің url мекенжайына салыстырмалы сілтемені енгізеді және стильдер шақыруын имитациялайды. Сізге badsite.ru/…/somefolder/styles.css/ сияқты сұрау келеді, ол стиль атын жамылған зиянды әрекеттерді орындай алады. 

    Қауіпті: Алаяқ басқа қауіпсіздік саңылауын тапса, бұл осалдықты пайдалана алады. Нәтижесінде cookie файлдарынан немесе токендерден пайдаланушы деректерін ұрлауға болады.

    Веб-әзірлеуші ​​нені есте сақтауы керек: X-Content-Type-Options тақырыбын келесіге орнатыңыз: nosniff. Бұл жағдайда браузер мәнерлер үшін мазмұн түрін тексереді. Егер түрі мәтін/css түрінен басқа болса, браузер сұрауды блоктайды.

Критикалық осалдықтар

  1. Құпия сөз өрісі бар бет серверден қауіпті арна арқылы тасымалданады (HTML пішіні HTTP арқылы құпия сөз өріс(тері) бар).

    Шифрланбаған арна арқылы серверден жауап «Ортадағы адам» шабуылдарына осал. Шабуылдаушы трафикті ұстай алады және бет серверден клиентке өткен кезде клиент пен сервер арасында сына алады. 

    Қауіпті: Алаяқ бетті ауыстыра алады және пайдаланушыға шабуылдаушының серверіне баратын құпия деректердің пішінін жібере алады. 

    Веб-әзірлеуші ​​нені есте сақтауы керек: Кейбір сайттар пайдаланушыларға құпия сөздің орнына электрондық пошта/телефон арқылы бір реттік кодты жібереді. Бұл жағдайда осалдық соншалықты маңызды емес, бірақ механизм пайдаланушылардың өмірін қиындатады.

  2. Қауіпсіз арна арқылы логин мен құпия сөзбен пішінді жіберу (Кіру пішіні HTTPS арқылы жіберілмейді).

    Бұл жағдайда пайдаланушыдан серверге шифрланбаған арна арқылы логин мен пароль бар пішін жіберіледі.

    Қауіпті: Алдыңғы жағдайға қарағанда, бұл өте маңызды осалдық. Құпия деректерді ұстап алу оңайырақ, себебі оны орындау үшін код жазудың қажеті жоқ. 

  3. Белгілі осалдықтары бар JavaScript кітапханаларын пайдалану.

    Сканерлеу кезінде ең көп пайдаланылған кітапхана нұсқаларының кең санымен jQuery болды. Әрбір нұсқада кем дегенде бір немесе одан да көп белгілі осалдықтар бар. Әсер осалдықтың сипатына байланысты өте әртүрлі болуы мүмкін.

    Қауіпті: Белгілі осалдықтар үшін эксплуатациялар бар, мысалы:

    Сайт қауіпсіздігінің өлімге әкелетін күнәлары: бір жылдағы осалдық сканерінің статистикасынан не білдік

    Веб-әзірлеуші ​​нені есте сақтауы керек: Циклге жүйелі түрде оралу: белгілі осалдықтарды іздеу - түзету - тексеру. Бұрынғы кітапханаларды, мысалы, ескі браузерлерді қолдау немесе ақша үнемдеу үшін әдейі пайдалансаңыз, белгілі осалдықты түзету мүмкіндігін іздеңіз. 

  4. Сайтаралық сценарий (XSS). 
    Cross-Site Scripting (XSS) немесе кросс-сайт сценарийі – дерекқорға зиянды бағдарламаның енгізілуіне әкелетін веб-бағдарламаға жасалған шабуыл. Егер Qualys мұндай осалдықты тапса, бұл әлеуетті шабуылдаушы зиянды әрекеттерді орындау үшін сайт кодына өзінің JS сценарийін енгізе алатынын немесе енгізгенін білдіреді.

    Сақталған XSS қауіптірек, өйткені сценарий серверге ендірілген және браузерде шабуыл жасалған бет ашылған сайын орындалады.

    Шағылысқан XSS зиянды сценарий HTTP сұрауына енгізілуі мүмкін болғандықтан орындау оңайырақ. Қолданба HTTP сұрауын алады, деректерді тексермейді, оны буып, дереу жібереді. Егер шабуылдаушы трафикті тоқтатып, сияқты сценарийді енгізсе

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

    содан кейін клиент атынан зиянды сұрау жіберіледі.

    XSS-тің жарқын мысалы: CVC, картаның жарамдылық мерзімі және т.б. енгізуге арналған беттерді имитациялайтын js sniffers. 

    Веб-әзірлеуші ​​нені есте сақтауы керек: Content-Security-Policy тақырыбында клиент шолғышын тек сенімді көзден кодты жүктеп алуға және орындауға мәжбүрлеу үшін script-src төлсипатын пайдаланыңыз. Мысалы, script-src 'self' тек біздің сайттағы барлық сценарийлерді ақ тізімге қосады. 
    Ең жақсы тәжірибе - кірістірілген код: тек қауіпті кірістірілген мәнді пайдаланып кірістірілген JavaScript рұқсатын беріңіз. Бұл мән кірістірілген js/css пайдалануға мүмкіндік береді, бірақ js файлдарын қосуға тыйым салмайды. script-src «self» тіркесімімен біз сыртқы сценарийлердің орындалуын өшіреміз.

    report-uri арқылы барлығын журналға енгізіп, оны сайтқа енгізу әрекеттерін қараңыз.

  5. SQL инъекциялары.
    Осалдық веб-сайттың дерекқорына тікелей кіретін веб-сайтқа SQL кодын енгізу мүмкіндігін көрсетеді. SQL инъекциясы, егер пайдаланушының деректері тексерілмесе мүмкін болады: ол дұрыстығы тексерілмейді және сұрауда бірден пайдаланылады. Мысалы, бұл веб-сайттағы пішін енгізу деректер түріне сәйкес келетінін тексермейтін болса орын алады. 

    Қауіпті: Егер шабуылдаушы осы пішінге SQL сұрауын енгізсе, ол дерекқорды бұзуы немесе құпия ақпаратты ашуы мүмкін. 

    Веб-әзірлеуші ​​нені есте сақтауы керек: Браузерден келетін нәрсеге сенбеңіз. Сіз өзіңізді клиент жағынан да, сервер жағынан да қорғауыңыз керек. 

    Клиент жағында JavaScript арқылы өрісті тексеруді жазыңыз. 

    Танымал жақтаулардағы кірістірілген функциялар сервердегі күдікті таңбалардан құтылуға да көмектеседі. Сондай-ақ серверде параметрленген дерекқор сұрауларын пайдалану ұсынылады.

    Веб-бағдарламада дерекқормен өзара әрекеттесу нақты қай жерде орындалатынын анықтаңыз. 

    Өзара әрекеттесу біз кез келген ақпаратты алған кезде пайда болады: идентификаторы бар сұрау (id өзгерту), жаңа пайдаланушыны құру, жаңа түсініктеме немесе дерекқордағы жаңа жазбалар. Бұл жерде SQL инъекциялары орын алуы мүмкін. Дерекқордан жазбаны жойсақ та, SQL инъекциясы мүмкін.

Жалпы ұсынымдар

Дөңгелекті қайта ойлап таппаңыз - дәлелденген рамкаларды пайдаланыңыз. Әдетте, танымал фреймворктар қауіпсізірек. .NET үшін - ASP.NET MVC және ASP.NET Core, Python үшін - Django немесе Flask, Ruby үшін - Ruby on Rails, PHP үшін - Symfony, Laravel, Yii, JavaScript үшін - Node.JS-Express.js, Java үшін - Көктемгі MVC.

Жеткізуші жаңартуларын қадағалаңыз және үнемі жаңартып отырыңыз. Олар осалдықты табады, содан кейін эксплойт жазады, оны жалпыға қолжетімді етеді және бәрі қайталанады. Бағдарламалық құрал жеткізушісінің тұрақты нұсқаларына жаңартуларға жазылыңыз.

Қол жеткізу құқықтарын тексеріңіз. Сервер жағында әрқашан кодты бірінші әріптен соңғы әріпке дейін сіздің сайтыңызды бұзғысы келетін, деректеріңіздің тұтастығын бұзғысы келетін ең жек көретін жауыңыз жазғандай қабылдаңыз. Оның үстіне, кейде бұл шындық.

Клондарды, сынақ алаңдарын пайдаланыңыз, содан кейін оларды өндіріс үшін пайдаланыңыз. Бұл, біріншіден, өнімді ортада қателіктер мен қателіктерден аулақ болуға көмектеседі: өнімді орта ақша әкеледі, қарапайым өнімді орта өте маңызды. Кез келген мәселені қосқанда, түзеткенде немесе жапқанда сынақ ортасында жұмыс істеп, содан кейін табылған функционалдылық пен осалдықтарды тексеріп, содан кейін өндіріс ортасымен жұмыс істеуді жоспарлаған жөн. 

Веб қолданбаңызды қорғаңыз Веб-бағдарламаның брандмауэрі және онымен осалдық сканерінің есептерін біріктіріңіз. Мысалы, DataLine қызметтер жиынтығы ретінде Qualys және FortiWeb пайдаланады.

Ақпарат көзі: www.habr.com

пікір қалдыру