Эмзэг байдлыг сканнердаж, аюулгүй хөгжүүлэлт. 1-р хэсэг

Эмзэг байдлыг сканнердаж, аюулгүй хөгжүүлэлт. 1-р хэсэг

Мэргэжлийн үйл ажиллагааныхаа хүрээнд хөгжүүлэгчид, пентестер болон аюулгүй байдлын мэргэжилтнүүд эмзэг байдлын менежмент (VM), (Secure) SDLC зэрэг процессуудтай ажиллах ёстой.
Эдгээр хэллэгүүдийн доор хэрэглэгчид өөр өөр байдаг ч хоорондоо уялдаатай хэрэглэгддэг янз бүрийн дадлага, хэрэгслүүд байдаг.

Технологийн дэвшил нь дэд бүтэц, програм хангамжийн аюулгүй байдалд дүн шинжилгээ хийх нэг хэрэгсэл хүнийг орлох хэмжээнд хараахан хүрээгүй байна.
Яагаад ийм болсон, ямар асуудал тулгараад байгааг ойлгох нь сонирхолтой юм.

Үйл явц

Эмзэг байдлын удирдлагын үйл явц нь дэд бүтцийн аюулгүй байдал, засварын менежментийг тасралтгүй хянах зорилготой юм.
Secure SDLC процесс ("аюулгүй хөгжүүлэлтийн мөчлөг") нь хөгжүүлэлт болон ашиглалтын явцад програмын аюулгүй байдлыг хангах зорилготой юм.

Эдгээр үйл явцын ижил төстэй хэсэг нь эмзэг байдлын үнэлгээний үйл явц юм - эмзэг байдлын үнэлгээ, эмзэг байдлын сканнер.
VM болон SDLC сканнерын гол ялгаа нь эхний тохиолдолд гуравдагч талын програм хангамж эсвэл тохиргооны мэдэгдэж буй сул талыг илрүүлэх зорилготой юм. Жишээлбэл, Windows-ийн хуучирсан хувилбар эсвэл SNMP-ийн анхдагч олон нийтийн мөр.
Хоёр дахь тохиолдолд, зорилго нь зөвхөн гуравдагч этгээдийн бүрэлдэхүүн хэсгүүдийн (хамаарал) бус, харин юуны түрүүнд шинэ бүтээгдэхүүний кодын эмзэг байдлыг илрүүлэх явдал юм.

Энэ нь арга хэрэгсэл, арга барилын ялгааг бий болгодог. Миний бодлоор хурууны хээ, баннер цуглуулах, нууц үг ашиглах гэх мэт хувилбаруудад хамаарахгүй тул програмын шинэ эмзэг байдлыг олох нь илүү сонирхолтой юм.
Аппликешны эмзэг байдлыг өндөр чанартай автоматаар сканнердахын тулд програмын семантик, түүний зорилго, тодорхой аюулыг харгалзан үзсэн алгоритм шаардлагатай.

Дэд бүтцийн сканнерыг миний хэлснээр ихэвчлэн таймераар сольж болно авлеонов. Гол нь та дэд бүтцээ нэг сарын турш шинэчлээгүй бол цэвэр статистикийн хувьд эмзэг гэж үзэж болно.

Хэрэгсэл

Сканнердах, түүнчлэн аюулгүй байдлын шинжилгээг хар хайрцаг эсвэл цагаан хайрцаг хэлбэрээр хийж болно.

Хар хайрцаг

Хар хайрцгийг сканнердахдаа уг хэрэгсэл нь хэрэглэгчид түүнтэй ажилладаг ижил интерфейсээр дамжуулан үйлчилгээтэй ажиллах боломжтой байх ёстой.

Дэд бүтцийн сканнерууд (Tenable Nessus, Qualys, MaxPatrol, Rapid7 Nexpose гэх мэт) нээлттэй сүлжээний портуудыг хайж, "баннер" цуглуулж, суулгасан програм хангамжийн хувилбаруудыг тодорхойлж, эдгээр хувилбаруудын эмзэг байдлын талаарх мэдээллийг өөрсдийн мэдлэгийн сангаас хайдаг. Тэд мөн анхдагч нууц үг эсвэл нээлттэй өгөгдөлд хандах, сул SSL шифр гэх мэт тохиргооны алдааг илрүүлэхийг оролддог.

Вэб програмын сканнер (Acunetix WVS, Netsparker, Burp Suite, OWASP ZAP гэх мэт) нь мэдэгдэж буй бүрэлдэхүүн хэсгүүд болон тэдгээрийн хувилбаруудыг (жишээ нь, CMS, frameworks, JS номын сан) илрүүлэх боломжтой. Мөлхөх гол алхмууд нь мөлхөж, мөлхөх явдал юм.
Мөлхөх явцад мөлхөгч нь одоо байгаа програмын интерфейс болон HTTP параметрүүдийн талаарх мэдээллийг цуглуулдаг. Муухайрах үед алдаа өдөөж, эмзэг байдлыг илрүүлэхийн тулд илрүүлсэн бүх параметрүүдийг мутаци эсвэл үүсгэсэн мэдээллээр орлуулдаг.

Ийм програмын сканнерууд нь DAST болон IAST ангилалд багтдаг - Динамик ба Интерактив хэрэглээний аюулгүй байдлын тест.

Цагаан хайрцаг

Цагаан хайрцгийг сканнердах нь илүү их ялгаатай байдаг.
VM үйл явцын нэг хэсэг болгон сканнерууд (Vulners, Incsecurity Couch, Vuls, Tenable Nessus гэх мэт) нь баталгаажуулсан скан хийх замаар системд нэвтрэх боломжийг олгодог. Тиймээс сканнер нь суулгасан багцын хувилбарууд болон тохиргооны параметрүүдийг сүлжээний үйлчилгээний баннераас тааваргүйгээр шууд системээс татаж авах боломжтой.
Сканнер нь илүү нарийвчлалтай, бүрэн гүйцэд болдог.

Хэрэв бид аппликешнуудын цагаан хайрцаг сканнердах (CheckMarx, HP Fortify, Coverity, RIPS, FindSecBugs гэх мэт) талаар ярих юм бол бид ихэвчлэн статик кодын шинжилгээ болон холбогдох SAST ангиллын хэрэгслүүдийг ашиглах тухай ярьж байна - Static Application Security Testing.

Асуудал

Сканнер хийхэд олон асуудал байна! Би тэдний ихэнхтэй нь сканнердах, аюулгүй хөгжүүлэх үйл явцыг бий болгох үйлчилгээ үзүүлэх, мөн аюулгүй байдлын дүн шинжилгээ хийх ажлын хүрээнд биечлэн шийдвэрлэх ёстой.

Би янз бүрийн компаниудын инженерүүд, мэдээллийн аюулгүй байдлын албаны дарга нартай хийсэн яриагаар нотлогддог гурван үндсэн бүлгийг онцлон хэлэх болно.

Вэб програмыг сканнердах асуудал

  1. Хэрэгжүүлэхэд хүндрэлтэй. Үр дүнтэй ажиллахын тулд сканнеруудыг байрлуулах, тохируулах, програм тус бүрт тохируулах, сканнердах туршилтын орчинг хуваарилах, CI / CD процесст хэрэгжүүлэх шаардлагатай. Тэгэхгүй бол энэ нь зөвхөн худал дүгнэлт гаргах дэмий албан ёсны журам болно
  2. Скан хийх хугацаа. Сканнерууд 2019 онд ч гэсэн интерфэйсүүдийг хуулбарлах ажлыг муу хийдэг бөгөөд ижил код хариуцдаг хэдий ч өөр өөр гэж үзвэл 10 параметр бүхий мянган хуудсыг өдрийн турш сканнердах боломжтой. Үүний зэрэгцээ хөгжлийн мөчлөгийн хүрээнд үйлдвэрлэлд нэвтрүүлэх шийдвэрийг хурдан гаргах ёстой.
  3. Муу зөвлөмжүүд. Сканнерууд нэлээд ерөнхий зөвлөмж өгдөг бөгөөд хөгжүүлэгч эрсдэлийн түвшинг хэрхэн бууруулах, хамгийн чухал нь үүнийг яг одоо хийх шаардлагатай байгаа эсэхийг хурдан ойлгох боломжгүй байдаг.
  4. Хэрэглээнд хортой нөлөө. Сканнерууд нь ямар нэгэн программ дээр DoS халдлага хийхээс гадна олон тооны нэгжүүдийг үүсгэх эсвэл одоо байгаа зүйлсийг өөрчлөх (жишээ нь, блог дээр хэдэн арван мянган сэтгэгдэл үүсгэх) боломжтой тул та ямар ч бодолгүйгээр сканнердах хэрэггүй. бүтээгдэхүүн.
  5. Эмзэг байдлыг илрүүлэх чанар муу. Сканнерууд нь ихэвчлэн тогтмол ачааллын массив ашигладаг бөгөөд тэдний мэдэгдэж буй програмын үйл ажиллагаанд тохирохгүй эмзэг байдлыг амархан алдаж болно.
  6. Сканнер програмын функцийг ойлгохгүй байна. Сканнерууд өөрсдөө "Интернет банк", "төлбөр", "тайлбар" гэж юу болохыг мэддэггүй. Тэдний хувьд зөвхөн холбоосууд болон параметрүүд байдаг тул бизнесийн логикийн боломжит эмзэг байдлын асар том давхарга бүрэн илчлэгдсэн хэвээр байгаа бөгөөд тэд давхар хасалт хийх, хэн нэгний мэдээллийг ID-аар тагнаж, эсвэл дугуйлах замаар үлдэгдлийг нэмэгдүүлэх талаар бодохгүй.
  7. Сканнер хуудасны семантикийг буруу ойлгосон. Сканнерууд түгээмэл асуултуудыг уншиж чадахгүй, captcha-г танихгүй, хэрхэн бүртгүүлж, дараа нь дахин нэвтрэх, та "гарах" дээр дарж чадахгүй, параметрийн утгыг өөрчлөх үед хүсэлтэд хэрхэн гарын үсэг зурахыг тааварлахгүй. Үүний үр дүнд програмын ихэнх нь скан хийгдээгүй хэвээр үлдэж магадгүй юм.

Эх кодын сканнердсан асуудлууд

  1. Хуурамч эерэг. Статик шинжилгээ нь олон буултыг агуулсан нарийн төвөгтэй ажил юм. Ихэнхдээ та нарийвчлалыг золиослох хэрэгтэй болдог, тэр ч байтугай үнэтэй аж ахуйн нэгжийн сканнерууд асар олон тооны хуурамч эерэг мэдээлэл өгдөг.
  2. Хэрэгжүүлэхэд хүндрэлтэй. Статик шинжилгээний нарийвчлал, бүрэн байдлыг нэмэгдүүлэхийн тулд сканнердах дүрмийг боловсронгуй болгох шаардлагатай бөгөөд эдгээр дүрмийг бичих нь хэтэрхий их цаг хугацаа шаарддаг. Заримдаа ийм тохиолдлуудыг илрүүлэх дүрэм бичихээс илүүтэйгээр ямар нэгэн алдаатай кодын бүх газрыг олж, засах нь илүү хялбар байдаг.
  3. Хараат байдлын дэмжлэг дутмаг. Томоохон төслүүд нь програмчлалын хэлний чадавхийг өргөтгөх олон тооны номын сан, хүрээнээс хамаардаг. Хэрэв сканнерийн мэдлэгийн санд эдгээр хүрээн дэх аюултай газруудын ("угаалтуур") тухай мэдээлэл байхгүй бол энэ нь сохор газар болж, сканнер кодыг ойлгохгүй байх болно.
  4. Скан хийх хугацаа. Кодын эмзэг байдлыг олох нь алгоритмын хувьд бас хэцүү ажил юм. Тиймээс энэ үйл явц хойшлогдож магадгүй бөгөөд ихээхэн хэмжээний тооцоолох нөөц шаардагдана.
  5. Хамрах хүрээ бага. Хэдийгээр нөөцийн зарцуулалт, сканнердсан хугацаатай ч SAST хэрэгслүүдийн хөгжүүлэгчид буулт хийх шаардлагатай хэвээр байгаа бөгөөд програмын байж болох бүх мужид дүн шинжилгээ хийх шаардлагатай байна.
  6. Олдворуудыг давтах чадвар. Эмзэг байдалд хүргэдэг тодорхой шугам, дуудлагын стекийг зааж өгөх нь маш сайн боловч үнэн хэрэгтээ сканнер нь гадны эмзэг байдлыг шалгах хангалттай мэдээллийг өгдөггүй. Эцсийн эцэст, дутагдал нь халдагчдад хүрч чадахгүй үхсэн кодонд байж болно.

Дэд бүтцийг сканнердах асуудал

  1. Бараа материал хангалтгүй. Томоохон дэд бүтцэд, ялангуяа газарзүйн хувьд тусгаарлагдсан газруудад аль хостыг сканнердахыг мэдэх нь ихэвчлэн хэцүү байдаг. Өөрөөр хэлбэл, сканнердах ажил нь хөрөнгийн удирдлагын даалгавартай нягт холбоотой
  2. Буруу эрэмбэлэх. Сүлжээний сканнерууд нь ихэвчлэн практикт ашиглах боломжгүй дутагдалтай олон үр дүнг гаргадаг боловч албан ёсоор тэдний эрсдэлийн түвшин өндөр байдаг. Хэрэглэгч тайлбарлахад хэцүү тайлан хүлээн авдаг бөгөөд юуны өмнө юуг засах шаардлагатай нь тодорхойгүй байна
  3. Муу зөвлөмжүүд. Сканнерийн мэдээллийн сан нь ихэвчлэн эмзэг байдлын талаархи ерөнхий мэдээллийг агуулдаг бөгөөд үүнийг хэрхэн засах талаар админууд Google-тэй зэвсэглэх шаардлагатай болдог. Тодорхой тушаалыг засах боломжтой цагаан хайрцагны сканнеруудын хувьд байдал арай дээр юм
  4. Гараар хийсэн. Дэд бүтэц нь олон зангилаатай байж болох бөгөөд энэ нь олон алдаатай байж болзошгүй гэсэн үг бөгөөд тэдгээрийн тайланг давталт бүрт гараар задлан шинжилж, дүн шинжилгээ хийх шаардлагатай болдог.
  5. Хамрах хүрээ муу. Дэд бүтцийн сканнерын чанар нь эмзэг байдал, програм хангамжийн хувилбаруудын талаарх мэдлэгийн сангийн хэмжээнээс шууд хамаардаг. Үүнд, болж хувирдаг, зах зээлийн тэргүүлэгчид хүртэл иж бүрэн мэдлэгтэй байдаггүй бөгөөд үнэ төлбөргүй шийдлүүдийн мэдээллийн сан нь удирдагчдад байхгүй олон мэдээллийг агуулдаг.
  6. Засвар хийхтэй холбоотой асуудлууд. Ихэнх тохиолдолд дэд бүтцийн эмзэг байдлыг нөхөх нь багцыг шинэчлэх эсвэл тохиргооны файлыг өөрчлөх явдал юм. Энд байгаа хамгийн том асуудал бол систем, ялангуяа хуучин систем нь шинэчлэлтийн үр дүнд урьдчилан таамаглах боломжгүй үйлдэл хийх явдал юм. Үнэн хэрэгтээ та үйлдвэрлэлийн дэд бүтцэд нэгтгэх туршилт хийх шаардлагатай болно.

Арга хандлага

Хэрхэн байх вэ?
Би жишээнүүд болон эдгээр олон асуудлыг хэрхэн шийдвэрлэх талаар дараах хэсгүүдэд илүү дэлгэрэнгүй ярих болно, гэхдээ одоогоор би таны ажиллах боломжтой гол чиглэлүүдийг зааж өгөх болно.

  1. Төрөл бүрийн сканнердах хэрэгслийг нэгтгэх. Олон сканнерыг зөв ашигласнаар мэдлэгийн бааз, илрүүлэх чанарыг мэдэгдэхүйц нэмэгдүүлэх боломжтой. Та дангаар нь ажиллуулж байгаа бүх сканнеруудын нийлбэрээс ч илүү эмзэг байдлыг олж мэдэхийн зэрэгцээ эрсдлийн түвшинг илүү нарийвчлалтай үнэлж, илүү олон зөвлөмж өгөх боломжтой.
  2. SAST ба DAST интеграцчилал. Тэдгээрийн хооронд мэдээлэл солилцох замаар DAST хамрах хүрээ болон SAST нарийвчлалыг нэмэгдүүлэх боломжтой. Эх сурвалжаас та одоо байгаа маршрутын талаар мэдээлэл авах боломжтой бөгөөд DAST-ийн тусламжтайгаар эмзэг байдал гаднаас харагдаж байгаа эсэхийг шалгах боломжтой.
  3. Machine Learning™. 2015 онд И гэж хэлэв (ба дэлгэрэнгүй) статистикийг ашиглан сканнеруудад хакерын зөн совинг өгч, хурдасгах тухай. Энэ нь ирээдүйд автоматжуулсан аюулгүй байдлын шинжилгээг хөгжүүлэх хоол хүнс юм.
  4. Автотест болон OpenAPI-тай IAST интеграцчилал. CI/CD дамжуулах шугамын хүрээнд HTTP прокси болон HTTP дээр ажилладаг функциональ тестүүд дээр тулгуурлан сканнердах процессыг үүсгэх боломжтой. OpenAPI/Swagger тестүүд болон гэрээнүүд нь сканнерт өгөгдлийн урсгалын талаарх дутуу мэдээллийг өгч, програмыг янз бүрийн мужуудад сканнердах боломжтой болгоно.
  5. Зөв тохиргоо. Аппликейшн болон дэд бүтэц бүрийн хувьд интерфэйсүүдийн тоо, шинж чанар, ашигласан технологийг харгалзан тохирох сканнердах профайлыг бий болгох хэрэгтэй.
  6. Сканнерийн тохиргоо. Ихэнхдээ програмыг сканнерыг өөрчлөхгүйгээр сканнердах боломжгүй байдаг. Үүний жишээ бол хүсэлт бүрт гарын үсэг зурах ёстой төлбөрийн гарц юм. Гарцын протоколд холбогчийг бичихгүйгээр сканнерууд буруу гарын үсэг бүхий хүсэлтээр ухаалгаар бөмбөгдөх болно. Мөн тодорхой төрлийн согог, тухайлбал, тусгай сканнер бичих шаардлагатай Аюулгүй байдлын шууд объектын лавлагаа
  7. Эрсдэлийн удирдлага. Төрөл бүрийн сканнер ашиглах, Хөрөнгийн менежмент, аюулын менежмент зэрэг гадаад системтэй нэгтгэх нь эрсдэлийн түвшинг үнэлэхэд олон параметрүүдийг ашиглах боломжийг олгодог бөгөөд ингэснээр удирдлага нь хөгжил эсвэл дэд бүтцийн аюулгүй байдлын өнөөгийн байдлын талаар хангалттай дүр зургийг авах боломжтой болно.

Хамтдаа байгаарай, эмзэг байдлын хайлтыг тасалцгаая!

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх