Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correcting profile resolution spec wrt validation of inputs #1312

Closed
wendellpiez opened this issue Jun 14, 2022 Discussed in #1308 · 1 comment · Fixed by #1380
Closed

Correcting profile resolution spec wrt validation of inputs #1312

wendellpiez opened this issue Jun 14, 2022 Discussed in #1308 · 1 comment · Fixed by #1380
Assignees
Milestone

Comments

@wendellpiez
Copy link
Contributor

Discussed in #1308

Originally posted by wendellpiez June 13, 2022
The current profile resolution spec is somewhat ambiguous and possibly problematic regarding the requirement that inputs be valid OSCAL.

At https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/#d2e317-head it is stated clearly:

If the object fetched cannot be found or is not a valid OSCAL object, the tool MUST cease processing and provide an error.

Yet later (for example) https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/#d2e786-head, regarding structuring directives, the spec says "If more than one appears, processors MUST generate an error and cease processing" - which does not happen on valid inputs.

For lightweight implementations of profile resolution as simple transformations (not full-scale OSCAL object marshalling), the first requirement is onerous. It means a lightweight profile resolution processor that works on simple GIGO principles is not actually conformant, at least not delivered and deployed separably from a validator. This could be conformant only if the language is rewritten to the effect that "only on valid OSCAL inputs can results be predictable" rather than that a processor must (a) incur the overhead of validating any resource (including upstream catalogs), and (b) stop with an error when such (in)validity is detected (which could certainly remain an option).

However, if the first requirement is needed (invalid inputs will never be processed), surely the second is superfluous (what to do when they are seen).

Let's discuss whether validation of all inputs is an absolute runtime requirement, or whether a GIGO implementation (that accepts any input and 'does its best') could be conformant even if it does not perform validation or report exceptions on nominally invalid inputs?

If not, let's remove the redundant check for invalid configurations.

Language suggested by @david-waltermire-nist:

If the object fetched cannot be found, or does not parse as an OSCAL catalog or profile, the tool MUST cease processing and provide an error.

For implementation, this implies that formal validation need not always be asserted (and processors are not required to cease for nominal validation errors that do not affect outputs), but that inputs that are clearly not correct (e.g., not OSCAL or not the right kind of OSCAL) can be defended against.

@david-waltermire
Copy link
Contributor

@wendellpiez Would you please make a PR with the following adjusted text?

If the object fetched cannot be found, or does not parse as an OSCAL catalog or profile, the tool MUST cease processing and provide an error.

@aj-stein-nist aj-stein-nist added this to the OSCAL 1.0.5 milestone Jul 5, 2022
wendellpiez added a commit to wendellpiez/OSCAL that referenced this issue Jul 20, 2022
@david-waltermire david-waltermire linked a pull request Jul 21, 2022 that will close this issue
5 tasks
@david-waltermire david-waltermire moved this from Todo to Under Review in NIST OSCAL Work Board Jul 21, 2022
david-waltermire pushed a commit that referenced this issue Jul 25, 2022
Repository owner moved this from Under Review to Done in NIST OSCAL Work Board Jul 25, 2022
aj-stein-nist pushed a commit to aj-stein-nist/OSCAL-forked that referenced this issue Oct 6, 2022
aj-stein-nist pushed a commit that referenced this issue Oct 18, 2022
aj-stein-nist pushed a commit to aj-stein-nist/OSCAL-forked that referenced this issue Jan 10, 2023
aj-stein-nist pushed a commit to aj-stein-nist/OSCAL-forked that referenced this issue Feb 6, 2023
aj-stein-nist pushed a commit to aj-stein-nist/OSCAL-forked that referenced this issue Jun 29, 2023
aj-stein-nist pushed a commit to aj-stein-nist/OSCAL-forked that referenced this issue Jul 10, 2023
@aj-stein-nist aj-stein-nist modified the milestones: v1.0.5, v1.1.0 Jul 27, 2023
aj-stein-nist pushed a commit to galtm/OSCAL that referenced this issue Sep 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

3 participants