десеризация деген эмне - алыстан кодду аткаруу

Коопсуз эмес сериялаштыруу кантип алыстан код аткарууга айланат (жана бириктирүүдөн мурун аны кантип аныктоо керек)

The Commit Ал арткы эшикти ачты

Колдонуучу жүктөгөн объектилерди иштетүү үчүн жаңы функция бириктирилди. Баары тесттерден өтөт, бирок бир нече жумадан кийин пентест чабуулчулар сервердеги буйруктарды аткара аларын көрсөтөт; бул коддо жашырылган кооптуу десериализациянын натыйжасы. Десериализациядан алыстан кодду аткарууга чейинки аралык кооптуу түрдө аз болушу мүмкүн, айрыкча ачык булактуу пакеттерден же ички кызматтардан алынган сериялаштырылган маалыматтар текшерүүсүз ишенилгенде.

Коддо Десериалдаштыруу деген эмне, ал эмне үчүн тобокелдүү жана ал кайда жашырылган

Иштеп чыгуучулардын терминологиясы боюнча, десериализация деген эмне? Бул структураланган маалыматтарды, JSON, XML, бинардык форматтарды же тилге тиешелүү сериялаштырылган объекттерди алып, аларды эс тутумдагы объекттерге кайра айландыруу процесси.

Өз алдынча, сериядан чыгаруу зыянсыз жана кеңири таралган, мисалы:

  • Java: менен объектилерди окуу Объектти киргизүү агымы
  • Python: Маалыматтар жүктөлүүдө туздалган жүк
  • Node.jsJSON файлын талдоо JSON.parse

Тобокелдик ишенимсиз маалыматтарга валидациясыз сериясыздандыруу колдонулганда пайда болот. Чабуулчу түзмөк чынжырын иштеткен киргизүүнү түзө алат, ал эми код жолдору күтүлбөгөн жолдор менен колдонулат, бул коддун алыстан аткарылышына алып келиши мүмкүн.

кооптуу сериядан чыгаруу көбүнчө төмөнкүлөрдө кездешет:

  • Ачык булактуу пакеттер кооптуу демейки жөндөөлөр менен
  • Ыңгайлаштырылган код сериялаштырылган киргизүү ишенимдүү деп болжолдойт
  • Үчүнчү тараптын API'лери сериалдаштырылган объектилерди текшерүүсүз кайтарып жатышат
  • Артефакттарды куруу сыяктуу:
    • Java .ser алдын ала серияланган объекттерди камтыган файлдар.
    • Python .pkl Машина үйрөнүү жумуш агымдарындагы моделдик файлдар.
    • Docker сүрөттөрүнө же жайгаштыруу контейнерлерине киргизилген сериалдаштырылган конфигурация объекттери
  • Сыноо приборлору сыяктуу:

    • Эски сериялаштырылган сыноо маалыматтары өндүрүштүк сүрөттөрдөн көчүрүлдү.
    • Аткаруу же регрессиялык тесттер үчүн тышкы репозиторийлерден жүктөлүп алынган сериалдаштырылган пайдалуу жүктөөлөр.

Бул файлдарды репозиторийге киргизип, тесттер же жайылтуулар учурунда автоматтык түрдө жүктөөгө болот, бул кооптуу жагдайларды жаратат. сериядан чыгаруу in CI/CD pipelineкод өндүрүшкө жеткенге чейин эле.

Коопсуз эмес сериялаштыруудан алыстан кодду аткарууга чейин: Чабуул жолу

Кооптуу десерациялоо үчүн эксплуатация чынжыры көбүнчө төмөнкү үлгүлөрдүн бирине туура келет:

  1. Ишенимсиз киргизүү тиркемеге кирет.
  2. Кооптуу десерация объекттерди чектөөсүз кайра жаратат.
  3. Гаджет чынжыры бар функцияларды күтүлбөгөн жолдор менен иштетет.
  4. Чабуулчу артыкчылыктарды күчөтүп, кодду алыстан аткарууга жетишет.

Варианттар:

  • Java гаджет чынжырлары Apache Commons сыяктуу эски китепканаларды пайдаланат.
  • Python .pkl камтылган зыяндуу объекттер менен моделди жүктөө.
  • Node.js JSON талдоосу eval() же динамикалык импорт.

Flow:

Биригүүдөн мурун кооптуу десериализацияны кантип аныктоого болот

Коддорду бириктирүүдөн мурун кооптуу десерацияны аныктоо, жайгаштыруудан кийин оңдоого караганда алда канча арзан. Автоматташтырылган анализдин жана проактивдүү тестирлөөнүн айкалышы эң жакшы иштейт:

  • Статикалык тиркемелердин коопсуздугун текшерүү (SAST):
    • Кооптуу APIлерди аныктоо үчүн сканерлерди конфигурациялоо Объектти киргизүү агымы, туздалган жүк, жана YAML.жүктөө коопсуз жүктөгүчсүз.
    • Кооптуу эмес маалыматтарды текшерүү үчүн баштапкы кодду жана курулуш/текшерүү артефакттарын сканерлеңиз сериядан чыгаруу ченемдүүлүктөрү.
    • Жыйынтыктарды түз көрсөтүү pull requests ошондуктан иштеп чыгуучулар аларды бириктирүүдөн мурун чече алышат.
  • CI/CD жуурулушуу:

Мисал иш процесси:

  • Кооптуу коддун өндүрүш бутактарына жетүүсүнө жол бербөө үчүн, кооптуу сериясыздандыруунун маанилүү жыйынтыктары боюнча блокторду бириктирүү.
  • Зыяндуу киргизүүлөрдү симуляциялоо менен бирдик тесттери:

    • түзүү зыянсыз, көзөмөлдөнгөн пайдалуу жүктөр жалпы сериялаштырылган чабуул объекттерин туураган.
    • Колдонмо аларды кантип иштетээрин текшериңиз; ал киргизүүнү сокурдук менен иштетүүнүн ордуна четке кагышы, тазалоосу же каттоосу керек.
    • Бул тесттерди автоматташтырылган системага киргизиңиз pipeline ошондуктан алар ар бир PRди иштетип, кооптуу десерация жүрүм-турумун эрте аныкташат.
    • Тест жүктөмдөрү аткарылбай тургандыгын жана репозиторийде сактоо коопсуз экендигин, аныктоо логикасына гана көңүл буруп, текшериңиз.

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

Иштеп чыгуучулар үчүн алдын алуу стратегиялары: Десериалдаштыруунун алыстан код аткарууга айланышын токтотуу

  1. Ишеним чек араларыСериясыздандыруу: Аныкталган, текшерилген булактардан гана.
  2. Коопсуз API'лер:

     

    • Java: Текшерүү менен коопсуз китепканалар.
    • Python: Колдонуу json.loads() үстүндө pickle.loads() мүмкүн болгон жерде.
    • Node.js: Качуу eval() же динамикалык кодду аткаруу.

       

  3. Уруксат берилген тизмелер жана схемаларУруксат берилген объект түрлөрүн чектөө. JSON схемаларын ишке ашыруу.
  4. Көз карандылык гигиенасыСериясыздандыруу же алыстан кодду аткаруу жөнүндө айтылган CVEлерди көзөмөлдөө.
  5. Код сын-пикирлери: Кошуу сериядан чыгаруу Коопсуздук текшерүүлөрүнөн PR сереп шаблондоруна чейин.

Куралдар жөнүндө эскертүү: Мындай куралдар Ксигени Коштуруудан мурун кооптуу десерация үчүн кодду жана көз карандылыктарды сканерлөө, иштеп чыгуучулар аларды эртерээк оңдой алышы үчүн жогорку тобокелдик аймактарын аныктоо.

Тилдер боюнча аныктоо үлгүлөрүнүн мисалдары (Коопсуз жасалма код)

Төмөндөгү бардык мисалдар иштөөчү эксплойтторду эмес, аныктоо үлгүлөрүн көрсөткөн санитардык псевдо-код болуп саналат:

Java – Кооптуу API колдонулушун аныктоо:

Python – Кооптуу десерациядан качуу:

Node.js – Динамикалык коддун аткарылышын алдын алуу:

DevSecOps'то аныктоону автоматташтыруу Pipelines: Десериалдаштырууну өндүрүшкө жеткенге чейин кармоо

Кооптуу десериализацияны аныктоону автоматташтыруу төмөнкүлөрдү камсыз кылат кемчиликтер аныкталып, оңдолот алар өндүрүштө кодду алыстан аткарууга алып келгенге чейин.

Pipeline изделүүдө

  • Run SAST ар бир учурда булак кодунда, конфигурация файлдарында жана курулуш артефакттарында commit.
  • Колдонмо кодунда жана экөөндө тең кооптуу десерация үлгүлөрүн аныктоо көзкаранды.

Артефакттарды текшерүү

  • скандоо .ser, .pkl, жана тесттерди жайгаштыруудан же ал тургай иштетүүдөн мурун кооптуу үлгүлөр үчүн башка сериялаштырылган файлдар.

Pull Request Blocking

  • Кооптуу десерация аныкталса, блоктор биригишет.
  • Оңдоо иштерин тездетүү үчүн коомдук байланыштарда иш жүзүндө колдонулуучу пикирлерди көрсөтүңүз.

Бирдиктүү тестти ишке ашыруу

  • Зыяндуу киргизүүлөрдү симуляциялаган бирдиктик тесттерди кошуңуз CI/CD pipeline
  • Эгерде тиркеме кооптуу сериялаштырылган маалыматтарды четке кагуунун ордуна иштетсе, ката пайда болот.

Эрежелерди алсыратпастан жалган позитивдүү натыйжалардан качуу

  • Эскертүүлөргө "үнсүз" болуу үчүн аныктоо эрежелерин өчүрбөңүз; бул чыныгы кооптуу сериясыздандыруунун аныкталбай өтүшүнө жол бериши мүмкүн.
  • Белгилүү коопсуз үлгүлөр же көз карандылыктар үчүн көзөмөлдөнгөн ак тизмени (уруксат берилген тизме) колдонуңуз.
  • Ак тизмедеги жазууларды бекитүүдөн мурун коопсуздук текшерүүсүн талап кылуу.
  • Ак тизмени версияны көзөмөлдөө астында сактап, бардык өзгөчө учурлардын негиздүү жана коопсуз бойдон калышын камсыз кылуу үчүн аны мезгил-мезгили менен карап туруңуз.

Ксигенинин ролу

  • Түздөн-түз интеграцияланат CI/CD pipelines баштапкы кодду жана артефакттарды түзүү үчүн сканерлейт.
  • Жашоо циклинин башында кооптуу десериализация үлгүлөрүн жана тобокелдүү көз карандылыктарды аныктайт.
  • Иштеп чыгуучунун өндүрүмдүүлүгү менен аныктоонун тактыгын тең салмактап, милдеттүү түрдө коопсуздукту карап чыгуу менен саясатка негизделген ак тизмеге киргизүүнү колдойт.

Коопсуз сериясыздандыруу аркылуу кодду алыстан аткаруудан алдыда болуу

Коопсуз эмес десериализация алыстан кодду аткаруунун түз жолуна айланганга чейин байкалбай калышы мүмкүн. Анын алдын алуу үчүн төмөнкүлөр талап кылынат:

  • Десериалдаштыруу деген эмне жана аны кантип кыянаттык менен колдонсо болорун түшүнүү.
  • Иштеп чыгуу процессине автоматташтырылган аныктоону киргизүү.
  • Тесттерде колдонулган көз карандылыктарды, курулуш артефакттарын жана сериялаштырылган маалыматтарды үзгүлтүксүз карап чыгуу.

Бул процессте Xygeniaнын практикалык ролу:

  • Баштапкы кодду сканерлөөКод бириктирилгенге чейин бир нече тилдердеги кооптуу десериализация үлгүлөрүн аныктайт.
  • Артефакт жана көз карандылыкты талдооКооптуу сериялаштырылган файлдарды аныктайт (.ser, .pkl, камтылган конфигурация) жана белгилүү кемчиликтери бар үчүнчү тараптын компоненттери.
  • Саясатка негизделген башкаруу элементтериКоопсуздукту текшерүү менен көзөмөлдөнгөн уруксат берилген тизмени колдойт, бул зарыл болгон өзгөчө учурлар чыныгы тобокелдиктерди жаратпашы үчүн шарт түзөт.
  • Контексттеги иштеп чыгуучунун пикири: Ичиндеги кооптуу десерациянын так жайгашкан жерин жана себебин белгилейт pull requests, иштеп чыгуучуларга көйгөйлөрдү дароо оңдоого жана кайра сканерлөө аркылуу кемчиликтерди азайтуу чараларын ырастоого мүмкүндүк берет.

Ушул сыяктуу текшерүүлөрдү түздөн-түз интеграциялоо менен CI/CD, командалар кооптуу жагдайларды аныктап, оңдой алышат өндүрүштө алыстан код аткарууга өтүү мүмкүнчүлүгүнө ээ боло электе десериализациялоо.

sca-tools-программалык-композициялык-талдоо-куралдары
Программалык камсыздооңуздун тобокелдиктерин артыкчылыктуу деп эсептеңиз, оңдоңуз жана коопсуздугун камсыз кылыңыз
Акысыз аккаунтуңузду алыңыз.
Насыя картасы талап кылынбайт.

Программалык камсыздоону иштеп чыгууну жана жеткирүүнү камсыз кылыңыз

Xygeni Product Suite менен