Lühidalt
API turvatestimine hindab, kas päringu tegija saab teha midagi, mida ta ei tohiks: näha teise kliendi andmeid, muuta teise rolli objekte või kasutada äriloogikat väljaspool ettenähtud voogu. Kontrollnimekiri jaguneb kolmeks: ettevalmistus, testitavad riskid ja kordustest. Iga punkti juures on oluline tõend, mitte ainult hoiatus.
Enne testi
- Ulatuse kirjeldus: hostid, API versioonid, keskkond, lubatud ajavahemik ja keelatud tegevused.
- API kirjeldus: OpenAPI dokument või Postmani kogu; ilma selleta on katvus raskemini tõendatav.
- Testkontod: vähemalt kaks rolli või klienti, vajadusel admin-konto ainult kokkulepitud kontrollideks.
- Andmed: sünteetilised objektid, mida tohib lugeda ja muuta; päris kliendiandmeid ei kasutata.
- Piirangud: päringute sagedus, keelatud tegevused (nt massproovimine, koormustest) ja peatamise tingimused.
- Kontaktid: kes kinnitab loa, kes vastab testi ajal ja kes pääseb logidele ligi.
- Varundus: kinnita, et testkeskkond on taastatav ja et tootmises muudatusi ei tehta.
OWASP API Top 10 kontrollid
OWASP API Security Top 10 (2023) kirjeldab riskikategooriad, mitte kohustuslikku testipaketti. Allolev tabel seob iga kategooria kontrolli ja tõendiga, mida raportis oodata.
| Risk | Mida kontrollitakse | Tõend raportis |
|---|---|---|
| API1 BOLA | Objekti ID-ga päring teise kliendi/rolli objektile | Päring ja vastus, oodatud vs tegelik tulemus |
| API2 Autentimine | Tokeni eluiga, refresh, brute force piirangud | Katse kirjeldus ja vastuse koodid |
| API3 BOPLA | Väljade tasemel õigused (nt roll, hind, staatus) | Muudetud väli ja selle mõju |
| API4 Ressursid | Päringu suurus, lehekülje suurus, kiiruspiirangud | Piirangute puudumine ja mõju |
| API5 BFLA | Administratiivsete funktsioonide ligipääs rolli järgi | Roll, otspunkt ja vastus |
| API6 Ärivoog | Tellimuse, allahindluse või maksevoogude kuritarvitamine | Sammud ja tulemus |
| API7 SSRF | Serveripoolsed päringud kasutaja antud URL-ile | Sihtkoha piirang ja vastus |
| API8 Seadistus | CORS, veateated, HTTP meetodid, TLS | Päis ja seadistus |
| API9 Varud | Vanad versioonid, dokumenteerimata otspunktid | Otspunkti loetelu ja ligipääs |
| API10 Tarbimine | Kolmandate osapoolte API-de usaldus | Andmevoog ja valideerimine |
Testkontod ja ligipääsumaatriks
Enne testi kirjuta tabel, kus iga roll ja tenant on eraldi real. See on ka raporti alus: ilma selleta ei saa väita, et õigused on kontrollitud.
| Konto | Roll | Tenant | Lubatud |
|---|---|---|---|
| A-klient | kasutaja | A | enda objektid, lugemine ja muutmine |
| B-klient | kasutaja | B | enda objektid, lugemine ja muutmine |
| A-admin | administraator | A | ainult kokkulepitud haldustoimingud |
Hoia kontode paroolid ja tokenid turvaliselt; ära saada neid esimeses e-kirjas. Testi ajal logi iga oluline päring nii, et tõendit saab hiljem korrata.
Tõendid ja raport
- Reprodutseeritavus: sammud, päring ja vastus, mida saab uuesti läbi mängida.
- Mõju: milliseid andmeid või toiminguid oleks saanud kuritarvitada.
- Kontekst: keskkond, roll, tenant ja aeg.
- Maskeerimine: tokenid, paroolid ja isikuandmed eemaldatud.
- Parandus: konkreetne soovitus ja kordustesti tingimus.
Hea raport ei ole leidude loend, vaid otsuste alus: mida parandada esimesena ja kuidas kontrollida, et parandus töötab.
Kordustest
- Vali leiud: kõik kriitilised ja need, mille parandus muutis autentimist või õigusi.
- Korda sama päringut: sama roll, tenant ja objekt, et tulemus oleks võrreldav.
- Kontrolli regressiooni: kas parandus ei avanud teist teed sama objekti juurde.
- Dokumenteeri: märgi, kas leid on suletud, osaliselt parandatud või endiselt avatud.
Kordustest ei ole kogu testi kordamine. Selle ulatus ja aeg lepitakse pakkumises kokku.
Küsimused kontrollnimekirja kohta
Mida API pentesti kontrollnimekiri sisaldab?
Kolme osa: ettevalmistus enne testi, OWASP API Top 10 kontrollid koos tõenditega ja kordustesti nimekiri. Iga punkti juures on kirjas, mida testija vajab ja mida raportist oodata.
Mitu testkontot on API pentestiks vaja?
Vähemalt kaks erineva rolli või kliendi kontot. Kui süsteemis on rohkem rolle või tenante, tuleb iga olulise kombinatsiooni jaoks anda eraldi testkonto.
Kas API pentest vajab OpenAPI kirjeldust?
See ei ole kohustuslik, kuid OpenAPI või Postmani kogu muudab ulatuse ja otspunktide katvuse kontrollitavaks ning vähendab testimüra.
Kuidas hinnata API pentesti tulemust?
Vaata kinnitatud leidude mõju, tõendeid ja parandussoovitusi, mitte ainult leidude arvu. Oluline on, kas leid on korratav ja kas parandus on kontrollitav kordustestiga.