registry  /  kritzel-stencil  /  0.3.30

kritzel-stencil@0.3.30

Kritzel helps you build infinite whiteboard experiences.

AI Security Review

scanned 9d ago · by lpm-firewall-ai

No confirmed malicious attack surface was established by source inspection. The package is a Stencil whiteboard component library with optional user-invoked sync and asset upload providers.

Static reason
High-risk behavior combination matched malicious policy.
Trigger
Application imports/uses Kritzel components and configures sync or asset providers.
Impact
No unauthorized install-time/import-time execution, credential theft, persistence, or exfiltration identified.
Mechanism
Documented whiteboard runtime features with user-supplied endpoints.
Rationale
Scanner hits map to bundled library code, comments, and package-aligned collaboration/asset features. Static inspection found no concrete unconsented execution, data harvesting, exfiltration, persistence, or AI-agent control-surface mutation.
Evidence
package.jsondist/index.jsdist/index.cjs.jsloader/index.jsloader/index.cjs.jsdist/esm/schema.constants-7ayQfjzt.jsdist/cjs/schema.constants-TiseVL4a.jsdist/collection/classes/managers/license.manager.jsdist/collection/classes/providers/assets/http-asset-provider.class.jsdist/collection/classes/providers/assets/presigned-asset-provider.class.jsdist/collection/classes/providers/sync/websocket-sync-provider.class.jsdist/collection/classes/providers/sync/hocuspocus-sync-provider.class.js
Network endpoints3
kritzel.io/ws://localhost:1234cdn.jsdelivr.net/npm/browser-image-compression@2.0.2/dist/browser-image-compression.js

Decision evidence

public snapshot
AI called this Clean at 91.0% confidence as Benign with low false-positive risk.
Evidence for block
  • dist/esm/schema.constants-7ayQfjzt.js and CJS copy contain one U+200B in a ProseMirror documentation comment, not executable code.
  • Network-capable classes exist for collaboration and asset storage: WebSocket/Hocuspocus sync and user-configured HTTP/presigned asset providers.
Evidence against
  • package.json has no install/preinstall/postinstall lifecycle hooks; scripts are developer build/test/release commands only.
  • Entrypoints dist/index.js and dist/index.cjs.js re-export package modules; no import-time shell, filesystem mutation, or exfiltration logic observed.
  • Network calls use caller-provided URLs/options or localhost defaults for documented whiteboard sync/asset workflows, not hardcoded suspicious endpoints.
  • License manager verifies offline Ed25519 tokens using a public key and timer; it does not contact a server or harvest secrets.
  • Search found no child_process, package-manager execution, AGENTS/.codex writes, credential file access, or reviewer/prompt manipulation.
  • localStorage and IndexedDB usage is scoped to editor settings, workspace IDs, and asset caching.
Behavioral surface
Source
ChildProcessDynamicRequireNetwork
Supply chain
HighEntropyStringsMinifiedObfuscatedProtestwareUrlStrings
ManifestNo manifest risk signals triggered.
scanned 319 file(s), 9.11 MB of source, external domains: bugs.chromium.org, bugs.webkit.org, cdn.jsdelivr.net, chat.stenciljs.com, code.haverbeke.berlin, commonmark.org, developer.microsoft.com, developer.mozilla.org, ecma-international.org, eev.ee, en.wikipedia.org, github.com, golang.org, kritzel.io, mathiasbynens.be, npms.io, prosemirror.net, stackoverflow.com, stenciljs.com, w3c.github.io, www.awsarchitectureblog.com, www.stum.de, www.w3.org

Source & flagged code

3 flagged · loading source
dist/index.cjs.jsView file
1module.exports = require('./cjs/index.cjs.js');
Medium
Dynamic Require

Package source references dynamic require/import behavior.

dist/index.cjs.jsView on unpkg · L1
dist/esm/schema.constants-7ayQfjzt.jsView file
2595contains invisible/control Unicode U+200B (zero width space) Get the _n_<U+200B>th outgoing edge from this node in the finite
Critical
Trojan Source Unicode

Source contains bidi control or invisible Unicode characters associated with Trojan Source attacks.

dist/esm/schema.constants-7ayQfjzt.jsView on unpkg · L2595
dist/cjs/schema.constants-TiseVL4a.jsView file
Trigger-reachable chain: manifest.main -> dist/index.cjs.js -> dist/cjs/index.cjs.js -> dist/cjs/schema.constants-TiseVL4a.js Reachable file contains a blocking source-risk pattern.
Critical
Trigger Reachable Dangerous Capability

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

dist/cjs/schema.constants-TiseVL4a.jsView on unpkg

Findings

2 Critical4 Medium4 Low
CriticalTrojan Source Unicodedist/esm/schema.constants-7ayQfjzt.js
CriticalTrigger Reachable Dangerous Capabilitydist/cjs/schema.constants-TiseVL4a.js
MediumDynamic Requiredist/index.cjs.js
MediumNetwork
MediumProtestware
MediumStructural Risk Force Deep Review
LowScripts Present
LowObfuscated
LowHigh Entropy Strings
LowUrl Strings