Mondoo 11.7 is out!
π₯³ Mondoo 11.7 is out! This release includes Ansible playbook scanning, Shodan host security querying, updated policies, and more!β
Get this release: Installation Docs | Package Downloads | Docker Container
π NEW FEATURESβ
Ansible playbook scanningβ
Query and secure your Ansible playbooks with cnquery and cnspec using our new ansible
provider.
cnquery shell ansible my_playbook.yml
β connected to Ansible Playbook
___ _ __ __ _ _ _ ___ _ __ _ _
/ __| '_ \ / _` | | | |/ _ \ '__| | | |
| (__| | | | (_| | |_| | __/ | | |_| |
\___|_| |_|\__, |\__,_|\___|_| \__, |
mondooβ’ |_| |___/ interactive shell
cnquery> ansible.plays { tasks }
ansible.plays: [
0: {
tasks: [
0: ansible.task name="ensure apache is at the latest version"
1: ansible.task name="write the apache config file"
2: ansible.task name="ensure apache is running"
]
}
]
With this provider, you can create custom security policies to enforce your organizational standards in CI jobs:
policies:
- uid: ansible-best-practices
name: Ansible Best Practices
version: 1.0.0
authors:
- name: Mondoo, Inc
email: hello@mondoo.com
groups:
- filters:
- mql: asset.platform == "ansible"
checks:
- uid: mondoo-ansible-block-error-handling
queries:
- uid: mondoo-ansible-block-error-handling
title: Ensure Tasks are wrapped in block error handling
mql: ansible.plays.all(tasks.none(block == empty))
Shodan search engine queryingβ
Query domain and IP security information in the Shodan search engine with the new shodan
provider in cnquery and cnspec.
cnquery shell shodan
For authentication, use the SHODAN_TOKEN
environment variable.
export SHODAN_TOKEN="<token>"
Example queriesβ
Query the base information for a host by IP address:
cnquery> shodan.host("8.8.8.8") { * }
shodan.host: {
tags: []
hostnames: [
0: "dns.google"
]
org: "Google LLC"
asn: "AS15169"
ip: "8.8.8.8"
isp: "Google LLC"
vulnerabilities: null
os: null
ports: [
0: 443
1: 53
]
}
Query the hostname for an IP address:
cnquery> shodan.host("8.8.8.8").hostnames
shodan.host.hostnames: [
0: "dns.google"
]
Display all open ports for a host:
cnquery> shodan.host("8.8.8.8").ports
shodan.host.ports: [
0: 443
1: 53
]
Query the DNS information for a domain:
cnquery> shodan.domain("example.com") { * }
shodan.domain: {
name: "example.com"
nsrecords: [
0: shodan.nsrecord domain="example.com" subdomain="" type="A"
1: shodan.nsrecord domain="example.com" subdomain="" type="AAAA"
2: shodan.nsrecord domain="example.com" subdomain="" type="MX"
3: shodan.nsrecord domain="example.com" subdomain="" type="NS"
4: shodan.nsrecord domain="example.com" subdomain="" type="NS"
5: shodan.nsrecord domain="example.com" subdomain="" type="SOA"
6: shodan.nsrecord domain="example.com" subdomain="" type="TXT"
7: shodan.nsrecord domain="example.com" subdomain="" type="TXT"
8: shodan.nsrecord domain="example.com" subdomain="www" type="A"
9: shodan.nsrecord domain="example.com" subdomain="www" type="AAAA"
10: shodan.nsrecord domain="example.com" subdomain="www" type="TXT"
11: shodan.nsrecord domain="example.com" subdomain="www" type="TXT"
]
tags: [
0: "ipv6"
1: "spf"
]
subdomains: [
0: "www"
]
}
Query the DNS NS records for a domain:
cnquery> shodan.domain("example.com").nsrecords.where(type == "NS") { subdomain type value }
shodan.domain.nsrecords.where: [
0: {
type: "NS"
subdomain: ""
value: "a.iana-servers.net"
}
1: {
type: "NS"
subdomain: ""
value: "b.iana-servers.net"
}
]
Query the DNS AAAA records for the "www" subdomain:
cnquery> shodan.domain("example.com").nsrecords.where(type == "AAAA").where(subdomain == "www") { subdomain type value }
shodan.domain.nsrecords.where.where: [
0: {
subdomain: "www"
value: "2606:2800:21f:cb07:6820:80da:af6b:8b2c"
type: "AAAA"
}
]
Discovery and querying optionsβ
Discover all exposed hosts on a network:
cnquery shell shodan --networks "192.168.0.0/20" --discover hosts
Connect to a specific IP address and display all open ports:
cnquery shell shodan host 8.8.8.8
Connect to a domain and display subdomains:
cnquery shell shodan domain example.com
Discover Kubernetes manifests in GitHub and GitLabβ
Extend your discovery of IaC assets in your GitHub and GitLab repositories or projects to include Kubernetes manifests: With one command, Mondoo tracks down all your manifest files, no matter where they're hiding.
cnquery scan gitlab --group mondoolabs --discover k8s-manifests
cnspec scan github organization MY_ORG --discover k8s-manifests
Directly scan and query SBOM filesβ
cnquery now lets you directly query SBOM file content as if the files were real running assets:
cnquery shell sbom cyclonedx_file.json
To inspect SBOM content from Docker Hub:
docker buildx imagetools inspect mondoo/client --format "{{json .SBOM }}" | jq '."linux/amd64"."SPDX"' | cnquery shell sbom -
π§Ή IMPROVEMENTSβ
CIS Google Cloud Foundations 3.0β
Secure your Google Cloud infrastructure with the latest recommendations from the Center for Internet Security (CIS). This updated policy includes new checks as well as updated audit and remediation steps to match the latest Google Cloud console experience.
Expanded FreeBSD end of life informationβ
Plan your FreeBSD upgrades with expanded EOL detection for FreeBSD 13.2 and 14.0.
Resource updatesβ
aws.eks.clusterβ
- New
nodeGroups
field exposing a newaws.eks.nodegroup
resource
aws.elb.loadbalancerβ
- New
targetGroups
field exposing a newaws.elb.targetgroup
resource
aws.ec2.instanceβ
- New
networkInterfaces
field exposing a newaws.ec2.networkinterface
field
aws.vpc.natgatewayβ
- New
subnet
field
gcp.project.binaryAuthorizationβ
- New resource for inspecting GKE Binary Authorization configuration
gcp.project.sqlservice.instance.settings.ipconfigurationβ
- New
sslMode
field - New
enablePrivatePathForGoogleCloudServices
field
microsoft.policies.authorizationPolicyβ
- New
permissionGrantPoliciesAssigned
field underdefaultUserRolePermissions
windows.featureβ
- Deprecated in favor of
windows.serverFeature
, which better describes this as a server-only resource
windows.optionalFeaturesβ
- New resource to check for optional Windows features on desktop Windows releases
π BUG FIXES AND UPDATESβ
- Improve the output of many complex MQL queries in console check results.
- Discover all resources when scanning Kubernetes manifests
- Fix incorrect asset names when scanning Kubernetes manifests without namespaces
- Improve wording in the weekly space summary emails.
- Improve wording and fix a documentation link in the Jira integration setup page.
- Fix an error querying the
gcp.project.gke.cluster.networkPolicy
resource. - Fix connection not found errors when scanning some asset types.
- Improve wording in cnquery and cnspec help.
- Prevent some operating system scans from showing up as "other" operating systems in the console.
- Don't fail discovery when a single VMware ESXi host cannot be reached.
- Remove non-functional sorting by risk factors in tables.
- Add a "Type" column in search results when filtering by "All" so it's more clear if entries are assets, checks, or CVEs.
- Fix missing "Space" column information in search when searching at the organization level.
- Add
Ensure user consent to apps accessing company data on their behalf is not allowed
check to the CIS Microsoft 365 Foundations Benchmark policy.