Regular expression Denial of Service - ReDoS
Uharibifu wa Mfumo wa Kanuni ya Kawaida - ReDoS
Uharibifu wa Mfumo wa Kanuni ya Kawaida (ReDoS)
Uharibifu wa Mfumo wa Kanuni ya Kawaida (ReDoS) hutokea wakati mtu anatumia udhaifu katika jinsi kanuni za kawaida (njia ya kutafuta na kulinganisha mifano katika maandishi) zinafanya kazi. Mara nyingi, wakati kanuni za kawaida zinapotumiwa, zinaweza kuwa polepole sana, hasa ikiwa kipande cha maandishi wanachofanya kazi nacho kinakuwa kikubwa. Uvivu huu unaweza kuwa mbaya sana hata kwa ongezeko dogo la ukubwa wa maandishi. Wadukuzi wanaweza kutumia tatizo hili kufanya programu inayotumia kanuni za kawaida isifanye kazi vizuri kwa muda mrefu.
Algorithm ya Kawaida ya Kanuni ya Kawaida Inayosababisha Tatizo
Angalia maelezo katika https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS
Kanuni za Uovu
Kanuni ya kawaida ya uovu ni ile inayoweza kukwama kwenye kuingiza kilichoundwa na kusababisha DoS. Kawaida, mifano ya kanuni ya uovu ina kikundi kinachorudiwa na kurudia au kubadilishana na kuvuka ndani ya kikundi kilichorudiwa. Baadhi ya mifano ya kanuni za uovu ni pamoja na:
(a+)+
([a-zA-Z]+)*
(a|aa)+
(a|a?)+
(.*a){x} kwa x > 10
Zote hizo zina hatari kwa kuingiza aaaaaaaaaaaaaaaaaaaaaaaa!
.
Malipo ya ReDoS
Uchunguzi wa Nakala kupitia ReDoS
Katika CTF (au bug bounty) labda unadhibiti Kanuni ya kawaida ambayo habari nyeti (bendera) inalingana nayo. Kwa hivyo, inaweza kuwa na manufaa kufanya ukurasa uweze kufungia (kutumia muda mrefu au muda mrefu zaidi) ikiwa Kanuni ya kawaida inalingana na sio kama haifanyi. Kwa njia hii utaweza kuchukua herufi kwa herufi:
Katika chapisho hili unaweza kupata sheria hii ya ReDoS:
^(?=<flag>)((.*)*)*salt$
Mfano:
^(?=HTB{sOmE_fl§N§)((.*)*)*salt$
Katika chapisho hili unaweza kupata hii:
<flag>(((((((.*)*)*)*)*)*)*)!
Katika chapisho hili alitumia:
^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$
Udhibiti wa Kuingiza na Kanuni ya Kawaida ya ReDoS
Zifuatazo ni mifano ya ReDoS ambapo unadhibiti kuingiza na kanuni ya kawaida:
Vifaa
Marejeo
Last updated