Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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. |