diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..db245172 Binary files /dev/null and b/.DS_Store differ diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..324f29b2 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,21 @@ +# Pull Request + +## Goal + + + +## Changes + + +- +- + +## Testing + + + +## Checklist + +- [ ] PR has a clear and descriptive title +- [ ] Documentation/README updated if needed +- [ ] No secrets or large temporary files included diff --git a/.github/workflows/github-actions-demo.yml b/.github/workflows/github-actions-demo.yml new file mode 100644 index 00000000..a752b434 --- /dev/null +++ b/.github/workflows/github-actions-demo.yml @@ -0,0 +1,49 @@ +name: GitHub Actions Demo +run-name: ${{ github.actor }} is testing out GitHub Actions 🚀 +on: + push: + workflow_dispatch: +jobs: + Explore-GitHub-Actions: + runs-on: ubuntu-latest + steps: + - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" + - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + - name: Check out repository code + uses: actions/checkout@v5 + - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." + - run: echo "🖥️ The workflow is now ready to test your code on the runner." + - name: List files in the repository + run: | + ls ${{ github.workspace }} + - run: echo "🍏 This job's status is ${{ job.status }}." + + System-Info-Collection: + runs-on: ubuntu-latest + steps: + - name: Displaying trigger event + run: | + echo "This workflow was triggered by the ${{ github.event_name }} event." + echo "The event payload is:" + echo "${{ toJson(github.event) }}" + - name: Displaying system information + run: | + echo "This job is running on a ${{ runner.os }} server hosted by GitHub." + echo "The server has the following processors:" + lscpu + echo "The server has the following amount of free memory:" + free -h + echo "The server has the following disk space:" + df -h + + - name: Runtime Environment Information + run: | + echo "username: $(whoami)" + echo "home directory: $(echo $HOME)" + echo "current working directory: $(pwd)" + echo "PATH: $(echo $PATH)" + echo "shell: $SHELL" + echo "env variables: $(printenv)" + + \ No newline at end of file diff --git a/gitops-lab/current-state.txt b/gitops-lab/current-state.txt new file mode 100644 index 00000000..345c3ef0 --- /dev/null +++ b/gitops-lab/current-state.txt @@ -0,0 +1,3 @@ +version: 1.0 +app: myapp +replicas: 3 diff --git a/gitops-lab/desired-state.txt b/gitops-lab/desired-state.txt new file mode 100644 index 00000000..345c3ef0 --- /dev/null +++ b/gitops-lab/desired-state.txt @@ -0,0 +1,3 @@ +version: 1.0 +app: myapp +replicas: 3 diff --git a/gitops-lab/gen.conf b/gitops-lab/gen.conf new file mode 100644 index 00000000..f668d824 --- /dev/null +++ b/gitops-lab/gen.conf @@ -0,0 +1,70 @@ +# zap-baseline rule configuration file +# Change WARN to IGNORE to ignore rule or FAIL to fail if rule matches +# Only the rule identifiers are used - the names are just for info +# You can add your own messages to each rule by appending them after a tab on each line. +10003 WARN (Vulnerable JS Library (Powered by Retire.js)) +10009 WARN (In Page Banner Information Leak) +10010 WARN (Cookie No HttpOnly Flag) +10011 WARN (Cookie Without Secure Flag) +10015 WARN (Re-examine Cache-control Directives) +10017 WARN (Cross-Domain JavaScript Source File Inclusion) +10019 WARN (Content-Type Header Missing) +10020 WARN (Anti-clickjacking Header) +10021 WARN (X-Content-Type-Options Header Missing) +10023 WARN (Information Disclosure - Debug Error Messages) +10024 WARN (Information Disclosure - Sensitive Information in URL) +10025 WARN (Information Disclosure - Sensitive Information in HTTP Referrer Header) +10026 WARN (HTTP Parameter Override) +10027 WARN (Information Disclosure - Suspicious Comments) +10028 WARN (Off-site Redirect) +10029 WARN (Cookie Poisoning) +10030 WARN (User Controllable Charset) +10031 WARN (User Controllable HTML Element Attribute (Potential XSS)) +10032 WARN (Viewstate) +10033 WARN (Directory Browsing) +10034 WARN (Heartbleed OpenSSL Vulnerability (Indicative)) +10035 WARN (Strict-Transport-Security Header) +10036 WARN (HTTP Server Response Header) +10037 WARN (Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s)) +10038 WARN (Content Security Policy (CSP) Header Not Set) +10039 WARN (X-Backend-Server Header Information Leak) +10040 WARN (Secure Pages Include Mixed Content) +10041 WARN (HTTP to HTTPS Insecure Transition in Form Post) +10042 WARN (HTTPS to HTTP Insecure Transition in Form Post) +10043 WARN (User Controllable JavaScript Event (XSS)) +10044 WARN (Big Redirect Detected (Potential Sensitive Information Leak)) +10049 WARN (Content Cacheability) +10050 WARN (Retrieved from Cache) +10052 WARN (X-ChromeLogger-Data (XCOLD) Header Information Leak) +10054 WARN (Cookie without SameSite Attribute) +10055 WARN (CSP) +10056 WARN (X-Debug-Token Information Leak) +10057 WARN (Username Hash Found) +10061 WARN (X-AspNet-Version Response Header) +10062 WARN (PII Disclosure) +10063 WARN (Permissions Policy Header Not Set) +10096 WARN (Timestamp Disclosure) +10097 WARN (Hash Disclosure) +10098 WARN (Cross-Domain Misconfiguration) +10099 WARN (Source Code Disclosure) +10105 WARN (Weak Authentication Method) +10108 WARN (Reverse Tabnabbing) +10109 WARN (Modern Web Application) +10110 WARN (Dangerous JS Functions) +10111 WARN (Authentication Request Identified) +10112 WARN (Session Management Response Identified) +10113 WARN (Verification Request Identified) +10115 WARN (Script Served From Malicious Domain (polyfill)) +10116 WARN (ZAP is Out of Date) +10202 WARN (Absence of Anti-CSRF Tokens) +2 WARN (Private IP Disclosure) +3 WARN (Session ID in URL Rewrite) +50001 WARN (Script Passive Scan Rules) +90001 WARN (Insecure JSF ViewState) +90002 WARN (Java Serialization Object) +90003 WARN (Sub Resource Integrity Attribute Missing) +90004 WARN (Insufficient Site Isolation Against Spectre Vulnerability) +90011 WARN (Charset Mismatch) +90022 WARN (Application Error Disclosure) +90030 WARN (WSDL File Detection) +90033 WARN (Loosely Scoped Cookie) diff --git a/gitops-lab/health.log b/gitops-lab/health.log new file mode 100644 index 00000000..2a871a7d --- /dev/null +++ b/gitops-lab/health.log @@ -0,0 +1,11 @@ +Mon Oct 13 18:02:27 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:03:13 MSK 2025 - ❌ CRITICAL: State mismatch detected! + Desired MD5: a15a1a4f965ecd8f9e23a33a6b543155 + Current MD5: 48168ff3ab5ffc0214e81c7e2ee356f5 +Mon Oct 13 18:05:05 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:20 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:23 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:26 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:29 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:32 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:35 MSK 2025 - ✅ OK: States synchronized diff --git a/gitops-lab/healthcheck.sh b/gitops-lab/healthcheck.sh new file mode 100755 index 00000000..2758f084 --- /dev/null +++ b/gitops-lab/healthcheck.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# healthcheck.sh - Monitor GitOps sync health + +DESIRED_MD5=$(md5sum desired-state.txt | awk '{print $1}') +CURRENT_MD5=$(md5sum current-state.txt | awk '{print $1}') + +if [ "$DESIRED_MD5" != "$CURRENT_MD5" ]; then + echo "$(date) - ❌ CRITICAL: State mismatch detected!" | tee -a health.log + echo " Desired MD5: $DESIRED_MD5" | tee -a health.log + echo " Current MD5: $CURRENT_MD5" | tee -a health.log +else + echo "$(date) - ✅ OK: States synchronized" | tee -a health.log +fi \ No newline at end of file diff --git a/gitops-lab/monitor.sh b/gitops-lab/monitor.sh new file mode 100755 index 00000000..2a2c3930 --- /dev/null +++ b/gitops-lab/monitor.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# monitor.sh - Combined reconciliation and health monitoring + +echo "Starting GitOps monitoring..." +for i in {1..10}; do + echo "\n--- Check #$i ---" + ./healthcheck.sh + ./reconcile.sh + sleep 3 +done \ No newline at end of file diff --git a/gitops-lab/reconcile.sh b/gitops-lab/reconcile.sh new file mode 100755 index 00000000..ed74d119 --- /dev/null +++ b/gitops-lab/reconcile.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# reconcile.sh - GitOps reconciliation loop + +DESIRED=$(cat desired-state.txt) +CURRENT=$(cat current-state.txt) + +if [ "$DESIRED" != "$CURRENT" ]; then + echo "$(date) - ⚠️ DRIFT DETECTED!" + echo "Reconciling current state with desired state..." + cp desired-state.txt current-state.txt + echo "$(date) - ✅ Reconciliation complete" +else + echo "$(date) - ✅ States synchronized" +fi \ No newline at end of file diff --git a/gitops-lab/trivy-results.txt b/gitops-lab/trivy-results.txt new file mode 100644 index 00000000..8f1a06ec --- /dev/null +++ b/gitops-lab/trivy-results.txt @@ -0,0 +1,2458 @@ + +Report Summary + +┌──────────────────────────────────────────────────────────────────────────────────┬──────────┬─────────────────┬─────────┐ +│ Target │ Type │ Vulnerabilities │ Secrets │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ bkimminich/juice-shop (debian 12.11) │ debian │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/build/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/frontend/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@adraffy/ens-normalize/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@babel/helper-string-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@babel/helper-validator-identifier/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@babel/parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@babel/types/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@dabh/diagnostics/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@ethereumjs/rlp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@gar/promisify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@isaacs/cliui/node_modules/ansi-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@isaacs/cliui/node_modules/emoji-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@isaacs/cliui/node_modules/string-width/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@isaacs/cliui/node_modules/strip-ansi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@isaacs/cliui/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@isaacs/fs-minipass/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/core-loader/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/core/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/evaluator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/lang-en-min/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/lang-en/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/language-min/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/language/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/ner/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/neural/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/nlg/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/nlp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/nlu/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/request/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/sentiment/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/similarity/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@nlpjs/slot/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@noble/curves/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@noble/hashes/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@npmcli/agent/node_modules/agent-base/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@npmcli/agent/node_modules/http-proxy-agent/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@npmcli/agent/node_modules/https-proxy-agent/package.js- │ node-pkg │ 0 │ - │ +│ on │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@npmcli/agent/node_modules/lru-cache/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@npmcli/agent/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@npmcli/fs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@npmcli/move-file/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@otplib/core/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@otplib/plugin-crypto/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@otplib/plugin-thirty-two/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@otplib/preset-default/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@otplib/preset-v11/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@pkgjs/parseargs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@scarf/scarf/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@scure/base/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@scure/bip32/node_modules/@noble/curves/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@scure/bip32/node_modules/@noble/hashes/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@scure/bip32/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@scure/bip39/node_modules/@noble/hashes/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@scure/bip39/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@sindresorhus/is/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@swc/helpers/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@tokenizer/token/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@tootallnate/once/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/component-emitter/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/cookie/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/cors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/node/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/strip-bom/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/strip-json-comments/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/triple-beam/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/validator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/@types/ws/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/abbrev/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/abitype/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/abort-controller/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/accepts/node_modules/negotiator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/accepts/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/acorn-walk/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/acorn/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/aes-js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/agent-base/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/agentkeepalive/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/aggregate-error/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ansi-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ansi-styles/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/anymatch/node_modules/normalize-path/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/anymatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/append-field/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/aproba/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archive-type/node_modules/file-type/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archive-type/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archiver-utils/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archiver-utils/node_modules/glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archiver-utils/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archiver-utils/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archiver/node_modules/async/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archiver/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archiver/node_modules/glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archiver/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/archiver/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/are-we-there-yet/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/arg/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/argparse/node_modules/sprintf-js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/argparse/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/arr-diff/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/arr-flatten/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/arr-union/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/array-buffer-byte-length/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/array-each/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/array-flatten/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/array-slice/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/array-unique/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/asap/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/assert-never/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/assign-symbols/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/async/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/at-least-node/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/atob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/available-typed-arrays/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/babel-walk/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/balanced-match/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/base/node_modules/define-property/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/base/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/base64-arraybuffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/base64-js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/base64id/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/base64url/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/batch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/big-integer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/binary-extensions/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/binary/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/bindings/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/bintrees/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/bl/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/bluebird/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/body-parser/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/body-parser/node_modules/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/body-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/bower-config/node_modules/minimist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/bower-config/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/braces/node_modules/extend-shallow/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/braces/node_modules/is-extendable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/braces/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/brotli/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/buffer-alloc-unsafe/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/buffer-alloc/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/buffer-crc32/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/buffer-fill/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/buffer-from/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/buffer-indexof-polyfill/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/buffers/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/busboy/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/byline/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/bytes/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cacache/node_modules/lru-cache/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cacache/node_modules/p-map/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cacache/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cache-base/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cacheable-request/node_modules/get-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cacheable-request/node_modules/json-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cacheable-request/node_modules/keyv/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cacheable-request/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/call-bind-apply-helpers/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/call-bind/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/call-bound/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/camelcase/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/chainsaw/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/chalk/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/character-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/check-dependencies/node_modules/semver/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/check-dependencies/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/check-internet-connected/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/check-types/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/chokidar/node_modules/braces/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/chokidar/node_modules/fill-range/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/chokidar/node_modules/glob-parent/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/chokidar/node_modules/is-number/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/chokidar/node_modules/normalize-path/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/chokidar/node_modules/to-regex-range/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/chokidar/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/chownr/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/clarinet/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/class-utils/node_modules/define-property/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/class-utils/node_modules/is-descriptor/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/class-utils/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/clean-stack/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/clone-response/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/clone/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/code-point-at/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/collection-visit/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/color-convert/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/color-name/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/color-string/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/color-support/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/color/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/colors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/colorspace/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/component-emitter/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/component-type/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/compress-commons/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/compressible/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/compression/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/compression/node_modules/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/compression/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/concat-map/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/concat-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/config/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/console-control-strings/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/constantinople/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/content-disposition/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/content-type/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cookie-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cookie-signature/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cookie/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/copy-descriptor/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/core-util-is/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/crc-32/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/crc/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/crc32-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/create-require/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cross-fetch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cross-fetch/polyfill/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/cross-spawn/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/crypto-js/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/dateformat/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decamelize/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decode-uri-component/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-response/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-tar/node_modules/file-type/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-tar/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-tarbz2/node_modules/file-type/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-tarbz2/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-targz/node_modules/file-type/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-targz/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-unzip/node_modules/file-type/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-unzip/node_modules/get-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-unzip/node_modules/pify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress-unzip/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress/node_modules/make-dir/node_modules/pify/pack- │ node-pkg │ 0 │ - │ +│ age.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress/node_modules/make-dir/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress/node_modules/pify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/decompress/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/deep-equal/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/deep-extend/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/define-data-property/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/define-properties/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/define-property/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/delegates/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/depd/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/destroy/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/detect-file/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/detect-libc/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/dfa/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/doctypes/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/dottie/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/double-ended-queue/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/download/node_modules/file-type/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/download/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/dunder-proto/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/duplexer2/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/duplexer3/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/dynamic-dedupe/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/eastasianwidth/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ee-first/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/eivindfjeldstad-dot/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/emoji-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/enabled/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/encodeurl/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/encoding/node_modules/iconv-lite/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/encoding/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/end-of-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/engine.io-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/engine.io/node_modules/cookie/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/engine.io/node_modules/ws/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/engine.io/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/env-paths/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/err-code/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/errorhandler/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/es-define-property/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/es-errors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/es-get-iterator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/es-object-atoms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/escape-html/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/escape-string-regexp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/escodegen/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/esprima/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/estraverse/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/esutils/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/etag/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ethereum-cryptography/node_modules/@noble/curves/packag- │ node-pkg │ 0 │ - │ +│ e.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ethereum-cryptography/node_modules/@noble/hashes/packag- │ node-pkg │ 0 │ - │ +│ e.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ethereum-cryptography/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ethers/node_modules/@types/node/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ethers/node_modules/undici-types/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ethers/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/event-target-shim/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/events/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/exit/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/expand-brackets/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/expand-brackets/node_modules/define-property/package.js- │ node-pkg │ 0 │ - │ +│ on │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/expand-brackets/node_modules/extend-shallow/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/expand-brackets/node_modules/is-descriptor/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/expand-brackets/node_modules/is-extendable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/expand-brackets/node_modules/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/expand-brackets/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/expand-template/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/expand-tilde/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/exponential-backoff/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express-ipfilter/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express-jwt/node_modules/jsonwebtoken/package.json │ node-pkg │ 3 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express-jwt/node_modules/moment/package.json │ node-pkg │ 2 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express-jwt/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express-rate-limit/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express-robots-txt/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express-security.txt/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express/node_modules/cookie/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express/node_modules/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/express/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ext-list/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ext-name/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/extend-shallow/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/extend/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/extglob/node_modules/define-property/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/extglob/node_modules/extend-shallow/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/extglob/node_modules/is-extendable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/extglob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fast.js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fd-slicer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/feature-policy/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fecha/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/file-js/docconfig/template/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/file-js/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/file-js/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/file-js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/file-stream-rotator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/file-type/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/file-uri-to-path/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/filehound/docconfig/template/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/filehound/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/filehound/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/filename-reserved-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/filenamify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/filesniffer/docconfig/template/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/filesniffer/node_modules/sinon/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/filesniffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fill-range/node_modules/extend-shallow/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fill-range/node_modules/is-extendable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fill-range/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/finale-rest/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/finalhandler/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/finalhandler/node_modules/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/finalhandler/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/findup-sync/node_modules/is-glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/findup-sync/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fined/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/flagged-respawn/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fn.name/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fontkit/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/for-each/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/for-in/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/for-own/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/foreachasync/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/foreground-child/node_modules/signal-exit/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/foreground-child/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/formatio/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/forwarded/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fragment-cache/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fresh/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/from2/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fs-constants/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fs-extra/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fs-minipass/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fs.realpath/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fstream/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fstream/node_modules/glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fstream/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fstream/node_modules/mkdirp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fstream/node_modules/rimraf/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fstream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/function-bind/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/functions-have-names/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/fuzzball/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/gauge/node_modules/ansi-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/gauge/node_modules/is-fullwidth-code-point/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/gauge/node_modules/string-width/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/gauge/node_modules/strip-ansi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/gauge/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/geojson-utils/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/get-caller-file/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/get-intrinsic/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/get-proto/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/get-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/get-value/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/getobject/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/github-from-package/example/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/github-from-package/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/glob/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/global-modules/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/global-prefix/node_modules/ini/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/global-prefix/node_modules/which/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/global-prefix/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/gopd/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/got/node_modules/get-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/got/node_modules/pify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/got/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/graceful-fs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-contrib-compress/node_modules/ansi-regex/package.- │ node-pkg │ 0 │ - │ +│ json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-contrib-compress/node_modules/ansi-styles/package- │ node-pkg │ 0 │ - │ +│ .json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-contrib-compress/node_modules/chalk/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-contrib-compress/node_modules/pretty-bytes/packag- │ node-pkg │ 0 │ - │ +│ e.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-contrib-compress/node_modules/strip-ansi/package.- │ node-pkg │ 0 │ - │ +│ json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-contrib-compress/node_modules/supports-color/pack- │ node-pkg │ 0 │ - │ +│ age.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-contrib-compress/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-known-options/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-legacy-log-utils/node_modules/ansi-styles/package- │ node-pkg │ 0 │ - │ +│ .json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-legacy-log-utils/node_modules/chalk/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-legacy-log-utils/node_modules/color-convert/packa- │ node-pkg │ 0 │ - │ +│ ge.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-legacy-log-utils/node_modules/color-name/package.- │ node-pkg │ 0 │ - │ +│ json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-legacy-log-utils/node_modules/has-flag/package.js- │ node-pkg │ 0 │ - │ +│ on │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-legacy-log-utils/node_modules/supports-color/pack- │ node-pkg │ 0 │ - │ +│ age.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-legacy-log-utils/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-legacy-log/node_modules/colors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-legacy-log/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-legacy-util/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt-replace-json/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/braces/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/eventemitter2/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/fill-range/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/findup-sync/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/grunt-cli/node_modules/nopt/package.- │ node-pkg │ 0 │ - │ +│ json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/grunt-cli/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/iconv-lite/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/is-number/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/micromatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/to-regex-range/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/node_modules/v8flags/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/grunt/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/handlebars/node_modules/wordwrap/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/handlebars/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-ansi/node_modules/ansi-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-ansi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-bigints/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-flag/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-property-descriptors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-symbol-support-x/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-symbols/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-to-string-tag-x/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-tostringtag/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-unicode/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-value/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-values/node_modules/kind-of/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/has-values/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/hashids/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/hasown/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/hbs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/heap/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/helmet/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/hoister/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/homedir-polyfill/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/hooker/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/html-entities/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/http-cache-semantics/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/http-errors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/http-proxy-agent/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/https-proxy-agent/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/humanize-ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/i18n/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/iconv-lite/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ieee754/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ignore-walk/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ignore-walk/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ignore-walk/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/iltorb/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/imurmurhash/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/indent-string/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/infer-owner/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/inflection/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/inflight/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/inherits/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/internal-slot/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/interpret/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/into-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/invariant/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ip-address/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ip/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ip6/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ipaddr.js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-absolute/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-accessor-descriptor/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-arguments/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-array-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-bigint/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-binary-path/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-boolean-object/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-callable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-core-module/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-data-descriptor/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-date-object/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-descriptor/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-expression/node_modules/acorn/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-expression/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-extendable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-extglob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-fullwidth-code-point/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-generator-function/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-lambda/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-map/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-natural-number/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-number-like/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-number-object/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-number/node_modules/kind-of/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-number/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-object/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-plain-obj/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-plain-object/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-promise/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-relative/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-retry-allowed/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-set/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-shared-array-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-string/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-symbol/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-typed-array/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-unc-path/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-weakmap/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-weakset/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/is-windows/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/isarray/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/isexe/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/isobject/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/isomorphic-ws/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/isurl/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/jackspeak/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/js-stringify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/js-tokens/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/js-yaml/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/json5/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/jsonfile/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/jsonwebtoken/package.json │ node-pkg │ 3 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/jssha/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/jstransformer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/juicy-chat-bot/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/jwa/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/jws/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/kind-of/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/kuler/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/lazystream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/libxmljs2/node_modules/decompress-response/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/libxmljs2/node_modules/detect-libc/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/libxmljs2/node_modules/mimic-response/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/libxmljs2/node_modules/napi-build-utils/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/libxmljs2/node_modules/node-abi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/libxmljs2/node_modules/prebuild-install/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/libxmljs2/node_modules/simple-get/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/libxmljs2/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/liftup/node_modules/braces/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/liftup/node_modules/fill-range/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/liftup/node_modules/findup-sync/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/liftup/node_modules/is-number/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/liftup/node_modules/micromatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/liftup/node_modules/to-regex-range/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/liftup/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/linebreak/node_modules/base64-js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/linebreak/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/listenercount/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/lodash.camelcase/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/lodash.isfinite/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/lodash.set/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/lodash/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/logform/node_modules/@colors/colors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/logform/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/lolex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/loose-envify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/lowercase-keys/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/make-dir/node_modules/semver/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/make-dir/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/make-error/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/make-fetch-happen/node_modules/http-cache-semantics/pac- │ node-pkg │ 0 │ - │ +│ kage.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/make-fetch-happen/node_modules/negotiator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/make-fetch-happen/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/make-iterator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/make-plural/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/map-cache/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/map-visit/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/marsdb/node_modules/eventemitter3/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/marsdb/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/math-interval-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/math-intrinsics/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/media-typer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/median/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/merge-descriptors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/messageformat-formatters/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/messageformat-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/messageformat/node_modules/make-plural/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/messageformat/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/methods/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/micromatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/mime-db/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/mime-types/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/mime/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/mimic-response/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minimist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-collect/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-fetch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-flush/node_modules/minipass/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-flush/node_modules/yallist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-flush/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-pipeline/node_modules/minipass/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-pipeline/node_modules/yallist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-pipeline/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-sized/node_modules/minipass/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-sized/node_modules/yallist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass-sized/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minipass/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/minizlib/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/mixin-deep/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/mkdirp-classic/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/mkdirp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/moment-timezone/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/moment/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/morgan/node_modules/basic-auth/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/morgan/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/morgan/node_modules/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/morgan/node_modules/on-finished/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/morgan/node_modules/safe-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/morgan/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/mout/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/multer/node_modules/mkdirp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/multer/package.json │ node-pkg │ 4 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/mustache/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/nan/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/nan/tools/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/nanomatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/napi-build-utils/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/needle/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/needle/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/negotiator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/neo-async/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-abi/node_modules/semver/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-abi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-addon-api/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-fetch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-gyp/node_modules/abbrev/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-gyp/node_modules/isexe/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-gyp/node_modules/nopt/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-gyp/node_modules/which/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-gyp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/lib/util/nw-pre-gyp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/chownr/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/fs-minipass/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/minipass/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/minizlib/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/mkdirp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/nopt/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/rimraf/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/semver/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/node_modules/tar/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/node-pre-gyp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/noop-logger/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/nopt/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/normalize-path/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/normalize-url/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/notevil/node_modules/esprima/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/notevil/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/npm-bundled/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/npm-normalize-package-bin/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/npm-packlist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/npmlog/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/number-is-nan/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object-assign/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object-copy/node_modules/define-property/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object-copy/node_modules/is-descriptor/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object-copy/node_modules/kind-of/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object-copy/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object-inspect/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object-is/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object-keys/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object-visit/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object.assign/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object.defaults/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object.map/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/object.pick/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/on-finished/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/on-headers/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/once/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/one-time/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/opentype.js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/os-homedir/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/os-tmpdir/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/osenv/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/otplib/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/p-cancelable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/p-event/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/p-finally/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/p-is-promise/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/p-map/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/p-timeout/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/p-try/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/package-json-from-dist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pako/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/parse-filepath/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/parse-passwd/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/parseurl/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pascalcase/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/path-exists/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/path-is-absolute/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/path-key/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/path-parse/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/path-root-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/path-root/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/path-scurry/node_modules/lru-cache/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/path-scurry/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/path-to-regexp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pdfkit/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/peek-readable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pend/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pg-connection-string/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/picomatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pinkie-promise/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pinkie/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/png-js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/portscanner/node_modules/async/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/portscanner/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/posix-character-classes/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/possible-typed-array-names/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/prebuild-install/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/prepend-http/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/proc-log/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/process-nextick-args/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/process/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/prom-client/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/promise-inflight/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/promise-retry/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/promise/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/proper-lockfile/node_modules/err-code/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/proper-lockfile/node_modules/retry/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/proper-lockfile/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/proxy-addr/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-attrs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-code-gen/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-error/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-filters/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-lexer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-linker/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-load/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-runtime/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-strip-comments/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug-walk/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/pump/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/qs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/query-string/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/range-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/range_check/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/raw-body/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/rc/node_modules/ini/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/rc/node_modules/strip-json-comments/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/rc/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/readable-stream/node_modules/isarray/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/readable-stream/node_modules/safe-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/readable-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/readable-web-to-node-stream/node_modules/buffer/package- │ node-pkg │ 0 │ - │ +│ .json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/readable-web-to-node-stream/node_modules/readable-strea- │ node-pkg │ 0 │ - │ +│ m/package.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/readable-web-to-node-stream/node_modules/string_decoder- │ node-pkg │ 0 │ - │ +│ /package.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/readable-web-to-node-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/readdirp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/rechoir/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/regex-not/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/regexp.prototype.flags/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/remove-trailing-separator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/repeat-element/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/repeat-string/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/ansi-styles/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/cliui/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/color-convert/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/color-name/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/find-up/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/locate-path/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/p-limit/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/p-locate/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/wrap-ansi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/yargs-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/node_modules/yargs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/replace/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/require-directory/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/require-main-filename/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/resolve-dir/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/resolve-url/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/resolve/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/resolve/test/resolver/multirepo/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/resolve/test/resolver/multirepo/packages/package-a/pack- │ node-pkg │ 0 │ - │ +│ age.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/resolve/test/resolver/multirepo/packages/package-b/pack- │ node-pkg │ 0 │ - │ +│ age.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/responselike/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/restructure/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ret/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/retry-as-promised/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/retry/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/rimraf/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/rimraf/node_modules/glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/rimraf/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/rimraf/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/safe-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/safe-regex-test/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/safe-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/safe-stable-stringify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/safer-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/samsam/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-filename/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-html/node_modules/domelementtype/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-html/node_modules/domhandler/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-html/node_modules/domutils/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-html/node_modules/he/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-html/node_modules/htmlparser2/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-html/node_modules/isarray/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-html/node_modules/lodash/package.json │ node-pkg │ 3 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-html/node_modules/readable-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-html/node_modules/string_decoder/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sanitize-html/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sax/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/seek-bzip/node_modules/commander/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/seek-bzip/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/semver/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/send/node_modules/debug/node_modules/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/send/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/send/node_modules/encodeurl/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/send/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sequelize-pool/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sequelize/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/serve-index/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/serve-index/node_modules/depd/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/serve-index/node_modules/http-errors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/serve-index/node_modules/inherits/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/serve-index/node_modules/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/serve-index/node_modules/setprototypeof/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/serve-index/node_modules/statuses/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/serve-index/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/serve-static/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/set-blocking/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/set-function-length/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/set-function-name/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/set-value/node_modules/extend-shallow/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/set-value/node_modules/is-extendable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/set-value/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/setimmediate/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/setprototypeof/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/shebang-command/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/shebang-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/side-channel-list/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/side-channel-map/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/side-channel-weakmap/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/side-channel/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/signal-exit/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/simple-concat/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/simple-get/node_modules/decompress-response/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/simple-get/node_modules/mimic-response/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/simple-get/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/simple-swizzle/node_modules/is-arrayish/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/simple-swizzle/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/smart-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon-node/node_modules/define-property/package.js- │ node-pkg │ 0 │ - │ +│ on │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon-node/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon-util/node_modules/kind-of/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon-util/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon/node_modules/debug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon/node_modules/define-property/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon/node_modules/extend-shallow/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon/node_modules/is-descriptor/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon/node_modules/is-extendable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon/node_modules/ms/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon/node_modules/source-map/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/snapdragon/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/socket.io-adapter/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/socket.io-parser/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/socket.io/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/socks-proxy-agent/node_modules/agent-base/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/socks-proxy-agent/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/socks/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sort-keys-length/node_modules/sort-keys/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sort-keys-length/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sort-keys/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/source-map-resolve/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/source-map-support/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/source-map-url/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/source-map/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/split-string/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sprintf-js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/@npmcli/fs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/@tootallnate/once/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/are-we-there-yet/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/cacache/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/chownr/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/decompress-response/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/detect-libc/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/fs-minipass/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/gauge/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/http-cache-semantics/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/http-proxy-agent/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/lru-cache/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/make-fetch-happen/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/mimic-response/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/minipass-collect/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/minipass-fetch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/minipass/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/minizlib/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/napi-build-utils/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/node-abi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/node-gyp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/nopt/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/npmlog/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/prebuild-install/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/readable-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/simple-get/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/socks-proxy-agent/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/ssri/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/tar/node_modules/minipass/package.- │ node-pkg │ 0 │ - │ +│ json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/tar/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/unique-filename/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/unique-slug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/wide-align/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/node_modules/yallist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/sqlite3/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ssri/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/stack-trace/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/static-extend/node_modules/define-property/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/static-extend/node_modules/is-descriptor/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/static-extend/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/statuses/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/stop-iteration-iterator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/stream-buffers/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/streamsearch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/strict-uri-encode/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/string-width-cjs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/string-width/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/string.fromcodepoint/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/string.prototype.codepointat/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/string_decoder/node_modules/safe-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/string_decoder/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/strip-ansi-cjs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/strip-ansi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/strip-dirs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/strip-outer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/strtok3/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/supports-color/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/supports-preserve-symlinks-flag/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/svg-captcha/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/swagger-ui-dist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/swagger-ui-express/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tar-fs/node_modules/bl/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tar-fs/node_modules/chownr/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tar-fs/node_modules/readable-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tar-fs/node_modules/tar-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tar-fs/package.json │ node-pkg │ 1 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tar-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tar/node_modules/mkdirp/dist/cjs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tar/node_modules/mkdirp/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tar/node_modules/yallist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tar/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tdigest/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/text-hex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/thirty-two/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/through/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/timed-out/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tiny-inflate/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tinyglobby/node_modules/fdir/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tinyglobby/node_modules/picomatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tinyglobby/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/to-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/to-object-path/node_modules/kind-of/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/to-object-path/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/to-regex-range/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/to-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/toidentifier/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/token-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/token-types/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/toposort-class/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tr46/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/traverse/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tree-kill/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/trim-repeated/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/triple-beam/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/truncate-utf8-bytes/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ts-node-dev/node_modules/brace-expansion/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ts-node-dev/node_modules/diff/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ts-node-dev/node_modules/glob/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ts-node-dev/node_modules/minimatch/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ts-node-dev/node_modules/rimraf/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ts-node-dev/node_modules/ts-node/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ts-node-dev/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tsconfig/node_modules/strip-bom/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tsconfig/node_modules/strip-json-comments/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tsconfig/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tslib/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/tunnel-agent/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/type-is/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/typecast/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/typed-array-buffer/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/typedarray/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/typescript/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/uglify-js/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unbzip2-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unc-path-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/underscore.string/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/undici-types/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unicode-properties/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unicode-trie/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/union-value/node_modules/is-extendable/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/union-value/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unique-filename/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unique-slug/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unit-compare/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/universalify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unpipe/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unset-value/node_modules/has-value/node_modules/isobjec- │ node-pkg │ 0 │ - │ +│ t/package.json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unset-value/node_modules/has-value/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unset-value/node_modules/has-values/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unset-value/node_modules/isarray/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unset-value/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/untildify/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unzipper/node_modules/bluebird/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/unzipper/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/urix/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/url-parse-lax/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/url-to-options/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/use/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/utf8-byte-length/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/util-deprecate/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/util/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/utils-merge/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/uuid/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/validate/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/validator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/vary/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/vm2/package.json │ node-pkg │ 3 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/void-elements/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/walk/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/walkdir/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/walkdir/test/comparison/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-core/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-errors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-eth-abi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-eth-accounts/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-eth-contract/node_modules/@ethereumjs/rlp/package.- │ node-pkg │ 0 │ - │ +│ json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-eth-contract/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-eth-ens/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-eth-iban/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-eth-personal/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-eth/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-net/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-providers-http/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-providers-ipc/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-providers-ws/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-rpc-methods/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-rpc-providers/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-types/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-utils/node_modules/eventemitter3/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-utils/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3-validator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/web3/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/webidl-conversions/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/whatwg-url/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/which-boxed-primitive/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/which-collection/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/which-module/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/which-pm-runs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/which-typed-array/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/which/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wide-align/node_modules/ansi-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wide-align/node_modules/is-fullwidth-code-point/package- │ node-pkg │ 0 │ - │ +│ .json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wide-align/node_modules/string-width/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wide-align/node_modules/strip-ansi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wide-align/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/winston-transport/node_modules/readable-stream/package.- │ node-pkg │ 0 │ - │ +│ json │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/winston-transport/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/winston/node_modules/@colors/colors/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/winston/node_modules/is-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/winston/node_modules/readable-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/winston/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/with/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wkx/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wordwrap/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrap-ansi-cjs/node_modules/ansi-styles/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrap-ansi-cjs/node_modules/color-convert/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrap-ansi-cjs/node_modules/color-name/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrap-ansi-cjs/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrap-ansi/node_modules/ansi-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrap-ansi/node_modules/ansi-styles/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrap-ansi/node_modules/emoji-regex/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrap-ansi/node_modules/string-width/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrap-ansi/node_modules/strip-ansi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrap-ansi/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/wrappy/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/ws/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/xtend/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/y18n/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/yallist/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/yaml-schema-validator/node_modules/commander/package.js- │ node-pkg │ 0 │ - │ +│ on │ │ │ │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/yaml-schema-validator/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/yauzl/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/yn/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/z85/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/zip-stream/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/node_modules/zod/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ juice-shop/package.json │ node-pkg │ 0 │ - │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ /juice-shop/build/lib/insecurity.js │ text │ - │ 1 │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ /juice-shop/frontend/src/app/app.guard.spec.ts │ text │ - │ 0 │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ /juice-shop/frontend/src/app/last-login-ip/last-login-ip.component.spec.ts │ text │ - │ 0 │ +├──────────────────────────────────────────────────────────────────────────────────┼──────────┼─────────────────┼─────────┤ +│ /juice-shop/lib/insecurity.ts │ text │ - │ 1 │ +└──────────────────────────────────────────────────────────────────────────────────┴──────────┴─────────────────┴─────────┘ +Legend: +- '-': Not scanned +- '0': Clean (no security findings detected) + + +bkimminich/juice-shop (debian 12.11) +==================================== +Total: 1 (HIGH: 1, CRITICAL: 0) + +┌─────────┬───────────────┬──────────┬────────┬───────────────────┬─────────────────┬───────────────────────────────────────────────────────────┐ +│ Library │ Vulnerability │ Severity │ Status │ Installed Version │ Fixed Version │ Title │ +├─────────┼───────────────┼──────────┼────────┼───────────────────┼─────────────────┼───────────────────────────────────────────────────────────┤ +│ libc6 │ CVE-2025-4802 │ HIGH │ fixed │ 2.36-9+deb12u10 │ 2.36-9+deb12u11 │ glibc: static setuid binary dlopen may incorrectly search │ +│ │ │ │ │ │ │ LD_LIBRARY_PATH │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2025-4802 │ +└─────────┴───────────────┴──────────┴────────┴───────────────────┴─────────────────┴───────────────────────────────────────────────────────────┘ + +Node.js (node-pkg) +================== +Total: 30 (HIGH: 22, CRITICAL: 8) + +┌─────────────────────────────────────┬─────────────────────┬──────────┬──────────┬───────────────────┬──────────────────────────────┬──────────────────────────────────────────────────────────────┐ +│ Library │ Vulnerability │ Severity │ Status │ Installed Version │ Fixed Version │ Title │ +├─────────────────────────────────────┼─────────────────────┼──────────┼──────────┼───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ base64url (package.json) │ NSWG-ECO-428 │ HIGH │ fixed │ 0.0.6 │ >=3.0.0 │ Out-of-bounds Read │ +│ │ │ │ │ │ │ https://hackerone.com/reports/321687 │ +├─────────────────────────────────────┼─────────────────────┤ │ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ braces (package.json) │ CVE-2024-4068 │ │ │ 2.3.2 │ 3.0.3 │ braces: fails to limit the number of characters it can │ +│ │ │ │ │ │ │ handle │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2024-4068 │ +├─────────────────────────────────────┼─────────────────────┼──────────┤ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ crypto-js (package.json) │ CVE-2023-46233 │ CRITICAL │ │ 3.3.0 │ 4.2.0 │ crypto-js: PBKDF2 1,000 times weaker than specified in 1993 │ +│ │ │ │ │ │ │ and 1.3M times... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2023-46233 │ +├─────────────────────────────────────┼─────────────────────┼──────────┤ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ express-jwt (package.json) │ CVE-2020-15084 │ HIGH │ │ 0.1.3 │ 6.0.0 │ Authorization bypass in express-jwt │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-15084 │ +├─────────────────────────────────────┼─────────────────────┤ │ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ http-cache-semantics (package.json) │ CVE-2022-25881 │ │ │ 3.8.1 │ 4.1.1 │ http-cache-semantics: Regular Expression Denial of Service │ +│ │ │ │ │ │ │ (ReDoS) vulnerability │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-25881 │ +├─────────────────────────────────────┼─────────────────────┤ ├──────────┼───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ ip (package.json) │ CVE-2024-29415 │ │ affected │ 2.0.1 │ │ node-ip: Incomplete fix for CVE-2023-42282 │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2024-29415 │ +├─────────────────────────────────────┼─────────────────────┼──────────┼──────────┼───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ jsonwebtoken (package.json) │ CVE-2015-9235 │ CRITICAL │ fixed │ 0.1.0 │ 4.2.2 │ nodejs-jsonwebtoken: verification step bypass with an │ +│ │ │ │ │ │ │ altered token │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2015-9235 │ +│ ├─────────────────────┼──────────┤ │ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2022-23539 │ HIGH │ │ │ 9.0.0 │ jsonwebtoken: Unrestricted key type could lead to legacy │ +│ │ │ │ │ │ │ keys usagen │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-23539 │ +│ ├─────────────────────┤ │ │ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ NSWG-ECO-17 │ │ │ │ >=4.2.2 │ Verification Bypass │ +│ ├─────────────────────┼──────────┤ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2015-9235 │ CRITICAL │ │ 0.4.0 │ 4.2.2 │ nodejs-jsonwebtoken: verification step bypass with an │ +│ │ │ │ │ │ │ altered token │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2015-9235 │ +│ ├─────────────────────┼──────────┤ │ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2022-23539 │ HIGH │ │ │ 9.0.0 │ jsonwebtoken: Unrestricted key type could lead to legacy │ +│ │ │ │ │ │ │ keys usagen │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-23539 │ +│ ├─────────────────────┤ │ │ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ NSWG-ECO-17 │ │ │ │ >=4.2.2 │ Verification Bypass │ +├─────────────────────────────────────┼─────────────────────┤ │ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ jws (package.json) │ CVE-2016-1000223 │ │ │ 0.2.6 │ >=3.0.0 │ Forgeable Public/Private Tokens │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2016-1000223 │ +├─────────────────────────────────────┼─────────────────────┼──────────┤ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ lodash (package.json) │ CVE-2019-10744 │ CRITICAL │ │ 2.4.2 │ 4.17.12 │ nodejs-lodash: prototype pollution in defaultsDeep function │ +│ │ │ │ │ │ │ leading to modifying properties │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2019-10744 │ +│ ├─────────────────────┼──────────┤ │ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2018-16487 │ HIGH │ │ │ >=4.17.11 │ lodash: Prototype pollution in utilities function │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2018-16487 │ +│ ├─────────────────────┤ │ │ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2021-23337 │ │ │ │ 4.17.21 │ nodejs-lodash: command injection via template │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2021-23337 │ +├─────────────────────────────────────┼─────────────────────┤ ├──────────┼───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ lodash.set (package.json) │ CVE-2020-8203 │ │ affected │ 4.3.2 │ │ nodejs-lodash: prototype pollution in zipObjectDeep function │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2020-8203 │ +├─────────────────────────────────────┼─────────────────────┼──────────┤ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ marsdb (package.json) │ GHSA-5mrr-rgp6-x4gr │ CRITICAL │ │ 0.6.11 │ │ Command Injection in marsdb │ +│ │ │ │ │ │ │ https://github.com/advisories/GHSA-5mrr-rgp6-x4gr │ +├─────────────────────────────────────┼─────────────────────┼──────────┼──────────┼───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ moment (package.json) │ CVE-2017-18214 │ HIGH │ fixed │ 2.0.0 │ 2.19.3 │ nodejs-moment: Regular expression denial of service │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2017-18214 │ +│ ├─────────────────────┤ │ │ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2022-24785 │ │ │ │ 2.29.2 │ Moment.js: Path traversal in moment.locale │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-24785 │ +├─────────────────────────────────────┼─────────────────────┤ │ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ multer (package.json) │ CVE-2025-47935 │ │ │ 1.4.5-lts.2 │ 2.0.0 │ Multer vulnerable to Denial of Service via memory leaks from │ +│ │ │ │ │ │ │ unclosed streams... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2025-47935 │ +│ ├─────────────────────┤ │ │ │ ├──────────────────────────────────────────────────────────────┤ +│ │ CVE-2025-47944 │ │ │ │ │ Multer vulnerable to Denial of Service from maliciously │ +│ │ │ │ │ │ │ crafted requests │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2025-47944 │ +│ ├─────────────────────┤ │ │ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2025-48997 │ │ │ │ 2.0.1 │ multer: Multer vulnerable to Denial of Service via unhandled │ +│ │ │ │ │ │ │ exception │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2025-48997 │ +│ ├─────────────────────┤ │ │ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2025-7338 │ │ │ │ 2.0.2 │ multer: Multer Denial of Service │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2025-7338 │ +├─────────────────────────────────────┼─────────────────────┤ │ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ sanitize-html (package.json) │ CVE-2022-25887 │ │ │ 1.4.2 │ 2.7.1 │ sanitize-html: insecure global regular expression │ +│ │ │ │ │ │ │ replacement logic may lead to ReDoS │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2022-25887 │ +├─────────────────────────────────────┼─────────────────────┤ │ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ tar-fs (package.json) │ CVE-2025-59343 │ │ │ 2.1.3 │ 3.1.1, 2.1.4, 1.16.6 │ tar-fs: tar-fs symlink validation bypass │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2025-59343 │ +├─────────────────────────────────────┼─────────────────────┼──────────┤ ├───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ vm2 (package.json) │ CVE-2023-32314 │ CRITICAL │ │ 3.9.17 │ 3.9.18 │ vm2: Sandbox Escape │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2023-32314 │ +│ ├─────────────────────┤ ├──────────┤ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2023-37466 │ │ affected │ │ │ vm2: Promise handler sanitization can be bypassed allowing │ +│ │ │ │ │ │ │ attackers to escape the... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2023-37466 │ +│ ├─────────────────────┤ │ │ ├──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ │ CVE-2023-37903 │ │ │ │ │ vm2: custom inspect function allows attackers to escape the │ +│ │ │ │ │ │ │ sandbox and run... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2023-37903 │ +├─────────────────────────────────────┼─────────────────────┼──────────┼──────────┼───────────────────┼──────────────────────────────┼──────────────────────────────────────────────────────────────┤ +│ ws (package.json) │ CVE-2024-37890 │ HIGH │ fixed │ 7.4.6 │ 5.2.4, 6.2.3, 7.5.10, 8.17.1 │ nodejs-ws: denial of service when handling a request with │ +│ │ │ │ │ │ │ many HTTP headers... │ +│ │ │ │ │ │ │ https://avd.aquasec.com/nvd/cve-2024-37890 │ +└─────────────────────────────────────┴─────────────────────┴──────────┴──────────┴───────────────────┴──────────────────────────────┴──────────────────────────────────────────────────────────────┘ + +/juice-shop/build/lib/insecurity.js (secrets) +============================================= +Total: 1 (HIGH: 1, CRITICAL: 0) + +HIGH: AsymmetricPrivateKey (private-key) +════════════════════════════════════════ +Asymmetric Private Key +──────────────────────────────────────── + /juice-shop/build/lib/insecurity.js:47 (offset: 2835 bytes) (added by 'COPY --chown=65532:0 /juice-shop . # bui') +──────────────────────────────────────── + 45 const z85 = __importStar(require("z85")); + 46 exports.publicKey = node_fs_1.default ? node_fs_1.default.readFileSync('encryptionkeys/jwt.pub', 'ut + 47 [ ----BEGIN RSA PRIVATE KEY-----****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************-----END RSA PRIVATE + 48 const hash = (data) => node_crypto_1.default.createHash('md5').update(data).digest('hex'); +──────────────────────────────────────── + + + +/juice-shop/lib/insecurity.ts (secrets) +======================================= +Total: 1 (HIGH: 1, CRITICAL: 0) + +HIGH: AsymmetricPrivateKey (private-key) +════════════════════════════════════════ +Asymmetric Private Key +──────────────────────────────────────── + /juice-shop/lib/insecurity.ts:23 (offset: 860 bytes) (added by 'COPY --chown=65532:0 /juice-shop . # bui') +──────────────────────────────────────── + 21 + 22 export const publicKey = fs ? fs.readFileSync('encryptionkeys/jwt.pub', 'utf8') : 'placeholder-publi + 23 [ ----BEGIN RSA PRIVATE KEY-----****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************-----END RSA PRIVATE + 24 +──────────────────────────────────────── + + diff --git a/gitops-lab/zap-report.html b/gitops-lab/zap-report.html new file mode 100644 index 00000000..13447339 --- /dev/null +++ b/gitops-lab/zap-report.html @@ -0,0 +1,4380 @@ + + + + +ZAP Scanning Report + + + +

+ + + ZAP Scanning Report +

+

+ + +

+ + Site: http://host.docker.internal:3000 + +

+ +

+ Generated on Mon, 27 Oct 2025 14:44:54 +

+ +

+ ZAP Version: 2.16.1 +

+ +

+ ZAP by Checkmarx +

+ + +

Summary of Alerts

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Risk LevelNumber of Alerts
+
High
+
+
0
+
+
Medium
+
+
2
+
+
Low
+
+
5
+
+
Informational
+
+
5
+
+
False Positives:
+
+
0
+
+
+ + + + +

Summary of Sequences

+

For each step: result (Pass/Fail) - risk (of highest alert(s) for the step, if any).

+ + + + + + +

Alerts

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameRisk LevelNumber of Instances
Content Security Policy (CSP) Header Not SetMedium12
Cross-Domain MisconfigurationMedium11
Cross-Domain JavaScript Source File InclusionLow12
Dangerous JS FunctionsLow2
Deprecated Feature Policy Header SetLow12
Insufficient Site Isolation Against Spectre VulnerabilityLow12
Timestamp Disclosure - UnixLow20
Information Disclosure - Suspicious CommentsInformational2
Modern Web ApplicationInformational11
Non-Storable ContentInformational2
Storable and Cacheable ContentInformational1
Storable but Non-Cacheable ContentInformational9
+
+ + + +

Alert Detail

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Medium
Content Security Policy (CSP) Header Not Set
Description +
Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, including Cross Site Scripting (XSS) and data injection attacks. These attacks are used for everything from data theft to site defacement or distribution of malware. CSP provides a set of standard HTTP headers that allow website owners to declare approved sources of content that browsers should be allowed to load on that page — covered types are JavaScript, CSS, HTML frames, fonts, images and embeddable objects such as Java applets, ActiveX, audio and video files.
+ +
URLhttp://host.docker.internal:3000
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/ftp
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/ftp/coupons_2013.md.bak
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/ftp/eastere.gg
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/ftp/encrypt.pyc
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/ftp/package-lock.json.bak
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/ftp/package.json.bak
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/ftp/suspicious_errors.yml
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/juice-shop/build/routes/fileServer.js:59:18
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/index.js:328:13
MethodGET
Parameter
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
Parameter
Attack
Evidence
Other Info
Instances12
Solution +
Ensure that your web server, application server, load balancer, etc. is configured to set the Content-Security-Policy header.
+ +
Reference + https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP +
+ + https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html +
+ + https://www.w3.org/TR/CSP/ +
+ + https://w3c.github.io/webappsec-csp/ +
+ + https://web.dev/articles/csp +
+ + https://caniuse.com/#feat=contentsecuritypolicy +
+ + https://content-security-policy.com/ + +
CWE Id693
WASC Id15
Plugin Id10038
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Medium
Cross-Domain Misconfiguration
Description +
Web browser data loading may be possible, due to a Cross Origin Resource Sharing (CORS) misconfiguration on the web server.
+ +
URLhttp://host.docker.internal:3000
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
URLhttp://host.docker.internal:3000/
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
URLhttp://host.docker.internal:3000/assets/public/favicon_js.ico
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
URLhttp://host.docker.internal:3000/ftp/coupons_2013.md.bak
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
URLhttp://host.docker.internal:3000/main.js
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
URLhttp://host.docker.internal:3000/polyfills.js
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
URLhttp://host.docker.internal:3000/robots.txt
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
URLhttp://host.docker.internal:3000/runtime.js
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
URLhttp://host.docker.internal:3000/vendor.js
MethodGET
Parameter
Attack
EvidenceAccess-Control-Allow-Origin: *
Other InfoThe CORS misconfiguration on the web server permits cross-domain read requests from arbitrary third party domains, using unauthenticated APIs on this domain. Web browser implementations do not permit arbitrary third parties to read the response from authenticated APIs, however. This reduces the risk somewhat. This misconfiguration could be used by an attacker to access data that is available in an unauthenticated manner, but which uses some other form of security, such as IP address white-listing.
Instances11
Solution +
Ensure that sensitive data is not available in an unauthenticated manner (using IP address white-listing, for instance).
+
+ +
Configure the "Access-Control-Allow-Origin" HTTP header to a more restrictive set of domains, or remove all CORS headers entirely, to allow the web browser to enforce the Same Origin Policy (SOP) in a more restrictive manner.
+ +
Reference + https://vulncat.fortify.com/en/detail?category=HTML5&subcategory=Overly%20Permissive%20CORS%20Policy + +
CWE Id264
WASC Id14
Plugin Id10098
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Low
Cross-Domain JavaScript Source File Inclusion
Description +
The page includes one or more script files from a third-party domain.
+ +
URLhttp://host.docker.internal:3000
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000/
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000/
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000/juice-shop/build/routes/fileServer.js:59:18
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000/juice-shop/build/routes/fileServer.js:59:18
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/index.js:286:9
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/index.js:286:9
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/index.js:328:13
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/index.js:328:13
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other Info
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
Parameter//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
Other Info
Instances12
Solution +
Ensure JavaScript source files are loaded from only trusted sources, and the sources can't be controlled by end users of the application.
+ +
Reference
CWE Id829
WASC Id15
Plugin Id10017
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Low
Dangerous JS Functions
Description +
A dangerous JS function seems to be in use that would leave the site vulnerable.
+ +
URLhttp://host.docker.internal:3000/main.js
MethodGET
Parameter
Attack
EvidencebypassSecurityTrustHtml(
Other Info
URLhttp://host.docker.internal:3000/vendor.js
MethodGET
Parameter
Attack
EvidencebypassSecurityTrustHtml(
Other Info
Instances2
Solution +
See the references for security advice on the use of these functions.
+ +
Reference + https://v17.angular.io/guide/security + +
CWE Id749
WASC Id
Plugin Id10110
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Low
Deprecated Feature Policy Header Set
Description +
The header has now been renamed to Permissions-Policy.
+ +
URLhttp://host.docker.internal:3000
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/ftp
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/ftp/coupons_2013.md.bak
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/ftp/encrypt.pyc
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/ftp/package-lock.json.bak
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/ftp/suspicious_errors.yml
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/main.js
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/polyfills.js
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/runtime.js
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
URLhttp://host.docker.internal:3000/vendor.js
MethodGET
Parameter
Attack
EvidenceFeature-Policy
Other Info
Instances12
Solution +
Ensure that your web server, application server, load balancer, etc. is configured to set the Permissions-Policy header instead of the Feature-Policy header.
+ +
Reference + https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Permissions-Policy +
+ + https://scotthelme.co.uk/goodbye-feature-policy-and-hello-permissions-policy/ + +
CWE Id16
WASC Id15
Plugin Id10063
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Low
Insufficient Site Isolation Against Spectre Vulnerability
Description +
Cross-Origin-Embedder-Policy header is a response header that prevents a document from loading any cross-origin resources that don't explicitly grant the document permission (using CORP or CORS).
+ +
URLhttp://host.docker.internal:3000
MethodGET
ParameterCross-Origin-Embedder-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/
MethodGET
ParameterCross-Origin-Embedder-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/ftp
MethodGET
ParameterCross-Origin-Embedder-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/juice-shop/build/routes/fileServer.js:59:18
MethodGET
ParameterCross-Origin-Embedder-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/index.js:328:13
MethodGET
ParameterCross-Origin-Embedder-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
ParameterCross-Origin-Embedder-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000
MethodGET
ParameterCross-Origin-Opener-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/
MethodGET
ParameterCross-Origin-Opener-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/ftp
MethodGET
ParameterCross-Origin-Opener-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/juice-shop/build/routes/fileServer.js:59:18
MethodGET
ParameterCross-Origin-Opener-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/index.js:328:13
MethodGET
ParameterCross-Origin-Opener-Policy
Attack
Evidence
Other Info
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
ParameterCross-Origin-Opener-Policy
Attack
Evidence
Other Info
Instances12
Solution +
Ensure that the application/web server sets the Cross-Origin-Embedder-Policy header appropriately, and that it sets the Cross-Origin-Embedder-Policy header to 'require-corp' for documents.
+
+ +
If possible, ensure that the end user uses a standards-compliant and modern web browser that supports the Cross-Origin-Embedder-Policy header (https://caniuse.com/mdn-http_headers_cross-origin-embedder-policy).
+ +
Reference + https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Embedder-Policy + +
CWE Id693
WASC Id14
Plugin Id90004
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Low
Timestamp Disclosure - Unix
Description +
A timestamp was disclosed by the application/web server. - Unix
+ +
URLhttp://host.docker.internal:3000
MethodGET
Parameter
Attack
Evidence1650485437
Other Info1650485437, which evaluates to: 2022-04-20 20:10:37.
URLhttp://host.docker.internal:3000
MethodGET
Parameter
Attack
Evidence1981395349
Other Info1981395349, which evaluates to: 2032-10-14 19:35:49.
URLhttp://host.docker.internal:3000
MethodGET
Parameter
Attack
Evidence2038834951
Other Info2038834951, which evaluates to: 2034-08-10 15:02:31.
URLhttp://host.docker.internal:3000/
MethodGET
Parameter
Attack
Evidence1650485437
Other Info1650485437, which evaluates to: 2022-04-20 20:10:37.
URLhttp://host.docker.internal:3000/
MethodGET
Parameter
Attack
Evidence1981395349
Other Info1981395349, which evaluates to: 2032-10-14 19:35:49.
URLhttp://host.docker.internal:3000/
MethodGET
Parameter
Attack
Evidence2038834951
Other Info2038834951, which evaluates to: 2034-08-10 15:02:31.
URLhttp://host.docker.internal:3000/main.js
MethodGET
Parameter
Attack
Evidence1734944650
Other Info1734944650, which evaluates to: 2024-12-23 09:04:10.
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
Parameter
Attack
Evidence1650485437
Other Info1650485437, which evaluates to: 2022-04-20 20:10:37.
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
Parameter
Attack
Evidence1981395349
Other Info1981395349, which evaluates to: 2032-10-14 19:35:49.
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
Parameter
Attack
Evidence2038834951
Other Info2038834951, which evaluates to: 2034-08-10 15:02:31.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidence1650485437
Other Info1650485437, which evaluates to: 2022-04-20 20:10:37.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidence1680327869
Other Info1680327869, which evaluates to: 2023-04-01 05:44:29.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidence1701244813
Other Info1701244813, which evaluates to: 2023-11-29 08:00:13.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidence1818181818
Other Info1818181818, which evaluates to: 2027-08-13 18:30:18.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidence1839622642
Other Info1839622642, which evaluates to: 2028-04-17 22:17:22.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidence1863874346
Other Info1863874346, which evaluates to: 2029-01-23 14:52:26.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidence1917098446
Other Info1917098446, which evaluates to: 2030-10-01 15:20:46.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidence1981395349
Other Info1981395349, which evaluates to: 2032-10-14 19:35:49.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidence2033195021
Other Info2033195021, which evaluates to: 2034-06-06 08:23:41.
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidence2038834951
Other Info2038834951, which evaluates to: 2034-08-10 15:02:31.
Instances20
Solution +
Manually confirm that the timestamp data is not sensitive, and that the data cannot be aggregated to disclose exploitable patterns.
+ +
Reference + https://cwe.mitre.org/data/definitions/200.html + +
CWE Id497
WASC Id13
Plugin Id10096
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Informational
Information Disclosure - Suspicious Comments
Description +
The response appears to contain suspicious comments which may help an attacker.
+ +
URLhttp://host.docker.internal:3000/main.js
MethodGET
Parameter
Attack
Evidencequery
Other InfoThe following pattern was used: \bQUERY\b and was detected in likely comment: "//owasp.org' target='_blank'>Open Worldwide Application Security Project (OWASP)</a> and is developed and maintained by voluntee", see evidence field for the suspicious comment/snippet.
URLhttp://host.docker.internal:3000/vendor.js
MethodGET
Parameter
Attack
EvidenceQuery
Other InfoThe following pattern was used: \bQUERY\b and was detected in likely comment: "//www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0", see evidence field for the suspicious comment/snippet.
Instances2
Solution +
Remove all comments that return information that may help an attacker and fix any underlying problems they refer to.
+ +
Reference
CWE Id615
WASC Id13
Plugin Id10027
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Informational
Modern Web Application
Description +
The application appears to be a modern web application. If you need to explore it automatically then the Ajax Spider may well be more effective than the standard one.
+ +
URLhttp://host.docker.internal:3000
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
URLhttp://host.docker.internal:3000/
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
URLhttp://host.docker.internal:3000/juice-shop/build/routes/fileServer.js:43:13
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
URLhttp://host.docker.internal:3000/juice-shop/build/routes/fileServer.js:59:18
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
URLhttp://host.docker.internal:3000/juice-shop/build/routes/styles.css
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/index.js:286:9
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/index.js:328:13
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/index.js:365:14
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/layer.js:95:5
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
URLhttp://host.docker.internal:3000/juice-shop/node_modules/express/lib/router/runtime.js
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
Parameter
Attack
Evidence<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
Other InfoNo links have been found while there are scripts, which is an indication that this is a modern web application.
Instances11
Solution +
This is an informational alert and so no changes are required.
+ +
Reference
CWE Id
WASC Id
Plugin Id10109
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Informational
Non-Storable Content
Description +
The response contents are not storable by caching components such as proxy servers. If the response does not contain sensitive, personal or user-specific information, it may benefit from being stored and cached, to improve performance.
+ +
URLhttp://host.docker.internal:3000/ftp/coupons_2013.md.bak
MethodGET
Parameter
Attack
Evidence403
Other Info
URLhttp://host.docker.internal:3000/ftp/suspicious_errors.yml
MethodGET
Parameter
Attack
Evidence403
Other Info
Instances2
Solution +
The content may be marked as storable by ensuring that the following conditions are satisfied:
+
+ +
The request method must be understood by the cache and defined as being cacheable ("GET", "HEAD", and "POST" are currently defined as cacheable)
+
+ +
The response status code must be understood by the cache (one of the 1XX, 2XX, 3XX, 4XX, or 5XX response classes are generally understood)
+
+ +
The "no-store" cache directive must not appear in the request or response header fields
+
+ +
For caching by "shared" caches such as "proxy" caches, the "private" response directive must not appear in the response
+
+ +
For caching by "shared" caches such as "proxy" caches, the "Authorization" header field must not appear in the request, unless the response explicitly allows it (using one of the "must-revalidate", "public", or "s-maxage" Cache-Control response directives)
+
+ +
In addition to the conditions above, at least one of the following conditions must also be satisfied by the response:
+
+ +
It must contain an "Expires" header field
+
+ +
It must contain a "max-age" response directive
+
+ +
For "shared" caches such as "proxy" caches, it must contain a "s-maxage" response directive
+
+ +
It must contain a "Cache Control Extension" that allows it to be cached
+
+ +
It must have a status code that is defined as cacheable by default (200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501).
+ +
Reference + https://datatracker.ietf.org/doc/html/rfc7234 +
+ + https://datatracker.ietf.org/doc/html/rfc7231 +
+ + https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html + +
CWE Id524
WASC Id13
Plugin Id10049
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Informational
Storable and Cacheable Content
Description +
The response contents are storable by caching components such as proxy servers, and may be retrieved directly from the cache, rather than from the origin server by the caching servers, in response to similar requests from other users. If the response data is sensitive, personal or user-specific, this may result in sensitive information being leaked. In some cases, this may even result in a user gaining complete control of the session of another user, depending on the configuration of the caching components in use in their environment. This is primarily an issue where "shared" caching servers such as "proxy" caches are configured on the local network. This configuration is typically found in corporate or educational environments, for instance.
+ +
URLhttp://host.docker.internal:3000/robots.txt
MethodGET
Parameter
Attack
Evidence
Other InfoIn the absence of an explicitly specified caching lifetime directive in the response, a liberal lifetime heuristic of 1 year was assumed. This is permitted by rfc7234.
Instances1
Solution +
Validate that the response does not contain sensitive, personal or user-specific information. If it does, consider the use of the following HTTP response headers, to limit, or prevent the content being stored and retrieved from the cache by another user:
+
+ +
Cache-Control: no-cache, no-store, must-revalidate, private
+
+ +
Pragma: no-cache
+
+ +
Expires: 0
+
+ +
This configuration directs both HTTP 1.0 and HTTP 1.1 compliant caching servers to not store the response, and to not retrieve the response (without validation) from the cache, in response to a similar request.
+ +
Reference + https://datatracker.ietf.org/doc/html/rfc7234 +
+ + https://datatracker.ietf.org/doc/html/rfc7231 +
+ + https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html + +
CWE Id524
WASC Id13
Plugin Id10049
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
Informational
Storable but Non-Cacheable Content
Description +
The response contents are storable by caching components such as proxy servers, but will not be retrieved directly from the cache, without validating the request upstream, in response to similar requests from other users.
+ +
URLhttp://host.docker.internal:3000
MethodGET
Parameter
Attack
Evidencemax-age=0
Other Info
URLhttp://host.docker.internal:3000/
MethodGET
Parameter
Attack
Evidencemax-age=0
Other Info
URLhttp://host.docker.internal:3000/assets/public/favicon_js.ico
MethodGET
Parameter
Attack
Evidencemax-age=0
Other Info
URLhttp://host.docker.internal:3000/main.js
MethodGET
Parameter
Attack
Evidencemax-age=0
Other Info
URLhttp://host.docker.internal:3000/polyfills.js
MethodGET
Parameter
Attack
Evidencemax-age=0
Other Info
URLhttp://host.docker.internal:3000/runtime.js
MethodGET
Parameter
Attack
Evidencemax-age=0
Other Info
URLhttp://host.docker.internal:3000/sitemap.xml
MethodGET
Parameter
Attack
Evidencemax-age=0
Other Info
URLhttp://host.docker.internal:3000/styles.css
MethodGET
Parameter
Attack
Evidencemax-age=0
Other Info
URLhttp://host.docker.internal:3000/vendor.js
MethodGET
Parameter
Attack
Evidencemax-age=0
Other Info
Instances9
Solution
Reference + https://datatracker.ietf.org/doc/html/rfc7234 +
+ + https://datatracker.ietf.org/doc/html/rfc7231 +
+ + https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html + +
CWE Id524
WASC Id13
Plugin Id10049
+
+ + + + + +

Sequence Details

+ With the associated active scan results. + + + +
+ + + + + + + diff --git a/labs/.DS_Store b/labs/.DS_Store new file mode 100644 index 00000000..c0e4d005 Binary files /dev/null and b/labs/.DS_Store differ diff --git a/labs/submission1.md b/labs/submission1.md new file mode 100644 index 00000000..b05018c0 --- /dev/null +++ b/labs/submission1.md @@ -0,0 +1,4 @@ +# Signing Commits + +Signing commits (with *GPG*, *SSH*, or *S/MIME*) ensures that others can trust the origin of your changes. +When a commit is signed and the signature is successfully verified, GitHub marks it as “Verified”, showing that it came from a trusted source. This helps protect the integrity and authenticity of the project’s history, making it clear that commits weren’t tampered with and really came from you. diff --git a/labs/submission10.md b/labs/submission10.md new file mode 100644 index 00000000..686ecbd7 --- /dev/null +++ b/labs/submission10.md @@ -0,0 +1,261 @@ +# Lab 10 — Artifact Registries Research + +## Task 1 — Artifact Registries Research + +### AWS + +**Service names (primary):** + +- Amazon Elastic Container Registry (ECR) – main service for container images +- AWS CodeArtifact – managed package repository (npm, Maven, PyPI, etc.) + +**Key features:** + +- ECR: private/public repositories, IAM integration, vulnerability scanning (image scanning / Inspector), cross-region replication, lifecycle policies, Docker & OCI support, high-throughput storage, CDN optimized delivery +- CodeArtifact: multi-format support, IAM & KMS integration, proxy/cache for public registries, package versioning, CloudTrail logging + +**Supported artifact types:** + +- ECR: Docker/OCI container images and related OCI artifacts +- CodeArtifact: npm, Maven, PyPI, NuGet, Cargo, RubyGems, Swift, generic packages + +**Integration capabilities:** + +- ECR integrates with ECS, EKS, Fargate, CodeBuild, CodePipeline, IAM, KMS +- CodeArtifact integrates with CodeBuild/CodePipeline and standard developer tooling (npm, pip, mvn, etc.) + +**Pricing basics:** + +- ECR: pay for storage (GB-month) and data transfer; public repos have distinct pricing; replication and scanning add cost +- CodeArtifact: pay for storage and requests/download traffic; outbound data transfer billed separately + +**Common use cases:** + +- ECR: container deployment pipelines, ECS/EKS/Fargate workloads, multi-region image distribution +- CodeArtifact: centralized dependency management, internal/private packages, caching upstream public packages + +--- + +### GCP + +**Service name (primary):** + +- Artifact Registry – unified service for containers and packages (successor to Container Registry) + +**Key features:** + +- Stores container images and multiple package formats; built-in vulnerability scanning (Artifact Analysis), per-location repositories, fine-grained Cloud IAM controls, regional and dual-region placement +- Tight integration with Cloud Build, Cloud Deploy, GKE, Cloud Run; on-push and on-demand scanning + +**Supported artifact types:** + +- Docker/OCI images, Maven, npm, PyPI (Python), APT, YUM, Go modules, Helm (OCI), generic formats + +**Integration capabilities:** + +- Integrated with Cloud Build (direct push), GKE/Cloud Run/Cloud Functions for deploy, Cloud IAM for access, Artifact Analysis for scanning + +**Pricing basics:** + +- Pay for storage (GB-month), scanning (if enhanced scanning enabled), and egress traffic; pricing differs by repository type and location + +**Common use cases:** + +- Unified multi-format repository, integrated CI/CD pipelines, centralized vulnerability scanning and security governance + +--- + +### Azure + +**Service names (primary):** + +- Azure Container Registry (ACR) – main container registry +- Azure Artifacts (Azure DevOps) – managed feeds for packages (npm, NuGet, Maven, Python, etc.) + +**Key features:** + +- ACR: private Docker/OCI registry, geo-replication (Premium), Azure AD RBAC, scanning via integrations (Defender for Cloud), Helm chart support, ACR Tasks (build/patch automation), Content Trust and signing +- Azure Artifacts: private feeds, upstream proxy to public registries, Azure Pipelines integration, retention and immutability controls + +**Supported artifact types:** + +- ACR: OCI/Docker images, Helm charts, other OCI-compliant artifacts +- Azure Artifacts: npm, Maven, NuGet, Python (PyPI), Universal Packages + +**Integration capabilities:** + +- ACR integrates with AKS, App Service, Container Apps, Azure DevOps, Azure AD, external CI/CD (Docker CLI) +- Azure Artifacts integrates with Azure DevOps Pipelines and developer tooling via standard package managers + +**Pricing basics:** + +- ACR: tiered (Basic/Standard/Premium) with storage/throughput limits; geo-replication only in Premium; storage and egress billed; scanning via Defender billed separately +- Azure Artifacts: free base quota + paid tiers for additional storage/users + +**Common use cases:** + +- ACR: container delivery with geo-replication, automated image builds and patching, trusted content workflows +- Azure Artifacts: internal dependency management across teams, controlled package distribution in pipelines + +--- + +### Comparative Table (overview) + +| Criterion | AWS (ECR / CodeArtifact) | GCP (Artifact Registry) | Azure (ACR / Artifacts) | +|-----------------------------|-------------------------------------------------------------------------------------------|-----------------------------------------------------------|-----------------------------------------------------------------------------| +| Primary focus | Split: ECR (containers) + CodeArtifact (packages) | Unified: containers + packages | Split: ACR (containers) + Artifacts (packages) | +| Format support | Docker/OCI; npm, Maven, PyPI, NuGet, Ruby, Cargo, Swift, generic | Docker/OCI, Maven, npm, PyPI, Go, APT, YUM, Helm, generic | Docker/OCI, Helm; npm, Maven, NuGet, PyPI, Universal | +| Security / Scanning | ECR scanning + Inspector; CodeArtifact via IAM/KMS policies | Artifact Analysis (built-in vuln scanning) | ACR scanning via Defender; Content Trust; RBAC via Azure AD | +| Geo-replication | ECR cross-region replication | Regional / dual-region repository placement | ACR geo-replication (Premium tier) | +| Access control | AWS IAM resource policies | Cloud IAM | Azure AD / RBAC | +| CI/CD integration | CodeBuild, CodePipeline, ECS, EKS, Fargate | Cloud Build, GKE, Cloud Run, Cloud Deploy | Azure Pipelines, AKS, App Service, external CI/CD | +| Pricing (high level) | Storage + data transfer; extra for scanning/replication | Storage + scanning + egress | Tiered (ACR), storage/egress; Artifacts free base + paid expansion | + +--- + +### Analysis: Which service for a multi-cloud strategy and why? + +Primary choice: Google Cloud Artifact Registry for a unified multi-format repository (containers + packages) reducing operational overhead. + +Rationale: + +- Single API/service for broad artifact types simplifies tooling and automation +- Built-in scanning and IAM granularity aid centralized security posture +- Easier to standardize processes across teams using multiple languages + +--- + +## Task 2: Serverless Computing Platform Research + +### AWS + +**Primary services:** + +* **AWS Lambda** — serverless functions (event-driven / HTTP via API Gateway). +* **AWS Fargate** — serverless compute for containers (ECS/EKS integration) for long-running or containerized workloads. + +**Key features and capabilities:** + +* Lambda: event-driven (triggers from S3, SNS, DynamoDB, API Gateway, EventBridge etc.), built-in auto-scaling, versions & aliases, provisioned concurrency to reduce cold starts, integrated observability (CloudWatch), and Lambda Layers for dependency sharing. +* Fargate: run containers without managing EC2, per-task resource specification, integration with ECS/EKS, good for long-running services and workloads requiring custom container images. + +**Supported runtimes/languages:** + +* Lambda supports many runtimes: Node.js, Python, Java, Go, Ruby, .NET, custom runtimes via Lambda Runtime API and container images up to 10 GB. Fargate runs any container image. + +**Execution models & triggers:** + +* Lambda: event-driven, HTTP (via API Gateway or ALB), cron (EventBridge), stream processing. +* Fargate: container-based HTTP services or background tasks (service or task mode). + +**Cold start characteristics:** + +* Lambda cold starts are usually small (often under 1s for lightweight runtimes) but vary with runtime, package size, VPC configuration, and language; provisioned concurrency mitigates cold starts. Fargate does not have function-style cold starts but container start time depends on image size and platform. + +**Pricing basics & limits:** + +* Lambda: billed per invocation and execution time (GB-seconds) plus requests; configurable memory (affects CPU) and a free tier. Maximum execution timeout: 15 minutes (900 seconds). Provisioned concurrency incurs additional charges. +* Fargate: billed per vCPU and memory resources allocated per second; pricing depends on task configuration; no short function-style invocation billing. + +**Common use cases:** + +* Lambda: microservices, event-driven pipelines, scheduled jobs, lightweight REST endpoints. +* Fargate: containerized microservices, long-running processes, workloads requiring custom OS/dependencies. + +### GCP + +**Primary services:** + +* **Cloud Functions** — serverless functions (event-driven or HTTP). +* **Cloud Run** — serverless containers (fully managed) that run any stateless container image (supports HTTP and request-driven workloads). + +**Key features and capabilities:** + +* Cloud Functions: easy event-driven model from GCP services (Pub/Sub, Cloud Storage, Firestore), quick to deploy small functions. +* Cloud Run: runs containers with configurable concurrency per instance, can scale to zero, supports custom binaries and frameworks, provides settings to keep minimum instances to reduce cold starts. + +**Supported runtimes/languages:** + +* Cloud Functions: Node.js, Python, Go, Java, .NET (varies by generation); Cloud Run runs any language inside a container image. + +**Execution models & triggers:** + +* Cloud Functions: event-driven, HTTP-triggered, background functions. Cloud Run: HTTP-request driven services (also supports async tasks via Pub/Sub or Cloud Tasks). + +**Cold start characteristics:** + +* Cloud Functions and Cloud Run have cold starts; Cloud Run reduces cold starts via concurrency (multiple requests per instance) and minimum instance settings. Cold start duration depends on container image size and initialization. + +**Pricing basics & limits:** + +* Cloud Functions: billed per invocation, compute time (GHz-seconds / GB-seconds), and networking; timeouts vary by generation and type (short for event-driven, longer for HTTP in some cases). +* Cloud Run: billed per CPU, memory, and request concurrency usage rounded to 100ms; offers per-second billing with a free tier. Cloud Run HTTP services can be configured with long timeouts (up to 60 minutes for HTTP service instances in many configurations). + +**Common use cases:** + +* Cloud Functions: event-driven workloads, lightweight backends, glue logic. +* Cloud Run: production REST APIs, containerized microservices, background jobs with longer durations. + +### Azure + +**Primary services:** + +* **Azure Functions** — serverless functions (event-driven, HTTP-triggered). +* **Azure Container Apps** and **Azure Container Instances (ACI)** — serverless container options; Container Apps is a serverless container platform with DAPR and KEDA support for event-driven autoscaling. + +**Key features and capabilities:** + +* Azure Functions: multiple hosting plans (Consumption, Premium, Dedicated); Durable Functions for orchestrations; integration with Event Grid, Service Bus, Storage, and HTTP triggers; Premium plan reduces cold starts and supports VNET. +* Azure Container Apps: run containers with scale-to-zero, integrated autoscaling (KEDA), Dapr support for microservice patterns, easy deploy of containerized REST services. + +**Supported runtimes/languages:** + +* Azure Functions supports JavaScript/TypeScript, C#, Python, Java, PowerShell, and custom containers. Container Apps run any container image and therefore any language. + +**Execution models & triggers:** + +* Azure Functions: event-driven (timers, storage events, HTTP, queues, etc.). Container Apps: HTTP services, event-driven using KEDA autoscaling. + +**Cold start characteristics:** + +* Consumption plan Functions can experience noticeable cold starts; Premium plan and pre-warmed instances mitigate this. Container Apps cold start depends on image size and platform; scale-to-zero is possible with fast scale-up when requests arrive. + +**Pricing basics & limits:** + +* Azure Functions Consumption plan: billed per execution and resource consumption (GB-s), includes a free grant per month; timeouts typically 5-10 minutes depending on plan (10 minutes for Consumption historically) — Premium and Dedicated plans allow longer or unlimited timeouts with different billing. +* Azure Container Apps: billed based on CPU and memory resources consumed while instances are running; supports scale to zero. + +**Common use cases:** + +* Azure Functions: event-driven processing, webhook handlers, lightweight APIs. +* Container Apps: containerized web APIs, microservices requiring custom dependencies or longer lifetimes. + +### Comparison table (high-level) + +| Criterion | AWS Lambda / Fargate | GCP Cloud Functions / Cloud Run | Azure Functions / Container Apps | +| --------------------- | -------------------------------------------------------------------------------: | -------------------------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------------: | +| Primary model | Functions (Lambda) + serverless containers (Fargate) | Functions (Cloud Functions) + serverless containers (Cloud Run) | Functions (Azure Functions) + serverless containers (Container Apps) | +| Supported languages | Many runtimes + custom runtimes / containers | Many runtimes + containers (Cloud Run) | Many runtimes + containers | +| Cold start mitigation | Provisioned concurrency (Lambda), container optimizations (Fargate) | Minimum instances, concurrency (Cloud Run) | Premium plan / pre-warmed instances; Container Apps config | +| Pricing model | Per-invocation + duration (Lambda); per vCPU/memory (Fargate) | Per-invocation/duration (Functions); per resources used (Cloud Run, 100ms granularity) | Per-invocation/duration (Functions); per CPU/memory while running (Container Apps) | +| Max execution time | Lambda: 15 min | Cloud Functions: varies; Cloud Run HTTP: up to 60 min | Functions Consumption: short (approx 5-10 min); Premium/Dedicated: longer/unbounded; Container Apps: configurable | +| Best for REST APIs | Lambda + API Gateway (short, event-driven) or Cloud Run for container-based APIs | Cloud Run (containerized REST APIs) | Container Apps or Functions (depending on latency needs) | + +### Analysis: Which serverless platform for a REST API backend and why? + +For a production REST API I would choose **Google Cloud Run** (fully managed). Because, this service good when you want container flexibility, predictable cold-start behavior with concurrency, and easy scaling to zero — especially when you want to deploy frameworks or languages not supported natively by function platforms. Cloud Run’s concurrency model lets multiple requests share an instance, often giving better cost-efficiency and lower cold-start impact for HTTP APIs. See Cloud Run docs for concurrency and pricing. + +### Reflection: Main advantages and disadvantages of serverless computing + +**Advantages:** + +* Zero server management and automatic scaling; pay-for-what-you-use billing (can reduce costs for variable workloads). +* Fast time-to-market for small services and event-driven architectures. +* Integrated observability and managed integrations with other cloud services. + +**Disadvantages:** + +* Cold-start latency and unpredictability for some runtimes/plans. +* Execution time and memory limits (may not suit long-running tasks without special plans or container platforms). +* Potential vendor lock-in and increased complexity for debugging/distributed tracing. +* Cost can be higher for consistently high, long-lived workloads compared with reserved instances or managed container services. diff --git a/labs/submission11.md b/labs/submission11.md new file mode 100644 index 00000000..81a4e4e9 --- /dev/null +++ b/labs/submission11.md @@ -0,0 +1,150 @@ +# Lab 11 — Decentralized Web Hosting with IPFS & 4EVERLAND + +## Task 1 — Local IPFS Node Setup and File Publishing + +### 1.1 IPFS Node Peer Count + +Started the IPFS Docker container and opened Web UI (`http://127.0.0.1:5001/webui/`), the node successfully connected to the IPFS network. + +**Peer count observed:** +**46 peers** + +![Peers count](../screenshots/peers_count.png) + +### 1.2 Network Bandwidth Statistics + +The Web UI dashboard with statistics shows healthy incoming and outgoing traffic. + +![Network bandwidth statistics](../screenshots/statistics.png) + +### 1.3 Test File CID + +A test file created and added to IPFS using: + +```bash +echo "Hello IPFS Lab" > testfile.txt +docker cp testfile.txt ipfs_node:/export/ +docker exec ipfs_node ipfs add /export/testfile.txt +``` + +**CID:** + +```txt +QmUFJmQRosK4Amzcjwbip8kV3gkJ8jqCURjCNxuv3bWYS1 +``` + +### 1.4 Local Gateway Access + +The file was successfully accessed through the local IPFS gateway: + +```txt +http://localhost:8080/ipfs/QmUFJmQRosK4Amzcjwbip8kV3gkJ8jqCURjCNxuv3bWYS1 +``` + +![local gateway ui](../screenshots/gateway_access.png) + +### 1.5 Public Gateway Access + +The public IPFS gateways: + +* [https://ipfs.io/ipfs/QmUFJmQRosK4Amzcjwbip8kV3gkJ8jqCURjCNxuv3bWYS1](https://ipfs.io/ipfs/QmUFJmQRosK4Amzcjwbip8kV3gkJ8jqCURjCNxuv3bWYS1) +* [https://cloudflare-ipfs.com/ipfs/QmUFJmQRosK4Amzcjwbip8kV3gkJ8jqCURjCNxuv3bWYS1](https://cloudflare-ipfs.com/ipfs/QmUFJmQRosK4Amzcjwbip8kV3gkJ8jqCURjCNxuv3bWYS1) + +Both gateways successfully display the file content after a short propagation delay. + +Example: + +![example](../screenshots/public.png) + +### 1.6 Analysis: Content Addressing vs Traditional URLs + +- Traditional URLs point to a location (host + path). The same URL can serve different content over time. +- IPFS uses content addressing: a CID is a cryptographic hash of the content. The CID uniquely identifies the data itself, not a server location. +- Integrity is inherent: any change to content changes the CID, enabling tamper detection and immutable references. +- Retrieval is from any peer that has the content, improving resilience and enabling deduplication. + +### 1.7 Reflection: Decentralized Storage Pros and Cons + +Advantages: + +- Resilience: content can be fetched from multiple peers; no single point of failure. +- Integrity: content hashes ensure data hasn’t been altered. +- Efficient distribution: deduplication and peer-to-peer delivery can reduce bandwidth and improve locality. + +Disadvantages: + +- Availability depends on pinning/replication; data may disappear if no peers pin it. +- Higher latency for cold content until it propagates or is fetched the first time. +- Operational complexity: pinning strategies, gateway behavior, and NAT/firewall issues. +- Discoverability and access controls require additional patterns compared to centralized storage. + +--- + +## Task 2 — Static Site Deployment with 4EVERLAND + +### 2.1 4EVERLAND Project URL + +The website was available at (i deleted project after practice finished): + +```txt +https://f25-devops-intro-3sozfi1b-railsab.ipfs.4everland.app/ +``` + +### 2.2 GitHub Repository Used + +The GitHub repository: + +```txt +https://github.com/RailSAB/F25-DevOps-Intro +``` + +There is static site in `labs/lab11/app`, and it is automatically redeployed when changes pushed to the branch `main`. + +### 2.3 IPFS CID from 4EVERLAND Dashboard + +IPFS CID for the website: + +```txt +bafybeifhpby7u3zpsa2ywhwh5ckn2gsdsniygytew6jxok3nvkiq5t3v3e +``` + +### 2.4 Deployment Dashboard Screenshot + +4EVERLAND deployment dashboard: + +![deployment dashboard](../screenshots/4everlanddashboard.png) + +### 2.5 Site Accessed Through 4EVERLAND Domain + +Site accessed through 4EVERLAND domain: + +![site through 4everland](../screenshots/4everlandapp.png) + +### 2.6 Site Accessed Through a Public IPFS Gateway + +Site accessed through public IPFS gateway: + +```txt +https://ipfs.io/ipfs/bafybeifhpby7u3zpsa2ywhwh5ckn2gsdsniygytew6jxok3nvkiq5t3v3e +``` + +![site through ipfs](../screenshots/4everlandIPFS.png) + +### 2.7 Analysis: How 4EVERLAND Simplifies IPFS Deployment + +- Automates build → IPFS publish → pinning, removing need to run/maintain a local IPFS node. +- Provides a stable subdomain and dashboard for builds, logs, and redeploys. +- Integrates with GitHub for automatic redeploy on push. + +### 2.8 Comparison: Traditional hosting vs IPFS hosting (trade-offs) + +Advantages of IPFS hosting: + +- Content-addressed immutability, decentralized retrieval, potential cost savings via distribution. +- Reduced reliance on a single origin server. + +Disadvantages / trade-offs: + +- Updating content requires republishing new CID; mutable patterns need gateways or name systems (e.g., IPNS, DNSLink). +- Availability depends on pinning/replication; may need third-party pinning services. +- Some CDNs/features (edge logic, auth) are easier on traditional hosts. diff --git a/labs/submission2.md b/labs/submission2.md new file mode 100644 index 00000000..2a8587c4 --- /dev/null +++ b/labs/submission2.md @@ -0,0 +1,331 @@ +# Lab 2 Submission + +## Task 1 — Git Object Model Exploration + +### Blob Object + +```bash +> % git cat-file -p 4775dabc914d1d91749b24a5a2a5d550747d5ebe +> Third commit +``` + +**Explanation:** A blob object stores raw file content without any metadata (filename, permissions, etc). It represents the actual data of a file at a specific point in time. + +### Tree Object + +```bash +> % git cat-file -p c8cd80979e74f107436e6db69ba3a5dfeb763b66 +> 040000 tree 37fd115266dfb22bc7ccb4f848fed82c342c5d89 .github +100644 blob 4db373667a50f14a411bb5c7e879690fd08aacc1 README.md +100644 blob 4775dabc914d1d91749b24a5a2a5d550747d5ebe file.txt +040000 tree 61d4d824c8deb93779f2620042486ccda0cd241b labs +040000 tree 1865343f08695045014e0ed223b464e5403fca25 lectures +``` + +**Explanation:** A tree object represents a directory structure, containing references to blobs and other trees with their names, permissions, and object hashes. + +### Commit Object + +```bash +> % git cat-file -p 1762ae3330152ca6827a789a539eafcaa873d37e +> tree c8cd80979e74f107436e6db69ba3a5dfeb763b66 +parent 697e5047d4bf17eb219c8d142e0e34d7f1cd1a3c +author RailSab 1757365975 +0300 +committer RailSab 1757365975 +0300 +gpgsig -----BEGIN SSH SIGNATURE----- + U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgV4ltBZjIaWnhPsouIvOwFwLe7/ + cRyMWk6ylDJ/J1ckMAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 + AAAAQGI6XGjasPvdrrqHGMHr1KIeyIorOEHL2tCkW92zhJbr33QGh83flR7NyyLuXwNSp7 + gCt4wqwWBiji81VMKJBwY= + -----END SSH SIGNATURE----- + +Task1: Third commit +``` + +**Explanation:** A commit object contains metadata about a specific commit including the tree hash, parent commit, author, committer, signature, commit message. + +## Task 2 — Reset and Reflog Recovery + +### Commands + +#### Initial Setup + +```bash +# Created practice branch and commits +git switch -c git-reset-practice +echo "First commit" > file.txt && git add file.txt && git commit -m "Task2:First commit" +echo "Second commit" >> file.txt && git add file.txt && git commit -m "Task2:Second commit" +echo "Third commit" >> file.txt && git add file.txt && git commit -m "Task2:Third commit" +``` + +#### Initial State After Setup + +```bash +> git log --oneline +> 9dabe82 (HEAD -> git-reset-practice) Task2:Third commit +83349a5 Task2:Second commit +e798c9f Task2:First commit +``` + +#### File content + +```bash +> cat file.txt +> First commit +Second commit +Third commit +``` + +#### Soft reset + +Moves HEAD back one commit but keeps changes in the index (staged). + +```bash +> git reset --soft HEAD~1 +> git log --oneline + cat file.txt + +83349a5 (HEAD -> git-reset-practice) Task2:Second commit +e798c9f Task2:First commit + +First commit +Second commit +Third commit +``` + +**Explanation**: + +- **Working tree:** file.txt still contains all three lines +- **Index:** Contains the "Task2:Third commit" changes (staged) +- **History:** HEAD moved back one commit (to "Task2:Second commit") + +#### Hard reset + +Moves HEAD back one commit and discards all changes in index and working tree. + +```bash +> git reset --hard HEAD~1 +> git log --oneline + cat file.txt + +e798c9f (HEAD -> git-reset-practice) Task2:First commit + +First commit +``` + +**Explanation**: + +- **Working tree:** file.txt reverted to "Task2:First commit" state (only "First commit" in file) +- **Index:** Clean, no staged changes +- **History:** HEAD moved back, "Second commit" lost from history + +#### Reflog Recovery + +```bash +> git reflog +> e798c9f (HEAD -> git-reset-practice) HEAD@{0}: reset: moving to HEAD~1 +83349a5 HEAD@{1}: reset: moving to HEAD~1 +9dabe82 HEAD@{2}: commit: Task2:Third commit +83349a5 HEAD@{3}: commit: Task2:Second commit +e798c9f (HEAD -> git-reset-practice) HEAD@{4}: commit: Task2:First commit +``` + +Using reflog to find the hash of "Task2:Third commit" and restore the complete state. + +```bash +> git reset --hard 9dabe82 +> HEAD is now at 9dabe82 Task2:Third commit +``` + +#### After recovery + +```bash +> git log --oneline +> 9dabe82 (HEAD -> git-reset-practice) Task2:Third commit +83349a5 Task2:Second commit +e798c9f Task2:First commit + +> cat file.txt +> First commit +Second commit +Third commit +``` + +- **--soft**: Moves HEAD only, keeps index and working tree unchanged +- **--hard**: Moves HEAD and resets both index and working tree to match the target commit +- **reflog**: Records all HEAD movements, allowing recovery of "lost" commits + +## Task 3 - Visualize Commit History + +```bash +> git log --oneline --graph --all +> * d5e3acd (side-branch) Task3: Side branch commit +* d5e3acd (side-branch) Task3: Side branch commit +| * 9dabe82 (git-reset-practice) Task2:Third commit +| * 9dabe82 (git-reset-practice) Task2:Third commit +* d5e3acd (side-branch) Task3: Side branch commit +| * 9dabe82 (git-reset-practice) Task2:Third commit +| * 83349a5 Task2:Second commit +| * e798c9f Task2:First commit +|/ +* 1762ae3 (HEAD -> feature/lab2) Task1: Third commit +* 697e504 Task1: Second commit +* b2734de Task1: First commit +* 8c1c451 (origin/main, origin/HEAD, main) Merge branch 'inno-devops-labs:main' into main +|\ +| * 3f80c83 feat: publish lec2 +| * 499f2ba feat: publish lab2 +| * af0da89 feat: update lab1 +| | * b4edc5c (origin/feature/lab1, feature/lab1) docs: add commit signing summary +| |/ +|/| +* | 3b06b2f docs: add PR template +|/ +* 74a8c27 Publish lab1 +* f0485c0 Publish lec1 +* 31dd11b Publish README.md +``` + +### Graph structure explanation + +The Git graph visualization clearly shows the branching structure and parallel development paths, making it easy to understand when branches diverged and how commits relate to each other. The * and connecting lines provide an intuitive visual representation of the project's development timeline and branch relationships. There are present branches with related to them commits. + +## Task 4 — Tagging Commits + +### Commands Executed + +```bash +> git tag v1.0.0 +> git tag -l +v1.0.0 +> git show v1.0.0 --oneline -s +1762ae3 (HEAD -> feature/lab2, tag: v1.0.0) Task1: Third commit +> git push origin v1.0.0 +> git log --oneline --decorate +1762ae3 (HEAD -> feature/lab2, tag: v1.0.0) Task1: Third commit +697e504 Task1: Second commit +b2734de Task1: First commit +> git show v1.0.0 +commit 1762ae3330152ca6827a789a539eafcaa873d37e (HEAD -> feature/lab2, tag: v1.0.0) +Author: RailSab +Date: Tue Sep 9 00:12:55 2025 +0300 +... +``` + +### Why tags matters + +**Release Notes**: Tags are like anchor points for generating release notes and changelogs, making it easy to identify what changes were included in each version. + +**Versioning**: Tags provide semantic versioning that marks different releases and helps track software evolution over time. + +**CI/CD Triggers**: Many continuous integration and deployment systems use tags as triggers for automated builds, testing, and deployment pipelines. + +## Task 5 - git switch vs git checkout vs git restore + +### Git switch demonstration + +```bash +> git switch -c cmd-compare +Switched to a new branch 'cmd-compare' +> git branch +* cmd-compare + feature/lab1 + feature/lab2 + git-reset-practice + main + side-branch +> git status +On branch cmd-compare +... +> git switch - +Switched to branch 'feature/lab2' +``` + +### Git checkout demonstration + +```bash +> git checkout -b cmd-compare-2 +Switched to a new branch 'cmd-compare-2' +> git branch + cmd-compare +* cmd-compare-2 + feature/lab1 + feature/lab2 + git-reset-practice + main + side-branch +> git status +On branch cmd-compare-2 +... +> git checkout feature/lab2 +Switched to branch 'feature/lab2' +``` + +### Git restore demonstration + +```bash +# git restore +> echo "scratch" >> demo.txt +> git add demo.txt +> git commit -m "Task5: Add demo.txt" +> echo "scratch2" >> demo.txt +> cat demo.txt +scratch +scratch2 +> git status +On branch feature/lab2 +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: demo.txt +> git restore demo.txt +> cat demo.tx +scratch +> git status +On branch feature/lab2 +... # without not staged demo.txt +``` + +```bash +# git restore --staged +> echo "staged changes" >> demo.txt +> git add demo.txt +> git status +On branch feature/lab2 +Changes to be committed: + (use "git restore --staged ..." to unstage) + modified: demo.txt +> git restore --staged demo.txt +> git status +On branch feature/lab2 +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: demo.txt +> cat demo.txt +scratch +staged changes +``` + +```bash +# git restore --source +> echo "New line" >> demo.txt +> git add demo.txt +> git commit -m "Task5: Update demo.txt" +> git restore --source=HEAD~1 demo.txt +> cat demo.txt +scratch +> git status +Changes not staged for commit: + (use "git add ..." to update what will be committed) + (use "git restore ..." to discard changes in working directory) + modified: demo.txt +``` + +### Differences and when to use + +- **git switch** is the modern, purpose-built command for branch operations that eliminates the confusion of `git checkout`'s dual purpose. It provides clearer error messages and safer defaults when working with branches. + +- **git checkout** remains functional but is discouraged for new workflows because it serves two completely different purposes (branch switching and file restoration), which can lead to accidental data loss and user confusion. + +- **git restore** explicitly handles file restoration operations with clear options (`--staged`, `--source`) that make the intended action obvious, replacing the confusing `git checkout -- ` syntax. diff --git a/labs/submission3.md b/labs/submission3.md new file mode 100644 index 00000000..760174a1 --- /dev/null +++ b/labs/submission3.md @@ -0,0 +1,296 @@ +# Lab 3 + +## Task 1 + +### GitHub Actions Quickstart + +1. **Branch Creation**: Created `feature/lab3` branch for this lab +2. **Workflow Directory Creation**: Created `.github/workflows/` directory structure +3. **Workflow File Creation**: Created `github-actions-demo.yml` with the provided quickstart template + +```yaml +name: GitHub Actions Demo +run-name: ${{ github.actor }} is testing out GitHub Actions 🚀 +on: [push] +jobs: + Explore-GitHub-Actions: + runs-on: ubuntu-latest + steps: + - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" + - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + - name: Check out repository code + uses: actions/checkout@v5 + - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." + - run: echo "🖥️ The workflow is now ready to test your code on the runner." + - name: List files in the repository + run: | + ls ${{ github.workspace }} + - run: echo "🍏 This job's status is ${{ job.status }}." +``` + +#### Concepts learned from [quickstart](https://docs.github.com/en/actions/quickstart) + +**Workflows**: YAML files that define automated processes, stored in `.github/workflows/` directory + +**Jobs**: Units of work that run on fresh vms, can run sequentially or in parallel + +**Steps**: Individual tasks within a job, can run commands or use pre-built actions + +**Runners**: GitHub-hosted vms (ubuntu-latest, windows-latest, macos-latest) that execute workflows + +**Triggers**: Events that start workflows (`on: [push]` means workflow runs on every push to any branch) + +**Contexts**: Dynamic information available during workflow execution (e.g., `${{ github.actor }}`, `${{ runner.os }}`) + +#### Workflow components + +- **`name`**: Display name for the workflow in GitHub UI +- **`on: [push]`**: Trigger configuration - runs on any push event +- **`jobs`**: Contains all jobs (in this case, one job named "Explore-GitHub-Actions") +- **`runs-on`**: Specifies runner type +- **`steps`**: Sequential list of actions/commands to execute +- **`uses: actions/checkout@v5`**: Pre-built action to download repository code +- **Context variables**: `${{ github.actor }}`, `${{ runner.os }}`, etc. provides runtime information + +### Analysis of [workflow](https://github.com/RailSAB/F25-DevOps-Intro/actions/runs/17894182583/job/50878574885) run + +```bash +echo "🎉 The job was automatically triggered by a push event." +echo "🐧 This job is now running on a Linux server hosted by GitHub!" +echo "🔎 The name of your branch is refs/heads/feature/lab3 and your repository is RailSAB/F25-DevOps-Intro." + +Run actions/checkout@v5 +Syncing repository: RailSAB/F25-DevOps-Intro +Getting Git version info + Working directory is '/home/runner/work/F25-DevOps-Intro/F25-DevOps-Intro' + /usr/bin/git version + git version 2.51.0 +Temporarily overriding HOME='/home/runner/work/_temp/83770cb5-32d0-46c6-b20e-9439be2054cd' before making global git config changes +Adding repository directory to the temporary git global config as a safe directory +/usr/bin/git config --global --add safe.directory /home/runner/work/F25-DevOps-Intro/F25-DevOps-Intro +Deleting the contents of '/home/runner/work/F25-DevOps-Intro/F25-DevOps-Intro' +Initializing the repository +Disabling automatic garbage collection +Setting up auth +Fetching the repository +Determining the checkout info +/usr/bin/git sparse-checkout disable +/usr/bin/git config --local --unset-all extensions.worktreeConfig +Checking out the ref +/usr/bin/git log -1 --format=%H +b6b118df3f3fbbd991621f42f6c9e16830eff714 + +echo "💡 The RailSAB/F25-DevOps-Intro repository has been cloned to the runner." +echo "🖥️ The workflow is now ready to test your code on the runner." +ls /home/runner/work/F25-DevOps-Intro/F25-DevOps-Intro +README.md +labs +lectures + +echo "🍏 This job's status is success." +Post job cleanup. +``` + +1. **Trigger**: Push event initiates workflow +2. **Runner Allocation**: GitHub provisions fresh Ubuntu vm +3. **Job Execution**: Single job "Explore-GitHub-Actions" starts +4. **Step Execution**: Each step runs sequentially: + - Environment information gathering + - Repository checkout using `actions/checkout@v5` + - File system exploration + - Status reporting +5. **Cleanup**: Runner is destroyed after job completion + +## Task 2 + +## Task 2 — Manual Trigger + System Information + +### Changes Made to Workflow File + +**1. Added Manual Trigger:** + +```yaml +on: + push: + workflow_dispatch: +``` + +**2. Created System Information Job:** + +```yaml +System-Info-Collection: + runs-on: ubuntu-latest + steps: + - name: Displaying trigger event + - name: Displaying system information + - name: Runtime Environment Information +``` + +#### Complete Updated Workflow + +```yaml +name: GitHub Actions Demo +run-name: ${{ github.actor }} is testing out GitHub Actions 🚀 +on: + push: + workflow_dispatch: + +jobs: + Explore-GitHub-Actions: + runs-on: ubuntu-latest + steps: + - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" + - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + - name: Check out repository code + uses: actions/checkout@v5 + - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." + - run: echo "🖥️ The workflow is now ready to test your code on the runner." + - name: List files in the repository + run: ls ${{ github.workspace }} + - run: echo "🍏 This job's status is ${{ job.status }}." + + System-Info-Collection: + runs-on: ubuntu-latest + steps: + - name: Displaying trigger event + run: | + echo "This workflow was triggered by the ${{ github.event_name }} event." + echo "Repository: ${{ github.repository }}" + echo "Branch: ${{ github.ref_name }}" + + - name: Displaying system information + run: | + echo "This job is running on a ${{ runner.os }} server hosted by GitHub." + echo "CPU Information:" + lscpu | head -15 + echo "Memory Information:" + free -h + echo "Disk Information:" + df -h + + - name: Runtime Environment Information + run: | + echo "User: $(whoami)" + echo "Home: $HOME" + echo "Working Directory: $(pwd)" + echo "Shell: $SHELL" +``` + +### Manual Workflow Dispatch + +#### How to Trigger Manually + +#### Workflow must be in default branch (main) + +1. **Navigate**: GitHub Repository → **Actions** tab +2. **Select**: "GitHub Actions Demo" workflow +3. **Trigger**: Click **"Run workflow"** button +4. **Configure**: Select branch `feature/lab3` +5. **Execute**: Click **"Run workflow"** to dispatch + +[Manual Trigger Run](https://github.com/RailSAB/F25-DevOps-Intro/actions/runs/17894506342/job/50879311077) + +### System Information Analysis + +#### Trigger Event Verification + +```bash +This workflow was triggered by the workflow_dispatch event +... +``` + +#### Hardware Specifications + +**CPU Information:** + +```bash +The server has the following processors: +Architecture: x86_64 +CPU op-mode(s): 32-bit, 64-bit +Address sizes: 48 bits physical, 48 bits virtual +Byte Order: Little Endian +CPU(s): 4 +On-line CPU(s) list: 0-3 +Vendor ID: AuthenticAMD +Model name: AMD EPYC 7763 64-Core Processor +CPU family: 25 +... +``` + +**Memory Information:** + +```bash +The server has the following amount of free memory: + total used free shared buff/cache available +Mem: 15Gi 744Mi 13Gi 36Mi 1.5Gi 14Gi +Swap: 4.0Gi 0B 4.0Gi +``` + +**Storage Information:** + +```bash +Root Filesystem: 72GB total, 27GB available (64% used) +Boot Partition: 881MB +Additional Mount: 74GB (/mnt) +Temporary Storage: 7.9GB (/dev/shm) +``` + +#### Runtime Environment + +**System Context:** + +```bash +username: runner +home directory: /home/runner +current working directory: /home/runner/work/F25-DevOps-Intro/F25-DevOps-Intro +PATH: /snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin +shell: /bin/bash +env variables: +... +``` + +### Comparison + +#### Manual vs Automatic Triggers + +| Aspect | Push Trigger | Manual Trigger | +|--------|-------------|----------------| +| **Event Name** | `push` | `workflow_dispatch` | +| **Activation** | Automatic on code push | Manual via GitHub UI/API | +| **Control** | Developer commits | Explicit user action | +| **Frequency** | Every push | When needed | + +#### Runner Environment Capabilities + +**Infrastructure:** + +- 4-core AMD EPYC processor, 15GB RAM, 72GB storage +- GitHub-hosted on Microsoft Azure with full internet access + +**Software:** + +- Languages: Java, Python, Node.js, Go +- Tools: Git, Docker, npm, pip +- Development platforms ready to use + +**Security:** + +- Fresh isolated VM per workflow run +- Non-privileged `runner` user +- Automatic cleanup after completion + +#### Key Insights + +**Manual Dispatch Benefits:** + +- Test workflows without commits +- Run on-demand operations +- Safe experimentation + +**System Capabilities:** + +- Auto-scaled runners for concurrent workflows +- Comprehensive development environment +- Consistent and reliable execution diff --git a/labs/submission4.md b/labs/submission4.md new file mode 100644 index 00000000..e97984f9 --- /dev/null +++ b/labs/submission4.md @@ -0,0 +1,478 @@ +# Lab 4 + +## Task 1 + +### 1.1 Boot Performance Analysis + +#### Analyzing System Boot Time + +Since I work on macOS, there is no command **systemd-analyze** (systemd-analyze is a command—line utility built into the systemd initialization system on Linux. Its task is to collect and analyze data on the performance of the system boot process). Instead I used such equivalent commands: + +```bash +system_profiler SPSoftwareDataType | grep "Boot Volume\|System Version\|Boot Mode" # system information +uptime # system work time +launchctl list | head -10 # equivalent to systemd-analyze blame +``` + +Output: + +```bash +> grep "Boot Volume\|System Version\|Boot Mode" + System Version: macOS 15.6.1 (24G90) + Boot Volume: Macintosh HD + Boot Mode: Normal + > 1:23 up 4 days, 1:20, 1 user, load averages: 6.61 6.30 5.12 + > PID Status Label +- 0 com.apple.SafariHistoryServiceAgent +88283 -9 com.apple.progressd +65192 -9 com.apple.cloudphotod +79635 -9 com.apple.MENotificationService +585 0 com.apple.Finder +766 0 com.apple.homed +65134 -9 com.apple.dataaccess.dataaccessd +- 0 com.apple.quicklook +- 0 com.apple.parentalcontrols.check + +``` + +#### Checking System Load + +Commands used: + +```bash +uptime +w +``` + +Output: + +```bash + 1:26 up 4 days, 1:24, 1 user, load averages: 11.29 8.91 6.49 + 1:26 up 4 days, 1:24, 1 user, load averages: 11.29 8.91 6.49 +USER TTY FROM LOGIN@ IDLE WHAT +rail console - Fri00 4days - +``` + +#### Key Observations - Boot Performance + +- **System Version**: macOS 15.6.1 running on Macintosh HD with normal boot mode +- **Uptime**: System has been running for 4 days, 1 hour +- **Load Averages**: Extremely high (11.29, 8.91, 6.49) suggesting heavy system utilization +- **Service Status**: Mix of active (status 0) and terminated (status -9) services +- **Boot Services**: Key services like Finder (PID 585) and homed (PID 766) are running properly +- **macOS uses launchd** instead of systemd for service management + +### 1.2: Process Forensics + +#### Identifying Resource-Intensive Processes + +Again there is commands in lab4.md, that i can not run in macOS, so i used equivalent: + +```bash +ps -eo pid,ppid,command,%mem,%cpu -r | head -n 6 +ps -eo pid,ppid,command,%mem,%cpu -c | head -n 6 +``` + +Output: + +```bash +> PID PPID COMMAND %MEM %CPU + 2270 1 /Applications/V2 0.7 224.1 +74450 1 /Applications/Te 3.2 102.1 + 383 1 /System/Library/ 1.1 23.2 +10996 1 /System/Library/ 0.1 7.7 + 861 1 /Applications/Ar 2.9 7.4 +> PID PPID COMMAND %MEM %CPU + 1 0 launchd 0.1 0.7 + 313 1 logd 0.2 0.2 + 315 1 UserEventAgent 0.1 0.0 + 317 1 fseventsd 0.0 1.2 + 318 1 mediaremoted 0.1 0.0 +``` + +#### Key Observations - Process Analysis + +- **Extreme CPU Usage**: V2 application showing 224.1% CPU (likely multi-threaded) +- **Terminal Activity**: Terminal process consuming 102.1% CPU and 3.2% memory +- **System Graphics**: WindowServer using 23.2% CPU for display management +- **Memory Distribution**: Applications range from 0.1% to 3.2% memory usage +- **System Processes**: Core system processes (launchd, logd) show minimal resource usage +- **Resource Intensity**: Development/productivity applications dominating resource consumption + +### 1.3: Service Dependencies + +#### Map Service Relationships + +Again, `systemctl` commands are not available on macOS (systemctl is Linux systemd-specific). Instead I used macOS equivalent commands: + +```bash +launchctl list | head -10 +launchctl print system +``` + +Output: + +```bash +> PID Status Label +- 0 com.apple.SafariHistoryServiceAgent +88283 -9 com.apple.progressd +65192 -9 com.apple.cloudphotod +79635 -9 com.apple.MENotificationService +585 0 com.apple.Finder +766 0 com.apple.homed +65134 -9 com.apple.dataaccess.dataaccessd +- 0 com.apple.quicklook +- 0 com.apple.parentalcontrols.check +> system = { + type = system + handle = 0 + active count = 1043 + service count = 408 + active service count = 185 + maximum allowed shutdown time = 65 s + service stats = { + com.apple.launchd.service-stats-default (4096 records) + } + trial factor reloads = 4 + trial factors = { + } + creator = launchd[1] + creator euid = 0 + ... # there is a lot of lines +``` + +#### Key Observations - Service Dependencies + +- **Service Scale**: System managing 1043 total services with 408 configured +- **Active Services**: 185 services currently active (45% of configured services) +- **Service Status Mix**: Combination of running (0), terminated (-9), and dormant (-) services +- **Cloud Integration**: Multiple Apple cloud services (cloudphotod, dataaccess) present +- **User Services**: GUI-related services (Finder, Safari agents) active +- **System Architecture**: Hierarchical service management through launchd + +### 1.4: User Sessions + +#### Audit Login Activity + +```bash +who -a +last -n 5 +``` + +Output: + +```bash +> system boot Sep 19 00:02 +rail console Sep 19 00:45 + . run-level 3 +> rail console Fri Sep 19 00:45 still logged in +reboot time Fri Sep 19 00:02 +shutdown time Fri Sep 19 00:02 +rail console Tue Sep 16 01:59 - 00:02 (2+22:03) +reboot time Tue Sep 16 01:58 +``` + +#### Key Observations - User Sessions + +- **Single User Environment**: Only user 'rail' with console access +- **Long Session**: Current session started Sep 19, running for 4+ days +- **System Stability**: Clean boot sequence with no unexpected shutdowns +- **Login Pattern**: Consistent single-user usage pattern +- **Session Type**: Console login (GUI session) rather than remote/SSH access +- **Uptime Correlation**: Login time matches system boot time + +### 1.5: Memory Analysis + +#### Inspect Memory Allocation + +Again, `free -h` and `/proc/meminfo` are not available on macOS (Linux-specific). Instead I used macOS equivalent commands: + +```bash +vm_stat +sysctl hw.memsize hw.physmem +sysctl vm.swapusage +top -l 1 | grep PhysMem +``` + +Output: + +```bash +> Mach Virtual Memory Statistics: (page size of 16384 bytes) +Pages free: 7390. +Pages active: 270178. +Pages inactive: 255437. +Pages speculative: 14433. +Pages throttled: 0. +Pages wired down: 155419. +Pages purgeable: 13941. +"Translation faults": 781084725. +Pages copy-on-write: 23768517. +Pages zero filled: 487208668. +Pages reactivated: 21923505. +Pages purged: 5442528. +File-backed pages: 184527. +Anonymous pages: 355521. +Pages stored in compressor: 706227. +Pages occupied by compressor: 306259. +Decompressions: 10896679. +Compressions: 15372389. +Pageins: 5158258. +Pageouts: 117259. +Swapins: 0. +Swapouts: 36. +> hw.memsize: 17179869184 +hw.physmem: 3669164032 +> vm.swapusage: total = 1024.00M used = 0.56M free = 1023.44M (encrypted) +> PhysMem: 15G used (2429M wired, 4652M compressor), 469M unused. +``` + +#### Key Observations - Memory Analysis + +- **Total Memory**: 16GB physical RAM +- **Page Size**: 16KB pages (larger than typical 4KB on Intel systems) +- **Memory Pressure**: High usage with 15GB used, only 469MB unused +- **Compression Active**: 4.65GB in compressor, 306MB compressed pages occupied +- **Wired Memory**: 2.4GB wired +- **Swap Usage**: Minimal swap usage (0.56MB used of 1024MB available) +- **Memory Efficiency**: Heavy compression usage indicates memory pressure management + +### Answer: "What is the top memory-consuming process?" + +Based on the process forensics analysis, **Terminal application** is the top memory-consuming process with **3.2% memory usage** and **102.1% CPU usage**. + +### Resource Utilization Patterns Observed + +Most of them already provided above, but here is some more + +#### Critical Patterns + +**CPU Saturation**: Multiple processes exceeding 100% CPU (multi-core utilization) +**Long-term Stability**: 4+ day uptime despite heavy resource usage +**Development Workload**: High Terminal and development tool usage +**Background Services**: Multiple Apple services running but using minimal resources +**Positive**: Minimal swap usage, system stability, clean service management +**Concerning**: Extremely high load averages, heavy memory pressure, CPU saturation +**Memory Compression**: macOS efficiently managing memory pressure through compression +**Service Management**: launchd effectively managing 1043 services +**Resource Allocation**: System maintaining stability despite resource constraints + +## Task 2 + +### 2.1: Network Path Tracing + +#### Traceroute Execution + +Commands: + +```bash +traceroute github.com +``` + +Output: + +```bash +traceroute to github.com (140.82.121.3), 64 hops max, 40 byte packets + 1 10.91.48.1 (10.91.48.1) 3.814 ms 3.559 ms 3.541 ms + 2 10.252.6.1 (10.252.6.1) 3.843 ms 3.782 ms 3.677 ms + 3 1.123.18.84.in-addr.arpa (84.18.123.1) 13.361 ms 13.106 ms 12.784 ms + 4 178.176.191.24 (178.176.191.24) 8.812 ms 8.813 ms 8.769 ms + 5 * * * + 6 * * * + 7 * * * + 8 * * * + 9 83.169.204.78 (83.169.204.78) 46.477 ms + 83.169.204.82 (83.169.204.82) 50.695 ms + 83.169.204.78 (83.169.204.78) 49.503 ms +10 netnod-ix-ge-b-sth-1500.inter.link (194.68.128.180) 44.138 ms + netnod-ix-ge-a-sth-1500.inter.link (194.68.123.180) 44.049 ms + netnod-ix-ge-b-sth-1500.inter.link (194.68.128.180) 47.325 ms +11 r4-ber1-de.as5405.net (94.103.180.3) 60.473 ms 168.431 ms 112.063 ms +12 r3-ber1-de.as5405.net (94.103.180.2) 147.083 ms 125.743 ms 128.882 ms +13 * * * +14 * * * +... +``` + +#### DNS Resolution Check + +Commands: + +```bash +dig github.com +``` + +Output: + +```bash +; <<>> DiG 9.10.6 <<>> github.com +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7178 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 4096 +;; QUESTION SECTION: +;github.com. IN A + +;; ANSWER SECTION: +github.com. 27 IN A 140.82.121.3 + +;; Query time: 7 msec +;; SERVER: 10.90.137.30#53(10.90.137.30) +;; WHEN: Tue Sep 23 02:17:08 MSK 2025 +;; MSG SIZE rcvd: 55 +``` + +### 2.2: Packet Capture + +#### Capture DNS Traffic + +Commands (macOS doesn't have `timeout`, using alternatives): + +```bash +sudo tcpdump -c 5 -i any 'port 53' -nn +``` + +Output: + +```bash +tcpdump: data link type PKTAP +tcpdump: verbose output suppressed, use -v[v]... for full protocol decode +listening on any, link-type PKTAP (Apple DLT_PKTAP), snapshot length 524288 bytes +02:34:30.514304 IP 10.91.57.238.50988 > 10.90.137.30.53: 10576+ PTR? 18.235.33.3.in-addr.arpa. (42) +02:34:30.712793 IP 10.90.137.30.53 > 10.91.57.238.50988: 10576 1/0/0 PTR aa1ba9bef7b18c265.awsglobalaccelerator.com. (98) +02:34:35.518552 IP 10.91.57.238.51332 > 10.90.137.30.53: 5506+ PTR? 138.146.57.17.in-addr.arpa. (44) +02:34:35.676655 IP 10.90.137.30.53 > 10.91.57.238.51332: 5506 NXDomain 0/1/0 (122) +02:34:45.518434 IP 10.91.57.238.51456 > 10.90.137.30.53: 29446+ PTR? 100.192.105.91.in-addr.arpa. (45) +5 packets captured +972 packets received by filter +0 packets dropped by kernel +``` + +### 2.3: Reverse DNS + +#### Perform PTR Lookups + +Commands: + +```bash +dig -x 8.8.4.4 +dig -x 1.1.2.2 +``` + +Output: + +```bash +; <<>> DiG 9.10.6 <<>> -x 8.8.4.4 +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29511 +;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 4096 +;; QUESTION SECTION: +;4.4.8.8.in-addr.arpa. IN PTR + +;; ANSWER SECTION: +4.4.8.8.in-addr.arpa. 4036 IN PTR dns.google. + +;; Query time: 36 msec +;; SERVER: 10.90.137.30#53(10.90.137.30) +;; WHEN: Tue Sep 23 02:35:13 MSK 2025 +;; MSG SIZE rcvd: 73 + + +; <<>> DiG 9.10.6 <<>> -x 1.1.2.2 +;; global options: +cmd +;; Got answer: +;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 52105 +;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 + +;; OPT PSEUDOSECTION: +; EDNS: version: 0, flags:; udp: 4096 +;; QUESTION SECTION: +;2.2.1.1.in-addr.arpa. IN PTR + +;; AUTHORITY SECTION: +1.in-addr.arpa. 899 IN SOA ns.apnic.net. read-txt-record-of-zone-first-dns-admin.apnic.net. 22947 7200 1800 604800 3600 + +;; Query time: 395 msec +;; SERVER: 10.90.137.30#53(10.90.137.30) +;; WHEN: Tue Sep 23 02:35:13 MSK 2025 +;; MSG SIZE rcvd: 137 +``` + +### Insights on Network Paths Discovered + +#### Network Path Analysis (from traceroute github.com) + +- **Target Resolution**: github.com resolves to 140.82.121.3 (GitHub's server) +- **Local Gateway**: First hop through 10.91.48.1 (local router) with ~3.5ms latency +- **ISP Infrastructure**: Second hop 10.252.6.1 (ISP internal routing) with ~3.7ms latency +- **Geographic Routing**: Path goes through European infrastructure: + - Hop 3: 84.18.123.1 (reverse DNS shows in-addr.arpa domain) - 13ms + - Hop 4: 178.176.191.24 (likely ISP backbone) - 8.8ms + - Hops 5-8: Hidden routers (*** responses) - security filtering + - Hop 9: 83.169.204.78/82 (load balancing between two routes) - 46-50ms + - Hop 10: netnod-ix-ge-sth-1500.inter.link (Stockholm Internet Exchange) - 44-47ms + - Hops 11-12: r4/r3-ber1-de.as5405.net (Berlin, Germany AS5405 network) - 60-168ms +- **Network Latency Pattern**: Progressive increase from 3ms (local) to 168ms (international) +- **Infrastructure**: Route passes through Stockholm Internet Exchange and Berlin before reaching GitHub +- **Load Balancing**: Multiple IP addresses at hop 9 and 10 show traffic distribution + +### Analysis of DNS Query/Response Patterns + +#### DNS Performance Analysis + +- **Primary DNS Server**: 10.90.137.30 (local/corporate DNS server) +- **Query Response Time**: Fast resolution (7ms for github.com, 36ms for Google DNS reverse lookup) +- **DNS Caching**: TTL values show efficient caching (27 seconds for github.com, 4036 seconds for Google DNS) +- **Query Types**: Mix of A record lookups and PTR (reverse) queries captured + +### Comparison of Reverse Lookup Results + +#### Reverse DNS Analysis + +**Successful Lookup (8.8.4.4)**: + +- **Result**: dns.google. (Google's public DNS) +- **Response Time**: 36ms (reasonable response time) +- **TTL**: 4,036 seconds (~67 minutes) - moderate caching period +- **Status**: NOERROR - proper reverse DNS configuration + +**Failed Lookup (1.1.2.2)**: + +- **Result**: NXDOMAIN (no reverse record exists) +- **Response Time**: 395ms (much slower due to authoritative server query) +- **Authority**: ns.apnic.net (APNIC manages this IP range) +- **Status**: No PTR record configured for this IP +- **SOA Record**: Shows zone authority information + +**Differences**: + +- Google maintains proper reverse DNS records (dns.google.) +- IP 1.1.2.2 lacks reverse DNS configuration (NXDOMAIN) +- Response times vary dramatically (36ms vs 395ms) +- Failed lookups require querying authoritative servers (APNIC) +- Successful lookups cached much longer than failed ones + +### One Example DNS Query from Packet Capture + +#### Sample DNS Transaction + +```bash +10.91.57.238.50988 > 10.90.137.30.53: 10576+ PTR? 18.235.33.3.in-addr.arpa. (42) # request +10.90.137.30.53 > 10.91.57.238.50988: 10576 1/0/0 PTR aa1ba9bef7b18c265.awsglobalaccelerator.com. (98) # response +``` + +**Details**: + +- **Query ID**: 10576 (matches request/response) +- **Query Type**: PTR record (reverse DNS lookup) +- **Source Port**: 50988 +- **Response**: AWS Global Accelerator hostname +- **Packet Sizes**: 42 bytes query, 98 bytes response +- **Resolution Time**: ~198ms (02:34:30.514304 to 02:34:30.712793) +- **Local DNS**: Using internal DNS server (10.90.137.30) diff --git a/labs/submission5.md b/labs/submission5.md new file mode 100644 index 00000000..b5864a8c --- /dev/null +++ b/labs/submission5.md @@ -0,0 +1,306 @@ +# Lab 5 + +## Task 1 - VirtualBox Installation + +### Host System Information + +- Host OS: macOS Sequoia 15.6.1 +- Architecture: Apple Silicon M4 +- VirtualBox Version: 7.2.2 r170484 (Qt6.8.0 on cocoa) + +### Installation Issues + +- No installation issues discovered +- Note: VirtualBox on Apple Silicon M4 uses experimental ARM support, which may explain some of the unusual system information results seen in Task 2 + +## Task 2 - Ubuntu VM and System Analysis + +### 2.1: Creating Ubuntu VM + +- ISO Used: ubuntu-24.04-desktop-arm64.iso +- Created VM with minimal setup (4GB RAM, 2 CPU cores, 25GB Disk) +- Installation: Default installation process completed successfully + +### 2.2: System Information Discovery + +#### CPU details + +**Tools Discovered**: lscpu, cat /proc/cpuinfo + +```bash +> lscpu +Architecture: aarch64 + CPU op-mode(s): 64-bit + Byte Order: Little Endian +CPU(s): 2 + On-line CPU(s) list: 0,1 +Vendor ID: Apple + Model name: - + Model: 0 + Thread(s) per core: 1 + Core(s) per cluster: 2 + Socket(s): - + Cluster(s): 1 + Stepping: 0x0 + BogoMIPS: 48.00 + Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics + fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop + sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm + sb paca pacg dcpodp flagm2 frint bf16 afp +``` + +```bash +> cat /proc/cpuinfo +processor : 0 +BogoMIPS : 48.00 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp flagm2 frint bf16 afp +CPU implementer : 0x61 +CPU architecture: 8 +CPU variant : 0x0 +CPU part : 0x000 +CPU revision : 0 + +processor : 1 +BogoMIPS : 48.00 +Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp flagm2 frint bf16 afp +CPU implementer : 0x61 +CPU architecture: 8 +CPU variant : 0x0 +CPU part : 0x000 +CPU revision : 0 +``` + +**Output Analysis**: + +- Architecture: aarch64 (ARM64) - correct for Apple Silicon +- CPU Cores: 2 cores as configured +- Vendor: Apple - correctly identifies the host hardware +- The CPU model shows as "-" which is unusual and may be related to VirtualBox's experimental ARM support on M4 + +#### Memory Information + +**Tools Discovered**: free -h, cat /proc/meminfo + +```bash +> free -h + total used free shared buff/cache available +Mem: 3.3Gi 1.7Gi 378Mi 63Mi 1.5Gi 1.6Gi +Swap: 0B 0B 0B +``` + +```bash +> cat /proc/meminfo +MemTotal: 3466204 kB +MemFree: 397116 kB +MemAvailable: 1732652 kB +Buffers: 53672 kB +Cached: 1441748 kB +SwapCached: 0 kB +Active: 2009972 kB +Inactive: 707952 kB +Active(anon): 1219016 kB +Inactive(anon): 68368 kB +Active(file): 790956 kB +Inactive(file): 639584 kB +Unevictable: 16 kB +Mlocked: 16 kB +SwapTotal: 0 kB +SwapFree: 0 kB +Zswap: 0 kB +Zswapped: 0 kB +Dirty: 460 kB +Writeback: 0 kB +AnonPages: 1222436 kB +Mapped: 545424 kB +Shmem: 65080 kB +KReclaimable: 62492 kB +Slab: 220452 kB +SReclaimable: 62492 kB +SUnreclaim: 157960 kB +KernelStack: 12160 kB +ShadowCallStack: 3048 kB +PageTables: 26464 kB +SecPageTables: 0 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 1733100 kB +Committed_AS: 5935940 kB +VmallocTotal: 135288315904 kB +VmallocUsed: 28896 kB +VmallocChunk: 0 kB +Percpu: 1312 kB +HardwareCorrupted: 0 kB +AnonHugePages: 0 kB +ShmemHugePages: 0 kB +ShmemPmdMapped: 0 kB +FileHugePages: 0 kB +FilePmdMapped: 0 kB +CmaTotal: 32768 kB +CmaFree: 10968 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +Hugetlb: 0 kB +``` + +**Output Analysis**: + +- Total RAM: 3.3GiB (slightly less than configured 4GB due to system overhead) +- Available: 1.6GiB after system startup +- Swap: 0B (no swap configured by default) + +#### Network Configuration + +**Tools Discovered**: ip addr, ip route + +```bash +> ip addr +1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host noprefixroute + valid_lft forever preferred_lft forever +2: enp0s8: mtu 1500 qdisc fq_codel state UP group default qlen 1000 + link/ether 08:00:27:b4:04:0d brd ff:ff:ff:ff:ff:ff + altname enx080027b4040d + inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s8 + valid_lft 85731sec preferred_lft 85731sec + inet6 fd17:625c:f037:2:3f1e:7658:9cf0:6593/64 scope global temporary dynamic + valid_lft 86372sec preferred_lft 14372sec + inet6 fd17:625c:f037:2:a00:27ff:feb4:40d/64 scope global dynamic mngtmpaddr proto kernel_ra + valid_lft 86372sec preferred_lft 14372sec + inet6 fe80::a00:27ff:feb4:40d/64 scope link proto kernel_ll + valid_lft forever preferred_lft forever +``` + +```bash +> ip route +default via 10.0.2.2 dev enp0s8 proto dhcp src 10.0.2.15 metric 100 +10.0.2.0/24 dev enp0s8 proto kernel scope link src 10.0.2.15 metric 100 +``` + +**Output Analysis**: + +- Interface: enp0s8 (VirtualBox default network adapter) +- IP Address: 10.0.2.15/24 (VirtualBox NAT network) +- Gateway: 10.0.2.2 (VirtualBox default gateway) + +#### Storage Information + +**Tools Discovered**: df -h, lsblk + +```bash +> df -h +Filesystem Size Used Avail Use% Mounted on +tmpfs 339M 1.8M 337M 1% /run +/dev/sda2 24G 6.3G 16G 28% / +tmpfs 1.7G 0 1.7G 0% /dev/shm +efivarfs 256K 5.0K 251K 2% /sys/firmware/efi/efivars +tmpfs 5.0M 8.0K 5.0M 1% /run/lock +tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-journald.service +tmpfs 1.7G 3.8M 1.7G 1% /tmp +tmpfs 1.0M 0 1.0M 0% /run/credentials/systemd-resolved.service +/dev/sda1 1.1G 6.4M 1.1G 1% /boot/efi +tmpfs 339M 144K 339M 1% /run/user/1000 +``` + +```bash +> lsblk +NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS +loop0 7:0 0 11.4M 1 loop /snap/desktop-security-center/60 +loop1 7:1 0 228.4M 1 loop /snap/firefox/6039 +loop2 7:2 0 4K 1 loop /snap/bare/5 +loop3 7:3 0 68.9M 1 loop /snap/core22/1912 +loop4 7:4 0 493.5M 1 loop /snap/gnome-42-2204/201 +loop5 7:5 0 91.7M 1 loop /snap/gtk-common-themes/1535 +loop6 7:6 0 13.1M 1 loop /snap/prompting-client/105 +loop7 7:7 0 38.7M 1 loop /snap/snapd/23772 +loop8 7:8 0 10M 1 loop /snap/snap-store/1271 +loop9 7:9 0 544K 1 loop /snap/snapd-desktop-integration/255 +sda 8:0 0 25G 0 disk +├─sda1 8:1 0 1G 0 part /boot/efi +└─sda2 8:2 0 23.9G 0 part / +sr0 11:0 1 1024M 0 rom +``` + +**Output Analysis**: + +- Root Partition: 24GB used 6.3GB (28% used) - matches 25GB configuration +- Boot Partition: 1.1GB EFI system partition +- Device: /dev/sda (virtual disk) + +#### Operating System + +**Tools Discovered**: lsb_release -a, uname -a + +```bash +> lsb_release -a +No LSB modules are available. +Distributor ID: Ubuntu +Description: Ubuntu 25.04 +Release: 25.04 +Codename: plucky +``` + +```bash +> uname -a +Linux Ubuntu 6.14.0-32-generic #32-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 29 14:04:54 UTC 2025 aarch64 aarch64 aarch64 GNU/Linux +``` + +**Output Analysis**: + +- Kernel: 6.14.0-32-generic (modern kernel) +- Architecture: aarch64 confirmed +- The output shows Ubuntu 25.04, but I installed Ubuntu 24.04 LTS. This discrepancy may be due to: + 1. Using a development/nightly build of Ubuntu 24.04 that has version information for the next release + 2. VirtualBox experimental ARM support causing version detection issues + 3. Possible ISO file issue + +#### Virtualization Detection + +**Tools Discovered**: systemd-detect-virt, lshw -class system + +```bash +> systemd-detect-virt +none +``` + +```bash +> sudo lshw -class system +[sudo] password for admin: +ubuntu + description: Computer + width: 64 bits + capabilities: smp cp15_barrier swp tagged_addr_disabled + *-pnp00:00 + product: PnP device PNP0c02 + physical id: a + capabilities: pnp + configuration: driver=system +``` + +**Output Analysis**: + +- Virtualization: systemd-detect-virt returns "none" - this is unexpected as the system is clearly running in a VM. Possible Reasons: + 1. VirtualBox's ARM virtualization may not be properly detected by systemd +- Hardware Info: Basic system information without clear virtualization indicators + +#### Reflection on Tool Effectiveness + +**Most Useful Tools**: + +1. lscpu - Provided clear CPU architecture and core count information +2. free -h - Gave immediate memory usage overview in human-readable format +3. ip addr - Clearly displayed network configuration and IP addresses +4. df -h - Showed disk usage in an easily understandable way + +### Key Observations + +- VirtualBox on Apple Silicon M4 works but shows some unusual behaviors in system detection +- The ARM64 Ubuntu installation is functional despite version information discrepancies +- Standard Linux system analysis tools work well, but virtualization detection is limited in this experimental setup +- The system successfully meets all functional requirements despite the architectural challenges diff --git a/labs/submission6.md b/labs/submission6.md new file mode 100644 index 00000000..d202d663 --- /dev/null +++ b/labs/submission6.md @@ -0,0 +1,752 @@ +# Lab 6 — Container Fundamentals with Docker + +## Task 1 — Container Lifecycle & Image Management + +### 1.1: Basic Container Operations + +**List Existing Containers:** + +Command: + +```bash +docker ps -a +``` + +Output: + +```bash +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +52e0c39051e6 deployment-streamlit "streamlit run strea…" 13 days ago Exited (0) 13 days ago streamlit_app +d4a514c5859c deployment-fastapi "uvicorn app:app --h…" 13 days ago Exited (0) 13 days ago fastapi_service +cfea53ca891b part2-backend "python3 /backend/ba…" 2 weeks ago Exited (0) 2 weeks ago part2-backend-1 +cc5ca22649eb part2-frontend "streamlit run /fron…" 2 weeks ago Exited (0) 2 weeks ago part2-frontend-1 +4092a7b2e811 semitechnologies/weaviate:1.24.4 "/bin/weaviate --hos…" 3 months ago Exited (0) 3 months ago datasetpreparing-weaviate-1 +``` + +**Pull Ubuntu Image:** + +Command + +```bash +docker pull ubuntu:latest +docker images ubuntu +``` + +Output + +```bash +latest: Pulling from library/ubuntu +7bdf644cff2e: Pull complete +Digest: sha256:728785b59223d755e3e5c5af178fab1be7031f3522c5ccd7a0b32b80d8248123 +Status: Downloaded newer image for ubuntu:latest +docker.io/library/ubuntu:latest +REPOSITORY TAG IMAGE ID CREATED SIZE +ubuntu latest 728785b59223 7 days ago 139MB +``` + +**Run Interactive Container:** + +Command + +```bash +docker run -it --name ubuntu_container ubuntu:latest +``` + +**Inside the container exploration:** + +Commands + +```bash +cat /etc/os-release +ps aux +exit +``` + +Outputs + +```bash +> PRETTY_NAME="Ubuntu 24.04.3 LTS" +NAME="Ubuntu" +VERSION_ID="24.04" +VERSION="24.04.3 LTS (Noble Numbat)" +VERSION_CODENAME=noble +ID=ubuntu +ID_LIKE=debian +HOME_URL="https://www.ubuntu.com/" +SUPPORT_URL="https://help.ubuntu.com/" +BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" +PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" +UBUNTU_CODENAME=noble +LOGO=ubuntu-logo + +> USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 0.0 0.0 4296 3612 pts/0 Ss 19:01 0:00 /bin/bash +root 10 0.0 0.0 7628 3468 pts/0 R+ 19:02 0:00 ps aux +``` + +### 1.2: Image Export and Dependency Analysis + +**Export the Image:** + +Commands + +```bash +docker save -o ubuntu_image.tar ubuntu:latest +ls -lh ubuntu_image.tar +``` + +Output + +```bash +-rw-------@ 1 rail staff 28M Oct 7 22:05 ubuntu_image.tar +``` + +**Attempt Image Removal:** + +Command + +```bash +docker rmi ubuntu:latest +``` + +Output + +```bash +Error response from daemon: conflict: unable to delete ubuntu:latest (must be forced) - container 22290317e64e is using its referenced image 728785b59223 +``` + +**Remove Container and Retry:** + +Commands + +```bash +docker rm ubuntu_container +docker rmi ubuntu:latest +``` + +Output + +```bash +ubuntu_container +Untagged: ubuntu:latest +Deleted: sha256:728785b59223d755e3e5c5af178fab1be7031f3522c5ccd7a0b32b80d8248123 +``` + +### Task 1 Analysis + +### Output of docker ps -a and docker images, same as Error message from the first removal attempt, provided above + +#### Image size and layer count + +The Ubuntu image size is **139MB** as shown in the `docker images` output. The image was created 7 days ago and uses the latest tag. The pull output shows one layer being downloaded (7bdf644cff2e), indicating this is a single-layer image. + +#### Tar file size comparison + +The exported tar file (`ubuntu_image.tar`) is **28MB**, which is significantly smaller than the reported Docker image size of 139MB. This difference occurs because: + +- Tar file contains compressed layers +- Docker's reported size includes uncompressed filesystem layers + +#### Analysis: Why does image removal fail when a container exists? + +Docker prevents image removal when containers (even stopped ones) depend on that image because: + +- Containers maintain a reference to their base image +- Removing the image would break the container's ability to restart +- The image contains the filesystem layers that the container needs + +#### Explanation: What is included in the exported tar file? + +The exported tar file contains: + +- All filesystem layers that make up the image +- Image metadata and configuration +- Layer manifests and checksums +- Repository and tag information +- The complete image structure needed to recreate the image on another system + +The tar file is typically larger than the reported image size because it includes uncompressed layers and metadata overhead. + +## Task 2 — Custom Image Creation & Analysis + +### 2.1: Deploy and Customize Nginx + +**Deploy Nginx Container:** + +Commands: + +```bash +docker run -d -p 80:80 --name nginx_container nginx +curl http://localhost +``` + +Output: + +```bash +> Unable to find image 'nginx:latest' locally +latest: Pulling from library/nginx +5f648e62e9ca: Pull complete +bb2e7b5dc9bc: Pull complete +f0838cc8bade: Pull complete +08b278be6f74: Pull complete +f4e51325a7cb: Pull complete +4c5dff34614b: Pull complete +e2a2ff429ed9: Pull complete +Digest: sha256:8adbdcb969e2676478ee2c7ad333956f0c8e0e4c5a7463f4611d7a2e7a7ff5dc +Status: Downloaded newer image for nginx:latest +c8ae211a51e94edd5911cedd9abafa68c7594d9c5cdb812fb9c4728175e51a0f + +> + + +Welcome to nginx! + + + +

Welcome to nginx!

+

If you see this page, the nginx web server is successfully installed and +working. Further configuration is required.

+ +

For online documentation and support please refer to +nginx.org.
+Commercial support is available at +nginx.com.

+ +

Thank you for using nginx.

+ + +``` + +**Create Custom HTML:** + +Created file `index.html` with content: + +```html + + +The best + + +

website

+ + +``` + +**Copy Custom Content:** + +Commands: + +```bash +docker cp index.html nginx_container:/usr/share/nginx/html/ +curl http://localhost +``` + +Output: + +```bash +> Successfully copied 2.05kB to nginx_container:/usr/share/nginx/html/ +> + +The best + + +

website

+ +% +``` + +### 2.2: Create and Test Custom Image + +**Commit Container to Image:** + +Commands: + +```bash +docker commit nginx_container my_website:latest +docker images my_website +``` + +Output: + +```bash +> sha256:42f8d80c0d9216839d02b812853392bfd804e8acd4d79eb32082d92a55cd08cc +> REPOSITORY TAG IMAGE ID CREATED SIZE +my_website latest 42f8d80c0d92 10 seconds ago 281MB +``` + +**Remove Original and Deploy from Custom Image:** + +Commands: + +```bash +docker rm -f nginx_container +docker run -d -p 80:80 --name my_website_container my_website:latest +curl http://localhost +``` + +Output: + +```bash +> nginx_container +> 9337c00f50349d9e6285839a2dc7ce5802469ea6274647f0f82484b00d5ef78c +> + +The best + + +

website

+ +% +``` + +**Analyze Filesystem Changes:** + +Command: + +```bash +docker diff my_website_container +``` + +Output: + +```bash +C /run +C /run/nginx.pid +C /etc +C /etc/nginx +C /etc/nginx/conf.d +C /etc/nginx/conf.d/default.conf +``` + +### Task 2 Analysis + +#### Screenshot or output of original Nginx welcome page + +Provided above + +#### Custom HTML content and verification + +The custom `index.html` file contains a simple HTML structure with "The best" as the title and "website" as the main heading. After copying to the container and testing with curl, the output showed this custom content instead of the default Nginx welcome page. Output of `curl http://localhost` command provided above. + +#### Output of docker diff analysis + +Result of `docker diff my_website_container` also provided above. + +#### Analysis: Explain the diff output (A=Added, C=Changed, D=Deleted) + +All listed differences shows `C` predicate, indicating that this files/directories were changed. + +#### Reflection: Advantages and disadvantages of docker commit vs Dockerfile + +**Docker Commit Advantages:** + +- Quick and easy for one-off customizations +- Captures exact current state of container +- Useful for debugging and experimentation +- No need to write Dockerfile syntax + +**Docker Commit Disadvantages:** + +- Not reproducible or version-controlled +- No documentation of what changes were made +- Creates larger images with unnecessary layers +- Not suitable for production workflows +- Difficult to maintain and update + +**Dockerfile Advantages:** + +- Reproducible and version-controlled +- Shows exactly what was done +- Optimized layer caching and smaller images +- Easy to modify and rebuild + +**Dockerfile Disadvantages:** + +- More time-consuming for simple changes +- Need to understand layer optimization + +## Task 3 — Container Networking & Service Discovery + +### 3.1: Create Custom Network + +**Create Bridge Network:** + +Commands: + +```bash +docker network create lab_network +docker network ls +``` + +Output: + +```bash +> 40d06cefd2ce2afbd8e561fde72791200c1821e090cc90c6c05fda946549333d +> NETWORK ID NAME DRIVER SCOPE +17368f681773 bridge bridge local +07b957ec2fdf host host local +40d06cefd2ce lab_network bridge local +5b40e4ab87be none null local +``` + +**Deploy Connected Containers:** + +Commands: + +```bash +docker run -dit --network lab_network --name container1 alpine ash +docker run -dit --network lab_network --name container2 alpine ash +``` + +Output: + +```bash +> 7092eca639c548e268748297959877aa95907803606626e3d9eb664890dc9049 # id of cont1 +> 52004a3a51a3730ac75ab83644aeb2547b4a32ef6e560ef106d72b82a12b7525 # id of cont2 +``` + +### 3.2: Test Connectivity and DNS + +**Test Container-to-Container Communication:** + +Command: + +```bash +docker exec container1 ping -c 3 container2 +``` + +Output: + +```bash +PING container2 (172.18.0.3): 56 data bytes +64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.097 ms +64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.164 ms +64 bytes from 172.18.0.3: seq=2 ttl=64 time=0.180 ms + +--- container2 ping statistics --- +3 packets transmitted, 3 packets received, 0% packet loss +round-trip min/avg/max = 0.097/0.147/0.180 ms +``` + +**Inspect Network Details:** + +Command: + +```bash +docker network inspect lab_network +``` + +Output: + +```bash +[ + { + "Name": "lab_network", + "Id": "40d06cefd2ce2afbd8e561fde72791200c1821e090cc90c6c05fda946549333d", + "Created": "2025-10-07T19:34:56.133096421Z", + "Scope": "local", + "Driver": "bridge", + "EnableIPv4": true, + "EnableIPv6": false, + "IPAM": { + "Driver": "default", + "Options": {}, + "Config": [ + { + "Subnet": "172.18.0.0/16", + "Gateway": "172.18.0.1" + } + ] + }, + "Internal": false, + "Attachable": false, + "Ingress": false, + "ConfigFrom": { + "Network": "" + }, + "ConfigOnly": false, + "Containers": { + "52004a3a51a3730ac75ab83644aeb2547b4a32ef6e560ef106d72b82a12b7525": { + "Name": "container2", + "EndpointID": "11bfc21aa8734d49a657515231467b412ff69fb9f276e8046b526245b2f468a8", + "MacAddress": "76:1d:76:c6:f6:e3", + "IPv4Address": "172.18.0.3/16", + "IPv6Address": "" + }, + "7092eca639c548e268748297959877aa95907803606626e3d9eb664890dc9049": { + "Name": "container1", + "EndpointID": "cc7d4412dabe917fbec8e36bfcc3c0ce11d63fea9370ed35b9ceea31873762cc", + "MacAddress": "7e:73:6b:31:1b:c4", + "IPv4Address": "172.18.0.2/16", + "IPv6Address": "" + } + }, + "Options": { + "com.docker.network.enable_ipv4": "true", + "com.docker.network.enable_ipv6": "false" + }, + "Labels": {} + } +] +``` + +**Check DNS Resolution:** + +Command: + +```bash +docker exec container1 nslookup container2 +``` + +Output: + +```bash +Server: 127.0.0.11 +Address: 127.0.0.11:53 + +Non-authoritative answer: + +Non-authoritative answer: +Name: container2 +Address: 172.18.0.3 +``` + +### Task 3 Analysis + +#### Output of ping command showing successful connectivity + +Output provided above. +The ping command successfully connected container1 to container2: + +- **Target**: container2 resolved to IP address 172.18.0.3 +- **Response times**: 0.097ms, 0.164ms, 0.180ms (average: 0.147ms) +- **Success rate**: 100% (3 packets transmitted, 3 received, 0% packet loss) +- **Network performance**: Very low latency, indicating containers are on same host + +#### Network inspection output showing both containers' IP addresses + +Output provided above. + +From the network inspection JSON output: + +- **container1**: 172.18.0.2/16 (MAC: 7e:73:6b:31:1b:c4) +- **container2**: 172.18.0.3/16 (MAC: 76:1d:76:c6:f6:e3) +- **Network subnet**: 172.18.0.0/16 +- **Gateway**: 172.18.0.1 +- **Network ID**: 40d06cefd2ce2afbd8e561fde72791200c1821e090cc90c6c05fda946549333d + +#### DNS resolution output + +Output provided above. +The nslookup command showed: + +- **DNS Server**: 127.0.0.11:53 (Docker's embedded DNS server) +- **Resolution**: container2 → 172.18.0.3 +- **Response type**: Non-authoritative answer + +#### Analysis: How does Docker's internal DNS enable container-to-container communication by name? + +Docker's internal DNS service provides automatic service discovery within user-defined networks by: + +- **Embedded DNS Server**: Docker runs an internal DNS server (typically at 127.0.0.11) within each container +- **Name Resolution**: Container names are automatically registered as DNS entries in the network +- **Dynamic Updates**: When containers join or leave the network, DNS records are updated automatically +- **Network Isolation**: DNS resolution is scoped to the specific network, preventing cross-network name conflicts +- **Backward Compatibility**: Works with standard networking tools and applications expecting DNS resolution + +#### Comparison: What advantages does user-defined bridge networks provide over the default bridge network? + +**User-Defined Bridge Network Advantages:** + +1. **Automatic DNS Resolution**: Container names automatically resolve to IP addresses +2. **Better Isolation**: Network-level isolation between different applications +3. **Configurable**: Can specify subnet, IP range, and gateway +4. **Hot-pluggable**: Containers can be connected/disconnected without stopping +5. **Advanced Configuration**: Support for custom bridge settings and options + +**Default Bridge Network Limitations:** + +1. **No Automatic DNS**: Must use `--link` (deprecated) or IP addresses for communication +2. **Single Network**: All containers share the same network space +3. **Limited Isolation**: Less secure separation between containers +4. **Legacy Design**: Based on older Docker networking concepts +5. **Manual IP Management**: Requires manual tracking of container IP addresses + +User-defined networks provide a more modern, scalable, and secure approach to container networking. + +## Task 4 — Data Persistence with Volumes + +### 4.1: Create and Use Volume + +**Create Named Volume:** + +Commands: + +```bash +docker volume create app_data +docker volume ls +``` + +Output: + +```bash +> app_data +> DRIVER VOLUME NAME +local app_data +local datasetpreparing_weaviate_data +``` + +**Deploy Container with Volume:** + +Command: + +```bash +docker run -d -p 80:80 -v app_data:/usr/share/nginx/html --name web nginx +``` + +Output: + +```bash +c4cb32981f0eb4daf908b07b2fb2ac33dc8bc4cdab43ee0df7228120e3c0a766 +``` + +**Add Custom Content:** + +Updated file `index.html` with content: + +```html +

Persistent Data

+``` + +Commands: + +```bash +docker cp index.html web:/usr/share/nginx/html/ +curl http://localhost +``` + +Output: + +```bash +> Successfully copied 2.05kB to web:/usr/share/nginx/html/ +>

Persistent Data

% +``` + +### 4.2: Verify Persistence + +**Destroy and Recreate Container:** + +Commands: + +```bash +docker stop web && docker rm web +docker run -d -p 80:80 -v app_data:/usr/share/nginx/html --name web_new nginx +curl http://localhost +``` + +Output: + +```bash +> web +> web +> efc0021e99cc479beb77de5fa3cdd336ec72cf21df1c52f21c9744332042bfd4 +>

Persistent Data

% +``` + +**Inspect Volume:** + +Command: + +```bash +docker volume inspect app_data +``` + +Output: + +```bash +[ + { + "CreatedAt": "2025-10-07T19:47:04Z", + "Driver": "local", + "Labels": null, + "Mountpoint": "/var/lib/docker/volumes/app_data/_data", + "Name": "app_data", + "Options": null, + "Scope": "local" + } +] +``` + +### Task 4 Analysis + +#### Custom HTML content used + +Provided above + +#### Output of curl showing content persists after container recreation + +Provided above + +#### Volume inspection output showing mount point + +Provided above + +#### Analysis: Why is data persistence important in containerized applications? + +Data persistence is crucial in containerized applications for several reasons: + +1. **Stateful Applications**: Many applications need to maintain state (databases, user uploads, configuration files) that must survive container restarts +2. **Container Lifecycle Independence**: Containers are ephemeral by design - they can be stopped, removed, and recreated at any time +3. **Data Safety**: Without persistence, all data created inside a container is lost when the container is removed +4. **Scalability**: Enables horizontal scaling where multiple container instances can share the same persistent data +5. **Backup and Recovery**: Persistent volumes can be backed up and restored independently of containers +6. **Development Workflow**: Allows developers to update container images while preserving application data +7. **Production Reliability**: Critical for production systems where data loss is unacceptable + +#### Comparison: Explain the differences between volumes, bind mounts, and container storage. When would you use each? + +**Docker Volumes:** + +- **Management**: Fully managed by Docker +- **Location**: Stored in Docker's internal directory structure +- **Portability**: Work across different Docker hosts and platforms +- **Performance**: Optimized for container workloads +- **Use Cases**: + - Database storage + - Application data that needs to persist + - Sharing data between containers + - Production deployments + +**Bind Mounts:** + +- **Management**: Direct mapping to host filesystem paths +- **Location**: Any directory on the host system +- **Portability**: Host-dependent (paths must exist on target host) +- **Performance**: Direct filesystem access (can be faster) +- **Use Cases**: + - Development environments (live code editing) + - Configuration files from host + - Logs that need host access + - Integration with host-based tools + +**Container Storage:** + +- **Management**: Part of container's writable layer +- **Location**: Inside container filesystem +- **Portability**: Lost when container is removed +- **Performance**: Varies by storage driver +- **Use Cases**: + - Temporary files and caches + - Application logs (if externally collected) + - Stateless applications + - Processing temporary data + +**Usage:** + +- **Use Volumes**: When you need persistent, portable data storage managed by Docker +- **Use Bind Mounts**: When you need direct host filesystem access or development workflows +- **Use Container Storage**: When data is temporary or the application is truly stateless diff --git a/labs/submission7.md b/labs/submission7.md new file mode 100644 index 00000000..79c5c3e2 --- /dev/null +++ b/labs/submission7.md @@ -0,0 +1,479 @@ +# Lab 7 — GitOps and Configuration Management + +## Task 1 — Git State Reconciliation + +### 1.1: Setup Desired State Configuration + +**Make directory:** + +Commands: + +```bash +mkdir gitops-lab && cd gitops-lab +``` + +**Create Desired State (Source of Truth):** + +Commands: + +```bash +echo "version: 1.0" > desired-state.txt +echo "app: myapp" >> desired-state.txt +echo "replicas: 3" >> desired-state.txt +``` + +**Initial desired-state.txt contents:** + +```txt +version: 1.0 +app: myapp +replicas: 3 +``` + +**Simulate Current Cluster State:** + +Commands: + +```bash +cp desired-state.txt current-state.txt +echo "Initial state synchronized" +``` + +**Initial current-state.txt contents:** + +```txt +version: 1.0 +app: myapp +replicas: 3 +``` + +### 1.2: Create Reconciliation Loop + +**Create Reconciliation Script:** + +Created file `reconcile.sh`: + +```bash +DESIRED=$(cat desired-state.txt) +CURRENT=$(cat current-state.txt) + +if [ "$DESIRED" != "$CURRENT" ]; then + echo "$(date) - ⚠️ DRIFT DETECTED!" + echo "Reconciling current state with desired state..." + cp desired-state.txt current-state.txt + echo "$(date) - ✅ Reconciliation complete" +else + echo "$(date) - ✅ States synchronized" +fi +``` + +**Make Script Executable:** + +Command: + +```bash +chmod +x reconcile.sh +``` + +### 1.3: Test Manual Drift Detection + +**Simulate Manual Drift:** + +Commands: + +```bash +echo "version: 2.0" > current-state.txt +echo "app: myapp" >> current-state.txt +echo "replicas: 5" >> current-state.txt +``` + +**Current state after drift:** + +```txt +version: 2.0 +app: myapp +replicas: 5 +``` + +**Run Reconciliation Manually:** + +Commands: + +```bash +./reconcile.sh +diff desired-state.txt current-state.txt +``` + +Output: + +```bash +Mon Oct 13 17:42:45 MSK 2025 - ⚠️ DRIFT DETECTED! +Reconciling current state with desired state... +Mon Oct 13 17:42:45 MSK 2025 - ✅ Reconciliation complete +``` + +**Verify Drift Was Fixed:** + +Command: + +```bash +cat current-state.txt +``` + +Output: + +```txt +version: 1.0 +app: myapp +replicas: 3 +``` + +### 1.4: Automated Continuous Reconciliation + +**Start Continuous Reconciliation Loop:** + +Command: + +```bash +watch -n 5 ./reconcile.sh +``` + +**In Another Terminal, Trigger Drift:** + +Commands: + +```bash +cd gitops-lab +echo "replicas: 10" >> current-state.txt +``` + +**Observe Auto-Healing:** + +Output from continuous reconciliation loop: + +```bash +Mon Oct 13 17:46:36 MSK 2025 - ✅ States synchronized +Mon Oct 13 17:46:41 MSK 2025 - ⚠️ DRIFT DETECTED! +Reconciling current state with desired state... +Mon Oct 13 17:46:41 MSK 2025 - ✅ Reconciliation complete +Mon Oct 13 17:46:46 MSK 2025 - ✅ States synchronized +``` + +### Task 1 Analysis + +#### Initial desired-state.txt and current-state.txt contents + +Already provided above (1.1: Initialize Git Repository and Desired State) + +#### Screenshot or output of drift detection and reconciliation + +Already provided above. (1.3: Test Manual Drift Detection) + +#### Output showing synchronized state after reconciliation + +Already provided above. (1.3: Test Manual Drift Detection) + +#### Output from continuous reconciliation loop detecting auto-healing + +Already provided above. (1.4: Automated Continuous Reconciliation) + +#### Analysis: Explain the GitOps reconciliation loop. How does this prevent configuration drift? + +The GitOps reconciliation loop works through a continuous control mechanism: + +1. **Desired State Definition**: Git repository serves as the single source of truth for system configuration +2. **Current State Monitoring**: Continuously monitors the actual system state +3. **Drift Detection**: Compares desired state (Git) with current state (system) at regular intervals +4. **Automatic Reconciliation**: When differences are detected, automatically applies changes to align current state with desired state +5. **Convergence**: System continuously converges toward the desired state defined in Git + +**Prevention of Configuration Drift:** + +- **Automated Detection**: Regular comparison prevents drift from accumulating unnoticed +- **Self-Healing**: Automatic correction eliminates manual intervention delays +- Git as source of truth prevents ad-hoc changes from persisting +- All changes are tracked through Git commits +- **Rollback Capability**: Easy reversion to previous known-good states + +#### Reflection: What advantages does declarative configuration have over imperative commands in production? + +**Declarative Configuration Advantages:** + +1. Same configuration always produces same result, regardless of current state +2. Configuration files describe the desired end state clearly +3. **Version Control**: Easy to track, review, and rollback configuration changes +4. **Predictability**: Outcomes are deterministic and repeatable +5. **Automation-Friendly**: Machines can easily understand and apply declarative configurations +6. Can detect and correct drift from desired state +7. **Scalability**: Works consistently across multiple environments and systems + +**Imperative Commands Disadvantages:** + +1. Commands must be executed in specific sequence +2. Need to know current state to determine correct commands +3. Manual execution increases risk of mistakes +4. **No Self-Healing**: Cannot automatically detect or correct configuration drift +5. Command history doesn't represent current system state +6. **Hard to Replicate**: Recreating exact system state requires remembering all commands + +**Production Impact:** + +- **Reliability**: Declarative systems are more predictable and less prone to human error +- **Maintainability**: Easier to understand and modify system configuration +- **Compliance**: Better audit trails and change management +- **Disaster Recovery**: Faster and more reliable system restoration +- **Team Collaboration**: Configuration as code enables better collaboration and code review processes + +## Task 2 — GitOps Health Monitoring + +### 2.1: Create Health Check Script + +**Create Health Check Script:** + +Created file `healthcheck.sh`: + +```bash +#!/bin/bash +# healthcheck.sh - Monitor GitOps sync health + +DESIRED_MD5=$(md5sum desired-state.txt | awk '{print $1}') +CURRENT_MD5=$(md5sum current-state.txt | awk '{print $1}') + +if [ "$DESIRED_MD5" != "$CURRENT_MD5" ]; then + echo "$(date) - ❌ CRITICAL: State mismatch detected!" | tee -a health.log + echo " Desired MD5: $DESIRED_MD5" | tee -a health.log + echo " Current MD5: $CURRENT_MD5" | tee -a health.log +else + echo "$(date) - ✅ OK: States synchronized" | tee -a health.log +fi +``` + +**Make Script Executable:** + +Command: + +```bash +chmod +x healthcheck.sh +``` + +### 2.2: Test Health Monitoring + +**Test Healthy State:** + +Commands: + +```bash +./healthcheck.sh +cat health.log +``` + +Output: + +```bash +Mon Oct 13 18:02:27 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:02:27 MSK 2025 - ✅ OK: States synchronized +``` + +**Simulate Configuration Drift:** + +Command: + +```bash +echo "unapproved-change: true" >> current-state.txt +``` + +**Run Health Check on Drifted State:** + +Commands: + +```bash +./healthcheck.sh +cat health.log +``` + +Output: + +```bash +Mon Oct 13 18:03:13 MSK 2025 - ❌ CRITICAL: State mismatch detected! + Desired MD5: a15a1a4f965ecd8f9e23a33a6b543155 + Current MD5: 48168ff3ab5ffc0214e81c7e2ee356f5 +Mon Oct 13 18:02:27 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:03:13 MSK 2025 - ❌ CRITICAL: State mismatch detected! + Desired MD5: a15a1a4f965ecd8f9e23a33a6b543155 + Current MD5: 48168ff3ab5ffc0214e81c7e2ee356f5 +``` + +**Fix Drift and Verify:** + +Commands: + +```bash +./reconcile.sh +./healthcheck.sh +cat health.log +``` + +Output: + +```bash +Mon Oct 13 18:05:05 MSK 2025 - ⚠️ DRIFT DETECTED! +Reconciling current state with desired state... +Mon Oct 13 18:05:05 MSK 2025 - ✅ Reconciliation complete +Mon Oct 13 18:05:05 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:02:27 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:03:13 MSK 2025 - ❌ CRITICAL: State mismatch detected! + Desired MD5: a15a1a4f965ecd8f9e23a33a6b543155 + Current MD5: 48168ff3ab5ffc0214e81c7e2ee356f5 +Mon Oct 13 18:05:05 MSK 2025 - ✅ OK: States synchronized +``` + +### 2.3: Continuous Health Monitoring + +**Create Combined Monitoring Script:** + +Created file `monitor.sh`: + +```bash +#!/bin/bash +# monitor.sh - Combined reconciliation and health monitoring + +echo "Starting GitOps monitoring..." +for i in {1..10}; do + echo "\n--- Check #$i ---" + ./healthcheck.sh + ./reconcile.sh + sleep 3 +done +``` + +Command: + +```bash +chmod +x monitor.sh +``` + +**Run Monitoring Loop:** + +Command: + +```bash +./monitor.sh +``` + +Output: + +```bash +Starting GitOps monitoring... +\n--- Check #1 --- +Mon Oct 13 18:07:20 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:20 MSK 2025 - ✅ States synchronized +\n--- Check #2 --- +Mon Oct 13 18:07:23 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:23 MSK 2025 - ✅ States synchronized +\n--- Check #3 --- +Mon Oct 13 18:07:26 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:26 MSK 2025 - ✅ States synchronized +\n--- Check #4 --- +Mon Oct 13 18:07:29 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:29 MSK 2025 - ✅ States synchronized +\n--- Check #5 --- +Mon Oct 13 18:07:32 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:32 MSK 2025 - ✅ States synchronized +\n--- Check #6 --- +Mon Oct 13 18:07:35 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:35 MSK 2025 - ✅ States synchronized +``` + +**Review Complete Health Log:** + +Command: + +```bash +cat health.log +``` + +Output: + +```bash +Mon Oct 13 18:02:27 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:03:13 MSK 2025 - ❌ CRITICAL: State mismatch detected! + Desired MD5: a15a1a4f965ecd8f9e23a33a6b543155 + Current MD5: 48168ff3ab5ffc0214e81c7e2ee356f5 +Mon Oct 13 18:05:05 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:20 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:23 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:26 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:29 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:32 MSK 2025 - ✅ OK: States synchronized +Mon Oct 13 18:07:35 MSK 2025 - ✅ OK: States synchronized +``` + +### Task 2 Analysis + +#### Contents of healthcheck.sh script + +Already provided above in section 2.1 + +#### Output showing "OK" status when states match + +Already provided in sections 2.2, 2.3 + +#### Output showing "CRITICAL" status when drift is detected + +Already provided in sections 2.2, 2.3 + +#### Complete health.log file showing multiple checks + +Already provided in section 2.3 + +#### Output from monitor.sh showing continuous monitoring + +Already provided in section 2.3 + +#### Analysis: How do checksums (MD5) help detect configuration changes? + +Checksums like MD5 provide efficient change detection by: + +1. **Content Fingerprinting**: MD5 creates a unique 128-bit hash representing the entire file content +2. **Fast Comparison**: Instead of comparing file contents line-by-line, we compare short hash values +3. **Sensitive Detection**: Any change, even a single character, produces a completely different hash +4. **Efficient Storage**: Hash values are small and can be logged/stored efficiently +5. **Version Agnostic**: Works regardless of file format or content structure +6. **Tamper Detection**: Can detect unauthorized modifications quickly + +**In GitOps Context:** + +- **Drift Detection**: Quickly identifies when actual state differs from desired state +- **Change Validation**: Ensures configurations haven't been modified outside the GitOps process +- **Audit Trail**: Provides verifiable proof of configuration integrity over time +- **Performance**: Avoids expensive file comparisons in large configurations + +#### Comparison: How does this relate to GitOps tools like ArgoCD's "Sync Status"? + +**Similarities with ArgoCD Sync Status:** + +1. **Continuous Monitoring**: Both continuously monitor for differences between desired and actual state +2. **State Comparison**: Compare Git repository (source of truth) with cluster state +3. **Health Reporting**: Provide clear status indicators (Synced/OutOfSync vs OK/CRITICAL) +4. **Automatic Detection**: Detect drift without manual intervention +5. **Remediation Triggers**: Can trigger automatic or manual reconciliation + +**ArgoCD Advanced Features:** + +1. **Kubernetes Integration**: Directly compares Kubernetes manifests with cluster resources +2. **Resource-Level Granularity**: Shows exactly which resources are out of sync +3. **Visual Dashboard**: Provides UI for monitoring sync status across multiple applications +4. **Selective Sync**: Can sync specific resources or exclude certain fields +5. **Rollback Capabilities**: Easy rollback to previous Git commits +6. **Multi-Cluster Support**: Manages sync across multiple Kubernetes clusters + +**Our Implementation vs ArgoCD:** + +| Feature | Our Script | ArgoCD | +|---------|------------|---------| +| Scope | File-based simulation | Kubernetes resources | +| Detection Method | MD5 checksums | Resource comparison | +| Interface | Command line | Web UI + CLI | +| Remediation | Script-based | Kubernetes API | +| Scalability | Single application | Enterprise-scale | +| Integration | Standalone | Kubernetes-native | diff --git a/labs/submission8.md b/labs/submission8.md new file mode 100644 index 00000000..7bcd464c --- /dev/null +++ b/labs/submission8.md @@ -0,0 +1,441 @@ +# Lab 8 — Site Reliability Engineering (SRE) + +## Task 1 — Key Metrics for SRE and System Analysis + +### 1.1: Monitor System Resources + +**Install Monitoring Tools (macOS):** + +Commands: + +```bash +brew install htop +``` + +**Monitor CPU, Memory, and I/O Usage:** + +Commands: + +```bash +htop +iostat -x 1 5 +``` + +Output: + +```bash +> disk0 + KB/t tps MB/s + 15.09 109 1.61 + 0.00 0 0.00 + 4.00 2 0.01 + 4.00 1 0.00 + 5.00 12 0.06 +``` + +**Identify Top Resource Consumers:** + +Commands: + +```bash +top -l 2 -o cpu -n 10 | tail -20 +top -l 1 -o rsize -n 10 +sudo fs_usage -w -f diskio | head -20 +``` + +Output: + +```bash +# Top 3 CPU consumers WindowServer, PacketTunnel, Browser Helper +Load Avg: 2.42, 3.01, 3.08 +CPU usage: 12.95% user, 6.84% sys, 80.20% idle +SharedLibs: 663M resident, 129M data, 81M linkedit. +MemRegions: 0 total, 0B resident, 409M private, 2074M shared. +PhysMem: 15G used (2379M wired, 1692M compressor), 183M unused. +VM: 293T vsize, 5703M framework vsize, 1549611(0) swapins, 2461399(0) swapouts. +Networks: packets: 307614100/423G in, 125002630/188G out. +Disks: 46179279/619G read, 50602156/777G written. + +PID COMMAND %CPU TIME #TH #WQ #PORTS MEM PURG CMPRS PGRP PPID STATE BOOSTS %CPU_ME %CPU_OTHRS UID FAULTS COW MSGSENT MSGRECV SYSBSD SYSMACH CSW PAGEINS IDLEW POWER INSTRS CYCLES JETPRI USER #MREGS RPRVT VPRVT VSIZE KPRVT KSHRD +382 WindowServer 45.3 26:36:40 24 7 22070 852M+ 28M- 176M 382 1 sleeping *0[1] 0.63386 4.26703 88 61326071+ 518900 655383198+ 860638421+ 1640473525+ 2147483647 662647337+ 7544 54032052+ 52.2 769463893 928874078 170 _windowserver N/A N/A N/A N/A N/A N/A +4686 PacketTunnel 20.1 32:27.92 21 2 116 97M- 0B 17M 4686 1 sleeping *0[1] 0.10140 0.18855 501 14529 245 346253+ 17439+ 62530835+ 122815+ 25731603+ 716 209148+ 20.5 718164659 668232020 100 rail N/A N/A N/A N/A N/A N/A +60287 Browser Helper ( 16.4 01:57:21 24 3 458 370M 107M 47M 60283 60283 sleeping *1[349799] 3.19188 0.00000 501 6043142+ 980 106546092+ 41798379+ 83078853+ 323402994+ 75432448+ 2267 4432640+ 17.8 220687615 341951537 180 rail N/A N/A N/A N/A N/A N/A + +``` + +Output: + +```bash +# Top 3 Memory consumers Telegram, Finder, WindowServer +Processes: 650 total, 2 running, 648 sleeping, 3371 threads +2025/10/25 11:39:05 +Load Avg: 3.48, 3.21, 3.15 +CPU usage: 7.69% user, 12.37% sys, 79.93% idle +SharedLibs: 663M resident, 129M data, 81M linkedit. +MemRegions: 473293 total, 6096M resident, 377M private, 2038M shared. +PhysMem: 15G used (2396M wired, 1790M compressor), 369M unused. +VM: 292T vsize, 5703M framework vsize, 1549611(0) swapins, 2461399(0) swapouts. +Networks: packets: 307657043/423G in, 125036358/188G out. +Disks: 46180315/619G read, 50607688/777G written. + +PID COMMAND %CPU TIME #TH #WQ #PORTS MEM PURG CMPRS PGRP PPID STATE BOOSTS %CPU_ME %CPU_OTHRS UID FAULTS COW MSGSENT MSGRECV SYSBSD SYSMACH CSW PAGEINS IDLEW POWER INSTRS CYCLES JETPRI USER #MREGS RPRVT VPRVT VSIZE KPRVT KSHRD +959 Telegram 0.0 08:31:01 75 7 2773 1906M 0B 1140M 959 1 sleeping *1[68151] 0.00000 0.00000 501 36340895 30126 163213296 13203175 555977174 254107375 289848210 109234 10002870 0.0 0 0 100 rail N/A N/A N/A N/A N/A N/A +592 Finder 0.0 25:49.82 5 2 574 858M 0B 810M 592 1 sleeping *5[4] 0.00000 0.00000 501 8593852 532 2858208 2043980 161104776 12148866 5993138 20555 36818 0.0 0 0 100 rail N/A N/A N/A N/A N/A N/A +382 WindowServer 0.0 26:37:35 23 6 22067 826M 27M 183M 382 1 sleeping *0[1] 0.00000 0.00000 88 61365648 518900 655853240 861366062 1641860731 2147483647 663108062 7544 54051421 0.0 0 0 170 _windowserver N/A N/A N/A N/A N/A N/A +``` + +Output: + +```bash +#Top 3 I/O consumers Telegram, mds_stores, PacketTunnel +11:45:11.292870 RdData[S] D=0x00dfcafc B=0x4000 /dev/disk3s5 0.000611 W locationd.12904885 +11:45:11.321281 WrData[A] D=0x00408d8c B=0x1000 /dev/disk3s5 Library/Containers/ru.keepcoder.Telegram/Data/tmp/TemporaryItems/NSIRD_Telegram_XPloIu/dots_voice_dots#FFFFFF:0.85-v68-lzfse-bs5760-lt259200-map 0.000073 W Telegram.12899463 +11:45:11.332228 RdData[ST3] D=0x0040b4d6 B=0x1000 /dev/disk3s5 /System/Volumes/Data/.Spotlight-V100/Store-V2/6D68E914-C636-4716-8399-BF836DEEE211/journalAttr.1453 0.000076 W mds_stores.12906266 +11:45:11.475472 WrData[S] D=0x00000471 B=0x43 /dev/NOTFOUND /dev/null 0.000002 W PacketTunnel.12848328 +11:45:11.544928 RdData[S] D=0x00775c72 B=0x4000 /dev/disk3s5 /Users/rail/Library/Group Containers/group.hossin.asaadi.V2Box/error.log 0.000361 W PacketTunnel.12382029 +11:45:11.893541 RdData[A] D=0x01eb548d B=0x4000 /dev/disk3s1s1 /bin/bash/..namedfork/rsrc 0.000144 W bash.12909582 +11:45:12.087476 RdData[S] D=0x00d37bb2 B=0x4000 /dev/disk3s5 /Users/rail/Library/Application Support/firestore/Arc/bcny-arc-server/main/000732.log 0.000821 W Arc.12907957 +``` + +### 1.2: Disk Space Management + +**Check Disk Usage:** + +Commands: + +```bash +df -h + +# macOS-specific: Check actual data directories instead of empty /var +sudo du -h ~/Library | sort -rh | head -n 5 +sudo du -h /Applications | sort -rh | head -n 5 +du -h ~/Downloads | sort -rh | head -n 5 +``` + +Output: + +```bash +> +Filesystem Size Used Avail Capacity iused ifree %iused Mounted on +/dev/disk3s1s1 228Gi 10Gi 61Gi 15% 426k 639M 0% / +devfs 201Ki 201Ki 0Bi 100% 696 0 100% /dev +/dev/disk3s6 228Gi 2.0Gi 61Gi 4% 2 639M 0% /System/Volumes/VM +/dev/disk3s2 228Gi 6.6Gi 61Gi 10% 1.2k 639M 0% /System/Volumes/Preboot +/dev/disk3s4 228Gi 2.0Mi 61Gi 1% 55 639M 0% /System/Volumes/Update +/dev/disk1s2 500Mi 6.0Mi 483Mi 2% 1 4.9M 0% /System/Volumes/xarts +/dev/disk1s1 500Mi 5.8Mi 483Mi 2% 29 4.9M 0% /System/Volumes/iSCPreboot +/dev/disk1s3 500Mi 872Ki 483Mi 1% 93 4.9M 0% /System/Volumes/Hardware +/dev/disk3s5 228Gi 147Gi 61Gi 71% 1.6M 639M 0% /System/Volumes/Data +map auto_home 0Bi 0Bi 0Bi 100% 0 0 - /System/Volumes/Data/home +> + 68G /Users/rail/Library + 20G /Users/rail/Library/Containers + 18G /Users/rail/Library/Application Support + 17G /Users/rail/Library/Containers/com.docker.docker/Data/vms/0/data + 17G /Users/rail/Library/Containers/com.docker.docker/Data/vms/0 +> + 12G /Applications +3.2G /Applications/iMovie.app/Contents +3.2G /Applications/iMovie.app +2.0G /Applications/Docker.app/Contents +2.0G /Applications/Docker.app +> +182M /Users/rail/Downloads +168M /Users/rail/Downloads/kaggle/working/checkpoints +168M /Users/rail/Downloads/kaggle/working +168M /Users/rail/Downloads/kaggle +``` + +**Identify Largest Files:** + +Commands: + +```bash +# macOS-specific: Find largest files in common locations +du -ah ~ | sort -rh | head -10 +``` + +Output: + +```bash +105G /Users/rail + 68G /Users/rail/Library + 20G /Users/rail/Library/Containers + 18G /Users/rail/Library/Application Support + 17G /Users/rail/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw + 17G /Users/rail/Library/Containers/com.docker.docker/Data/vms/0/data + 17G /Users/rail/Library/Containers/com.docker.docker/Data/vms/0 + 17G /Users/rail/Library/Containers/com.docker.docker/Data/vms + 17G /Users/rail/Library/Containers/com.docker.docker/Data + 17G /Users/rail/Library/Containers/com.docker.docker +``` + +### Task 1 Analysis + +#### Top 3 most consuming applications + +**CPU Usage:** + +1. **WindowServer** - 45.3% CPU (Graphics/display server managing all visual output) +2. **PacketTunnel** - 20.1% CPU (VPN tunnel process handling encrypted traffic) +3. **Browser Helper (Plugin)** - 16.4% CPU (Web browser plugin/extension process) + +**Memory Usage:** + +1. **Telegram** - 1906M (1.9 GB) - Messaging application with rich media content +2. **Finder** - 858M (858 MB) - macOS file manager and desktop interface +3. **WindowServer** - 826M (826 MB) - Graphics/display server with window management + +**I/O Usage:** +Based on fs_usage disk I/O monitoring: + +1. **Telegram** - Writing temporary voice/media files (4KB writes to temp directories) +2. **mds_stores** - Spotlight indexing operations (4KB reads from index files) +3. **PacketTunnel** - VPN log file operations (16KB reads from error.log files) + +#### Command outputs showing resource consumption + +Already provided above + +#### Top 3 largest files/directories + +Since `/var` is empty on macOS (0B), the largest space consumers are: + +1. **Docker.raw** - 17GB (/Users/rail/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw) - Docker VM disk image +2. **User Library** - 68GB total (/Users/rail/Library) - Application data and containers +3. **iMovie.app** - 3.2GB (/Applications/iMovie.app) - Video editing application + +#### Analysis: What patterns do you observe in resource utilization? + +**CPU Patterns:** + +- **Graphics workload dominance**: WindowServer (45.3%) indicates heavy display/graphics processing, likely from multiple monitors or graphics-intensive applications +- **Network security overhead**: PacketTunnel (20.1%) shows significant VPN encryption/decryption load +- **Web browsing impact**: Browser Helper consuming 16.4% suggests active web browsing with plugins/extensions +- **Good performance headroom**: 80% CPU idle time provides capacity for additional workloads + +**Memory Patterns:** + +- **Communication app intensity**: Telegram's 1.9GB usage suggests rich media content (voice messages, images, videos) +- **System service baseline**: WindowServer (826MB) and Finder (858MB) represent normal macOS overhead +- **Efficient memory management**: Strong compression (1790M compressed) with minimal unused memory (369M) +- **No memory pressure**: Zero swap activity indicates healthy memory utilization + +**I/O Patterns:** + +- **Application-driven activity**: Telegram frequently writing temporary media files (voice messages, images) +- **System maintenance**: Spotlight indexing (mds_stores) performing background file indexing +- **Network logging**: PacketTunnel reading/writing VPN operational and error logs +- **Small, frequent operations**: Most I/O operations are 4KB-16KB, indicating efficient file access patterns + +**Storage Patterns:** + +- **Docker dominance**: 17GB Docker VM represents largest single storage consumer +- **Container-heavy usage**: 20GB in Library/Containers suggests extensive use of sandboxed applications +- **Development environment**: Large Docker installation and development tools indicate active development work + +#### Reflection: How would you optimize resource usage based on your findings? + +**CPU Optimization:** + +- **Graphics optimization**: WindowServer's 45.3% usage suggests reviewing display settings - consider reducing resolution on secondary monitors, disabling visual effects, or closing graphics-intensive applications when not needed +- **VPN efficiency**: PacketTunnel consuming 20% CPU - evaluate VPN protocol efficiency (consider WireGuard over OpenVPN), review connection settings, or schedule heavy network tasks during off-peak VPN usage +- **Browser management**: Implement aggressive tab management, disable unnecessary browser extensions, and use lightweight alternatives for basic browsing tasks +- **Process monitoring**: Implement automated alerts for sustained CPU usage >70% to catch performance issues early + +**Memory Optimization:** + +- **Application lifecycle management**: Close Telegram when not actively used to free 1.9GB, especially during memory-intensive development work +- **System cache optimization**: Regular cache clearing using `sudo purge` and application-specific cache cleanup +- **Memory pressure monitoring**: Set up monitoring for swap usage and memory pressure indicators +- **Development environment tuning**: Configure Docker with memory limits to prevent excessive allocation + +**Storage Optimization:** + +- **Docker management**: + - Regular cleanup of unused Docker images: `docker system prune -a` + - Configure Docker Desktop with storage limits + - Move Docker VM to external storage if needed +- **Container cleanup**: Review and remove unused applications in Library/Containers (20GB) +- **Application audit**: Uninstall rarely used large applications like iMovie (3.2GB) if not needed +- **Automated cleanup**: Implement scheduled cleanup of temporary files, logs, and caches + +**I/O Optimization:** + +- **Temporary file management**: Configure Telegram to more aggressively clean temporary media files +- **Spotlight optimization**: Exclude development directories and Docker containers from Spotlight indexing +- **SSD optimization**: Ensure TRIM is enabled and avoid unnecessary write operations to extend SSD lifespan + +## Task 2 — Practical Website Monitoring Setup (6 pts) + +### 2.1: Choose Your Website + +**Selected Target Website:** + +Website URL: [Spot intelligence](https://spotintelligence.com/) + +**Reasoning for Selection:** +Personal interest + +### 2.2: Create Checks in Checkly + +**Sign Up:** + +Created a free account at [Checkly](https://www.checklyhq.com/) + +**API Check for Basic Availability:** + +Configuration: + +- **URL**: [Your chosen website URL] +- **Check Type**: API Check (HTTP/HTTPS) +- **Method**: GET +- **Assertion**: Status code equals 200 +- **Frequency**: Every 5 minutes +- **Locations**: Multiple global locations (N. Virginia, Frankfurt) + +**Browser Check for Content & Interactions:** + +Configuration: + +- **Check Type**: Browser Check (Playwright) +- **Frequency**: Every 10 minutes +- **Target Elements/Actions**: + - Specific elements visibility check + - Button click functionality + +Browser Check Script: + +```javascript +const { expect, test } = require('@playwright/test') + +test.setTimeout(210000) +test.use({ actionTimeout: 10000 }) + +test('visit page and check button functionality', async ({page}) => { + const response = await page.goto('https://spotintelligence.com/') + expect(response.status(), 'should respond with correct status code').toBeLessThan(400) + + await expect(page.locator('text=RETHINK YOUR DATA.')).toBeVisible(); + + await expect(page.locator('text=FIND OUT HOW')).toBeVisible(); + await page.click('text=FIND OUT HOW'); +}) +``` + +### 2.3: Set Up Alerts + +**Alert Rules Configuration:** + +- What to alert on?: Failed checks +- How to be notified?: via Email channel +- Set thresholds that make sense for your site: + - Check has failed 1 times + - When check is failing in 10% of Locations + +### 2.4: Capture Proof & Documentation + +**Run Checks Manually:** + +All checks executed successfully: + +- API Check: ✅ Status 200 response +- Browser Check: ✅ All elements visible and buttons functional + +**Screenshots:** + +#### Api Check + +![API check manual start result](../screenshots/apiCheck.png) + +#### Browser Check Configuration + +Provided above +![Configuration](../screenshots/browserCheck.png) + +#### Successful Check Result + +![Checks](../screenshots/runs.png) + +#### Alert Settings + +![Global alerts settings](../screenshots/alerts.png) +![Check alerts settings](../screenshots/alerts2.png) + +#### Dashboard Overview + +![Dashboard](../screenshots/dashboard.png) + +### Task 2 Analysis + +#### Website URL you chose to monitor + +Provided above: https://spotintelligence.com/ + +#### Screenshots of browser check configuration + +![Configuration](../screenshots/browserCheck.png) + +#### Screenshots of successful check results + +![Checks](../screenshots/runs.png) + +#### Screenshots of alert settings + +![Global alerts settings](../screenshots/alerts.png) +![Check alerts settings](../screenshots/alerts2.png) + +#### Analysis: Why did you choose these specific checks and thresholds? + +**Check Selection Rationale:** + +1. **API Check (Every 5 minutes)**: + - **Purpose**: Ensures basic website accessibility and server health + - **Frequency**: 5-minute intervals provide quick detection without overwhelming the target server + - **Global locations (N. Virginia, Frankfurt)**: Tests availability from different geographic regions to catch regional outages + +2. **Browser Check (Every 10 minutes)**: + - **Content validation**: Verifies critical elements like "RETHINK YOUR DATA." heading are loading correctly + - **User interaction**: Tests "FIND OUT HOW" button functionality to ensure call-to-action works + - **Real user simulation**: Playwright browser checks simulate actual user experience better than simple HTTP checks + +3. **Alert Thresholds**: + - **1 failure trigger**: Immediate alerting for quick incident response + - **10% location threshold**: Prevents false positives from single location network issues + - **Email notifications**: Reliable and immediate notification method for critical issues + +**Threshold Justification:** + +- **Low failure tolerance**: Data intelligence websites need high availability for business credibility +- **Geographic redundancy**: 10% location threshold ensures true outages vs. isolated network problems +- **Conservative approach**: Better to get notified quickly than miss critical downtime + +#### Reflection: How does this monitoring setup help maintain website reliability? + +**Proactive Issue Detection:** + +- **Early warning system**: Detects problems before users encounter them or report issues +- **User experience validation**: Browser checks ensure critical functionality (navigation, CTA buttons) works correctly +- **Geographic coverage**: Multi-location monitoring catches regional connectivity or CDN issues + +**Business Impact:** + +- **Customer confidence**: Ensures visitors can access key information about data intelligence services +- **Lead generation protection**: Monitors "FIND OUT HOW" button to prevent lost business opportunities +- **Brand reputation**: Maintains consistent availability expected from a technology company + +**Operational Benefits:** + +- **Reduced MTTR**: Immediate email alerts enable faster incident response +- **Automated validation**: Eliminates need for manual website checking +- **Performance baseline**: Historical data helps identify trends and capacity planning needs +- **SLA compliance**: Continuous monitoring supports uptime commitments to stakeholders + +**Technical Advantages:** + +- **Multi-layer monitoring**: API + Browser checks provide comprehensive coverage +- **Real user perspective**: Browser checks test actual user workflows and interactions +- **Cost-effective**: Cloud-based monitoring requires no additional infrastructure maintenance +- **Scalable approach**: Easy to add more checks or adjust thresholds as business needs evolve + +This setup transforms reactive maintenance into proactive reliability management, ensuring the Spot Intelligence website consistently delivers value to potential customers seeking data solutions. diff --git a/labs/submission9.md b/labs/submission9.md new file mode 100644 index 00000000..56fbe15d --- /dev/null +++ b/labs/submission9.md @@ -0,0 +1,356 @@ +# Lab 9 — Introduction to DevSecOps Tools + +## Task 1 — Web Application Scanning with OWASP ZAP + +### 1.1: Start the Vulnerable Target Application + +**Deploy Juice Shop (Intentionally Vulnerable Application):** + +Command: + +```bash +docker run -d --name juice-shop -p 3000:3000 bkimminich/juice-shop +``` + +Output: + +```bash +9a96dde359d62461ba07323f9d982f63ba252052492ce94924cd31df1a5b7e8a +``` + +### 1.2: Scan with OWASP ZAP + +**Run ZAP Baseline Scan:** + +Command: + +```bash +docker run --rm -u zap -v $(pwd):/zap/wrk:rw \ +-t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \ +-t http://host.docker.internal:3000 \ +-g gen.conf \ +-r zap-report.html +``` + +Output: + +```bash +Total of 95 URLs +PASS: Vulnerable JS Library (Powered by Retire.js) [10003] +PASS: In Page Banner Information Leak [10009] +PASS: Cookie No HttpOnly Flag [10010] +PASS: Cookie Without Secure Flag [10011] +PASS: Re-examine Cache-control Directives [10015] +PASS: Content-Type Header Missing [10019] +PASS: Anti-clickjacking Header [10020] +PASS: X-Content-Type-Options Header Missing [10021] +PASS: Information Disclosure - Debug Error Messages [10023] +PASS: Information Disclosure - Sensitive Information in URL [10024] +PASS: Information Disclosure - Sensitive Information in HTTP Referrer Header [10025] +PASS: HTTP Parameter Override [10026] +PASS: Information Disclosure - Suspicious Comments [10027] +PASS: Off-site Redirect [10028] +PASS: Cookie Poisoning [10029] +PASS: User Controllable Charset [10030] +PASS: User Controllable HTML Element Attribute (Potential XSS) [10031] +PASS: Viewstate [10032] +PASS: Directory Browsing [10033] +PASS: Heartbleed OpenSSL Vulnerability (Indicative) [10034] +PASS: Strict-Transport-Security Header [10035] +PASS: HTTP Server Response Header [10036] +PASS: Server Leaks Information via "X-Powered-By" HTTP Response Header Field(s) [10037] +PASS: X-Backend-Server Header Information Leak [10039] +PASS: Secure Pages Include Mixed Content [10040] +PASS: HTTP to HTTPS Insecure Transition in Form Post [10041] +PASS: HTTPS to HTTP Insecure Transition in Form Post [10042] +PASS: User Controllable JavaScript Event (XSS) [10043] +PASS: Big Redirect Detected (Potential Sensitive Information Leak) [10044] +PASS: Content Cacheability [10049] +PASS: Retrieved from Cache [10050] +PASS: X-ChromeLogger-Data (XCOLD) Header Information Leak [10052] +PASS: Cookie without SameSite Attribute [10054] +PASS: CSP [10055] +PASS: X-Debug-Token Information Leak [10056] +PASS: Username Hash Found [10057] +PASS: X-AspNet-Version Response Header [10061] +PASS: PII Disclosure [10062] +PASS: Hash Disclosure [10097] +PASS: Source Code Disclosure [10099] +PASS: Weak Authentication Method [10105] +PASS: Reverse Tabnabbing [10108] +PASS: Modern Web Application [10109] +PASS: Authentication Request Identified [10111] +PASS: Session Management Response Identified [10112] +PASS: Verification Request Identified [10113] +PASS: Script Served From Malicious Domain (polyfill) [10115] +PASS: ZAP is Out of Date [10116] +PASS: Absence of Anti-CSRF Tokens [10202] +PASS: Private IP Disclosure [2] +PASS: Session ID in URL Rewrite [3] +PASS: Script Passive Scan Rules [50001] +PASS: Insecure JSF ViewState [90001] +PASS: Java Serialization Object [90002] +PASS: Sub Resource Integrity Attribute Missing [90003] +PASS: Charset Mismatch [90011] +PASS: Application Error Disclosure [90022] +PASS: WSDL File Detection [90030] +PASS: Loosely Scoped Cookie [90033] +WARN-NEW: Cross-Domain JavaScript Source File Inclusion [10017] x 12 + http://host.docker.internal:3000/ (200 OK) + http://host.docker.internal:3000/ (200 OK) + http://host.docker.internal:3000 (200 OK) + http://host.docker.internal:3000 (200 OK) + http://host.docker.internal:3000/sitemap.xml (200 OK) +WARN-NEW: Content Security Policy (CSP) Header Not Set [10038] x 12 + http://host.docker.internal:3000/ (200 OK) + http://host.docker.internal:3000 (200 OK) + http://host.docker.internal:3000/sitemap.xml (200 OK) + http://host.docker.internal:3000/ftp/coupons_2013.md.bak (403 Forbidden) + http://host.docker.internal:3000/ftp (200 OK) +WARN-NEW: Deprecated Feature Policy Header Set [10063] x 12 + http://host.docker.internal:3000/ (200 OK) + http://host.docker.internal:3000/runtime.js (200 OK) + http://host.docker.internal:3000/polyfills.js (200 OK) + http://host.docker.internal:3000 (200 OK) + http://host.docker.internal:3000/sitemap.xml (200 OK) +WARN-NEW: Timestamp Disclosure - Unix [10096] x 20 + http://host.docker.internal:3000/ (200 OK) + http://host.docker.internal:3000/ (200 OK) + http://host.docker.internal:3000/ (200 OK) + http://host.docker.internal:3000 (200 OK) + http://host.docker.internal:3000 (200 OK) +WARN-NEW: Cross-Domain Misconfiguration [10098] x 11 + http://host.docker.internal:3000/ (200 OK) + http://host.docker.internal:3000/robots.txt (200 OK) + http://host.docker.internal:3000/assets/public/favicon_js.ico (200 OK) + http://host.docker.internal:3000/polyfills.js (200 OK) + http://host.docker.internal:3000/runtime.js (200 OK) +WARN-NEW: Dangerous JS Functions [10110] x 2 + http://host.docker.internal:3000/main.js (200 OK) + http://host.docker.internal:3000/vendor.js (200 OK) +WARN-NEW: Insufficient Site Isolation Against Spectre Vulnerability [90004] x 12 + http://host.docker.internal:3000/ (200 OK) + http://host.docker.internal:3000/ (200 OK) + http://host.docker.internal:3000 (200 OK) + http://host.docker.internal:3000 (200 OK) + http://host.docker.internal:3000/sitemap.xml (200 OK) +FAIL-NEW: 0 FAIL-INPROG: 0 WARN-NEW: 7 WARN-INPROG: 0 INFO: 0 IGNORE: 0 PASS: 59 +``` + +### 1.3: Analyze Results + +**Open the Report:** + +Found `zap-report.html` in current directory and opened in browser. + +**Identify Vulnerabilities:** + +Found vulnerabilities classified by risk level: + +- High Risk: **0** vulnerabilities +- Medium Risk: **2** vulnerabilities +- Low Risk: **5** vulnerabilities +- Informational: **5** vulnerabilities + +### 1.4: Clean Up + +Command: + +```bash +docker stop juice-shop && docker rm juice-shop +``` + +### Task 1 Analysis + +#### Number of Medium risk vulnerabilities found + +Found **2** Medium risk vulnerabilities. + +#### Description of the 2 most interesting vulnerabilities + +**1. Content Security Policy (CSP) Header Not Set - Medium Risk:** + +- **Description**: The application does not implement Content Security Policy headers, which are crucial for preventing XSS attacks and controlling resource loading +- **Impact**: Without CSP, attackers can inject malicious scripts, load unauthorized resources, and potentially steal user data or perform actions on behalf of users +- **Where**: Found across 12 different URLs including the main application pages and API endpoints + +**2. Cross-Domain Misconfiguration - Medium Risk:** + +- **Description**: The application sets `Access-Control-Allow-Origin: *` which allows any domain to make cross-origin requests to the application +- **Impact**: This overly permissive CORS configuration could allow malicious websites to access sensitive data from the application, potentially leading to data theft or unauthorized actions +- **Where**: Found on 11 URLs including main pages, JavaScript files, and static resources + +#### Security headers status + +**Present Headers:** + +- **Feature-Policy**: Present but deprecated - should be updated to Permissions-Policy for controlling browser features +- **Access-Control-Allow-Origin**: Present but misconfigured (set to wildcard *) + +**Missing Headers:** + +- **Content-Security-Policy**: Missing - prevents XSS attacks by controlling resource loading and script execution +- **X-Frame-Options**: Missing - prevents clickjacking attacks by controlling if the site can be embedded in frames +- **X-Content-Type-Options**: Missing - prevents MIME type sniffing attacks +- **Strict-Transport-Security**: Missing - enforces HTTPS connections and prevents downgrade attacks +- **Cross-Origin-Embedder-Policy**: Missing - provides protection against Spectre-style attacks +- **Cross-Origin-Opener-Policy**: Missing - isolates browsing context to prevent certain cross-origin attacks + +**Why Security Headers Matter:** + +- **Defense in Depth**: Provide additional security layers beyond application code +- **Browser Protection**: Instruct browsers to enforce security policies automatically +- **Attack Prevention**: Block common attack vectors like XSS, clickjacking, and MITM attacks +- **Data Protection**: Prevent information leakage and unauthorized cross-origin access +- **Modern Threat Mitigation**: Address newer attack vectors like Spectre and provide site isolation + +#### Screenshot of ZAP HTML report overview + +![Screen](../screenshots/l9t1.png) + +#### Analysis: What type of vulnerabilities are most common in web applications? + +Based on the ZAP scan results and industry research, the most common web application vulnerabilities include: + +**1. Security Misconfigurations (Most Common in This Scan):** + +**2. Cross-Site Scripting (XSS):** + +**3. Injection Vulnerabilities:** + +**4. Broken Authentication & Session Management:** + +**5. Information Disclosure:** + +**Key Patterns from This Scan:** + +- Missing security headers across all pages (12 instances) +- Cross-domain JavaScript inclusion without proper validation +- Deprecated security policies (Feature-Policy vs Permissions-Policy) +- Information leakage through timestamps and file paths + +## Task 2 — Container Vulnerability Scanning with Trivy + +### 2.1: Scan Container Image + +**Run Trivy Scan:** + +Command: + +```bash +docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ +aquasec/trivy:latest image \ +--severity HIGH,CRITICAL \ +bkimminich/juice-shop > trivy-results.txt +``` + +Output: + +results saved in `trivy-results.txt` + +### 2.2: Analyze Results + +**Identify Key Findings:** + +From the scan output, identified: + +- Total number of CRITICAL vulnerabilities: **9** +- Total number of HIGH vulnerabilities: **25** +- Vulnerable package names: **bkimminich/juice-shop**, **Node.js**, **/juice-shop/build/lib/insecurity.js**, **/juice-shop/lib/insecurity.ts** +- Most common vulnerability types: **CVE-2015-9235**, **CVE-2022-23539**, **NSWG-ECO-17**, **AsymmetricPrivateKey** + +### 2.3: Clean Up + +Command: + +```bash +docker rmi bkimminich/juice-shop +``` + +### Task 2 Analysis + +#### Total count of CRITICAL and HIGH vulnerabilities + +- **CRITICAL vulnerabilities**: 9 +- **HIGH vulnerabilities**: 25 +- **Total HIGH/CRITICAL**: 34 + +#### List of 2 vulnerable packages with their CVE IDs + +**1. vm2:** + +- **CVE ID**: CVE-2023-32314 +- **Severity**: CRITICAL +- **Description**: Sandbox escape vulnerability in vm2 JavaScript sandbox library that allows breaking out of the security isolation +- **Impact**: Allows attackers to escape the sandbox environment and execute arbitrary code on the host system, potentially leading to full system compromise and remote code execution + +**2. jsonwebtoken:** + +- **CVE ID**: CVE-2015-9235 +- **Severity**: CRITICAL +- **Description**: JSON Web Token verification step bypass vulnerability allowing attackers to forge tokens by manipulating the algorithm field +- **Impact**: Complete authentication bypass - attackers can create valid-looking tokens without knowing the secret key, leading to unauthorized access and privilege escalation + +#### Most common vulnerability types found + +**CVE-2015-9235**, **CVE-2022-23539**, **NSWG-ECO-17**, **AsymmetricPrivateKey** - all have 2 entries + +#### Screenshot of Trivy terminal output showing critical findings + +![Trivy Scan Results in terminal](../screenshots/l9t21.png) +![Trivy Scan Results in txt file](../screenshots/l9t22.png) + +#### Analysis: Why is container image scanning important before deploying to production? + +1. **Find Problems Early**: Catch security issues before they go live where hackers can exploit them +2. **Check Dependencies**: Make sure third-party libraries and base images are safe +3. **Meet Requirements**: Many companies and regulations require security scanning +4. **Save Money**: Fixing bugs in development is much cheaper than fixing them in production + +#### Reflection: How would you integrate these scans into a CI/CD pipeline? + +**Simple Integration:** + +**1. Add Security Step:** + +```yaml +stages: + - build + - security-scan # Add Trivy here + - test + - deploy +``` + +**2. GitHub Actions:** + +```yaml +- name: Scan for vulnerabilities + uses: aquasecurity/trivy-action@master + with: + image-ref: '${{ env.IMAGE_NAME }}' + exit-code: '1' # Stop pipeline if problems found + severity: 'CRITICAL,HIGH' +``` + +**3. Set Rules:** + +- **CRITICAL**: Always stop the pipeline +- **HIGH**: Stop unless approved +- **MEDIUM/LOW**: Just report but allow deployment + +**4. Basic Workflow:** + +```bash +1. Build container +2. Scan for vulnerabilities +3. If critical issues found → stop and alert team +4. If clean → deploy to production +5. Keep scanning production images regularly +``` + +**5. Integration Options:** + +- **Automatic scanning** on every build +- **Notifications** to team when issues found +- **Reports** for security team +- **Block deployment** of vulnerable images diff --git a/screenshots/4everlandIPFS.png b/screenshots/4everlandIPFS.png new file mode 100644 index 00000000..22a077b1 Binary files /dev/null and b/screenshots/4everlandIPFS.png differ diff --git a/screenshots/4everlandapp.png b/screenshots/4everlandapp.png new file mode 100644 index 00000000..fe37db97 Binary files /dev/null and b/screenshots/4everlandapp.png differ diff --git a/screenshots/4everlanddashboard.png b/screenshots/4everlanddashboard.png new file mode 100644 index 00000000..dbb78125 Binary files /dev/null and b/screenshots/4everlanddashboard.png differ diff --git a/screenshots/alerts.png b/screenshots/alerts.png new file mode 100644 index 00000000..f641726c Binary files /dev/null and b/screenshots/alerts.png differ diff --git a/screenshots/alerts2.png b/screenshots/alerts2.png new file mode 100644 index 00000000..8af9acd9 Binary files /dev/null and b/screenshots/alerts2.png differ diff --git a/screenshots/apiCheck.png b/screenshots/apiCheck.png new file mode 100644 index 00000000..78a0d8da Binary files /dev/null and b/screenshots/apiCheck.png differ diff --git a/screenshots/browserCheck.png b/screenshots/browserCheck.png new file mode 100644 index 00000000..eb749772 Binary files /dev/null and b/screenshots/browserCheck.png differ diff --git a/screenshots/dashboard.png b/screenshots/dashboard.png new file mode 100644 index 00000000..21f93120 Binary files /dev/null and b/screenshots/dashboard.png differ diff --git a/screenshots/gateway_access.png b/screenshots/gateway_access.png new file mode 100644 index 00000000..5e8001e6 Binary files /dev/null and b/screenshots/gateway_access.png differ diff --git a/screenshots/l9t1.png b/screenshots/l9t1.png new file mode 100644 index 00000000..5942ae72 Binary files /dev/null and b/screenshots/l9t1.png differ diff --git a/screenshots/l9t21.png b/screenshots/l9t21.png new file mode 100644 index 00000000..90f9ab81 Binary files /dev/null and b/screenshots/l9t21.png differ diff --git a/screenshots/l9t22.png b/screenshots/l9t22.png new file mode 100644 index 00000000..e89b9046 Binary files /dev/null and b/screenshots/l9t22.png differ diff --git a/screenshots/peers_count.png b/screenshots/peers_count.png new file mode 100644 index 00000000..f721afee Binary files /dev/null and b/screenshots/peers_count.png differ diff --git a/screenshots/public.png b/screenshots/public.png new file mode 100644 index 00000000..65daee72 Binary files /dev/null and b/screenshots/public.png differ diff --git a/screenshots/runs.png b/screenshots/runs.png new file mode 100644 index 00000000..59ca46c0 Binary files /dev/null and b/screenshots/runs.png differ diff --git a/screenshots/statistics.png b/screenshots/statistics.png new file mode 100644 index 00000000..58a22a81 Binary files /dev/null and b/screenshots/statistics.png differ diff --git a/testfile.txt b/testfile.txt new file mode 100644 index 00000000..9826601b --- /dev/null +++ b/testfile.txt @@ -0,0 +1 @@ +Hello IPFS Lab