kriterion 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (564) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +5 -0
  5. data/Dockerfile +18 -0
  6. data/Gemfile +12 -0
  7. data/Gemfile.lock +62 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +58 -0
  10. data/Rakefile +6 -0
  11. data/bin/setup +8 -0
  12. data/bin/update_stigs.rb +42 -0
  13. data/criterion.gemspec +31 -0
  14. data/docker-compose.yml +14 -0
  15. data/exe/kriterion +16 -0
  16. data/lib/kriterion.rb +16 -0
  17. data/lib/kriterion/api.rb +27 -0
  18. data/lib/kriterion/backend.rb +13 -0
  19. data/lib/kriterion/backend/mongodb.rb +235 -0
  20. data/lib/kriterion/cli.rb +28 -0
  21. data/lib/kriterion/cli/api.rb +35 -0
  22. data/lib/kriterion/cli/worker.rb +35 -0
  23. data/lib/kriterion/event.rb +36 -0
  24. data/lib/kriterion/item.rb +42 -0
  25. data/lib/kriterion/logs.rb +14 -0
  26. data/lib/kriterion/metrics.rb +22 -0
  27. data/lib/kriterion/object.rb +50 -0
  28. data/lib/kriterion/report.rb +69 -0
  29. data/lib/kriterion/resource.rb +60 -0
  30. data/lib/kriterion/section.rb +32 -0
  31. data/lib/kriterion/standard.rb +65 -0
  32. data/lib/kriterion/version.rb +3 -0
  33. data/lib/kriterion/worker.rb +280 -0
  34. data/standards/cis_red_hat_enterprise_linux_7.json +34 -0
  35. data/standards/stig_a10_networks_adc_alg.json +209 -0
  36. data/standards/stig_a10_networks_adc_ndm.json +233 -0
  37. data/standards/stig_active_directory_domain.json +257 -0
  38. data/standards/stig_active_directory_forest.json +41 -0
  39. data/standards/stig_active_directory_service_2003.json +173 -0
  40. data/standards/stig_active_directory_service_2008.json +167 -0
  41. data/standards/stig_adobe_acrobat_pro_xi.json +167 -0
  42. data/standards/stig_adobe_acrobat_reader_dc_classic_track.json +179 -0
  43. data/standards/stig_adobe_acrobat_reader_dc_continuous_track.json +179 -0
  44. data/standards/stig_adobe_coldfusion_11.json +611 -0
  45. data/standards/stig_airwatch_mdm.json +185 -0
  46. data/standards/stig_aix_5.3.json +3095 -0
  47. data/standards/stig_aix_6.1.json +3047 -0
  48. data/standards/stig_akamai_ksd_service_impact_level_2_alg.json +209 -0
  49. data/standards/stig_akamai_ksd_service_impact_level_2_ndm.json +155 -0
  50. data/standards/stig_android_2.2_dell.json +311 -0
  51. data/standards/stig_apache_2.2_serverwindows.json +347 -0
  52. data/standards/stig_apache_2.2_sitewindows_security_implementation_guide.json +179 -0
  53. data/standards/stig_apache_server_2.0unix.json +341 -0
  54. data/standards/stig_apache_server_2.0windows.json +341 -0
  55. data/standards/stig_apache_server_2.2unix.json +347 -0
  56. data/standards/stig_apache_server_2.2windows.json +347 -0
  57. data/standards/stig_apache_site_2.0unix.json +185 -0
  58. data/standards/stig_apache_site_2.0windows.json +179 -0
  59. data/standards/stig_apache_site_2.2unix.json +185 -0
  60. data/standards/stig_apache_site_2.2windows.json +179 -0
  61. data/standards/stig_apple_ios6.json +341 -0
  62. data/standards/stig_apple_ios_10.json +245 -0
  63. data/standards/stig_apple_ios_11.json +269 -0
  64. data/standards/stig_apple_ios_4_good_mobility_suite_interim_security_configuration_guide_iscg.json +257 -0
  65. data/standards/stig_apple_ios_5.json +329 -0
  66. data/standards/stig_apple_ios_6.json +335 -0
  67. data/standards/stig_apple_ios_6_interim_security_configuration_guide_iscg.json +371 -0
  68. data/standards/stig_apple_ios_7.json +185 -0
  69. data/standards/stig_apple_ios_8_interim_security_configuration_guide.json +251 -0
  70. data/standards/stig_apple_ios_9_interim_security_configuration_guide.json +245 -0
  71. data/standards/stig_apple_os_x_10.10_yosemite_workstation.json +851 -0
  72. data/standards/stig_apple_os_x_10.11.json +725 -0
  73. data/standards/stig_apple_os_x_10.12.json +737 -0
  74. data/standards/stig_apple_os_x_10.8_mountain_lion_workstation.json +1241 -0
  75. data/standards/stig_apple_os_x_10.9_mavericks_workstation.json +809 -0
  76. data/standards/stig_application_layer_gateway_alg_security_requirements_guide_srg.json +911 -0
  77. data/standards/stig_application_layer_gateway_security_requirements_guide.json +911 -0
  78. data/standards/stig_application_security_and_development.json +1745 -0
  79. data/standards/stig_application_security_and_development_checklist.json +959 -0
  80. data/standards/stig_application_security_requirements_guide.json +1961 -0
  81. data/standards/stig_application_server_security_requirements_guide.json +791 -0
  82. data/standards/stig_arcgisserver_10.3.json +143 -0
  83. data/standards/stig_arista_mls_dcs-7000_series_l2s.json +53 -0
  84. data/standards/stig_arista_mls_dcs-7000_series_ndm.json +197 -0
  85. data/standards/stig_arista_mls_dcs-7000_series_rtr.json +143 -0
  86. data/standards/stig_bind_9.x.json +431 -0
  87. data/standards/stig_bind_dns.json +317 -0
  88. data/standards/stig_blackberry_10.2.x_os.json +179 -0
  89. data/standards/stig_blackberry_10_os.json +227 -0
  90. data/standards/stig_blackberry_bes_12.3.x_mdm.json +65 -0
  91. data/standards/stig_blackberry_bes_12.5.x_mdm.json +65 -0
  92. data/standards/stig_blackberry_device_service_6.2.json +425 -0
  93. data/standards/stig_blackberry_enterprise_mobility_server_2.x.json +149 -0
  94. data/standards/stig_blackberry_enterprise_server,_part_1.json +35 -0
  95. data/standards/stig_blackberry_enterprise_server,_part_2.json +155 -0
  96. data/standards/stig_blackberry_enterprise_server,_part_3.json +647 -0
  97. data/standards/stig_blackberry_enterprise_server_version_5.x,_part_1.json +35 -0
  98. data/standards/stig_blackberry_enterprise_server_version_5.x,_part_2.json +155 -0
  99. data/standards/stig_blackberry_enterprise_server_version_5.x,_part_3.json +653 -0
  100. data/standards/stig_blackberry_enterprise_service_v10.1.x_blackberry_device_service.json +317 -0
  101. data/standards/stig_blackberry_enterprise_service_v10.2.x_blackberry_device_service.json +263 -0
  102. data/standards/stig_blackberry_handheld_device.json +125 -0
  103. data/standards/stig_blackberry_os_10.3.x.json +257 -0
  104. data/standards/stig_blackberry_os_7.x.json +107 -0
  105. data/standards/stig_blackberry_os_7.x.x.json +101 -0
  106. data/standards/stig_blackberry_os_version_5-7.json +107 -0
  107. data/standards/stig_blackberry_playbook.json +65 -0
  108. data/standards/stig_blackberry_playbook_os_nea_mode.json +65 -0
  109. data/standards/stig_blackberry_playbook_os_v2.1.json +197 -0
  110. data/standards/stig_blackberry_uem_12.7.json +59 -0
  111. data/standards/stig_bluetoothzigbee.json +35 -0
  112. data/standards/stig_ca_api_gateway_alg.json +497 -0
  113. data/standards/stig_cisco_css_dns.json +71 -0
  114. data/standards/stig_cisco_ios_xe_release_3_ndm.json +395 -0
  115. data/standards/stig_cisco_ios_xe_release_3_rtr.json +149 -0
  116. data/standards/stig_cmd_management_server_policy.json +53 -0
  117. data/standards/stig_commercial_mobile_device_cmd_policy.json +83 -0
  118. data/standards/stig_csfc_campus_wlan_policy_security_implementation_guide.json +95 -0
  119. data/standards/stig_database_security_requirements_guide.json +767 -0
  120. data/standards/stig_dbn-6300_idps.json +107 -0
  121. data/standards/stig_dbn-6300_ndm.json +359 -0
  122. data/standards/stig_defense_switched_network.json +683 -0
  123. data/standards/stig_defense_switched_network_dsn.json +653 -0
  124. data/standards/stig_desktop_applications_general.json +41 -0
  125. data/standards/stig_dns_policy.json +155 -0
  126. data/standards/stig_domain_name_system_dns_security_requirements_guide.json +599 -0
  127. data/standards/stig_draft_aix.json +3503 -0
  128. data/standards/stig_edb_postgres_advanced_server.json +665 -0
  129. data/standards/stig_email_services_policy.json +137 -0
  130. data/standards/stig_exchange_2010_client_access_server.json +179 -0
  131. data/standards/stig_exchange_2010_edge_transport_server.json +389 -0
  132. data/standards/stig_exchange_2010_hub_transport_server.json +269 -0
  133. data/standards/stig_exchange_2010_mailbox_server.json +209 -0
  134. data/standards/stig_f5_big-ip_access_policy_manager_11.x.json +149 -0
  135. data/standards/stig_f5_big-ip_advanced_firewall_manager_11.x.json +41 -0
  136. data/standards/stig_f5_big-ip_application_security_manager_11.x.json +89 -0
  137. data/standards/stig_f5_big-ip_device_management_11.x.json +467 -0
  138. data/standards/stig_f5_big-ip_local_traffic_manager_11.x.json +407 -0
  139. data/standards/stig_final_draft_general_wireless_policy.json +71 -0
  140. data/standards/stig_firewall.json +449 -0
  141. data/standards/stig_firewall_-_cisco.json +449 -0
  142. data/standards/stig_firewall_security_requirements_guide.json +257 -0
  143. data/standards/stig_forescout_counteract_alg.json +83 -0
  144. data/standards/stig_forescout_counteract_ndm.json +239 -0
  145. data/standards/stig_free_space_optics_device.json +143 -0
  146. data/standards/stig_general_mobile_device_policy_non-enterprise_activated.json +113 -0
  147. data/standards/stig_general_mobile_device_technical_non-enterprise_activated.json +59 -0
  148. data/standards/stig_general_purpose_operating_system_srg.json +1199 -0
  149. data/standards/stig_general_wireless_policy.json +71 -0
  150. data/standards/stig_good_mobility_suite_server_android_os.json +203 -0
  151. data/standards/stig_good_mobility_suite_server_apple_ios_4_interim_security_configuration_guide_iscg.json +209 -0
  152. data/standards/stig_good_mobility_suite_server_windows_phone_6.5.json +449 -0
  153. data/standards/stig_goodenterprise_8.x.json +401 -0
  154. data/standards/stig_google_chrome_browser.json +209 -0
  155. data/standards/stig_google_chrome_current_windows.json +215 -0
  156. data/standards/stig_google_chrome_draft.json +281 -0
  157. data/standards/stig_google_chrome_v23_windows.json +275 -0
  158. data/standards/stig_google_chrome_v24_windows.json +263 -0
  159. data/standards/stig_google_chrome_v24_windows_benchmark.json +227 -0
  160. data/standards/stig_google_search_appliance.json +209 -0
  161. data/standards/stig_harris_secnet_11_54.json +89 -0
  162. data/standards/stig_hp-ux_11.23.json +3215 -0
  163. data/standards/stig_hp-ux_11.31.json +3155 -0
  164. data/standards/stig_hp-ux_smse.json +431 -0
  165. data/standards/stig_hpe_3par_storeserv_3.2.x.json +131 -0
  166. data/standards/stig_ibm_datapower_alg.json +401 -0
  167. data/standards/stig_ibm_datapower_network_device_management.json +395 -0
  168. data/standards/stig_ibm_db2_v10.5_luw.json +575 -0
  169. data/standards/stig_ibm_hardware_management_console_hmc.json +221 -0
  170. data/standards/stig_ibm_hardware_management_console_hmc_policies.json +35 -0
  171. data/standards/stig_ibm_maas360_v2.3.x_mdm.json +59 -0
  172. data/standards/stig_ibm_zvm_using_ca_vm:secure.json +473 -0
  173. data/standards/stig_idps_security_requirements_guide_srg.json +1865 -0
  174. data/standards/stig_idsips.json +257 -0
  175. data/standards/stig_iis6_server.json +221 -0
  176. data/standards/stig_iis6_site.json +263 -0
  177. data/standards/stig_iis_7.0_web_server.json +155 -0
  178. data/standards/stig_iis_7.0_web_site.json +299 -0
  179. data/standards/stig_iis_8.5_server.json +293 -0
  180. data/standards/stig_iis_8.5_site.json +347 -0
  181. data/standards/stig_infoblox_7.x_dns.json +419 -0
  182. data/standards/stig_infrastructure_l3_switch.json +599 -0
  183. data/standards/stig_infrastructure_l3_switch_-_cisco.json +659 -0
  184. data/standards/stig_infrastructure_l3_switch_secure_technical_implementation_guide_-_cisco.json +659 -0
  185. data/standards/stig_infrastructure_router.json +479 -0
  186. data/standards/stig_infrastructure_router_-_cisco.json +539 -0
  187. data/standards/stig_infrastructure_router_-_juniper.json +485 -0
  188. data/standards/stig_infrastructure_router__cisco.json +539 -0
  189. data/standards/stig_infrastructure_router__juniper.json +485 -0
  190. data/standards/stig_internet_explorer_8.json +821 -0
  191. data/standards/stig_internet_explorer_9.json +815 -0
  192. data/standards/stig_intrusion_detection_and_prevention_systems_idps_security_requirements_guide.json +371 -0
  193. data/standards/stig_ipsec_vpn_gateway.json +521 -0
  194. data/standards/stig_java_runtime_environment_jre_6_unix.json +65 -0
  195. data/standards/stig_java_runtime_environment_jre_6_win7.json +65 -0
  196. data/standards/stig_java_runtime_environment_jre_6_windows_xp.json +77 -0
  197. data/standards/stig_java_runtime_environment_jre_6_winxp.json +65 -0
  198. data/standards/stig_java_runtime_environment_jre_7_unix.json +65 -0
  199. data/standards/stig_java_runtime_environment_jre_7_win7.json +65 -0
  200. data/standards/stig_java_runtime_environment_jre_7_winxp.json +65 -0
  201. data/standards/stig_java_runtime_environment_jre_version_6_unix.json +77 -0
  202. data/standards/stig_java_runtime_environment_jre_version_6_windows_7.json +77 -0
  203. data/standards/stig_java_runtime_environment_jre_version_6_windows_xp.json +65 -0
  204. data/standards/stig_java_runtime_environment_jre_version_7_unix.json +77 -0
  205. data/standards/stig_java_runtime_environment_jre_version_7_windows_7.json +77 -0
  206. data/standards/stig_java_runtime_environment_jre_version_7_winxp.json +77 -0
  207. data/standards/stig_java_runtime_environment_jre_version_8_unix.json +107 -0
  208. data/standards/stig_java_runtime_environment_jre_version_8_windows.json +107 -0
  209. data/standards/stig_jboss_eap_6.3.json +413 -0
  210. data/standards/stig_juniper_srx_sg_alg.json +155 -0
  211. data/standards/stig_juniper_srx_sg_idps.json +179 -0
  212. data/standards/stig_juniper_srx_sg_ndm.json +443 -0
  213. data/standards/stig_juniper_srx_sg_vpn.json +185 -0
  214. data/standards/stig_keyboard_video_and_mouse_switch.json +269 -0
  215. data/standards/stig_l3_kov-26_talon_wireless_role.json +77 -0
  216. data/standards/stig_layer_2_switch.json +347 -0
  217. data/standards/stig_layer_2_switch_-_cisco.json +365 -0
  218. data/standards/stig_lg_android_5.x_interim_security_configuration_guide.json +245 -0
  219. data/standards/stig_lg_android_6.x.json +281 -0
  220. data/standards/stig_mac_osx_10.6_workstation.json +1319 -0
  221. data/standards/stig_mac_osx_10.6_workstation_draft.json +1319 -0
  222. data/standards/stig_mainframe_product_security_requirements_guide.json +1115 -0
  223. data/standards/stig_mcafee_application_control_7.x.json +203 -0
  224. data/standards/stig_mcafee_move_2.63.6.1_multi-platform_client.json +149 -0
  225. data/standards/stig_mcafee_move_2.63.6.1_multi-platform_oss.json +101 -0
  226. data/standards/stig_mcafee_move_2.6_multi-platform_client.json +149 -0
  227. data/standards/stig_mcafee_move_2.6_multi-platform_oss.json +101 -0
  228. data/standards/stig_mcafee_move_3.6.1_multi-platform_client.json +149 -0
  229. data/standards/stig_mcafee_move_3.6.1_multi-platform_oss.json +101 -0
  230. data/standards/stig_mcafee_move_agentless_3.03.6.1_security_virtual_appliance.json +167 -0
  231. data/standards/stig_mcafee_move_agentless_3.0_security_virtual_appliance.json +167 -0
  232. data/standards/stig_mcafee_move_agentless_3.0_vsel_1.9sva.json +203 -0
  233. data/standards/stig_mcafee_move_agentless_3.6.1_security_virtual_appliance.json +167 -0
  234. data/standards/stig_mcafee_move_av_agentless_4.5.json +155 -0
  235. data/standards/stig_mcafee_move_av_multi-platform_4.5.json +215 -0
  236. data/standards/stig_mcafee_virusscan_8.8_local_client.json +533 -0
  237. data/standards/stig_mcafee_virusscan_8.8_managed_client.json +533 -0
  238. data/standards/stig_mcafee_vsel_1.92.0_local_client.json +245 -0
  239. data/standards/stig_mcafee_vsel_1.92.0_managed_client.json +239 -0
  240. data/standards/stig_mdm_server_policy.json +47 -0
  241. data/standards/stig_microsoft_access_2003.json +47 -0
  242. data/standards/stig_microsoft_access_2007.json +77 -0
  243. data/standards/stig_microsoft_access_2010.json +119 -0
  244. data/standards/stig_microsoft_access_2013.json +113 -0
  245. data/standards/stig_microsoft_access_2016.json +107 -0
  246. data/standards/stig_microsoft_dot_net_framework_4.0.json +101 -0
  247. data/standards/stig_microsoft_excel_2003.json +47 -0
  248. data/standards/stig_microsoft_excel_2007.json +155 -0
  249. data/standards/stig_microsoft_excel_2010.json +287 -0
  250. data/standards/stig_microsoft_excel_2013.json +293 -0
  251. data/standards/stig_microsoft_excel_2016.json +257 -0
  252. data/standards/stig_microsoft_exchange_2010_client_access_server_role.json +71 -0
  253. data/standards/stig_microsoft_exchange_2010_core_server.json +47 -0
  254. data/standards/stig_microsoft_exchange_2010_edge_transport_server_role.json +233 -0
  255. data/standards/stig_microsoft_exchange_2010_hub_transport_server_role.json +125 -0
  256. data/standards/stig_microsoft_exchange_2010_mailbox_server_role.json +107 -0
  257. data/standards/stig_microsoft_exchange_server_2003.json +647 -0
  258. data/standards/stig_microsoft_groove_2013.json +71 -0
  259. data/standards/stig_microsoft_ie_version_6.json +599 -0
  260. data/standards/stig_microsoft_ie_version_7.json +749 -0
  261. data/standards/stig_microsoft_infopath_2003.json +41 -0
  262. data/standards/stig_microsoft_infopath_2007.json +167 -0
  263. data/standards/stig_microsoft_infopath_2010.json +155 -0
  264. data/standards/stig_microsoft_infopath_2013.json +149 -0
  265. data/standards/stig_microsoft_internet_explorer_10.json +857 -0
  266. data/standards/stig_microsoft_internet_explorer_11.json +839 -0
  267. data/standards/stig_microsoft_internet_explorer_9.json +821 -0
  268. data/standards/stig_microsoft_lync_2013.json +29 -0
  269. data/standards/stig_microsoft_office_system_2007.json +221 -0
  270. data/standards/stig_microsoft_office_system_2010.json +233 -0
  271. data/standards/stig_microsoft_office_system_2013.json +293 -0
  272. data/standards/stig_microsoft_office_system_2016.json +131 -0
  273. data/standards/stig_microsoft_onedrivebusiness_2016.json +89 -0
  274. data/standards/stig_microsoft_onenote_2010.json +77 -0
  275. data/standards/stig_microsoft_onenote_2013.json +71 -0
  276. data/standards/stig_microsoft_onenote_2016.json +71 -0
  277. data/standards/stig_microsoft_outlook_2003.json +65 -0
  278. data/standards/stig_microsoft_outlook_2007.json +479 -0
  279. data/standards/stig_microsoft_outlook_2010.json +515 -0
  280. data/standards/stig_microsoft_outlook_2013.json +497 -0
  281. data/standards/stig_microsoft_outlook_2016.json +359 -0
  282. data/standards/stig_microsoft_powerpoint_2003.json +47 -0
  283. data/standards/stig_microsoft_powerpoint_2007.json +131 -0
  284. data/standards/stig_microsoft_powerpoint_2010.json +191 -0
  285. data/standards/stig_microsoft_powerpoint_2013.json +251 -0
  286. data/standards/stig_microsoft_powerpoint_2016.json +233 -0
  287. data/standards/stig_microsoft_project_2010.json +83 -0
  288. data/standards/stig_microsoft_project_2013.json +95 -0
  289. data/standards/stig_microsoft_project_2016.json +95 -0
  290. data/standards/stig_microsoft_publisher_2010.json +107 -0
  291. data/standards/stig_microsoft_publisher_2013.json +101 -0
  292. data/standards/stig_microsoft_publisher_2016.json +101 -0
  293. data/standards/stig_microsoft_sharepoint_designer_2013.json +71 -0
  294. data/standards/stig_microsoft_skypebusiness_2016.json +29 -0
  295. data/standards/stig_microsoft_sql_server_2005_database.json +167 -0
  296. data/standards/stig_microsoft_sql_server_2005_instance.json +1001 -0
  297. data/standards/stig_microsoft_sql_server_2012_database.json +179 -0
  298. data/standards/stig_microsoft_sql_server_2012_database_instance.json +929 -0
  299. data/standards/stig_microsoft_visio_2013.json +89 -0
  300. data/standards/stig_microsoft_visio_2016.json +89 -0
  301. data/standards/stig_microsoft_windows_10_mobile.json +215 -0
  302. data/standards/stig_microsoft_windows_2008_server_domain_name_system.json +269 -0
  303. data/standards/stig_microsoft_windows_2012_server_domain_name_system.json +551 -0
  304. data/standards/stig_microsoft_windows_phone_8.1.json +161 -0
  305. data/standards/stig_microsoft_windows_server_2012_domain_controller.json +2633 -0
  306. data/standards/stig_microsoft_windows_server_2012_member_server.json +2411 -0
  307. data/standards/stig_microsoft_word_2003.json +47 -0
  308. data/standards/stig_microsoft_word_2007.json +119 -0
  309. data/standards/stig_microsoft_word_2010.json +221 -0
  310. data/standards/stig_microsoft_word_2013.json +221 -0
  311. data/standards/stig_microsoft_word_2016.json +215 -0
  312. data/standards/stig_mobile_application_management_mam_server.json +95 -0
  313. data/standards/stig_mobile_application_security_requirements_guide.json +233 -0
  314. data/standards/stig_mobile_device_integrity_scanning_mdis_server.json +119 -0
  315. data/standards/stig_mobile_device_management_mdm_server.json +125 -0
  316. data/standards/stig_mobile_device_manager_security_requirements_guide.json +2555 -0
  317. data/standards/stig_mobile_email_management_mem_server.json +197 -0
  318. data/standards/stig_mobile_operating_system_security_requirements_guide.json +1943 -0
  319. data/standards/stig_mobile_policy.json +35 -0
  320. data/standards/stig_mobile_policy_security_requirements_guide.json +437 -0
  321. data/standards/stig_mobileiron_core_v9.x_mdm.json +89 -0
  322. data/standards/stig_mobility_policy.json +65 -0
  323. data/standards/stig_mozilla_firefox.json +161 -0
  324. data/standards/stig_ms_exchange_2013_client_access_server.json +209 -0
  325. data/standards/stig_ms_exchange_2013_edge_transport_server.json +443 -0
  326. data/standards/stig_ms_exchange_2013_mailbox_server.json +437 -0
  327. data/standards/stig_ms_sharepoint_2010.json +269 -0
  328. data/standards/stig_ms_sharepoint_2013.json +245 -0
  329. data/standards/stig_ms_sharepoint_designer_2013.json +71 -0
  330. data/standards/stig_ms_sql_server_2014_database.json +263 -0
  331. data/standards/stig_ms_sql_server_2014_instance.json +575 -0
  332. data/standards/stig_ms_sql_server_2016_database.json +185 -0
  333. data/standards/stig_ms_sql_server_2016_instance.json +731 -0
  334. data/standards/stig_ms_windows_defender_antivirus.json +257 -0
  335. data/standards/stig_multifunction_device_and_network_printers.json +131 -0
  336. data/standards/stig_network_device_management_security_requirements_guide.json +863 -0
  337. data/standards/stig_network_devices.json +389 -0
  338. data/standards/stig_network_infrastructure_policy.json +455 -0
  339. data/standards/stig_network_security_requirements_guide.json +1961 -0
  340. data/standards/stig_operating_system_security_requirements_guide.json +1961 -0
  341. data/standards/stig_oracle_10_database_installation.json +527 -0
  342. data/standards/stig_oracle_10_database_instance.json +569 -0
  343. data/standards/stig_oracle_11_database_installation.json +527 -0
  344. data/standards/stig_oracle_11_database_instance.json +551 -0
  345. data/standards/stig_oracle_database_10g_installation.json +527 -0
  346. data/standards/stig_oracle_database_10g_instance.json +581 -0
  347. data/standards/stig_oracle_database_11.2g.json +1229 -0
  348. data/standards/stig_oracle_database_11g_installation.json +527 -0
  349. data/standards/stig_oracle_database_11g_instance.json +575 -0
  350. data/standards/stig_oracle_database_12c.json +1217 -0
  351. data/standards/stig_oracle_http_server_12.1.3.json +1703 -0
  352. data/standards/stig_oracle_linux_5.json +3431 -0
  353. data/standards/stig_oracle_linux_6.json +1583 -0
  354. data/standards/stig_oracle_weblogic_server_12c.json +443 -0
  355. data/standards/stig_palo_alto_networks_alg.json +311 -0
  356. data/standards/stig_palo_alto_networks_idps.json +185 -0
  357. data/standards/stig_palo_alto_networks_ndm.json +251 -0
  358. data/standards/stig_pda.json +83 -0
  359. data/standards/stig_pdasmartphone.json +95 -0
  360. data/standards/stig_perimeter_l3_switch.json +923 -0
  361. data/standards/stig_perimeter_l3_switch_-_cisco.json +1001 -0
  362. data/standards/stig_perimeter_router.json +803 -0
  363. data/standards/stig_perimeter_router_cisco.json +881 -0
  364. data/standards/stig_perimeter_router_juniper.json +803 -0
  365. data/standards/stig_postgresql_9.x.json +677 -0
  366. data/standards/stig_red_hat_enterprise_linux_5.json +3437 -0
  367. data/standards/stig_red_hat_enterprise_linux_6.json +1565 -0
  368. data/standards/stig_red_hat_enterprise_linux_7.json +1451 -0
  369. data/standards/stig_remote_access_policy.json +317 -0
  370. data/standards/stig_removable_storage_and_external_connection_technologies.json +143 -0
  371. data/standards/stig_removable_storage_and_external_connections.json +137 -0
  372. data/standards/stig_rfid_scanner.json +35 -0
  373. data/standards/stig_rfid_workstation.json +23 -0
  374. data/standards/stig_riverbed_steelhead_cx_v8_alg.json +83 -0
  375. data/standards/stig_riverbed_steelhead_cx_v8_ndm.json +371 -0
  376. data/standards/stig_router_security_requirements_guide.json +575 -0
  377. data/standards/stig_samsung_android_os_5_with_knox_2.0.json +365 -0
  378. data/standards/stig_samsung_android_os_6_with_knox_2.x.json +377 -0
  379. data/standards/stig_samsung_android_os_7_with_knox_2.x.json +443 -0
  380. data/standards/stig_samsung_android_with_knox_1.x.json +293 -0
  381. data/standards/stig_samsung_android_with_knox_2.x.json +371 -0
  382. data/standards/stig_samsung_knox_android_1.0.json +167 -0
  383. data/standards/stig_sharepoint_2010.json +269 -0
  384. data/standards/stig_sharepoint_2013.json +245 -0
  385. data/standards/stig_smartphone_policy.json +131 -0
  386. data/standards/stig_solaris_10_sparc.json +3029 -0
  387. data/standards/stig_solaris_10_x86.json +3065 -0
  388. data/standards/stig_solaris_11_sparc.json +1427 -0
  389. data/standards/stig_solaris_11_x86.json +1421 -0
  390. data/standards/stig_solaris_9_sparc.json +2915 -0
  391. data/standards/stig_solaris_9_x86.json +2915 -0
  392. data/standards/stig_sun_ray_4.json +185 -0
  393. data/standards/stig_sun_ray_4_policy.json +77 -0
  394. data/standards/stig_suse_linux_enterprise_server_v11system_z.json +3311 -0
  395. data/standards/stig_symantec_endpoint_protection_12.1_local_client_antivirus.json +689 -0
  396. data/standards/stig_symantec_endpoint_protection_12.1_managed_client_antivirus.json +695 -0
  397. data/standards/stig_tanium_6.5.json +461 -0
  398. data/standards/stig_tanium_7.0.json +803 -0
  399. data/standards/stig_test_and_development_zone_a.json +167 -0
  400. data/standards/stig_test_and_development_zone_b.json +179 -0
  401. data/standards/stig_test_and_development_zone_c.json +143 -0
  402. data/standards/stig_test_and_development_zone_d.json +143 -0
  403. data/standards/stig_traditional_security.json +917 -0
  404. data/standards/stig_unix_srg.json +3287 -0
  405. data/standards/stig_video_services_policy.json +497 -0
  406. data/standards/stig_video_teleconference.json +47 -0
  407. data/standards/stig_video_teleconference_vtc.json +12 -0
  408. data/standards/stig_vmware_esx_3_policy.json +155 -0
  409. data/standards/stig_vmware_esx_3_server.json +3791 -0
  410. data/standards/stig_vmware_esx_3_virtual_center.json +257 -0
  411. data/standards/stig_vmware_esx_3_virtual_machine.json +53 -0
  412. data/standards/stig_vmware_esxi_server_5.0.json +809 -0
  413. data/standards/stig_vmware_esxi_v5.json +5177 -0
  414. data/standards/stig_vmware_esxi_version_5_virtual_machine.json +317 -0
  415. data/standards/stig_vmware_nsx_distributed_firewall.json +83 -0
  416. data/standards/stig_vmware_nsx_distributed_logical_router.json +35 -0
  417. data/standards/stig_vmware_nsx_manager.json +191 -0
  418. data/standards/stig_vmware_vcenter_server.json +179 -0
  419. data/standards/stig_vmware_vcenter_server_version_5.json +149 -0
  420. data/standards/stig_vmware_vsphere_esxi_6.0.json +659 -0
  421. data/standards/stig_vmware_vsphere_vcenter_server_version_6.json +311 -0
  422. data/standards/stig_vmware_vsphere_virtual_machine_version_6.json +269 -0
  423. data/standards/stig_voice_and_video_over_internet_protocol_vvoip_policy.json +407 -0
  424. data/standards/stig_voice_video_endpoint_security_requirements_guide.json +395 -0
  425. data/standards/stig_voice_video_services_policy.json +671 -0
  426. data/standards/stig_voice_video_session_management_security_requirements_guide.json +329 -0
  427. data/standards/stig_voicevideo_over_internet_protocol.json +419 -0
  428. data/standards/stig_voicevideo_over_internet_protocol_vvoip.json +263 -0
  429. data/standards/stig_voicevideo_services_policy.json +569 -0
  430. data/standards/stig_web_policy.json +95 -0
  431. data/standards/stig_web_server.json +317 -0
  432. data/standards/stig_web_server_security_requirements_guide.json +587 -0
  433. data/standards/stig_win2k3_audit.json +761 -0
  434. data/standards/stig_win2k8_audit.json +1085 -0
  435. data/standards/stig_win2k8_r2_audit.json +1637 -0
  436. data/standards/stig_win7_audit.json +1613 -0
  437. data/standards/stig_windows_10.json +1691 -0
  438. data/standards/stig_windows_2003_domain_controller.json +893 -0
  439. data/standards/stig_windows_2003_member_server.json +845 -0
  440. data/standards/stig_windows_2008_domain_controller.json +1475 -0
  441. data/standards/stig_windows_2008_member_server.json +1301 -0
  442. data/standards/stig_windows_7.json +1781 -0
  443. data/standards/stig_windows_8.json +2399 -0
  444. data/standards/stig_windows_88.1.json +2273 -0
  445. data/standards/stig_windows_8_8.1.json +2297 -0
  446. data/standards/stig_windows_defender_antivirus.json +239 -0
  447. data/standards/stig_windows_dns.json +185 -0
  448. data/standards/stig_windows_firewall_with_advanced_security.json +137 -0
  449. data/standards/stig_windows_paw.json +155 -0
  450. data/standards/stig_windows_phone_6.5_with_good_mobility_suite.json +65 -0
  451. data/standards/stig_windows_server_2008_r2_domain_controller.json +1961 -0
  452. data/standards/stig_windows_server_2008_r2_member_server.json +1745 -0
  453. data/standards/stig_windows_server_20122012_r2_domain_controller.json +2255 -0
  454. data/standards/stig_windows_server_20122012_r2_member_server.json +2045 -0
  455. data/standards/stig_windows_server_2012_2012_r2_domain_controller.json +2279 -0
  456. data/standards/stig_windows_server_2012_2012_r2_member_server.json +2075 -0
  457. data/standards/stig_windows_server_2012_domain_controller.json +2471 -0
  458. data/standards/stig_windows_server_2012_member_server.json +2249 -0
  459. data/standards/stig_windows_server_2016.json +1661 -0
  460. data/standards/stig_windows_vista.json +1517 -0
  461. data/standards/stig_windows_xp.json +893 -0
  462. data/standards/stig_wireless_keyboard_and_mouse.json +23 -0
  463. data/standards/stig_wireless_management_server_policy.json +53 -0
  464. data/standards/stig_wireless_remote_access_policy_security_implementation_guide.json +29 -0
  465. data/standards/stig_wlan_access_point_enclave-niprnet_connected.json +227 -0
  466. data/standards/stig_wlan_access_point_internet_gateway_only_connection.json +209 -0
  467. data/standards/stig_wlan_access_point_policy.json +17 -0
  468. data/standards/stig_wlan_authentication_server.json +29 -0
  469. data/standards/stig_wlan_bridge.json +209 -0
  470. data/standards/stig_wlan_client.json +65 -0
  471. data/standards/stig_wlan_controller.json +215 -0
  472. data/standards/stig_wlan_ids_sensorserver.json +23 -0
  473. data/standards/stig_wman_access_point.json +263 -0
  474. data/standards/stig_wman_bridge.json +209 -0
  475. data/standards/stig_wman_subscriber.json +65 -0
  476. data/standards/stig_zos_acf2.json +1451 -0
  477. data/standards/stig_zos_bmc_control-dacf2.json +53 -0
  478. data/standards/stig_zos_bmc_control-dracf.json +59 -0
  479. data/standards/stig_zos_bmc_control-dtss.json +65 -0
  480. data/standards/stig_zos_bmc_control-macf2.json +59 -0
  481. data/standards/stig_zos_bmc_control-mracf.json +65 -0
  482. data/standards/stig_zos_bmc_control-mrestartacf2.json +23 -0
  483. data/standards/stig_zos_bmc_control-mrestartracf.json +23 -0
  484. data/standards/stig_zos_bmc_control-mrestarttss.json +23 -0
  485. data/standards/stig_zos_bmc_control-mtss.json +71 -0
  486. data/standards/stig_zos_bmc_control-oacf2.json +53 -0
  487. data/standards/stig_zos_bmc_control-oracf.json +59 -0
  488. data/standards/stig_zos_bmc_control-otss.json +65 -0
  489. data/standards/stig_zos_bmc_ioaacf2.json +53 -0
  490. data/standards/stig_zos_bmc_ioaracf.json +59 -0
  491. data/standards/stig_zos_bmc_ioatss.json +65 -0
  492. data/standards/stig_zos_bmc_mainviewzosacf2.json +47 -0
  493. data/standards/stig_zos_bmc_mainviewzosracf.json +53 -0
  494. data/standards/stig_zos_bmc_mainviewzostss.json +59 -0
  495. data/standards/stig_zos_ca_1_tape_managementacf2.json +65 -0
  496. data/standards/stig_zos_ca_1_tape_managementracf.json +77 -0
  497. data/standards/stig_zos_ca_1_tape_managementtss.json +77 -0
  498. data/standards/stig_zos_ca_auditoracf2.json +29 -0
  499. data/standards/stig_zos_ca_auditorracf.json +29 -0
  500. data/standards/stig_zos_ca_auditortss.json +29 -0
  501. data/standards/stig_zos_ca_common_servicesacf2.json +23 -0
  502. data/standards/stig_zos_ca_common_servicesracf.json +29 -0
  503. data/standards/stig_zos_ca_common_servicestss.json +29 -0
  504. data/standards/stig_zos_ca_micsacf2.json +23 -0
  505. data/standards/stig_zos_ca_micsracf.json +23 -0
  506. data/standards/stig_zos_ca_micstss.json +23 -0
  507. data/standards/stig_zos_ca_mimacf2.json +41 -0
  508. data/standards/stig_zos_ca_mimracf.json +47 -0
  509. data/standards/stig_zos_ca_mimtss.json +47 -0
  510. data/standards/stig_zos_ca_vtapeacf2.json +29 -0
  511. data/standards/stig_zos_ca_vtaperacf.json +35 -0
  512. data/standards/stig_zos_ca_vtapetss.json +35 -0
  513. data/standards/stig_zos_catalog_solutionsacf2.json +23 -0
  514. data/standards/stig_zos_catalog_solutionsracf.json +23 -0
  515. data/standards/stig_zos_catalog_solutionstss.json +23 -0
  516. data/standards/stig_zos_clsupersessionacf2.json +53 -0
  517. data/standards/stig_zos_clsupersessionracf.json +65 -0
  518. data/standards/stig_zos_clsupersessiontss.json +71 -0
  519. data/standards/stig_zos_compuware_abend-aidacf2.json +47 -0
  520. data/standards/stig_zos_compuware_abend-aidracf.json +53 -0
  521. data/standards/stig_zos_compuware_abend-aidtss.json +53 -0
  522. data/standards/stig_zos_cssmtpacf2.json +23 -0
  523. data/standards/stig_zos_cssmtpracf.json +29 -0
  524. data/standards/stig_zos_cssmtptss.json +29 -0
  525. data/standards/stig_zos_fdracf2.json +23 -0
  526. data/standards/stig_zos_fdrracf.json +23 -0
  527. data/standards/stig_zos_fdrtss.json +23 -0
  528. data/standards/stig_zos_hcdacf2.json +29 -0
  529. data/standards/stig_zos_hcdracf.json +29 -0
  530. data/standards/stig_zos_hcdtss.json +29 -0
  531. data/standards/stig_zos_ibm_cics_transaction_serveracf2.json +17 -0
  532. data/standards/stig_zos_ibm_cics_transaction_serverracf.json +17 -0
  533. data/standards/stig_zos_ibm_cics_transaction_servertss.json +17 -0
  534. data/standards/stig_zos_ibm_health_checkeracf2.json +23 -0
  535. data/standards/stig_zos_ibm_health_checkerracf.json +29 -0
  536. data/standards/stig_zos_ibm_health_checkertss.json +29 -0
  537. data/standards/stig_zos_ibm_system_display_and_search_facility_sdsfacf2.json +53 -0
  538. data/standards/stig_zos_ibm_system_display_and_search_facility_sdsfracf.json +59 -0
  539. data/standards/stig_zos_ibm_system_display_and_search_facility_sdsftss.json +53 -0
  540. data/standards/stig_zos_icsfacf2.json +29 -0
  541. data/standards/stig_zos_icsfracf.json +35 -0
  542. data/standards/stig_zos_icsftss.json +35 -0
  543. data/standards/stig_zos_netviewacf2.json +41 -0
  544. data/standards/stig_zos_netviewracf.json +47 -0
  545. data/standards/stig_zos_netviewtss.json +53 -0
  546. data/standards/stig_zos_quest_nc-passacf2.json +35 -0
  547. data/standards/stig_zos_quest_nc-passracf.json +41 -0
  548. data/standards/stig_zos_quest_nc-passtss.json +47 -0
  549. data/standards/stig_zos_racf.json +1415 -0
  550. data/standards/stig_zos_roscoeacf2.json +47 -0
  551. data/standards/stig_zos_roscoeracf.json +53 -0
  552. data/standards/stig_zos_roscoetss.json +59 -0
  553. data/standards/stig_zos_srrauditacf2.json +23 -0
  554. data/standards/stig_zos_srrauditracf.json +23 -0
  555. data/standards/stig_zos_srraudittss.json +23 -0
  556. data/standards/stig_zos_tadzacf2.json +29 -0
  557. data/standards/stig_zos_tadzracf.json +35 -0
  558. data/standards/stig_zos_tadztss.json +35 -0
  559. data/standards/stig_zos_tdmfacf2.json +23 -0
  560. data/standards/stig_zos_tdmfracf.json +23 -0
  561. data/standards/stig_zos_tdmftss.json +23 -0
  562. data/standards/stig_zos_tss.json +1523 -0
  563. data/standards/stig_zos_vssracf.json +29 -0
  564. metadata +691 -0
@@ -0,0 +1,3 @@
1
+ class Kriterion
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,280 @@
1
+ require 'json'
2
+ require 'logger'
3
+ require 'net/http'
4
+ require 'benchmark'
5
+ require 'kriterion'
6
+ require 'kriterion/logs'
7
+ require 'kriterion/item'
8
+ require 'kriterion/report'
9
+ require 'kriterion/metrics'
10
+ require 'kriterion/section'
11
+ require 'kriterion/standard'
12
+
13
+ require 'pry'
14
+
15
+ class Kriterion
16
+ class Worker
17
+ include Kriterion::Logs
18
+
19
+ attr_reader :uri
20
+ attr_reader :queue
21
+ attr_reader :queue_uri
22
+ attr_reader :standards
23
+ attr_reader :backend
24
+ attr_reader :metrics
25
+
26
+ def initialize(opts = {})
27
+ logger.level = if opts[:debug]
28
+ Kriterion::Logs::DEBUG
29
+ else
30
+ Kriterion::Logs::INFO
31
+ end
32
+
33
+ # Set up connections
34
+ @uri = opts[:uri]
35
+ @queue = opts[:queue]
36
+ @queue_uri = URI("#{@uri}/q/#{@queue}")
37
+ @metrics = Kriterion::Metrics.new
38
+
39
+ # Set up the backend
40
+ # TODO: Clean this up and make fully dynamic
41
+ backend_name = opts[:backend] || 'mongodb'
42
+ case backend_name
43
+ when 'mongodb'
44
+ require 'kriterion/backend/mongodb'
45
+ Kriterion::Backend.set(
46
+ Kriterion::Backend::MongoDB.new(
47
+ hostname: opts[:mongo_hostname],
48
+ port: opts[:mongo_port],
49
+ database: opts[:mongo_database],
50
+ metrics: metrics
51
+ )
52
+ )
53
+ end
54
+
55
+ @backend = Kriterion::Backend.get
56
+
57
+ # TODO: Work out how workers are going to get the list of standards frmo the API runner
58
+ # TODO: Remove placeholder code
59
+ standards_dir = File.expand_path('standards', Kriterion::ROOT)
60
+ @standards = Kriterion.standards([standards_dir])
61
+ end
62
+
63
+ def process_report(report)
64
+ report = Kriterion::Report.new(report)
65
+
66
+ # Check if the report contains any relevant resources
67
+ standard_names = standards.keys
68
+ relevant_resources = report.resources_with_tags(standard_names)
69
+
70
+ return nil if relevant_resources.empty?
71
+
72
+ logger.info "Processing report with #{relevant_resources.count} relevant resources"
73
+
74
+ # Purge all old events relevant to this node, they will be re-added
75
+ backend.purge_events! report.certname
76
+
77
+ # Process the report
78
+ affected_standards = relevant_resources.group_by do |resource|
79
+ # Select the standard tag
80
+ stds = (resource.tags & standard_names)
81
+
82
+ raise 'Found a resource that was relevant to more than one standard. This is not yet supported' if stds.length > 1
83
+
84
+ stds[0]
85
+ end
86
+
87
+ affected_standards.each do |name, resources|
88
+ standard = backend.get_standard(name, recurse: true)
89
+ unless standard
90
+ # If the standard doesn't yet exist in the backed, add it
91
+ standard = Kriterion::Standard.new(@standards[name])
92
+ logger.debug "Adding starndard #{standard.name} to backend"
93
+ backend.add_standard(standard)
94
+ # TODO: See if there is a better way to deal with this, the reason I'm
95
+ # doing this is that I want to make sure that there is not difference
96
+ # between a newly created object and one that came from the database
97
+ standard = backend.get_standard(name, recurse: true)
98
+ end
99
+
100
+ resources.each do |resource|
101
+ # Get the section tag
102
+ section_tag = resource.tags.select do |t|
103
+ standard.item_syntax.match(t)
104
+ end
105
+
106
+ # TODO: Make this work
107
+ raise 'Found a resource relevant to multiple sections' if section_tag.length > 1
108
+
109
+ section_tag = section_tag.first
110
+
111
+ # Go though all sections and subsections and create them if required
112
+ captures = standard.item_syntax.match(section_tag).captures - [nil]
113
+
114
+ # Convert the captures to a list of sections, but excluse the last one
115
+ # because that will be the name of the item
116
+ parent_sections = captures_to_sections(standard, captures[0..-2])
117
+
118
+ # If there are no captures then this is a direct child of a standard
119
+ if captures.nil?
120
+ section = standard
121
+ else
122
+ section = parent_sections.reduce(standard) do |previous, current|
123
+ # If the section already exists return it
124
+ if previous.find_section(current)
125
+ previous.find_section(current)
126
+ else
127
+ # This is a new section that does not yet exist in the database,
128
+ # we therefore need to get the details and all them all in
129
+ current_section_name = if previous.is_a? Kriterion::Standard
130
+ current
131
+ elsif previous.is_a? Kriterion::Section
132
+ [
133
+ previous.name,
134
+ current
135
+ ].join(standard.section_separator)
136
+ end
137
+
138
+ # Get the details from the standards database (name, description
139
+ # etc.)
140
+ current_section = @standards[name]['sections'].select do |s|
141
+ s['name'] == current_section_name
142
+ end[0]
143
+
144
+ if current_section.nil?
145
+ previous
146
+ else
147
+ # Create the new section object
148
+ current_section['standard'] = standard.name
149
+ current_section['parent_type'] = previous.type
150
+ current_section['parent_uuid'] = previous.uuid
151
+ current_section = Kriterion::Section.new(current_section)
152
+
153
+ # Add the section to the backend
154
+ backend.add_section(current_section)
155
+ current_section
156
+ end
157
+ end
158
+ end
159
+ end
160
+
161
+ # Create and add the item if it doesn't yet exist
162
+ item = case section.items.select { |i| i.id == section_tag }.count
163
+ when 1
164
+ # The item already exists, return it
165
+ section.items.select { |i| i.id == section_tag }[0]
166
+ when 0
167
+ # The item does not exist, create it, add to the database,
168
+ # then return it
169
+ item_details = @standards[name]['items'].select do |i|
170
+ i['id'].upcase == section_tag.upcase
171
+ end[0]
172
+ item_details['parent_uuid'] = section.uuid
173
+ item_details['parent_type'] = section.type
174
+ item_details['section_path'] = captures
175
+ backend.add_item(Kriterion::Item.new(item_details))
176
+ else
177
+ raise "Found muliple sections with the id #{section_tag}"
178
+ end
179
+
180
+ # Add extra contextual data to that resource
181
+ resource.parent_uuid = item.uuid
182
+
183
+ # Add the new resource to the backend if it doesn't exist
184
+ unless item.resources.include? resource
185
+ item.resources << resource
186
+ backend.add_resource(resource)
187
+ end
188
+
189
+ # Inform the database that this node is unchanged if we have no events
190
+ if resource.events.empty?
191
+ backend.add_unchanged_node(resource, report.certname)
192
+ end
193
+
194
+ # Add all events to the database
195
+ resource.events = resource.events.map do |event|
196
+ event = Kriterion::Event.new(event)
197
+ event.certname = report.certname
198
+ event.resource = resource.resource
199
+ backend.add_event(event)
200
+ event
201
+ end
202
+
203
+ metrics[:update_compliance] += Benchmark.realtime do
204
+ # Finally update the compliance details for this resource and its
205
+ # parent item
206
+ backend.update_compliance! resource
207
+ backend.update_compliance! item
208
+
209
+ # Find all of the parent sections and update the compliance on them
210
+ # Don't recalculate the compliance of the standard yet, wait until
211
+ # the end.
212
+ item.parent_names(standard.section_separator).each do |parent|
213
+ # TODO: Complete this so that it updates the compliance of
214
+ # everything. It's probably better if we re-query this stuff from
215
+ # the database to reduce the chances of race conditions
216
+ result = backend.find_sections(
217
+ name: parent,
218
+ standard: standard.name
219
+ )
220
+ result.each { |r| backend.update_compliance! r }
221
+ end
222
+ end
223
+ end
224
+
225
+ # Reload the standard as new sections may have been added
226
+ standard = backend.get_standard(name, recurse: true)
227
+
228
+ metrics[:update_compliance] += Benchmark.realtime do
229
+ # Recalculate the compliance of a given standard once it is done
230
+ backend.update_compliance! standard
231
+ end
232
+ end
233
+ end
234
+
235
+ def run
236
+ while true do
237
+ # Connect and check if there is anythong on the queue
238
+ # TODO: Change this so that they listen properly
239
+ logger.debug "GET #{queue_uri}"
240
+ begin
241
+ response = Net::HTTP.get_response(queue_uri)
242
+
243
+ case response.code
244
+ when '204'
245
+ logger.debug 'Queue empty, sleeping...'
246
+ sleep 3
247
+ when '200'
248
+ logger.debug 'Got a report, parsing...'
249
+ report = JSON.parse(JSON.parse(response.body)['value'])
250
+ logger.info "Processing report: #{report['host']} #{report['time']}"
251
+
252
+ metrics[:total_processing] += Benchmark.realtime do
253
+ process_report(report)
254
+ end
255
+
256
+ metrics.print
257
+ end
258
+ rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
259
+ Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError,
260
+ Net::ProtocolError, Errno::ECONNREFUSED, SocketError => e
261
+ logger.error "Error while running: #{e}"
262
+ logger.info 'Sleeping...'
263
+ sleep 3
264
+ end
265
+ end
266
+ end
267
+
268
+ private
269
+
270
+ def captures_to_sections(standard, captures)
271
+ sections = []
272
+
273
+ captures.each_index do |index|
274
+ sections << captures[0..index].join(standard.section_separator)
275
+ end
276
+
277
+ sections
278
+ end
279
+ end
280
+ end
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "cis_red_hat_enterprise_linux_7",
3
+ "date": "2016-02-06",
4
+ "description": "This document provides prescriptive guidance for establishing a secure configuration posture for Red Hat Enterprise Linux 7 systems running on x86 and x64 platforms. This document was tested against Red Hat Enterprise Linux 7.2. The guidance within broadly assumes that operations are being performed as the root user. Non-root users may not be able to access certain areas of the system, especially after remediation has been performed. It is advisable to verify root users path integrity and the integrity of any programs being run prior to execution of commands and scripts included in this benchmark.",
5
+ "title": "CIS Red Hat Enterprise Linux 7 Benchmark",
6
+ "version": "2.1.0",
7
+ "item_syntax": "^(\\d+)\\.?(\\d+)?\\.?(\\d+)?\\.?(\\d+)?\\.?(\\d+)?\\.?(\\d+)?\\.?(\\d+)?$",
8
+ "section_separator": ".",
9
+ "sections": [
10
+ {
11
+ "name": "1",
12
+ "title": "Initial Setup",
13
+ "description": "Items in this section are advised for all systems, but may be difficult or require extensive preparation after the initial setup of the system."
14
+ },
15
+ {
16
+ "name": "1.7",
17
+ "title": "Warning Banners",
18
+ "description": "Presenting a warning message prior to the normal user login may assist in the prosecution of trespassers on the computer system. Changing some of these login banners also has the side effect of hiding OS version information and other detailed system information from attackers attempting to target specific exploits at a system. Guidelines published by the US Department of Defense require that warning messages include at least the name of the organization that owns the system, the fact that the system is subject to monitoring and that such monitoring is in compliance with local statutes, and that use of the system implies consent to such monitoring. It is important that the organization's legal counsel review the content of all messages before any system modifications are made, as these warning messages are inherently site-specific. More information (including citations of relevant case law) can be found at http://www.justice.gov/criminal/cybercrime/ \n\n**Note:** The text provided in the remediation actions for these items is intended as an example only. Please edit to include the specific text for your organization as approved by your legal department."
19
+ },
20
+ {
21
+ "name": "1.7.1",
22
+ "title": "Command Line Warning Banners",
23
+ "description": "The `/etc/motd`, `/etc/issue`, and `/etc/issue.net` files govern warning banners forstandard command line logins for both local and remote users."
24
+ }
25
+ ],
26
+ "items": [
27
+ {
28
+ "id": "1.7.1.1",
29
+ "title": "Ensure message of the day is configured properly (Scored)",
30
+ "description": "The contents of the `/etc/motd` file are displayed to users after login and function as a message of the day for authenticated users.\n\nUnix-based systems have typically displayed information about the OS release and patch level upon logging in to the system. This information can be useful to developers who are developing software for a particular OS platform.",
31
+ "severity": "high"
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1,209 @@
1
+ {
2
+ "name": "stig_a10_networks_adc_alg",
3
+ "date": "2016-04-15",
4
+ "description": "This Security Technical Implementation Guide is published as a tool to improve the security of Department of Defense (DoD) information systems. The requirements are derived from the National Institute of Standards and Technology (NIST) 800-53 and related documents. Comments or proposed revisions to this document should be sent via e-mail to the following address: disa.stig_spt@mail.mil.",
5
+ "title": "A10 Networks ADC ALG Security Technical Implementation Guide",
6
+ "version": "1",
7
+ "item_syntax": "^\\w-\\d+$",
8
+ "section_separator": null,
9
+ "items": [
10
+ {
11
+ "id": "V-67957",
12
+ "title": "The A10 Networks ADC, when used for TLS encryption and decryption, must be configured to comply with the required TLS settings in NIST SP 800-52.",
13
+ "description": "SP 800-52 provides guidance on using the most secure version and configuration of the TLS/SSL protocol. Using older unauthorized versions or incorrectly configuring protocol negotiation makes the gateway vulnerable to known and unknown attacks which exploit vulnerabilities in this protocol.\n\nThis requirement applies to TLS gateways (also known as SSL gateways) and is not applicable to VPN devices. Application protocols such as HTTPS and DNSSEC use TLS as the underlying security protocol thus are in scope for this requirement. NIS SP 800-52 provides guidance.\n\nSP 800-52 sets TLS version 1.1 as a minimum version, thus all versions of SSL are not allowed (including for client negotiation) either on DoD-only or on public facing servers.",
14
+ "severity": "medium"
15
+ },
16
+ {
17
+ "id": "V-67959",
18
+ "title": "The A10 Networks ADC, when used to load balance web applications, must enable external logging for accessing Web Application Firewall data event messages.",
19
+ "description": "Without establishing where events occurred, it is impossible to establish, correlate, and investigate the events leading up to an outage or attack.\n\nExternal logging must be enabled for WAF data event messages. Create a server configuration for each log server, and then add a TCP or UDP port to each server configuration, with the port number on which the external log server listens for log messages.",
20
+ "severity": "low"
21
+ },
22
+ {
23
+ "id": "V-67961",
24
+ "title": "The A10 Networks ADC must send an alert to, at a minimum, the ISSO and SCA when connectivity to the Syslog servers is lost.",
25
+ "description": "It is critical for the appropriate personnel to be aware if a system is at risk of failing to process audit logs as required. Without this notification, the security personnel may be unaware of an impending failure of the audit capability and system operation may be adversely affected.\n\nAudit processing failures include software/hardware errors, failures in the audit capturing mechanisms, and audit storage capacity being reached or exceeded. Possible audit processing failures also include the inability of device to write to the central audit log.\n\nThis requirement applies to each audit data storage repository (i.e., distinct information system component where audit records are stored), the centralized audit storage capacity of organizations, (i.e., all audit data storage repositories combined), or both.\n\nThis does not apply to audit logs generated on behalf of the device itself (management).",
26
+ "severity": "low"
27
+ },
28
+ {
29
+ "id": "V-67963",
30
+ "title": "The A10 Networks ADC must not have unnecessary scripts installed.",
31
+ "description": "Information systems are capable of providing a wide variety of functions (capabilities or processes) and services. Some of these functions and services are installed and enabled by default. The organization must determine which functions and services are required to perform the content filtering and other necessary core functionality for each component of the device. Unnecessary capabilities or services are often overlooked and therefore may remain unsecured. They increase the risk to the platform by providing additional attack vectors.\n\nThe A10 Networks ADC can use a TCL-based scripting language called aFleX. Scripts used by an A10 Networks ADC must be documented so that Administrative and Security personnel understand them.",
32
+ "severity": "medium"
33
+ },
34
+ {
35
+ "id": "V-67965",
36
+ "title": "The A10 Networks ADC must use DNS Proxy mode when Global Server Load Balancing is used.",
37
+ "description": "Unrelated or unneeded proxy services increase the attack vector and add excessive complexity to the securing of the device. Multiple application proxies can be installed on many devices. However, proxy types must be limited to related functions.\n\nThe A10 Networks ADC is capable of DNS-based Global Server Load Balancing (GSLB), which uses Domain Name Service (DNS) to expand load balancing to larger scales, including globally. Global Server Load Balancing can operate in either Proxy mode or Server mode. In Proxy mode, all DNS queries arriving at the DNS Proxy IP address are forwarded to the existing DNS server. In Server mode, the device directly responds to queries for specific service IP addresses in the GSLB zone and can reply with A, AAAA, MX, NS, PTR, SRV, and SOA records. For all other records, the ACOS device will attempt Proxy mode unless configured as fully authoritative.",
38
+ "severity": "medium"
39
+ },
40
+ {
41
+ "id": "V-67967",
42
+ "title": "The A10 Networks ADC must be configured to prohibit or restrict the use of functions, ports, protocols, and/or services as defined in the PPSM CAL and vulnerability assessments.",
43
+ "description": "In order to prevent unauthorized connection of devices, unauthorized transfer of information, or unauthorized tunneling (i.e., embedding of data types within data types); organizations must disable or restrict unused or unnecessary physical and logical ports/protocols on information systems.\n\nThe device must be configured to prevent or restrict the use of prohibited ports, protocols, and services throughout the network by filtering the network traffic and disallowing or redirecting traffic as necessary. Default and updated policy filters from the vendors will disallow older version of protocols and applications and will address most known non-secure ports, protocols, and/or services. However, sources for further policy filters are the IAVMs and the PPSM requirements.",
44
+ "severity": "medium"
45
+ },
46
+ {
47
+ "id": "V-67969",
48
+ "title": "The A10 Networks ADC when used for TLS encryption and decryption must validate certificates used for TLS functions by performing RFC 5280-compliant certification path validation.",
49
+ "description": "A certificate's certification path is the path from the end entity certificate to a trusted root certification authority (CA). Certification path validation is necessary for a relying party to make an informed decision regarding acceptance of an end entity certificate.\n\nCertification path validation includes checks such as certificate issuer trust, time validity and revocation status for each certificate in the certification path. Revocation status information for CA and subject certificates in a certification path is commonly provided via certificate revocation lists (CRLs) or online certificate status protocol (OCSP) responses.\n\nThe A10 Networks ADC can be configured to use Open Certificate Status Protocol (OCSP) and/or certificate revocation lists (CRLs) to verify the revocation status of certificates. OCSP is preferred since it reduces the overhead associated with CRLs.",
50
+ "severity": "medium"
51
+ },
52
+ {
53
+ "id": "V-67973",
54
+ "title": "The A10 Networks ADC must not have any unnecessary or unapproved virtual servers configured.",
55
+ "description": "A deny-all, permit-by-exception network communications traffic policy ensures that only those connections which are essential and approved are allowed.\n\nA virtual server is an instance where the device accepts traffic from outside hosts and redirects traffic to one or more real servers. In keeping with a deny-all, permit-by-exception policy, the services that the device provides to outside hosts must be only those that are necessary, documented, and approved.",
56
+ "severity": "medium"
57
+ },
58
+ {
59
+ "id": "V-67975",
60
+ "title": "The A10 Networks ADC, when used to load balance web applications, must strip HTTP response headers.",
61
+ "description": "Providing too much information in error messages risks compromising the data and security of the application and system. HTTP response headers can disclose vulnerabilities about a web server. This information can be used by an attacker. The A10 Networks ADC can filter response headers; this removes the web server’s identifying headers in outgoing responses (such as Server, X-Powered-By, and X-AspNet-Version).",
62
+ "severity": "medium"
63
+ },
64
+ {
65
+ "id": "V-67977",
66
+ "title": "The A10 Networks ADC, when used to load balance web applications, must replace response codes.",
67
+ "description": "Providing too much information in error messages risks compromising the data and security of the application and system. HTTP response codes can be used by an attacker to learn how a web server responds to particular inputs. Certain codes reveal that a security device or the web server defended against a particular attack, which enables the attacker to eliminate that attack as an option. Using ambiguous response codes makes it more difficult for an attacker to determine what defenses are in place. The A10 Networks ADC can be configured to cloak 4xx and 5xx response codes for outbound responses from a web server. The acceptable HTTP response codes are contained in the preconfigured WAF policy file named \"allowed_resp_codes\".",
68
+ "severity": "medium"
69
+ },
70
+ {
71
+ "id": "V-67979",
72
+ "title": "To protect against data mining, the A10 Networks ADC must detect and prevent SQL and other code injection attacks launched against data storage objects, including, at a minimum, databases, database records, queries, and fields.",
73
+ "description": "Data mining is the analysis of large quantities of data to discover patterns and is used in intelligence gathering. Failure to prevent attacks launched against organizational information from unauthorized data mining may result in the compromise of information.\n\nInjection attacks allow an attacker to inject code into a program or query or inject malware onto a computer to execute remote commands that can read or modify a database, or change data on a website. Web applications frequently access databases to store, retrieve, and update information. An attacker can construct inputs that the database will execute. This is most commonly referred to as a code injection attack. This type of attack includes XPath and LDAP injections.\n\nThe A10 Networks ADC contains a WAF policy file that provides a basic collection of SQL special characters and keywords that are common to SQL injection attacks. The terms in this policy file can trigger commands in the back-end SQL database and allow unauthorized users to obtain sensitive information. If a request contains a term that matches a search definition in the “sqlia_defs” policy file, the device can be configured to sanitize the request of the SQL command or deny the request entirely. The \"sanitize\" option uses more processor cycles than the preferred option of “drop”.",
74
+ "severity": "medium"
75
+ },
76
+ {
77
+ "id": "V-67981",
78
+ "title": "To protect against data mining, the A10 Networks ADC must detect and prevent code injection attacks launched against application objects including, at a minimum, application URLs and application code.",
79
+ "description": "Data mining is the analysis of large quantities of data to discover patterns and is used in intelligence gathering. Failure to prevent attacks launched against organizational information from unauthorized data mining may result in the compromise of information.\n\nInjection attacks allow an attacker to inject code into a program or query or inject malware onto a computer to execute remote commands that can read or modify a database, or change data on a website. These attacks include buffer overrun, XML, JavaScript, and HTML injections.",
80
+ "severity": "medium"
81
+ },
82
+ {
83
+ "id": "V-67983",
84
+ "title": "To protect against data mining, the A10 Networks ADC providing content filtering must prevent SQL injection attacks launched against data storage objects, including, at a minimum, databases, database records, and database fields.",
85
+ "description": "Data mining is the analysis of large quantities of data to discover patterns and is used in intelligence gathering. Failure to prevent attacks launched against organizational information from unauthorized data mining may result in the compromise of information.\n\nSQL injection attacks are the most prevalent attacks against web applications and databases. These attacks inject SQL commands that can read, modify, or compromise the meaning of the original SQL query. An attacker can spoof identity; expose, tamper, destroy, or make existing data unavailable; or gain unauthorized privileges on the database server.",
86
+ "severity": "medium"
87
+ },
88
+ {
89
+ "id": "V-67987",
90
+ "title": "To protect against data mining, the A10 Networks ADC providing content filtering must detect code injection attacks from being launched against data storage objects, including, at a minimum, databases, database records, queries, and fields.",
91
+ "description": "Data mining is the analysis of large quantities of data to discover patterns and is used in intelligence gathering. Failure to detect attacks launched against organizational databases may result in the compromise of information.\n\nInjection attacks allow an attacker to inject code into a program or query or inject malware onto a computer to execute remote commands that can read or modify a database, or change data on a website. Web applications frequently access databases to store, retrieve, and update information. An attacker can construct inputs that the database will execute. This is most commonly referred to as a code injection attack. This type of attack includes XPath and LDAP injections.",
92
+ "severity": "medium"
93
+ },
94
+ {
95
+ "id": "V-67989",
96
+ "title": "To protect against data mining, the A10 Networks ADC providing content filtering must detect SQL injection attacks launched against data storage objects, including, at a minimum, databases, database records, and database fields.",
97
+ "description": "Data mining is the analysis of large quantities of data to discover patterns and is used in intelligence gathering. Failure to detect attacks launched against organizational databases may result in the compromise of information.\n\nSQL injection attacks are the most prevalent attacks against web applications and databases. These attacks inject SQL commands that can read, modify, or compromise the meaning of the original SQL query. An attacker can spoof identity; expose, tamper, destroy, or make existing data unavailable; or gain unauthorized privileges on the database server.",
98
+ "severity": "medium"
99
+ },
100
+ {
101
+ "id": "V-67991",
102
+ "title": "To protect against data mining, the A10 Networks ADC providing content filtering as part of its intermediary services must detect code injection attacks launched against application objects including, at a minimum, application URLs and application code.",
103
+ "description": "Data mining is the analysis of large quantities of data to discover patterns and is used in intelligence gathering. Failure to detect attacks launched against organizational applications may result in the compromise of information.\n\nInjection attacks allow an attacker to inject code into a program or query or inject malware onto a computer to execute remote commands that can read or modify a database, or change data on a website. These attacks include buffer overrun, XML, JavaScript, and HTML injections.",
104
+ "severity": "medium"
105
+ },
106
+ {
107
+ "id": "V-67993",
108
+ "title": "The A10 Networks ADC being used for TLS encryption and decryption using PKI-based user authentication must only accept end entity certificates issued by DoD PKI or DoD-approved PKI Certificate Authorities (CAs) for the establishment of protected sessions.",
109
+ "description": "Non-DoD approved PKIs have not been evaluated to ensure that they have security controls and identity vetting procedures in place which are sufficient for DoD systems to rely on the identity asserted in the certificate. PKIs lacking sufficient security controls and identity vetting procedures risk being compromised and issuing certificates that enable adversaries to impersonate legitimate users.\n\nThe authoritative list of DoD-approved PKIs is published at http://iase.disa.mil/pki-pke/interoperability. DoD-approved PKI CAs may include Category I, II, and III certificates. Category I DoD-Approved External PKIs are PIV issuers. Category II DoD-Approved External PKIs are Non-Federal Agency PKIs cross certified with the Federal Bridge Certification Authority (FBCA). Category III DoD-Approved External PKIs are Foreign, Allied, or Coalition Partner PKIs.\n\nDeploying the device with TLS enabled will require the installation of DoD and/or DoD-Approved CA certificates in the trusted root certificate store of each proxy to be used for TLS traffic.\n\nThis requirement focuses on communications protection for the application session rather than for the network packet.",
110
+ "severity": "medium"
111
+ },
112
+ {
113
+ "id": "V-67995",
114
+ "title": "The A10 Networks ADC must protect against TCP and UDP Denial of Service (DoS) attacks by employing Source-IP based connection-rate limiting.",
115
+ "description": "If the network does not provide safeguards against DoS attacks, network resources will be unavailable to users. Installation of content filtering gateways and application layer firewalls at key boundaries in the architecture mitigates the risk of DoS attacks. These attacks can be detected by matching observed communications traffic with patterns of known attacks and monitoring for anomalies in traffic volume/type.\n\nDetection components that use rate-based behavior analysis can detect attacks when signatures for the attack do not exist or are not installed. These attacks include zero-day attacks which are new attacks for which vendors have not yet developed signatures. Rate-based behavior analysis can detect sophisticated, Distributed DoS (DDoS) attacks by correlating traffic information from multiple network segments or components. This requirement applies to the communications traffic functionality of the device as it pertains to handling communications traffic, rather than to the device itself.\n\nThe A10 Networks ADC provides Source-IP based connection-rate limiting to mitigate UDP floods and similar attacks. Source-IP based connection-rate limiting protects the system from excessive connection requests from individual clients. If traffic from a client exceeds the configured threshold, the device should be configured to lock out the client for a specified number of seconds. During the lockout period, all connection requests from the client are dropped. The lockout period ranges from 1-3600 seconds (1 hour); there is no default value.",
116
+ "severity": "high"
117
+ },
118
+ {
119
+ "id": "V-67997",
120
+ "title": "The A10 Networks ADC must implement load balancing to limit the effects of known and unknown types of Denial of Service (DoS) attacks.",
121
+ "description": "Although maintaining high availability is normally an operational consideration, load balancing is also a useful strategy in mitigating network-based DoS attacks. If the network does not provide safeguards against DoS attacks, network resources will be unavailable to users. Load balancing provides service redundancy which reduces the susceptibility of the enclave to many DoS attacks. Since one of the primary purposes of the Application Delivery Controller is to balance loads across multiple servers, it would be extremely unusual for it to not be configured to perform this function.",
122
+ "severity": "medium"
123
+ },
124
+ {
125
+ "id": "V-67999",
126
+ "title": "The A10 Networks ADC must enable DDoS filters.",
127
+ "description": "If the network does not provide safeguards against DoS attacks, network resources will be unavailable to users. Installation of content filtering gateways and application layer firewalls at key boundaries in the architecture mitigates the risk of DoS attacks. These attacks can be detected by matching observed communications traffic with patterns of known attacks and monitoring for anomalies in traffic volume, type, or protocol usage. Detection components that use signatures can detect known attacks by using known attack signatures. Signatures are usually obtained from and updated by the vendor.",
128
+ "severity": "medium"
129
+ },
130
+ {
131
+ "id": "V-68001",
132
+ "title": "The A10 Networks ADC, when used to load balance web applications, must examine incoming user requests against the URI White Lists.",
133
+ "description": "Unrestricted traffic may contain malicious traffic, which poses a threat to an enclave or to other connected networks. Additionally, unrestricted traffic may transit a network, which uses bandwidth and other resources.\n\nAccess control policies and access control lists implemented on devices that control the flow of network traffic (e.g., application level firewalls and Web content filters), ensure the flow of traffic is only allowed from authorized sources to authorized destinations. Networks with different levels of trust (e.g., the Internet or CDS) must be kept separate.\n\nThe URI White List defines acceptable destination URIs allowed for incoming requests. The White List Check compares the URI of an incoming request against the rules contained in the URI White List policy file. Connection requests are accepted only if the URI matches a rule in the URI White List. Note: A URI Black List can also be configured, which takes priority over a URI White List. However, since deny-all, permit by exception is a fundamental principle, a URI White List is necessary.",
134
+ "severity": "medium"
135
+ },
136
+ {
137
+ "id": "V-68005",
138
+ "title": "The A10 Networks ADC, when used to load balance web applications, must enable external logging for WAF data event messages.",
139
+ "description": "Without coordinated reporting between separate devices, it is not possible to identify the true scale and possible target of an attack.\n\nExternal logging must be enabled for WAF data event messages. External logging is activated once the WAF template that uses the logging template is bound to an HTTP/HTTPS virtual port.",
140
+ "severity": "low"
141
+ },
142
+ {
143
+ "id": "V-68009",
144
+ "title": "The A10 Networks ADC must enable logging for packet anomaly events.",
145
+ "description": "Without an alert, security personnel may be unaware of major detection incidents that require immediate action and this delay may result in the loss or compromise of information. Since these incidents require immediate action, these messages are assigned a critical or level 1 priority/severity, depending on the system's priority schema.\n\nThese systems must generate an alert when detection events from real-time monitoring occur. Alerts may be transmitted, for example, telephonically, by electronic mail messages, or by text messaging. The device must either send the alert to a management console that is actively monitored by authorized personnel or use a messaging capability to send the alert directly to designated personnel.\n\nThe A10 Networks ADC must be configured to generate a log message when IP anomalies are detected.",
146
+ "severity": "medium"
147
+ },
148
+ {
149
+ "id": "V-68011",
150
+ "title": "The A10 Networks ADC must enable logging of Denial of Service (DoS) attacks.",
151
+ "description": "Without an alert, security personnel may be unaware of major detection incidents that require immediate action, and this delay may result in the loss or compromise of information. CJCSM 6510.01B, \"Cyber Incident Handling Program\", lists nine Cyber Incident and Reportable Event Categories. DoD has determined that categories identified by CJCSM 6510.01B Major Indicators (category 1, 2, 4, or 7 detection events) will require an alert when an event is detected. Alerts may be transmitted, for example, telephonically, by electronic mail messages, or by text messaging. The device must either send the alert to a management console that is actively monitored by authorized personnel or use a messaging capability to send the alert directly to designated personnel.\n\nThe A10 Networks ADC must be configured to generate a log message when IP anomalies and DoS attacks are detected.",
152
+ "severity": "medium"
153
+ },
154
+ {
155
+ "id": "V-68013",
156
+ "title": "The A10 Networks ADC, when used for load-balancing web servers, must not allow the HTTP TRACE and OPTIONS methods.",
157
+ "description": "HTTP offers a number of methods that can be used to perform actions on the web server. Some of these HTTP methods can be used for nefarious purposes if the web server is misconfigured. The two HTTP methods used for normal requests are GET and POST, so incoming requests should be limited to those methods.\n\nAlthough the HTTP TRACE method is useful for debugging, it enables cross-site scripting attacks. By exploiting certain browser vulnerabilities, an attacker may manipulate the TRACE method. The HEAD, GET, POST, and CONNECT methods are generally regarded as safe. For a WAF template, the GET and POST are the default values and are the safest options, so restriction the methods to GET and POST is recommended.",
158
+ "severity": "medium"
159
+ },
160
+ {
161
+ "id": "V-68015",
162
+ "title": "The A10 Networks ADC must reveal error messages only to authorized individuals (ISSO, ISSM, and SA).",
163
+ "description": "Only authorized personnel should be aware of errors and the details of the errors. Error messages are an indicator of an organization's operational state or can give configuration details about the network element. Limiting access to system logs and administrative consoles to authorized personnel will help to mitigate this risk. However, user feedback and error messages should also be restricted by type and content in accordance with security best practices (e.g., ICMP messages).\n\nIn the A10 Networks ADC, the audit log is maintained in a separate file separate from the system log. Access to the audit log is role-based. The audit log messages that are displayed for an admin depend upon that administrator’s role (privilege level). Administrators with Root, Read Write, or Read Only privileges who view the audit log can view all the messages, for all system partitions.",
164
+ "severity": "medium"
165
+ },
166
+ {
167
+ "id": "V-68019",
168
+ "title": "The A10 Networks ADC must, at a minimum, off-load audit log records onto a centralized log server.",
169
+ "description": "Off-loading ensures audit information does not get overwritten if the limited audit storage capacity is reached and also protects the audit record in case the system/component being audited is compromised.\n\nOff-loading is a common process in information systems with limited audit storage capacity. The audit storage on the device is used only in a transitory fashion until the system can communicate with the centralized log server designated for storing the audit records, at which point the information is transferred. However, DoD requires that the log be transferred in real time which indicates that the time from event detection to off-loading is seconds or less.\n\nThis does not apply to audit logs generated on behalf of the device itself (management).",
170
+ "severity": "low"
171
+ },
172
+ {
173
+ "id": "V-68021",
174
+ "title": "The A10 Networks ADC, when used for load balancing web servers, must deploy the WAF in active mode.",
175
+ "description": "The Web Application Firewall (WAF) supports three operational modes - Learning, Passive, and Active. Active is the standard operational mode and must be used in order to drop or sanitize traffic. Learning mode is used in lab environments to initially set thresholds for certain WAF checks and should not be used in production networks. Passive mode applies enabled WAF checks, but no action is taken upon matching traffic. This mode is useful in identifying false positives for filtering. Only Active mode filters web traffic.",
176
+ "severity": "medium"
177
+ },
178
+ {
179
+ "id": "V-68023",
180
+ "title": "If the Data Owner requires it, the A10 Networks ADC must be configured to perform CCN Mask, SSN Mask, and PCRE Mask Request checks.",
181
+ "description": "If outbound communications traffic is not continuously monitored, hostile activity may not be detected and prevented. Output from application and traffic monitoring serves as input to continuous monitoring and incident response programs.\n\nThe A10 Networks ADC can be configured to mask data traversing outbound through the device. This is useful in preventing data exfiltration. If any data must be masked before it leaves the enclave (such as Credit Card Numbers, Social Security Numbers, or other sensitive information), a WAF template can be configured with CCN Mask, SSN Mask, and PCRE Mask Request checks. The Mask Request check depends on what information must be masked. This includes using Perl Compatible Regular Expressions (PCRE) for custom masks.",
182
+ "severity": "medium"
183
+ },
184
+ {
185
+ "id": "V-68025",
186
+ "title": "The A10 Networks ADC must protect against ICMP-based Denial of Service (DoS) attacks by employing ICMP Rate Limiting.",
187
+ "description": "If the network does not provide safeguards against DoS attacks, network resources will be unavailable to users. Installation of content filtering gateways and application layer firewalls at key boundaries in the architecture mitigates the risk of DoS attacks. These attacks can be detected by matching observed communications traffic with patterns of known attacks and monitoring for anomalies in traffic volume/type.\n\nDetection components that use rate-based behavior analysis can detect attacks when signatures for the attack do not exist or are not installed. These attacks include zero-day attacks which are new attacks for which vendors have not yet developed signatures. Rate-based behavior analysis can detect sophisticated, Distributed DoS (DDoS) attacks by correlating traffic information from multiple network segments or components. \n\nThe A10 Networks ADC provides an ICMP Rate Limiting feature that monitors the rate of ICMP traffic and drops ICMP packets when the configured thresholds (the normal rate) are exceeded.",
188
+ "severity": "high"
189
+ },
190
+ {
191
+ "id": "V-68027",
192
+ "title": "The A10 Networks ADC must protect against TCP SYN floods by using TCP SYN Cookies.",
193
+ "description": "A SYN flood is a form of denial-of-service attack in which an attacker sends a succession of SYN requests to a target in an attempt to consume resources, making the device unresponsive to legitimate traffic. TCP SYN Cookies are commonly implemented by the Operating System on endpoints, but are also often implemented on network devices.\n\nA10 Networks ADCs provide protection against TCP SYN flood attacks by using SYN cookies. SYN cookies enable the device to continue to serve legitimate clients during a TCP SYN flood attack without allowing illegitimate traffic to consume system resources.",
194
+ "severity": "medium"
195
+ },
196
+ {
197
+ "id": "V-68029",
198
+ "title": "The A10 Networks ADC must be a FIPS-compliant version.",
199
+ "description": "Use of weak or untested encryption algorithms undermines the purposes of utilizing encryption to protect data. The network element must implement cryptographic modules adhering to the higher standards approved by the federal government since this provides assurance they have been tested and validated.\n\nFIPS compliance is mandated for many functions of network devices. The A10 Networks ADC platforms are either FIPS-compliant versions or non-compliant versions. It is necessary to deploy the FIPS-compliant versions of the model(s). FIPS versions are identified by the designation \"FIPS\" in the stock keeping unit (SKU).",
200
+ "severity": "high"
201
+ },
202
+ {
203
+ "id": "V-68105",
204
+ "title": "The A10 Networks ADC must generate an alert to, at a minimum, the ISSO and ISSM when threats identified by authoritative sources (e.g., IAVMs or CTOs) are detected.",
205
+ "description": "Without an alert, security personnel may be unaware of major detection incidents that require immediate action and this delay may result in the loss or compromise of information.\n\nThe device generates an alert which notifies designated personnel of the Indicators of Compromise (IOCs) which require real-time alerts. These messages should include a severity level indicator or code as an indicator of the criticality of the incident. These indicators reflect the occurrence of a compromise or a potential compromise.\nSince these incidents require immediate action, these messages are assigned a critical or level 1 priority/severity, depending on the system's priority schema.\n\nAlerts may be transmitted, for example, telephonically, by electronic mail messages, or by text messaging. The device must either send the alert to a management console that is actively monitored by authorized personnel or use a messaging capability to send the alert directly to designated personnel.",
206
+ "severity": "medium"
207
+ }
208
+ ]
209
+ }