Megosztás a következőn keresztül:


A GitHub Copilot modernizálásának felmérési lefedettsége

Ez a cikk azt ismerteti, hogy a GitHub Copilot modernizáció alkalmazásértékelési funkciója mit képes észlelni. Az értékelés két fő képességet fed le:

  • Három, a modernizációs folyamat szempontjából kritikus tartományban történő problémaészlelés:

    • Felhőbeli felkészültség: A problémák 16 kategóriáját azonosítja, beleértve a fájlrendszer használatát, a hitelesítő adatok kezelését, az üzenetkezelési szolgáltatásokat, az adatbázis-kapcsolatokat, a tárolókezelési hiányosságokat, a munkamenet-kezelést, a távoli kommunikációs mintákat stb.
    • Java-frissítés: Megjelöli az elavult Java-verziókat, az operációs rendszer végét támogató keretrendszereket (Spring Boot, Spring Cloud, Jakarta EE), több száz eltávolított vagy elavult API-t, valamint régi buildelési eszközöket, például az Antet.
    • Biztonság: Az ISO/IEC 5055 szabványból kinyert 42 biztonsági rést észlel, amelyek az injektálási biztonsági réseket (SQL, LDAP, XPath, OPERÁCIÓS-parancs), a szigorúan kódolt hitelesítő adatokat és titkosítási kulcsokat, szinkronizálási problémákat, erőforrás-életciklus-problémákat és egyéb nagy hatású CWE-ket fedik le.
  • Alkalmazásértelmezés: az örökölt kódbázisok esetében az értékelés felfedi a használatban lévő függőségeket és technológiákat, így a migrálás megkezdése előtt világos képet kaphat arról, hogy mire támaszkodik az alkalmazás.

Az alábbi szakaszok részletesen ismertetik az egyes tartományokra vonatkozó probléma lefedettségét.

Tartomány: felhőbeli felkészültség

Domain Kategória Észlelés összegzése Miért fontos?
cloud-readiness credential-migration Érzékeli a rögzített AWS-hitelesítő adatokat (aws_access_key_id, aws_secret_access_key), az AWS Secrets Manager használatát és a beágyazott titkos kezelési könyvtárakat, mint például a Spring Cloud Vaultot. Biztonsági: A szigorúan kódolt hitelesítő adatok és a szállítóspecifikus titkos tárolók rendkívül sebezhetőek. A natív felhőbeli alkalmazások központi, identitásalapú biztonságot igényelnek a hitelesítő adatok ellopásának megakadályozása érdekében.
cloud-readiness region-configuration A kód- vagy konfigurációs fájlokban a merevlemezes AWS-régióazonosítókat (aws.region, AWS_REGION) azonosítja. Hordozhatóság: A hardcoding geographies az alkalmazást egy adott gyártó fizikai infrastruktúrájához konfigurálja, ami akadályozza a globális üzembe helyezést és a rugalmasságot.
cloud-readiness storage-migration Észleli az AWS S3 SDK használatát (tárolók, objektumok, előre aláírt URL-címek), az S3 TransferManager-t, valamint a Google Cloud Storage ügyfélkönyvtárakat. Megbízhatóság és igazítás: Ezek a függőségek a szolgáltató objektumtárolójához kötik Önt, és nem működnek a célplatform natív tárolási szolgáltatásaival.
cloud-readiness messaging-service-migration Az Amazon SQS/SNS, a Kafka, a RabbitMQ (AMQP), az ActiveMQ (Artemis), az IBM MQ, a TIBCO EMS, a Solace PubSub+, az Amazon Kinesis, az Apache Pulsar és a Google Cloud Pub/Sub függőségeit és kapcsolati sztringeit jelöli. Méretezhetőség és megbízhatóság: Az örökölt üzenetközvetítők gyakran rögzített végpontokra és lemezalapú adatmegőrzésre támaszkodnak, amelyek akadályozzák a horizontális skálázást és a magas rendelkezésre állást a felhőkörnyezetekben.
cloud-readiness database-migration Észleli a MongoDB, a MySQL, a PostgreSQL, az MSSQL, a Cassandra, a MariaDB, az Oracle, a Db2, a Sybase ASE, a Firebird, az SQLite, a Google Firestore és a Google Cloud Spanner kapcsolati karakterláncokat, illesztőprogramokat és időtúllépési beállításokat. Megbízhatóság: Az önkiszolgáló vagy nem natív adatbázisok nem rendelkeznek automatizált felhőméretezéssel. A rögzített időtúllépések és a rögzített újrapróbálkozási időközök blokkolást és "újrapróbálkozási viharokat" okozhatnak részleges kimaradások során.
cloud-readiness file-system-management Azonosítja a relatív/abszolút elérési utak, az otthoni útvonalak (/home/), file:// a sémák és a standard Java IO/NIO- vagy Apache Commons IO-hívások használatát a helyi tárhoz való hozzáféréshez. Állapottalanság: A felhőtárolók rövid élettartamúak. A helyi fájlrendszerbe való írás adatvesztéshez vezet a példány újraindítása vagy skálázási műveletek esetén; az állandó adatokat külsővé kell tenni.
cloud-readiness local-credential Java KeyStore -.jksfájlokat, KeyStore.load metódushívásokat és egyértelmű szöveges jelszavakat (password, pwd) jelöl meg tulajdonság- vagy XML-fájlokban. Biztonsági kockázat: A tiszta szövegben vagy helyi fájlokban tárolt bizalmas anyagok könnyen megsérülhetnek, ha jogosulatlan személyek férnek hozzá az alkalmazáskörnyezethez vagy a konfigurációs fájlokhoz.
cloud-readiness configuration-management Észleli System.getenv, System.getProperty, a külső .properties/.xml/.ini fájlokat és a Windows Beállításjegyzékhez való hozzáférést az alkalmazásbeállításokhoz. Külsősítés: Az operációsrendszer-specifikus tárolók vagy helyi fájlok nem kezelhetők nagy méretekben, és nem frissíthetők dinamikusan kódmódosítások nélkül az összes példányon.
cloud-readiness session-management Azonosítja az objektumokban lévő HttpSession adattárolást és a "terjeszthető" címke használatát a webleírókban. Skálázhatóság: A standard HTTP-munkamenetek nem alkalmasak felhőbeli skálázásra; az állapotot egy elosztott gyorsítótárba kell kiterjeszteni, hogy megelőzhető legyen az adatvesztés a példányok közötti forgalomváltás során.
cloud-readiness remote-communication Észleli a szorosan összekapcsolt protokollokat (CORBA, RMI, JCA), a nem biztonságos HTTP/FTP protokollokat, a Java Mail API-t, a közvetlen Socket/NIO-csatornahasználatot és a hardcoded URL-címeket. Felhőkompatibilitás és biztonság: A szorosan összekapcsolt interakciók akadályozzák a méretezhetőséget. A nem biztonságos protokollok és a rögzített URL-címek sebezhetőek és törékenyek a dinamikus felhőalapú hálózati környezetekben.
cloud-readiness jakarta-migration Észleli a Jakarta/Java EE-specifikus API-k használatát a NoSQL, JPA, Data, WebSockets és JAX-RS esetében, valamint a JBoss EAP, WebLogic vagy WebSphere szerver-specifikus objektumait. Támogatottság: A natív felhőbeli futtatókörnyezetbe való migráláshoz igazodni kell a modern Jakarta-névterekhez, és el kell távolítani a védett alkalmazáskiszolgáló-függőségeket a hordozhatóság biztosítása érdekében.
cloud-readiness containerization Jelzi a Dockerfile hiányát vagy a problémás Dockerfile-utasításokat, például a kisbetűs szintaxist és a szintaxis térközproblémákat. Megbízhatóság: A tároló buildjeinek szabványosítása szükséges a stabil, reprodukálható üzemelő példányokhoz, valamint annak biztosításához, hogy a rendszerképek kiszámíthatóan viselkedjenek a különböző környezetekben.
cloud-readiness scheduled-job-migration Azonosítja az AWS Lambda kezelőit, a Google Cloud Functionst, a Quartz Scheduler-függőségeket és a Spring Batch feldolgozási munkafolyamatait. Felhőalapú számításigazítás: Az ütemezett feladatokat és a kiszolgáló nélküli függvényeket újra kell átcsoportosítani a célfelhő eseményvezérelt és kiszolgáló nélküli számítási modelljeinek használatához az infrastruktúra terhelésének csökkentése érdekében.
cloud-readiness apm-migration A New Relic, Elastic APM és Dynatrace beágyazott APM-ügynökeit és kódtárait azonosítja. Megfigyelhetőség: Ezek az eszközök speciális felhőplatform-integrációt igényelnek a telemetria, a késés és az állapotadatok megfelelő rögzítéséhez egy felügyelt környezetben.
cloud-readiness auth-migration SAML/OpenSAML, OAuth 2.0, OpenID, Spring Security, LDAP-használat és régi webform-hitelesítési mintákat észlel. Modern identitás: Az örökölt webűrlap és AZ LDAP-hitelesítés nem rendelkezik a modern jogcímalapú felhőalapú identitásszolgáltatók rugalmasságával és biztonsági funkcióival (MFA, SSO).
cloud-readiness os-compatibility A Windows-specifikus Dynamic-Link-kódtárak (.dll fájlok) projektfüggőségeit azonosítja. Hordozhatóság: A DLL-ek operációs rendszerspecifikusak, és nem szabványos Linux-alapú felhőalapú tárolókörnyezetekben futnak. Ezeket platformfüggetlen megosztott kódtárakra kell cserélni.

Tartomány: java-upgrade

Domain Kategória Észlelés összegzése Miért fontos?
java-upgrade java-version-upgrade Azonosítja a nem LTS Java-verziók (9, 10, 12-16, 19, 20) és az örökölt verziók (1.x-8 és 11) használatát. Biztonság és támogatás: A régebbi és nem LTS-verziók ismert biztonsági réseket tartalmaznak, és nem tartalmaznak hosszú távú karbantartási frissítéseket, így az infrastruktúra támadásoknak lesz kitéve.
java-upgrade framework-upgrade Észleli a Spring Boot, a Spring Cloud, a Spring Framework és a Jakarta EE azon verzióit, amelyek elérték a nyílt forráskódú támogatás végét. Támogatottság: A elavult keretrendszerek nem kapnak biztonsági javításokat, így az alkalmazás biztonsági kockázatot jelent, és nem kompatibilis a modern natív felhőbeli eszközökkel.
java-upgrade deprecated-apis Több száz eltávolított vagy elavult API-t tartalmaz, beleértve sun.misc.BASE64Thread.stopSecurityManager a JBoss, a Seam 2, a WebLogic és a WebSphere által használt módszereket és védett horgokat. Stabilitás és hordozhatóság: Az eltávolított API-k használata futásidejű összeomlásokat okoz a modern JVM-eken. A saját gyártói horgok (például a WebLogic/JBoss belső részei) akadályozzák, hogy az alkalmazás hordozható legyen a standard futtatókörnyezetek között.
java-upgrade build-tool Azonosítja az olyan régi buildelési rendszereket, mint az Ant (build.xml) vagy az Eclipse-specifikus projektkonfigurációk (WTP/JEM-természetek). Automatizálás: Az örökölt eszközök nem rendelkeznek a modern CI-/CD-folyamatokba való hatékony integrációhoz szükséges szabványos konvenciók és függőségek kezelésével.

Tartomány: Biztonság (ISO 5055 irányelvek alapján)

Az ISO/IEC 5055 egy ISO-szabvány a szoftvertermék belső szerkezetének mérésére négy üzleti szempontból kritikus tényező alapján: biztonság, megbízhatóság, teljesítményhatékonyság és karbantarthatóság. Ezek a tényezők határozzák meg, hogy mennyire megbízható, megbízható és rugalmas egy szoftverrendszer. Az ISO 5055 lényegében a gyártási problémák 90%-át okozó hibák 8%-ának a megtalálására és megelőzésére szolgál. Az ISO 5055 a legkritikusabb és leghatásosabb CWE-eket azonosítja az egyes minőségi jellemzők alatt: megbízhatóság, teljesítményhatékonyság, biztonság és karbantarthatóság. A GitHub Copilot modernizálása során az ISO 5055-ben meghatározott, válogatott biztonsági CWE-k elleni észlelés történik, ahogyan az az alábbi táblázatban látható.

CWE_ID Cím Leírás
CWE-22 A korlátozott könyvtár elérési útvonalának nem megfelelő korlátozása ('útvonal bejárása') A termék külső bemenetet használ egy elérési út létrehozásához, amely egy fájl vagy könyvtár azonosítására szolgál egy korlátozott szülőkönyvtár alatt. Ez azonban nem semlegesíti megfelelően azokat a speciális elemeket, amelyek miatt az elérési út neve a korlátozott könyvtáron kívül feloldódhat.
CWE-23 Relatív elérési út bejárása A termék külső bemenettel hoz létre egy elérési utat egy korlátozott könyvtárban, de nem semlegesíti az olyan szekvenciákat, mint például a .., amelyek az adott könyvtáron kívülre vezethetnek.
CWE-36 Abszolút elérési út átlépés A termék külső bemenettel hoz létre egy elérési utat egy korlátozott könyvtárban, de nem tudja semlegesíteni az abszolút elérésiút-sorozatokat, mint például a /abs/path, amelyek a könyvtáron kívülre is mutathatnak.
CWE-77 Parancsban használt speciális elemek nem megfelelő semlegesítése ("parancsinjektálás") A termék külsőleg befolyásolt bemenet használatával hoz létre parancsot, de nem semlegesíti azokat a speciális elemeket, amelyek módosíthatják az alárendelt összetevőnek küldött parancsot.
CWE-78 Az operációsrendszer-parancsban használt speciális elemek nem megfelelő semlegesítése (az operációsrendszer-parancs injektálása) A termék egy operációsrendszer-parancsot hoz létre külsőleg befolyásolt bemenet használatával, de nem tudja semlegesíteni azokat a speciális elemeket, amelyek módosíthatják az alárendelt összetevőnek küldött tervezett operációsrendszer-parancsot.
CWE-88 Argumentumelválasztók nem megfelelő semlegesítése parancsban ('argumentuminjektálás') A termék egy parancssztringet hoz létre egy külön összetevőhöz, de nem tagolja megfelelően az argumentumokat, a beállításokat és a kapcsolókat a sztringen belül.
CWE-79 A bemenet nem megfelelő semlegesítése a weblapok létrehozása során ("webhelyközi szkriptelés") A termék nem tudja semlegesíteni a felhasználó által vezérelhető bemenetet, mielőtt a más felhasználóknak kiszolgált weblapként használt kimenetbe helyezené.
CWE-89 Az SQL-parancsban használt speciális elemek nem megfelelő semlegesítése (SQL-injektálás) A termék egy SQL-parancsot hoz létre külsőleg befolyásolt bemenet használatával, de nem semlegesíti azokat az elemeket, amelyek módosíthatják a parancsot, így a bemenetek a szokásos adatok helyett SQL-szintaxisként értelmezhetők.
CWE-564 SQL-injektálás: Hibernate Ha hibernálással hajt végre felhasználó által vezérelt bemenettel létrehozott dinamikus SQL-utasításokat, a támadó módosíthatja az utasítás jelentését, vagy tetszőleges SQL-parancsokat hajthat végre.
CWE-90 LDAP-lekérdezésben használt speciális elemek nem megfelelő semlegesítése (LDAP-injektálás) A termék egy LDAP-lekérdezést hoz létre külsőleg befolyásolt bemenet használatával, de nem tudja semlegesíteni azokat az elemeket, amelyek módosíthatják az alárendelt összetevőnek küldött kívánt lekérdezést.
CWE-91 XML-injektálás (más néven Blind XPath-injektálás) A termék nem semlegesíti megfelelően az XML-ben használt speciális elemeket, így a támadók a feldolgozás előtt módosíthatják a szintaxist, a tartalmat vagy a parancsokat.
CWE-99 Az erőforrás-azonosítók helytelen ellenőrzése ("erőforrásinjektálás") A termék bemenetet kap, de nem korlátozza megfelelően, mielőtt azonosítóként használná egy, a kívánt szabályozási területen kívüli erőforráshoz.
CWE-130 A hosszparaméter inkonzisztencia helytelen kezelése A termék formázott üzenetet vagy struktúrát elemez, de helytelenül kezel egy olyan hosszmezőt, amely nem felel meg a társított adatok tényleges hosszának.
CWE-259 A kódolt jelszó használata A termék tartalmaz egy szigorúan kódolt jelszót, amelyet a saját bejövő hitelesítéséhez vagy külső összetevők felé irányuló kimenő kommunikációhoz használnak.
CWE-321 A kemény kóddal kódolt titkosítási kulcs használata A termék egy rögzített, megváltoztathatatlan titkosítási kulcsot használ.
CWE-434 Veszélyes típusú fájl korlátlan feltöltése A termék lehetővé teszi a környezetében automatikusan feldolgozott veszélyes fájltípusok feltöltését.
CWE-456 Egy változó kezdeti értékének hiánya A termék nem inicializál kritikus változókat, ezért a végrehajtási környezet váratlan értékeket használ.
CWE-457 Nem inicializált változó használata A kód egy nem inicializált változót használ, amely kiszámíthatatlan vagy nem várt eredményeket eredményez.
CWE-477 Elavult függvény használata A kód elavult vagy elavult függvényeket használ, ami arra utal, hogy nincs aktívan felülvizsgálva vagy karbantartva.
CWE-502 Nem megbízható adatok deszerializálása A termék anélkül deszerializálja a nem megbízható adatokat, hogy az eredményül kapott adatok megfelelőek lennének.
CWE-543 Singleton minta használata szinkronizálás nélkül többszálas környezetben A termék az egyszeri mintát használja, amikor egy többszálú környezetben, megfelelő szinkronizálás nélkül hoz létre erőforrást.
CWE-567 Megosztott adatokhoz való nem aszinkron hozzáférés többszálú környezetben A termék nem tudja megfelelően szinkronizálni a megosztott adatokat, például a statikus változókat a szálak között, ami nem definiált viselkedéshez vezet.
CWE-570 A kifejezés mindig hamis A termék egy olyan kifejezést tartalmaz, amely mindig hamis értéket ad vissza.
CWE-571 A kifejezés mindig igaz A termék olyan kifejezést tartalmaz, amely mindig igaz értéket ad.
CWE-606 Ellenőrizetlen bemenet a ciklusfeltételhez A termék nem ellenőrzi megfelelően a ciklusfeltételekhez használt bemeneteket, ami szolgáltatásmegtagadást eredményezhet a túlzott ismétlődő hurkolás miatt.
CWE-643 Az adatok nem megfelelő semlegesítése az XPath-kifejezésekben (XPath-injektálás) A termék külső bemenetet használ egy XPath-kifejezés dinamikus létrehozásához egy XML-adatbázishoz, de nem tudja semlegesíteni ezt a bemenetet.
CWE-652 Az adatok nem megfelelő semlegesítése az XQuery-kifejezésekben (XQuery Injection) A termék külső bemenetet használ egy XQuery-kifejezés dinamikus létrehozásához, de nem tudja megfelelően semlegesíteni a bemenetet.
CWE-662 Helytelen szinkronizálás A termék lehetővé teszi több szál vagy rendszer hozzáférését egy megosztott erőforráshoz megfelelő szinkronizálás nélkül, ami egyidejű hozzáférési problémákat okozhat.
CWE-665 Helytelen inicializálás A termék nem inicializál vagy helytelenül inicializál egy erőforrást, ami váratlan állapotba hozhatja, ha hozzáfér.
CWE-667 Helytelen zárolás A termék nem szerez be vagy old fel zárolást egy erőforráson, ami váratlan állapotváltozásokat eredményez.
CWE-672 Művelet egy erőforráson a lejárat vagy a kiadás után A termék a lejárt, felszabadított vagy visszavont erőforráshoz fér hozzá vagy működik.
CWE-681 Numerikus típusok helytelen konvertálása Az adatok a típusátalakítás során kihagyhatók vagy lefordíthatók váratlan értékekre, ami veszélyes lehet, ha bizalmas környezetekben használják őket.
CWE-682 Helytelen számítás A termék olyan számítást végez, amely később helytelen eredményeket hoz létre a biztonsági szempontból kritikus döntésekben vagy az erőforrás-kezelésben.
CWE-732 Helytelen engedély-hozzárendelés kritikus erőforráshoz A biztonsági szempontból kritikus erőforrások engedélyeit úgy adhatók meg, hogy a nem szándékos szereplők elolvashassák vagy módosíthassák azt.
CWE-772 Az erőforrás hiányzó kiadása az érvényes élettartam lejárta után A termék nem ad ki erőforrást, miután a tényleges élettartama véget ért, és már nincs rá szükség.
CWE-775 A fájlleíró vagy a fogantyú elmulasztott felszabadítása a hatékony élettartam után A termék nem adja ki a fájlleíró vagy fogantyú értéket, miután már nincs rá szükség.
CWE-778 Nem megfelelő naplózás A termék nem rögzíti a biztonsági szempontból kritikus eseményt, vagy kihagyja a fontos részleteket a naplózáskor.
CWE-783 Operátori elsőbbséget jelző logikai hiba Egy kifejezés helytelen logikát használ, amelyet az operátorok elsőbbsége okoz.
CWE-789 Memóriafoglalás túlzott méretértékkel A termék nem megbízható, nagy méretű érték alapján foglal le memóriát anélkül, hogy a várt korlátokon belül lenne.
CWE-798 A kemény kóddal kódolt hitelesítő adatok használata A termék kemény kódú hitelesítő adatokat tartalmaz, például jelszót vagy titkosítási kulcsot.
CWE-820 Hiányzó szinkronizálás A termék egyidejűleg használ egy megosztott erőforrást a hozzáférés szinkronizálása nélkül.
CWE-821 Helytelen szinkronizálás A termék egyidejűleg használ megosztott erőforrást, de nem szinkronizálja megfelelően a hozzáférést.
CWE-835 Hurok elérhetetlen kilépési feltétellel ("Végtelen hurok") A termék olyan iterációt vagy ciklust tartalmaz, amely nem érhető el kilépési feltétellel.
CWE-611 Az XML külső entitásra vonatkozó referencia nem megfelelő korlátozása A termék olyan XML-dokumentumokat dolgoz fel, amelyek olyan URI-kkal rendelkező entitásokat tartalmaznak, amelyek a kívánt vezérlési területen kívül oldódnak fel.
CWE-1057 Adatelérési műveletek a várt Data Manager-összetevőn kívül A termék olyan adatelérési műveleteket hajt végre, amelyek megkerülik a tervezéshez szükséges dedikált, központi adatkezelő összetevőt.

Következő lépések