Linux Fu: Heads Or Tails For VPN

If you’ve done much networking, you surely know the frustration of trying to connect to something, say a Raspberry Pi, that lives behind your consumer router. There are a number of solutions for this, ranging from opening ports on your router along with dynamic DNS. Or, you can operate a VPN server on your network. Modern Linux has a facility called Wireguard that lets you create secure network tunnels very easily, but it is a little difficult to set up. But there are tools like Tailscale that can do most of the work for you. There’s only one problem: Tailscale is sorta-kinda free, but not really. But it turns out, you can build your own Tailscale network, and it is easier than you might imagine.

In all fairness, Tailscale’s free tier is good and recently got even more generous, allowing unlimited nodes and up to six users. That’s plenty for most hackers. However, as we’ve seen before, what they can give they can also take away. Besides, there are some extra services you still have to pay for if you want them, but overall, the free tier is more than enough for most people.

On the other hand, no matter how great the free tier may be, some people don’t want to run things on other people’s hardware. Or you need that 7th user. Or you need paywalled features. No worries. Headscale is a self-hosted service that can do nearly everything the cloud portion of Tailscale does, and if you have a place to host it, you can be your own Tailscale server.

For the client side? That’s the best part. Headscale works seamlessly with the existing Tailscale clients. You simply have to point them to your server instead of the defaults.

Continue reading “Linux Fu: Heads Or Tails For VPN”

This Week In Security: Claude Gets Hacking, Hotel WiFi, And NPM Compromised Again

kMaybe feeling left out from the questionable hype train of “Our AI models can’t be trusted”, Anthropic has released reports that their Claude model has “reached the Internet” and accessed the systems of other companies on at least three occasions during testing.

It appears that the model was restricted from accessing the Internet because (and wait for it) the prompt told it that it didn’t have Internet access, and was inside a simulation. It seems like Anthropic counted on the same trick that users try to convince a model that Grandma really wanted to pass on her life-long love of hacking services, it’s all pretend. Like the OpenAI incident, the models were tasked with completing a capture-the-flag style challenge, a common hacker challenge format where vulnerable systems are provided and contestants try to hack them the fastest. Anthropic says that a misconfiguration of the test environment left the models with Internet access, so the model succeeded in accessing the Internet at large once it ignored the prompt.

In some instances, Anthropic says the model proceeded under the “misconception” that it was still in a simulation, listening selectively to some of the prompt, while in others it continued regardless. In once incident, the test model generated malicious PyPI packages, which were uploaded to the public PyPI repository and downloaded 15 times. Further clouding the issue, one of the downloads of the malicious PyPI module was by a security auditing company that was then infected by the package during analysis, allowing the Claude agent to access credentials of the security company via a poorly designed malware analysis pipeline. The company essentially deliberately infected itself with a malicious package, while lacking protections against malicious packages!

Anthropic promises tighter controls in the future, but stops short of ensuring that models under test will be prevented from accessing the Internet, and categorizes it as a test gone wrong. “These facts give us cautious optimism that with tighter monitoring and controls around evaluation infrastructure, as well as continued investment in alignment, this type of risk can be overcome.”

It remains to be seen why allowing automatic code to hack the production environments of other companies is considered acceptable. If any of us had done the same we’d be facing serious legal questions.

Hotel WiFi Pushes Malware

A threat group associated with the Russian Foreign Intelligence Service (APT29, Cozy Bear, Storm-2945, and/or Midnight Blizzard) has been identified behind an attack to push fake updates over hotel WiFi networks.

It appears that the attackers compromised the captive portal and gateway systems of the impacted hotels. The captive portal system is the typical gatekeeping system that requires you to pay for Internet access, or at least input your hotel room and name. By hijacking the DNS, users were redirected to additional fake “verification” pages that served a menu of malware using a variety of techniques.

Like previously reported activity attempting to capture Microsoft365 logins via spoofed pages, most these attacks seem very loud and obvious, counting on the end user to ignore warnings about invalid SSL certificates or run commands in the shell. Using a variant of the “click-to-fix” attacks, the user is presented with a fake request for additional verification by copying and pasting a string of text into a command shell, which then decodes to a standard malware installation script. More subtle attacks attempt to trick the user into adding a new device to their Microsoft accounts. The user is redirected to a page claiming to require a Microsoft login to access the Internet, often hosted on a copycat domain similar to a legitimate Microsoft resource. The fake login then prompts the victim to copy and paste an authentication URL, adding a new logged-in device to the Microsoft account.

Obviously, running arbitrary shell commands, accepting invalid SSL certificates, or pasting arbitrary URLs after signing in are all something nobody should be doing, and it’s unclear how many users were actually impacted by the campaign. For corporate users, the answers are relatively simple: user training, and an always-on corporate VPN that routes all traffic and DNS through the company servers.

For home users, the solution may be more nuanced. Every third video on YouTube tells you that you need to install a commercial VPN, but in many ways this simply shifts the problem. A commercial (or even worse, a free public VPN) service can also intercept DNS requests and traffic, by design. While some services are legitimately privacy protecting and respecting, many hide the true owners of the service. A better tool is Tailscale, designed for implementing personal VPN services, where your traffic stays on your own devices.

Tailscale, OpenAI, and Hugging Face

Speaking of the Tailscale VPN, we jump to their role (or non-role) in the recent Open AI “incident” with Hugging Face.

Tailscale is a zero-trust framework for connecting systems using the WireGuard VPN protocol. For end users, this is an excellent way to set up a VPN where your traffic never leaves your own systems unencrypted. For enterprises, it is often used to connect services Internet-wide, which is how it was used in the Hugging Face infrastructure. Once the Open AI agent had selected Hugging Face as a target, it found a vulnerability in a package manager, accessed a worker machine at Hugging Face, escalated to root on the Kubernetes cluster, and extracted the production key and authentication storage. This allowed the Open AI model to authenticate against the Tailscale system and directly connect to the network.

This, rightly, is not Tailscale’s problem. Once the authentication keys are available, it’s working as designed to allow new devices to register on the network. This is a pervasive problem with stored authentication tokens, and is one of the root goals, and causes, of the supply chain attacks suffered by NPM, PyPI, GitHub, VSCode plugin repositories, and more. Once an attacker is able to extract the authentication tokens, they are able to impersonate that account or system with equal privileges for as long as that authentication remains valid. Typically these tokens are not time limited, and the window of opportunity lasts until the owners of the account become aware of the compromise and are able to reset all of the impacted authentications!

Solutions to the permanent authentication token already exist, but are not widely used. Many package repositories already support restricted and dynamic authentication via OpenID Connect, where a token grants specific resources, not system-wide access. On some platforms, keys can be protected in a hardware-backed key store like a TPM or the Apple Secure Enclave chip, though this doesn’t solve the problem for most servers.

Tailscale, obviously, is looking to lean on the publicity generated from the Open AI incident, but the message is a good one: Anything that can be done to automatically and painlessly reduce the risks associated with long-lived authentication tokens will benefit everyone on the Internet. Even if you don’t run an integration pipeline, you most definitely run software built by one.

Another Set of NPM Package Compromises

The NPM package repository has suffered yet another incident where a large number of packages have been compromised.

Investigators have tracked over 400 packages infected with another variant of the same “Mini Shai-Halud” worm that ran rampant through package repositories in the Spring of 2026. While efforts have been made to reduce the attack surface of packages, few have implemented them, partly because they are not mandatory, and partly because they can greatly impact, or completely break, the build process. The packages this time include high-profile, commonly used tools, with several billion (yes, with a “b”) monthly installs during builds of other software.

Like the worms impacting the package repositories previously, packages are infected by added scripts to the pre-install commands which are executed automatically before the package is installed. The latest infection appears to have spread from a single developer of two widely used packages, keyv and cacheable. Once triggered, the worm will infect and upload new versions of all packages it can access, using stolen NPM authentication tokens. Like other variants of the “Mini Shai-Halud” family, the worm steals authentication tokens for NPM, PyPI, AWS, Kubernetes, and GitHub, the contents of env files which typically contain additional authentication keys, SSH keys, VPN configurations, and over 200 other types of credentials. These newer variants of the worms have increased the list of stolen credentials, begun modifying the instructions for AI coding assistants, added cryptocurrency theft, and added poisoned configurations for VSCode and AI tools to infect projects once the initial infection has been resolved.

Given the scope of the latest outbreak, the number of impacted packages will only increase: no effective countermeasures exist in the NPM community to prevent another wide supply chain event.

Mythos Knocks Out Post-Quantum Candidate

The Anthropic Mythos model found flaws in a candidate post-quantum encryption algorithm, HAWK. Multiple encryption algorithms have been under testing for years as part of the standardization process at NIST, with selected algorithms becoming part of the Federal Information Processing Standard requirements for systems handling secure data for government systems. Cryptographers fear that future advancements in quantum computing could break current encryption and signature methods, driving the search for new standards that will survive.

Anthropic reports that after 60 hours and approximately $100,000 in compute resources, the Mythos model was able to discover a flaw in the HAWK post-quantum signature algorithm. HAWK had previously survived multiple rounds of validation testing, but following the attacks generated by Mythos, the developer has withdrawn it from consideration. Mythos was not able to completely break HAWK, but combined multiple methods to reduce the key space by half.

Ultimately this is a case of the system working fully as designed. The proper time to find flaws in new algorithms is before they’re selected as standards!

Backdooring an Entire Linux Distribution

In 1984, Ken Thompson, one of the creators of Unix, gave the lecture “Reflections on Trusting Trust” in which he outlines the difficulties of establishing trust in tools. Thompson proposed the issue of a compiler modified to insert an invisible back door in any binary it compiled, including future versions of itself, ultimately showing the near impossibility of establishing a guaranteed clean tool chain, ultimately existing in all compiled tools and compilers without any evidence of the original code or modifications. Even if you inspect the source code, a compromised compiler could still be your undoing.

This week, a coalition of researchers published a paper demonstrating the “trusting trust” attack against a modern Linux distribution. Starting with a modified copy of the strip tool that removes debugging and other extraneous information to generate a smaller binary, the researchers demonstrated that the entire build of a NixOS Linux distribution could have a modification injected in every binary, including future builds of strip itself. While the attack starts with a source code modification of strip, after the first generation the modification exists in binary form only, built into each generation of the tool. This demonstrates that the “trusting trust” attack extends to any tool involved in the build process, not only the compiler, since the strip binary never reads source code, only the compiled results.

 

This Week In Security: What’s In A Name, The AI Bugpocalypse Hits Everyone, OpenWRT Flaws, And Duress Passwords

The great thing about standards is there’s so many to pick from, right?. (Insert obligatory XKCD #927 here.) Several companies have developed naming schemes to refer to groups of attacks, and now Google has too.

Sometimes, malware, ransomware, or exploit groups name themselves: “Shinyhunters”, “LapSus$”, “Cl0p”, “Lockbit”, and so on. For the groups that don’t advertise their presence, identification and naming can be more difficult. Mostly state-run affairs that didn’t want to draw attention to themselves, these Advanced Persistent Threats (APT) groups were originally simply given numbers. APT28 refers to the Russian GRU Intelligence Directorate suspected of hacking the Democratic Party email servers, APT38 is a North Korean governmental agency involved in financial and crypto currency theft.

Multiple companies and agencies have developed naming schemes to make referring to threat groups easier, typically including a regional identifier as well. CrowdStrike naming uses name groups like “Bear” group for suspected Russian actors, “Panda” for China, “Spider” for unattributed crime groups, while Microsoft uses “Blizzard”, “Typhoon”, and “Tempest”.

Google, deciding there weren’t enough classifications already, now introduces “RELIC”, “CASTLE”, and “COMET”. Of course, each naming organization has dozens of other classification groups as well, but now the next time you hear about an attack being attributed to “Scattered Spider” you know it’s the CrowdStrike name for a crime group.

Critical OpenWRT DHCP Flaw Fixed

The Hacker News reports on a major release of OpenWRT which includes fixes to the odhcpd server, the embedded DHCPv4 and DHCPv6 server written by OpenWRT.

The bug is a straight-forward stack style attack where a buffer is allocated, but not length-checked against the data required to reply to a malformed request. OpenWRT runs on a wide range of devices, but one of the most popular legacy platforms still in use, the MIPS processor architecture, lacks most modern security protections against stack-based attacks, making this attack sting more than it might on other architectures.

The latest OpenWRT releases also fix issues in the uhttpd embedded web server, multiple issues in the LUCI web configuration interface that allowed attackers to inject cross-site scripting content and Linux kernel security fixes. If you run a direct OpenWRT build on your equipment, update! These bugs will have an extremely long tail however, with tens of thousands, or likely more, OpenWRT-based devices that will never see updates.

The company behind several of the findings, Hacker House, say they used multiple AI tools and both open and frontier models to discover the bugs, then manual review and testing to confirm before reporting.

Cisco to Stop Assigning (some) CVEs

Cisco has announced it is moving to a twice-monthly patch cycle. Additionally, Cisco will no longer assign CVEs to each bug in the release.

Cisco says this is in reaction to the rapid increase in bugs found by AI tools, and that “Assessing security risk CVE-by-CVE and applying point mitigations is no longer fit for purpose.” Cisco will still assign a CVE to a bug that “requires compensating controls” or is known to be exploited.

It seems like it will be business as usual for the most severe bugs, but it will be interesting to see what happens when exploits are found for bugs which did not get a CVE in a prior release.

Microsoft Suggests Three-Day Patch Race

Microsoft is now recommending a 3 day patch window for new patches. This is, to say the least, an “aggressive” schedule for applying new patches, given the recent track record of issues introduced by patches.

A update that crashes is inconvenient on a home computer — even more so if it’s your parent’s computer — but could be catastrophic when it brings down an entire corporate fleet. Most large organizations have their own internal patch schedules and internal testing requirements before patches are deployed, delaying the patch process further.

Systems like the CISA KEV database, a list of vulnerabilities known to be actively exploited, are in place to help identify the most important issues. With repeated record-breaking numbers of vulnerabilities pushed in Patch Tuesday and the decreasing support of the KEV and related vulnerability indexing systems, the load on IT departments and administrators is becoming impossible.

The AI “bugpocalypse” is finding record numbers of vulnerabilities, while also closing the timeline between bug to exploit to hours in some cases. The time between bug and exploit then drives the patch cycle, which means less testing. With less testing, the patches are less stable, leading to less trust in rapidly installing them.

Oracle Patches Almost 1500 CVEs

Moving directly from the impacts of the flood of Microsoft security issues, the July 2026 patch set from Oracle included fixes for 1499 security issues and 1434 CVEs over 334 Oracle products.

Oracle is also pressuring administrators to move to a monthly patch cycle, but acknowledges “transitioning to a monthly security patching cadence may require updates to existing operational processes”. Not to worry – there is a Oracle consulting service you can hire to help you patch your Oracle problems.

Linux Patches 323 CVEs in Two Days

After announcing over 400 CVEs in the Linux kernel last week, Linux mainters have announced an additional 323 in the last three days alone. The vulnerabilities cover Bluetooth, Ethernet, USB gadget mode, WiFi drivers, virtualization systems, SMB file sharing, and of course more.

One benefit to the architecture of the Linux kernel is that typically all the fixes will arrive in a single kernel update, but when almost every week brings critical updates and a new kernel, patch fatigue is a real thing. Either users stop applying every update, or the uptime and testing requirements of a company prohibits constantly updating and changing servers.

Duress Passwords Aren’t Necessarily a Good Thing

The security-hardened Android variant Graphene, is in the news this week for the use of duress passwords.

A duress password is a mechanism where a second PIN or password can be used to initiate a device wipe. The hope is that in a situation where you are compelled to unlock a device, providing a password which then wipes the device is a preferable option.

The legality of a duress password depends on the environment it is used in. The United States Customs and Border Patrol claims that by wiping a device during an inspection at the US border, Samuel Tunick destroyed evidence and property in violation of federal laws. The issue is compounded because the stop happened at a border, where many US laws against search, seizure, and the availability of a lawyer are suspended, even for US citizens.

The inclusion of duress passwords, and their cousin hidden encrypted volumes, can sound like a good idea, but can place users in serious danger when in situations with less strict rules of law. Having the ability to wipe data sounds great in isolation, but protestors, human rights workers, and other targeted groups have faced direct and physical threats under some regimes. Facing retaliation for wiping a device, or facing physical violence before providing an unlock code out of fear that it might wipe a device, can be a real risk for some.

FreeBSD Fixes a WireGuard Bug

FreeBSD has issued a security update pertaining to the WireGuard VPN implementation.

WireGuard is a modern VPN with excellent performance even on low-end systems, and which has implementations on basically every platform. The FreeBSD implementation, however, didn’t fully validate VPN packets, accepting packets without checking one of the cryptographic validation measures.

Attackers are able to inject data to a FreeBSD WireGuard implementation if they are able to guess some attributes of the connection, and able to fully modify the data in the VPN if they are able to intercept the packets.

The bug impacts any FreeBSD user of WireGuard. FreeBSD has released updated kernels.

A black screen with green text is shown. The green text logs events from a VPN gateway.

Running A VPN Gateway On An ESP32

If you need a VPN gateway to access your home network, the fastest and most cost-effective way is probably by using a Raspberry Pi Zero. But in [Samir Makwana]’s view, an ESP32-S3 is just as capable for moderate use, and in some respects even superior.

This was possible thanks to the MicroLink project, which is a full implementation of a Tailscale client for the ESP32 family. In some ways the ESP32 worked better than a Raspberry Pi: it boots in two seconds rather than thirty, draws 0.5 Watts rather than 1.5, and there’s no chance of it failing due to a corrupted SD card. Compared to a Raspberry Pi, however, which can be set up as a Tailscale client in a few minutes, this took several hours to get running. The biggest issue was making sure that there was enough memory available for TLS handshakes, which was solved by enabling the ESP32’s PSRAM.

Once the VPN client is running, the ESP32 can be used as an SSH jump machine to access other devices on the home network, without needing to expose those machines to the open Internet. The ESP32 also hosts an HTTP server which can send a wake-on-LAN magic packet to another device on the local network, letting unused devices sleep without impairing their availability.

The ESP32 doesn’t provide much bandwidth — streaming video would cause issues — but it works well enough for lightweight applications. If you’re wanting to stream video from an ESP32, though, it is technically possible.

Encrypting Encrypted Traffic To Get Around VPN Bans

VPNs, Virtual Private Networks, aren’t just a good idea to keep your data secure: for millions of people living under restrictive regimes they’re the only way to ensure full access to the internet. What do you do when your government orders ISPs to ban VPNs, like Russia has done recently?  [LaserHelix] shows us one way you can cope, which is to use a ShadowSocks proxy.

If you’re not deep into network traffic, you might be wondering: how can an ISP block VPN traffic? Isn’t that stuff encrypted? Yes, but while the traffic going over the VPN is encrypted, you still need to connect to your VPN’s servers– and those handshake packets are easy enough to detect. You can do it at home with Wireshark, a tool that shows up fairly often on these pages. Of course if they can ID those packets, they can block them.

So, you just need a way to obfuscate what exactly the encrypted traffic you’re sending is. Luckily that’s a solved problem: Chinese hackers came up with something called Shadowsocks back in 2012 to help get around the Great Firewall, and have been in an arms-race with their authorities ever since.

Shadowsocks is not, in fact, a sibling of Gandalf’s horse as the name might suggest, but a tool to obfuscate the traffic going to your VPN. To invert a meme, you’re telling the authorities: we heard you don’t like encrypted traffic, so we put encryption in your encrypted traffic so you have to decrypt the packets before you recognize the encrypted packets.

What about the VPN? Well, some run their own shadowsocks service, while others will need to be accessed via a shadowsocks bridge: in effect, a proxy that then connects to the VPN for you. That means of course you’re bouncing through two servers you need to trust not to glow in the dark, but if you have to trust someone– otherwise it’s off to a shack in the woods, which never ends well.

Don’t forget that while VPNs can get you around government censorship, they do not provide anonymity on their own. If, like tipster [Keith Olson] –thanks for the tip, [Keith]!– you’re looking side-eyed at your government’s “think of the children!” rhetoric but don’t know where to start, we had a discussion about which VPNs to use last year.

WolfIP Doesn’t Allocate

For some types of embedded systems — especially those that are safety-critical — it’s considered bad form to dynamically allocate memory during operation. While you can usually arrange for your own code to behave, it’s the libraries that get you. In particular, it is hard to find a TCP/IP stack that doesn’t allocate and free memory all over the place. Unless you’ve found wolfIP.

The library supports a BSD-like non-blocking socket API. It can act as an endpoint, but can also support multiple interfaces and forwarding if you were building something like a router. It doesn’t appear to be bare-bones either. In addition to the normal things you’d expect for IPv4, there’s also ICMP, IPSEC, ARP, DHCP, DNS, and HTTP with or without SSL TLS. There is also a FIPS-compliant implementation of WireGuard for VPN, although it is not directly compatible with standard WireGuard, only with other instances of itself (known as wolfGuard). There is a Linux kernel module for WolfGuard, though.

The code should be fairly easy to port, and it includes a binding for FreeRTOS already. If you’ve used wolfIP, let us know in the comments.

If you want to really get down to the low-level, try this project. Of, if you want a refresher on basics, we can help with that, too.

FLOSS Weekly Episode 867: Pangolin: People Can Lie

This week Jonathan chats with Milo Schwartz about Pangolin, the Open Source tunneling solution. Why do we need something other than Wireguard, and how does Pangolin fix IoT and IT problems? And most importantly, how do you run your own self-hosted Pangolin install? Watch to find out!

Continue reading “FLOSS Weekly Episode 867: Pangolin: People Can Lie”