VERSION 1.0
The Open Checklist Interactive Language (OCIL) is a language to express a set of questions to be presented to a user and procedures to interpret responses to these questions for the purpose of developing security checklists. Although its intended domain of use is IT security, its generic nature allows for other applications. For instance, it could be used for authoring research surveys, academic course exams, and instructional walkthroughs.
This document was originally developed by David Waltermire (The Center for Internet Security) and has been revised by The MITRE Corp with input from the security benchmark community. It is intended for developers and assumes familiarity with XML.
Attributes: - scope inter:ScopeType (optional -- default='FULL')
Child Elements Type MinOccurs MaxOccurs generator inter:GeneratorType 1 1 document inter:DocumentType 0 1 inter:questionnaire [ extends ] inter:CompoundTestActionType 1 unbounded inter:test_action inter:ItemBaseType 1 unbounded inter:question inter:QuestionType 1 unbounded inter:choice_group n/a 0 unbounded inter:results n/a 0 1
Attributes: - id inter:QuestionnaireIDPattern (required) - priority inter:PriorityType (optional -- default='LOW') - child_only xsd:boolean (optional -- default='false')
A question elements contains information one question that needs to be answered by a user. It can be a boolean_question, choice_question, numeric_question, or string_question depending on the set of acceptable answers.
Substitution Group: inter:question
A boolean_question is a type of question with valid responses of either {TRUE, FALSE} or {YES, NO}.
Attributes: - default_answer xsd:boolean (optional) - model inter:BooleanQuestionModelType (optional -- default='MODEL_YES_NO')
Substitution Group: inter:question
A choice_question is a type of question element with one or more acceptable answers specified by the author. The user will select one of these specified answers as their response. Acceptable answers are specified either explicitly using the choice element or implicitly using the choice_group_ref element to reference a choice_group element. Choices are presented in the order in which they are provided. All the choices in a choice_group are inserted in the order in which they appear within the choice_group.
Attributes: - default_answer_ref inter:ChoiceIDPattern (optional)
Substitution Group: inter:question
A numeric_question is a type of question_element that requires a numeric answer. Acceptable values may be positive or negative and may include decimals.
Attributes: - default_answer xsd:decimal (optional)
Substitution Group: inter:question
A string_question is a type of question element that requires a string answer.
Attributes: - default_answer xsd:string (optional)
This is a common base element for the question_test_action element.
Substitution Group: inter:test_action
Type: inter:QuestionTestActionType
The question_test_action element contains a reference to a single question along with a set of handlers that indicate how processing should proceed based on the answer provided by the user. This element is abstract and is implemented in a document as a boolean_test_action, choice_test_action, numeric_test_action, or string_test_action. The type of question_test_action must match the type of question referenced. (E.g. a boolean_test_action MUST reference a boolean_question, etc..)
Substitution Group: inter:question_test_action
A boolean_question_test_action element references a boolean_question and includes handlers for TRUE (YES) or FALSE (NO) responses.
Child Elements Type MinOccurs MaxOccurs when_true inter:ResultChoiceType 1 1 when_false inter:ResultChoiceType 1 1
Substitution Group: inter:question_test_action
A choice_question_test_action element references a choice_question and includes handlers for the various choices set out in the choice_question.
Child Elements Type MinOccurs MaxOccurs inter:when_choice [ extends ] inter:ResultChoiceType 1 unbounded
Substitution Group: inter:question_test_action
A numeric_question_test_action element references a numeric_question and includes handlers that indicate actions to perform based on whether the user's response matches a particular value or falls within a particular range.
Substitution Group: inter:question_test_action
A string_question_test_action element references a string_question and includes handlers that indicate actions to perform based on whether the user's response matches a given regular expression.
Child Elements Type MinOccurs MaxOccurs inter:when_pattern [ extends ] inter:ResultChoiceType 1 unbounded
Attributes: - start_time xsd:dateTime (optional) - end_time xsd:dateTime (optional)
Type: inter:QuestionResultType
A question_result element contains result information associated with a specific question. The specific type of question_result (boolean_question_result, choice_question_result, etc.) depends on the type of the associated question (boolean_question, choice_question, etc.)
Substitution Group: inter:question_result
A boolean_question_result element contains a reference to a boolean_question, the user's response, and whether the question was successfully posed.
Child Elements Type MinOccurs MaxOccurs answer xsd:boolean 1 1
Substitution Group: inter:question_result
A choice_question_result element contains a reference to a choice_question, the user's response, and whether the question was successfully posed.
Child Elements Type MinOccurs MaxOccurs answer n/a 1 1
Substitution Group: inter:question_result
A numeric_question_result element contains a reference to a numeric_question, the result provided by the user, and whether the question was successfully posed.
Child Elements Type MinOccurs MaxOccurs answer xsd:decimal 1 1
Substitution Group: inter:question_result
A string_question_result element contains a reference to a string_question, the string provided by the user in response, and whether the question was successfully posed.
Child Elements Type MinOccurs MaxOccurs answer xsd:string 1 1
Value Description FULL SHORT
Provides the acceptable models (i.e. set of acceptable responses) for a boolean_question.
Value Description MODEL_YES_NO MODEL_TRUE_FALSE MODEL_TRUE_FALSE represents a response set of {TRUE, FALSE}.
Value Description AND OR
Child Elements Type MinOccurs MaxOccurs product_name xsd:string 0 1 product_version xsd:string 0 1 author n/a 0 unbounded schema_version xsd:decimal 1 1 timestamp xsd:dateTime 1 1
Child Elements Type MinOccurs MaxOccurs title xsd:string 1 1 description xsd:string 0 unbounded notice xsd:string 0 unbounded
Child Elements Type MinOccurs MaxOccurs notes xsd:string 0 unbounded
Attributes: - operation inter:OperatorType - negate xsd:boolean - priority inter:PriorityType (optional -- default='LOW')
Child Elements Type MinOccurs MaxOccurs inter:test_action_ref inter:TestActionRefValuePattern 1 unbounded
The pattern element specifies a regular expression against which a string will be compared.
Attributes:
Simple Content xsd:string
This type provides the possible priorities of a set of test_actions.
Value Description HIGH MEDIUM LOW
Attributes: - question_ref inter:QuestionIDPattern (required) - success xsd:boolean (required)
Child Elements Type MinOccurs MaxOccurs min n/a 0 1 max n/a 0 1
Child Elements Type MinOccurs MaxOccurs result inter:ResultType 1 1 inter:test_action_ref inter:TestActionRefValuePattern 1 1
The ResultType simple type defines acceptable result values for questionnaires and test_actions.
The following table shows how the result is computed if the operator is AND:
Pass Fail Error Unkn Not Tstd N/A 1+ 0 0 0 0 0+ Pass 0+ 1+ 0+ 0+ 0+ 0+ Fail 0+ 0 1+ 0+ 0+ 0+ Error 0+ 0 0 1+ 0+ 0+ Unknown 0+ 0 0 0 1+ 0+ Not Tested 0 0 0 0 0 1+ Not Applicable 0 0 0 0 0 0 Not Tested The following table shows how the result is computed if the operator is OR:
Pass Fail Error Unkn Not Tstd N/A 1+ 0+ 0+ 0+ 0+ 0+ Pass 0 1+ 0 0 0 0+ Fail 0 0+ 1+ 0+ 0+ 0+ Error 0 0+ 0 1+ 0+ 0+ Unknown 0 0+ 0 0 1+ 0+ Not Tested 0 0 0 0 0 1+ Not Applicable 0 0 0 0 0 0 Not Tested
The TextType complex type defines an element that holds any information.
ID values for questionnaires must match this pattern.
ocil:[A-Za-z0-9_\-\.]+:questionnaire:[1-9][0-9]*
ID values for questions must match this pattern. Each ID must be unique within an OCIL document.
ocil:[A-Za-z0-9_\-\.]+:question:[1-9][0-9]*
ID values for test_actions must match this pattern. Each ID must be unique within an OCIL document.
ocil:[A-Za-z0-9_\-\.]+:testaction:[1-9][0-9]*
ocil:[A-Za-z0-9_\-\.]+:testaction:[1-9][0-9]*
ocil:[A-Za-z0-9_\-\.]+:choice:[1-9][0-9]*
ocil:[A-Za-z0-9_\-\.]+:choicegroup:[1-9][0-9]*
The test_action_ref element holds a reference (id) to a test_action or questionnaire.
Child Elements Type MinOccurs MaxOccurs choice_ref inter:ChoiceIDPattern 1 unbounded
A choice element holds information about one acceptable answer to a choice_question.
Attributes: - id inter:ChoiceGroupIDPattern (required)
Child Elements Type MinOccurs MaxOccurs inter:choice n/a 1 unbounded
Child Elements Type MinOccurs MaxOccurs value xsd:decimal 1 unbounded
Child Elements Type MinOccurs MaxOccurs range inter:RangeType 1 unbounded
Child Elements Type MinOccurs MaxOccurs pattern inter:PatternType 1 unbounded
Attributes: - is_done xsd:boolean - is_required xsd:boolean
Child Elements Type MinOccurs MaxOccurs description inter:TextType 0 1 reference inter:ReferenceType 0 unbounded inter:step inter:StepType 0 unbounded
The step element describes one step in the procedures a user should undertake in order to answer an encapsulating question.
Child Elements Type MinOccurs MaxOccurs title inter:TextType 1 1 inter:step inter:StepType 1 unbounded
Security and Privacy: configuration management, patch management, security automation, security measurement, vulnerability management