Հարձակման վերլուծություն. խոցելիության սկաներն ընդդեմ Multify պրոքսիի
Այս հոդվածում. խոցելիության սկաների իրական հարձակման վերլուծություն Multify-ի պրոքսի-ենթակառուցվածքի վրա՝ ինչ են փնտրում բոտերը, ինչպես են դրանք արգելափակվում մոտեցման ժամանակ և ինչու հաճախորդի կայքը նույնիսկ չի իմանում այդ մասին։
2026 թվականի մայիսի 29, 17:04։ Կոտ դ'Իվուարից երկու IP հասցե միացան Multify-ի պրոքսի սերվերին։ Հաջորդ 90 վայրկյանների ընթացքում նրանք փորձեցին գրեթե 100 URL և ստացան 100 մերժում։
Սա խոցելիության սկաների տիպիկ աշխատանք է։ Ոչ թե նպատակային կոտրում, այլ ավտոմատ հետախուզություն։ Նման սկաներները շարունակաբար աշխատում են՝ շրջանցելով միլիոնավոր կայքեր՝ մեկ բան փնտրելով՝ բաց ֆայլ բանալիներով, գաղտնաբառերով կամ կոնֆիգուրացիայով, կամ հայտնի խոցելիություն CMS-ում։ Կարևոր չէ, թե ինչի վրա է կայքը՝ WordPress, Drupal, Joomla կամ ինքնուրույն գրված շարժիչ։ Սկաները ստուգում է ամեն ինչ անընդմեջ՝ ըստ ստանդարտ բառարանի։
Multify-ը, որպես հակադարձ պրոքսի, իր վրա է վերցնում ամբողջ մուտքային տրաֆիկը։ Սկաները դիմում է Multify-ի ենթակառուցվածքին, այլ ոչ թե անմիջապես հաճախորդի կայքին։ Պրոքսիի պաշտպանությունը հենց հաճախորդի կայքերի պաշտպանությունն է։
Սա պատահական հավաքածու չէ, այլ ստանդարտ բառարան, որը կազմված է իրական արտահոսքերից։ Այս ցուցակի յուրաքանչյուր ֆայլ երբևէ հայտնաբերվել է հանրային մատչելիության մեջ՝ ինչ-որ մեկի արտադրական սերվերում։
Ինչ են կոնկրետ փնտրում
Միջավայրի փոփոխականներ — .env ֆայլեր և դրանց տարբերակները։ Դրանցում ծրագրավորողները պահում են API բանալիներ, տվյալների բազաների գաղտնաբառեր, վճարային համակարգերի թոքեններ։ Մեկ նման ֆայլը հարձակվողին տալիս է ենթակառուցվածքի ամբողջական մուտք՝ առանց կոտրման որևէ հետքի։ GitGuardian-ի տվյալներով՝ 2024 թվականին հանրային պահոցներում գաղտնիքներ հայտնաբերվել են ավելի քան 12 միլիոն անգամ, .env-ը ամենահաճախակի հանդիպող երեքի մեջ է։ Ծրագրավորողը ֆայլը ավելացնում է .gitignore-ում, բայց սերվերում տեղակայումից հետո այն մնում է հանրային գրացուցակում, և ոչ ոք չի ստուգում։
CMS-ի և ֆրեյմվորքների կոնֆիգուրացիաներ — wp-config.php (WordPress), Joomla-ի, Drupal-ի կոնֆիգուրացիաներ, Laravel-ի, Symfony-ի, Rails-ի ֆայլեր։ Սկաները չգիտի, թե ինչով է գրված կայքը, ուստի ստուգում է բոլոր հայտնի տարբերակները հերթով։
Ամպային բանալիներ — gcp-credentials.json, azure-credentials.json, service-account.json, terraform.tfvars. Հայտնաբերումը նշանակում է մուտք դեպի ամպային հաշիվ՝ բոլոր տվյալներով և տասնյակ հազարավոր դոլարների հնարավոր հաշիվներով։
Գաղտնագրման բանալիներ — private.key, server.key, rails/master.key. Բաց մասնավոր բանալին թույլ է տալիս վերծանել ամբողջ տրաֆիկը կամ կեղծել ստորագրությունները։
Լոգեր և դամփեր — error.log, debug.log, database.sql, dump.sql. Լոգերը հաճախ պարունակում են օգտատերերի տվյալներ, ֆայլերի ուղիներ, երբեմն էլ գաղտնաբառեր բաց տեսքով։
Ենթակառուցվածքի կոնֆիգուրացիաներ — nginx.conf, docker-compose.yml, web.config. Դրանցից կարելի է իմանալ ցանցի ներքին տոպոլոգիան և գտնել հաջորդ մուտքի կետը։
CMS-ի խոցելիություններ — առանձին կատեգորիա։ Հենց նոր CVE է հրապարակվում, սկաներները սկսում են ստուգել բոլոր կայքերը հերթով, հաճախ մի քանի ժամվա ընթացքում։ Ըստ Google Project Zero-ի տվյալների՝ CVE-ի հրապարակումից մինչև առաջին հարձակումները միջինը 15 օր է, բայց հանրային PoC ունեցող խոցելիությունների համար այս ժամանակը կրճատվել է մինչև մի քանի ժամ։ Օրինակ, որը ներկայումս ակտիվ շահագործման մեջ է. CVE-2026-9082, SQL-ներարկում Drupal Core-ում PostgreSQL-ի վրա (տարբերակներ 8.0-ից մինչև 11.3.9)։ Խոցելիությունը կայանում է նրանում, թե ինչպես է Drupal-ը կառուցում SQL հարցումները JSON:API-ի միջոցով. հարձակվողը ֆիլտրի պարամետրում փոխանցում է զանգվածի բանալի՝ ներդրված SQL-ով, Drupal-ը այն տեղադրում է հարցման մեջ առանց սանիտարացման։ Առանց թույլտվության, սովորական HTTP հարցման միջոցով։ Արդյունքը՝ տվյալների բազայի բեռնում, admin-հաշվի ստեղծում, որոշ կոնֆիգուրացիաներում կամայական կոդի կատարում։ CVSS 9.8, կրիտիկական (համեմատության համար՝ Log4Shell-ը, որը 2021 թվականին կաթվածահար արեց ինտերնետի կեսը, ստացավ 10.0)։ Կարկատանը թողարկվեց մայիսի 20-ին, աշխատող PoC-ը հայտնվեց GitHub-ում մեկ ժամից էլ քիչ ժամանակ անց։ Մայիսի 22-ին խոցելիությունը ավելացվեց CISA Known Exploited Vulnerabilities կատալոգում։ Առաջին 48 ժամվա ընթացքում գրանցվել է ավելի քան 15 000 շահագործման փորձ գրեթե 6 000 կայքերում 65 երկրներում։
Մայիսի 29-ի հարձակումը հենց այդպիսին էր։ WAF-ը գործեց OWASP CRS ստորագրությունների հիման վրա, CrowdSec-ը երկու IP-ն էլ ավելացրեց արգելափակվածների ցանկում։ Հաճախորդը դրա մասին չիմացավ։
Սկաները 90 վայրկյանում անցավ բոլոր կատեգորիաներով միանգամից։
Երկու IP՝ մեկ սկաներ
Սկաները միաժամանակ գործարկվեց երկու հասցեից։ Ժամանակակից սկաներները բեռը բաշխում են մի քանի IP-ների միջև՝ պարզ rate-limit կանոնների շեմից ցածր մնալու համար։ Եթե պաշտպանությունը գործում է «մեկ IP-ից րոպեում ավելի քան 10 հարցում» սկզբունքով, սկաները պարզապես յուրաքանչյուրից կատարում է 5 հարցում։ Ընդ որում, IP-ները հաճախ կապ չունեն իրական հարձակվողի հետ. դրանք վարձակալված VPS-ներ են, կոտրված սերվերներ կամ բոտնետ-մեքենաներ ամբողջ աշխարհում։ Կոտ դ'Իվուարը այստեղ պատահական աշխարհագրություն է, այլ ոչ թե այն վայրը, որտեղից իրականում աշխատում է մարդը։
Հետաքրքիր մանրամասն լոգից. երկրորդ IP-ի առաջին հարցումը վերադարձրեց 200 — սկաները նախ ստուգեց գլխավոր էջը, համոզվեց, որ կայքը կենդանի է, և միայն դրանից հետո սկսեց կրկնությունները։ Սա գործիքի նշան է, այլ ոչ թե պատահական տրաֆիկի։
Ինչպես է պրոքսին արգելափակում հարձակումը
WAF
WAF (Web Application Firewall) – հավելվածի մակարդակի ֆայերվոլ։ Ի տարբերություն ցանցային ֆայերվոլի, որը նայում է IP-ներին և պորտերին, WAF-ը կարդում է HTTP հարցման բովանդակությունը՝ URL, վերնագրեր, մարմին։ Այն վերլուծում է յուրաքանչյուր հարցում, նախքան այն կհասնի կայքին։
Կանոնների հիմքը – OWASP Core Rule Set (CRS), հարձակումների ստորագրությունների բաց հավաքածու, որը աջակցում է OWASP ոչ առևտրային հիմնադրամը։ CRS-ը ծածկում է կոնֆիգուրացիոն ֆայլերի կրկնությունները, SQL-ինյեկցիաները, XSS-ը և այլ տարածված վեկտորներ։ .env, .sql, .key, wp-config.php և տասնյակ այլ ընդլայնումների հարցումները անմիջապես արգելափակվում են։ WAF-ը չգիտի, թե արդյոք ֆայլը գոյություն ունի սերվերում. այն արգելափակում է ըստ հարցման անվան, և սկաները մերժում է ստանում, նախքան որևէ բան իմանալը։
CrowdSec
CrowdSec — վարքագծային վերլուծության բաց շարժիչ։ WAF-ը աշխատում է յուրաքանչյուր հարցման հետ առանձին, CrowdSec-ը դիտարկում է հաջորդականությունը՝ ինչ է հարցնում այս IP-ն վերջին րոպեների ընթացքում։
.env-ին մեկ հարցումը կարող է լինել հղման սխալ։ Տասը հարցում .env-ին, .env.production-ին, .env.local-ին, .envrc-ին 30 վայրկյանում արդեն օգտատեր չէ։ CrowdSec-ը ճանաչում է այս օրինաչափությունը ըստ սցենարներին (վարքագծային կանոնների) և արգելափակում է IP-ն։ Արգելափակված հասցեները հայտնվում են սպառնալիքների ընդհանուր բազայում, որն օգտագործում են հազարավոր սերվերներ ամբողջ աշխարհում։ Մեկ կայքում հայտնաբերված սկաները անմիջապես դառնում է անցանկալի հյուր ամենուր։
Սկաները մեկուկես րոպեում մշակեց ստանդարտ բառարանը և ոչնչով հեռացավ։ Հաճախորդի կայքը ոչ մի վնասակար հարցում չստացավ։
Ինչու է այն աշխատում հենց այսպես
Երբ կայքը միանում է Multify-ին, ամբողջ մուտքային տրաֆիկը անցնում է պրոքսիի միջոցով։ Հաճախորդը Multify-ին միացրել էր տեղայնացման, այլ ոչ թե պաշտպանության համար։ Սակայն քանի որ պրոքսին կայքից առաջ է, Multify-ի ենթակառուցվածքի ամբողջ պաշտպանությունն ավտոմատ կերպով տարածվում է դրա վրա։
Բաց ֆայլերի միջոցով տվյալների արտահոսքը կոտրման ամենատարածված վեկտորներից մեկն է։ Դրանք տեղի են ունենում ոչ թե բարդ էքսպլոյթների, այլ բանալի սխալների պատճառով. ծրագրավորողը տեղակայել է նախագիծը և մոռացել է հեռացնել .env ֆայլը։ Տեղադրել է տվյալների բազայի թեստային դամփը հանրային թղթապանակում։ Թողել է կոնֆիգուրացիան գաղտնաբառերով սերվերի վրա։ Սկաներները նման ֆայլեր են գտնում մի քանի ժամվա ընթացքում, շատ ավելի շուտ, քան թիմի որևէ անդամ կնկատի սխալը։
Հաճախ տրվող հարցեր
Multify-ն պաշտպանո՞ւմ է CVE-2026-9082-ից։
Եթե հաճախորդի կայքը աշխատում է Drupal-ի վրա PostgreSQL-ով, ապա WAF-ը պրոքսի մակարդակում արգելափակում է հարցումների բնորոշ օրինաչափությունները՝ բարդ filter-պարամետրեր դեպի /jsonapi, հարցումներ դեպի /user/login?_format=json ոչ ստանդարտ մարմիններով։ Սկաները չի հասնում կայքին։ Սակայն սա փաթչի փոխարինում չէ. եթե կայքը հասանելի է անմիջապես՝ շրջանցելով պրոքսին, պաշտպանություն չկա։
Ինչու՞ երկու IP, այլ ոչ թե մեկը:
Ժամանակակից սկաներները հարցումները բաշխում են մի քանի հասցեների միջև, որպեսզի մնան պարզ rate-limit կանոնների շեմից ցածր։ CrowdSec-ը դիտարկում է վարքագիծը, այլ ոչ թե մեկ IP-ից եկող հարցումների քանակը, ուստի նման տեխնիկան չի օգնում։
Սկաները որևէ բան իմացե՞լ է հաճախորդի կայքի մասին։
Ոչ։ WAF-ը արգելափակում է հարցումները ըստ ուղու անվան, մինչև դրանք հասնեն հավելվածին։ Սկաները չգիտի, թե արդյոք ֆայլը գոյություն ունի սերվերի վրա. այն մերժում է ստանում պրոքսի մակարդակում։
Ի՞նչ կլինի, եթե հարձակումը սկաներ չէ, այլ նպատակային կոտրում։
Նպատակային հարձակումն ավելի բարդ է. հարձակվողը գիտի նպատակը, օգտագործում է ոչ ստանդարտ վեկտորներ և աշխատում է դանդաղ, որպեսզի չընկնի վարքագծային օրինաչափությունների մեջ։ WAF-ը և CrowdSec-ը նվազեցնում են հարձակման մակերեսը, բայց չեն տալիս հարյուր տոկոսանոց երաշխիք։ Կրիտիկական կայքերի համար անհրաժեշտ է ներթափանցման թեստ և անոմալիաների մոնիտորինգ։
Կոտ դ'Իվուա՞րը կարևոր է։
Ոչ։ Սկաների IP-ի գեոլոկացիան այն մեքենայի գեոլոկացիան է, որն օգտագործվում է, այլ ոչ թե հարձակվողի։ Արգելափակումն ըստ երկրի անիմաստ է. հաջորդ հարձակումը կգա Բրազիլիայից, Նիդեռլանդներից կամ Ռուսաստանից։
Պաշտպանություն՝ լոկալիզացիայի հետ համատեղ
WAF-ը և վարքագծային արգելափակումն աշխատում են պրոքսի մակարդակում՝ Multify-ի տակ գտնվող յուրաքանչյուր կայքի համար, առանց ձեր կողմից լրացուցիչ կարգավորումների։