Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven wat de app-evaluatiefunctie van GitHub Copilot-modernisering kan detecteren. De evaluatie omvat twee belangrijke mogelijkheden:
Probleemdetectie in drie domeinen die essentieel zijn voor uw moderniseringstraject:
- Gereedheid voor de cloud: identificeert 16 categorieën problemen, waaronder bestandssysteemgebruik, referentiebeheer, berichtenservices, databaseverbindingen, hiaten in containers, sessieafhandeling, communicatiepatronen op afstand en meer.
- Java-upgrade: markeert verouderde Java-versies, end-of-OSS-ondersteuningsframeworks (Spring Boot, Spring Cloud, Jakarta EE), honderden verwijderde of afgeschafte API's en verouderde buildhulpprogramma's zoals Ant.
- Beveiliging: detecteert 42 zwakke plekken in de beveiliging die zijn getrokken uit de ISO/IEC 5055-standaard, met betrekking tot injectieproblemen (SQL, LDAP, XPath, OS-opdracht), vastgelegde referenties en cryptografische sleutels, synchronisatieproblemen, problemen met de levenscyclus van resources en andere belangrijke GKGG's.
Toepassingskennis: voor verouderde codebasissen wordt in de evaluatie afhankelijkheden en technologieën in gebruik weergegeven, zodat u een duidelijk beeld krijgt van waar uw toepassing van afhankelijk is voordat u begint met migreren.
In de volgende secties wordt de dekking van het probleem voor elk domein uitgebreid beschreven.
Domein: cloudgereedheid
| Domein | Categorie | Detectiesamenvatting | Waarom het belangrijk is |
|---|---|---|---|
cloud-readiness |
credential-migration |
Detecteert vastgelegde AWS-referenties (aws_access_key_id, ), aws_secret_access_keyAWS Secrets Manager-gebruik en ingesloten geheimbeheerbibliotheken zoals Spring Cloud Vault. |
Veiligheid: Hardcoded inloggegevens en leverancierspecifieke geheime opslagplaatsen zijn zeer kwetsbaar. Cloudeigen toepassingen vereisen gecentraliseerde beveiliging op basis van identiteiten om diefstal van referenties te voorkomen. |
cloud-readiness |
region-configuration |
Identificeert vastgelegde AWS-regio-id's (aws.region, AWS_REGION) in code- of configuratiebestanden. |
Draagbaarheid: Met hardcoding-geografische gebieden wordt de toepassing gekoppeld aan de fysieke infrastructuur van een specifieke leverancier, waardoor de wereldwijde implementatie en tolerantie worden belemmerd. |
cloud-readiness |
storage-migration |
Detecteert AWS S3 SDK-gebruik (buckets, objecten, vooraf ondertekende URL's), S3 TransferManager en Google Cloud Storage-clientbibliotheken. | Betrouwbaarheid en uitlijning: Deze afhankelijkheden vergrendelen u in de objectopslag van een leverancier en werken niet met de systeemeigen opslagservices van het doelplatform. |
cloud-readiness |
messaging-service-migration |
Markeert afhankelijkheden en verbindingsreeksen voor Amazon SQS/SNS, Kafka, RabbitMQ (AMQP), ActiveMQ (Artemis), IBM MQ, TIBCO EMS, Solace PubSub+, Amazon Kinesis, Apache Pulsar en Google Cloud Pub/Sub. | Schaalbaarheid en betrouwbaarheid: Verouderde berichtenbrokers zijn vaak afhankelijk van vaste eindpunten en persistentie op basis van schijven die horizontale schaalaanpassing en hoge beschikbaarheid in cloudomgevingen belemmeren. |
cloud-readiness |
database-migration |
Detecteert verbindingsreeksen, stuurprogramma's en time-outinstellingen voor MongoDB, MySQL, PostgreSQL, MSSQL, Cassandra, MariaDB, Oracle, Db2, Sybase ASE, Firebird, SQLite, Google Firestore en Google Cloud Spanner. | Betrouwbaarheid: Zelfbeheerde of niet-native databases missen geautomatiseerde schaalvergroting in de cloud. Hardcoded time-outs en vaste intervallen voor opnieuw proberen kunnen leiden tot vastlopen en herhalingsstormen tijdens gedeeltelijke storingen. |
cloud-readiness |
file-system-management |
Identificeert het gebruik van relatieve/absolute paden, huispaden (/home/), file:// schema's en standaard Java IO/NIO- of Apache Commons IO-aanroepen voor lokale opslagtoegang. |
Staatloosheid: Cloudcontainers zijn kortstondig. Schrijven naar een lokaal bestandssysteem leidt tot gegevensverlies bij het opnieuw opstarten of schalen van exemplaren; permanente gegevens moeten worden ge externaliseerd. |
cloud-readiness |
local-credential |
Hiermee worden Java KeyStore-bestanden (.jks), methode-aanroepen en wachtwoorden in platte tekst (KeyStore.load, password, pwd) gemarkeerd in eigenschaps- of XML-bestanden. |
Beveiligingsrisico: Gevoelig materiaal dat is opgeslagen in duidelijke tekst of lokale bestanden, kan eenvoudig worden aangetast als onbevoegde personen toegang hebben tot de toepassingsomgeving of configuratiebestanden. |
cloud-readiness |
configuration-management |
DetecteertSystem.getenv, System.getPropertyexterne.properties/.xml/.inibestanden en Windows-registertoegang voor toepassingsinstellingen. |
Externalisatie: Besturingssysteemspecifieke opslag of lokale bestanden kunnen niet op schaal worden beheerd en kunnen niet dynamisch worden bijgewerkt zonder codewijzigingen in alle exemplaren. |
cloud-readiness |
session-management |
Identificeert gegevensopslag in HttpSession objecten en het gebruik van de tag 'distribueerbaar' in webdescriptors. |
Schaalbaarheid: Standaard HTTP-sessies zijn ongeschikt voor schalen in de cloud; de status moet worden ge externaliseerd naar een gedistribueerde cache om gegevensverlies te voorkomen tijdens het verplaatsen van verkeer tussen exemplaren. |
cloud-readiness |
remote-communication |
Detecteert nauw gekoppelde protocollen (CORBA, RMI, JCA), onbeveiligde HTTP/FTP-protocollen, Java Mail-API, direct Socket/INTUNE-kanaalgebruik en vastgelegde URL's. | Cloudcompatibiliteit en -beveiliging: Nauw gekoppelde interacties belemmeren schaalbaarheid. Niet-beveiligde protocollen en vastgelegde URL's zijn kwetsbaar en broos in dynamische cloudnetwerkomgevingen. |
cloud-readiness |
jakarta-migration |
Detecteert het gebruik van Jakarta/Java EE-specifieke API's voor NoSQL, JPA, Data, WebSockets en JAX-RS, en serverspecifieke artefacten van JBoss EAP, WebLogic of WebSphere. | Ondersteuning: Migreren naar een cloudeigen runtime vereist dat deze is afgestemd op moderne Jakarta-naamruimten en het verwijderen van afhankelijkheden van bedrijfseigen toepassingsservers om de draagbaarheid te garanderen. |
cloud-readiness |
containerization |
Markeert het ontbreken van een Dockerfile of problematische Dockerfile-instructies, zoals apt-get upgrade, syntaxis in kleine letters en problemen met de syntaxisafstand. |
Betrouwbaarheid: Standaardisatie in container-builds is vereist voor stabiele, reproduceerbare implementaties en om ervoor te zorgen dat installatiekopieën zich voorspelbaar gedragen in verschillende omgevingen. |
cloud-readiness |
scheduled-job-migration |
Identificeert AWS Lambda-handlers, Google Cloud Functions, Quartz Scheduler-afhankelijkheden en Spring Batch-verwerkingswerkstromen. | Cloud Compute-uitlijning: Geplande taken en serverloze functies moeten worden geherstructureerd om de gebeurtenisgestuurde en serverloze rekenmodellen van de doelcloud te gebruiken om de overhead van de infrastructuur te verminderen. |
cloud-readiness |
apm-migration |
Identificeert ingesloten APM-agents en -bibliotheken voor New Relic, Elastic APM en Dynatrace. | Observability: Voor deze hulpprogramma's is specifieke integratie van cloudplatforms vereist om telemetrie-, latentie- en statusgegevens correct vast te leggen in een beheerde omgeving. |
cloud-readiness |
auth-migration |
Detecteert SAML/OpenSAML-, OAuth 2.0-, OpenID-, Spring Security-, LDAP-gebruikspatronen en verouderde verificatiepatronen voor webformulieren. | Moderne identiteit: Verouderde webformulier- en LDAP-verificatie missen de flexibiliteit en beveiligingsfuncties (MFA, SSO) van moderne cloudidentiteitsproviders die op claims gebaseerd zijn. |
cloud-readiness |
os-compatibility |
Identificeert projectafhankelijkheden op Windows-specifieke Dynamic-Link Bibliotheken (.dll bestanden). | Draagbaarheid: DLL's zijn specifiek voor het besturingssysteem en worden niet uitgevoerd in standaard op Linux gebaseerde cloudcontaineromgevingen. U moet deze vervangen door platformoverschrijdende gedeelde bibliotheken. |
Domein: java-upgrade
| Domein | Categorie | Detectiesamenvatting | Waarom het belangrijk is |
|---|---|---|---|
java-upgrade |
java-version-upgrade |
Identificeert het gebruik van niet-LTS Java-versies (9, 10, 12-16, 19, 20) en oudere versies (1.x tot en met 8 en 11). | Beveiliging en ondersteuning: Oudere en niet-LTS-versies bevatten bekende beveiligingsproblemen en ontbreken langdurige onderhoudsupdates, waardoor de infrastructuur blootgesteld wordt aan aanvallen. |
java-upgrade |
framework-upgrade |
Detecteert Spring Boot-, Spring Cloud-, Spring Framework- en Jakarta EE-versies die einde van oss-ondersteuning hebben bereikt. | Ondersteuning: Verouderde frameworks ontvangen geen beveiligingsoplossingen meer, waardoor de toepassing een beveiligingsrisico heeft en niet compatibel is met moderne cloudeigen hulpprogramma's. |
java-upgrade |
deprecated-apis |
Catalogiseer honderden verwijderde of afgeschafte API's, waarondersun.misc.BASE64, Thread.stopSecurityManager methoden en eigen hooks van JBoss, Seam 2, WebLogic en WebSphere. |
Stabiliteit en draagbaarheid: Als u verwijderde API's gebruikt, loopt runtime vast op moderne JVM's. Eigen leverancierhooks (zoals WebLogic/JBoss-internals) voorkomen dat de toepassing draagbaar is in standaard runtimes. |
java-upgrade |
build-tool |
Identificeert legacy buildsystemen zoals Ant (build.xml) of projectconfiguraties specifiek voor Eclipse (WTP/JEM natures). |
Automatisering: Verouderde hulpprogramma's ontbreken de standaardconventies en afhankelijkheidsbeheer die nodig zijn voor een efficiënte integratie in moderne CI/CD-pijplijnen. |
Domein: Beveiliging (ISO 5055 geleid)
ISO/IEC 5055 is een ISO-standaard voor het meten van de interne structuur van een softwareproduct op vier bedrijfskritieke factoren: beveiliging, betrouwbaarheid, prestatie-efficiëntie en onderhoudbaarheid. Deze factoren bepalen hoe betrouwbaar, betrouwbaar en tolerant een softwaresysteem is. Iso 5055 is in wezen bedoeld om "de 8% van fouten te vinden en te voorkomen die 90% productieproblemen veroorzaken". ISO 5055 identificeert de meest kritieke en impactvolle CWEs onder elk kwaliteitskenmerk: betrouwbaarheid, prestatie-efficiëntie, beveiliging en onderhoudbaarheid. Voor de modernisering van GitHub Copilot detecteert u de gecureerde CWEs voor beveiliging die in ISO 5055 zijn gedefinieerd, zoals blijkt uit de volgende tabel.
| CWE_ID | Titel | Beschrijving |
|---|---|---|
CWE-22 |
Onjuiste beperking van een padnaam naar een beperktere map ('Path Traversal') | Het product gebruikt externe invoer om een padnaam te maken die is bedoeld om een bestand of map te identificeren binnen een beperkte hoofdmap. Het neutraliseert de speciale elementen niet goed, wat ervoor kan zorgen dat de padnaam buiten de beperkte map wordt opgelost. |
CWE-23 |
Relatieve padkruising | Het product maakt gebruik van externe invoer om een padnaam binnen een beperkte map samen te stellen, maar slaagt er niet in sequenties zoals .. te neutraliseren, die buiten die map kunnen worden omgezet. |
CWE-36 |
Absoluut pad doorkruising | Het product gebruikt externe invoer om een padnaam in een beperkte map te maken, maar neutraliseert absolute padnamen zoals /abs/path, die buiten die map kunnen leiden, niet. |
CWE-77 |
Onjuiste neutralisatie van speciale elementen die worden gebruikt in een opdracht ('Opdrachtinjectie') | Het product bouwt een opdracht op met behulp van extern beïnvloede invoer, maar neutraliseert geen speciale elementen die de beoogde opdracht naar een downstreamcomponent kunnen wijzigen. |
CWE-78 |
Onjuiste neutralisatie van speciale elementen die worden gebruikt in een os-opdracht ('Os Command Injection') | Het product bouwt een besturingssysteemcommando op met behulp van extern beïnvloede invoer, maar neutraliseert geen speciale elementen die het beoogde besturingssysteemcommando, dat naar een downstream-component wordt verzonden, kunnen wijzigen. |
CWE-88 |
Onjuiste neutralisatie van argumentscheidingstekens in een opdracht ('Argumentinjectie') | Het product maakt een opdrachtreeks voor een afzonderlijk onderdeel, maar scheidt argumenten, opties of schakelopties niet goed binnen die tekenreeks. |
CWE-79 |
Onjuiste neutralisatie van invoer tijdens het genereren van webpagina's ('Scripts op meerdere sites') | Het product neutraliseert gebruikerscontroleerbare invoer niet voordat deze in de uitvoer wordt geplaatst die als webpagina aan andere gebruikers wordt geserveerd. |
CWE-89 |
Onjuiste neutralisatie van speciale elementen die worden gebruikt in een SQL-opdracht ('SQL-injectie') | Het product maakt een SQL-opdracht met behulp van extern beïnvloede invoer, maar kan de elementen die de opdracht kunnen wijzigen niet neutraliseren, waardoor de invoer als SQL-syntaxis in plaats van als gewone gegevens kan worden geïnterpreteerd. |
CWE-564 |
SQL-injectie: Hibernate | Door Hibernate te gebruiken om dynamische SQL-instructies uit te voeren die zijn gebouwd met door de gebruiker beheerde invoer, kan een aanvaller de betekenis van de instructie wijzigen of willekeurige SQL-opdrachten uitvoeren. |
CWE-90 |
Onjuiste neutralisatie van speciale elementen die worden gebruikt in een LDAP-query ('LDAP-injectie') | Het product maakt een LDAP-query met behulp van extern beïnvloede invoer, maar slaagt er niet in elementen te neutraliseren die de beoogde query, die naar een downstreamonderdeel wordt verzonden, kunnen wijzigen. |
CWE-91 |
XML-injectie (ook wel blind XPath-injectie genoemd) | Het product neutraliseert speciale elementen die in XML worden gebruikt niet goed, waardoor aanvallers de syntaxis, inhoud of opdrachten kunnen wijzigen voordat ze worden verwerkt. |
CWE-99 |
Onjuist beheer van resource-id's ('Resourceinjectie') | Het product ontvangt invoer, maar beperkt het niet correct voordat het wordt gebruikt als id voor een resource buiten de beoogde controlesfeer. |
CWE-130 |
Onjuiste verwerking van inconsistentie van lengteparameter | Het product parseert een opgemaakt bericht of een opgemaakte structuur, maar verwerkt een lengteveld onjuist dat niet overeenkomt met de werkelijke lengte van de bijbehorende gegevens. |
CWE-259 |
Gebruik van een in code vastgelegd wachtwoord | Het product bevat een in code vastgelegd wachtwoord dat wordt gebruikt voor zijn eigen binnenkomende verificatie of uitgaande communicatie met externe onderdelen. |
CWE-321 |
Gebruik van cryptografische sleutel met code | Het product maakt gebruik van een in code vastgelegde, onveranderbare cryptografische sleutel. |
CWE-434 |
Onbeperkte upload van bestand met gevaarlijk type | Het product staat het uploaden van gevaarlijke bestandstypen toe die automatisch binnen de omgeving worden verwerkt. |
CWE-456 |
Initialisatie van een variabele ontbreekt | Het product initialiseert geen kritieke variabelen, waardoor de uitvoeringsomgeving onverwachte waarden gebruikt. |
CWE-457 |
Gebruik van niet-geïnitialiseerde variabele | De code maakt gebruik van een variabele die niet is geïnitialiseerd, wat leidt tot onvoorspelbare of onbedoelde resultaten. |
CWE-477 |
Gebruik van verouderde functie | De code maakt gebruik van afgeschafte of verouderde functies, wat aangeeft dat deze niet actief wordt gecontroleerd of onderhouden. |
CWE-502 |
Deserialisatie van niet-vertrouwde gegevens | Het product ontserialiseerd niet-vertrouwde gegevens zonder voldoende te zorgen dat de resulterende gegevens geldig zijn. |
CWE-543 |
Gebruik van Singleton Pattern Without Synchronization in een multithreaded context | Het product maakt gebruik van het singleton-patroon bij het creëren van een resource in een multithreaded omgeving zonder adequate synchronisatie. |
CWE-567 |
Niet-gesynchroniseerde toegang tot gedeelde gegevens in een multithreaded context | Het product kan gedeelde gegevens, zoals statische variabelen, niet correct synchroniseren tussen threads, wat leidt tot niet-gedefinieerd gedrag. |
CWE-570 |
Expressie is altijd onwaar | Het product bevat een expressie die altijd als onwaar wordt geëvalueerd. |
CWE-571 |
Expressie is altijd waar | Het product bevat een expressie die altijd resulteert in waar. |
CWE-606 |
Ongecontroleerde invoer voor lusvoorwaarde | Het product controleert de invoer voor lusvoorwaarden niet goed, wat kan leiden tot dienstenweigering door overmatig itereren. |
CWE-643 |
Onjuiste neutralisatie van gegevens binnen XPath-expressies ('XPath-injectie') | Het product gebruikt externe invoer om dynamisch een XPath-expressie te maken voor een XML-database, maar kan die invoer niet geneutraliseerd worden. |
CWE-652 |
Onjuiste neutralisatie van gegevens binnen XQuery-expressies ('XQuery-injectie') | Het product maakt gebruik van externe invoer om dynamisch een XQuery-expressie samen te stellen, maar kan die invoer niet correct geneutraliseerd worden. |
CWE-662 |
Onjuiste synchronisatie | Het product staat meerdere threads of systemen toegang tot een gedeelde resource toe zonder de juiste synchronisatie, waardoor mogelijk problemen met gelijktijdige toegang ontstaan. |
CWE-665 |
Onjuiste initialisatie | Het product initialiseert een resource mogelijk niet of initialiseert deze onjuist, waardoor de resource in een onverwachte toestand kan worden achtergelaten wanneer deze wordt geopend. |
CWE-667 |
Onjuist vergrendelen | Het product verkrijgt of laat de vergrendeling van een resource niet goed vrij, wat leidt tot onverwachte toestandveranderingen. |
CWE-672 |
Bewerking op een hulpbron na verstrijken of vrijgave | Het product heeft toegang tot of werkt op een resource nadat deze is verlopen, is vrijgegeven of is ingetrokken. |
CWE-681 |
Onjuiste conversie tussen numerieke typen | Gegevens kunnen worden weggelaten of omgezet in onverwachte waarden tijdens het converteren van het type, wat gevaarlijk kan zijn als ze worden gebruikt in gevoelige contexten. |
CWE-682 |
Onjuiste berekening | Het product voert een berekening uit waarmee onjuiste resultaten worden gegenereerd die later worden gebruikt bij beslissingen over beveiligingskritiek of resourcebeheer. |
CWE-732 |
Onjuiste machtigingstoewijzing voor kritieke resource | Machtigingen voor een beveiligingskritieke resource worden opgegeven op een manier waarmee onbedoelde actoren deze kunnen lezen of wijzigen. |
CWE-772 |
Ontbrekende vrijgave van resource na effectieve levensduur | Het product laat geen bron los nadat de effectieve levensduur is beëindigd en de bron niet meer nodig is. |
CWE-775 |
Ontbrekende release van bestandsdescriptor of besturingshandvat na afloop van de levensduur | Het product kan geen bestandsdescriptor vrijgeven of afhandelen nadat het niet meer nodig is. |
CWE-778 |
Onvoldoende logboekregistratie | Het product kan geen beveiligingskritieke gebeurtenis vastleggen of belangrijke details weglaten bij het vastleggen ervan. |
CWE-783 |
Fout in de logica van operatorprioriteit | Een expressie maakt gebruik van onjuiste logica die wordt veroorzaakt door de prioriteit van de operator. |
CWE-789 |
Geheugentoewijzing met overmatige groottewaarde | Het product wijst geheugen toe op basis van een niet-vertrouwde, grote waarde zonder ervoor te zorgen dat het binnen de verwachte limieten valt. |
CWE-798 |
Gebruik van in code vastgelegde referenties | Het product bevat in code vastgelegde referenties, zoals een wachtwoord of cryptografische sleutel. |
CWE-820 |
Ontbrekende synchronisatie | Het product maakt gelijktijdig gebruik van een gedeelde resource zonder toegang te synchroniseren. |
CWE-821 |
Onjuiste synchronisatie | Het product maakt gelijktijdig gebruik van een gedeelde resource, maar synchroniseert de toegang niet correct. |
CWE-835 |
Lus met onbereikbare afsluitvoorwaarde ('Oneindige lus') | Het product bevat een iteratie of lus met een beëindigingsvoorwaarde die niet kan worden bereikt. |
CWE-611 |
Onjuiste beperking van externe XML-entiteitsverwijzing | Het product verwerkt XML-documenten met entiteiten en URI's die buiten de beoogde besturingssfeer worden opgelost. |
CWE-1057 |
Gegevenstoegangsbewerkingen buiten het verwachte Data Manager-onderdeel | Het product voert bewerkingen voor gegevenstoegang uit die een toegewezen, centraal data manager-onderdeel overslaan dat standaard is vereist. |