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.
Plain Textcnquery shell ansible my_playbook.ymlβ connected to Ansible Playbook___ _ __ __ _ _ _ ___ _ __ _ _/ __| '_ \ / _` | | | |/ _ \ '__| | | || (__| | | | (_| | |_| | __/ | | |_| |\___|_| |_|\__, |\__,_|\___|_| \__, |mondooβ’ |_| |___/ interactive shellcnquery> 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:
YAMLpolicies:- uid: ansible-best-practicesname: Ansible Best Practicesversion: 1.0.0authors:- name: Mondoo, Incemail: hello@mondoo.comgroups:- filters:- mql: asset.platform == "ansible"checks:- uid: mondoo-ansible-block-error-handlingqueries:- uid: mondoo-ansible-block-error-handlingtitle: Ensure Tasks are wrapped in block error handlingmql: 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.
Shellcnquery shell shodan
For authentication, use the SHODAN_TOKEN environment variable.
Shellexport SHODAN_TOKEN="<token>"
Example queries
Query the base information for a host by IP address:
Shellcnquery> 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: nullos: nullports: [0: 4431: 53]}
Query the hostname for an IP address:
Shellcnquery> shodan.host("8.8.8.8").hostnamesshodan.host.hostnames: [0: "dns.google"]
Display all open ports for a host:
Shellcnquery> shodan.host("8.8.8.8").portsshodan.host.ports: [0: 4431: 53]
Query the DNS information for a domain:
Shellcnquery> 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:
Shellcnquery> 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:
Shellcnquery> 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:
Shellcnquery shell shodan --networks "192.168.0.0/20" --discover hosts
Connect to a specific IP address and display all open ports:
Shellcnquery shell shodan host 8.8.8.8
Connect to a domain and display subdomains:
Shellcnquery 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.
Shellcnquery scan gitlab --group mondoolabs --discover k8s-manifestscnspec 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:
Shellcnquery shell sbom cyclonedx_file.json
To inspect SBOM content from Docker Hub:
Shelldocker 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
nodeGroupsfield exposing a newaws.eks.nodegroupresource
aws.elb.loadbalancer
- New
targetGroupsfield exposing a newaws.elb.targetgroupresource
aws.ec2.instance
- New
networkInterfacesfield exposing a newaws.ec2.networkinterfacefield
aws.vpc.natgateway
- New
subnetfield
gcp.project.binaryAuthorization
- New resource for inspecting GKE Binary Authorization configuration
gcp.project.sqlservice.instance.settings.ipconfiguration
- New
sslModefield - New
enablePrivatePathForGoogleCloudServicesfield
microsoft.policies.authorizationPolicy
- New
permissionGrantPoliciesAssignedfield 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.networkPolicyresource. - 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 allowedcheck to the CIS Microsoft 365 Foundations Benchmark policy.