{"id":1033,"date":"2026-05-23T18:22:28","date_gmt":"2026-05-23T18:22:28","guid":{"rendered":"https:\/\/thedigitalfortress.us\/?p=1033"},"modified":"2026-05-23T18:22:28","modified_gmt":"2026-05-23T18:22:28","slug":"packagist-supply-chain-attack-infects-8-packages-using-github-hosted-linux-malware","status":"publish","type":"post","link":"https:\/\/thedigitalfortress.us\/?p=1033","title":{"rendered":"Packagist Supply Chain Attack Infects 8 Packages Using GitHub-Hosted Linux Malware"},"content":{"rendered":"<div>\n<p><span class=\"p-author\"><i class=\"icon-font icon-user\">\ue804<\/i><span class=\"author\">Ravie Lakshmanan<\/span><i class=\"icon-font icon-calendar\">\ue802<\/i><span class=\"author\">May 23, 2026<\/span><\/span><span class=\"p-tags\">Malware \/ DevSecOps<\/span><\/p>\n<\/div>\n<div id=\"articlebody\">\n<div class=\"separator\" style=\"clear: both;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEiQ5LyRYJIkEVUSrrBV-_qvrXIKC-B4h0JAxyV4IalzuiEzXi6KeCnZNTUWIIld3oeC5kDx85xppqYm9tG_UB3_Sss9WqH2bYsOVxkB3PhjUk_cQrdyvr6JKsYgn35_sESYYsLC_OuKN9_2korX__RfHwkecLX_BGk7aajnm3sfNqbpV4Pl55B1fpSBpbOA\/s1700-e365\/packagist.jpg\" style=\"display: block;  text-align: center; clear: left; float: left;\"><\/a><\/div>\n<p>A new \u00abcoordinated\u00bb supply chain attack campaign has impacted eight packages on <b>Packagist <\/b>including malicious code designed to run a Linux binary retrieved from a GitHub Releases URL.<\/p>\n<p>\u00abAlthough the affected packages were all Composer packages, the malicious code was not added to composer.json,\u00bb Socket <a href=\"https:\/\/socket.dev\/blog\/malicious-postinstall-hook-found-across-700-github-repos\">said<\/a>. \u00abInstead, it was inserted into package.json, targeting projects that ship JavaScript build tooling alongside PHP code.\u00bb<\/p>\n<p>This \u00abcross-ecosystem placement\u00bb makes the activity stand out because developers and security teams scanning PHP dependencies may only focus on Composer-related metadata, while skipping package.json lifecycle hooks that are bundled within the package. The malicious versions have since been removed from Packagist.<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/threatlabz-vpn-risk-2026-d\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Cybersecurity\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhnNON5UeWywT7OcPNw7V4L7QNWnCnm7Xl_99Y9ek8dL-gRwx-bWxQM1TKqt8deqqrdpUyKMuuijAWyyPQVB0s0qf8ntQ6ldFAJLru-QUWhddKTopc7SeNbBBnd-TsfFyRPP-AAyDuclLlL6XHK4_LXqDC_7eyaz9pzToYr7U543MhrJ7qcK-89sVWHTQUZ\/s728-e100\/zz-2-d.jpg\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>An analysis of the packages has uncovered that their upstream repositories have been modified to include a postinstall script that attempts to download a Linux binary from a GitHub Releases URL (\u00abgithub[.]com\/parikhpreyash4\/systemd-network-helper-aa5c751f\u00bb), save it to the \u00ab\/tmp\/.sshd\u00bb folder, change its permissions using \u00abchmod\u00bb to grant execute permissions to all users, and run it in the background.<\/p>\n<p>The names of the packages and the associated affected version are listed below &#8211;<\/p>\n<ul>\n<li>moritz-sauer-13\/silverstripe-cms-theme (dev-master)<\/li>\n<li>crosiersource\/crosierlib-base (dev-master)<\/li>\n<li>devdojo\/wave (dev-main)<\/li>\n<li>devdojo\/genesis (dev-main)<\/li>\n<li>katanaui\/katana (dev-main)<\/li>\n<li>elitedevsquad\/sidecar-laravel (3.x-dev)<\/li>\n<li>r2luna\/brain (dev-main)<\/li>\n<li>baskarcm\/tzi-chat-ui (dev-main)<\/li>\n<\/ul>\n<div class=\"separator\" style=\"clear: both;\"><a href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhDQ9n2zGUMElT3fTmlxFcqwhshj_IUfwaETriEbm3_zMnbsUNtmt43furrUjIkzoKQeoBK_6NyKLVwM9qoqhJrDBFI8Qv53_wxVUJZHYmHJuVOwnp1kbZzRNP2MFTo69d7aYCfi4N9Mvvytx8Sgdyd4lOn5gluusuog7MuXvQh2P5FTMXgbq8iH853xScQ\/s1700-e365\/git.png\" style=\"display: block;  text-align: center; clear: left; float: left;\"><img decoding=\"async\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhDQ9n2zGUMElT3fTmlxFcqwhshj_IUfwaETriEbm3_zMnbsUNtmt43furrUjIkzoKQeoBK_6NyKLVwM9qoqhJrDBFI8Qv53_wxVUJZHYmHJuVOwnp1kbZzRNP2MFTo69d7aYCfi4N9Mvvytx8Sgdyd4lOn5gluusuog7MuXvQh2P5FTMXgbq8iH853xScQ\/s1700-e365\/git.png\" alt=\"\" border=\"0\" data-original-height=\"663\" data-original-width=\"1226\"\/><\/a><\/div>\n<p>Socket&#8217;s investigation has found references to the same payload across 777 files in GitHub, suggesting that it could be part of a broader campaign. In at least <a href=\"https:\/\/github.com\/448776129\/UA2F\/blob\/master\/.github\/workflows\/ci.yml\">two<\/a> <a href=\"https:\/\/github.com\/448776129\/blog-1\/blob\/9ebac2e4118396b84e508585f356bf06971c4fb5\/.github\/workflows\/deploy_coding.yml\">instances<\/a>, it was added to a GitHub workflow. However, it&#8217;s currently not known how many of these match distinct compromises, forks, duplicate package artifacts, or cached references.<\/p>\n<p>\u00abThis suggests the attacker was not relying on a single execution mechanism. In package artifacts, the payload was triggered through package.json postinstall scripts,\u00bb the application security firm said. \u00abIn workflow files, it was positioned to run during GitHub Actions jobs.\u00bb<\/p>\n<div class=\"dog_two clear\">\n<div class=\"cf\"><a href=\"https:\/\/thehackernews.uk\/ai-cant-stop-d\" rel=\"nofollow noopener sponsored\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" alt=\"Cybersecurity\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjPEV6-530TOlxG6PjrmdlY623wpBwduZ7t1HV6flcmO5R4q4AmfixDUzW0CrhlvMVNWbhvOIso-UDNTka4W_W9Chrdj_dglwBZwi7DuePM2IMIl-hfUYVIqBXgfpr_2619K8Gptb4LzwJ6gUbi7lWl2M8AFQJsHEaw63Q7tZ6708YGruiHrr0Y2W9YYxLQ\/s728-e100\/ThreatLocker-d.png\" width=\"729\" height=\"91\"\/><\/a><\/div>\n<\/div>\n<p>What&#8217;s more, the exact nature of the payload downloaded from GitHub is unclear, as the <a href=\"https:\/\/github.com\/parikhpreyash4\">GitHub account<\/a> associated with the repository hosting it is no longer available. The choice of the name \u00abgvfsd-network\u00bb for the malware is interesting, as it refers to a GNOME Virtual File System (GVfs) daemon <a href=\"https:\/\/en.wikipedia.org\/wiki\/GVfs\">responsible<\/a> for managing and browsing network shares.<\/p>\n<p>\u00abEven without the second-stage binary, the malicious installer is enough to warrant blocking,\u00bb Socket said. \u00abIt provides remote code execution during installation or build workflows and attempts to hide its activity by disabling TLS verification, suppressing errors, and running a downloaded binary in the background.\u00bb<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ue804Ravie Lakshmanan\ue802May 23, 2026Malware \/ DevSecOps A new \u00abcoordinated\u00bb supply chain attack campaign has impacted eight packages on Packagist including malicious code designed to run a Linux binary retrieved from&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1034,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[220,219,1781,567,181,42,35,420,218],"class_list":["post-1033","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-attack","tag-chain","tag-githubhosted","tag-infects","tag-linux","tag-malware","tag-packages","tag-packagist","tag-supply"],"_links":{"self":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/posts\/1033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1033"}],"version-history":[{"count":0,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/posts\/1033\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=\/wp\/v2\/media\/1034"}],"wp:attachment":[{"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thedigitalfortress.us\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}