Осебпазирӣ дар китобхонаҳои шабакавии забонҳои Rust ва Go, ки ба шумо имкон медиҳад тафтиши суроғаи IP-ро аз байн баред

Дар китобхонаҳои стандартии забонҳои Rust ва Go осебпазирии марбут ба коркарди нодурусти суроғаҳои IP бо рақамҳои ҳаштагӣ дар функсияҳои таҳлили суроғаҳо муайян карда шудаанд. Офтобҳо имкон медиҳанд, ки аз санҷишҳои суроғаҳои дуруст дар барномаҳо канора гузаранд, масалан, барои ташкили дастрасӣ ба суроғаҳои интерфейси бозгашт (127.xxx) ё зершабакаҳои интранет ҳангоми анҷом додани ҳамлаҳои SSRF (қаллобии дархост аз ҷониби сервер). Осебиятҳо даври мушкилоти қаблан дар китобхонаҳои гиреҳ-netmask (JavaScript, CVE-2021-28918, CVE-2021-29418), private-ip (JavaScript, CVE-2020-28360), ipaddress (Python, CVE-) муайяншударо идома медиҳанд. 2021-29921), Маълумот :: Тасдиқ :: IP (Perl, CVE-2021-29662) ва Net :: Netmask (Perl, CVE-2021-29424).

Тибқи мушаххасот, арзишҳои сатри суроғаи IP, ки аз сифр сар мешаванд, бояд ҳамчун рақамҳои ҳаштякӣ тафсир карда шаванд, аммо бисёр китобхонаҳо инро ба назар намегиранд ва танҳо сифрро партофта, арзишро ҳамчун адади даҳӣ ҳисоб мекунанд. Масалан, рақами 0177 дар ҳаштгона ба 127 дар даҳӣ баробар аст. Ҳамлагар метавонад бо нишон додани арзиши "0177.0.0.1", ки дар аломати даҳӣ ба "127.0.0.1" мувофиқат мекунад, манбаро дархост кунад. Агар китобхонаи мушкилот истифода шавад, барнома муайян намекунад, ки суроғаи 0177.0.0.1 дар зершабакаи 127.0.0.1/8 ҷойгир аст, аммо дар асл ҳангоми ирсоли дархост он метавонад ба суроғаи "0177.0.0.1", ки функсияҳои шабака ҳамчун 127.0.0.1 коркард хоҳанд шуд. Ба ҳамин монанд, шумо метавонед санҷиши дастрасӣ ба суроғаҳои интранетро бо нишон додани арзишҳо ба монанди "012.0.0.1" (баробар ба "10.0.0.1") фиреб диҳед.

Дар Rust, ба китобхонаи стандартии "std::net" мушкилот дучор шуд (CVE-2021-29922). Таҳлилгари суроғаи IP-и ин китобхона пеш аз арзишҳои суроға сифрро партофтааст, аммо танҳо агар на бештар аз се рақам нишон дода шавад, масалан, "0177.0.0.1" ҳамчун арзиши беэътибор ва натиҷаи нодуруст қабул карда мешавад. дар ҷавоб ба 010.8.8.8 ва 127.0.026.1 баргардонида мешавад. Барномаҳое, ки ҳангоми таҳлили суроғаҳои аз ҷониби корбар муайяншуда std::net::IpAddr-ро истифода мебаранд, эҳтимолан ба ҳамлаҳои SSRF (қалбакии дархости тарафи сервер), RFI (Дохилкунии файлҳои дурдаст) ва LFI (Дохилкунии файлҳои маҳаллӣ) осебпазиранд. Осебият дар филиали Rust 1.53.0 ислоҳ карда шуд.

Осебпазирӣ дар китобхонаҳои шабакавии забонҳои Rust ва Go, ки ба шумо имкон медиҳад тафтиши суроғаи IP-ро аз байн баред

Дар Go, китобхонаи стандартии "нет" таъсир мерасонад (CVE-2021-29923). Функсияи дарунсохташудаи net.ParseCIDR ба ҷои коркарди онҳо сифрҳои пешро пеш аз ададҳои ҳашттоӣ мегузаранд. Масалан, ҳамлакунанда метавонад арзиши 00000177.0.0.1-ро гузаронад, ки ҳангоми тафтиш дар функсияи net.ParseCIDR(00000177.0.0.1/24), на 177.0.0.1/24, балки ҳамчун 127.0.0.1/24 таҳлил карда мешавад. Мушкилот инчунин дар платформаи Kubernetes зоҳир мешавад. Осебият дар нашри Go 1.16.3 ва бета 1.17 ислоҳ карда шудааст.

Осебпазирӣ дар китобхонаҳои шабакавии забонҳои Rust ва Go, ки ба шумо имкон медиҳад тафтиши суроғаи IP-ро аз байн баред


Манбаъ: opennet.ru

Илова Эзоҳ