Skip to content
Please update to the latest release 0.77.2 to address Multiple CVEs.
Generic.Detection.LunasecLog4shell

Generic.Detection.LunasecLog4shell

Uses the Log4Shell scanner of Lunasec to scan the file systems of all drives of the host for any sign of vulnerabilities related to Log4shell


name: Generic.Detection.LunasecLog4shell
author: "Marinus Boekelo & Noël Keijzer - Northwave CERT"
description: |
  Uses the Log4Shell scanner of Lunasec to scan the file systems of
  all drives of the host for any sign of vulnerabilities related to
  Log4shell

tools:
  - name: log4shell_linux_amd64
    github_project: lunasec-io/lunasec
    github_asset_regex: Linux_x86_64
    serve_locally: true

  - name: log4shell_linux_x86
    github_project: lunasec-io/lunasec
    github_asset_regex: Linux_i386
    serve_locally: true

  - name: log4shell_windows_amd64
    github_project: lunasec-io/lunasec
    github_asset_regex: Windows_x86_64
    serve_locally: true

  - name: log4shell_windows_x86
    github_project: lunasec-io/lunasec
    github_asset_regex: Windows_i386
    serve_locally: true

reference:
  - https://github.com/lunasec-io/lunasec/releases/

precondition: SELECT OS From info() where OS = "windows" or OS = "linux"

required_permissions:
  - EXECVE

parameters:
  - name: ToolInfo
    description: Override Tool information.

sources:
  - query: |
      LET os_info <= SELECT Architecture, OS FROM info()

      // Get the path to the binary.
      LET bin <= SELECT * FROM Artifact.Generic.Utils.FetchBinary(
              ToolName= "log4shell_" + os_info[0].OS + "_" + os_info[0].Architecture,
              ToolInfo=ToolInfo)

      // Select the Disks to scan
      LET disks = if(condition=(os_info[0].OS="windows"),
            then= {
                SELECT Mountpoint + "\\\\" as Mountpoint
                FROM filesystems()
            },
            else={
                SELECT "/" as Mountpoint
                FROM scope()
            })

      // Scan every disk
      LET results = SELECT * FROM foreach(row=disks,
            query={
                SELECT parse_json(data=Stdout) AS record
                FROM execve(argv=[bin[0].FullPath,"scan","--json",Mountpoint], sep="\n")
                WHERE Stdout
            })

      // output rows
      SELECT * FROM foreach(row= results,
        query={ SELECT * FROM record })