diff --git a/.github/workflows/tmas_workflow.yml b/.github/workflows/tmas_workflow.yml new file mode 100644 index 0000000..6b6890b --- /dev/null +++ b/.github/workflows/tmas_workflow.yml @@ -0,0 +1,70 @@ +name: Publish Docker image + +on: + push: + branches: + - master +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + TMAS_API_KEY: ${{ secrets.TMAS_API_KEY }} +jobs: + push_to_registries: + name: Push Docker image to multiple registries + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - name: Check if secret exists + run: | + if [ -z "${MY_SECRET}" ]; then + echo "Secret MY_SECRET NO existe o está vacío" + exit 1 + else + echo "Secret MY_SECRET está configurado" + fi + env: + MY_SECRET: ${{ secrets.TMAS_API_KEY }} + - name: 'Checkout GitHub Action' + uses: actions/checkout@main + - name: 'Login to GitHub Container Registry' + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{github.actor}} + password: ${{secrets.GITHUB_TOKEN}} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push Docker image + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + - name: Download TMAS and Scan Repo for Open Source Vulnerabilities and Secrets + uses: trendmicro/tmas-scan-action@v3.0.1 + with: + version: '2' # Recommended: pin to major version for automatic updates within v2.x.x + vulnerabilitiesScan: true + malwareScan: false + secretsScan: true + artifact: dir:./ + additionalArgs: --region=us-east-1 + tmasApiKey: ${{ env.TMAS_API_KEY }} + githubToken: ${{ secrets.GITHUB_TOKEN }} + env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + TMAS_API_KEY: ${{ env.TMAS_API_KEY }} + + - name: 'Upload Scan Result Artifact' + uses: actions/upload-artifact@v4 + with: + name: scan-result + path: result.json + retention-days: 30 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0c389d8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +node_modules/* \ No newline at end of file diff --git a/ArtifactScannerReport.py b/ArtifactScannerReport.py new file mode 100644 index 0000000..f465292 --- /dev/null +++ b/ArtifactScannerReport.py @@ -0,0 +1,80 @@ +import sys +import pandas as pd +import json + + +def format_related_vulnerabilities(related_vulns): + """Formatea las vulnerabilidades relacionadas en una cadena de texto.""" + formatted_vulns = [] + for vuln in related_vulns: + summary = "; ".join([f"{summary['cvssVersion']}: {summary['cvssAttackVector']}/{summary['cvssAttackComplexity']}/{summary['cvssAvailabilityImpact']}" for summary in vuln.get('cvssSummaries', [])]) + formatted_vulns.append(f"{vuln['id']} (Severidad: {vuln['severity']}, Resumen CVSS: {summary})") + return ", ".join(formatted_vulns) + +# Función para aplanar y extraer los datos de la sección 'vulnerability' +def format_summary_vulnerabilities(vulnerability_data): + resumen_vulnerabilidades = { + "Total Vulnerabilidades": vulnerability_data["totalVulnCount"], + "Críticas": vulnerability_data["criticalCount"], + "Altas": vulnerability_data["highCount"], + "Medias": vulnerability_data["mediumCount"], + "Bajas": vulnerability_data["lowCount"], + "Negligibles": vulnerability_data["negligibleCount"], + "Desconocidas": vulnerability_data["unknownCount"] + } + + # Convertir el resumen en un DataFrame + df_resumen = pd.DataFrame([resumen_vulnerabilidades]) + + # Preparar detalles de los hallazgos + detalles_vulnerabilidades = [] + for severity, findings in vulnerability_data["findings"].items(): + for finding in findings: + finding["relatedVulnerabilities"] = format_related_vulnerabilities(finding.get("relatedVulnerabilities", [])) + finding["severity"] = severity # Añadir la severidad a cada hallazgo + detalles_vulnerabilidades.append(finding) + + df_detalles = pd.json_normalize(detalles_vulnerabilidades) + + return df_resumen, df_detalles + +def export_file(df_resumen, df_detalles, nombre_imagen): + with pd.ExcelWriter(f"reporte_vulnerabilidades-{nombre_imagen}.xlsx", engine="xlsxwriter") as writer: + df_resumen.to_excel(writer, sheet_name="Resumen", index=False) + df_detalles.to_excel(writer, sheet_name="Detalles", index=False) + workbook = writer.book + worksheet_resumen = writer.sheets['Resumen'] + worksheet_detalles = writer.sheets['Detalles'] + + # Estilos personalizados + header_format = workbook.add_format({ + 'bold': True, + 'text_wrap': True, + 'valign': 'top', + 'fg_color': '#95b6fc', + 'border': 1}) + + # Aplicar estilos a los encabezados + for col_num, value in enumerate(df_resumen.columns.values): + worksheet_resumen.write(0, col_num, value, header_format) + for col_num, value in enumerate(df_detalles.columns.values): + worksheet_detalles.write(0, col_num, value, header_format) + + # Ajustar el ancho de las columnas + worksheet_resumen.set_column('A:H', 20) + worksheet_detalles.set_column('A:I', 20) + print(f"Reporte generado: reporte_vulnerabilidades-{nombre_imagen}.xlsx") + +def main(): + # Leer desde stdin + if len(sys.argv) < 2: + print("Uso: python report.py [nombre_imagen] [archivo_entrada]") + sys.exit(1) + nombre_imagen = sys.argv[1] + json_data = json.load(sys.stdin) + # Procesar los datos de 'vulnerability' + df_resumen, df_detalles = format_summary_vulnerabilities(json_data) + export_file(df_resumen, df_detalles, nombre_imagen) + +if __name__ == "__main__": + main() diff --git a/CCTemplate.yml b/CCTemplate.yml deleted file mode 100644 index d2388b5..0000000 --- a/CCTemplate.yml +++ /dev/null @@ -1,154 +0,0 @@ -AWSTemplateFormatVersion: '2010-09-09' -Description: Template to automatically setup AWS EC2 AWS for Asset Scanning -Metadata: - Author: "" - Version: "1.0" - Updated: "" - Version Comments: "" -Parameters: - UserName: - Default: empty - Description: User Authorized to Create a Virtual Scanner - Type: String - Password: - Default: empty - Description: Password of the User Authorized to Create an Virtual Scanner - Type: String - NoEcho: true - SCANNERNAME: - Default: Empty - Description: (Optional) name you want to give to your scanner appliance - Type: String - InstanceType: - Description: Scanner instance size - Type: String - Default: t2.medium - AllowedValues: - - t2.medium - - t2.large - - m4.large - - m4.xlarge - - m3.large - - m3.xlarge - - c4.large - - c4.xlarge - - c4.2xlarge - - c3.large - - c3.xlarge - - c3.2xlarge - - r3.large - Subnets: - Description: Select subnet to launch scanner in - Type: AWS::EC2::Subnet::Id - -Resources: - AWSFunction: - DependsOn: LambdaExecutionRole - Type: AWS::Lambda::Function - Properties: - Environment: - Variables: - SCANNERNAME: !Ref SCANNERNAME - USERNAME: !Ref UserName - PASSWORD: !Ref Password - Code: - ZipFile: !Sub | - def lambda_handler(event, context): - import boto3 - import xml.etree.ElementTree as ET - import cfnresponse - import os - import sys - region = context.invoked_function_arn.split(":")[3] - accountId = context.invoked_function_arn.split(":")[4] - SCANNERNAME = os.getenv('SCANNERNAME') - username = os.getenv('USERNAME') - password = os.getenv('PASSWORD') - ec2 = boto3.client('ec2') - filters = [{'Name': 'name', 'Values': ['*1b8af947-aa54-4852-9da6-282428ba2f46*']}] - images = ec2.describe_images(Filters=filters) - a = images['Images'] - c = images['Images'][0]['CreationDate'] - for i in range (len(a)-1): - j = 0 - if c < images['Images'][i]['CreationDate']: - c= images['Images'][i]['CreationDate'] - j = i - AMIID = images['Images'][j]['ImageId'] - qurl = 'curl -u {}:{} -H "X-Requested-With:Curl" -X "POST" -d "action=create&echo_request=1&name={}" "{}/api/2.0/fo/appliance/"'.format(username, password,SCANNERNAME) - result = os.popen(qurl).read() - tree = ET.fromstring(result) - PERS = tree.find('RESPONSE/APPLIANCE/ACTIVATION_CODE').text - responseData = {} - responseData['PERS'] = PERS - responseData['AMIID'] = AMIID - cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData) - Description: Lambda Function to create a Virtual Scanner in QCP - Handler: index.lambda_handler - Role: !GetAtt 'LambdaExecutionRole.Arn' - Runtime: python2.7 - Timeout: '120' - LambdaExecutionRole: - Type: AWS::IAM::Role - Properties: - AssumeRolePolicyDocument: - Version: '2012-10-17' - Statement: - - Effect: Allow - Principal: - Service: - - lambda.amazonaws.com - Action: - - sts:AssumeRole - Path: / - Policies: - - PolicyName: root - PolicyDocument: - Version: '2012-10-17' - Statement: - - Effect: Allow - Action: - - logs:CreateLogGroup - - logs:CreateLogStream - - logs:PutLogEvents - Resource: arn:aws:logs:*:*:* - - Effect: Allow - Action: - - iam:CreateRole - Resource: '*' - - Effect: Allow - Action: - - ec2:Describe* - Resource: '*' - MyEC2: - DependsOn: AWSFunction - Type: "AWS::EC2::Instance" - Properties: - ImageId: !GetAtt 'CustomResource.AMIID' - SubnetId: !Ref Subnets - InstanceType: !Ref InstanceType - Tenancy: Dedicated - SecurityGroupIds: - - !GetAtt ExampleSG.GroupId - UserData: - Fn::Base64: !Sub | - PERSCODE=${CustomResource.PERS} - - ExampleSG: - Type: AWS::EC2::SecurityGroup - Properties: - GroupDescription: allow connections from specified CIDR ranges - SecurityGroupIngress: - - CidrIp: 0.0.0.0/0 - FromPort: All - IpProtocol: tcp - ToPort: All - - CustomResource: - Type: Custom::CustomResource - Properties: - ServiceToken: !GetAtt 'AWSFunction.Arn' -Outputs: - PERS: - Description: Personalization Code. - Value: !GetAtt 'CustomResource.PERS' diff --git a/Dockerfile b/Dockerfile index 82d28fc..618b2bb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,18 @@ +# Base Image FROM tomcat:7 -MAINTAINER piesecurity +# Configuration of Application Environment RUN set -ex \ && rm -rf /usr/local/tomcat/webapps/* \ - && chmod a+x /usr/local/tomcat/bin/*.sh + && chmod a+x /usr/local/tomcat/bin/*.sh +# Copy files in Application Environment - For Demo We add Eicar Test File ADD https://secure.eicar.org/eicar.com.txt /root/ +# Create Malware in Build +RUN echo "X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*" > eicar.file +CMD ["chmod +x eicar.file", "./eicar.file"] +#Add Application Files .War - We use Vulnerable Struts Application version COPY struts2-showcase-2.3.12.war /usr/local/tomcat/webapps/ROOT.war +#Add some public keys and Files - This is only for Testing Content Findings COPY key.pem /usr/local/tomcat/webapps/key.pem -EXPOSE 8080 +COPY ImportantFile.txt /usr/local/tomcat/webapps/ImportantFile.txt +#Expose the Service +EXPOSE 8080 \ No newline at end of file diff --git a/ImportantFile.txt b/ImportantFile.txt new file mode 100644 index 0000000..9c282ab --- /dev/null +++ b/ImportantFile.txt @@ -0,0 +1,10 @@ +Card Number Card Type Issuing Country Expiry Date CVV2/CVC3 +4035 5010 0000 0008 Visa Debit / Cartes Bancaires FR 03/2030 737 +4360 0000 0100 0005 Cartes Bancaires FR 03/2030 737 +8171 9999 2766 0000 10/2030 737 CN +8171 9999 0000 0000 021 10/2030 737 CN +6243 0300 0000 0001 12/2029 737 CN +6250946000000016 12/2033 123 111111 +85211112222 + + +dbpassword=123141231 diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..99bb481 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,43 @@ +pipeline { + agent any + stages { + stage ('Checkout') { + steps { + git 'https://github.com/XeniaP/Trend-Micro-Smart-Check-Demo-Image.git' + } + } + stage ('Docker build'){ + steps { + sh 'docker build -t 846753579733.dkr.ecr.us-east-1.amazonaws.com/tm-demo:latest .' + sh 'docker build -t 846753579733.dkr.ecr.us-east-1.amazonaws.com/tm-demo:latest .' + } + } + stage ('Docker push'){ + steps { + sh 'aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 846753579733.dkr.ecr.us-east-1.amazonaws.com' + sh 'docker push 846753579733.dkr.ecr.us-east-1.amazonaws.com/tm-demo:latest' + } + } + stage ('Deep Security Smart Check scan'){ + steps { + withCredentials([ + usernamePassword([ + credentialsId: "registry-auth", + usernameVariable: "REGISTRY_USER", + passwordVariable: "REGISTRY_PASSWORD", + ]) + ]){ + smartcheckScan([ + imageName: "846753579733.dkr.ecr.us-east-1.amazonaws.com/tm-demo", + smartcheckHost: "ec2-54-159-74-184.compute-1.amazonaws.com:31820", + smartcheckCredentialsId: "smartcheck-auth", + imagePullAuth: new groovy.json.JsonBuilder([ + username: REGISTRY_USER, + password: REGISTRY_PASSWORD, + ]).toString(), + ]) + } + } + } + } +} diff --git a/README.md b/README.md index 6a1e4b1..32ff819 100644 --- a/README.md +++ b/README.md @@ -1 +1,41 @@ -# scExample +# Trend Micro Smart Check Demo Image Example + +[![Deep Security Smart Check](https://github.com/XeniaP/Trend-Micro-Smart-Check-Demo-Image/actions/workflows/dssc-workload.yml/badge.svg)](https://github.com/XeniaP/Trend-Micro-Smart-Check-Demo-Image/actions/workflows/dssc-workload.yml) + +This is a Docker Image used Only for Demostration - NOT USE IN PRODUCTION ENVIRONMENT + +The main objective is to demonstrate the detection of Vulnerabilities, Malware and Some additional elements within a Pipeline. + +How-to-use +1) Copy the project in your local environment +´´´ +git clone https://github.com/XeniaP/Trend-Micro-Smart-Check-Demo-Image.git +cd Trend-Micro-Smart-Check-Demo-Image +´´´ + +2) Build image +docker build -t demo-app:v1 . + +3) Push your image in your Registry (ECR, ACR, GCR) - For this Example we use DockerHub [DockerHub](https://hub.docker.com/) +> you need to be logged into the Docker Registry, you can use the following commanand. $ docker login + +``` +# tag your image +docker tag /demo-app:v1 demo-app:v1 +# push your image +docker push /demo-app:v1 +``` + +4) Perfect!, now you can scan this image with [Deep Security Smart Check](https://cloudone.trendmicro.com/docs/container-security/sc-about/) + +---------------------------------------- + +## TO-DO + +- [x] how-to build/upload image to registry +- [ ] how-to deploy Kubernetes +- [ ] how-to deploy Trend Micro Smart Check + +## Contributing +If you encounter a bug, think of a useful feature, or find something confusing in the docs, please create a new issue! +We ❤️ pull requests. diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..9ad0888 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,59 @@ +# Docker +# Build a Docker image +# https://docs.microsoft.com/azure/devops/pipelines/languages/docker + +trigger: +- master +- zookeeper + +resources: +- repo: self + +variables: + repositoryName: 'xniapdev' + imageName: 'django-app' + tag: '$(Build.BuildId)' + apikey: '$(v1apikey)' + nombre-reporte: 'reporte_vulnerabilidades-$(imageName).xlsx' + +stages: +- stage: Build + displayName: Build image + jobs: + - job: Build + displayName: Build + pool: + vmImage: ubuntu-latest + steps: + - task: Docker@2 + inputs: + containerRegistry: 'dockerhub' + repository: $(repositoryName)/$(imageName) + command: 'buildAndPush' + Dockerfile: '**/Dockerfile' + - script: | + tar --version + wget https://cli.artifactscan.cloudone.trendmicro.com/tmas-cli/latest/tmas-cli_Linux_x86_64.tar.gz + displayName: Get Latest Version of TMAS + - task: ExtractFiles@1 + inputs: + archiveFilePatterns: '**/tmas-cli_Linux_x86_64.tar.gz' + destinationFolder: 'tmas-cli' + cleanDestinationFolder: true + overwriteExistingFiles: true + - task: Bash@3 + displayName: Save Docker Image + inputs: + targetType: 'inline' + script: | + docker save $(imageName):$(tag) -o $(imageName).tar + - task: Bash@3 + displayName: "Scan from Registry to Json" + inputs: + targetType: 'inline' + script: ./tmas-cli/tmas scan docker-archive:$(imageName).tar -VMS --saveSBOM > result.json + env: + TMAS_API_KEY: $(apikey) + - publish: 'result.json' + displayName: 'Publish json' + artifact: drop \ No newline at end of file diff --git a/backup/dssc-workload.yml b/backup/dssc-workload.yml new file mode 100644 index 0000000..db21971 --- /dev/null +++ b/backup/dssc-workload.yml @@ -0,0 +1,120 @@ +name: Deep Security Smart Check +on: + push: + branches: + - master +permissions: + id-token: write + contents: read +jobs: + #docker: + # runs-on: ubuntu-latest + # steps: + # - name: Check out code + # uses: actions/checkout@v2 + # - name: Configure AWS credentials + # uses: aws-actions/configure-aws-credentials@v1 + # with: + # aws-access-key-id: ${{ secrets.ACCESS_KEY }} + # aws-secret-access-key: ${{ secrets.SECRET_KEY }} + # aws-region: us-east-1 + # - name: Login to Amazon ECR + # id: login-ecr + # uses: aws-actions/amazon-ecr-login@v1 + # - name: Build, tag, and push image to Amazon ECR + # env: + # ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + # ECR_REPOSITORY: oc_registry + # IMAGE_TAG: latest + # run: | + # docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . + # docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + #SmartCheck-Scan-Action: + # runs-on: ubuntu-latest + # environment: DockerRegistry + # steps: + # # AWS Example: + # - name: Deep Security Smart Check Scan ECR + # # Be sure to specify the latest version of smartcheck-scan-action + # uses: deep-security/smartcheck-scan-action@v1.1.0 + # with: + # DSSC_IMAGE_NAME: 904737956763.dkr.ecr.us-east-1.amazonaws.com/oc_registry:java-goof + # DSSC_SMARTCHECK_HOST: ${{ secrets.DSSC_SMARTCHECK_HOST }} + # DSSC_SMARTCHECK_USER: ${{ secrets.DSSC_SMARTCHECK_USER }} + # DSSC_SMARTCHECK_PASSWORD: ${{ secrets.DSSC_SMARTCHECK_PASSWORD }} + # # You will need to generate an access key and secret for your AWS user + # DSSC_IMAGE_PULL_AUTH: '{"aws":{"region":"us-east-1","accessKeyID":"${{ secrets.ACCESS_KEY }}","secretAccessKey":"${{ secrets.SECRET_KEY }}"}}' + # DSSC_FINDINGS_THRESHOLD: '{"malware": 1, "vulnerabilities": { "defcon1": 1, "critical": 42, "high": 128, "medium": 106, "low":5}, "contents": { "defcon1": 1, "critical": 11, "high": 3, "medium":1 }, "checklists": { "defcon1": 1, "critical": 11, "high": 3, "medium":1 }}' + # #DSSC_FINDINGS_THRESHOLD: '{"malware": 10, "vulnerabilities": { "defcon1": 10, "critical": 100, "high": 200, "medium": 200, "low":200}, "contents": { "defcon1": 10, "critical": 50, "high": 100, "medium":100 }, "checklists": { "defcon1": 10, "critical": 500, "high": 100, "medium":100 }}' + # DSSC_INSECURE_SKIP_TLS_VERIFY: true + # DSSC_INSECURE_SKIP_REGISTRY_TLS_VERIFY: true + ArtifactScanner: + runs-on: ubuntu-latest + environment: DockerRegistry + steps: + - name: Git clone the repository + uses: actions/checkout@v3 + #- name: Configure AWS credentials + # uses: aws-actions/configure-aws-credentials@v2.2.0 + # with: + # role-to-assume: ${{ secrets.XAR }} + # role-session-name: GitHub_to_AWS_via_FederatedOIDC + # aws-region: ${{ secrets.REGION }} + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v4 + with: + push: true + tags: xniapdev/django-app:45 + #- name: Sts GetCallerIdentity + # run: | + # aws sts get-caller-identity + #- name: Login to Amazon ECR + # id: login-ecr + # uses: aws-actions/amazon-ecr-login@v1 + #- name: Build, tag, and push image to Amazon ECR + # env: + # ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + # ECR_REPOSITORY: oc_registry + # IMAGE_TAG: latest + # run: | + # docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . + # docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + - name: Trend Cloud One Container Security Scan Action + uses: trendmicro/cloudone-container-security-github-action@1.0.8 + with: + # Mandatory + CLOUD_ONE_API_KEY: ${{ secrets.API_KEY }} + REGION: us-1 + # Optional + SBOM: true # Saves SBOM to SBOM.json so you can export it as an artifact later. + IMAGE: xniapdev/django-app:45 # The image need to be public or the pipeline need to have access to the private image of choice. + # For each threshold below, select the maximum number of vulnerabilities that are acceptable. + MAX_TOTAL: 1000 + MAX_CRITICAL: 500 + MAX_HIGH: 500 + MAX_MEDIUM: 500 + MAX_LOW: 500 + MAX_NEGLIGIBLE: 500 + MAX_UNKNOWN: 500 + SCAN_RESULT_ARTIFACT: result.json # Save as an artifact in GitHub to be able to keep the result of the scan. + - name: 'Upload Scan Result Artifact' + uses: actions/upload-artifact@v3 + with: + name: scan-result + path: result.json + retention-days: 30 + - name: 'Upload SBOM Artifact' + uses: actions/upload-artifact@v3 + with: + name: sbom + path: SBOM.json + retention-days: 30 \ No newline at end of file diff --git a/deployment.yaml b/deployment.yaml new file mode 100644 index 0000000..558b0e6 --- /dev/null +++ b/deployment.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: demoapp-deployment +spec: + replicas: 1 + selector: + matchLabels: + app: demoapp + template: + metadata: + labels: + app: demoapp + spec: + containers: + - name: demoapp + image: diff --git a/jenkinsfile b/jenkinsfile deleted file mode 100644 index 38b9d10..0000000 --- a/jenkinsfile +++ /dev/null @@ -1,43 +0,0 @@ -pipeline { - - agent any - - stages { - - stage('Checkout Source') { - steps { - git url:'https://github.com/vamsijakkula/hellowhale.git', branch:'master' - } - } - - stage("Build image") { - steps { - script { - myapp = docker.build("vamsijakkula/hellowhale:${env.BUILD_ID}") - } - } - } - - stage("Push image") { - steps { - script { - docker.withRegistry('https://registry.hub.docker.com', 'dockerhub') { - myapp.push("latest") - myapp.push("${env.BUILD_ID}") - } - } - } - } - - - stage('Deploy App') { - steps { - script { - kubernetesDeploy(configs: "hellowhale.yml", kubeconfigId: "mykubeconfig") - } - } - } - - } - -} diff --git a/requirements.txt b/requirements.txt index 0096907..90aa5e9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,2 @@ -requests -docker-image-py -curlify +requests +docker-image-py diff --git a/scAPI.py b/scAPI.py deleted file mode 100644 index debb9b0..0000000 --- a/scAPI.py +++ /dev/null @@ -1,203 +0,0 @@ -""" Script Simple """ -import requests -import json -import os -import sys -import urllib3 -import curlify - -#environmental variables -imagetag=os.environ.get("IMAGETAG") -buildid=os.environ.get("BUILD_ID") -high_t=os.environ.get("HIGH") -medium_t=os.environ.get("MEDIUM") -low_t=os.environ.get("LOW") -negligible_t=os.environ.get("NEGLIGIBLE") -unknown_t=os.environ.get("UNKNOWN") -user=os.environ.get("USER") -password=os.environ.get("PASSWORD") -registry= os.environ.get("REGISTRY") -repository = os.environ.get("REPO") -slackURL = os.environ.get("slackURL") -aws_access_key = os.environ.get("AWS_KEY") -aws_secret_key = os.environ.get("AWS_SECRET") - -smartCheckLB = os.environ.get("SC_HOSTNAME") -userSC = os.environ.get("USER") -passSC = os.environ.get("PASSWORD") - -def requestToken(): - requests.packages.urllib3.disable_warnings() - """ Request Session Token this is necesary for User Autentication """ - - url = "https://"+smartCheckLB+"/api/sessions" - headers = {'Content-Type': 'application/json', 'X-API-Version': '2018-05-01' } - data = {'user': {'userID': userSC, 'password': passSC }} - - try: - response = requests.request("POST", url, json=data, headers=headers, verify=False) - print(curlify.to_curl(response.request)) - print(requests.request("POST", url, json=data, headers=headers, verify=False)) - except requests.exceptions.RequestException as e: - print (e) - sys.exit(1) - return response.json()['token'] - -def listSessions(): - requests.packages.urllib3.disable_warnings() - """ Request Session Token this is necesary for User Autentication """ - - url = "https://"+smartCheckLB+"/api/sessions" - headers = {'Content-Type': 'application/json', 'X-API-Version': '2018-05-01' } - data = {'user': {'userID': userSC, 'password': passSC },'expand': 'all', 'limit':'25'} - - try: - response = requests.request("POST", url, json=data, headers=headers, verify=False) - print(curlify.to_curl(response.request)) - print(response.json()) - except requests.exceptions.RequestException as e: - print (e) - sys.exit(1) - -def requestScan(): - requests.packages.urllib3.disable_warnings() - url = "https://"+smartCheckLB+"/api/scans" - data = {"source": { - "type": "docker", - "registry": registry, - "repository": repository, - "tag": 'latest', - "credentials": { - "aws": { - "region": "us-east-2", - "accessKeyID": aws_access_key, - "secretAccessKey": aws_secret_key - } - } - }, - "webhooks": [{ - "hookURL": createWebHook()}]} - headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer '+requestToken(), 'X-API-Version': '2018-05-01'} - try: - response = requests.request("POST", url, json=data, headers=headers, verify=False) - print(curlify.to_curl(response.request)) - except requests.exceptions.RequestException as e: - print (e) - sys.exit(1) - return response.json()['id'] - -def listScan(): - requests.packages.urllib3.disable_warnings() - url = "https://"+smartCheckLB+"/api/scans/" - headers = {'Authorization': 'Bearer '+requestToken(), 'X-API-Version': '2018-05-01'} - querystring = {"expand":"all", "status":"completed-with-findings"} - - try: - response=requests.request("GET", url, headers=headers,params=querystring,verify=False) - data = response.json() - obj = open("test.txt", "wb") - obj.write(json.dumps(data)) - obj.close() - print (json.dumps(data)) - except requests.exceptions.RequestException as e: - print (e) - sys.exit(1) - - -def sendToSlack(message, data): - url = slackURL - headers = {'Content-Type': 'application/json'} - - try: - response = requests.request("POST", url, json=data, headers=headers) - except requests.exceptions.RequestException as e: - print (e) - sys.exit(1) - -def createWebHook(): - requests.packages.urllib3.disable_warnings() - url = "https://"+smartCheckLB+"/api/webhooks" - data = { "name": "Test WebHook descriptive string", - "hookURL": "https://"+smartCheckLB+"/", - "secret": "tHiSiSaBaDsEcReT", - "events": [ - "scan-requested" - ] - } - headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer'+requestToken()} - try: - response = requests.request("POST", url, json=data, headers=headers, verify=False) - except requests.exceptions.RequestException as e: - print (e) - sys.exit(1) - return response.json()['hookUrl'] - -def requestReport(): - urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - high, medium, low, negligible, unknown = 0, 0, 0, 0, 0 - status='pending' - - url = "https://"+smartCheckLB+"/api/scans/" - headers = {'Authorization': 'Bearer '+requestToken(), 'X-API-Version': '2018-05-01'} - querystring = {"id": requestScan(),"expand":"none"} - - while status != "completed-with-findings": - try: - response=requests.request("GET", url, headers=headers,params=querystring,verify=False) - except requests.exceptions.RequestException as e: - print (e) - sys.exit(1) - - status = response.json()['scans'][0]['status'] - - if (status == "completed-no-findings"): - break - - if status == 'failed': - print("Scan failed!") - sys.exit(1) - - data = response.json() - - if(status == "completed-with-findings" ): - findings = data['scans'][0]['findings'] - vulnerabilities = findings['vulnerabilities'] - - dataVuln = "Vulnerabilities found: \n" - dataMalw = "" - - for value in vulnerabilities['total']: - if value == 'high': - high = vulnerabilities['total']['high'] - dataVuln = dataVuln+"High: "+str(high)+"\n" - if value == 'medium': - medium = vulnerabilities['total']['medium'] - dataVuln = dataVuln+"Medium: "+str(medium)+"\n" - if value == 'low': - low = vulnerabilities['total']['low'] - dataVuln = dataVuln+"Low: "+str(low)+"\n" - if value == 'negligible': - negligible = vulnerabilities['total']['negligible'] - dataVuln = dataVuln+"Negligible: "+str(negligible)+"\n" - if value == 'unknown': - unknown = vulnerabilities['total']['unknown'] - dataVuln = dataVuln+"Unknown: "+str(unknown)+"\n" - - if dataVuln == "Vulnerabilities found: \n": dataVuln="" - - for value in findings: - if value == 'malware': - malware = findings['malware'] - dataMalw = "Malware found: "+str(malware) - - message = dataVuln+dataMalw - - if (high <= int(high_t)) and (medium <= int(medium_t)) and (low <= int(low_t)) and (negligible <= int(negligible_t)) and (unknown <= int(unknown_t) and (malware < 1)): - sys.stdout.write('1') - message = "Image is clean and ready to be deployed!" - - data = {"text": "!!! Scan results !!! \n"+"Image: "+imagetag+'-'+buildid+"\n"+message} - - sendToSlack(message, data) - -requestReport() diff --git a/scan.py b/scan.py deleted file mode 100644 index 7256acf..0000000 --- a/scan.py +++ /dev/null @@ -1,364 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright 2019 Trend Micro and contributors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -from __future__ import print_function - -import argparse -import base64 -import os -import sys -import json -import time - -import requests - -from docker_image import reference - -#environmental variables -imagetag=os.environ.get("IMAGETAG") -buildid=os.environ.get("BUILD_ID") -high_t=os.environ.get("HIGH") -medium_t=os.environ.get("MEDIUM") -low_t=os.environ.get("LOW") -negligible_t=os.environ.get("NEGLIGIBLE") -unknown_t=os.environ.get("UNKNOWN") -user=os.environ.get("USER") -password=os.environ.get("PASSWORD") - - -class SlightlyImprovedSession(requests.Session): - """ - A SlightlyImprovedSession keeps track of the base URL and any kwargs that - should be passed to requests. - - When you make a `get` or `post` request, the URL you provide will be - `urljoin`'d with the base URL, so relative URLs will work pretty well. - - Technically, this is totally broken, because relative URLs should be - evaluated relative to the resource that provided the URL, but for our - purposes this works perfectly and really simplifies life, so we're - going to ignore the pedants. - """ - - def __init__(self, base, **kwargs): - super(SlightlyImprovedSession, self).__init__() - self.base = base - self.kwargs = kwargs - - def post(self, url, **kwargs): - for k in self.kwargs: - if not k in kwargs: - kwargs[k] = self.kwargs[k] - - return super(SlightlyImprovedSession, self).post( - requests.compat.urljoin(self.base, url), - **kwargs - ) - - def get(self, url, **kwargs): - for k in self.kwargs: - if not k in kwargs: - kwargs[k] = self.kwargs[k] - - return super(SlightlyImprovedSession, self).get( - requests.compat.urljoin(self.base, url), - **kwargs - ) - - -def get_session(base, user, password, **kwargs): - """Authenticate with the service and return a session.""" - - session = SlightlyImprovedSession(base, **kwargs) - - response = session.post('/api/sessions', json={ - 'user': { - 'userID': user, - 'password': password - } - }) - - if not response.ok: - raise Exception(f'could not start session: {response}') - - token = response.json()['token'] - - session.headers.update({'Authorization': f'Bearer {token}'}) - return session - -def eprint(*args, **kwargs): - """print a message to stderr""" - print(*args, file=sys.stderr, **kwargs) - - -def start_scan(session, ref, - image_pull_auth=None, - registry_root_cas=None, - webhook_teams=None, - insecure_skip_registry_tls_verify=False, - wait=True): - """Start a scan.""" - - ref = reference.Reference.parse(ref) - - hostname, name = ref.split_hostname() - print (ref) - print (session) - print(hostname) - print(name) - - if isinstance(image_pull_auth, str): - try: - image_pull_auth = json.loads(image_pull_auth) - except json.decoder.JSONDecodeError as err: - eprint('Unable to parse image-pull-auth value:', err) - sys.exit(1) - - if registry_root_cas is not None: - with open(registry_root_cas) as file: - registry_root_cas = base64.b64encode( - file.read().encode() - ).decode('utf-8') - - registry_aux = session.get('/api/registries') - - print ("registries") - - for registry in registry_aux.json()["registries"]: - if(registry["host"] == hostname): - registry_id = registry["id"] - - if(image_pull_auth == "None"): - response = session.post('/api/scans', - json={ - 'name': name, - 'source': { - 'type': 'docker', - 'registry': hostname, - 'repository': name, - 'tag': ref['tag'], - 'digest': ref['digest'], - 'credentials': image_pull_auth, - 'rootCAs': registry_root_cas, - 'insecureSkipVerify': insecure_skip_registry_tls_verify, - } - }) - else: - print(registry_id) - response = session.post("/api/registries/"+registry_id+"/scans", - json={ - "name": name, - "source": { - "repository": name, - "tag": ref["tag"], - } - }) - - if not response.ok: - eprint('could not create scan', response) - sys.exit(1) - - scan = response.json() - if wait: - while scan['status'] in ['pending', 'in-progress']: - print('waiting for scan to complete...', file=sys.stderr) - time.sleep(10) - - response = session.get(scan['href']) - - if not response.ok: - eprint('could not check scan progress', response) - sys.exit(1) - - scan = response.json() - if(webhook_teams != "None"): - sendToTeams(webhook_teams, scan, ref, hostname, name) - - print(json.dumps(scan, indent=' ')) - -def sendToTeams(webhook_teams, scan, ref, hostname, name): - print(scan['status']) - if(scan['status'] == "completed-with-findings" ): - print("Content-with-findings") - - """ Summary """ - - findings = scan["findings"] - print(findings) - summaryMessage= "Summary \n" - for value in findings: - if(value == "malware"): - summaryMessage += "Malware: "+str(findings["malware"])+"\n" - malware = findings["malware"] - else: - malware=0 - - if(findings["vulnerabilities"]["total"]): - auxValue = findings["vulnerabilities"]["total"] - summaryMessage += "Vulnerabilities:\n"+"Critical: "+str(auxValue["critical"])+"\n"+"High: "+str(auxValue["high"])+"\n"+"Medium: "+str(auxValue["medium"])+"\n"+"Low: "+str(auxValue["low"])+"\n"+"Negligible: "+str(auxValue["negligible"])+"\n"+"Unknow: "+str(auxValue["unknown"]) - - findings = scan["details"]['results'] - completeMessage="" - - for find in findings: - print("FIND") - vulnerabilities = find["findings"]['vulnerabilities'] - print(find["findings"]['vulnerabilities']) - - dataVuln = "Vulnerabilities found: \n" - dataMalw = "" - - for value in vulnerabilities['total']: - if value == 'defcon1': - defcon1 = vulnerabilities['total']['defcon1'] - dataVuln = dataVuln+"Defcon1: "+str(defcon1)+"\n" - if value == 'critical': - critical = vulnerabilities['total']['critical'] - dataVuln = dataVuln+"Critical: "+str(critical)+"\n" - if value == 'high': - high = vulnerabilities['total']['high'] - dataVuln = dataVuln+"High: "+str(high)+"\n" - if value == 'medium': - medium = vulnerabilities['total']['medium'] - dataVuln = dataVuln+"Medium: "+str(medium)+"\n" - if value == 'low': - low = vulnerabilities['total']['low'] - dataVuln = dataVuln+"Low: "+str(low)+"\n" - if value == 'negligible': - negligible = vulnerabilities['total']['negligible'] - dataVuln = dataVuln+"Negligible: "+str(negligible)+"\n" - if value == 'unknown': - unknown = vulnerabilities['total']['unknown'] - dataVuln = dataVuln+"Unknown: "+str(unknown)+"\n" - - if dataVuln == "Vulnerabilities found: \n": dataVuln="" - - print("len") - print(len(dataVuln)) - - if(len(dataVuln)<1): - message="" - else: - message ="\nLayer ID:"+find["id"]+"\n"+dataVuln+dataMalw - detailsFinfings = scan["details"]['results'] - completeMessage+=message - print("***********************COMPLETE FINDINGS**********************************") - print(completeMessage) - print("**************************************************************************") - - if (malware >= 1): - print("clean") - sys.stdout.write('1') - message = "Image is clean and ready to be deployed!" - - data = { - "title": "!!! Trend Micro - Smart Check Scan results !!!", - "text": "
\n"+"
Image: "+name+':'+ref["tag"]+"\n"+summaryMessage+"\nMore Information: "+hostname+scan["href"] - } - - url = webhook_teams - headers = {'Content-Type': 'application/json'} - try: - response = requests.request("POST", url, json=data, headers=headers) - except requests.exceptions.RequestException as e: - print (e) - sys.exit(1) - - else: - data = {"text": "
!!! Trend Micro - Smart Check Scan results !!! \n"+"
Image: "+name+':'+ref["tag"]+"\n"+scan['status']+"
"} - url = webhook_teams - headers = {'Content-Type': 'application/json'} - - try: - response = requests.request("POST", url, json=data, headers=headers) - except requests.exceptions.RequestException as e: - print (e) - sys.exit(1) - - -def main(): - """Mainline""" - - parser = argparse.ArgumentParser( - description='Start a scan', - ) - - parser.add_argument('--smartcheck-host', action='store', - default=os.environ.get('DSSC_SMARTCHECK_HOST', None), - help='The hostname of the Deep Security Smart Check deployment. Example: smartcheck.example.com') - parser.add_argument('--smartcheck-user', action='store', - default=os.environ.get('DSSC_SMARTCHECK_USER', None), - help='The userid for connecting to Deep Security Smart Check') - parser.add_argument('--smartcheck-password', action='store', - default=os.environ.get( - 'DSSC_SMARTCHECK_PASSWORD', None), - help='The password for connecting to Deep Security Smart Check') - parser.add_argument('--insecure-skip-tls-verify', action='store_true', - default=os.environ.get( - 'DSSC_INSECURE_SKIP_TLS_VERIFY', False), - help='Ignore certificate errors when connecting to Deep Security Smart Check') - parser.add_argument('--image-pull-auth', action='store', - default=os.environ.get('DSSC_IMAGE_PULL_AUTH', None), - help='A JSON object of credentials for authenticating with the registry to pull the image from') - parser.add_argument('--registry-root-cas', action='store', - default=os.environ.get('DSSC_REGISTRY_ROOT_CAS', None), - help='A file containing the root CAs (in PEM format) to trust when connecting to the registry') - parser.add_argument('--insecure-skip-registry-tls-verify', action='store_true', - default=os.environ.get( - 'DSSC_INSECURE_SKIP_REGISTRY_TLS_VERIFY', False), - help='Ignore certificate errors from the image registry') - parser.add_argument('--no-wait', action='store_false', - default=os.environ.get('DSSC_NO_WAIT', True), - help='Exit after requesting the scan') - parser.add_argument('--webhook-teams', action='store', - default=os.environ.get('DSSC_SMARTCHECK_WEBHOOK_TEAMS', None), - help='WebHook Teams Ds Smartcheck') - parser.add_argument( - 'image', help='The image to scan. Example: registry.example.com/project/image:latest') - - args = parser.parse_args() - - if args.smartcheck_host is None: - eprint('smartcheck_host is required') - sys.exit(1) - - if args.insecure_skip_tls_verify: - import urllib3 - urllib3.disable_warnings() - - if not args.smartcheck_host.startswith('http'): - args.smartcheck_host = 'https://' + args.smartcheck_host - - with get_session( - base=args.smartcheck_host, - user=args.smartcheck_user, - password=args.smartcheck_password, - verify=(not args.insecure_skip_tls_verify), - ) as session: - start_scan( - session, - args.image, - image_pull_auth=args.image_pull_auth, - registry_root_cas=args.registry_root_cas, - insecure_skip_registry_tls_verify=args.insecure_skip_registry_tls_verify, - webhook_teams=args.webhook_teams, - wait=args.no_wait, - ) - - -if __name__ == '__main__': - main() diff --git a/test.txt b/test.txt deleted file mode 100644 index 0adad1e..0000000 --- a/test.txt +++ /dev/null @@ -1 +0,0 @@ -{"scans": [{"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test/apachestruts:latest", "findings": {"vulnerabilities": {"total": {"medium": 98, "unknown": 5, "high": 22, "critical": 3, "negligible": 4, "low": 21}, "unresolved": {"medium": 98, "unknown": 5, "high": 22, "critical": 3, "negligible": 4, "low": 21}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-17T19:31:24Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {"high": 1}, "unresolved": {"high": 1}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "latest", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test/apachestruts"}, "href": "/api/scans/ac6794f5-6179-4996-aef8-b42c6e5e757a", "details": {"requested": "2019-12-17T19:18:09Z", "updated": "2019-12-17T20:00:46Z", "started": "2019-12-17T19:47:56Z", "completed": "2019-12-17T20:00:46Z", "results": [{"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-11-22T00:10:47Z", "id": "sha256:39c7890be01d245a783d8ffa3cb214984f366b9760b83720e32e0c2e546ed136", "createdBy": "/bin/sh -c set -ex \t&& rm -rf /usr/local/tomcat/webapps/* \t&& chmod a+x /usr/local/tomcat/bin/*.sh"}, {"vulnerabilities": "/api/scans/ac6794f5-6179-4996-aef8-b42c6e5e757a/layers/sha256:6ef14aff1139e1065ec0928ae1c07f2cff8c2b35e760f4b463df5c64e6ea1101/vulnerabilities", "findings": {"vulnerabilities": {"total": {"medium": 25, "unknown": 5, "high": 2, "critical": 1, "negligible": 3, "low": 2}, "unresolved": {"medium": 25, "unknown": 5, "high": 2, "critical": 1, "negligible": 3, "low": 2}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-17T04:12:17Z", "id": "sha256:6ef14aff1139e1065ec0928ae1c07f2cff8c2b35e760f4b463df5c64e6ea1101", "createdBy": "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends \t\tbzr \t\tgit \t\tmercurial \t\topenssh-client \t\tsubversion \t\t\t\tprocps \t&& rm -rf /var/lib/apt/lists/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-19T02:28:48Z", "id": "sha256:e1417b6fbaf55caa13ae206f2a02bf2c8643e275c36ba49f6c620df17175b54a", "createdBy": "/bin/sh -c set -e \t&& nativeLines=\"$(catalina.sh configtest 2>&1)\" \t&& nativeLines=\"$(echo \"$nativeLines\" | grep 'Apache Tomcat Native')\" \t&& nativeLines=\"$(echo \"$nativeLines\" | sort -u)\" \t&& if ! echo \"$nativeLines\" | grep 'INFO: Loaded APR based Apache Tomcat Native library' >&2; then \t\techo >&2 \"$nativeLines\"; \t\texit 1; \tfi"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-11-22T00:10:47Z", "id": "sha256:62ccc28c25b794eb7e3a74b60e1e5f2d66ee18d0aca5cfe4004557bc7c9b601b", "createdBy": "/bin/sh -c #(nop) COPY file:7afc778ac7f21ca1f8723a84c16115a03c635d7c2c853174d3be7fd63fe64a1a in /usr/local/tomcat/webapps/ROOT.war "}, {"vulnerabilities": "/api/scans/ac6794f5-6179-4996-aef8-b42c6e5e757a/layers/sha256:962785d3b7f9bd4442aa6df1862d8ad64e0ee1d57ec02d7d82aeecc0a8b0f4d2/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 1, "medium": 4}, "unresolved": {"high": 1, "medium": 4}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-17T08:29:24Z", "id": "sha256:962785d3b7f9bd4442aa6df1862d8ad64e0ee1d57ec02d7d82aeecc0a8b0f4d2", "createdBy": "/bin/sh -c set -eux; \tapt-get update; \tapt-get install -y --no-install-recommends \t\tbzip2 \t\tunzip \t\txz-utils \t\t\t\tca-certificates p11-kit \t\t\t\tfontconfig libfreetype6 \t; \trm -rf /var/lib/apt/lists/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {"high": 1}, "unresolved": {"high": 1}}}, "createdAt": "2019-11-22T00:34:27Z", "id": "sha256:f7ce29f7df02a3917315e4b2a3b0124c3c94e4266b8e3d45a90d317312ad6949", "createdBy": "/bin/sh -c #(nop) COPY file:b690fc277657cf2968caf9b00fee227fe0e087153ed6964fd71818c9bdefd286 in /usr/local/tomcat/webapps/key.pem ", "contents": "/api/scans/ac6794f5-6179-4996-aef8-b42c6e5e757a/layers/sha256:f7ce29f7df02a3917315e4b2a3b0124c3c94e4266b8e3d45a90d317312ad6949/contents"}, {"vulnerabilities": "/api/scans/ac6794f5-6179-4996-aef8-b42c6e5e757a/layers/sha256:9a0b0ce99936ce4861d44ce1f193e881e5b40b5bf1847627061205b092fa7f1d/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 12, "medium": 44, "critical": 2, "negligible": 1, "low": 12}, "unresolved": {"high": 12, "medium": 44, "critical": 2, "negligible": 1, "low": 12}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-16T23:29:01Z", "id": "sha256:9a0b0ce99936ce4861d44ce1f193e881e5b40b5bf1847627061205b092fa7f1d", "createdBy": "/bin/sh -c #(nop) ADD file:fdf0128645db4c8b990073dc4fe3fabad50411032c9aa4f86538d46e0e8f158f in / "}, {"vulnerabilities": "/api/scans/ac6794f5-6179-4996-aef8-b42c6e5e757a/layers/sha256:db3b6004c61a0e86fbf910b9b4a6611ae79e238a336011a1b5f9b177d85cbf9d/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 5, "medium": 15, "low": 6}, "unresolved": {"high": 5, "medium": 15, "low": 6}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-17T04:11:35Z", "id": "sha256:db3b6004c61a0e86fbf910b9b4a6611ae79e238a336011a1b5f9b177d85cbf9d", "createdBy": "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends \t\tca-certificates \t\tcurl \t\tnetbase \t\twget \t&& rm -rf /var/lib/apt/lists/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-17T08:30:57Z", "id": "sha256:631589572f9b44b8d0b6c2c6c1fc656fc4ae1669367888bfe622bbea1ca9cc83", "createdBy": "/bin/sh -c { echo '#/bin/sh'; echo 'echo \"$JAVA_HOME\"'; } > /usr/local/bin/docker-java-home && chmod +x /usr/local/bin/docker-java-home && [ \"$JAVA_HOME\" = \"$(docker-java-home)\" ]"}, {"vulnerabilities": "/api/scans/ac6794f5-6179-4996-aef8-b42c6e5e757a/layers/sha256:f8f0759202953be4b156f44bba90b682b61f985f9bbc60e7262b216f70dabb96/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 2, "medium": 10, "low": 1}, "unresolved": {"high": 2, "medium": 10, "low": 1}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-17T04:11:44Z", "id": "sha256:f8f0759202953be4b156f44bba90b682b61f985f9bbc60e7262b216f70dabb96", "createdBy": "/bin/sh -c set -ex; \tif ! command -v gpg > /dev/null; then \t\tapt-get update; \t\tapt-get install -y --no-install-recommends \t\t\tgnupg \t\t\tdirmngr \t\t; \t\trm -rf /var/lib/apt/lists/*; \tfi"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-19T02:18:55Z", "id": "sha256:379605d88e88b03820ef61d475cfbe79f7a8ad66e9141ecf42725bdef40c580f", "createdBy": "/bin/sh -c mkdir -p \"$CATALINA_HOME\""}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-19T02:28:46Z", "id": "sha256:831e6e9c3029594cfdf2235a126679262ec10e04154291160743edbaa07bea2e", "createdBy": "/bin/sh -c set -eux; \t\tsavedAptMark=\"$(apt-mark showmanual)\"; \tapt-get update; \tapt-get install -y --no-install-recommends \t\tgnupg dirmngr \t\twget ca-certificates \t; \t\tddist() { \t\tlocal f=\"$1\"; shift; \t\tlocal distFile=\"$1\"; shift; \t\tlocal success=; \t\tlocal distUrl=; \t\tfor distUrl in \t\t\t'https://www.apache.org/dyn/closer.cgi?action=download&filename=' \t\t\thttps://www-us.apache.org/dist/ \t\t\thttps://www.apache.org/dist/ \t\t\thttps://archive.apache.org/dist/ \t\t; do \t\t\tif wget -O \"$f\" \"$distUrl$distFile\" && [ -s \"$f\" ]; then \t\t\t\tsuccess=1; \t\t\t\tbreak; \t\t\tfi; \t\tdone; \t\t[ -n \"$success\" ]; \t}; \t\tddist 'tomcat.tar.gz' \"tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz\"; \techo \"$TOMCAT_SHA512 *tomcat.tar.gz\" | sha512sum --strict --check -; \tddist 'tomcat.tar.gz.asc' \"tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc\"; \texport GNUPGHOME=\"$(mktemp -d)\"; \tfor key in $GPG_KEYS; do \t\tgpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys \"$key\"; \tdone; \tgpg --batch --verify tomcat.tar.gz.asc tomcat.tar.gz; \ttar -xf tomcat.tar.gz --strip-components=1; \trm bin/*.bat; \trm tomcat.tar.gz*; \tcommand -v gpgconf && gpgconf --kill all || :; \trm -rf \"$GNUPGHOME\"; \t\tnativeBuildDir=\"$(mktemp -d)\"; \ttar -xf bin/tomcat-native.tar.gz -C \"$nativeBuildDir\" --strip-components=1; \tapt-get install -y --no-install-recommends \t\tdpkg-dev \t\tgcc \t\tlibapr1-dev \t\tlibssl-dev \t\tmake \t; \t( \t\texport CATALINA_HOME=\"$PWD\"; \t\tcd \"$nativeBuildDir/native\"; \t\tgnuArch=\"$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)\"; \t\taprConfig=\"$(command -v apr-1-config)\"; \t\t./configure \t\t\t--build=\"$gnuArch\" \t\t\t--libdir=\"$TOMCAT_NATIVE_LIBDIR\" \t\t\t--prefix=\"$CATALINA_HOME\" \t\t\t--with-apr=\"$aprConfig\" \t\t\t--with-java-home=\"$JAVA_HOME\" \t\t\t--with-ssl=yes; \t\tmake -j \"$(nproc)\"; \t\tmake install; \t); \trm -rf \"$nativeBuildDir\"; \trm bin/tomcat-native.tar.gz; \t\tapt-mark auto '.*' > /dev/null; \t[ -z \"$savedAptMark\" ] || apt-mark manual $savedAptMark > /dev/null; \tfind \"$TOMCAT_NATIVE_LIBDIR\" -type f -executable -exec ldd '{}' ';' \t\t| awk '/=>/ { print $(NF-1) }' \t\t| sort -u \t\t| xargs -r dpkg-query --search \t\t| cut -d: -f1 \t\t| sort -u \t\t| xargs -r apt-mark manual \t; \tapt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \trm -rf /var/lib/apt/lists/*; \t\tfind ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +; \t\tchmod -R +rX .; \tchmod 777 logs temp work"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-18T23:40:58Z", "id": "sha256:c55a0c6f4c7b3d24524aa43520898369ae5b6b671f7b2768c92236c1c990ba95", "createdBy": "/bin/sh -c set -eux; \t\tdpkgArch=\"$(dpkg --print-architecture)\"; \tcase \"$dpkgArch\" in \t\tamd64) upstreamArch='x64' ;; \t\tarm64) upstreamArch='aarch64' ;; \t\t*) echo >&2 \"error: unsupported architecture: $dpkgArch\" ;; \tesac; \t\twget -O openjdk.tgz.asc \"${JAVA_BASE_URL}${upstreamArch}_linux_${JAVA_URL_VERSION}.tar.gz.sign\"; \twget -O openjdk.tgz \"${JAVA_BASE_URL}${upstreamArch}_linux_${JAVA_URL_VERSION}.tar.gz\" --progress=dot:giga; \t\texport GNUPGHOME=\"$(mktemp -d)\"; \tgpg --batch --keyserver ha.pool.sks-keyservers.net --keyserver-options no-self-sigs-only --recv-keys CA5F11C6CE22644D42C6AC4492EF8D39DC13168F; \tgpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys EAC843EBD3EFDB98CC772FADA5CD6035332FA671; \tgpg --batch --list-sigs --keyid-format 0xLONG CA5F11C6CE22644D42C6AC4492EF8D39DC13168F \t\t| tee /dev/stderr \t\t| grep '0xA5CD6035332FA671' \t\t| grep 'Andrew Haley'; \tgpg --batch --verify openjdk.tgz.asc openjdk.tgz; \tgpgconf --kill all; \trm -rf \"$GNUPGHOME\"; \t\tmkdir -p \"$JAVA_HOME\"; \ttar --extract \t\t--file openjdk.tgz \t\t--directory \"$JAVA_HOME\" \t\t--strip-components 1 \t\t--no-same-owner \t; \trm openjdk.tgz*; \t\t\t{ \t\techo '#!/usr/bin/env bash'; \t\techo 'set -Eeuo pipefail'; \t\techo 'if ! [ -d \"$JAVA_HOME\" ]; then echo >&2 \"error: missing JAVA_HOME environment variable\"; exit 1; fi'; \t\techo 'cacertsFile=; for f in \"$JAVA_HOME/lib/security/cacerts\" \"$JAVA_HOME/jre/lib/security/cacerts\"; do if [ -e \"$f\" ]; then cacertsFile=\"$f\"; break; fi; done'; \t\techo 'if [ -z \"$cacertsFile\" ] || ! [ -f \"$cacertsFile\" ]; then echo >&2 \"error: failed to find cacerts file in $JAVA_HOME\"; exit 1; fi'; \t\techo 'trust extract --overwrite --format=java-cacerts --filter=ca-anchors --purpose=server-auth \"$cacertsFile\"'; \t} > /etc/ca-certificates/update.d/docker-openjdk; \tchmod +x /etc/ca-certificates/update.d/docker-openjdk; \t/etc/ca-certificates/update.d/docker-openjdk; \t\tfind \"$JAVA_HOME/lib\" -name '*.so' -exec dirname '{}' ';' | sort -u > /etc/ld.so.conf.d/docker-openjdk.conf; \tldconfig; \t\tjavac -version; \tjava -version"}], "architecture": "amd64", "os": "linux", "digest": "sha256:ce4f3c8d1974465a0560c3d9e904be0badcb068c32c0d2b151bd6430cb292153"}, "id": "ac6794f5-6179-4996-aef8-b42c6e5e757a"}, {"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test:1794", "findings": {"vulnerabilities": {"total": {"medium": 521, "unknown": 8, "high": 208, "critical": 24, "negligible": 4, "low": 115}, "unresolved": {"medium": 521, "unknown": 8, "high": 208, "critical": 24, "negligible": 4, "low": 115}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-17T19:31:24Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {"high": 10}, "unresolved": {"high": 10}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "1794", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test"}, "href": "/api/scans/b22d4dcc-e285-4414-aa92-f78ef1de0dba", "details": {"requested": "2019-12-17T19:18:08Z", "updated": "2019-12-17T20:00:21Z", "started": "2019-12-17T19:46:59Z", "completed": "2019-12-17T20:00:21Z", "labels": {"maintainer": "opsxcq@strm.sh"}, "results": [{"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-31T17:03:36Z", "id": "sha256:ad8d7dd9f1b2a8f13716ec084c2c93edb525839cceff97707b4eace3ebc3cbc0", "createdBy": "/bin/sh -c addgroup -gid 666 pwned && (sleep 1;echo \"nosambanocry\"; sleep 1;echo \"nosambanocry\") |adduser --gid 666 --uid 666 sambacry && (sleep 1;echo \"nosambanocry\"; sleep 1;echo \"nosambanocry\") | /usr/local/samba/bin/smbpasswd -a -s -c /smb.conf sambacry && mkdir /data && chown 666:666 /data"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {"high": 6}, "unresolved": {"high": 6}}}, "createdAt": "2017-10-31T16:28:50Z", "id": "sha256:9cdb466847d0b75d4910a07e4af88494e0758531905755d54199eefd43df3baa", "createdBy": "/bin/sh -c #(nop) COPY dir:855d955a1ea5ccc6f43f7842a2a902670ec06b6ccbd5080c8a6c4360f53e28c1 in /src ", "contents": "/api/scans/b22d4dcc-e285-4414-aa92-f78ef1de0dba/layers/sha256:9cdb466847d0b75d4910a07e4af88494e0758531905755d54199eefd43df3baa/contents"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-31T17:03:29Z", "id": "sha256:073f262054415dd73573a42ff2d620091b867bc7b66898c0555b663f0eb3c92e", "createdBy": "/bin/sh -c cd /src && ./configure && make && make install"}, {"findings": {"vulnerabilities": {"total": {"medium": 451, "unknown": 8, "high": 180, "critical": 20, "negligible": 3, "low": 99}, "unresolved": {"medium": 451, "unknown": 8, "high": 180, "critical": 20, "negligible": 3, "low": 99}}, "contents": {"total": {"high": 4}, "unresolved": {"high": 4}}}, "vulnerabilities": "/api/scans/b22d4dcc-e285-4414-aa92-f78ef1de0dba/layers/sha256:5bd0b35df9ef922c2be994c130df52201cbb76ab9caf63c54f8b1118e3115abc/vulnerabilities", "contents": "/api/scans/b22d4dcc-e285-4414-aa92-f78ef1de0dba/layers/sha256:5bd0b35df9ef922c2be994c130df52201cbb76ab9caf63c54f8b1118e3115abc/contents", "createdBy": "/bin/sh -c apt-get update && apt-get upgrade -y && DEBIAN_FRONTEND=noninteractive apt-get install -y acl attr autoconf bison build-essential debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev libcap-dev libcups2-dev libgnutls28-dev libjson-perl libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl libpopt-dev libreadline-dev perl perl-modules pkg-config python-all-dev python-dev python-dnspython python-crypto xsltproc zlib1g-dev&& apt-get clean && rm -rf /var/lib/apt/lists/*", "id": "sha256:5bd0b35df9ef922c2be994c130df52201cbb76ab9caf63c54f8b1118e3115abc", "createdAt": "2017-10-31T16:28:35Z"}, {"vulnerabilities": "/api/scans/b22d4dcc-e285-4414-aa92-f78ef1de0dba/layers/sha256:85b1f47fba49da65256f07c8790542a3880e9216f9c491965040f35ce2c6ca7a/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 28, "medium": 70, "critical": 4, "negligible": 1, "low": 16}, "unresolved": {"high": 28, "medium": 70, "critical": 4, "negligible": 1, "low": 16}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-09T21:30:05Z", "id": "sha256:85b1f47fba49da65256f07c8790542a3880e9216f9c491965040f35ce2c6ca7a", "createdBy": "/bin/sh -c #(nop) ADD file:55b071e2cfc3ea2f4bbf048d7d676e3c06a77a9a98d63f7af291f3decb495ec8 in / "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-31T17:03:31Z", "id": "sha256:1c753f87c7103f469aff523c7fb600c472150e1ec66e472b9096b93281391df4", "createdBy": "/bin/sh -c #(nop) COPY file:d7ef8d157aa26d93145dc74e0d47cc05154c784be361594f991c635601ebe1b9 in / "}], "architecture": "amd64", "os": "linux", "digest": "sha256:fdc4b2a97e4f777b95bcf0306fc3d6bb7ac1e025f4f7edd718762907d4ae5b42"}, "id": "b22d4dcc-e285-4414-aa92-f78ef1de0dba"}, {"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test:17353", "findings": {"vulnerabilities": {"total": {"medium": 437, "unknown": 10, "high": 99, "critical": 18, "negligible": 4, "low": 44}, "unresolved": {"medium": 436, "unknown": 10, "high": 99, "critical": 18, "negligible": 4, "low": 44}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-17T19:31:24Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {}, "unresolved": {}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "17353", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test"}, "href": "/api/scans/e87d02e5-00df-4b20-b2af-8c6a34101149", "details": {"requested": "2019-12-17T19:18:08Z", "updated": "2019-12-17T19:47:54Z", "started": "2019-12-17T19:39:03Z", "completed": "2019-12-17T19:47:54Z", "results": [{"vulnerabilities": "/api/scans/e87d02e5-00df-4b20-b2af-8c6a34101149/layers/sha256:d08a2c3112d431c43e02458a285501d289333380438e760962619c8672bcbe0b/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 29, "medium": 76, "critical": 4, "negligible": 1, "low": 16}, "unresolved": {"high": 29, "medium": 76, "critical": 4, "negligible": 1, "low": 16}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-04-24T19:20:41Z", "id": "sha256:d08a2c3112d431c43e02458a285501d289333380438e760962619c8672bcbe0b", "createdBy": "/bin/sh -c #(nop) ADD file:712c48086043553b85ffb031d8f6c5de857a2e53974df30cdfbc1e85c1b00a25 in / "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-05-09T12:36:24Z", "id": "sha256:4807c1746af632c7279b487ab9a6d8eff266e51695cda4de3c59baa94793cd5c", "createdBy": "/bin/sh -c set -ex && [ -e /usr/share/jenkins ] || mkdir -p /usr/share/jenkins && [ -e /usr/share/jenkins/ref ] || mkdir -p /usr/share/jenkins/ref && wget http://mirrors.jenkins.io/war-stable/${JENKINS_VERSION}/jenkins.war -O /usr/share/jenkins/jenkins.war && chown -R jenkins \"$JENKINS_HOME\" /usr/share/jenkins/ref"}, {"vulnerabilities": "/api/scans/e87d02e5-00df-4b20-b2af-8c6a34101149/layers/sha256:25de13746f419f7f3bc902a458424d7bfca99340689ab3206765d9d3fe6c0df9/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 18, "medium": 60, "critical": 4, "low": 12}, "unresolved": {"high": 18, "medium": 59, "critical": 4, "low": 12}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-04-24T19:54:25Z", "id": "sha256:25de13746f419f7f3bc902a458424d7bfca99340689ab3206765d9d3fe6c0df9", "createdBy": "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends \t\tca-certificates \t\tcurl \t\twget \t&& rm -rf /var/lib/apt/lists/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-04-26T23:10:00Z", "id": "sha256:12a563564bc00df419eaea432befa9231b9fbe3da8e6ae2521605e876480c597", "createdBy": "/bin/sh -c /var/lib/dpkg/info/ca-certificates-java.postinst configure"}, {"vulnerabilities": "/api/scans/e87d02e5-00df-4b20-b2af-8c6a34101149/layers/sha256:34a279a4928ddfb0e3c893b02af8f53708ce55b2e5dda1a6ea0284513de570b0/vulnerabilities", "findings": {"vulnerabilities": {"total": {"medium": 54, "unknown": 5, "high": 23, "critical": 5, "negligible": 3, "low": 6}, "unresolved": {"medium": 54, "unknown": 5, "high": 23, "critical": 5, "negligible": 3, "low": 6}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-04-24T19:55:32Z", "id": "sha256:34a279a4928ddfb0e3c893b02af8f53708ce55b2e5dda1a6ea0284513de570b0", "createdBy": "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends \t\tbzr \t\tgit \t\tmercurial \t\topenssh-client \t\tsubversion \t\t\t\tprocps \t&& rm -rf /var/lib/apt/lists/*"}, {"vulnerabilities": "/api/scans/e87d02e5-00df-4b20-b2af-8c6a34101149/layers/sha256:d46a4532ccb23e0247f5f12c66000efa046624ca504d2906909a4807a3aa535a/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 1, "medium": 2, "critical": 2}, "unresolved": {"high": 1, "medium": 2, "critical": 2}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-05-09T12:35:41Z", "id": "sha256:d46a4532ccb23e0247f5f12c66000efa046624ca504d2906909a4807a3aa535a", "createdBy": "/bin/sh -c apt-get update && apt-get install -y git curl wget && rm -rf /var/lib/apt/lists/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-05-09T12:36:35Z", "id": "sha256:2d488f0c183052741ffea14feb865f5821aa55e822a6f745c35acb17d6a38ca9", "createdBy": "/bin/sh -c #(nop) COPY file:78af1b33c67798de6c352599d24682470274d2927f36fefdb65f2fe59db0ae54 in /usr/local/bin/jenkins.sh "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-05-09T12:35:56Z", "id": "sha256:abccc8f4e54e95245c751168e1de4735f3548d84eab60ffd5852242d555b7767", "createdBy": "/bin/sh -c groupadd -g 1000 jenkins && useradd -d \"$JENKINS_HOME\" -u 1000 -g 1000 -m -s /bin/bash jenkins"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-05-09T12:36:40Z", "id": "sha256:9db82a19afe99706bed896179781021b89be336f0354f51222e52e26fe0b90c7", "createdBy": "/bin/sh -c chmod +x /usr/local/bin/jenkins.sh"}, {"vulnerabilities": "/api/scans/e87d02e5-00df-4b20-b2af-8c6a34101149/layers/sha256:13bece0db804b4cebe3b0a12b6c981147ef4aff98c468da33354948440da7186/vulnerabilities", "findings": {"vulnerabilities": {"total": {"medium": 2, "low": 2}, "unresolved": {"medium": 2, "low": 2}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-04-25T00:38:26Z", "id": "sha256:13bece0db804b4cebe3b0a12b6c981147ef4aff98c468da33354948440da7186", "createdBy": "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends \t\tbzip2 \t\tunzip \t\txz-utils \t&& rm -rf /var/lib/apt/lists/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-04-25T00:41:07Z", "id": "sha256:c6e013082552ea3a357691374f87938c6e958714c6f62d8b80f6412a2c323537", "createdBy": "/bin/sh -c echo 'deb http://deb.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/jessie-backports.list"}, {"vulnerabilities": "/api/scans/e87d02e5-00df-4b20-b2af-8c6a34101149/layers/sha256:d390f33bb9b7bde7a6ce08750da599ec1e1948bbd4eaaaaa9fd3033650ed4a3f/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 28, "unknown": 5, "medium": 243, "critical": 3, "low": 8}, "unresolved": {"high": 28, "unknown": 5, "medium": 243, "critical": 3, "low": 8}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-04-26T23:09:58Z", "id": "sha256:d390f33bb9b7bde7a6ce08750da599ec1e1948bbd4eaaaaa9fd3033650ed4a3f", "createdBy": "/bin/sh -c set -ex; \t\tapt-get update; \tapt-get install -y \t\topenjdk-8-jdk=\"$JAVA_DEBIAN_VERSION\" \t\tca-certificates-java=\"$CA_CERTIFICATES_JAVA_VERSION\" \t; \trm -rf /var/lib/apt/lists/*; \t\t[ \"$JAVA_HOME\" = \"$(docker-java-home)\" ]; \t\tupdate-alternatives --get-selections | awk -v home=\"$JAVA_HOME\" 'index($3, home) == 1 { $2 = \"manual\"; print | \"update-alternatives --set-selections\" }'; \tupdate-alternatives --query java | grep -q 'Status: manual'"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-05-09T12:36:06Z", "id": "sha256:9791f97a4f11090536bdb6bcb96965692129fdbcf5e7a70c53e61aa856f5521e", "createdBy": "/bin/sh -c #(nop) ADD tarsum.v1+sha256:85c4b30c56225992fab6502ef4662ef12847c7c5137d48e28e6186788b8f914f in /bin/tini "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-04-25T00:41:09Z", "id": "sha256:07daf1b985ceb53fc7cbb1c7e202917b4d6348bfef11e8280997950f7199aecd", "createdBy": "/bin/sh -c { \t\techo '#!/bin/sh'; \t\techo 'set -e'; \t\techo; \t\techo 'dirname \"$(dirname \"$(readlink -f \"$(which javac || which java)\")\")\"'; \t} > /usr/local/bin/docker-java-home \t&& chmod +x /usr/local/bin/docker-java-home"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-05-09T12:36:11Z", "id": "sha256:470ed9f6eee22f215900ab1840650412aa32e667f0373900c2767ae7ef551f7e", "createdBy": "/bin/sh -c chmod +x /bin/tini"}], "architecture": "amd64", "os": "linux", "digest": "sha256:dbfca464b4fee22d26693c0f00fb0e2421baa3fb1a27f1d7d52b1c18d6c5bfe5"}, "id": "e87d02e5-00df-4b20-b2af-8c6a34101149"}, {"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test:1633", "findings": {"vulnerabilities": {"total": {"high": 73, "medium": 217, "critical": 8, "negligible": 1, "low": 36}, "unresolved": {"high": 73, "medium": 217, "critical": 8, "negligible": 1, "low": 36}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-17T19:31:24Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {"high": 2}, "unresolved": {"high": 2}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "1633", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test"}, "href": "/api/scans/14b355d4-567f-4bd5-8acd-3d818d868955", "details": {"requested": "2019-12-17T19:18:08Z", "updated": "2019-12-17T19:39:02Z", "started": "2019-12-17T19:36:12Z", "completed": "2019-12-17T19:39:02Z", "labels": {"maintainer": "opsxcq@strm.sh"}, "results": [{"vulnerabilities": "/api/scans/14b355d4-567f-4bd5-8acd-3d818d868955/layers/sha256:85b1f47fba49da65256f07c8790542a3880e9216f9c491965040f35ce2c6ca7a/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 28, "medium": 70, "critical": 4, "negligible": 1, "low": 16}, "unresolved": {"high": 28, "medium": 70, "critical": 4, "negligible": 1, "low": 16}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-09T21:30:05Z", "id": "sha256:85b1f47fba49da65256f07c8790542a3880e9216f9c491965040f35ce2c6ca7a", "createdBy": "/bin/sh -c #(nop) ADD file:55b071e2cfc3ea2f4bbf048d7d676e3c06a77a9a98d63f7af291f3decb495ec8 in / "}, {"findings": {"vulnerabilities": {"total": {"high": 45, "medium": 147, "critical": 4, "low": 20}, "unresolved": {"high": 45, "medium": 147, "critical": 4, "low": 20}}, "contents": {"total": {"high": 2}, "unresolved": {"high": 2}}}, "vulnerabilities": "/api/scans/14b355d4-567f-4bd5-8acd-3d818d868955/layers/sha256:fd1b7848a24fd9d883147446760ae71f68336a61d9dff831f0efa21f819d2fcb/vulnerabilities", "contents": "/api/scans/14b355d4-567f-4bd5-8acd-3d818d868955/layers/sha256:fd1b7848a24fd9d883147446760ae71f68336a61d9dff831f0efa21f819d2fcb/contents", "createdBy": "/bin/sh -c apt-get update && apt-get upgrade -y && DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 php5 python sendmail && apt-get clean && rm -rf /var/lib/apt/lists/*", "id": "sha256:fd1b7848a24fd9d883147446760ae71f68336a61d9dff831f0efa21f819d2fcb", "createdAt": "2017-10-30T22:09:20Z"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:09:22Z", "id": "sha256:958cfd44407115aaba6a5cb9fddf4733cfdb8e129c95b6018e2e8601ed5bd942", "createdBy": "/bin/sh -c #(nop) COPY dir:112329eee82e94ef738d069a2891243d5cafdb08b5df5d218dc840bb82f609a3 in /www "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:09:22Z", "id": "sha256:1bce47ee484d1ff8f771dd1446356095d7f763c0d92cba8e75cef10a88545bec", "createdBy": "/bin/sh -c #(nop) COPY dir:0d83906bb3fba9b9c9b769d6035d6e60da220cd9eabdc422184389a64ff9aa58 in /www/vulnerable/ "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:09:23Z", "id": "sha256:b0d2bcaaa617eeb9cc505f363781c47049c328bccc16d4be7fe553995aac0b26", "createdBy": "/bin/sh -c chmod 777 -R /www"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:09:23Z", "id": "sha256:401c3f47975fc644024ac7d84ed6eb45237fc0eff6954058ca72e7aee73c67c8", "createdBy": "/bin/sh -c #(nop) COPY file:57a0dc4a61a910f5638fdd93fbb2ca0b368e7f0581cd4d7428570b07da649f1c in /etc/apache2/sites-enabled/000-default.conf "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:09:24Z", "id": "sha256:52c46abb054adac8f841dcb998d659541b82a5a54b89fd5338db76464bda27aa", "createdBy": "/bin/sh -c #(nop) COPY file:094657626a5a7d0e2af6ecfbee810ce687e3ffac42906eae79da7b46aeb7fb0d in / "}], "architecture": "amd64", "os": "linux", "digest": "sha256:271282ecaa7728ceb618515e389ce92bc884ee24f03ba65bf134d85f72a86279"}, "id": "14b355d4-567f-4bd5-8acd-3d818d868955"}, {"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test:1634", "findings": {"vulnerabilities": {"total": {"medium": 488, "unknown": 7, "high": 205, "critical": 23, "negligible": 4, "low": 104}, "unresolved": {"medium": 488, "unknown": 7, "high": 205, "critical": 23, "negligible": 4, "low": 104}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-13T05:16:58Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {}, "unresolved": {}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "1634", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test"}, "href": "/api/scans/5f22441e-d3d2-4f49-8d43-1284059f1eb7", "details": {"requested": "2019-12-17T19:18:08Z", "updated": "2019-12-17T19:36:11Z", "started": "2019-12-17T19:31:12Z", "completed": "2019-12-17T19:36:11Z", "labels": {"maintainer": "opsxcq@strm.sh"}, "results": [{"vulnerabilities": "/api/scans/5f22441e-d3d2-4f49-8d43-1284059f1eb7/layers/sha256:d93a2d7cc901177e87182b2003d50fb3ffd5be3eb698f39f5c862264efe6ee99/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 28, "medium": 72, "critical": 4, "negligible": 1, "low": 16}, "unresolved": {"high": 28, "medium": 72, "critical": 4, "negligible": 1, "low": 16}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-09-07T23:04:40Z", "id": "sha256:d93a2d7cc901177e87182b2003d50fb3ffd5be3eb698f39f5c862264efe6ee99", "createdBy": "/bin/sh -c #(nop) ADD file:d7333b3e0bc6479d2faed32e06d85f1975e5b23e13e75555aeed0f639770413b in / "}, {"vulnerabilities": "/api/scans/5f22441e-d3d2-4f49-8d43-1284059f1eb7/layers/sha256:9bf6a3c6e9ae08454b5bf9f49631c096110355d29fda373e5cf91d51805e622e/vulnerabilities", "findings": {"vulnerabilities": {"total": {"medium": 416, "unknown": 7, "high": 177, "critical": 19, "negligible": 3, "low": 88}, "unresolved": {"medium": 416, "unknown": 7, "high": 177, "critical": 19, "negligible": 3, "low": 88}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-09-11T23:22:12Z", "id": "sha256:9bf6a3c6e9ae08454b5bf9f49631c096110355d29fda373e5cf91d51805e622e", "createdBy": "/bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential ruby valgrind && apt-get clean && rm -rf /var/lib/apt/lists/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-09-11T23:22:16Z", "id": "sha256:f19dc1f92ea8c2e92c52b0fefba435e24db577215f9fb16bcd7855fd7f0584fa", "createdBy": "/bin/sh -c #(nop) COPY dir:82926ea74722b1ba6709c37ae7690dc8f2ad2e45f5bd971b310541d35aaf656f in /src/ "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-09-11T23:22:16Z", "id": "sha256:a48d201455f990372101913059f64ab659cdd34dfecceac84d1052568282993b", "createdBy": "/bin/sh -c #(nop) COPY file:68c036b568daa3b910bb9f9ec70bbb6dcd1321e246422eb2d84c7b4824457dfc in / "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-09-11T23:25:20Z", "id": "sha256:6788ade0013236d2a92727c4e3d8cfbab5b9d7113413cf4d608de24c7690dcea", "createdBy": "/bin/sh -c cd /src && chmod +x configure && sync && ./configure && make"}], "architecture": "amd64", "os": "linux", "digest": "sha256:0d1ce2ac683623b93ba55576f8ca81bc00382dd213b952be76c9eda52a0cacef"}, "id": "5f22441e-d3d2-4f49-8d43-1284059f1eb7"}, {"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test:web-app", "findings": {"vulnerabilities": {"total": {"high": 1}, "unresolved": {"high": 1}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-13T05:16:58Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {"high": 10}, "unresolved": {"high": 10}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "web-app", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test"}, "href": "/api/scans/53d9a40c-6eb4-4d9c-a583-35c128beb4ab", "details": {"requested": "2019-12-17T19:18:08Z", "updated": "2019-12-17T19:46:58Z", "started": "2019-12-17T19:23:25Z", "completed": "2019-12-17T19:46:58Z", "results": [{"vulnerabilities": "/api/scans/53d9a40c-6eb4-4d9c-a583-35c128beb4ab/layers/sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 1}, "unresolved": {"high": 1}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-05-11T00:07:03Z", "id": "sha256:e7c96db7181be991f19a9fb6975cdbbd73c65f4a2681348e63a141a2192a5f10", "createdBy": "/bin/sh -c #(nop) ADD file:a86aea1f3a7d68f6ae03397b99ea77f2e9ee901c5c59e59f76f93adbb4035913 in / "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {"high": 5}, "unresolved": {"high": 5}}}, "createdAt": "2019-09-19T09:17:01Z", "id": "sha256:5c3362402290de306a6d5e862c3f8f8a7ce013a977a5279a29b7418acd51adb4", "createdBy": "/bin/sh -c npm install react-scripts@3.0.1 -g --silent", "contents": "/api/scans/53d9a40c-6eb4-4d9c-a583-35c128beb4ab/layers/sha256:5c3362402290de306a6d5e862c3f8f8a7ce013a977a5279a29b7418acd51adb4/contents"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {"high": 5}, "unresolved": {"high": 5}}}, "createdAt": "2019-09-19T09:15:53Z", "id": "sha256:6a55800a2146dc1afcffe69cd49e3401835a564d825789d51565fe686ce60b8c", "createdBy": "/bin/sh -c npm install --silent", "contents": "/api/scans/53d9a40c-6eb4-4d9c-a583-35c128beb4ab/layers/sha256:6a55800a2146dc1afcffe69cd49e3401835a564d825789d51565fe686ce60b8c/contents"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-05-11T01:52:54Z", "id": "sha256:3bcb5e14be535bd6a0d2366436d93d11b56bf9340365d25eb98f1397aec23470", "createdBy": "/bin/sh -c apk add --no-cache --virtual .build-deps-yarn curl gnupg tar && for key in 6A010C5166006599AA17F08146C2130DFD2497F5 ; do gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys \"$key\" || gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys \"$key\" || gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys \"$key\" ; done && curl -fsSLO --compressed \"https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz\" && curl -fsSLO --compressed \"https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc\" && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && mkdir -p /opt && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && apk del .build-deps-yarn"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-08-13T11:24:29Z", "id": "sha256:c91a6ed9b3615b803ae58aa629b6e14274a3a17fdaaff616a585037c9776145b", "createdBy": "/bin/sh -c #(nop) WORKDIR /app"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-09-19T09:14:49Z", "id": "sha256:8381428c3b6864e203205cfc3b29fbbedee1020e3d3b15012a266189996c9dd1", "createdBy": "/bin/sh -c #(nop) COPY file:6a9a61abe58d0a0289c12ea16f2d2f49a03d7690c5a15c4d7891f30b63824b1a in /app/package.json "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-05-11T01:52:51Z", "id": "sha256:a9b145f64bbe7efacd482b8576a2098dd7054c7d612a9ab0ab06570b4ae2bb0d", "createdBy": "/bin/sh -c addgroup -g 1000 node && adduser -u 1000 -G node -s /bin/sh -D node && apk add --no-cache libstdc++ && apk add --no-cache --virtual .build-deps binutils-gold curl g++ gcc gnupg libgcc linux-headers make python && for key in 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 FD3A5288F042B6850C66B31F09FE44734EB7990E 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 DD8F2338BAE7501E3DD5AC78C273792F7D83545D C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 B9AE9905FFD7803F25714661B63B535A4C206CA9 77984A986EBC2AA786BC0F66B01FBB92821C587A 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 4ED778F539E3634C779C87C6D7062848A1AB005C A48C2BEE680E841632CD4E44F07496B3EB3C1762 B9E2F5981AA6E0CD28160D9FF13993A75599653C ; do gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys \"$key\" || gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys \"$key\" || gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys \"$key\" ; done && curl -fsSLO --compressed \"https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz\" && curl -fsSLO --compressed \"https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc\" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && grep \" node-v$NODE_VERSION.tar.xz\\$\" SHASUMS256.txt | sha256sum -c - && tar -xf \"node-v$NODE_VERSION.tar.xz\" && cd \"node-v$NODE_VERSION\" && ./configure && make -j$(getconf _NPROCESSORS_ONLN) V= && make install && apk del .build-deps && cd .. && rm -Rf \"node-v$NODE_VERSION\" && rm \"node-v$NODE_VERSION.tar.xz\" SHASUMS256.txt.asc SHASUMS256.txt"}], "architecture": "amd64", "os": "linux", "digest": "sha256:857925aded5d944e48ecafd2d05e4287cac75e18cb40741a31fdfe193564e341"}, "id": "53d9a40c-6eb4-4d9c-a583-35c128beb4ab"}, {"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test:17638", "findings": {"vulnerabilities": {"total": {"medium": 128, "unknown": 7, "high": 38, "critical": 6, "negligible": 78, "low": 65}, "unresolved": {"medium": 128, "unknown": 7, "high": 38, "critical": 6, "negligible": 78, "low": 65}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-13T05:16:58Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {}, "unresolved": {}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "17638", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test"}, "href": "/api/scans/4efbee8a-8d37-4944-8b2d-cd73abb7c8a3", "details": {"requested": "2019-12-17T19:18:08Z", "updated": "2019-12-17T19:31:11Z", "started": "2019-12-17T19:18:09Z", "completed": "2019-12-17T19:31:11Z", "results": [{"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:03:23Z", "id": "sha256:9e82cd5292136a02da8a9fc435c5f053db10054e094bf906741750768591e737", "createdBy": "|4 BASE_URL=https://apache.osuosl.org/maven/maven-3/3.5.2/binaries MAVEN_VERSION=3.5.2 SHA=707b1f6e390a65bde4af4cdaf2a24d45fc19a6ded00fff02e91626e3e42ceaff USER_HOME_DIR=/root /bin/sh -c mkdir -p /usr/share/maven /usr/share/maven/ref && curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz && echo \"${SHA} /tmp/apache-maven.tar.gz\" | sha256sum -c - && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 && rm -f /tmp/apache-maven.tar.gz && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn"}, {"vulnerabilities": "/api/scans/4efbee8a-8d37-4944-8b2d-cd73abb7c8a3/layers/sha256:d15dc9fb2f8df99118e9e8eceb86659ba965e431a2938ca3b7edf7f909932463/vulnerabilities", "findings": {"vulnerabilities": {"total": {"medium": 91, "unknown": 7, "high": 13, "critical": 3, "negligible": 36, "low": 46}, "unresolved": {"medium": 91, "unknown": 7, "high": 13, "critical": 3, "negligible": 36, "low": 46}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:00:20Z", "id": "sha256:d15dc9fb2f8df99118e9e8eceb86659ba965e431a2938ca3b7edf7f909932463", "createdBy": "/bin/sh -c set -ex; \t\tif [ ! -d /usr/share/man/man1 ]; then \t\tmkdir -p /usr/share/man/man1; \tfi; \t\tapt-get update; \tapt-get install -y \t\tcurl \t\topenjdk-8-jdk-headless=\"$JAVA_DEBIAN_VERSION\" \t\tca-certificates-java=\"$CA_CERTIFICATES_JAVA_VERSION\" \t; \trm -rf /var/lib/apt/lists/*; \t\t[ \"$(readlink -f \"$JAVA_HOME\")\" = \"$(docker-java-home)\" ]; \t\tupdate-alternatives --get-selections | awk -v home=\"$(readlink -f \"$JAVA_HOME\")\" 'index($3, home) == 1 { $2 = \"manual\"; print | \"update-alternatives --set-selections\" }'; \tupdate-alternatives --query java | grep -q 'Status: manual'"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:00:22Z", "id": "sha256:35da807c5d51d2e88247a45cb594dee370b024bd12daadc0f54ba0720c3986b7", "createdBy": "/bin/sh -c /var/lib/dpkg/info/ca-certificates-java.postinst configure"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:03:26Z", "id": "sha256:7b88c3540da3bdfc81d560f601792bdd2a861908c3e58e9751d1f7acaf68353c", "createdBy": "/bin/sh -c #(nop) COPY file:21d953874d701690e1fff4b0a77f3a9462181c63e4181d51adc4c4601ec3d00e in /usr/local/bin/mvn-entrypoint.sh "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T09:53:01Z", "id": "sha256:f0e56426316d8653c64aeb17d79a8a637e8d7620a4c2ed5d40bf258352b57ec8", "createdBy": "/bin/sh -c ln -svT \"/usr/lib/jvm/java-8-openjdk-$(dpkg --print-architecture)\" /docker-java-home"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:03:27Z", "id": "sha256:1333b5f4d8a480440df6ed14e66cd5bc90036403bf889b8531f994229516c42c", "createdBy": "/bin/sh -c #(nop) COPY file:032052af42b6154c5b49c5a6fff95b46f6aa90c0c2f2869963f516f33e677edb in /usr/share/maven/ref/ "}, {"vulnerabilities": "/api/scans/4efbee8a-8d37-4944-8b2d-cd73abb7c8a3/layers/sha256:bc95e04b23c06ba1b9bf092d07d1493177b218e0340bd2ed49dac351c1e34313/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 12, "medium": 18, "critical": 3, "negligible": 41, "low": 19}, "unresolved": {"high": 12, "medium": 18, "critical": 3, "negligible": 41, "low": 19}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-04T05:26:48Z", "id": "sha256:bc95e04b23c06ba1b9bf092d07d1493177b218e0340bd2ed49dac351c1e34313", "createdBy": "/bin/sh -c #(nop) ADD file:45233d6b5c9b91e9437065d3e7c332d1c4eb4bce8e1079a4c1af342c450abe67 in / "}, {"vulnerabilities": "/api/scans/4efbee8a-8d37-4944-8b2d-cd73abb7c8a3/layers/sha256:154549a6039be172f1d1b529b8add27e6b62a5be1a2bd9bba9e9ba5a3f00ff57/vulnerabilities", "findings": {"vulnerabilities": {"total": {"medium": 1, "negligible": 1}, "unresolved": {"medium": 1, "negligible": 1}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T09:52:59Z", "id": "sha256:154549a6039be172f1d1b529b8add27e6b62a5be1a2bd9bba9e9ba5a3f00ff57", "createdBy": "/bin/sh -c apt-get update && apt-get install -y --no-install-recommends \t\tbzip2 \t\tunzip \t\txz-utils \t&& rm -rf /var/lib/apt/lists/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T09:53:00Z", "id": "sha256:47ea48679fe4f872e3d6bc7d038ce849515d760e57c132eb29dec586dafb626d", "createdBy": "/bin/sh -c { \t\techo '#!/bin/sh'; \t\techo 'set -e'; \t\techo; \t\techo 'dirname \"$(dirname \"$(readlink -f \"$(which javac || which java)\")\")\"'; \t} > /usr/local/bin/docker-java-home \t&& chmod +x /usr/local/bin/docker-java-home"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:03:28Z", "id": "sha256:18c3ce6e9e59148d5141ec66816e85f1412e1da0d85efc3f805c34fdafc2ff72", "createdBy": "|4 BASE_URL=https://apache.osuosl.org/maven/maven-3/3.5.2/binaries MAVEN_VERSION=3.5.2 SHA=707b1f6e390a65bde4af4cdaf2a24d45fc19a6ded00fff02e91626e3e42ceaff USER_HOME_DIR=/root /bin/sh -c mkdir -p /cve-2017-538/exploit && mkdir -p /usr/src/cve-2017-538"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:03:30Z", "id": "sha256:ae913c47883e9780234b19fc3731da43eef56c111f721123d68faccd80d48a19", "createdBy": "/bin/sh -c #(nop) ADD file:af1be9b4bd886f2ba17c7db8d118000f5867e70b280ed23209a92c0d566f3d5d in /usr/src/cve-2017-538/pom.xml "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:03:31Z", "id": "sha256:a5db6e4416f0a8450a0bab7f9f52305d02fae766d32aae6997f54af9bce02da9", "createdBy": "/bin/sh -c #(nop) ADD dir:690f022cd065f5f01d3025be0c224085ea5c7e67d9c7e21c41a863cd2077f0c0 in /usr/src/cve-2017-538/src "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:03:32Z", "id": "sha256:34f394b8b251466389fada0e0abbf483780a01cb22985961b4a2d70f9b58ee1b", "createdBy": "/bin/sh -c #(nop) ADD file:18169adf3debc49ae8a5f147809e2914f2d1a2a973b63b0ba2c3e8f2a4c8c4da in /cve-2017-538/entry-point.sh "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:03:33Z", "id": "sha256:567c31589ef85ad6a46e5efcfa7f801a4ff003ddf198cc31e03acf0aae0ec9b4", "createdBy": "/bin/sh -c #(nop) ADD file:1ddbbb3818d6365676a72eebe4edb86af95ae945a0260d13760aaff82d44b0d6 in /cve-2017-538/exploit/exploit.py "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-11-28T10:07:01Z", "id": "sha256:e00cb361922bc78dfef5d3d8a62e8d55f7613b155b7aecb354972eda0671e923", "createdBy": "|4 BASE_URL=https://apache.osuosl.org/maven/maven-3/3.5.2/binaries MAVEN_VERSION=3.5.2 SHA=707b1f6e390a65bde4af4cdaf2a24d45fc19a6ded00fff02e91626e3e42ceaff USER_HOME_DIR=/root /bin/sh -c chmod +x /cve-2017-538/entry-point.sh && sync && cd /usr/src/cve-2017-538 && mvn package && cp /usr/src/cve-2017-538/target/*.jar /cve-2017-538/cve-2017-538-example.jar && rm -Rf /usr/src/cve-2017-538"}, {"vulnerabilities": "/api/scans/4efbee8a-8d37-4944-8b2d-cd73abb7c8a3/layers/_image/vulnerabilities", "id": "_image", "findings": {"vulnerabilities": {"total": {"high": 13, "medium": 18}, "unresolved": {"high": 13, "medium": 18}}, "contents": {"total": {}, "unresolved": {}}}}], "architecture": "amd64", "os": "linux", "digest": "sha256:9460c621a1901c806f018fdb89695b67b78f2765e27fedff1e5b2396aa191f4e"}, "id": "4efbee8a-8d37-4944-8b2d-cd73abb7c8a3"}, {"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test:1999", "findings": {"vulnerabilities": {"total": {"high": 2, "medium": 31, "negligible": 34, "low": 83}, "unresolved": {"high": 2, "medium": 31, "negligible": 34, "low": 83}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-13T05:16:58Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {"high": 8}, "unresolved": {"high": 8}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "1999", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test"}, "href": "/api/scans/bcc6125a-a24a-4315-bdc4-45732b4380c4", "details": {"requested": "2019-12-17T19:18:08Z", "updated": "2019-12-17T19:48:48Z", "started": "2019-12-17T19:18:09Z", "completed": "2019-12-17T19:48:48Z", "results": [{"vulnerabilities": "/api/scans/bcc6125a-a24a-4315-bdc4-45732b4380c4/layers/sha256:16c48d79e9cc2d6cdb79a91e9c410250c1a44102ed4c971fbf24692cc09f2351/vulnerabilities", "findings": {"vulnerabilities": {"total": {"medium": 9, "negligible": 21, "low": 25}, "unresolved": {"medium": 9, "negligible": 21, "low": 25}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-09-18T23:21:10Z", "id": "sha256:16c48d79e9cc2d6cdb79a91e9c410250c1a44102ed4c971fbf24692cc09f2351", "createdBy": "/bin/sh -c #(nop) ADD file:a5b5bea2fa5358461649feb68a28ec3e9ec4547164744e8eb7f4112c1969f64f in / "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-09-18T23:21:10Z", "id": "sha256:3c654ad3ed7d66e3caa5ab60bee1b166359d066be7e9edca6161b72ac06f2008", "createdBy": "/bin/sh -c rm -rf /var/lib/apt/lists/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-09-18T23:21:11Z", "id": "sha256:6276f4f9c29df0a2fc8019e3c9929e6c3391967cb1f610f57a3c5f8044c8c2b6", "createdBy": "/bin/sh -c set -xe \t\t&& echo '#!/bin/sh' > /usr/sbin/policy-rc.d \t&& echo 'exit 101' >> /usr/sbin/policy-rc.d \t&& chmod +x /usr/sbin/policy-rc.d \t\t&& dpkg-divert --local --rename --add /sbin/initctl \t&& cp -a /usr/sbin/policy-rc.d /sbin/initctl \t&& sed -i 's/^exit.*/exit 0/' /sbin/initctl \t\t&& echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \t\t&& echo 'DPkg::Post-Invoke { \"rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true\"; };' > /etc/apt/apt.conf.d/docker-clean \t&& echo 'APT::Update::Post-Invoke { \"rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true\"; };' >> /etc/apt/apt.conf.d/docker-clean \t&& echo 'Dir::Cache::pkgcache \"\"; Dir::Cache::srcpkgcache \"\";' >> /etc/apt/apt.conf.d/docker-clean \t\t&& echo 'Acquire::Languages \"none\";' > /etc/apt/apt.conf.d/docker-no-languages \t\t&& echo 'Acquire::GzipIndexes \"true\"; Acquire::CompressionTypes::Order:: \"gz\";' > /etc/apt/apt.conf.d/docker-gzip-indexes \t\t&& echo 'Apt::AutoRemove::SuggestsImportant \"false\";' > /etc/apt/apt.conf.d/docker-autoremove-suggests"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-09-18T23:21:12Z", "id": "sha256:a4bd43ad48cebce2cad4207b823fe1693e10c440504ce72f48643772e3c98d7a", "createdBy": "/bin/sh -c mkdir -p /run/systemd && echo 'docker' > /run/systemd/container"}, {"findings": {"vulnerabilities": {"total": {"medium": 16, "negligible": 13, "low": 58}, "unresolved": {"medium": 16, "negligible": 13, "low": 58}}, "contents": {"total": {"high": 8}, "unresolved": {"high": 8}}}, "vulnerabilities": "/api/scans/bcc6125a-a24a-4315-bdc4-45732b4380c4/layers/sha256:96f6221c53662c418d192b44224034e1a2701d8ae039bc1fbb10cb762e9f7962/vulnerabilities", "contents": "/api/scans/bcc6125a-a24a-4315-bdc4-45732b4380c4/layers/sha256:96f6221c53662c418d192b44224034e1a2701d8ae039bc1fbb10cb762e9f7962/contents", "createdBy": "bash", "id": "sha256:96f6221c53662c418d192b44224034e1a2701d8ae039bc1fbb10cb762e9f7962", "createdAt": "2019-09-30T03:27:12Z"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-01T04:41:24Z", "id": "sha256:c1ce3c3682769fcfb01fb213b908447f56c73d3e7d661b7bd24b625f931d4d94", "createdBy": "sh /home/startup.sh"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-01T04:39:47Z", "id": "sha256:e883c99ef10234568ed3cd6be44773bdb54f99dc1a77506e8c42490122493a89", "createdBy": "/bin/sh -c echo \"cd /opt/vuls/spring-cloud-config/spring-cloud-config-server && ../mvnw spring-boot:run\" >/home/startup.sh"}, {"vulnerabilities": "/api/scans/bcc6125a-a24a-4315-bdc4-45732b4380c4/layers/_image/vulnerabilities", "id": "_image", "findings": {"vulnerabilities": {"total": {"high": 2, "medium": 6}, "unresolved": {"high": 2, "medium": 6}}, "contents": {"total": {}, "unresolved": {}}}}], "architecture": "amd64", "os": "linux", "digest": "sha256:c018d73062b1906ed5d1e3fb2e7d789f4cbfda11edb234486a0e8d36167a08d7"}, "id": "bcc6125a-a24a-4315-bdc4-45732b4380c4"}, {"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test:19799", "findings": {"vulnerabilities": {"total": {"high": 2, "medium": 31, "negligible": 34, "low": 83}, "unresolved": {"high": 2, "medium": 31, "negligible": 34, "low": 83}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-13T05:16:58Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {"high": 8}, "unresolved": {"high": 8}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "19799", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test"}, "href": "/api/scans/8a7e9d6e-1f03-483c-8132-f532491867a1", "details": {"requested": "2019-12-17T19:18:08Z", "updated": "2019-12-17T19:48:52Z", "started": "2019-12-17T19:18:08Z", "completed": "2019-12-17T19:48:52Z", "results": [{"vulnerabilities": "/api/scans/8a7e9d6e-1f03-483c-8132-f532491867a1/layers/sha256:16c48d79e9cc2d6cdb79a91e9c410250c1a44102ed4c971fbf24692cc09f2351/vulnerabilities", "findings": {"vulnerabilities": {"total": {"medium": 9, "negligible": 21, "low": 25}, "unresolved": {"medium": 9, "negligible": 21, "low": 25}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-09-18T23:21:10Z", "id": "sha256:16c48d79e9cc2d6cdb79a91e9c410250c1a44102ed4c971fbf24692cc09f2351", "createdBy": "/bin/sh -c #(nop) ADD file:a5b5bea2fa5358461649feb68a28ec3e9ec4547164744e8eb7f4112c1969f64f in / "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-09-18T23:21:10Z", "id": "sha256:3c654ad3ed7d66e3caa5ab60bee1b166359d066be7e9edca6161b72ac06f2008", "createdBy": "/bin/sh -c rm -rf /var/lib/apt/lists/*"}, {"vulnerabilities": "/api/scans/8a7e9d6e-1f03-483c-8132-f532491867a1/layers/_image/vulnerabilities", "id": "_image", "findings": {"vulnerabilities": {"total": {"high": 2, "medium": 6}, "unresolved": {"high": 2, "medium": 6}}, "contents": {"total": {}, "unresolved": {}}}}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-09-18T23:21:12Z", "id": "sha256:a4bd43ad48cebce2cad4207b823fe1693e10c440504ce72f48643772e3c98d7a", "createdBy": "/bin/sh -c mkdir -p /run/systemd && echo 'docker' > /run/systemd/container"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-01T04:41:24Z", "id": "sha256:c1ce3c3682769fcfb01fb213b908447f56c73d3e7d661b7bd24b625f931d4d94", "createdBy": "sh /home/startup.sh"}, {"findings": {"vulnerabilities": {"total": {"medium": 16, "negligible": 13, "low": 58}, "unresolved": {"medium": 16, "negligible": 13, "low": 58}}, "contents": {"total": {"high": 8}, "unresolved": {"high": 8}}}, "vulnerabilities": "/api/scans/8a7e9d6e-1f03-483c-8132-f532491867a1/layers/sha256:96f6221c53662c418d192b44224034e1a2701d8ae039bc1fbb10cb762e9f7962/vulnerabilities", "contents": "/api/scans/8a7e9d6e-1f03-483c-8132-f532491867a1/layers/sha256:96f6221c53662c418d192b44224034e1a2701d8ae039bc1fbb10cb762e9f7962/contents", "createdBy": "bash", "id": "sha256:96f6221c53662c418d192b44224034e1a2701d8ae039bc1fbb10cb762e9f7962", "createdAt": "2019-09-30T03:27:12Z"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-10-01T04:39:47Z", "id": "sha256:e883c99ef10234568ed3cd6be44773bdb54f99dc1a77506e8c42490122493a89", "createdBy": "/bin/sh -c echo \"cd /opt/vuls/spring-cloud-config/spring-cloud-config-server && ../mvnw spring-boot:run\" >/home/startup.sh"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-09-18T23:21:11Z", "id": "sha256:6276f4f9c29df0a2fc8019e3c9929e6c3391967cb1f610f57a3c5f8044c8c2b6", "createdBy": "/bin/sh -c set -xe \t\t&& echo '#!/bin/sh' > /usr/sbin/policy-rc.d \t&& echo 'exit 101' >> /usr/sbin/policy-rc.d \t&& chmod +x /usr/sbin/policy-rc.d \t\t&& dpkg-divert --local --rename --add /sbin/initctl \t&& cp -a /usr/sbin/policy-rc.d /sbin/initctl \t&& sed -i 's/^exit.*/exit 0/' /sbin/initctl \t\t&& echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \t\t&& echo 'DPkg::Post-Invoke { \"rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true\"; };' > /etc/apt/apt.conf.d/docker-clean \t&& echo 'APT::Update::Post-Invoke { \"rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true\"; };' >> /etc/apt/apt.conf.d/docker-clean \t&& echo 'Dir::Cache::pkgcache \"\"; Dir::Cache::srcpkgcache \"\";' >> /etc/apt/apt.conf.d/docker-clean \t\t&& echo 'Acquire::Languages \"none\";' > /etc/apt/apt.conf.d/docker-no-languages \t\t&& echo 'Acquire::GzipIndexes \"true\"; Acquire::CompressionTypes::Order:: \"gz\";' > /etc/apt/apt.conf.d/docker-gzip-indexes \t\t&& echo 'Apt::AutoRemove::SuggestsImportant \"false\";' > /etc/apt/apt.conf.d/docker-autoremove-suggests"}], "architecture": "amd64", "os": "linux", "digest": "sha256:ee6bef4290bd6248a4799241d9aad8d7ff64a07377d70574299702002119b0a9"}, "id": "8a7e9d6e-1f03-483c-8132-f532491867a1"}, {"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test:1471", "findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-13T05:16:58Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {"high": 1}, "unresolved": {"high": 1}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "1471", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test"}, "href": "/api/scans/d0d3c7c0-e101-47dd-94a5-51c7fa75bc51", "details": {"requested": "2019-12-17T19:18:08Z", "updated": "2019-12-17T19:23:24Z", "started": "2019-12-17T19:18:08Z", "completed": "2019-12-17T19:23:24Z", "labels": {"maintainer": "opsxcq@strm.sh"}, "results": [{"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-09T21:34:51Z", "id": "sha256:39e552a2b1f74a9985244528219d26fc1c27f1447a3d04e64b63bd70a4e68e2c", "createdBy": "/bin/sh -c #(nop) ADD file:4a0b4ab0f637224302bf3f7a7eedc5b75a404bc1188499ef2f98edb7ce44d0ed in / "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {"high": 1}, "unresolved": {"high": 1}}}, "createdAt": "2017-10-30T22:47:40Z", "id": "sha256:24d8e3df4c08f935c5fc57c8c4cf0ccae798cfee7a1dfb6842602d4fa98aad5b", "createdBy": "/bin/sh -c apt-get update && apt-get upgrade -y && DEBIAN_FRONTEND=noninteractive apt-get install -y apache2 && apt-get clean && rm -rf /var/lib/apt/lists/*", "contents": "/api/scans/d0d3c7c0-e101-47dd-94a5-51c7fa75bc51/layers/sha256:24d8e3df4c08f935c5fc57c8c4cf0ccae798cfee7a1dfb6842602d4fa98aad5b/contents"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:47:41Z", "id": "sha256:1aef146d4e401357b8a115682184f2ecc32a3c420d8bae59f79b0a17b87dabe8", "createdBy": "/bin/sh -c #(nop) COPY dir:70a4d821a223ee20a9d79beef4a844624d430e083fc0008cfb50db760b891a97 in /packages "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:47:43Z", "id": "sha256:342a14b47e491865e31932ef8b05eeb8d3e949850c7417e32df672b7c23a26d1", "createdBy": "/bin/sh -c dpkg -i /packages/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:47:44Z", "id": "sha256:8649b463e0f5008a7379743f9d2c53c3d0efe41cc87f88ba75f47429fb749da8", "createdBy": "/bin/sh -c #(nop) COPY file:9e764a7b3433192400897e392af022200417409cb121b6c23fa2f0e5eccca290 in /usr/lib/cgi-bin/ "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:47:45Z", "id": "sha256:475ded304254530e4100c586e760699517d79c4b2170ae8794cb8b9d3dd2dee2", "createdBy": "/bin/sh -c #(nop) COPY file:eb61067b5a8d87429c9531541b3cf0603056926ca7a786c663578c5cd1b650b2 in /var/www "}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:47:45Z", "id": "sha256:d4f4bb77bcb1ed5a569052394769bc63c7f978550b52e54c40c9f91246b1d121", "createdBy": "/bin/sh -c chown www-data:www-data /var/www/index.html"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2017-10-30T22:47:46Z", "id": "sha256:cb1d9d28476d14bf0506b0701bec8627f94ccc6858b8498787cc659d93379d01", "createdBy": "/bin/sh -c #(nop) COPY file:a5df79b3b85403cd60f9c0035c82589fb7d5ff68f0e1a927cb0f5407b76a74a5 in / "}], "architecture": "amd64", "os": "linux", "digest": "sha256:bdac8529e22931c1d99bf4907e12df3c2df0214070635a0b076fb11e66409883"}, "id": "d0d3c7c0-e101-47dd-94a5-51c7fa75bc51"}, {"status": "completed-with-findings", "name": "786395520305.dkr.ecr.us-east-2.amazonaws.com/test:17271", "findings": {"vulnerabilities": {"total": {"high": 7, "medium": 109, "negligible": 33, "low": 118}, "unresolved": {"high": 7, "medium": 109, "negligible": 33, "low": 118}}, "scanners": {"vulnerabilities": {"status": "ok", "updated": "2019-12-13T05:16:58Z"}, "malware": {"status": "ok", "updated": "2019-11-11T18:01:55Z", "versions": {"blacklist": "25100", "icrc": "1548700", "trendX": "111200"}}, "vulnerabilityPatterns": {"status": "ok"}}, "contents": {"total": {}, "unresolved": {}}, "checklists": {"total": {}, "unresolved": {}}}, "source": {"insecureSkipVerify": false, "tag": "17271", "type": "docker", "registry": "786395520305.dkr.ecr.us-east-2.amazonaws.com", "repository": "test"}, "href": "/api/scans/8eae004a-33c6-493d-b8c3-4fb02fe4c4a0", "details": {"requested": "2019-12-17T19:18:08Z", "updated": "2019-12-17T20:15:33Z", "started": "2019-12-17T19:18:08Z", "completed": "2019-12-17T20:15:33Z", "labels": {"maintainer": "cved (cved@protonmail.com)", "author": "Henry Zhao (532256580@qq.com)"}, "results": [{"vulnerabilities": "/api/scans/8eae004a-33c6-493d-b8c3-4fb02fe4c4a0/layers/sha256:c314617ce3f190fe3a442f76abca66ef5f1df02bfe6614af8e244e066ce54a67/vulnerabilities", "findings": {"vulnerabilities": {"total": {"high": 7, "medium": 92, "negligible": 33, "low": 113}, "unresolved": {"high": 7, "medium": 92, "negligible": 33, "low": 113}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-03T23:10:55Z", "id": "sha256:c314617ce3f190fe3a442f76abca66ef5f1df02bfe6614af8e244e066ce54a67", "createdBy": "/bin/sh -c #(nop) ADD file:b64f702c5b33d12426b57d1e25d5c6de0f2331d390d78b6dff16289914ad6098 in /"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-16T02:50:24Z", "id": "sha256:bc652b3177fa6d78aad8ee5c3712e6e1b1221e35235b717ba9ba06fe449808b8", "createdBy": "/bin/sh -c ./jdk-6u45-linux-x64.bin && rm jdk-6u45-linux-x64.bin && mv jdk1.6.0_45 /root/jdk"}, {"vulnerabilities": "/api/scans/8eae004a-33c6-493d-b8c3-4fb02fe4c4a0/layers/sha256:f20398cebefd007bca067f3628e40f3b67196ffcb1dab296af7b472ea150ee3c/vulnerabilities", "findings": {"vulnerabilities": {"total": {"medium": 9, "low": 4}, "unresolved": {"medium": 9, "low": 4}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-16T02:50:00Z", "id": "sha256:f20398cebefd007bca067f3628e40f3b67196ffcb1dab296af7b472ea150ee3c", "createdBy": "/bin/sh -c apt-get update && apt-get install -y wget && apt-get clean"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-16T02:50:00Z", "id": "sha256:9f2224dd77cbc6ec01bf3b0881836e4aee5f51031b3f3e79162648a87c838111", "createdBy": "/bin/sh -c wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=0B-NEimEr29WddlFEbmhqTUVOZm8' -O gdown.pl"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-16T04:23:45Z", "id": "sha256:fc6380348c4873acf9657e5102d974b4f405b4fcfbab6ac165939cf592466a07", "createdBy": "/bin/sh -c perl gdown.pl 'https://docs.google.com/uc?export=download&id=0B-NEimEr29WdbURhaE16NElXbjA' 'wls1036_generic.jar'"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-16T02:50:05Z", "id": "sha256:d5d8920e4aed3e61b7fbecf374b75a50ee722b5fc57db6c29e0c634fa6490713", "createdBy": "/bin/sh -c perl gdown.pl 'https://docs.google.com/uc?export=download&id=0B-NEimEr29WddXo1X1hma0pTTXM' 'jdk-6u45-linux-x64.bin'"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-16T04:23:52Z", "id": "sha256:27a3ad27c11cea5a9710e1aeb81bfc9dce4efff1df1ea0ab261ccc893d331710", "createdBy": "/bin/sh -c wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=0B-NEimEr29WdRXNoMndCMUllMGs' -O wls-silent.xml"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-16T02:50:06Z", "id": "sha256:b6183c9977f38c4c20ee0edf8a12958bac7c6a01c3474fb2f95b42236e15f639", "createdBy": "/bin/sh -c mkdir /root/jdk"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-16T02:50:08Z", "id": "sha256:4858d8e4448777001686564112164a8ab338bde2233665d066889e6ae50b178d", "createdBy": "/bin/sh -c chmod +x jdk-6u45-linux-x64.bin"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-16T04:26:47Z", "id": "sha256:647ffbbe9acd371b1654f948c3660cac2dbbea7e2d1a3551ceee715481c3dd33", "createdBy": "/bin/sh -c /root/jdk/jdk1.6.0_45/bin/java -jar wls1036_generic.jar -mode=silent -silent_xml=/wls-silent.xml && \trm /wls1036_generic.jar /wls-silent.xml"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2018-05-28T08:10:27Z", "id": "sha256:16c66ad361969591de9724e7845927f1d7056c66c7e9cd3a00373f7f3f9d2bf2", "createdBy": "/bin/sh -c wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=0B-NEimEr29WdQThnYjVnRmUwd2c' -O create-wls-domain.py"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2018-05-28T08:10:28Z", "id": "sha256:8af8809bd48088afeb8d9147f3a170985db69d0770e5333b2618a49f0d210142", "createdBy": "/bin/sh -c mv create-wls-domain.py /root/Oracle && chmod +x /root/Oracle/create-wls-domain.py"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2018-05-28T08:11:39Z", "id": "sha256:d42fddf5bdeb82985be7f8a75c4f10a4ffa561265be3c7fa88b9bf07d6d18a42", "createdBy": "/bin/sh -c /root/Oracle/Middleware/wlserver_10.3/common/bin/wlst.sh -skipWLSModuleScanning /root/Oracle/create-wls-domain.py"}, {"vulnerabilities": "/api/scans/8eae004a-33c6-493d-b8c3-4fb02fe4c4a0/layers/sha256:cff6a4bfb7751712eb268e9474de9976cf3b2692f6a1abf59fd5639b93b342e2/vulnerabilities", "findings": {"vulnerabilities": {"total": {"medium": 8, "low": 1}, "unresolved": {"medium": 8, "low": 1}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2019-01-11T22:23:33Z", "id": "sha256:cff6a4bfb7751712eb268e9474de9976cf3b2692f6a1abf59fd5639b93b342e2", "createdBy": "|1 DEBIAN_FRONTEND=noninteractive /bin/sh -c apt-get -y update && apt-get -y install python && apt-get autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-03T23:11:04Z", "id": "sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1", "createdBy": "/bin/sh -c #(nop) CMD [\"/bin/bash\"]"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-03T23:11:02Z", "id": "sha256:e97b6d94bca0b869312a237da7fd46d46c5cf93161dffce0a1b25ef34b4e1bb4", "createdBy": "/bin/sh -c rm -rf /var/lib/apt/lists/*"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-03T23:11:03Z", "id": "sha256:e597f798b336e3c87d689997a3df08c1738bd3e934edd198b8890135463199d6", "createdBy": "/bin/sh -c sed -i 's/^#\\s*\\(deb.*universe\\)$/\\1/g' /etc/apt/sources.list"}, {"findings": {"vulnerabilities": {"total": {}, "unresolved": {}}, "contents": {"total": {}, "unresolved": {}}}, "createdAt": "2016-05-03T23:11:00Z", "id": "sha256:2389af727e430c4bfff7861b1be4c2c4f75fb4ca14f380c3b8b92000ec39d4f5", "createdBy": "/bin/sh -c set -xe \t\t&& echo '#!/bin/sh' > /usr/sbin/policy-rc.d \t&& echo 'exit 101' >> /usr/sbin/policy-rc.d \t&& chmod +x /usr/sbin/policy-rc.d \t\t&& dpkg-divert --local --rename --add /sbin/initctl \t&& cp -a /usr/sbin/policy-rc.d /sbin/initctl \t&& sed -i 's/^exit.*/exit 0/' /sbin/initctl \t\t&& echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \t\t&& echo 'DPkg::Post-Invoke { \"rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true\"; };' > /etc/apt/apt.conf.d/docker-clean \t&& echo 'APT::Update::Post-Invoke { \"rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true\"; };' >> /etc/apt/apt.conf.d/docker-clean \t&& echo 'Dir::Cache::pkgcache \"\"; Dir::Cache::srcpkgcache \"\";' >> /etc/apt/apt.conf.d/docker-clean \t\t&& echo 'Acquire::Languages \"none\";' > /etc/apt/apt.conf.d/docker-no-languages \t\t&& echo 'Acquire::GzipIndexes \"true\"; Acquire::CompressionTypes::Order:: \"gz\";' > /etc/apt/apt.conf.d/docker-gzip-indexes"}], "architecture": "amd64", "os": "linux", "digest": "sha256:da8b26b5f9db6a74570aad251104fb6591893dcbdd39448c9032aa8e21fe94ee"}, "id": "8eae004a-33c6-493d-b8c3-4fb02fe4c4a0"}]} \ No newline at end of file