{"id":11099,"date":"2026-03-04T10:04:18","date_gmt":"2026-03-04T10:04:18","guid":{"rendered":"https:\/\/serisec.com\/index.php\/2026\/03\/04\/malicious-packages-disguised-as-laravel-utilities-deploy-php-rat-and-enables-remote-access\/"},"modified":"2026-03-04T10:04:18","modified_gmt":"2026-03-04T10:04:18","slug":"malicious-packages-disguised-as-laravel-utilities-deploy-php-rat-and-enables-remote-access","status":"publish","type":"post","link":"https:\/\/serisec.com\/index.php\/2026\/03\/04\/malicious-packages-disguised-as-laravel-utilities-deploy-php-rat-and-enables-remote-access\/","title":{"rendered":"Malicious Packages Disguised as Laravel Utilities Deploy PHP RAT and Enables Remote Access"},"content":{"rendered":"<p>    Malicious Packages Disguised as Laravel Utilities Deploy PHP RAT and Enables Remote Access<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n    <!-- no image --><br \/>\n \t<BR><br \/>\n<BR><\/BR><\/p>\n<div>\n<p>A supply chain attack targeting the PHP developer community has surfaced through Packagist, the official package repository for PHP and Laravel projects. <\/p>\n<p>Threat actor\u00a0nhattuanbl\u00a0published several packages that disguised a fully functional remote access trojan (RAT) inside what looked like standard Laravel utility libraries, giving attackers silent and persistent control over any system that installed them.<\/p>\n<p>The attack relied on a straightforward but effective strategy: blend in. The threat actor published six packages under the same author name between June and December 2024, despite the Packagist account itself dating back to December 2015. <\/p>\n<p>Three of those packages were completely clean and served as credibility builders, while two,\u00a0nhattuanbl\/lara-helper\u00a0and\u00a0nhattuanbl\/simple-queue, carried an identical malicious payload buried inside a file named\u00a0<code>src\/helper.php<\/code>. <\/p>\n<p>A third package,\u00a0nhattuanbl\/lara-swagger, contained no malicious code on its own but silently pulled in\u00a0<code>lara-helper<\/code>\u00a0as a hard Composer dependency, making it a clean-looking carrier for a dirty payload.\u200b<\/p>\n<p><a href=\"https:\/\/socket.dev\/blog\/malicious-packagist-packages-disguised-as-laravel-utilities\" id=\"https:\/\/socket.dev\/blog\/malicious-packagist-packages-disguised-as-laravel-utilities\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Socket.dev analysts identified this remote access trojan<\/a> distributed across the malicious Packagist packages, noting that once installed, the payload connects to a command-and-control (C2) server at\u00a0<code>helper[.]leuleu[.]net<\/code>\u00a0on port 2096, transmits a full system profile, and waits for operator commands, giving the attacker complete remote control over the compromised host. <\/p>\n<p>The researchers submitted takedown requests to the Packagist team, though the packages remained live at the time of publication.\u200b<\/p>\n<p>The impact of this campaign is wide-reaching. Any <a href=\"https:\/\/cybersecuritynews.com\/laravel-framework-vulnerability\/\" id=\"95369\" target=\"_blank\" rel=\"noreferrer noopener\">Laravel application<\/a> that installed these packages has a persistent RAT running in the same process as the web app, with access to the same environment variables, database credentials, and API keys stored in\u00a0<code>.env<\/code>\u00a0files. <\/p>\n<p>The payload works on Windows, macOS, and Linux, making it a cross-platform threat that does not discriminate based on the developer\u2019s operating system.\u200b<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEh_MJu2Z59c2Hvjgqi_MYk8WX9h8cRaStEnXDPdH_GTrGnr1DLDOIsYjGgM_BET9vsEq5dDKK_sVPNeUI6LfbAbjc36OphSiBrD5-GvhmM1HojrsjYyaNvtY9nMZ3AVJhhqtUMIjhklM3Z04zCAU8GQ-KjhToBfSDx5yNDxg2zDHYlusLiaBlA6ijeH4v8\/s16000\/lara-swagger%27s%2520composer.json%2520explicitly%2520requires%2520nhattuanbl%2520-%2520lara-helper%2520at%2520dev-master%2520%28Source%2520-%2520Socket.dev%29.webp?ssl=1\" alt=\"lara-swagger's composer.json explicitly requires nhattuanbl - lara-helper at dev-master (Source - Socket.dev)\"><figcaption class=\"wp-element-caption\">lara-swagger\u2019s composer.json explicitly requires nhattuanbl \u2013 lara-helper at dev-master (Source \u2013 Socket.dev)<\/figcaption><\/figure>\n<\/div>\n<p>What makes this attack particularly concerning is that even if the C2 server goes offline, the threat does not disappear. <\/p>\n<p>The RAT retries its connection every 15 seconds indefinitely, meaning the attacker could simply redirect it to a new host at any time without modifying the payload itself. <\/p>\n<p>The RAT-bearing packages, once loaded, operate silently in the background from the moment the application starts.\u200b<\/p>\n<h2 class=\"wp-block-heading\" id=\"inside-the-infection-mechanism\"><strong>Inside the Infection Mechanism<\/strong><\/h2>\n<p>The infection chain is built for stealth at every stage. The malicious file\u00a0<code>helper.php<\/code>\u00a0is 27,340 bytes and delivered as a single continuous line after the opening\u00a0<code>&lt;?php<\/code>\u00a0tag, making it hard to read at a glance. <\/p>\n<p>The payload uses three distinct obfuscation layers: control flow is shattered into hundreds of randomized\u00a0<code>goto<\/code>\u00a0jumps with meaningless labels like\u00a0<code>tc0pE<\/code>\u00a0and\u00a0<code>IlaiV<\/code>; every string literal, including <a href=\"https:\/\/cybersecuritynews.com\/win-dos-zero-click-vulnerabilities-turns-windows-domain-controllers-into-ddos-botnet\/\" id=\"120336\" target=\"_blank\" rel=\"noreferrer noopener\">domain names<\/a>, command names, and file paths, is encoded using hexadecimal or octal escape sequences so nothing readable appears in plaintext; and all variable and function names are randomly generated strings like\u00a0<code>$riz07<\/code>\u00a0and\u00a0<code>BsYhQ()<\/code>.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjpOKmX4EC6e46pWy0Yc5z1ifckeyVY3-ThigPZ04y2b2PSMEpngW3n8q37eL3z-p5iFBCYwt5z4upOLINHGEcixwI3n8KFYkbg9oVB9ZdvY71fltmLHdw1pFvPOzES0ZW9b0-P1_K4CCtwmNRZRvSHEvfjozaSoG5lj5ScBh3ZL6wpnFA5mZ8KkVtKLfM\/s16000\/Mitre%2520attack%2520techniques%2520%28Source%2520-%2520Socket.Dev%29.webp?ssl=1\" alt=\"Mitre attack techniques (Source - Socket.Dev)\"><figcaption class=\"wp-element-caption\">Mitre attack techniques (Source \u2013 Socket.Dev)<\/figcaption><\/figure>\n<\/div>\n<p>Activation works differently depending on which infected package a developer installs. In\u00a0<code>lara-helper<\/code>, the package registers a Laravel service provider through Composer\u2019s auto-discovery mechanism, and\u00a0<code>helper.php<\/code>\u00a0is loaded on every single application boot. <\/p>\n<p>In\u00a0<code>simple-queue<\/code>, the malicious include sits at the file scope level, meaning the payload fires the moment PHP\u2019s autoloader resolves the class, even through a type-hint or a simple\u00a0<code>class_exists()<\/code>\u00a0check. <\/p>\n<p>Once triggered, the RAT spawns a detached background process of itself, passing a\u00a0<code>helper<\/code>\u00a0argument, while the parent process returns to normal execution so the application never shows any visible signs of infection. <\/p>\n<p>A lock file prevents duplicate instances and expires every 15 minutes.\u200b All traffic between the RAT and its C2 server is encrypted using\u00a0AES-128-CTR, with a hardcoded 16-byte key (<code>esCAmxUoJkIjTV0n<\/code>) embedded in the payload. <\/p>\n<p>The C2 accepts JSON commands that instruct the RAT to run shell or <a href=\"https:\/\/cybersecuritynews.com\/new-yurei-ransomware-with-powershell-commands\/\" id=\"126128\" target=\"_blank\" rel=\"noreferrer noopener\">PowerShell commands<\/a>, capture screenshots, upload or download files, and return full system reconnaissance data including hostname, OS version, user permissions, and a machine unique ID.\u200b<\/p>\n<p>Any team that installed\u00a0<code>nhattuanbl\/lara-helper<\/code>,\u00a0<code>nhattuanbl\/simple-queue<\/code>, or\u00a0<code>nhattuanbl\/lara-swagger<\/code>\u00a0should treat the affected host as fully compromised. <\/p>\n<p>All secrets accessible from the application environment, including database passwords, API keys, and\u00a0<code>.env<\/code>\u00a0values, must be rotated immediately. <\/p>\n<p>The packages and the\u00a0<code>helper.php<\/code>\u00a0file should be removed, any files with\u00a0<code>chmod 0777<\/code>\u00a0permissions should be audited, and the lock file at\u00a0<code>{sys_get_temp_dir}\/wvIjjnDMRaomchPprDBzzVSpzh61RCar.lock<\/code>\u00a0should be deleted. <\/p>\n<p>Teams should also review outbound traffic to\u00a0<code>helper[.]leuleu[.]net:2096<\/code>, audit transitive dependencies, and avoid using\u00a0<code>dev-master<\/code>\u00a0constraints in production environments since they bypass version pinning entirely.\u200b<\/p>\n<p class=\"has-text-align-center has-background\" style=\"background:linear-gradient(180deg,rgb(238,238,238) 92%,rgb(169,184,195) 100%)\"><strong>Follow us on\u00a0<a href=\"https:\/\/news.google.com\/publications\/CAAqMggKIixDQklTR3dnTWFoY0tGV041WW1WeWMyVmpkWEpwZEhsdVpYZHpMbU52YlNnQVAB?hl=en-IN&amp;gl=IN&amp;ceid=IN:en\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Google News<\/a>,\u00a0<a href=\"https:\/\/www.linkedin.com\/company\/cybersecurity-news\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">LinkedIn<\/a>,\u00a0and\u00a0<a href=\"https:\/\/x.com\/cyber_press_org\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">X<\/a>\u00a0to Get More Instant Updates<\/strong>,\u00a0<strong>Set CSN as a Preferred Source in\u00a0<a href=\"https:\/\/www.google.com\/preferences\/source?q=cybersecuritynews.com\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Google<\/a>.<\/strong><\/p>\n<p>The post <a href=\"https:\/\/cybersecuritynews.com\/malicious-packages-disguised-as-laravel-utilities\/\">Malicious Packages Disguised as Laravel Utilities Deploy PHP RAT and Enables Remote Access<\/a> appeared first on <a href=\"https:\/\/cybersecuritynews.com\/\">Cyber Security News<\/a>.<\/p>\n<\/div>\n<p> \t<BR><br \/>\n <BR><\/BR><br \/>\n    Tushar Subhra Dutta<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n<a href=\"https:\/\/cybersecuritynews.com\/malicious-packages-disguised-as-laravel-utilities\/\">Go to cyber-security-news<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Malicious Packages Disguised as Laravel Utilities Deploy PHP RAT and Enables Remote Access A supply chain attack targeting the PHP developer community has surfaced through Packagist, the official package repository for PHP and Laravel projects. Threat actor\u00a0nhattuanbl\u00a0published several packages that disguised a fully functional remote access trojan (RAT) inside what looked like standard Laravel utility [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[129,63,649],"tags":[130],"class_list":["post-11099","post","type-post","status-publish","format-standard","hentry","category-cyber-security","category-cyber-security-news","category-threats","tag-cyber-security-news"],"_links":{"self":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/11099"}],"collection":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/comments?post=11099"}],"version-history":[{"count":0,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/11099\/revisions"}],"wp:attachment":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/media?parent=11099"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/categories?post=11099"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/tags?post=11099"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}