CVE-2026-71886 in Bouncy Castle
Riassunto
di VulDB • 03/10/2026
In Bouncy Castle per Java prima della versione 1.86, l'API di alto livello OpenPGP certificate API accettava una certificazione o delega di fiducia da parte di terze parti proveniente da qualsiasi chiave componente del certificato emittente, senza richiedere che tale componente fosse stato autorizzato a certificare. I metodi `OpenPGPCertificate.getCertificationBy()` e `getDelegationBy()` risolvono una firma di terze parti abbinando l'identificatore della chiave dell'emittente con ogni chiave del certificato di terza parte, verificando quindi la catena di binding dell'emittente e la firma stessa; non veniva però controllato se la componente emittente possedesse il flag CERTIFY_OTHER (certification key flag) definito nella sezione 5.2.3.29 della RFC 9580 al momento della creazione della firma. Una subchiave vincolata esclusivamente con SIGN_DATA - ovvero la subchiave per la firma online nell'arrangiamento offline-primary che i flag delle chiavi servono proprio a esprimere - poteva quindi emettere una certificazione positiva dell'User ID su un'identità controllata dall'attaccante, oppure una delega diretta di fiducia di tipo introducer con profondità uno e trust completo; l'API restituiva tali elementi come catene di firme valide attribuite al certificato di terza parte. Un'applicazione che trattasse `getCertificationBy(...).isValid()` o `getDelegationBy(...)` come decisione relativa all'identità o a un introductor fidato, attribuiva così l'affermazione dell'attaccante alla chiave primaria offline. Lo stesso valeva per una subchiave RSA legacy vincolata esclusivamente per la crittografia, il cui algoritmo è comunque in grado di firmare. Questo non comporta la falsificazione della firma della chiave primaria né il recupero di alcuna private key; promuove invece una già compromessa restricted subkey a autorità emittente dell'identità della chiave primaria, vanificando il contenimento garantito dalla separazione dei flag delle chiavi. Una certificazione o delega da parte di terze parti viene ora attribuita al certificato emittente solo quando la componente chiave che l'ha generata è la primary key, oppure una subchiave che possedeva CERTIFY_OTHER al momento della creazione della firma; in questo modo le subchiavi con capacità di certificazione continuano ad essere accettate. Le chiavi primarie sono accettate indipendentemente dai loro flag delle chiavi, poiché per costruzione una chiave primaria ha capacità di certificazione e i certificati privi del sotto-pacchetto key flags sono comuni. Le revocazioni da parte di terze parti sono deliberatamente escluse dalla regola, in quanto il rifiuto di onorarle manterrebbe attiva la fiducia anziché ritirarla.
If you want to get best quality of vulnerability data, you may have to visit VulDB.