Databricks 用领域知识注入提升 LLM 对 npm 二进制恶意包的检测
Closing the Binary Blind Spot: Domain-Knowledge Injection for LLM Malware Triage in npm Packages
Databricks 提出在推理阶段注入领域知识,以提升 LLM 对 npm 包内嵌二进制恶意载荷的检测能力。其扫描器自 2025 年 11 月起收集样本,在 11,413 个经 OSV 核验的包版本中,3.8%(432 个)捆绑二进制,这类包无法得出明确恶意结论的比例为 14.4%,是纯源码包 6.2% 的两倍多。团队用五种 .node 载荷测试九款模型,并设计能力画像作为加权条件编码恶意技术。
Introduction
Supply chain attacks on package registries have grown in volume and sophistication [1]. Public research regularly observes malware being deployed to the npm registry by a range of threat actors, from spam campaigns [2] to the steady proliferation of DPRK malware [3, 4, 5], and to the high-impact TeamPCP in 2025 and 2026 [6, 7], with the DPRK and TeamPCP actors having a track record of successfully compromising widely used open source projects for maximized downstream reach [8].
To study this problem directly, we have been collecting npm malware samples since November 2025, and observed that, among the 11,413 package-versions we scanned and corroborated through OSV npm malware advisories [9], most malware on the npm registry hides its payload in the package source or fetches it from an external server, accounting for 96.2% of the corroborated dataset. The remaining 3.8%, 432 package-versions, bundle a binary. Though small in volume, they can carry disproportionate risk during triage. A stripped, opaque binary that carries no source for tools to read can be nested within a facade of clean source and metadata and potentially skew an LLM towards a benign verdict.
We evaluate how a panel of LLMs reason over crafted binary payloads at varying obfuscation and ambiguity, identify the failure modes specific to this vector, and close them with a purpose-built, cost-effective encoding of domain knowledge that improves detection quality for both budget and frontier models alike.
Background
To support the wider research community, we built a scanner that monitors the npm registry in real time and runs a static stage before LLM triage, with YARA [10] on the tarball, Semgrep [11] and the npm registry API on the JavaScript and metadata, and a binary-analysis module over the compiled artifact. It assembles the output into a structured prompt, and the LLM returns a verdict with reasoning, requesting additional files over up to three rounds.
Our analysis found packages with bundled binaries to be both the rarest and the hardest for the pipeline to triage. An adversary distributing malicious JavaScript can assume the target already has the runtime to execute the payload, whereas a binary must be compiled for a range of target machines. Across OSV-confirmed npm malware, binary-bearing packages fail to reach a decisive malicious verdict more than twice as often as source-only ones (14.4% vs 6.2%).
Prior work instruction-tunes open-source models on expert-authored data, baking the knowledge into the weights [12]. That route cannot reach the closed, hosted models, and it requires retraining as the threat landscape shifts. We take the opposite approach and supply the expertise at inference, as pre-computed static evidence placed in the prompt before the model reasons.
Experimental Design
Objective
We evaluate whether LLMs can detect malicious logic concealed within precompiled binaries in otherwise clean packages. A secondary question is whether the detection failures are systematic rather than random. Third, whether encoding domain knowledge of the binary problem can improve detection accuracy.
Adversarial Payloads
We built five payload types (Table 1) of native Node.js addons (.node files) covering common supply chain attack patterns. Imports range from defensible (fopen, connect, gethostname) to rarely legitimate (execve with dup2), and each package wraps the binary in a professional package.json, README, JavaScript bindings, and binding.gyp.
The sysmon stealer spans an obfuscation ladder from a readable baseline to a hardened build with symbols stripped and strings XOR-encoded, while the other four types appear at a single obfuscation level. We chose single-byte XOR deliberately, since unlike a stronger cipher such as RC4 it leaves no structural markers in disassembly for a model to catch.
The set mirrors collected malware. Across the OSV-confirmed npm packages shipping a binary, formats are PE, ELF (all stripped), and Mach-O, with behaviors spanning credential and environment theft, persistence, exfiltration and C2, host reconnaissance, and droppers.
Table 1. Adversarial payload types and their import profiles.
| Package | Type | Key Imports | Ambiguity |
|---|---|---|---|
| sysmon-native | Credential stealer | fopen, connect, send, gethostname | HIGH |
| buildchain-native | Dropper/backdoor | execve, connect, chmod, socket, fwrite | LOW |
| netpulse-native | Reverse shell | execve, dup2, connect, socket | LOW |
| hashworker-native | Cryptominer stub | pthread_create, connect, send, recv | MEDIUM |
| taskd-native | Persistence | system, fopen, fwrite, chmod | MEDIUM |
Models Tested
We evaluated nine models across seven providers (Table 2): seven budget models a team would realistically run across its codebase, four of them open-weight, and two higher-capability baselines as behavioral baseline references at higher price points. We also ran Claude Opus 4.6, the most expensive model, only as a cost reference.
Table 2. Models evaluated and their roles.
| Model | Provider | Role | Type |
|---|---|---|---|
| Claude Haiku 4.5 | Anthropic | Budget | Proprietary |
| Google Gemini 3.5 Flash | Budget | Proprietary | |
| Gemma 3 12B | Budget | Open-weight | |
| GPT-5.4-nano | OpenAI | Budget | Proprietary |
| Qwen3-Next 80B | Alibaba | Budget | Open-weight |
| GLM 5.3 Flash | Zhipu | Budget | Open-weight |
| Llama 3.1 8B | Meta | Budget | Open-weight |
| Claude Sonnet 4.6 | Anthropic | Baseline behavior | Proprietary |
| Kimi K3 | Moonshot | Baseline behavior | Open-weight |
| Claude Opus 4.6 | Anthropic | Cost baseline | Proprietary |
To isolate the profiles, each payload was scanned twice per model, once without profiles and once with them. Prompt, context, and binary analysis were identical across both runs. Inference settings were held constant across every model and both conditions: temperature 0, the same system and analysis prompts throughout, and an 8192-token output cap.
Capability Profile Architecture
A capability profile is a declarative playbook that encodes one malicious technique, such as credential harvesting or persistence, as a set of weighted conditions over the scanner's static evidence. The profiles cover source and binary techniques across npm and PyPI.
Figure 1 shows how a profile enters a scan:
- The static stage extracts evidence from the package.
- Each profile scores that evidence against its suspicious, malicious, and critical thresholds, a scale separate from the model's own verdict.
- When a threshold is reached, the engine injects a structured summary (~1,800 tokens) into the prompt before the model reasons, along with any findings from the static and metadata analyzer stage.
- The model forms its own verdict over the combined evidence and, in this experiment, may override a firing profile entirely.

Figure 1. The scan pipeline with capability profiles.
Results
Each model was scanned against all ten payloads. We count HIGHLY_SUSPICIOUS or MALICIOUS as a detection success; SUSPICIOUS or BENIGN on a known-malicious payload is a failure. The failure analysis centers on the seven-model budget tier (70 model-payload tests); the two baselines (20 tests) serve only as a reference ceiling and are reported separately.
Without Capability Profiles
Without profiles, the budget tier failed on 35 of 70 tests (50%), 20 of them outright benign, and fell short of the malicious bar on 51 (73%). The two behavior baselines failed none at the escalation threshold and fell short of malicious only once (Sonnet, sysmon v3). Within the budget tier the failures followed distinct, repeatable model-specific patterns (Table 3) rather than random error; Gemini alone matched the baselines on detection, though through confabulated reasoning rather than genuine analysis. The full verdict and confidence matrix is in the appendix (Table A1).
With Capability Profiles
With profiles enabled, 32 of the 35 no-profile detection failures (91%) recover to a detection, and no model returns a benign verdict on any payload. Every model that failed without profiles reached full detection with them, except GPT-5.4-nano, whose three residual failures stay at suspicious on three payloads. Across the affordable tier, failures at the escalation threshold fell from 50% to 4% (3 of 70), and at the malicious bar from 73% to 34%.
Table 3. Per-model detection rate (verdict at highly suspicious or above on a known-malicious payload) without and with capability profiles.
| Model | Without profiles | With profiles |
|---|---|---|
| GPT-5.4-nano | 0/10 | 7/10 |
| Qwen3-Next 80B | 1/10 | 10/10 |
| Llama 3.1 8B | 4/10 | 10/10 |
| Gemma 3 12B | 5/10 | 10/10 |
| Claude Haiku 4.5 | 6/10 | 10/10 |
| GLM 5.3 Flash | 9/10 | 10/10 |
| Gemini 3.5 Flash | 10/10 | 10/10 |
| Claude Sonnet 4.6 | 10/10 | 10/10 |
| Kimi K3 | 10/10 | 10/10 |
The clearest single case is Qwen3-Next on the obfuscated sysmon-native stealer: benign at 0.98 recommending allowlist without profiles, malicious at 0.98 recommending block with them, on byte-identical input, after four profiles fired. The baselines, Sonnet and Kimi, were already correct without profiles, and the evidence strengthens their verdicts, so the profiles reinforce rather than distort a model that already reasons correctly.
Profile Triggers
Technique-specific profiles fired according to each payload’s attack pattern.
Table 4. Capability profiles triggered per payload at critical or malicious threshold.
| Package | Critical Profiles Triggered |
|---|---|
| sysmon-native | T004 (Binary Masquerade), T001 (Credential Harvesting), T002 (Network Exfiltration), T003 (Environment Reconnaissance) |
| buildchain-native | T004 (Binary Masquerade), T007 (Dropper/Stager), T002 (Network Exfiltration), T001 (Credential Harvesting) |
| netpulse-native | T004 (Binary Masquerade), T006 (Reverse Shell) |
| hashworker-native | T004 (Binary Masquerade), T002 (Network Exfiltration) |
| taskd-native | T004 (Binary Masquerade) |
Discussion
Failure Mode Analysis
The experiment surfaced four failure modes, each spanning a large fraction of the panel rather than any single model (Table 5). They are not mutually exclusive, since one benign verdict can be both a dismissal and a rationalization, so the table reports per-mode prevalence and a model's row can sum past ten. We read dismissal and hedging from the verdict tier, rationalization and confabulation from the written reasoning.
Two factors explain them. The first is domain knowledge, which budget LLMs lack for interpreting binary structural evidence in a package's context [13]. The second is raw capability. Reading a stripped, string-obfuscated binary requires disassembly and decoding that the budget tier did not attempt.
Table 5. Per-model failure-mode counts across the ten payloads without profiles, spanning all nine models (90 scans).
| Model | Rationalization | Dismissal | Hedging | Confabulation |
|---|---|---|---|---|
| Haiku 4.5 | 4 | – | 4 | 4 |
| Sonnet 4.6 | – | – | – | 4 |
| Gemini 3.5 Flash | – | – | – | 4 |
| Gemma 3 12B | 5 | 5 | – | – |
| GLM 5.3 Flash | 1 | – | 1 | 2 |
| GPT-5.4-nano | 10 | 2 | 8 | – |
| Kimi K3 | – | – | – | 6 |
| Qwen3-Next 80B | 9 | 9 | – | – |
| Llama 3.1 8B | 5 | 4 | 2 | 1 |
| Models (of 9) | 6 | 4 | 4 | 6 |
| Prevalence | ~37% | 22% | 16% | ~23% |
An ensemble that takes the majority verdict would not resolve this. On the obfuscated sysmon-native stealer (version 2), the nine verdicts split three benign (Gemma, Qwen, Llama), two suspicious (Haiku, GPT-5.4-nano), one highly suspicious (GLM), three malicious (Gemini, Kimi, Sonnet): the majority sits below the detection threshold, so the vote returns the wrong answer. The modes do not cancel out; they compound, so no voting scheme gives reliable coverage without first closing the domain-knowledge gap. This matches known limits of majority voting in LLM ensembles, where correlated errors converge on the wrong answer rather than canceling [14, 15].
Rationalization (~37% of scans, six models) invokes contextual cues, the install script, native-module packaging, or package description, to build a benign interpretation that overrides the binary signals. Haiku called the unobfuscated sysmon v1 MALICIOUS 0.98, but once the strings were XOR-encoded its verdict fell to SUSPICIOUS, treating node-gyp-build as standard and the .node extension as a legitimate addon, matching documented post-hoc rationalization [16]. Obfuscation thus inverts the expected relationship. The more thoroughly the payload is concealed, the lower the assigned severity, and because the rationale stays internally coherent, evaluation on unobfuscated samples would never elicit it.
Dismissal (22%, four models) returns a benign verdict without engaging the binary at all. Qwen3-Next returned BENIGN 0.98 on nine of the ten payloads and recommended allowlisting each, including the netpulse reverse shell and the taskd persistence tool, with a stated intent that ignored the binary's imports entirely. The verdict is insensitive to import ambiguity, and the uniform high confidence conceals the failure from any downstream threshold.
Hedging (16%, four models) registers suspicion but never escalates to a decisive verdict. GPT-5.4-nano returned SUSPICIOUS at 0.55-0.62 on eight of the ten payloads, never reaching highly suspicious or malicious, with buildchain-native drawing only SUSPICIOUS 0.62 and a recommended action of "Monitor." A suspicious verdict looks like functioning analysis while adding nothing beyond the YARA and Semgrep stages, and under a policy that blocks only at the malicious threshold these payloads pass.
Confabulation (~23%, six models) is the odd case, where the verdict is correct but its justification is fabricated, so a pipeline that logs it for audit accumulates fabricated indicators that mislead a later analyst or any model fine-tuned on them. It appears even in both baselines, so it recurs regardless of capability tier. Gemini is the clearest case. It returned MALICIOUS on all ten payloads but invented the detail, reporting "a decryption routine at address 0x401490" on taskd and "a custom XOR decryption loop at 0x4013b0" on netpulse, though neither address exists in the scan input and neither payload contains a cipher. The fabrication concentrates where the evidence is thinnest, in the single-function x86 payloads whose scan exposes one real address.
The Structural Gap
The under-detections are structural, not a defect of individual models. The budget-tier failures below the escalation threshold are dominated by rationalization and dismissal, where the binary sits alongside clean source, a node-gyp-build install script, professional metadata, and a plausible README, each unremarkable for a native module. No single artifact misleads the model. Every one of the 35 failures leans on at least two of these benign signals, 24 on four at once, and 14 recast the binary's own imports as standard system calls (Table 6). LLMs can analyze binary evidence in isolation [17, 18], but here the failure is contextual.
Table 6. Benign contextual signals cited across the 35 detection failures.
| Benign Signal Cited | Count |
|---|---|
| install script (node-gyp-build) called standard | 35/35 |
| native-addon / .node packaging | 35/35 |
| metadata / stated purpose "consistent with" | 32/35 |
| clean lib/index.js JavaScript | 21/35 |
| binary's own imports recast as "standard/normal" | 14/35 |
Predictability of Failure Modes
The modes are predictable in that each model exhibits one, though none is deterministic across a model's whole output, so defenders cannot simply pick a better model. The two categories even fail differently, with dismissal almost entirely an open-weight behavior (18 of the 20 no-profile benign verdicts from Gemma, Qwen, and Llama) while the proprietary models rarely dismiss and instead rationalize, hedge, or confabulate. This bears on model selection. A test set of a few unobfuscated or low-ambiguity packages makes a budget model look sufficient while hiding its failure on the obfuscated credential stealer, and obfuscation recurs in real malware, with the Binary String Obfuscation profile firing on 74 of the 425 OSV-confirmed binary packages (17%). Testing only high-ambiguity payloads has the opposite effect, condemning a serviceable model and pushing a team to overspend on a frontier one. A correct verdict also does not imply a correct label, as budget models often flagged maliciousness while assigning the wrong category, so the category and stated evidence are triage hints, not ground truth for attribution.
Cost Implications
The baselines Sonnet 4.6 and Kimi K3 detected every payload without profiles, at roughly 3x the per-scan cost of the budget tier, which with profiles matches that accuracy at the lower price. Profiles also change the token work each model does (Table 7), and the direction depends on how hard the model works unaided. The budget tier takes a modest input premium from the ~1,800-token evidence block, with input rising 9 to 34% and its analysis otherwise unchanged, whereas the thorough models move the other way. Opus, which without profiles gathers about 10.5K input tokens per scan requesting extra files, drops to 7.2K with them (−32%), and Kimi emits 13% fewer output tokens for the same reason. Profiles add a small, bounded input cost to the cheap models and claw back far more from the expensive ones.
Table 7. Per-model token usage per scan, averaged over the ten payloads, without and with capability profiles.
| Model | Input (no profiles) | Input (profiles) | Δ input | Output (no profiles) | Output (profiles) | Δ output |
|---|---|---|---|---|---|---|
| Haiku 4.5 | 5,381 | 7,213 | +34% | 933 | 1,616 | +73% |
| Gemini 3.5 Flash | 7,000 | 7,614 | +9% | 493 | 488 | −1% |
| Gemma 3 12B | 5,866 | 7,623 | +30% | 420 | 506 | +21% |
| GPT-5.4-nano | 4,900 | 6,428 | +31% | 568 | 729 | +28% |
| Qwen3-Next 80B | 5,691 | 7,267 | +28% | 523 | 772 | +48% |
| GLM 5.3 Flash | 5,531 | 6,606 | +19% | 746 | 1,110 | +49% |
| Llama 3.1 8B | 4,884 | 6,402 | +31% | 302 | 351 | +16% |
| Sonnet 4.6 | 5,382 | 7,214 | +34% | 1,150 | 1,472 | +28% |
| Kimi K3 | 8,706 | 9,388 | +8% | 5,572 | 4,842 | −13% |
| Opus 4.6 | 10,551 | 7,214 | −32% | 1,254 | 1,370 | +9% |
Production Validation
Malicious Set
Public OSV advisories [9], excluding withdrawn entries, confirm 470 malicious npm package-versions that ship a native binary, 604 binaries in total. By format they are PE (273), ELF (215, every one stripped), and Mach-O (113), with 3 unidentified; by compiler, 363 are native C or C++, 183 Go, and 58 Rust. The 241 Go or Rust binaries, 40% of the total, are the case the engine's runtime-aware gating exists for, and 50, all ELF, are UPX-packed. Of these 470, 425 fall in our scanned, non-withdrawn corpus form the evaluation set in Detection.
Benign Set
The benign set is defined from external signals only, with no reliance on the engine's own verdict. A package qualifies when it ships a native binary, exceeds one million monthly downloads, and has never appeared in OSV, giving 2,449 package-versions across 287 distinct packages. The scanner escalates 104 of them to highly suspicious or above, a false-positive rate of 4.25% of package-versions, concentrated in 6 distinct packages, 2% of the 287. On all 104 the static playbooks also fired, and on 33 a binary capability profile reached the malicious or critical threshold, so the escalation reflected genuine signals in the binary, packing, high-entropy sections, and suspicious imports. The residual false-positive rate is a property of static binary ambiguity.
Detection
The evaluation set is the 425 binary-bearing package-versions from the Malicious Set that carry a production verdict (the non-withdrawn subset in our verdicted corpus). Against these and the benign set, the scanner reaches precision 0.77, recall 0.81, and F1 0.79 at the escalation threshold (Table 8). Recall is scored against OSV's package-level label, which does not isolate the malicious artifact, and a binary capability profile drove 74% of the detections while the rest were escalated on JavaScript, metadata, or source signals.
Table 8. Detection performance across OSV-confirmed binary malware and the benign validation corpus at the escalation threshold.
| TP | FN | FP | TN | Precision | Recall | F1 |
|---|---|---|---|---|---|---|
| 345 | 80 | 104 | 2345 | 0.77 | 0.81 | 0.79 |
The scanner recovers 345 of the 425 positives; 60 fall to suspicious and 20 are cleared as benign, a 4.7% hard-miss rate. Inspecting the metadata of the 20 cleared packages, without opening the binaries, about half bundle a recognizable third-party tool unchanged (ripgrep, node-pty, NSIS installer plugins) where OSV attributes the malice to the install or JavaScript layer; the rest ship the package's own compiled CLI, flagged for an account-compromise campaign or a low-confidence advisory. The binary-level miss rate is thus lower than the headline, though we do not claim every cleared binary is benign.
Limitations
The production figures are measured against OSV's package-level labels, which mark a whole package malicious without isolating the responsible artifact; some cleared packages are mislabeled, their payload in JavaScript or metadata rather than the binary. So the reported recall and false-positive rate describe performance against those labels, not binary detection specifically, which could be somewhat higher or lower. And the hosted models sit behind continuously updated endpoints, so absolute verdicts reflect one serving epoch and may drift, which is why our conclusions rest on the within-epoch delta between no-profile and with-profile conditions on byte-identical inputs, not on any single verdict.
Conclusion
The four failure modes, rationalization, dismissal, hedging, and confabulation, recur across the panel, producing detection failures on 50% of budget-tier tests at the escalation threshold and 73% at the stricter malicious bar. Capability profiles, which inject pre-computed binary domain knowledge before the model reasons, cut escalation-threshold failures to 4% and eliminate every benign verdict, while holding false positives on the benign set to 4.25% of package-versions (104 of 2,449; 2% of distinct packages), low enough for an analyst to clear by hand. Together these let a far cheaper model match the detection accuracy of a substantially more expensive one.
Appendix
Table A1. Verdicts without capability profiles (verdict and confidence), per model and payload. This is the full matrix summarized in Table 3 and the Results Without Capability Profiles section.
| Model | buildchain | hashworker | netpulse | taskd | sysmon v1 | sysmon v2 | sysmon v3 | sysmon v4 | sysmon v5 | sysmon v6 |
|---|---|---|---|---|---|---|---|---|---|---|
| Claude Haiku 4.5 | HIGHLY_SUSP 0.85 | HIGHLY_SUSP 0.85 | MAL 0.92 | HIGHLY_SUSP 0.85 | MAL 0.98 | SUSP 0.72 | SUSP 0.65 | SUSP 0.65 | HIGHLY_SUSP 0.78 | SUSP 0.72 |
| Gemini 3.5 Flash | MAL 0.98 | MAL 0.99 | MAL 0.98 | MAL 0.98 | MAL 0.98 | MAL 0.95 | MAL 0.95 | MAL 0.95 | MAL 0.95 | MAL 0.95 |
| Gemma 3 12B | HIGHLY_SUSP 0.85 | HIGHLY_SUSP 0.85 | HIGHLY_SUSP 0.85 | HIGHLY_SUSP 0.85 | HIGHLY_SUSP 0.85 | BENIGN 0.95 | BENIGN 0.95 | BENIGN 0.95 | BENIGN 0.95 | BENIGN 0.95 |
| GPT-5.4-nano | SUSP 0.62 | SUSP 0.62 | SUSP 0.55 | SUSP 0.62 | SUSP 0.62 | SUSP 0.62 | BENIGN 0.78 | BENIGN 0.78 | SUSP 0.55 | SUSP 0.62 |
| Qwen3-Next 80B | BENIGN 0.98 | BENIGN 0.98 | BENIGN 0.98 | BENIGN 0.98 | MAL 0.98 | BENIGN 0.98 | BENIGN 0.98 | BENIGN 0.98 | BENIGN 0.98 | BENIGN 0.98 |
| GLM 5.3 Flash | HIGHLY_SUSP 0.70 | HIGHLY_SUSP 0.80 | MAL 0.90 | HIGHLY_SUSP 0.85 | MAL 0.90 | HIGHLY_SUSP 0.80 | SUSP 0.60 | HIGHLY_SUSP 0.70 | MAL 0.85 | MAL 0.85 |
| Llama 3.1 8B | MAL 0.95 | HIGHLY_SUSP 0.85 | SUSP 0.80 | BENIGN 0.95 | HIGHLY_SUSP 0.85 | BENIGN 0.95 | SUSP 0.70 | MAL 0.95 | BENIGN 0.95 | BENIGN 0.95 |
| Claude Sonnet 4.6 | MAL 0.93 | MAL 0.97 | MAL 0.95 | MAL 0.92 | MAL 0.97 | MAL 0.95 | HIGHLY_SUSP 0.82 | MAL 0.92 | MAL 0.95 | MAL 0.95 |
| Kimi K3 | MAL 0.90 | MAL 0.90 | MAL 0.95 | MAL 0.85 | MAL 0.93 | MAL 0.92 | MAL 0.92 | MAL 0.90 | MAL 0.92 | MAL 0.90 |
References
[1] Sonatype. “2026 State of the Software Supply Chain”. 2026. https://www.sonatype.com/state-of-the-software-supply-chain/introduction
[2] SourceCodeRed. “IndonesianFoods spam campaign publishes more than 86,000 malicious NPM packages”. 2025. https://sourcecodered.com/indonesianfoods-npm-worm/
[3] Kieran Miyamoto. “DPRK npm packages”. https://dprk-research.kmsec.uk/
[4] Amazon. “Amazon identifies North Korean hacker group behind open-source supply chain attacks”. 2026. https://aws.amazon.com/blogs/security/amazon-identifies-north-korean-hacker-group-behind-open-source-supply-chain-attacks/
[5] OpenSourceMalware. “PolinRider: DPRK Threat Actor Implants Malware in Hundreds of GitHub Repos”. 2026. https://github.com/OpenSourceMalware/PolinRider
[6] Zscaler. “Tracking Shai-Hulud: Inside the ChainDrop NPM Worm”. 2026. https://www.zscaler.com/blogs/security-research/tracking-shai-hulud-inside-chaindrop-npm-worm
[7] CISA. “Widespread Supply Chain Compromise Impacting npm Ecosystem”. 2025. https://www.cisa.gov/news-events/alerts/2025/09/23/widespread-supply-chain-compromise-impacting-npm-ecosystem
[8] Unit42. “The npm Threat Landscape: Attack Surface and Mitigations”. 2026. https://unit42.paloaltonetworks.com/monitoring-npm-supply-chain-attacks/
[9] OSSF. “OpenSSF Malicious Packages”. https://github.com/ossf/malicious-packages
[10] VirusTotal. “What is YARA?”. 2026. https://docs.virustotal.com/docs/what-is-yara
[11] Semgrep. “Semgrep: lightweight static analysis for many languages”. https://semgrep.dev
[12] Levi, M. et al. “CyberPal.AI: Empowering LLMs with Expert-Driven Cybersecurity Instructions”. 2024. https://arxiv.org/pdf/2408.09304v1
[13] Ullah, S. et al. “LLMs Cannot Reliably Identify and Reason About Security Vulnerabilities (Yet?): A Comprehensive Evaluation, Framework, and Benchmarks”. 2024. https://arxiv.org/abs/2312.12575
[14] Traad, F.; Chehab, A. “To Ensemble or Not: Assessing Majority Voting Strategies for Phishing Detection with Large Language Models”. 2024. https://arxiv.org/abs/2412.00166
[15] Li, Q. et al. “Beyond Majority Voting: LLM Aggregation by Leveraging Higher-Order Information”. 2025. https://arxiv.org/abs/2510.01499
[16] Sharma, M. et al. “Towards Understanding Sycophancy in Language Models”. 2023. https://arxiv.org/abs/2310.13548
[17] Patsakis, C. et al. “Assessing LLMs in Malicious Code Deobfuscation of Real-world Malware Campaigns”. 2024. https://doi.org/10.1016/j.eswa.2024.124912
[18] Jelodar, H. et al. “Large Language Model (LLM) for Software Security: Code Analysis, Malware Analysis, Reverse Engineering”. 2025. https://arxiv.org/abs/2504.07137
来源:Databricks:Blog · databricks.com