Skip to content

iacsecurity/tool-compare

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

44 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MIT License Maintenance

tool-compare

In the world of infrastructure-as-code security there are several tools for users to choose from. The goal of this repository is to help compare the different options so that users can choose the tool that best fits their own needs.

What tools are there?

Checkov Cloudrail Kics Snyk Terrascan Tfsec
Vendor Bridgecrew Indeni Checkmarx Snyk Accurics Aqua Security
License OSS Freemium OSS Freemium OSS OSS
Written in Python Python Rego Unknown Rego Go
Custom Rule Support Yes Yes Yes No Yes Yes
CI/CD-specific Integrations CircleCI, GitLab, GitHub CircleCI, GitLab, GitHub GitHub None CircleCI, GitHub CircleCI, GitHub
Output Formats (for generic CI/CD support) Text, JSON, JUnit, SARIF Text, JSON, JUnit, SARIF, GitLab-SAST Text, JSON, SARIF, HTML Text, JSON, SARIF, HTML Text, JSON, JUnit Text, JSON, JUnit, SARIF
Coverage for live environment Not in OSS, use paid product Yes, integrated into scans No No Not in OSS, use paid product Yes via differnet product

(there are others, anyone can add to this list, sorted A-Z)

For a list of IaC languages supported and the coverage provided by each tool for different CSPs, scroll down to the test case tables.

How does this repo work?

This repository has a set of test-cases and a main script, called run_all_tools.sh which runs the above-listed tools against each of the test-cases. This allows any potential user to see what the tool can do, and how it compares, before even installing it.

Test case catch rate

The tables below list test cases included in this repository. For each case, it shows which tools are able to catch it specifically, and which don't. Most test cases originate from the cloud service provider's (CSP's) own recommendations and best practices, as well as the CIS benchmark for that specific CSP.

Summary

Last update: 2021-08-27

Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
Tested Version 2.0.363 1.3.385 1.4.1 1.683.0 1.9.0 0.58.4
Terraform - AWS 69% 93% 94% 62% 73% 61%
Terraform - Azure 47% 35% 23% 30% 8% 18%
Terraform - Advanced Language Expressions 20% 100% 20% 0% 0% 0%
Total Catch Rate 59% 72% 65% 48% 47% 43%
test-cases/terraform/aws/best-practices
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
alb_drop_http_headers βœ… βœ… βœ… βœ… ❌ βœ…
cloudfront_not_using_waf βœ… βœ… βœ… βœ… βœ… βœ…
cloudtrail_enabled_on_multi_region βœ… βœ… βœ… βœ… βœ… βœ…
config_aggregator_all_regions βœ… βœ… βœ… βœ… βœ… βœ…
deploy_ec2_to_default_vpc βœ… βœ… βœ… ❌ βœ… βœ…
deploy_redshift_in_ec2_classic_mode βœ… βœ… βœ… ❌ ❌ βœ…
dynamodb_without_recovery_enabled βœ… βœ… βœ… βœ… βœ… βœ…
ec2_ebs_not_optimized βœ… ❌ βœ… ❌ βœ… ❌
ecr_make_tags_immutable βœ… βœ… βœ… βœ… βœ… βœ…
ecr_use_image_scanning βœ… βœ… βœ… βœ… βœ… βœ…
ecs_cluster_container_insights βœ… βœ… βœ… βœ… ❌ βœ…
elasticache_automatic_backup βœ… ❌ βœ… βœ… ❌ βœ…
kms_uses_rotation βœ… βœ… βœ… βœ… βœ… βœ…
rds_retention_period_set βœ… ❌ βœ… ❌ βœ… βœ…
security_group_no_description_for_rules βœ… βœ… βœ… βœ… βœ… βœ…
security_group_no_description_for_securi.. ❌ βœ… βœ… βœ… βœ… βœ…
security_group_no_unused βœ… βœ… ❌ ❌ ❌ ❌
tag_all_items ❌ βœ… βœ… ❌ ❌ ❌
using_public_amis ❌ βœ… ❌ ❌ ❌ ❌
Sub-category Catch Rate 84% 84% 89% 63% 63% 79%
test-cases/terraform/aws/encryption/at-rest
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
athena_not_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
cloudtrail_not_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
cloudwatch_groups_not_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
codbuild_using_aws_key ❌ βœ… βœ… ❌ ❌ ❌
dax_cluster_not_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
docdb_cluster_encrypted_at_rest_using_cm.. ❌ βœ… βœ… ❌ ❌ βœ…
docdb_cluster_encrypted_without_kms_key ❌ βœ… βœ… βœ… βœ… βœ…
docdb_clusters_non_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
dynamodb_not_encrypted βœ… βœ… βœ… ❌ βœ… βœ…
ecr_repo_not_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
elasticache_replication_group_not_encryp.. βœ… βœ… βœ… βœ… βœ… βœ…
elasticsearch_not_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
kinesis_stream_not_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
neptune_cluster_no_encryption βœ… βœ… βœ… βœ… βœ… βœ…
rds_cluster_encrypt_at_rest_disabled βœ… βœ… βœ… βœ… βœ… βœ…
redshift_not_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
rest_api_cache_non_encrypted ❌ βœ… βœ… βœ… ❌ βœ…
s3_bucket_non_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
s3_bucket_object_non_encrypted ❌ βœ… βœ… βœ… βœ… ❌
sagemaker_not_encrypted βœ… βœ… βœ… βœ… βœ… ❌
secretsmanager_secrets_encrypted_at_rest.. βœ… βœ… βœ… βœ… βœ… βœ…
secretsmanager_secrets_encrypted_at_rest.. ❌ βœ… βœ… ❌ ❌ βœ…
sns_topic_encrypted_at_rest_with_aws_man.. ❌ βœ… βœ… ❌ ❌ βœ…
sqs_queue_not_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
workgroups_non_encrypted βœ… βœ… βœ… βœ… ❌ βœ…
workspace_root_volume_not_encrypted_at_r.. βœ… βœ… βœ… βœ… βœ… βœ…
workspace_user_volume_not_encrypted_at_r.. βœ… βœ… βœ… βœ… βœ… βœ…
Sub-category Catch Rate 74% 100% 100% 81% 78% 89%
test-cases/terraform/aws/encryption/in-transit
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
alb_use_http βœ… βœ… βœ… ❌ βœ… βœ…
cloudfront_distribution_not_encrypted βœ… βœ… βœ… βœ… βœ… βœ…
cloudfront_protocol_version_is_low βœ… βœ… βœ… βœ… βœ… βœ…
ecs_task_definition_not_encrypted_in_tra.. βœ… βœ… βœ… βœ… βœ… βœ…
elasticache_replication_group_not_encryp.. βœ… βœ… βœ… βœ… βœ… βœ…
elasticsearch_encrypt_node_to_node_disab.. ❌ βœ… βœ… βœ… βœ… βœ…
load_balancer_listener_http βœ… βœ… βœ… βœ… βœ… βœ…
vpc_has_only_dynamodb_vpce_gw_connection ❌ βœ… ❌ ❌ ❌ ❌
Sub-category Catch Rate 75% 100% 88% 75% 88% 88%
test-cases/terraform/aws/iam/iam-entities
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
human_users_defined βœ… βœ… βœ… ❌ ❌ ❌
iam_user_inline_policy_attach βœ… βœ… βœ… βœ… βœ… ❌
iam_user_managed_policy_direct_attachmen.. βœ… βœ… βœ… βœ… βœ… ❌
passrole_and_lambda_permissions_cause_pr.. ❌ βœ… βœ… ❌ βœ… ❌
policy-too-broad ❌ βœ… ❌ ❌ ❌ ❌
policy_missing_principal ❌ βœ… βœ… ❌ βœ… ❌
public_and_private_ec2_same_role ❌ βœ… βœ… ❌ ❌ ❌
role_assume_policy_principal_all βœ… βœ… βœ… βœ… ❌ ❌
Sub-category Catch Rate 50% 100% 88% 38% 50% 0%
test-cases/terraform/aws/iam/resource-authentication
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
rds_without_authentication βœ… ❌ βœ… βœ… βœ… ❌
rest_api_without_authorization βœ… βœ… βœ… βœ… ❌ ❌
Sub-category Catch Rate 100% 50% 100% 100% 50% 0%
test-cases/terraform/aws/iam/resource-policies
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
cloudwatch_log_destination_insecure_poli.. ❌ βœ… βœ… ❌ ❌ ❌
ecr_not_secure_policy ❌ βœ… βœ… ❌ βœ… ❌
efs_not_secure_policy ❌ βœ… βœ… ❌ βœ… ❌
elasticsearch_domain_not_secure_policy ❌ βœ… βœ… ❌ βœ… ❌
glacier_vault_not_secure_policy βœ… βœ… ❌ βœ… ❌ βœ…
glue_data_catalog_not_secure_policy ❌ βœ… βœ… ❌ ❌ ❌
kms_key_not_secure_policy ❌ βœ… βœ… ❌ βœ… ❌
lambda_not_secure_policy ❌ βœ… βœ… ❌ ❌ ❌
rest_api_not_secure_policy ❌ βœ… βœ… ❌ βœ… ❌
s3_bucket_acl_public_all_authenticated_u.. βœ… βœ… βœ… βœ… βœ… βœ…
s3_bucket_acl_public_all_users_canned βœ… βœ… βœ… βœ… βœ… βœ…
s3_bucket_acl_public_all_users_canned_wi.. ❌ βœ… βœ… ❌ βœ… ❌
s3_bucket_policy_public_to_all_authentic.. ❌ βœ… βœ… ❌ βœ… ❌
secrets_manager_not_secure_policy ❌ βœ… βœ… ❌ βœ… ❌
Sub-category Catch Rate 21% 100% 93% 21% 71% 21%
test-cases/terraform/aws/logging
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
api_gateway_no_xray βœ… βœ… βœ… βœ… βœ… βœ…
cloudfront_distribution_without_logging βœ… βœ… βœ… βœ… βœ… βœ…
cloudtrail_file_log_validation_disabled βœ… βœ… βœ… βœ… βœ… βœ…
cloudwatch_log_groups_no_retention βœ… βœ… βœ… βœ… βœ… ❌
docdb_audit_logs_missing βœ… βœ… βœ… βœ… βœ… βœ…
ec2_without_monitoring βœ… ❌ βœ… ❌ βœ… ❌
eks_logging_disabled βœ… βœ… βœ… βœ… βœ… βœ…
elasticsearch_domain_logging_disabled βœ… βœ… βœ… βœ… βœ… βœ…
elb_without_access_logs βœ… ❌ βœ… ❌ βœ… ❌
globalaccelerator_accelerator_no_flow_lo.. βœ… βœ… βœ… βœ… βœ… ❌
lambda_without_explicit_log_group ❌ βœ… ❌ ❌ ❌ ❌
lambda_without_xray βœ… βœ… βœ… βœ… βœ… βœ…
neptune_cluster_no_logging βœ… βœ… βœ… ❌ βœ… βœ…
rds_without_logging βœ… ❌ βœ… ❌ βœ… ❌
redshift_without_logging βœ… βœ… βœ… βœ… βœ… ❌
rest_api_no_access_logging βœ… βœ… βœ… βœ… βœ… βœ…
s3_access_logging_disabled βœ… βœ… βœ… βœ… βœ… βœ…
Sub-category Catch Rate 94% 82% 94% 71% 94% 59%
test-cases/terraform/aws/networking/vpc-endpoints
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
dynamodb-vpce-exist-without-routeassocia.. ❌ βœ… βœ… ❌ ❌ ❌
sqs-vpc-endpoint-without-dns-resolution ❌ βœ… βœ… ❌ ❌ ❌
Sub-category Catch Rate 0% 100% 100% 0% 0% 0%
test-cases/terraform/azure/best-practices
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
defender_for_app_services_disabled βœ… ❌ ❌ ❌ ❌ ❌
defender_for_container_registry_not_used βœ… βœ… βœ… βœ… ❌ βœ…
defender_for_keyvault_disabled βœ… ❌ βœ… βœ… ❌ βœ…
defender_for_kubernetes_not_used βœ… βœ… βœ… βœ… ❌ βœ…
defender_for_servers_not_used βœ… βœ… βœ… βœ… ❌ βœ…
defender_for_sql_servers_not_used βœ… βœ… βœ… βœ… ❌ βœ…
defender_for_storage_not_used βœ… βœ… βœ… βœ… ❌ βœ…
email_notifications_for_high_severity_al.. βœ… βœ… βœ… βœ… ❌ βœ…
func_app_not_using_http2 βœ… βœ… ❌ ❌ ❌ ❌
func_app_not_using_latest_tls ❌ βœ… ❌ ❌ ❌ ❌
functionapp_lin_java_isnot_latest ❌ ❌ ❌ ❌ ❌ ❌
functionapp_python_isnot_latest ❌ ❌ ❌ ❌ ❌ ❌
functionapp_win_java_isnot_latest ❌ ❌ ❌ ❌ ❌ ❌
sql_vulnerability_assessment_not_enabled βœ… ❌ ❌ ❌ ❌ ❌
sql_vulnerability_email_not_set βœ… ❌ ❌ βœ… ❌ ❌
vm_unmanaged_disks βœ… ❌ ❌ ❌ ❌ ❌
vmss_unmanaged_disks ❌ ❌ ❌ ❌ ❌ ❌
vpn_gw_using_basic_sku ❌ βœ… ❌ ❌ ❌ ❌
webapp_http2_not_enabled βœ… ❌ ❌ βœ… ❌ ❌
webapp_lin_java_isnot_latest ❌ ❌ ❌ ❌ ❌ ❌
webapp_php_isnot_latest ❌ ❌ ❌ ❌ ❌ ❌
webapp_win_java_isnot_latest ❌ ❌ ❌ ❌ ❌ ❌
Sub-category Catch Rate 59% 41% 32% 41% 0% 32%
test-cases/terraform/azure/encryption/at-rest
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
activitylog_storage_account_encryption_n.. ❌ ❌ ❌ ❌ ❌ ❌
sql_encryption_customer_key_not_set ❌ ❌ ❌ ❌ ❌ ❌
storacc_encryption_not_enabled βœ… ❌ ❌ ❌ ❌ ❌
Sub-category Catch Rate 33% 0% 0% 0% 0% 0%
test-cases/terraform/azure/encryption/in-transit
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
app_service_ftps_unused ❌ βœ… ❌ ❌ ❌ ❌
app_service_use_most_recent_supported_tl.. βœ… βœ… ❌ βœ… ❌ ❌
func_app_ftps_not_required ❌ ❌ ❌ ❌ ❌ ❌
mysql_not_forcing_ssl βœ… βœ… βœ… βœ… βœ… βœ…
postgresql_not_forcing_ssl βœ… βœ… βœ… βœ… βœ… βœ…
Sub-category Catch Rate 60% 80% 40% 60% 40% 40%
test-cases/terraform/azure/iam
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
app_service_authentication_missing βœ… βœ… ❌ βœ… ❌ ❌
custom-role-owner-exists βœ… ❌ βœ… ❌ ❌ ❌
func_app_authentication βœ… βœ… ❌ ❌ ❌ ❌
func_app_client_cert_optional ❌ βœ… ❌ ❌ ❌ ❌
functionapp_not_use_managedidentity ❌ ❌ ❌ ❌ ❌ ❌
sql-server-ad-admin-not-set ❌ ❌ ❌ ❌ ❌ ❌
storage_account_public_access_disabled βœ… ❌ ❌ ❌ ❌ ❌
webapp_client_cert_not_enabled βœ… ❌ ❌ βœ… ❌ ❌
webapp_not_use_managedidentity βœ… ❌ ❌ ❌ ❌ ❌
Sub-category Catch Rate 67% 33% 11% 22% 0% 0%
test-cases/terraform/azure/logging
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
auto_prov_log_analytics_agent_disabled ❌ βœ… ❌ ❌ ❌ ❌
batch_diagnostic_disabled ❌ ❌ ❌ ❌ ❌ ❌
dl_analytics_diagnostic_not_enabled ❌ ❌ ❌ ❌ ❌ ❌
dl_store_diagnostic_not_enabled ❌ ❌ ❌ ❌ ❌ ❌
event_hub_diagnostic_not_enabled ❌ ❌ ❌ ❌ ❌ ❌
iot_hub_diagnostic_not_enabled ❌ ❌ ❌ ❌ ❌ ❌
logic_app_wf_diagnostic_not_enabled ❌ ❌ ❌ ❌ ❌ ❌
postgresql_log_connections_not_enabled βœ… ❌ βœ… βœ… βœ… ❌
postgresql_log_disconnections_not_enable.. ❌ ❌ βœ… βœ… βœ… ❌
postgresql_logcheckpoints_not_enabled βœ… ❌ βœ… βœ… βœ… ❌
search_diagnostic_not_enabled ❌ ❌ ❌ ❌ ❌ ❌
servicebus_namespace_not_enabled ❌ ❌ ❌ ❌ ❌ ❌
sql-server-audit-retention-30 βœ… βœ… ❌ ❌ ❌ ❌
sql_server_audit_not_used βœ… βœ… βœ… βœ… ❌ βœ…
stream_analytics_diagnostic_not_enabled ❌ ❌ ❌ ❌ ❌ ❌
vmss_win_diagnostic_log_disabled ❌ ❌ ❌ ❌ ❌ ❌
Sub-category Catch Rate 25% 19% 25% 25% 19% 6%
test-cases/terraform/azure/networking
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
no_unused_nsg ❌ βœ… ❌ ❌ ❌ ❌
public_access_sql_db βœ… βœ… ❌ ❌ ❌ βœ…
vm_public_rdp_lb_opened ❌ ❌ ❌ ❌ ❌ ❌
vm_public_rdp_nat_opened ❌ ❌ ❌ ❌ ❌ ❌
vmss_public_rdp_lb_opened ❌ ❌ ❌ ❌ ❌ ❌
Sub-category Catch Rate 20% 40% 0% 0% 0% 20%
test-cases/terraform/hcl_language_complexity
Test Case Checkov Indeni Cloudrail Kics Snyk Terrascan Tfsec
using_count_and_ternary_expr ❌ βœ… ❌ ❌ ❌ ❌
using_for_each ❌ βœ… ❌ ❌ ❌ ❌
using_locals ❌ βœ… βœ… ❌ ❌ ❌
using_module_multi βœ… βœ… ❌ ❌ ❌ ❌
using_module_simple ❌ βœ… ❌ ❌ ❌ ❌
Sub-category Catch Rate 20% 100% 20% 0% 0% 0%

Contributing

Anyone can contribute to this repository. The main areas of contribution are:

  • Adding an additional tool - simply add the tool to this readme and the run_all_tools.sh script. Then, execute that script and add all of its results as part of your PR. That's it, you're good to go.

  • Adding test-cases - you can add the test case in the correct spot in the tree under test-cases and run the run_all_tools.sh script against it. Make sure to include all of the tools' results as part of your PR.

NOTE: This repository has been initiated by @yi2020, CEO & Founder of Indeni, the company behind Indeni Cloudrail. While this was initiated by an employee of a vendor in the community, the intention is for this repository to be neutral and truly serve as a non-biased comparison tool of products offered. Contributions that help users make that choice, and are unbiased in nature, are very welcome. The aspiration is that over time all vendors will become equal contributors in this repository.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published