live · scanning repos
Scanrepo
github.com
github.com / ryotaushio

ryotaushio/obsidian-pdf-plus

TypeScript·106 files·commit 6a3218b·scanned 1h ago·cached ✓
25/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.

score capped at 25 — 2,474 stars — findings likely legitimate code patterns

verdict accurate?
threat-state: lowlive

FINDINGS ░▒▓

criticalFunction() constructor detectednew Function() is equivalent to eval() and can execute arbitrary code strings.src/utils/index.ts
export function evalInContext(code: string, ctx?: any) {
    return (new Function(code.includes('await') ? '(async () => {' + code + '})()' : code)).call(ctx);
}
+5
criticalFunction() constructor detectednew Function() is equivalent to eval() and can execute arbitrary code strings.src/template.ts
        // avoid direct eval
        const evaluated = new Function(...Object.keys(this.variables), `return ${expr};`)(...Object.values(this.variables));
        if (evaluated === undefined) {
       ...
+5
infoSuspicious files are not reachable from entry pointsFlagged files exist but are not imported by any entry point. They may be dead code, tests, or attack payloads triggered by another mechanism.+2
warningClipboard read accessnavigator.clipboard.readText() reads the user's clipboard. In a wallet/crypto context this is often used to steal copied seed phrases or private keys.src/lib/commands.ts
                try {
                    const { settings, styleSettings, styleSheet } = JSON.parse(await navigator.clipboard.readText());

                    new Notice(`${this.plugin.manifest.name...
+4
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.src/lib/index.ts+3
warningHigh-entropy string literalsFound 3 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/main.ts+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.src/main.ts+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.src/utils/index.ts+3
warningHigh-entropy string literalsFound 6 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/dom-manager.ts+3
warningHigh-entropy string literalsFound 3 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.src/lib/composer.ts+3

Scores are heuristics. A “safe” verdict means no known-malicious patterns were found — clever malware can look boring. Wrong verdict? Flag it above; confirmed false positives become regression tests.

87 files scanned @ 6a3218b | 9/25/2026 | heuristic scan — always review manually

risk by category
code execution12
network & exfiltration0
file system access4
obfuscation15
supply chain0
owasp / injection0
telemetry
files 87/106rules hit 10engine v6commit 6a3218b

github

ryotaushio/obsidian-pdf-plus

PDF++: the most Obsidian-native PDF annotation & viewing tool ever. Comes with optional Vim keybindings.

TypeScript
2474
86
1012d
106 files
87 scanned(82%)
6a3218b

architecture░▒▓

entry (1) flagged (25) pkg (53)
135 nodes · 392 edgesscroll to zoom · click node to jump to finding
LOW (25/100) — ryotaushio/obsidian-pdf-plus — ScanRepo