Kui kasutate `Kui laaditud ()` grashQL-is, mis on tavaliselt meetod tinglikult seotud andmete või assotsiatsioonide (nt ORM-põhistes GraphQL-i resolverides), võib tekkida mitmed tavalised turvalõksud. Need lõksud on enamasti seotud laiemate GraphQL -i turbeprobleemidega, kuid on eriti olulised, kuna "siis laaditud ()" hõlmab sageli täiendavate pesastatud või seotud andmete hankimist, suurendavat keerukust ja riski.
GraphQL -is laaditud () `tavalised turbelõksud
** 1. Ebajärjekindlad või puuduvad autoriseerimiskontrollid
`Kui laaditud ()` käivitab sageli pesastatud või seotud andmete laadimise pärast esialgse eraldusvõime käivitamist. Kui autoriseerimisloogikat ei rakendata järjekindlalt igas resolveris või andmete laadimispunktis (sealhulgas need, mille käivitab `, kui laaditud ()`), võivad volitamata kasutajad pääseda tundlikele andmetele. See on tavaline probleem, kus mõned samad andmed on kaitstud, kuid teised (näiteks need, kui laaditud () `) mitte, võimaldades ründajatel juurdepääsukontrollidest mööda minna [4] [6]. Autoriseerimist tuleb jõustada nii päringu tasandil kui ka kõigi pesastatud resolverite või andmelaadurite piires.
** 2. Ülevõtmine ja keerulised päringud, mis viivad teenuse keelamiseni (DOS)
Kui laaditud () `kasutades võib põhjustada sügavalt pesastatud päringuid, mis toovad suures koguses seotud andmeid. Ründajad saavad seda ära kasutada, meisterdades päringuid, mis põhjustavad andmete liigset laadimist ja töötlemist, põhjustades ressursside ammendumist ja DOS -i. Graphql võime tuua mitu seotud objekti ühes päringus muudab ressursside kasutamise ennustamise keerukaks ja "kui laaditud ()" võib seda süvendada, laadides täiendavaid andmeid tinglikult [4] [5]. Leevenduste hulka kuulub päringu sügavuse piiramine, keerukuse skoorimine ja kiiruse piiramine.
** 3. Tundlike andmete kokkupuude väljade ebaõige valiku kaudu
Kui `Kui laaditud ()` laadib seotud andmeid ilma hoolika kontrolli all, milliseid väljad paljastatakse, võib GraphQL -i vastuses tahtmatult tagastada tundlik teave, näiteks paroolid, žetoonid või privaatse kasutaja üksikasjad [5]. See risk suureneb, kui loakontrollid puuduvad või kui tõrketeated lekivad tundlikku teavet. Arendajad peavad tagama, et tundlikud väljad ei puutu kunagi kokku, isegi kui pesastatud andmed on laaditud.
** 4. Süstimisrünnakud sisendi vale valideerimise kaudu
Kui "kui laaditud ()" kasutatakse dünaamiliste argumentide või filtritega, võib sisend vale valideerimine põhjustada süstimise haavatavusi, näiteks GraphQL päringu süstimist või isegi SQL -i süstimist, kui aluseks olevad andmed ei ole õigesti parameetriseeritud [6]. Ründajad võivad süstida pahatahtlikke päringuid või käske, mis manipuleerivad andmete loogikat. Sisendi nõuetekohane valideerimine ja parameetritega päringute kasutamine on hädavajalik.
** 5. Kiiruse piiramise ja jõhkrate kaitsekaitsest mööda minnes
Kuna "Kui allalaaditud ()" võib ühe päringu piires põhjustada mitu pesastatud andmete tõmbumist, saavad ründajad seda kasutada traditsioonilise kiiruse piiramise ületamiseks. Näiteks võivad nad saata ühe keerulise päringu, mis käivitab palju andmete tõkestamist või mutatsioone, viies tõhusalt läbi jõhkra jõu või loendusrünnakuid, käivitamata nõuetekohaste piirideta [4] [7]. Hinna piiramise strateegiad peavad arvestama päringu keerukuse ja pesastatud operatsioonidega.
** 6. Suurenenud rünnakupind skeemi enesevaatluse ja tööriistade tõttu
Kui laaditud () `kasutamine peegeldab sageli keerulist skeemi, millel on mitme pesastatud suhe. Ründajad saavad kasutada GraphQL -i enesekindlust ja selliseid tööriistu, näiteks Graphiql, et avastada neid suhteid ja käsitööpäringuid, mis kasutavad tahtmatutele andmetele juurde pääsemiseks () " Selle riski võib vähendada enesevaatluse keelamist tootmises või volitatud kasutajatele piiramine.
Kokkuvõte
Peamised turbelõksud, kui kasutate `WHOMNET ()` GraphQL -is, pöörduge ümber:
- Kõigi pesastatud andmete laadimisteede järjepideva loa jõustamata jätmine.
- võimaldades liiga keerulisi või sügavaid päringuid, mis põhjustavad DOS -i.
- tundlike andmete paljastamine pesastatud väljade kaudu.
- Ebapiisav sisendi valideerimine, mis viib süstimisrünnakuteni.
- keerulistest pesastatud päringutest tingitud kiiruse piirangutest möödudes.
- Suurenenud kokkupuude skeemi enesevaatluse ja tööriistade tõttu.
Leevenduste hulka kuulub range autoriseerimiskontroll igas eraldusvõime, päringu keerukuse ja sügavuse piiramise, range sisendi valideerimise, hoolika skeemi kujundamise, tootmise sissejuhatuse keelamise ja GraphQL -i päringustruktuuri jaoks kohandatud ulatusliku kiiruse korral [3] [4] [5] [5] [6] [8].
Tsitaadid:
[1] https://portswigger.net/web-security/graphql
]
]
[4] https://www.brightsec.com/blog/graphql-security/
[5] https://blog.convisoappsec.com/en/security-in-graphql/
]
]
]