Arch Linux’s AUR is experiencing a malware incident involving user-contributed packages with malicious commits that attempt to download npm-based payloads during installation. (…)

Arch users should not update AUR packages without review. Examine PKGBUILD diffs, check any new .install files, and be cautious if updates introduce npm commands or dependencies unrelated to the software.

Users who recently updated affected AUR packages should review package history, examine executed suspicious install scripts, and treat any unexpected npm-based installation behavior as a possible compromise.

  • Mactan ( mactan@lemmy.ml ) 
    link
    fedilink
    arrow-up
    27
    ·
    edit-2
    4 months ago

    To potentially prevent this entire class of npm attacks in the future, you could edit /etc/pacman.conf, uncomment

    # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
    #IgnorePkg   =
    

    And set it to IgnorePkg = npm

    Your system should prompt you to accept installing npm because it’s in the ignore list. These packages set it as a dependency, so that gives you a chance to notice that something’s off and refuse the install. This assumes you don’t already have npm installed or need it for some reason.

    https://lists.archlinux.org/archives/list/aur-general@lists.archlinux.org/thread/FGXPCB3ZVCJIV7FX323SBAX2JHYB7ZS4/

    edit: word is that bun command is being abused as well and may be worthwhile including in the space separated list:

    IgnorePkg = npm bun

    • lemmyvore ( lemmyvore@feddit.nl ) 
      link
      fedilink
      English
      arrow-up
      18
      ·
      4 months ago

      Because the NPM is a complete mess and it’s super easy to exploit for supply-chain attacks by sneaking malware into one of the billion dependencies required by most popular packages.

        • lemmyvore ( lemmyvore@feddit.nl ) 
          link
          fedilink
          English
          arrow-up
          13
          ·
          4 months ago

          AUR “packages” are just a recipe file that runs some commands that sources packages from somewhere else and builds them then puts them in the format required by the AUR package manager.

          Normally it’s a source tarball downloaded directly from the project’s Git repo. But it can also fetch and install a binary package (for closed source software). Or it can install Node modules, or Python modules etc.

          Point is, you can’t inject a script directly in AUR itself. You could add the malicious code directly to the recipe file but it would be obvious. You could also download a zip with the malware directly, but it would also be obvious.

          So what they do is add the malware to modules published on another platform, and they’re downloaded indirectly, as a dependency of the Nth grade.

          It’s very hard to detect, you can’t really notice this kind of attack with a glance at the recipe.

        • lemmyvore ( lemmyvore@feddit.nl ) 
          link
          fedilink
          English
          arrow-up
          4
          ·
          4 months ago

          Here’s the AUR recipe (PKGBUILD file) for a random package:

          https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=nautilus-git

          This is a standard format for the recipe. It’s Bash code used to define variables and functions.

          You’ll notice there’s no place to sneak in a Python script. There is some brief Bash code in the functions but any major stuff would stand out immediately. So would an command that fetches a malware zip from a weird URL.

          Meanwhile, if you add node or python to the dependencies, and then run a command that installs a perfectly legit npm or pip module, nobody would bat an eye. It’s impossible to figure out that among the many upstream dependencies of that module there might be one that was subverted to discreetly run malware.

          AUR is a very bad idea tbh and should not be used by the faint of heart. It makes it entirely too easy to pull this kind of crap.

  • sanpo ( sanpo@sopuli.xyz ) 
    link
    fedilink
    arrow-up
    12
    ·
    edit-2
    4 months ago

    What a terrible article.

    “Multiple” packages mentioned in the title, but they’re unable to actually name more than one in the article…

    //edit
    Actually, they did leave a link to the mailing list thread at the very end.
    I should learn to read the entire article…

  • mecen ( mecen@lemmy.ca ) 
    link
    fedilink
    arrow-up
    6
    ·
    4 months ago

    To be fair, basic checks should be done not just make account and in next 10 seconds accept abandoned package and publish malware.

  • I wasn’t hit according to the public script but I am definitely rethinking my use of Arch and most certainly refraining from the AUR as much as possible going forward. This is far too many events in such a small period of time for me.

  • MonkderVierte ( MonkderVierte@lemmy.zip ) 
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    4 months ago

    … how do i make npm generally not work on Linux? I don’t use it and with how attack vectors are the majority of cases via NPM… and can be shipped as a binary to <arbitrary temp location>.
    Environment variables pointing to /dev/null? Application firewall? Or would just blocking some domain/IP suffice?

    • Destide ( sirico@feddit.uk ) 
      link
      fedilink
      English
      arrow-up
      6
      ·
      4 months ago

      sudo {package-manager} remove npm nodejs sudo {package-manager} purge npm nodejs

      npm: sudo tee /usr/local/bin/npm >/dev/null <<‘EOF’ #!/bin/sh echo “npm is blocked on this system.” exit 1 EOF

      sudo chmod 755 /usr/local/bin/npm

      npx: sudo tee /usr/local/bin/npx >/dev/null <<‘EOF’ #!/bin/sh echo “npx is blocked on this system.” exit 1 EOF

      sudo chmod 755 /usr/local/bin/npx

      Might break somethings but that’s a part of boycotting something I guess.