Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

Our slopsquatting detector had three ways to say "safe". None of them needed evidence.

Description and use

The slopsquatting detector that relied on signed build statements, early registration, and missing creation dates was updated: unreliable rules were removed, all low-risk decisions are now logged with dates and sources, and risk assessment is based on age and registration date.

Problem

Language models suggest package names that may not exist, enabling attackers to register those names (slopsquatting) and trick developers into installing malicious code.

Outcome

The updated detector no longer relies on weak evidence, records low-risk decisions for audit, and improves reliability against slopsquatting attacks.

Workflow

  • Collect suggested package names from language models.
  • Query registries (npm, PyPI, Go modules) for each name.
  • Apply age-based risk ladder: <14 days high, <60 days medium, otherwise low.
  • Remove rule that accepted signed build statements as low risk.
  • Remove rule that accepted early registration as low risk.
  • Replace missing creation date rule with Go module date from deps.dev.
  • Record every low verdict with rule, registration date, and first sighting date.
  • Re-score previously withdrawn findings under new rules.
  • Plan to audit rule 2 by plotting registration dates against collection start date once data accumulates.

Evidence

Ask a language model which package to use and, now and then, it names one that does not exist.

Source

A package that appeared last week and matches a name models keep inventing deserves suspicion.

Source

If it has a signed build statement, return low risk.

Source

If it was registered before anyone suggested it, return low risk.

Source

If info.created_at is None, return low risk.

Source

Now every low verdict is recorded with the rule that produced it, the registration date and our first sighting.

Source

  • Record date: 2026-10-02T04:40:42.049Z