Come posso testare e proteggere i parser ASN.1?

6

Per quanto ne so, .NET non ha un parser ASN.1 per leggere o scrivere dati costruito nel quadro. Ciò significa che qualsiasi codice che crea o verifica i dati ASN.1 utilizza una libreria di terze parti con qualità variabile. Castello gonfiabile e JavaScience per .NET sono alcuni esempi di tali librerie.

Sono a conoscenza di alcune installazioni di produzione che utilizzano parser ASN1 meno diffusi e meno testati. Considerando i problemi di analisi dei dati in passato, e anche che OpenSSL ha ancora problemi di analisi ASN1 Penso che l'analisi ASN1 sia trascurata.

Sfondo

ASN.1 viene utilizzato nei certificati TLS, nella posta elettronica X.400, nei servizi di directory LDAP (Lightweight Directory Access Protocol) X.500, H.323 (VoIP), Kerberos, BACnet e Simple network management protocol (SNMP) per descrivere le unità di dati del protocollo (PDU) che scambiano. Qualsiasi software personalizzato che legge o scrive dati ASN.1 al di fuori di un wrapper attendibile potrebbe esporre il sistema al rischio.

Vedi Wikipedia per ulteriori informazioni

Domanda

  • Come posso testare e proteggere i parser ASN.1?

  • Quali parser sono più sicuri di altri?

  • Come fa .NET AD LDAP, Certificate oid validation e kerberos senza una libreria incorporata?

posta random65537 01.07.2012 - 04:50
fonte

3 risposte

3

Non è possibile test un parser ASN.1 per la correzione, perché è un software complesso e non sappiamo come dimostrare che un dato software sia corretto. Quello che puoi fare è fare affidamento su una biblioteca con buona reputazione. Potresti dare un'occhiata a questa domanda . In alternativa, reimplementalo tu stesso; questo non è molto difficile se ci si attiene a un sottoinsieme lavorabile di ASN.1 (ad esempio solo codifica DER, solo alcuni tipi di stringhe, ...).

. NET ha necessariamente un codice integrato per fare l'analisi ASN.1; questo non significa che ti dà necessariamente accesso a quella libreria.

Almeno, le librerie ASN.1 scritte in linguaggio Java o .NET traggono vantaggio dalla resistenza innata di questi linguaggi al buffer overflow (se si verifica un overflow del buffer, viene generata un'eccezione, che è leggermente migliore, da un punto di sicurezza di vista, per sovrascrivere effettivamente i dati in memoria).

    
risposta data 14.09.2012 - 19:35
fonte
0

Penso che il codificatore / decodificatore ASN.1 possa essere generato automaticamente da una descrizione formale del formato, e quindi dovrebbe essere relativamente al sicuro da errori (di programmazione). Controllare i compilatori ASN.1. È inoltre possibile cercare ASN.1 nel database CVE MITER e verificare quanto siano comuni tali difetti e chi li esegue. O se una biblioteca come il castello gonfiabile in generale ha una tendenza per tali difetti, rispetto a, ad esempio, OpenSSL. Penso che il rischio sia molto basso, so solo di un incidente del genere.

    
risposta data 18.07.2012 - 16:15
fonte
0

Qual è la tua abilità quando si tratta di analizzare. In realtà, di cosa stiamo parlando in generale, se vuoi essere in grado di convalidare ASN.1, fortunatamente dal momento che esiste una definizione EBNF per ASN.1, sarebbe un progetto lungo, ma potresti utilizzare qualsiasi LARR Parser quadri per aiutare a generare il codice.

Fonderesti essenzialmente per ricreare la libreria.

Non sono sicuro di cosa intendi per sicurezza. Una PDU valida sarebbe conforme a ASN.1. Ma stai considerando un problema diverso se vuoi limitare il tipo o la quantità di dati che possono essere richiesti usando questo metodo. L'unica cosa che posso dire è che le librerie più popolari probabilmente hanno avuto un controllo più approfondito, in definitiva solo una parte del sistema generale che verrà implementato.

    
risposta data 15.08.2012 - 18:58
fonte

Leggi altre domande sui tag