Kí ni ẹnubodè wẹ́ẹ̀bù tí ó ti bàjẹ́ ṣì lè dé?
Ẹnubodè wẹ́ẹ̀bù dín ohun tí alejò ń ṣí kù, kì í ṣe ibi tí olùgbàlejò tí ó bàjẹ́ lè dé. Àyẹ̀wò méjì, tábìlì àṣẹ àti àwọn àṣẹ ìdíwọ̀n.
Ká sọ pé wọ́n ti ba olùgbàlejò ẹnubodè náà jẹ́ nígbà tí ìwé-ẹ̀rí rẹ̀ ṣì wà lábẹ́ àṣẹ. Gbogbo òfin tí ó ń mọ̀ èyí tí alejò lè béèrè fún wà ní ipa, kò sì sí ọ̀kan nínú àwọn òfin wọ̀nyí tí ó dín ìsopọ̀ tí olùgbógun ń ṣí báyìí láti orí olùgbàlejò yẹn lọ sí ẹ̀ka-ètò ìpamọ́ dátà kù. Àlàfo yìí gan-an ni ìdí tí ibi-ìwọlé wẹ́ẹ̀bù nìkan kò fi jẹ́ ẹ̀tọ́ kan náà pẹ̀lú ẹ̀wọ̀n tí wọ́n pín. Àwọn ẹ̀tọ́ méjèèjì nílò àyẹ̀wò ọ̀tọ̀ọ̀tọ̀, láti oríṣiríṣi ibi ìbẹ̀rẹ̀, kí a tó lè sọ èyíkéyìí nínú wọn ní òtítọ́.
Àwọn ẹ̀tọ́ méjì, àti pé ọ̀kan nínú wọn nìkan ni ó bẹ̀rẹ̀ lọ́dọ̀ alejò
Ẹ̀tọ́ àkọ́kọ́ jẹ́ nípa ènìyàn kan: alejò tí ó ní ẹ̀rọ-ìwòye àti ìpàdé tí ó wà lábẹ́ àṣẹ lè ṣí ìṣàmúlò kan, kò sì sí ohun mìíràn. Ibi-ìwọlé wẹ́ẹ̀bù nìkan ń dá ẹ̀tọ́ yẹn lóhùn dáadáa, nítorí pé alejò gba ojú-ìwé, kì í ṣe ọ̀nà. Ìdáhùn yẹn tọ́ sí ipamọ́, ó sì tún ni ẹ̀tọ́ kan ṣoṣo tí ọ̀pọ̀ àwòrán ń gbà.
Ẹ̀tọ́ kejì jẹ́ nípa ẹ̀ka kan: wọ́n ro pé ẹnubodè náà, tàbí ìlànà ìṣàmúlò tí ó wà lẹ́yìn rẹ̀, wà lábẹ́ ìṣàkóso ẹlòmíràn. Láti inú ìrònú yẹn, ìbéèrè yí padà láti èyí tí URL wọ́n gbà sí èyí tí àwọn ibi àti ìdánimọ̀ tí ìlànà náà ṣì lè dé.
Àwọn ẹ̀tọ́ méjèèjì ní olówó ọ̀tọ̀ọ̀tọ̀, wọ́n ń pèsè ẹ̀rí ọ̀tọ̀ọ̀tọ̀, wọ́n sì ń kùnà lọ́nà òmìnira. Ẹgbẹ́ ìdánimọ̀ lè fi ìgbeyèwò ìpàdé hàn àkọ́kọ́; èkejì nílò ìlànà ẹ̀wọ̀n, àyẹ̀wò àkọsílẹ̀ ìsìn àti àwọn ìṣàkóso olùgbàlejò. Àwòṣe tí ó ń gbà ìdajì alejò nìkan yóò dàbí ẹni tí ó péye lórí sìláìdì àyẹ̀wò, yóò sì dàbí ẹni tí ó rẹ̀wà ní àkókò ìṣẹ̀lẹ̀, nítorí àwọn ìṣàkóso tí ó ṣe pàtàkì lẹ́yìn ìbàjẹ́ kò tíì sí nínú ààlà rí. Sọ ẹ̀tọ́ tí ìṣàkóso kọ̀ọ̀kan ń ṣèlérí, bí bẹ́ẹ̀ kọ́ wọ́n yóò ka òfin ẹnubodè kan fún méjèèjì.
Iṣẹ́ ìnáwó tí wọ́n ṣe àṣefihàn, àti àwọn ọ̀nà méjì tí ó ń gbá lọ́wọ́
Muu iṣẹ́ ìnáwó kan: ẹnubodè gbogbogbo ní 10.60.4.10 ń jẹ́rìí àwọn òṣìṣẹ́, ó sì ń fi àwọn ìbéèrè tí wọ́n fọwọ́ sí kọjá lọ sí olùgbọ́ ìṣàmúlò ní èbúté 8443, ìṣàmúlò yẹn sì dé ọ̀dọ̀ olùgbọ́ PostgreSQL kan ní 10.60.4.20:5432 gẹ́gẹ́ bí ipa expenses_app. Àwọn òṣìṣẹ́ kò yẹ kí wọ́n gba àǹfààní ìwọlé inú gbogbogbo. Nínú ìṣiṣẹ́ déédé, àwòṣe náà ń pèsè ibi-ìwọlé tí ó jẹ́ ti ìṣàmúlò ní tòótọ́ láìfi olùgbọ́ ìpamọ́ dátà hàn ní ibikíbi. Àwọn àdírẹ́sì ṣe pàtàkì, nítorí gbogbo àyẹ̀wò tí ó tẹ̀lé nínú àpilẹ̀kọ yìí ń dárúkọ wọn.
Ní báyìí yọ ẹnubodè náà kúrò nínú àpapọ̀ tí wọ́n gbẹ́kẹ̀lé. Àwọn ibi wo ni 10.60.4.10 lè dé nígbà tí ìlànà rẹ̀ di ti olùgbógun? Ajọ tí ó dín àwọn alejò kù kò sọ ohunkóhun nípa ìsopọ̀ tí olùgbàlejò ẹnubodè ń ṣí sí ẹ̀ka-ètò ìpamọ́ dátà.
Dípò bẹ́ẹ̀ yọ ìlànà ìṣàmúlò náà kúrò, àṣẹ yóò sì yí ìrísí padà: ipa expenses_app, àwọn iṣẹ́ tí olùgbàlejò yẹn lè dé, àti àwọn fáìlì tí àkọsílẹ̀ yẹn lè kà. Nínú àwọn ipò méjèèjì ilẹ̀kùn iwájú lè wà ní wẹ́ẹ̀bù nìkan nígbà tí ààlà ẹ̀yìn kò sí. Nítorí náà àmì tí ó wà lórí ilẹ̀kùn iwájú kì í ṣe ìdáhùn sí èyíkéyìí nínú àwọn ìbéèrè méjèèjì.
Ṣe àwòrán àṣẹ tí ẹnìkọ̀ọ̀kan ní ní tòótọ́
Májẹ́mú tí wọ́n kọ gẹ́gẹ́ bí àwọn àṣẹ tí wọ́n ní lọ́kàn máa ń tún àwòṣe náà sọ fún ọ. Kọ ọ́ gẹ́gẹ́ bí àṣẹ tí ó wà lọ́wọ́, àyẹ̀wò tí ó tako àfikún, àti olówó àyẹ̀wò yẹn, nígbà náà gbogbo ìlà yóò di èyí tí a lè dán wò. Tábìlì yìí jẹ́ àbá fún àpẹẹrẹ tí ó wà lókè, kì í ṣe ẹ̀tọ́ ọjà:
| Component | Authority it actually holds | Check that proves the denial | Owner of the check |
|---|---|---|---|
| Identity provider | Issues assertions and session cookies, and holds no network path of its own | A request to the application URL without a session is redirected to the login page | Identity team |
| Public gateway host | TCP reachability to whatever its routing table and egress rules permit | An egress rule drops 10.60.4.20:5432 and the probe reports the port filtered | Network platform team |
| Application role | SQL privileges granted to expenses_app inside the expenses database | A privilege query shows no ownership or create right on any other schema | Application team |
| Database listener | Accepts connections only from the source ranges named in its host-based rules | A connection from an unlisted address is refused before authentication | Database administrator |
| Management path | Administrative access reserved for patching, monitoring and recovery | A staff workstation cannot reach the administrative port or jump through it | Platform owner |
Nínú ni àṣẹ ń tẹ̀lé. Ẹgbẹ́ ìdánimọ̀ ni ó ni àwọn ẹ̀tọ́, ẹgbẹ́ pẹpẹ ẹ̀wọ̀n ni ó ni àwọn ọ̀nà, ẹgbẹ́ ìṣàmúlò ni ó ni ipa ìpamọ́ dátà, alábòójútó ìpamọ́ dátà ni ó ni olùgbọ́ àti àwọn òfin rẹ̀ tí ó dá lórí olùgbàlejò, olówó pẹpẹ sì ni ó ni ìpele ìṣàkóso. Ìkọ̀sílẹ̀ tí kò ní olówó jẹ́ gbólóhùn nínú ìwé, kì í ṣe ìṣàkóso.
Pípín yìí tún ń dènà kíkà lẹ́ẹ̀mejì. Ìdínà èbúté kò lè sọ àǹfààní tábìlì, ipa ìpamọ́ dátà kò sì lè dènà olùgbàlejò láti ṣí sọ́kẹ́tì sí ẹ̀ka-ètò tí kò ní ìbáṣepọ̀.
Ka ohun tí ẹnubodè lè dé dípò kí o sọ ọ́
Ẹ̀tọ́ ààlà dára bí kíkà tí ó wà lẹ́yìn rẹ̀. Ní orí olùgbàlejò ẹnubodè, àwọn àṣẹ mẹ́ta ń bo yíyàn ọ̀nà, ìgbeyèwò ààyè àti ìlànà ìjáde:
ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter outputKa àbájáde ní ọ̀nà yẹn. Ọ̀nà sọ bóyá 10.60.4.20 ni a yàn láti orí olùgbàlejò yẹn; ìgbeyèwò sọ bóyá olùgbọ́ ń dáhùn; àkọ́jọ àwọn òfin fi hàn bóyá ìlànà ń dá àpò dúró tàbí kò sí ohunkóhun tí ó wà lójú ọ̀nà rẹ̀ rí.
Tún kíkà náà ṣe láti orí olùgbàlejò ìṣàmúlò. Láti ibẹ̀ ẹ̀gbẹ́ ìpamọ́ dátà jẹ́ ìbéèrè kan tí a ṣe gẹ́gẹ́ bí ipa ìṣàmúlò:
psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'Ìsopọ̀ tí ó ṣàṣeyọrí lábẹ́ ipa tí kò lè ka ètò mìíràn yàtọ̀ sí àbájáde ìsopọ̀ tí ó ṣàṣeyọrí lábẹ́ ipa olówó. Èkejì nìkan ni àwárí.
Kọ àwọn ìkọ̀sílẹ̀, lẹ́yìn náà fi ọjọ́ sí àyẹ̀wò náà
Ìtẹ́wọ́gbà ni a kọ gẹ́gẹ́ bí àbájáde kì í ṣe èrò: ìpàdé òṣìṣẹ́ kò lè dé ọ̀dọ̀ olùgbọ́, olùgbàlejò ẹnubodè kò lè dé ẹ̀ka-ètò tí kò ní ìbáṣepọ̀, ipa ìṣàmúlò kò sì lè dá ìpamọ́ dátà. Ọ̀kọ̀ọ̀kan jẹ́ àyẹ̀wò ọ̀tọ̀ọ̀tọ̀ pẹ̀lú olówó tí a dárúkọ àti ọjọ́.
Jẹ́ kí ìmójútó, àtúnṣe àti ìmúpadàbọ̀sípò wà ní àrékérekè nípasẹ̀ ọ̀nà ìṣàkóso tí a ṣe fún wọn. Ààlà tí ó tún dènà olówó rẹ̀ yóò di ìdádúró, ìdáhùn àkọ́kọ́ tí ó sábà wá sí ìdádúró yẹn ni láti tún òfin náà gbòòrò sí i. Ìtọ́nisọ́nà àyíká CISA ń béèrè pé kí a dín àǹfààní ìwọlé àti ìjáde kù sí àwọn èbúté àti ìlànà tí ó ní ìdí, pẹ̀lú ìrìnàjò láàárín àwọn ẹ̀wọ̀n inú, èyí tí ó jẹ́ ìtọ́sọ́nà tí backend bẹ̀rẹ̀ tí ọ̀pọ̀ àwòrán ń fi sílẹ̀.
Fi ọjọ́ sí àyẹ̀wò náà kí o sì dárúkọ olówó rẹ̀. Tún kíkà àti ìbéèrè àǹfààní ṣe lẹ́yìn èyíkéyìí ìyípadà sí àwòrán ẹnubodè, tábìlì ìtọ́sọ́nà tàbí ipa ìṣàmúlò.