{"id":4368,"date":"2024-07-09T11:06:36","date_gmt":"2024-07-09T16:06:36","guid":{"rendered":"https:\/\/www.darkreading.com\/cyberattacks-data-breaches\/trojanized-jquery-packages-complex-supply-chain-attack"},"modified":"2024-07-09T11:06:36","modified_gmt":"2024-07-09T16:06:36","slug":"trojanized-jquery-packages-spread-via-complex-supply-chain-attack","status":"publish","type":"post","link":"https:\/\/ddi.mohflo.net\/index.php\/2024\/07\/09\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack\/","title":{"rendered":"Trojanized jQuery Packages Spread via &#8216;Complex&#8217; Supply Chain Attack"},"content":{"rendered":"<div class=\"media_block\"><a href=\"https:\/\/i0.wp.com\/eu-images.contentstack.com\/v3\/assets\/blt6d90778a997de1cd\/blt190ed92a6c32cb1e\/668d0e0e0bd6433f12afdbfe\/Javascript_bleakstar_shutterstock_242852425.jpg?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?w=640&#038;ssl=1\" class=\"media_thumbnail\"><\/a><\/div>\n<div><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?w=640&#038;ssl=1\" class=\"ff-og-image-inserted\"><\/div>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">Once again, cyberattackers are targeting JavaScript developers \u2014 this time in a &#8220;complex and persistent supply chain attack&#8221; that&#8217;s distributing Trojanized packages for the popular JavaScript library jQuery across GitHub, <\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"><a class=\"ContentText-BodyTextChunk ContentText-BodyTextChunk_link\" target=\"_blank\" href=\"https:\/\/www.darkreading.com\/application-security\/once-again-malware-discovered-hidden-in-npm\" rel=\"noopener\">Node Package Manager (npm)<\/a><\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">, and jsDelivr repositories.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">Each package contains a copy of jQuery with one small difference: the end function, a part of the jQuery prototype, is modified to include additional malicious code designed to extract website form data and send it to one of many URLs.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">That&#8217;s according to the Phylum Research Team, which said that, notably, the attackers have shown an unusual lack of a clear pattern of nomenclature and attribution, which deviates from typical software supply chain attacks of this kind; it &#8220;stands out due to the high variability across packages,&#8221; the team wrote in <\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"><a class=\"ContentText-BodyTextChunk ContentText-BodyTextChunk_link\" target=\"_blank\" href=\"https:\/\/blog.phylum.io\/persistent-npm-campaign-shipping-trojanized-jquery\/\" rel=\"noopener\">a recent blog post<\/a><\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">The unknown attackers have spreading dozens of malicious jQuery packages since May 26, according to the research. Phylum researchers discovered the first malicious jQuery variant on <\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"><a class=\"ContentText-BodyTextChunk ContentText-BodyTextChunk_link\" target=\"_blank\" href=\"https:\/\/www.darkreading.com\/application-security\/lofygang-100s-malicious-packages-poison-open-source-software\" rel=\"noopener\">npm<\/a><\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">, the default package manager for JavaScript&#8217;s runtime Node.js; this variant then was published in dozens of <\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"><a class=\"ContentText-BodyTextChunk ContentText-BodyTextChunk_link\" target=\"_blank\" href=\"https:\/\/www.darkreading.com\/application-security\/malicious-npm-package-poses-tailwind-tool\" rel=\"noopener\">npm packages<\/a><\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"> over a month&#8217;s time. Later, the researchers found instances of the Trojanized jQuery on other platforms, such as GitHub, and even found a version in a content delivery network (CDN)-hosted resource on jsDelivr.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">The volume of the published packages so far is &#8220;relatively minimal,&#8221; with about 68 in total found, the researchers said. The packages are often named jquery.min.js, with other variations such as registration.min.js, icon.min.js, and fontawesome.js. &#8220;The exfiltration URLs were almost unique for each package, and the attacker published to npm under new usernames,&#8221; according to the post.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">Sometimes a single user would publish multiple, related malicious jQuery packages, while other times the attackers included multiple file versions with different names within the same project. Moreover, almost every package also contains personal files not typically included in npm publications, such as the npm cache folder, npm logs folder, and a termux.properties file.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">&#8220;Overall, this attack is unlike most we&#8217;ve seen at this scale, which typically have a clear, well-defined pattern and an obvious automated aspect,&#8221; the team noted. &#8220;Here, the ad-hoc nature and custom variability of the packages, along with the long timeframe over which they were published, suggest that each package was manually assembled and published.&#8221;<\/span><\/p>\n<h2 class=\"ContentText ContentText_variant_h2 ContentText_align_left\" data-testid=\"content-text\" id=\"Targeted Supply Chain Attack Effort or Not?\">Targeted Supply Chain Attack Effort or Not?<\/h2>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">The manual nature of the attack tracks with evidence that it appears to be a targeted effort: It takes a specific set of victim actions for the malware to execute.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">&#8220;For the malware to be triggered, a user must install one of the malicious packages, use the included trojanized jQuery file, and then invoke either the end function or the fadeTo function,&#8221; according to the post.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">That said, while the end function itself doesn&#8217;t appear to be widely used directly in development that uses jQuery, the fadeTo function, which is from jQuery\u2019s animation toolkit, uses this end method far more widely, the team noted.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">&#8220;This specific chain of conditions makes it unclear whether this is a highly targeted attack or if the attacker is simply blending in well and randomly affecting users who download and use these packages,&#8221; according to the post.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">Moreover, despite the &#8220;narrow set of conditions&#8221; required to trip the malware, the broad <\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"><a class=\"ContentText-BodyTextChunk ContentText-BodyTextChunk_link\" target=\"_blank\" href=\"https:\/\/www.darkreading.com\/application-security\/once-again-malware-discovered-hidden-in-npm\" rel=\"noopener\">distribution of the packages<\/a><\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"> means the attack can potentially have a wide impact that affects &#8220;many unsuspecting developers,&#8221; exemplifying &#8220;the rising complexity and potential for the broad reach of supply chain threat actors,&#8221; the team noted.<\/span><\/p>\n<h2 class=\"ContentText ContentText_variant_h2 ContentText_align_left\" data-testid=\"content-text\" id=\"Heightened Vigilance Required\">Heightened Vigilance Required<\/h2>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">Indeed, the publication of malicious npm and other code packages to popular developer repositories has become an veritable security epidemic, with state-sponsored threat actors like <\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"><a class=\"ContentText-BodyTextChunk ContentText-BodyTextChunk_link\" target=\"_blank\" href=\"https:\/\/www.darkreading.com\/cyberattacks-data-breaches\/north-koreas-moonstone-sleet-widens-distribution-of-malicious-code-packages\" rel=\"noopener\">North Korea&#8217;s Moonstone Sleet<\/a><\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"> and other threat actors using this tactic as a way to <\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"><a class=\"ContentText-BodyTextChunk ContentText-BodyTextChunk_link\" target=\"_blank\" href=\"https:\/\/www.darkreading.com\/application-security\/lofygang-100s-malicious-packages-poison-open-source-software\" rel=\"noopener\">poison<\/a><\/span><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\"> code across the software supply chain and thus reach a broad attack surface with minimal effort.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">The increase in supply chain attacks that leverage code repositories requires heightened vigilance not only within the open source communities that manage the projects, but also among organizations, which are encouraged to scan any code used in development projects before distributing it to developers.<\/span><\/p>\n<p class=\"ContentParagraph ContentParagraph_align_left\" data-testid=\"content-paragraph\"><span class=\"ContentText ContentText_variant_bodyNormal\" data-testid=\"content-text\">To help developers that use jQuery to avoid installing the malicious packages, Phylum&#8217;s researchers included a list of all the names of the packages related to the campaign and the date they were published as well as the username associated with who published them in the blog post. They also included a long list of domains related to the campaign.<\/span><\/p>\n<p><a href=\"https:\/\/www.darkreading.com\/cyberattacks-data-breaches\/trojanized-jquery-packages-complex-supply-chain-attack\">Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Once again, cyberattackers are targeting JavaScript developers \u2014 this time<\/p>\n","protected":false},"author":12,"featured_media":4369,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[809],"class_list":["post-4368","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-dark-reading"],"featured_image_urls":{"full":["https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?fit=1920%2C1080&ssl=1",1920,1080,false],"thumbnail":["https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?resize=150%2C150&ssl=1",150,150,true],"medium":["https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?fit=300%2C169&ssl=1",300,169,true],"medium_large":["https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?fit=640%2C360&ssl=1",640,360,true],"large":["https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?fit=640%2C360&ssl=1",640,360,true],"1536x1536":["https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?fit=1536%2C864&ssl=1",1536,864,true],"2048x2048":["https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?fit=1920%2C1080&ssl=1",1920,1080,true],"chromenews-featured":["https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?fit=1024%2C576&ssl=1",1024,576,true],"chromenews-large":["https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?resize=825%2C575&ssl=1",825,575,true],"chromenews-medium":["https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?resize=590%2C410&ssl=1",590,410,true]},"author_info":{"display_name":"Dark Reading","author_link":"https:\/\/ddi.mohflo.net\/index.php\/author\/darkreading\/"},"category_info":"<a href=\"https:\/\/ddi.mohflo.net\/index.php\/category\/uncategorized\/\" rel=\"category tag\">Uncategorized<\/a>","tag_info":"Uncategorized","comment_count":"0","jetpack_featured_media_url":"https:\/\/i0.wp.com\/ddi.mohflo.net\/wp-content\/uploads\/2024\/07\/trojanized-jquery-packages-spread-via-complex-supply-chain-attack.png?fit=1920%2C1080&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/posts\/4368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/comments?post=4368"}],"version-history":[{"count":0,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/posts\/4368\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/media\/4369"}],"wp:attachment":[{"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/media?parent=4368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/categories?post=4368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ddi.mohflo.net\/index.php\/wp-json\/wp\/v2\/tags?post=4368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}