A CodeRabbit Secure futásidejű ellenőrzéssel vizsgálja a sebezhetőségeket

A CodeRabbit Secure új Runtime Verification munkafolyamata azt vizsgálja, hogy a Deep Scan által jelzett sebezhetőség ténylegesen reprodukálható-e az adott kódban és tesztkörnyezetben. A rendszer a teszt megtervezését, futtatását és az eredmény értékelését külön kezeli.
- A Runtime Verification a Deep Scan megállapításait futtatott teszttel ellenőrzi.
- A Reproducer Guide rögzíti az előfeltételeket, a lépéseket és a várt megfigyeléseket.
- A Runtime Analysis az alkalmazás készenlétét és a célzott kódútvonal lefutását is jelzi.
- Az eredmény Reproduced, Not reproduced vagy Inconclusive lehet.
- A teszt eredménye csak a vizsgált kódverzióra és környezetre vonatkozik.
A hibajelzésből reprodukálható teszt készül
Egy feltételezett sebezhetőség ellenőrzéséhez önmagában kevés egy kérés elküldése és a válasz vizsgálata. Az alkalmazásnak futnia kell, a szükséges függőségeknek elérhetőnek kell lenniük, és a kérésnek el kell jutnia a vizsgált kódig. A CodeRabbit példája szerint egy olyan végpont teszteléséhez, amely látszólag lehetővé teszi, hogy az egyik felhasználó lekérje egy másik dokumentumát, két hitelesített felhasználóra, a dokumentum tulajdonosára és futó alkalmazásra van szükség.
A CodeRabbit Secure a Deep Scan megállapításaiból egy Reproducer Guide nevű útmutatót készít. Ez összefoglalja a szükséges előkészületeket, a követendő lépéseket és azokat a megfigyeléseket, amelyek alátámaszthatják vagy megkérdőjelezhetik a hibát. A fejlesztők az útmutatót saját tesztkörnyezetükben követhetik, vagy a Runtime Analysis segítségével futtathatják egy előkészített CodeRabbit-környezetben.
A rendszer a guide létrehozása előtt újra ellenőrzi, hogy a korábbi megállapítás továbbra is fennáll-e, mivel közben változhatott a kód. Ha a probléma már nem található meg, vagy az ellenőrzés eredménye nem egyértelmű, az útmutató generálása leáll. A futtatás a publikált guide-ban rögzített kódverziót használja, a Run gomb megnyomása pedig önmagában nem ellenőrzi újra a hibát, és nem teszteli automatikusan a legfrissebb forrást.
A futtatás feltételei és bizonyítékai
A Runtime Analysis használatához a tárháznak előkészített CodeRabbit-kódolási környezetre van szüksége. Ebben szerepelniük kell az alkalmazás futtatásához szükséges függőségeknek, konfigurációnak és indítási utasításoknak. A csapatok automatikus ellenőrzést is bekapcsolhatnak. Ilyenkor a rendszer minden Deep Scan után guide-okat készít az új, kiválasztott súlyossági szintű megállapításokhoz, majd lefuttatja azokat a tárház előkészített alapértelmezett környezetében.
Az alkalmazás folyamatának elindítása még nem bizonyítja, hogy az alkalmazás készen áll a tesztre. Előfordulhat, hogy egy szolgáltatás figyeli a portot, miközben egy szükséges függőség nem érhető el, vagy hitelesítési hiba miatt a kérés nem jut el a vizsgált végponthoz. Ezért az eredményben az Application ready és a Target exercised jelző mutatja, hogy a CodeRabbit meg tudta-e állapítani az alkalmazás készenlétét és a releváns kódútvonal lefutását.
A CodeRabbit külön tesztkörnyezet használatát javasolja, valamint azt, hogy a tesztekhez ne használjanak éles hitelesítő adatokat. Az ügynök hozzáférhet a kiválasztott környezetben beállított változókhoz, köztük titkokhoz is. Ezeket nem szabad tesztszkriptekben vagy parancsokban kiírni, mert a kimenet bizonyítékként megmaradhat.
Háromféle eredmény, szűk érvényességgel
A Runtime Analysis három állapot egyikét adja vissza. A Reproduced azt jelenti, hogy a futtatás a vizsgált feltételek mellett a megállapítást alátámasztó bizonyítékot hozott. A Not reproduced esetén a futtatás nem reprodukálta a hibát, de ettől más bemenetek vagy konfigurációk mellett még eltérő eredmény születhet. Az Inconclusive állapot azt jelzi, hogy a rendszer nem tudott megalapozott következtetést levonni, az eredmény pedig ismerteti ennek okát és korlátait.
Minden eredmény a tesztelt kódverzióra és környezetre vonatkozik. A dokumentum-hozzáférési példában a 403-as válasz csak akkor bizonyítja a jogosultság-ellenőrzés működését, ha a kérés eljutott az ownership checkhez. Egy hiányzó munkamenet miatt elutasított kérés ezt nem teszteli. Ugyanígy a „not reproduced” eredmény sem jelenti automatikusan azt, hogy az alkalmazás biztonságos. Ha a beállítási problémák miatt nem zajlott le érdemi teszt, az eredménynek inconclusive állapotban kell maradnia.
A munkafolyamat külön választja a teszttervet, a végrehajtást és az értékelést. A fejlesztők így a futtatás előtt átnézhetik az útmutató feltételezéseit, saját környezetükben is elvégezhetik a tesztet, és az eredmény mellett megőrizhetik a végrehajtás részleteit, valamint az alátámasztó bizonyítékokat.
CodeRabbit: How Runtime Verification works in CodeRabbit Secure


