Passa al contenuto principale

4. Security Considerations (Considerazioni di sicurezza)

4. Security Considerations (Considerazioni di sicurezza)

Le considerazioni di sicurezza per JSONPath possono derivare da:

  • vettori di attacco sulle implementazioni JSONPath,

  • vettori di attacco su come sono formate le interrogazioni JSONPath, e

  • il modo in cui JSONPath è usato in meccanismi rilevanti per la sicurezza.

4.1. Attack Vectors on JSONPath Implementations (Vettori di attacco sulle implementazioni JSONPath)

Storicamente, JSONPath è stato spesso implementato fornendo parti dell'interrogazione a un motore del linguaggio di programmazione sottostante, ad esempio alla funzione eval() di JavaScript. Questo approccio è noto per condurre ad attacchi di injection e richiederebbe una validazione perfetta dell'input per prevenire tali attacchi (vedere Sezione 12 di [RFC8259] per considerazioni simili per JSON stesso). Invece, le implementazioni JSONPath devono implementare l'intera sintassi dell'interrogazione senza fare affidamento sui parser dei motori dei linguaggi di programmazione.

Gli attacchi alla disponibilità possono tentare di innescare prestazioni di runtime insolitamente costose mostrate da certe implementazioni in certi casi. (Vedere Sezione 10 di [RFC8949] per problemi nelle implementazioni di hash table e Sezione 8 di [RFC9485] per problemi di prestazioni nelle implementazioni di espressioni regolari.) Gli implementatori devono essere consapevoli che una buona prestazione media non è sufficiente finché un attaccante può scegliere di sottoporre interrogazioni JSONPath o argomenti di interrogazione appositamente costruiti che innescano uso CPU sorprendentemente alto, possibilmente esponenziale, o, ad esempio, tramite un'implementazione ricorsiva ingenua del descendant segment, stack overflow. Le implementazioni devono avere una gestione appropriata delle risorse per mitigare questi attacchi.

4.2. Attack Vectors on How JSONPath Queries Are Formed (Vettori di attacco su come sono formate le interrogazioni JSONPath)

Le interrogazioni JSONPath spesso non sono statiche ma sono formate da variabili che forniscono valori di indice, nomi di membro, o valori con cui confrontare in un'espressione di filtro. Queste variabili devono essere validate (ad esempio consentendo solo costrutti specifici come .name da formare quando i valori dati lo consentono) e tradotte (ad esempio facendo escape dei delimitatori di stringa). Non eseguire correttamente queste validazioni e traduzioni può portare a fallimenti inattesi, che possono portare a violazioni di disponibilità, riservatezza e integrità, in particolare se un avversario ha controllo sui valori (ad esempio inserendoli in un modulo web). La classe risultante di attacchi, injections (ad esempio SQL injection), si trova costantemente tra le principali cause di vulnerabilità di sicurezza delle applicazioni e richiede particolare attenzione.

4.3. Attacks on Security Mechanisms That Employ JSONPath (Attacchi su meccanismi di sicurezza che impiegano JSONPath)

Dove JSONPath è usato come parte di un meccanismo di sicurezza, gli attaccanti possono tentare di provocare comportamento imprevisto o imprevedibile o trarre vantaggio da differenze di comportamento tra implementazioni JSONPath.

Comportamento imprevisto o imprevedibile può sorgere da un argomento dell'interrogazione con certi costrutti descritti come imprevedibili da [RFC8259]. Comportamento prevedibile ci si può attendere, eccetto in relazione all'ordinamento degli oggetti, per qualsiasi argomento dell'interrogazione conforme a [RFC7493].

Altri attacchi possono mirare al comportamento delle tecnologie sottostanti, come UTF-8 (vedere Sezione 10 di [RFC3629]) e il set di caratteri Unicode.