8. Considérations de sécurité
Une application exposée au réseau peut présenter des vulnérabilités dans sa logique de traitement des données entrantes. Les analyseurs syntaxiques complexes sont bien connus comme une source probable de telles vulnérabilités, comme la capacité de faire planter un nœud à distance, ou même d'exécuter du code arbitraire à distance sur celui-ci. CBOR s'efforce de réduire les opportunités d'introduire de telles vulnérabilités en réduisant la complexité de l'analyseur syntaxique, en donnant un sens à l'ensemble de la plage des valeurs encodables là où c'est possible.
Les attaques par épuisement des ressources pourraient tenter d'inciter un décodeur à allouer des éléments de données très volumineux (chaînes, tableaux, tables) ou à épuiser la profondeur de la pile en mettant en place des éléments profondément imbriqués. Les décodeurs doivent disposer d'une gestion appropriée des ressources pour atténuer ces attaques. (Les éléments pour lesquels des tailles très grandes sont indiquées peuvent aussi tenter d'exploiter des vulnérabilités de débordement d'entier.)
Les applications où un élément de données CBOR est examiné par une fonction de contrôle d'accès puis utilisé ultérieurement par une application différente peuvent présenter des vulnérabilités lorsque plusieurs interprétations de l'élément de données sont possibles. Par exemple, un attaquant pourrait utiliser des clés en double dans les tables et des problèmes de précision dans les nombres pour que le contrôle d'accès base ses décisions sur une interprétation différente de celle qui sera utilisée par la seconde application. Les protocoles qui sont utilisés dans un contexte de sécurité devraient être définis de telle manière que ces interprétations multiples soient réduites de manière fiable à une seule. Pour faciliter cela, les implémentations d'encodeurs et de décodeurs utilisées dans de tels contextes devraient fournir au moins un mode de fonctionnement strict (Section 3.10).