<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://codesbyakhil.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://codesbyakhil.github.io/" rel="alternate" type="text/html" /><updated>2026-08-08T17:28:32+00:00</updated><id>https://codesbyakhil.github.io/feed.xml</id><title type="html">Akhil S. Pillai</title><subtitle>Doctoral researcher in aerospace engineering at IIT Bombay, working on shock wave interaction with structures and materials — high-fidelity simulation, in-house Fortran solvers, and MPI + OpenACC on national HPC systems.</subtitle><author><name>Akhil S. Pillai</name><email>akhilspillaihs@gmail.com</email></author><entry><title type="html">Caught, Not Landed: Why China’s Booster Recovery Isn’t a SpaceX Copy</title><link href="https://codesbyakhil.github.io/blog/2026/caught-not-landed-long-march-10b/" rel="alternate" type="text/html" title="Caught, Not Landed: Why China’s Booster Recovery Isn’t a SpaceX Copy" /><published>2026-07-13T00:00:00+00:00</published><updated>2026-07-13T00:00:00+00:00</updated><id>https://codesbyakhil.github.io/blog/2026/caught-not-landed-long-march-10b</id><content type="html" xml:base="https://codesbyakhil.github.io/blog/2026/caught-not-landed-long-march-10b/"><![CDATA[<p><em>On 10 July, China brought an orbital-class rocket booster home for the first time. It did not land it. It caught it, in a net, on a ship, using hooks instead of legs. The obvious reading is that Beijing has finally copied SpaceX. The engineering says something more interesting.</em></p>

<p>The reflex, when China does something in space that the United States did first, is to reach for the word “copy.” It is a comfortable reading and it usually contains some truth. It also fails badly here, and the way it fails is worth understanding, because the interesting question was never whether China could land a rocket. It was where you choose to put the mass, the precision, and the failure modes when you decide to bring a booster back.</p>

<p>There are only three known answers to that question, and on 10 July China demonstrated the third one.</p>

<h2 id="what-actually-happened">What actually happened</h2>

<p>At 12:15 pm Beijing time on 10 July 2026 (0415 UTC), the first Long March 10B lifted off from the Hainan Commercial Space Launch Site at Wenchang. It is a two-stage vehicle, roughly 63 metres tall and 5 metres in diameter, with a liftoff mass around 760 tonnes and about 890 tonnes-force of thrust. Seven kerosene and liquid-oxygen engines power the first stage; a single liquid-oxygen and methane engine powers the second. In its reusable configuration it lifts about 16 tonnes to low Earth orbit, which places it in the same class as a Falcon 9.</p>

<p>The rocket put a satellite into its intended orbit. That satellite has not been publicly identified, and it is worth saying so plainly, because several write-ups name a specific payload that the primary reporting does not support.</p>

<p>The recovery is the story. About 150 seconds after liftoff, the stages separated at roughly 100 kilometres altitude. The first stage then flew a powered descent and, six minutes after separation, was captured on the deck of the <em>Linghangzhe</em> (“Navigator”), a purpose-built recovery vessel stationed more than 300 kilometres downrange in the South China Sea. It carried no landing legs. Instead, four hooks near the grid fins at the top of the stage engaged tensioned steel cables strung across the ship, and a hydraulic damping system absorbed what was left of the booster’s energy. Auxiliary cables then locked the stage against wind and swell while a clamping platform moved in beneath it.</p>

<p>CASC called it China’s first successful controlled recovery of a launch-vehicle first stage, and the world’s first net-based recovery of any launch vehicle. Both claims stand up. The company says it intends to fly this same stage again before the end of 2026.</p>

<p>Two corrections to the coverage are worth making. First, this was not China’s first attempt at the problem, but nor was it a case of third-time-lucky after two failures. In December 2025 the Long March 12A and Landspace’s Zhuque-3 both reached orbit and both lost their boosters on the way down, but those are different vehicles built by different organisations. The direct precursor to this flight was in February 2026, when a Long March 10A test stage flew a maximum-dynamic-pressure abort test for the Mengzhou crew capsule and then, having done its primary job, performed a controlled propulsive descent to a splashdown deliberately placed beside the recovery vessel. February was the rehearsal. July was the catch.</p>

<p>Second, and this is the genuinely unusual part: nobody had previously recovered an orbital-class booster on a vehicle’s maiden flight. Blue Origin tried on New Glenn’s debut in January 2025 and lost the stage. SpaceX needed years of attempts. China succeeded on the first try, which is either very good engineering or very good luck, and probably some of both.</p>

<h2 id="three-ways-to-bring-a-booster-home">Three ways to bring a booster home</h2>

<p>Here is the part that repays attention. Every recovery architecture is a decision about where to spend mass and where to accept risk. There are three in existence, and they sit at genuinely different points in the same design space.</p>

<p><strong>Legs.</strong> Falcon 9 and New Glenn carry their landing gear with them: legs, actuators, crush structure, reinforced hardpoints. All of it is dead weight on the way up, and every kilogram of it is a kilogram of payload you did not fly. The ground segment, by contrast, is dumb. A drone ship is essentially a barge with a flat top. The vehicle does all the work, which means the vehicle must be extremely precise: a legged booster has to arrive nearly vertical, nearly stationary, and inside a tight footprint, or it tips over.</p>

<p><strong>A tower.</strong> Starship’s Super Heavy carries no legs at all. It is caught near the top by mechanical arms on the launch tower. The mass moves off the vehicle and onto the ground, which is a real gain. But a tower is bolted to the launch site, so the booster has to fly home to it, and flying home means a boostback burn to cancel all that downrange velocity. Propellant spent flying back is propellant not spent lifting payload.</p>

<p><strong>A net on a ship.</strong> The Long March 10B takes the tower’s core idea, catching the stage near the top so it hangs in tension with no legs required, and puts it on something that floats. That is the clever bit. Because the catcher can move, it can be parked downrange along the booster’s natural ballistic arc, so there is no expensive boostback burn. In principle this captures the tower’s mass saving and the drone ship’s propellant saving at the same time. CALT’s own engineers make exactly this argument: no legs means lower dry mass and more payload, and a coordinated net widens the acceptable landing footprint.</p>

<p>That is not a copy of anything. It is a third answer.</p>

<h2 id="what-it-costs">What it costs</h2>

<p>Nothing in this trade is free, and the net’s price is paid on the ground.</p>

<p>The <em>Linghangzhe</em> is not a barge. It is 144 metres long, 50 metres wide, displaces 25,000 tonnes fully loaded, and holds station using DP2 dynamic positioning. It is a substantial piece of capital engineering, and China currently has exactly one of them. A drone ship that gets damaged is an inconvenience. A recovery vessel that gets damaged, or is simply in the wrong ocean, is the whole capability.</p>

<p>The net is not passive either, which is the detail most of the coverage missed. According to CASC engineer Hao Jinjie, the cables sit on a movable mechanism that actively seeks out the descending rocket’s hooks. CALT’s Sun Zhenlian describes the whole event as a “two-way rendezvous”: the booster steers toward the ship while the ship’s cables move to meet the booster. Both ends of the problem are closing the loop simultaneously, on a deck that is itself pitching and rolling.</p>

<p>The obvious analogy is carrier arresting gear turned on its side, and Chinese engineers have reached for it themselves. It is a useful analogy for the energy-absorption function, hydraulic damping soaking up residual kinetic energy through a cable. It breaks down in one important place, and the break is worth naming: an aircraft that misses the wire is still flying and can bolter around for another attempt. A booster on final approach has no go-around. It gets one pass.</p>

<h2 id="the-real-achievement-is-the-throttle-not-the-net">The real achievement is the throttle, not the net</h2>

<p>Now the mechanism that makes all of this possible, and which almost nobody is talking about.</p>

<p>A Falcon 9 booster cannot hover. Its single landing engine, even throttled to minimum, produces more thrust than the weight of the nearly empty stage, so its thrust-to-weight ratio never drops below one. The stage physically cannot hold station in the air. What it does instead is the hoverslam, sometimes called the suicide burn: it lights the engine at exactly the right instant so that its velocity and its altitude arrive at zero simultaneously. There is no margin in it. Burn early and you climb back up. Burn late and you cannot stop.</p>

<p>A hoverslam cannot be caught in a net. To be captured, a booster must arrive at essentially zero velocity relative to a ship that is moving in six degrees of freedom on the open sea, and stay there long enough for an active net to close on it. That requires the vehicle to be able to hover, or something very close to it. Which in turn requires an engine that can throttle down far enough for thrust to be balanced against the stage’s weight rather than exceeding it.</p>

<p>This is precisely what the Chinese account describes. CALT designer Wang Cong breaks the return into four phases: coasting and attitude adjustment, powered deceleration, aerodynamic deceleration, and landing. Of the landing phase, the official technical description states that a “near-hover” control strategy is used, with grid fins and engines working together and an onboard trajectory planner generating the control sequence in flight. Three of the seven first-stage engines relight for the return burn; a single engine handles the final positioning.</p>

<p>Go back to February and it clicks into place. Among the technologies that flight explicitly validated on the descending core stage, alongside a high-altitude engine restart, was “hover ignition.”</p>

<p>So the sequence reads: build an engine that throttles deep enough to hover, prove the hover on a test flight, then build a net you can only use if you can hover. The net is downstream of the engine. The genuinely hard thing China demonstrated on 10 July is not a piece of naval architecture. It is a propulsion system with a very large thrust turndown ratio and the guidance to exploit it, going from seven engines at liftoff to one deeply throttled engine holding a 5-metre-diameter cylinder nearly motionless above a moving ship.</p>

<p>Note the “near” in “near-hover,” though. The stage does not arrive at a dead stop, which is exactly why the net needs hydraulic damping to absorb what remains. I have not seen published throttle ratios or terminal velocity figures, and I am not going to invent them.</p>

<h2 id="why-a-commercial-rocket-matters-to-a-lunar-programme">Why a commercial rocket matters to a lunar programme</h2>

<p>The Long March 10B is not a standalone commercial vehicle. It is one member of a family, and it shares its 5-metre, seven-engine first stage with the crewed Long March 10A and with the core and boosters of the full Long March 10, the rocket intended to put Chinese astronauts on the Moon before 2030.</p>

<p>The full vehicle is a three-stage design whose core and two strap-on boosters are all the same module, which means 21 of these engines light at once. It stands about 90 metres, produces roughly 2,700 tonnes-force at liftoff, and is designed for 70 tonnes to low Earth orbit and at least 27 tonnes to trans-lunar injection. The lunar mission profile needs two launches: one Long March 10 lifts the Mengzhou crew spacecraft, another lifts the Lanyue lander, and the two meet in lunar orbit.</p>

<p>The consequence is that every commercial Long March 10B flight is also a flight test, paid for by a customer, of the exact propulsion module the crewed lunar rocket depends on. Ground testing cannot replicate real acoustic, thermal, and aerodynamic loading. This one can, and it builds a reliability record while doing it. That is a genuinely elegant piece of programme architecture and it deserves to be recognised as such.</p>

<p>It also deserves a caveat. Sharing a stage design is not the same as human-rating it, and the crewed variant has not yet flown to orbit. Its first orbital flight, carrying an uncrewed Mengzhou, is expected but has not happened.</p>

<h2 id="what-we-know-and-what-we-dont">What we know, and what we don’t</h2>

<p><strong>Confirmed</strong>, by CASC and CALT statements and corroborated across SpaceNews, Scientific American, Space.com, and Chinese state media: the launch date, time, and site; the maiden flight of the Long March 10B; insertion of a satellite into orbit; the recovery of the first stage by net capture on the <em>Linghangzhe</em> roughly six minutes after separation and more than 300 kilometres downrange; the vehicle’s basic configuration and the vessel’s dimensions; the four-phase descent with a near-hover landing phase; the February 2026 precursor flight; the December 2025 losses of the Long March 12A and Zhuque-3 boosters; and China’s status as the second country, and CASC as the third organisation after SpaceX and Blue Origin, to recover an orbital-class booster.</p>

<p><strong>Not confirmed, and treated here as unknown:</strong></p>

<ul>
  <li><strong>The payload.</strong> Not publicly identified. Reports naming a specific satellite are not supported by the primary coverage.</li>
  <li><strong>The condition of the recovered stage.</strong> This is the big one. “Complete success” is CASC’s own characterisation. The orbital insertion can be independently verified by tracking the satellite. The health of the booster cannot be verified by anyone outside CASC, and a stage that is intact is not necessarily a stage that is flightworthy.</li>
  <li><strong>The refly.</strong> Flying this stage again before the end of 2026 is a stated intention, not a demonstrated capability.</li>
  <li><strong>Refurbishment cost and turnaround time.</strong> No data. Figures circulating online, including a 72-hour turnaround target, are unverified.</li>
  <li><strong>Throttle ratios, terminal velocity, and capture-window dimensions.</strong> Sources conflict, including on the size of the net’s opening. Insufficient data to resolve.</li>
  <li><strong>The black smoke.</strong> Video of the descent shows heavy black smoke from the top of the stage during the powered phase. It has been widely observed and not, so far as I can find, publicly explained.</li>
</ul>

<h2 id="the-number-that-actually-decides-this">The number that actually decides this</h2>

<p>Three things here are real and should be said without hedging. China is the second country to bring an orbital-class booster home. It did so on a maiden flight, which no one else has managed. And it did so by a method nobody had used before, which represents a real and defensible point in the recovery trade space rather than an imitation of one.</p>

<p>And then the honest part. Recovery is not reuse. It is the entry ticket to reuse. On 9 July, the day before the catch, SpaceX flew a single Falcon 9 booster for the thirty-sixth time. Blue Origin recovered a New Glenn booster in November 2025 and flew it again in April 2026. CASC has recovered one stage, once, and has said it will fly it again. Until it does, and until somebody knows what the refurbishment actually costs, the economic argument for the net is a hypothesis. A booster you can catch but cannot cheaply refly is simply a very expensive net.</p>

<p>For an Indian reader the temptation is to file this under “China is ahead,” and in launch cadence that is straightforwardly true. But it is the less useful reading. ISRO’s Next Generation Launch Vehicle, Soorya, was approved by the Cabinet in September 2024 with a budget of ₹8,240 crore and a 96-month development window, and it is designed around a reusable first stage burning liquid oxygen and methane. The revealing detail is that VSSC is developing steerable grid fins and deployable landing legs, and ISRO issued a tender for landing-leg hardware in April 2026. India has already chosen its point in the same trade space, and it chose legs.</p>

<p>That choice is not obviously wrong, and 10 July does not make it wrong. It is a different answer to the same question: given your launch sites, your sea states, your industrial base, and above all your expected launch cadence, where should the mass live and where should the failure modes live? China’s answer was to build a 25,000-tonne ship. That answer is entirely rational for a programme planning hundreds of constellation launches and a lunar landing, and it is not automatically the right answer for anyone else.</p>

<p>The booster came home. That much is real, and it is genuinely impressive. What it costs to send that same booster up again is the number that will decide whether any of it mattered.</p>

<hr />

<p><em>Sources: CASC and CALT statements as reported by Global Times, CGTN, and China Military; Andrew Jones for SpaceNews (10 July 2026); Scientific American, Space.com, Universe Today, and TechTimes coverage of the 10 July launch and recovery; Global Times reporting on the 11 February 2026 Long March 10A abort and descent test; Blue Origin and Space.com for the November 2025 New Glenn landing and its April 2026 reflight; Wikipedia and ISRO reporting for Long March 10 family and NGLV/Soorya programme details. Vehicle and vessel specifications are as stated by CASC and Chinese state media. The payload identity, the condition of the recovered stage, refurbishment economics, and the reflight timeline are not independently verified and are identified as such above.</em></p>]]></content><author><name>Akhil S. Pillai</name><email>akhilspillaihs@gmail.com</email></author><summary type="html"><![CDATA[On 10 July, China brought an orbital-class rocket booster home for the first time. It did not land it. It caught it, in a net, on a ship, using hooks instead of legs. The obvious reading is that Beijing has finally copied SpaceX. The engineering says something more interesting.]]></summary></entry><entry><title type="html">Two Ways to Build a Fighter: Why FCAS Collapsed and GCAP Didn’t</title><link href="https://codesbyakhil.github.io/blog/2026/fcas-collapse-gcap-ascent/" rel="alternate" type="text/html" title="Two Ways to Build a Fighter: Why FCAS Collapsed and GCAP Didn’t" /><published>2026-07-06T00:00:00+00:00</published><updated>2026-07-06T00:00:00+00:00</updated><id>https://codesbyakhil.github.io/blog/2026/fcas-collapse-gcap-ascent</id><content type="html" xml:base="https://codesbyakhil.github.io/blog/2026/fcas-collapse-gcap-ascent/"><![CDATA[<p><em>Within four weeks in mid-2026, Europe’s two sixth-generation fighter programmes reached opposite fates. One was cancelled outright; the other signed a £4.6 billion contract. The difference had less to do with the aircraft than with how the partners agreed to work together.</em></p>

<p>On 8 June 2026, at the opening of the ILA Berlin Air Show, German Chancellor Friedrich Merz confirmed what the defence press had expected for two years: France and Germany were abandoning joint development of the New Generation Fighter, the crewed aircraft at the centre of the Future Combat Air System (FCAS). Emmanuel Macron did not contest it. Less than a month later, on 3 July, the United Kingdom, Italy and Japan awarded a £4.6 billion ($6.1 billion) contract to push their rival effort, the Global Combat Air Programme (GCAP), into full design and development.</p>

<p>Two multinational programmes, the same goal, opposite outcomes, weeks apart. It is tempting to read this as a story about engineering, but it isn’t. Neither aircraft exists yet. What separated the two was governance: who leads, who owns the intellectual property, and whether the partners’ military requirements were ever compatible. That is the part worth unpacking, because the lesson generalises well beyond fighter jets.</p>

<h2 id="what-actually-collapsed-and-what-didnt">What actually collapsed, and what didn’t</h2>

<p>The headlines overstated this in both directions, so precision helps. France and Germany cancelled the NGF, the crewed fighter. They did not cancel the entire FCAS concept. The two governments agreed to keep jointly developing the other pillars of the “system of systems”: the Air Combat Cloud, the networking layer linking aircraft, drones and sensors, now led by Airbus and Thales; and the Remote Carriers, the accompanying drones, led by Airbus in Germany, with Spain’s Indra retaining its sensors role. The division of remaining work was set to be finalised at a Franco-German ministerial council in mid-July. Several outlets called the surviving cooperation a face-saving arrangement, which is roughly fair.</p>

<p>The money also needs care. FCAS is routinely called a “€100 billion programme,” and that figure is easy to misread. It is an estimate of the total lifetime cost the programme might eventually have reached, put recently in the €80–100 billion range. It is not what was spent. The sum actually committed before cancellation, on early research and demonstrator phases, was far smaller, on the order of a few billion euros. The collapse wasted years and political capital more than it wasted a hundred billion euros.</p>

<h2 id="why-it-broke-doctrine-then-industry">Why it broke: doctrine, then industry</h2>

<p>Two fault lines ran through FCAS from the start, and neither was ever resolved.</p>

<p>The first was doctrinal. France needed the aircraft to do things Germany did not. France’s future fighter has to eventually carry the airborne leg of its independent nuclear deterrent and operate from an aircraft carrier, because that is what the French armed forces require. Germany operates no carriers and has no independent nuclear force; its NATO nuclear-sharing role is met by American B61 bombs, for which it has ordered the F-35A. So Berlin wanted a land-based multirole fighter for European air defence and had little reason to pay for carrier compatibility or sovereign nuclear certification. When Airbus chief executive Guillaume Faury floated building two variants to satisfy both sides, early in 2026, it widened the rift rather than closing it: two variants meant duplicated cost and diluted design authority, which France would not accept.</p>

<p>The second fault line was industrial, and it is the one that actually ended the programme. Dassault, prime contractor for the fighter, wanted clear design leadership, arguing that its record building the Mirage and Rafale entitled it to lead the aircraft “from A to Z.” Airbus, representing German and Spanish industry, refused to be a subcontractor and insisted on genuine parity, including shared ownership of the intellectual property that German taxpayers were funding. This was not a squabble over percentages. It was a clash between two incompatible models: a single “best athlete” holding authority, versus co-leadership with shared IP. Phase 1B ended in April 2026 with no agreement on Phase 2, the threshold German officials had repeatedly named as the test of viability. Mediation failed. In June, Berlin concluded that more pressure on the companies would achieve nothing, and pulled the plug. German Defence Minister Boris Pistorius described the effort as an ambitious European project “collapsing in the face of reality.”</p>

<h2 id="what-europe-did-next">What Europe did next</h2>

<p>The collapse did not end European sixth-generation ambition; it split it.</p>

<p>Within three days, on 11 June, Airbus and seven other German firms signed a positioning paper launching “Team Gen 6,” a bid for a German-led national fighter, and handed it to the German government with a demand for contracts in the second half of 2026. A parallel group of Spanish firms, led by Indra and Airbus’s Spanish arm, lined up alongside. The Franco-German axis has, at least for now, been replaced by a German-Spanish one, with Airbus still central and France excluded.</p>

<p>France, isolated from its former partners, is widely expected to go it alone. Dassault’s Éric Trappier told the French Senate the company is ready to proceed independently, invoking the Rafale, which France built alone after leaving the Eurofighter consortium in the 1980s. The likely near-term French path is an evolution of the Rafale, the F5 standard, paired with stealthy combat drones descended from the nEUROn programme, and eventually the ASN4G nuclear missile. Analysts caution that, without German and Spanish cost-sharing, a fully sovereign French sixth-generation fighter may have to scale back its ambitions. Trappier has left the door open to partners, including, pointedly, non-European ones, provided the governance rules are fixed at the outset.</p>

<p>Spain is the party left worst off. It joined FCAS in 2019 as an equal partner to lift its industrial base; it now faces the loss of that status with no clear replacement for its ageing F-18s and early Eurofighters. Buying the F-35 is politically difficult in Madrid, given strained relations with Washington and unease about dependence on a closed American system. The most probable outcome is that Spain folds its firms into the German-led effort as a junior partner, a marked step down from the equal footing it once had.</p>

<p>The one element of FCAS that accelerated rather than fractured was the drones. At ILA Berlin, Airbus unveiled the U760 Ravenstorm, a stealthy uncrewed combat aircraft roughly 13 metres long and six tonnes, built to fly alongside crewed Eurofighters and carry both air-to-air and air-to-ground weapons, targeted for the early 2030s. As an interim step it is fielding the U740 Valkyrie, a Europeanised version of the American Kratos XQ-58A aimed at German service around 2029, though that one carries US export restrictions the sovereign Ravenstorm avoids. The defence-software firm Helsing showed an electronic-attack drone, the CA-1EA, intended to jam air defences ahead of crewed formations. The pattern is unmistakable: the crewed fighter is stuck in political limbo, but the uncrewed “loyal wingman” layer is moving fast, and largely independently of the FCAS wreckage.</p>

<h2 id="why-gcap-is-advancing">Why GCAP is advancing</h2>

<p>While FCAS fragmented, GCAP did the opposite. Formed in 2022 by merging Britain’s Tempest project with Japan’s F-X, it is a partnership of the UK, Italy and Japan aiming to field a large, twin-engine, long-range stealth fighter by 2035, replacing the Typhoon and Japan’s F-2.</p>

<p>On 3 July 2026 the trilateral GCAP Agency awarded an 18-month, £4.6 billion contract to Edgewing, the industrial joint venture owned equally by Britain’s BAE Systems, Italy’s Leonardo and Japan Aircraft Industrial Enhancement Co. It funds the design and assessment phase and a demonstrator aircraft expected to fly before the end of 2027, and it follows an initial £686 million contract from April. The engine is being developed by a separate consortium led by Rolls-Royce and Japan’s IHI, with Italy’s Avio Aero. (One correction to some write-ups: a fighter powerplant of this kind is a low-bypass turbofan, not a “high-bypass” engine. High-bypass designs are for airliners and transports, where fuel efficiency matters more than the thrust-to-weight and supersonic performance a fighter needs.)</p>

<p>The reason GCAP is where FCAS wanted to be comes down to structure. GCAP set up Edgewing as a single engineering prime, working on behalf of all three national industries, answering to a single empowered customer, the GCAP Agency, itself overseen by a trilateral government organisation headquartered in Reading. That is precisely the arrangement FCAS never reached. Edgewing’s chief executive, Marco Zoff, described the model as three countries creating a single prime with a single customer, and framed that, correctly, as the genuinely new thing. It is not that GCAP’s partners lack competing interests; it is that they settled the governance question up front rather than deferring it, and their military requirements were compatible to begin with. None of the three demanded carrier compatibility or sovereign nuclear delivery that the others would have had to fund.</p>

<h2 id="the-money-and-the-politics-behind-it">The money, and the politics behind it</h2>

<p>GCAP’s momentum is real, but it rests on funding that is politically contested, and the honest picture here is messier than the triumphant one.</p>

<p>The £4.6 billion contract was only possible once Britain confirmed its share. That came in the UK Defence Investment Plan (DIP), published on 30 June 2026 after months of delay, which committed £8.6 billion to GCAP over four years, more than the roughly £6 billion the partners had expected. That much is confirmed.</p>

<p>The surrounding politics are turbulent, and some accounts overstate them. Verified: Defence Secretary John Healey resigned days before the plan appeared, telling the Prime Minister that the funding fell well short of what the threat environment demanded. General Sir Richard Barrons, who co-led the 2025 Strategic Defence Review the plan was meant to implement, said the government was “actively going backwards.” Prime Minister Keir Starmer is under genuine pressure, including calls from within his own party to step down.</p>

<p>Not settled, and something at least one circulating analysis presents as fact: a “transition” to Andy Burnham as Prime Minister. As of early July 2026, that has not happened. Burnham, the Mayor of Greater Manchester, is widely expected to challenge Starmer for the Labour leadership, but that challenge is contingent on his first winning a by-election to return to Parliament, and then on a contest whose outcome nobody can predict. Treating a possible leadership challenge as a completed handover is exactly the sort of claim to flag rather than repeat. The defensible statement is narrow: the DIP was contentious, it cost a Defence Secretary his job, and part of the uplift it promised is not yet fully funded. Whether it survives a change of Labour leadership is genuinely unknown.</p>

<h2 id="who-can-actually-buy-one-and-what-we-dont-know">Who can actually buy one, and what we don’t know</h2>

<p>With FCAS gone, GCAP is, for now, the only Western sixth-generation fighter openly positioned for export. The two American programmes, the Air Force’s NGAD (awarded to Boeing in 2025 as the F-47) and the Navy’s F/A-XX, are highly classified and not on offer to allies; China’s tailless demonstrators, first seen flying in late 2024, are not for sale either. That leaves GCAP as the default for a country wanting a next-generation fighter without buying American.</p>

<p>Interest is real but should not be inflated. Canada’s defence minister discussed GCAP with his Japanese counterpart in June, and Saudi Arabia has long been linked to the programme; Reuters reports both have “looked at” it. Any expansion, though, needs unanimous agreement from the three founders, and none of these are commitments. Germany has also been floated as a possible late entrant, which would be awkward, given it was leading the rival programme a few weeks earlier.</p>

<p>It helps to state plainly what is solid and what is not. Solid: FCAS’s crewed fighter was cancelled in June; the surviving cloud-and-drone cooperation continues; Team Gen 6 and the German-Spanish realignment are real; GCAP signed a £4.6 billion contract in July with committed UK funding; Edgewing, its single-prime structure, and the 2035 target are confirmed. Less solid, and treated here as estimates or open questions: the precise cost of either programme, exact in-service dates, which export customers actually join GCAP, the shape of France’s eventual sovereign fighter, and the future of UK defence funding under a possible change of government. Anyone claiming certainty on those is guessing.</p>

<h2 id="the-lesson-and-the-caveat">The lesson, and the caveat</h2>

<p>The summer of 2026 will be remembered as the moment Europe’s sixth-generation fighter effort split into a winner and a loser, and at the level of momentum that reading is fair: GCAP has a contract and a structure, FCAS has a wake. But the more useful lesson is narrower and less triumphant. The programmes did not diverge because one set of engineers was better. They diverged because GCAP’s partners settled the hard questions of leadership, ownership and requirements before starting, while FCAS’s partners deferred them until they hardened into deadlock. Multinational programmes fail in the boardroom far more often than in the wind tunnel.</p>

<p>And here is the caveat that cheerleaders on both sides tend to skip: nobody has flown a sixth-generation fighter anywhere in the world yet. GCAP is a funded design with a demonstrator still more than a year away; Team Gen 6 is a positioning paper; France’s fighter is a statement of intent to a Senate committee. These are contracts, consortia and concepts, not aircraft. The real test of who got 2026 right will come in the 2030s, when the metal, or the absence of it, finally flies.</p>

<hr />

<p><em>Sources: Reuters, FlightGlobal, Defense News, and the GCAP Agency / UK Government for the 3 July GCAP contract and the UK Defence Investment Plan; Euronews, The Conversation, GlobalSecurity, and Wikipedia for the June FCAS cancellation and its continuing “system of systems” work; The Aviationist, AeroTime, and Airforce Technology for Team Gen 6 and the ILA Berlin drone unveilings; PBS/AP for the resignation of Defence Secretary John Healey and the UK leadership situation. Cost figures, in-service dates, and export prospects for both programmes are estimates or open questions and are flagged as such. The claim, seen in some analyses, that Andy Burnham has become or is about to become UK Prime Minister is not established and is not asserted here.</em></p>]]></content><author><name>Akhil S. Pillai</name><email>akhilspillaihs@gmail.com</email></author><summary type="html"><![CDATA[Within four weeks in mid-2026, Europe’s two sixth-generation fighter programmes reached opposite fates. One was cancelled outright; the other signed a £4.6 billion contract. The difference had less to do with the aircraft than with how the partners agreed to work together.]]></summary></entry><entry><title type="html">Eye in the Sky: The Netra AEW&amp;amp;C and Its Long Road to Combat-Ready</title><link href="https://codesbyakhil.github.io/blog/2026/eye-in-the-sky-netra-aewc/" rel="alternate" type="text/html" title="Eye in the Sky: The Netra AEW&amp;amp;C and Its Long Road to Combat-Ready" /><published>2026-06-29T00:00:00+00:00</published><updated>2026-06-29T00:00:00+00:00</updated><id>https://codesbyakhil.github.io/blog/2026/eye-in-the-sky-netra-aewc</id><content type="html" xml:base="https://codesbyakhil.github.io/blog/2026/eye-in-the-sky-netra-aewc/"><![CDATA[<p><em>On 25 June 2026, India declared its indigenous Netra airborne early-warning system fully combat-ready. The certificate was dedicated to eight people who died chasing the same idea twenty-seven years earlier. This is the engineering story in between.</em></p>

<p>On 11 January 1999, a modified Avro HS-748 turboprop took off from Arakkonam in Tamil Nadu carrying an experimental radar dome and a crew of scientists and air force officers. It never landed. The crash killed all eight on board, four DRDO scientists and four IAF personnel, and it effectively ended India’s first serious attempt to build an airborne early-warning aircraft.</p>

<p>Twenty-seven years later, on 25 June 2026, the program that rose from that wreckage reached the finish line. At the Centre for Airborne Systems in Bengaluru, the Indian Air Force received Final Operational Clearance for the Netra AEW&amp;C system, certifying it as fully combat-ready. The clearance was dedicated to the crew lost in 1999.</p>

<p>That arc, from a crash site to a cleared combat system, is worth understanding in detail, because the hard part was never the idea. Everyone wants an eye in the sky. The hard part is the engineering: bolting a high-power radar onto an aircraft that was never designed to carry one, keeping it cool, keeping it stable, and turning what it sees into something a fighter pilot can use in time.</p>

<h2 id="what-final-clearance-actually-certifies">What “final clearance” actually certifies</h2>

<p>A modern AEW&amp;C platform is what engineers call a system of systems: a radar, an electronic-warfare suite, communications, mission software, and the airframe itself, all of which have to work together under stress. Final Operational Clearance is the certificate that says all of it does, across the full envelope of conditions the air force expects to fight in. It comes after Initial Operational Clearance, which Netra reached around 2017, and after years of trials, refinement, and real operational use.</p>

<p>The cleared fleet is small: three Netra Mk1 aircraft, flown by No. 200 Squadron from Bhisiana Air Force Station near Bathinda, Punjab. The significance is larger than the number. With FOC, India joins a short list of countries that can design, integrate, and field an AEW&amp;C suite of this complexity on their own rather than buying one. Roughly three-quarters of Netra’s mission electronics are indigenous.</p>

<h2 id="the-problem-with-putting-a-radar-on-a-regional-jet">The problem with putting a radar on a regional jet</h2>

<p>Netra is built on the Embraer ERJ-145, a Brazilian regional jet chosen for reliability and running costs. It was emphatically not designed to carry a radar array on its back. Doing so created three distinct engineering problems, and all three had to be solved at the same time.</p>

<p>The first is aerodynamic. The radar lives in a dorsal structure called the Active Antenna Array Unit, an elongated plank roughly eight metres long, mounted on four reinforced pylons above the fuselage. Hanging a structure like that on top of an airframe shifts its centre of gravity and moves the point where aerodynamic forces act. Worse, the array sheds a turbulent wake that streams back toward the vertical tail, the surface the aircraft depends on for directional stability and control. Engineers at DRDO and the National Aerospace Laboratories worked through this with extensive CFD analysis and wind-tunnel testing, modifying the empennage and rewriting flight-control laws so the aircraft stays controllable across its full range of pitch and yaw, including the asymmetric cases that matter most. The first flight of a modified airframe, in 2011, was flown with a dummy mass simulator standing in for the real array, purely to prove the aircraft could handle the change before any electronics went aboard.</p>

<p>The second problem is heat. An active array is thousands of small transmit-receive modules, and at full power they dump tens of kilowatts of waste heat into a confined structure. Let the modules run too hot and their performance drifts or they fail outright. The cooling design had to guarantee airflow to every module even when the air around the array is disturbed by the aircraft’s attitude or by the nearby satellite-communications radome.</p>

<p>The third is power. The radar, the mission computers, and the environmental control system together draw far more electrical power than a regional jet normally generates, so the aircraft was fitted with uprated generators and a dedicated auxiliary power unit for the mission systems. An in-flight refuelling probe was added as well, stretching endurance from roughly five or six hours to around nine. That is the difference between a short look and a persistent watch over a contested border.</p>

<h2 id="a-radar-with-no-moving-parts">A radar with no moving parts</h2>

<p>The heart of Netra is its radar, developed by the Electronics and Radar Development Establishment. Older airborne radars spin a dish to sweep the sky. Netra’s array is fixed and steers its beam electronically, which lets it look in different directions almost instantly and run search, tracking, and target prioritisation concurrently rather than one after another.</p>

<p>The array reflects a neat piece of indigenous packaging. Eight individual transmit-receive modules are fused into a single unit to save space inside the slim plank, and these units are tiled across two flat faces mounted back to back. Reported figures put it at roughly 2,560 modules in total, operating in the S-band and built on gallium-arsenide semiconductors. The two faces give the radar a 240-degree field of view, 120 degrees out to each side.</p>

<p>That number, 240 degrees, is also Netra’s central limitation, and it explains a great deal of what comes after. Two faces looking sideways leave a wedge of about 60 degrees uncovered off the nose and another off the tail. When the aircraft flies the long racetrack orbits that keep it on station, those blind cones sweep through the sky, leaving gaps that have to be filled by ground radar or a second aircraft. It is the price of fitting a fixed array onto an airframe this size.</p>

<p>Within its coverage, the radar is credited with detecting fighter-sized targets at around 250 to 375 kilometres, with longer instrumented tracking ranges reported under good conditions. One of the quieter wins between IOC and FOC was in software, not hardware: refining the Doppler processing that picks genuine low-flying targets, cruise missiles and drones skimming the terrain, out of the enormous clutter of the ground behind them. That capability is where AEW&amp;C earns its keep, and it ties directly to a problem worth spelling out later.</p>

<table>
  <thead>
    <tr>
      <th>Netra Mk1 — key parameters</th>
      <th> </th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Platform</td>
      <td>Embraer ERJ-145 (EMB-145I)</td>
    </tr>
    <tr>
      <td>Radar</td>
      <td>Indigenous AESA (LRDE), S-band, gallium-arsenide</td>
    </tr>
    <tr>
      <td>Coverage</td>
      <td>~240° azimuth (120° per face; ~60° blind cones fore and aft)</td>
    </tr>
    <tr>
      <td>Detection (fighter-sized)</td>
      <td>~250–375 km (reported)</td>
    </tr>
    <tr>
      <td>Fleet / unit</td>
      <td>3 aircraft, No. 200 Squadron, Bhisiana AFS</td>
    </tr>
    <tr>
      <td>Endurance</td>
      <td>~9 hours with in-flight refuelling</td>
    </tr>
    <tr>
      <td>Indigenous content</td>
      <td>~75% of mission suite</td>
    </tr>
    <tr>
      <td>IOC → FOC</td>
      <td>~2017 → 25 June 2026</td>
    </tr>
  </tbody>
</table>

<p><em>The detailed radar figures above are as reported in open sources; DRDO has not officially disclosed precise numbers.</em></p>

<h2 id="seeing-without-being-seen-and-sharing-what-you-see">Seeing without being seen, and sharing what you see</h2>

<p>A radar that broadcasts is also a beacon, so Netra carries a parallel set of passive sensors. Its electronic-support and communication-support suites listen across the spectrum, locating and fingerprinting hostile radars and intercepting communications without emitting anything detectable. Because an AEW&amp;C aircraft is itself a prime target, it also carries a self-protection suite: warning receivers, a missile-approach warning system that uses infrared sensors to catch the heat bloom of a launch, and dispensers that throw out chaff and flares to defeat radar- and heat-guided missiles.</p>

<p>The sensors are only half the system, though. The real product of an AEW&amp;C aircraft is a single fused picture of the air situation, stitched together from radar, passive sensors, and datalinks, then shared across the force. Netra can network with a reported forty-odd assets at once, and it can vector friendly fighters onto a target without those fighters switching on their own radars, which would give away their position. The same picture is pushed down to transportable ground stations that feed the air force’s wider command-and-control network. Early in the program the original radios were replaced with software-defined radios to keep pace with modern encrypted links. A fighter that stays radar-silent and still arrives in a firing position with full situational awareness is the entire point of the exercise.</p>

<h2 id="what-combat-has-and-hasnt-shown">What combat has, and hasn’t, shown</h2>

<p>Netra has flown in anger. During the Balakot airstrikes in February 2019 it provided surveillance and early warning, helping deconflict airspace and watch for the Pakistani response. During Operation Sindoor in May 2025, the four-day India-Pakistan clash that followed the Pahalgam terror attack, AEW&amp;C aircraft were part of the networked air battle; by several accounts the platform that flew operationally was actually the Netra Mk1A development testbed.</p>

<p>A note of caution is in order here, and it matters for anyone trying to draw the right lessons. Much of the dramatic reporting around Sindoor, including a widely circulated claim that an Indian S-400 battery downed a Pakistani Saab 2000 Erieye early-warning aircraft at a record 314 kilometres, originates with Indian sources and was reportedly affirmed afterward by the IAF chief. Pakistan disputes it, and independent verification has not emerged. Both sides took losses, and the precise tally remains contested. I am not going to repeat any specific kill count as established fact, because at this point it isn’t one.</p>

<p>What is worth taking from Sindoor is the underlying principle, which holds regardless of the box score. A ground-based radar cannot see a low-flying target far past the horizon; the Earth curves away, and an aircraft or cruise missile down low drops out of view within a few tens of kilometres. A platform orbiting at altitude sees much farther, and when its track is handed by datalink to a long-range surface-to-air missile, that missile can be guided through the middle of its flight toward a target the launcher itself may not hold cleanly. An elevated sensor plus a long-range effector, tied together by a network, is what lets a modern air defence reach well beyond any single radar’s coverage. Netra is built to be one of those elevated sensors, and that role does not depend on any particular contested headline being true.</p>

<h2 id="mk1a-mk2-and-closing-the-gap">Mk1A, Mk2, and closing the gap</h2>

<p>The Mk1 fleet’s limitations double as the roadmap for what comes next. The government has approved six more aircraft in the Netra Mk1A configuration, which keeps the proven Embraer airframe but moves the radar to gallium-nitride modules. GaN handles heat and power more efficiently than gallium-arsenide, which translates into more transmit power and better range from a similar array. Beyond that sits the larger Netra Mk2, planned for a bigger aircraft with more electrical power, more operator stations, longer endurance, detection ranges past 500 kilometres, and the wider coverage that finally closes the Mk1’s blind cones.</p>

<p>The trajectory is the real story. A three-aircraft fleet certified today is the foundation for a genuine airborne-surveillance ecosystem meant to watch two long and very different borders at once.</p>

<h2 id="the-part-worth-remembering">The part worth remembering</h2>

<p>Final Operational Clearance is not a dramatic moment. There is no fireball, no launch, no record to announce. It is a certificate that says a hard problem has been solved properly, that the thing works across the conditions that count, reliably enough to be trusted with lives. Behind that certificate sit more than two decades of aerodynamics, thermal engineering, radar physics, software, and systems integration, carried out by people who took over a program that had already cost eight lives and saw it through to the end.</p>

<p>That is the part worth holding on to the next time a headline reaches for the word “breakthrough.” The eye in the sky was not a breakthrough. It was a long, patient, unglamorous climb, and on 25 June it finally reached the top.</p>

<hr />

<p><em>Sources: Ministry of Defence release and PTI reporting (via The Week), Air Force Technology, Business Today, and India Sentinels coverage of the 25 June 2026 FOC ceremony; standard accounts of the 1999 ASP crash and the October 2004 Cabinet Committee on Security re-sanction; DRDO/CABS programme descriptions. The Operation Sindoor engagement claims referenced here are reported by Indian sources and disputed by Pakistan, with no independent verification to date; they are presented as contested rather than confirmed. Several detailed Netra specifications are as reported in open sources and have not been officially disclosed by DRDO.</em></p>]]></content><author><name>Akhil S. Pillai</name><email>akhilspillaihs@gmail.com</email></author><summary type="html"><![CDATA[On 25 June 2026, India declared its indigenous Netra airborne early-warning system fully combat-ready. The certificate was dedicated to eight people who died chasing the same idea twenty-seven years earlier. This is the engineering story in between.]]></summary></entry><entry><title type="html">Slow on Purpose: India’s LRLACM and the Economics of the High-Low Missile Mix</title><link href="https://codesbyakhil.github.io/blog/2026/slow-on-purpose-lrlacm-vs-brahmos/" rel="alternate" type="text/html" title="Slow on Purpose: India’s LRLACM and the Economics of the High-Low Missile Mix" /><published>2026-06-24T00:00:00+00:00</published><updated>2026-06-24T00:00:00+00:00</updated><id>https://codesbyakhil.github.io/blog/2026/slow-on-purpose-lrlacm-vs-brahmos</id><content type="html" xml:base="https://codesbyakhil.github.io/blog/2026/slow-on-purpose-lrlacm-vs-brahmos/"><![CDATA[<p><em>On 15 June 2026, DRDO test-fired a cruise missile built to fly slower than a passenger jet, while India already operates one of the fastest cruise missiles in service anywhere. The contradiction isn’t an oversight. It’s the design brief.</em></p>

<p>When a country tests a new missile, the instinct is to ask how fast it goes and how far it reaches, and to treat the bigger numbers as the better ones. The Long Range Land Attack Cruise Missile (LRLACM), which the Defence Research and Development Organisation flight-tested off the Odisha coast on 15 June 2026, breaks that instinct in a useful way. It is deliberately subsonic, cruising somewhere around Mach 0.7 to 0.8, at a time when India already fields the BrahMos, widely regarded as the fastest supersonic cruise missile in operational service. So why build a slow missile when you’ve already solved fast?</p>

<p>That question turns out to be the most interesting thing about the program, and the answer says more about how long-range strike actually works than any single line on a spec sheet.</p>

<h2 id="what-actually-happened-on-15-june">What actually happened on 15 June</h2>

<p>The test ran from Dr APJ Abdul Kalam Island, the former Wheeler Island, with tracking handled by the Integrated Test Range at Chandipur. The Ministry of Defence reported that the missile met all mission objectives. Its release singled out two things: the indigenous Manik turbofan that sustains the cruise phase, and the navigation stack, a Ring Laser Gyroscope inertial system backed by GPS and India’s own NavIC constellation, with terrain-contour matching for flying low.</p>

<p>One detail is worth getting right, because a lot of the coverage blurs it. This was the <em>second</em> flight test, not the debut. The maiden flight was on 12 November 2024, also from Chandipur, off a mobile articulated launcher. So 15 June was a repeat-and-extend, and the program is moving toward induction without being there yet. DRDO has been explicit that more trials come before the missile is cleared for production.</p>

<p>The nodal laboratory is the Aeronautical Development Establishment in Bengaluru, with Bharat Dynamics and Bharat Electronics as development-cum-production partners. The lineage runs back through the Nirbhay subsonic cruise missile, first tested in 2013 on an imported Russian engine, and the Indigenous Technology Cruise Missile demonstrator that existed largely to prove out the Manik. The LRLACM is what you get when that decade of work finally gets productised.</p>

<h2 id="why-slow-buys-you-almost-everything-else">Why “slow” buys you almost everything else</h2>

<p>Here is the part that rewards an engineer’s attention. The speed gap between the LRLACM and the BrahMos isn’t a standalone number. It cascades into nearly every other spec, because the two missiles breathe air in fundamentally different ways.</p>

<p>BrahMos runs a liquid-fuelled ramjet. A ramjet has no compressor and no turbine, no moving parts in the airflow at all. It works by using the vehicle’s own forward speed to ram incoming air into the combustion chamber and compress it before ignition. That’s elegant, and it’s also why a ramjet can’t even start until the missile is already moving fast, which is what the solid rocket booster is for: it gets BrahMos up to speed before the ramjet lights. The penalty is thermodynamic. Holding Mach 3 against atmospheric drag burns propellant at a ferocious rate, so most of the airframe’s internal volume has to be fuel. Add the dense alloys needed to survive the skin heating of supersonic flight and you end up with a heavy missile (around three tonnes), a short reach (the baseline was 290 km), and only enough mass budget left for a 200–300 kg warhead.</p>

<p>The LRLACM runs a turbofan, the Manik, producing roughly 425 kgf of thrust, about 4.2 kN. A turbofan diverts a large fraction of its intake air around the hot core. At subsonic speed that bypass flow is far more fuel-efficient than a ramjet screaming along at Mach 3, which is the same reason airliners use turbofans and not rockets. Low fuel burn buys range on a modest tank: the LRLACM is credited with 1,000 km or more, and several outlets cite up to 1,500 km. The bypass air earns its keep a second way too, by diluting and cooling the exhaust plume, which lowers the missile’s infrared signature and makes it harder to track thermally.</p>

<p>So the chain is: choose subsonic, use a turbofan, get low fuel burn, and out the other end come long range, a lighter airframe (about a tonne), a cooler exhaust, and enough leftover mass for a heavier warhead, reported at roughly 400–450 kg (with a caveat on that figure below). “Slow” is the price you pay to collect all of that at once. It’s a coherent bargain, not a compromise.</p>

<h2 id="the-two-missiles-side-by-side">The two missiles, side by side</h2>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>LRLACM</th>
      <th>BrahMos</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Speed</strong></td>
      <td>Subsonic, ~Mach 0.7–0.8</td>
      <td>Supersonic, ~Mach 2.8–3.0</td>
    </tr>
    <tr>
      <td><strong>Engine</strong></td>
      <td>Indigenous Manik turbofan (+ solid booster on surface launch)</td>
      <td>Solid booster + liquid-fuelled ramjet</td>
    </tr>
    <tr>
      <td><strong>Range</strong></td>
      <td>~1,000 km (official framing); up to 1,500 km (reported)</td>
      <td>290 km original; ~450 km extended-range; 800 km variant tested</td>
    </tr>
    <tr>
      <td><strong>Warhead</strong></td>
      <td>~400–450 kg reported (unconfirmed)</td>
      <td>200–300 kg</td>
    </tr>
    <tr>
      <td><strong>Mass / size</strong></td>
      <td>~1 t, ~6 m × 0.52 m</td>
      <td>~3 t, ~8.4 m × 0.6 m</td>
    </tr>
    <tr>
      <td><strong>Origin</strong></td>
      <td>Fully indigenous, engine included</td>
      <td>Indo-Russian JV, P-800 Oniks heritage</td>
    </tr>
    <tr>
      <td><strong>Flight profile</strong></td>
      <td>Low-altitude terrain-following, loiter, waypoints</td>
      <td>High-altitude dash, sea-skimming terminal dive</td>
    </tr>
    <tr>
      <td><strong>Per-unit cost</strong></td>
      <td>~₹25 cr / $1–1.5M (unofficial estimate)</td>
      <td>~₹34 cr / $4.85M, ER naval (from an official contract)</td>
    </tr>
    <tr>
      <td><strong>Primary role</strong></td>
      <td>Long-range deep land strike</td>
      <td>Anti-ship and precision land attack</td>
    </tr>
  </tbody>
</table>

<p>A word on reading that table: the BrahMos figures are mostly firm, because it’s a fielded, exported, decades-old system. Several of the LRLACM figures are not. They’re journalistic estimates DRDO hasn’t confirmed, and I’ll come back to which is which.</p>

<h2 id="two-ways-to-beat-an-air-defence">Two ways to beat an air defence</h2>

<p>The missiles don’t only fly differently. They survive differently.</p>

<p>BrahMos survives by collapsing the defender’s clock. At Mach 3 it covers roughly a kilometre a second, so a defender who first sees it at 50 km has well under a minute to detect it, classify it, generate a firing solution, and get an interceptor off the rail. There’s a widely repeated claim from Operation Sindoor in May 2025, attributed to a Pakistani official, Rana Sanaullah, that defenders had only 30 to 45 seconds to even work out what an incoming BrahMos was. Treat the figure as a reported statement rather than a verified measurement, but the underlying physics holds: supersonic speed is itself a form of defence suppression. And because the airframe arrives at three tonnes and a kilometre per second, it dumps enormous kinetic energy on impact, which is why a “modest” warhead is still brutal against ships and hardened structures.</p>

<p>The LRLACM can’t win that race. An interceptor will always be faster than a subsonic cruise missile, so the LRLACM doesn’t race. It hides. Flying as low as around 50 m, it sits below the radar horizon of ground-based sensors and uses terrain (hills, tree lines, sea clutter) to break the line of sight. With terrain-contour matching it doesn’t have to fly straight either; it can thread waypoints, skirt known radar sites, and arrive from a bearing nobody was watching. It can even loiter and wait for a target to be confirmed before committing. Survivability here comes from not being seen until the last few seconds, not from being too fast to hit.</p>

<p>Field both, and an adversary inherits a genuinely awkward problem. A defence tuned to catch a high-altitude Mach 3 dash is the wrong defence for a subsonic threat creeping through ground clutter, and the reverse is just as true.</p>

<h2 id="the-real-argument-is-economic">The real argument is economic</h2>

<p>Speed and stealth are the visible differences. The decisive one is cost.</p>

<p>A supersonic ramjet missile is expensive to build: exotic alloys, imported engine components, tight thermal tolerances. The best-sourced number for BrahMos comes from the defence journalist Ajai Shukla, who in 2022 worked out, from a photographed Ministry of Defence contract, that the extended-range naval variant runs about ₹34 crore, roughly $4.85 million, per missile. The air-launched version costs more still.</p>

<p>Now picture spending a five-million-dollar weapon to flatten an ammunition dump, a fuel depot, or a communications relay. Those are soft, cheap targets, and the math is upside down: you run out of expensive missiles long before the enemy runs out of cheap things to defend. That’s the attrition trap, and it shapes every long war.</p>

<p>The LRLACM is meant to fix the exchange ratio. Built domestically, skipping the premium supersonic engineering, it’s expected to cost a fraction as much. Unofficial estimates land near ₹25 crore, about $1–1.5 million, though no official per-unit price exists. For scale, the American Tomahawk, the textbook subsonic land-attack missile, came in around $2 million in FY2022. A weapon in that bracket is cheap enough to fire in quantity.</p>

<p>That’s the “high-low mix.” You keep the small, premium BrahMos inventory for the targets that justify it, warships, buried command posts, movers you have to hit in the next sixty seconds, and you spend the cheaper LRLACM in volume to saturate air defences, crater runways, and grind down supply lines. The point of the LRLACM isn’t that it beats BrahMos. It’s that it lets you stop spending BrahMos on problems that don’t deserve it.</p>

<h2 id="what-we-actually-know-and-what-we-dont">What we actually know, and what we don’t</h2>

<p>Confident spec sheets are everywhere, so it’s worth separating the load-bearing facts from the estimates.</p>

<p>Confirmed, by official releases and multiple credible outlets: the 15 June 2026 test and its date; that it was the second flight, after November 2024; the indigenous Manik turbofan; the ADE / BDL / BEL development structure; the Nirbhay and ITCM lineage; ground and ship (UVLM) launch, with an air-launched Su-30MKI variant in development; and that both the Army and the Air Force have granted Acceptance of Necessity.</p>

<p>Not officially confirmed, and best cited as a range rather than a fact:</p>

<ul>
  <li><strong>Range.</strong> The official framing is “around 1,000 km.” The popular “1,500 km” comes from secondary reporting. DRDO hasn’t published a precise figure.</li>
  <li><strong>Warhead.</strong> Reports say 400–450 kg; the Nirbhay heritage warhead was 200–300 kg. The real number is classified.</li>
  <li><strong>Cost and quantity.</strong> The per-missile prices and unit counts circulating online are back-calculations from aggregate procurement approvals, not disclosed figures.</li>
  <li><strong>Nuclear capability.</strong> Reported via Nirbhay heritage, but official LRLACM messaging stresses conventional deep strike and doesn’t dwell on it.</li>
  <li><strong>The 2,500 km variant.</strong> An ambition mentioned in some coverage, not a demonstrated capability.</li>
</ul>

<p>PIB and MoD releases deliberately omit range, speed, and warhead specifics. That’s standard for this class of weapon, and it’s a good habit to assume any precise cruise-missile spec you read is an estimate until a government document says otherwise.</p>

<h2 id="where-this-sits">Where this sits</h2>

<p>Strip away the “game-changer” framing that tends to attach to these announcements and what’s left is still real. The Manik matters on its own: it ends a long dependence on imported cruise-missile engines, which was the specific thing that held the Nirbhay program back for years. And a sovereign, long-range, terrain-following land-attack missile puts India in a small club of states that field one, alongside the US Tomahawk, Russia’s Kalibr, China’s CJ-10, and Pakistan’s Babur.</p>

<p>It’s worth being honest about the stage, though. Two successful tests is genuine progress, not an operational capability; induction still waits on further trials. The things actually worth watching next are the unglamorous ones: the induction timeline, whether the air-launched Su-30MKI integration pans out, a February 2026 request for information on a submarine-launched variant, and whether that 2,500 km ambition ever leaves the slide deck.</p>

<p>But the headline isn’t the range or the speed. It’s the logic. India looked at a strike arsenal built around one very fast, very expensive missile and decided the smart move was to also build a slow, cheap one. In a long war, the cheap one might be the one that matters.</p>

<hr />

<p><em>Sources: Ministry of Defence / PIB releases on the LRLACM flight tests (15 June 2026, PRID 2273160; maiden test 12 November 2024, PRID 2072829); Naval News (16 June 2026); reporting from The Tribune, India TV, and Asianet Newsable, 15–16 June 2026; Ajai Shukla’s BrahMos unit-cost analysis, Business Standard (September 2022); GTRE Manik STFE specifications as reported via SPS Aviation; BrahMos figures via the manufacturer and standard references. Range, warhead, and cost figures for the LRLACM are journalistic estimates, not official confirmations.</em></p>]]></content><author><name>Akhil S. Pillai</name><email>akhilspillaihs@gmail.com</email></author><summary type="html"><![CDATA[On 15 June 2026, DRDO test-fired a cruise missile built to fly slower than a passenger jet, while India already operates one of the fastest cruise missiles in service anywhere. The contradiction isn’t an oversight. It’s the design brief.]]></summary></entry><entry><title type="html">The Hacker Who Almost Stole the Internet: The Inside Story of the XZ Backdoor</title><link href="https://codesbyakhil.github.io/blog/2026/the-hacker-who-almost-stole-the-internet/" rel="alternate" type="text/html" title="The Hacker Who Almost Stole the Internet: The Inside Story of the XZ Backdoor" /><published>2026-02-27T00:00:00+00:00</published><updated>2026-02-27T00:00:00+00:00</updated><id>https://codesbyakhil.github.io/blog/2026/the-hacker-who-almost-stole-the-internet</id><content type="html" xml:base="https://codesbyakhil.github.io/blog/2026/the-hacker-who-almost-stole-the-internet/"><![CDATA[<p><em>Originally published on <a href="https://www.linkedin.com/pulse/hacker-who-almost-stole-internet-inside-story-xz-backdoor-pillai-cxkof/">LinkedIn</a>.</em></p>

<h2 id="executive-overview">Executive Overview</h2>

<p>In late March 2024, the global cybersecurity and open-source software communities were confronted with a watershed event: the discovery of a highly sophisticated, multi-year supply chain compromise targeting the XZ Utils compression library. Tracked under the Common Vulnerabilities and Exposures identifier CVE-2024-3094, this vulnerability was immediately assigned a maximum Common Vulnerability Scoring System (CVSS) score of 10.0, reflecting its critical severity, minimal attack complexity, lack of required privileges, and catastrophic potential impact.<sup>1</sup> The threat actor, operating under the pseudonym “Jia Tan,” meticulously engineered an obfuscated backdoor designed to subvert the authentication mechanisms of the Secure Shell Daemon (<code class="language-plaintext highlighter-rouge">sshd</code>), thereby granting unauthenticated, remote code execution (RCE) capabilities with root privileges on affected Linux systems.<sup>1</sup></p>

<p>The XZ Utils incident is not a conventional software vulnerability born from oversight or poor coding practices; rather, it represents a masterclass in advanced persistent threat (APT) methodologies, combining psychological manipulation, deeply embedded cryptographic subversion, and an intimate understanding of Linux dependency architectures.<sup>5</sup> The attacker successfully exploited the structural fragility of the open-source ecosystem, wherein critical global infrastructure is frequently maintained by isolated, underfunded volunteers.<sup>8</sup> By executing a patient social engineering campaign against the project’s original maintainer, the threat actor gradually acquired the administrative privileges necessary to inject the backdoor.<sup>6</sup></p>

<p>This comprehensive research report dissects the XZ Utils compromise in its entirety. It explores the historical context of the LZMA compression ecosystem, profiles the multi-year social engineering operation, deconstructs the highly obfuscated build-time injection mechanics, and analyses the runtime cryptographic bypass utilizing Ed448 signatures. Furthermore, the report chronicles the fortuitous discovery of the backdoor by Microsoft software engineer Andres Freund, examines the immediate remediation efforts across major Linux distributions, and extrapolates the profound, long-term implications for Third-Party Risk Management (TPRM) and the sustainability of open-source software security.</p>

<h2 id="the-foundation-xz-utils-lzma-and-the-linux-dependency-ecosystem">The Foundation: XZ Utils, LZMA, and the Linux Dependency Ecosystem</h2>

<h3 id="the-ubiquity-of-data-compression-infrastructure">The Ubiquity of Data Compression Infrastructure</h3>

<p>To comprehend the magnitude of the CVE-2024-3094 threat, one must first understand the foundational role of the targeted software. XZ Utils is a suite of open-source data compression tools and libraries that implements the Lempel-Ziv-Markov chain algorithm (LZMA) architecture.<sup>6</sup> Initially developed between 2005 and 2008 by Lasse Collin and a small cohort of contributors, the <code class="language-plaintext highlighter-rouge">.xz</code> file format rapidly became the de facto standard for compressing large data assets across the Unix and Linux landscapes.<sup>6</sup> Its high compression ratio made it invaluable for distributing Linux kernel images, software package management archives, and system backups.<sup>1</sup></p>

<p>Consequently, <code class="language-plaintext highlighter-rouge">liblzma</code>—the core library underlying XZ Utils—was integrated into nearly every modern Linux distribution, macOS environments via Homebrew, and numerous embedded systems including routers, switches, and firewalls.<sup>9</sup> Despite its ubiquity and critical importance to global digital infrastructure, the project remained a classic example of the open-source dynamic: it was maintained almost exclusively by Lasse Collin in his spare time, without institutional financial backing or a dedicated security team.<sup>9</sup></p>

<h3 id="the-systemd-and-openssh-dependency-chain">The Systemd and OpenSSH Dependency Chain</h3>

<p>The severity of the XZ Utils backdoor is intrinsically linked to the indirect dependency chains that govern modern Linux operating systems. By default, the OpenSSH daemon (<code class="language-plaintext highlighter-rouge">sshd</code>)—the cryptographic network protocol utilized globally for secure remote system administration—does not natively require or link against <code class="language-plaintext highlighter-rouge">liblzma</code>.<sup>2</sup> However, the modern Linux landscape is heavily dominated by the systemd initialization system and service manager.<sup>13</sup></p>

<p>To enable systemd to monitor the execution state and startup completion of the SSH daemon, numerous major Linux distributions (including Debian, Ubuntu, and Red Hat/Fedora) apply a downstream patch to OpenSSH.<sup>11</sup> This patch integrates OpenSSH with the systemd-notify protocol, forcing the SSH daemon to link against <code class="language-plaintext highlighter-rouge">libsystemd</code>.<sup>13</sup> Because <code class="language-plaintext highlighter-rouge">libsystemd</code> itself relies on <code class="language-plaintext highlighter-rouge">liblzma</code> to handle the compression of background assets such as journal logs, an indirect dependency is forged.<sup>2</sup></p>

<p>When <code class="language-plaintext highlighter-rouge">sshd</code> initializes on a patched system, it simultaneously loads <code class="language-plaintext highlighter-rouge">libsystemd</code> and, by extension, the <code class="language-plaintext highlighter-rouge">liblzma</code> library directly into its memory space.<sup>2</sup> The threat actor demonstrated a profound understanding of this specific distribution architecture. By compromising a seemingly benign compression library, the attacker achieved direct access to the memory space of the internet’s most critical remote administration service.<sup>1</sup></p>

<h2 id="the-architect-of-the-compromise-threat-actor-profiling-and-social-engineering">The Architect of the Compromise: Threat Actor Profiling and Social Engineering</h2>

<p>The insertion of the backdoor was not a discrete event but the culmination of a meticulously planned, multi-year cyberespionage and social engineering operation. The threat actor, widely suspected by cybersecurity experts to be a well-resourced nation-state entity, exhibited extraordinary patience, executing a campaign designed to slowly erode the original maintainer’s control while building unassailable credibility within the open-source community.<sup>3</sup></p>

<h3 id="initial-infiltration-and-credibility-building">Initial Infiltration and Credibility Building</h3>

<p>The operation commenced on January 26, 2021, with the creation of a GitHub account under the pseudonym “JiaT75” (Jia Cheong Tan).<sup>6</sup> The actor understood that immediate attempts to alter core code in critical projects would trigger security reviews. Therefore, Jia Tan embarked on an extended credibility-building phase. Throughout 2021 and early 2022, the account authored over 500 benign commits across multiple open-source projects, signaling a willingness to perform the tedious maintenance tasks that most volunteer developers avoid.<sup>6</sup></p>

<p>A retroactive analysis of Jia Tan’s GitHub history revealed a pattern of targeted probing. In late 2021, the actor attempted to introduce suspicious dependency downloader scripts for APT and YUM package managers into the libarchive project—another ubiquitous C-based compression library.<sup>19</sup> When the libarchive maintainers rejected these pull requests due to their suspicious nature, the actor pivoted, eventually focusing entirely on the more vulnerable, single-maintainer XZ Utils project.<sup>19</sup></p>

<p>On October 29, 2021, Jia Tan initiated contact with the XZ project by submitting a harmless patch to the xz-devel mailing list.<sup>6</sup> By February 6, 2022, Lasse Collin had merged Jia Tan’s first legitimate commit, which added necessary parameter validation to the LZMA and LZMA2 encoders.<sup>6</sup> With a foot in the door, the threat actor prepared to escalate the operation.</p>

<h3 id="the-sock-puppet-campaign-jigar-kumar-and-dennis-ens">The Sock Puppet Campaign: Jigar Kumar and Dennis Ens</h3>

<p>To accelerate the handover of administrative privileges, the threat actor deployed a classic psychological manipulation tactic: the “good cop, bad cop” dynamic.<sup>20</sup> In the spring of 2022, several new identities emerged on the xz-devel mailing list, most notably “Jigar Kumar” and “Dennis Ens”.<sup>6</sup> These accounts functioned as “sock puppets”—fictitious personas controlled by the attacker, entirely lacking prior history in the open-source ecosystem.<sup>11</sup></p>

<p>The actor employed forced geographic dispersion to mask coordination: Jia Tan presented as Singaporean or Malaysian, Dennis Ens as Northern European, and Jigar Kumar as Indian.<sup>6</sup> Despite these varied origins, linguistic forensic analysis later highlighted shared misspellings, formatting choices, and grammatical anomalies across all three identities.<sup>6</sup></p>

<p>Beginning in April 2022, Jigar Kumar launched a relentless harassment campaign against Lasse Collin. Over a series of aggressively toned emails, Kumar chided Collin for the project’s slow release schedule, complaining that community features would take years to be implemented and pointing out that the 5.2.0 release was already seven years old.<sup>6</sup> On May 19, 2022, an exhausted Lasse Collin publicly apologized for the delays, explicitly citing his struggles with long-term mental health issues and limited personal resources.<sup>6</sup> Collin noted, however, that Jia Tan had been quietly assisting him off-list.<sup>6</sup></p>

<p>Rather than showing empathy, the sock puppets intensified their attack. Dennis Ens joined the thread to express collective frustration, while Jigar Kumar explicitly stated on June 7, 2022: “Progress will not happen until there is new maintainer,” accusing Collin of losing interest and neglecting the project.<sup>6</sup> This calculated psychological pressure achieved its intended outcome. By June 29, 2022, a compromised and burned-out Collin yielded to the pressure, announcing to the mailing list that Jia Tan was “practically a co-maintainer already” and that a formal transition of project governance was underway.<sup>6</sup></p>

<h3 id="consolidation-of-control-and-defensive-evasion">Consolidation of Control and Defensive Evasion</h3>

<p>Having successfully usurped administrative authority, Jia Tan spent the remainder of 2022 and 2023 consolidating control over the XZ project’s infrastructure. By late 2022, Tan was granted membership in the Tukaani organization on GitHub, the bug reporting email alias was updated to redirect to Tan, and the project’s README was altered to reflect the new co-maintainer status.<sup>6</sup> Following Collin’s final release (v5.4.1) in January 2023, Jia Tan assumed total release management, publishing version 5.4.2 in March 2023.<sup>6</sup></p>

<p>Crucially, Jia Tan proactively disabled external security mechanisms that might have detected the impending backdoor. On July 8, 2023, Tan submitted a pull request to Google’s oss-fuzz—a critical platform providing continuous fuzz testing for major open-source projects.<sup>12</sup> Because Tan was now a recognized maintainer of XZ Utils, the oss-fuzz administrators merged the request.<sup>12</sup> The seemingly minor patch disabled IFUNC (Indirect Function) fuzzing for the XZ project, effectively blinding the automated security systems to the exact memory manipulation techniques the backdoor would later utilize.<sup>11</sup> Finally, in January 2024, Tan migrated the official XZ Utils web page from Collin’s privately controlled tukaani.org server directly to GitHub Pages, ensuring complete control over project communications and release distributions.<sup>6</sup></p>

<h3 id="threat-actor-strategic-timeline">Threat Actor Strategic Timeline</h3>

<ul>
  <li><strong>Jan 26, 2021:</strong> Jia Tan (JiaT75) initiates the creation of the GitHub account and commences a benign commit history.<sup>6</sup></li>
  <li><strong>Oct 29, 2021:</strong> Jia Tan (JiaT75) submits their first benign patch to the xz-devel mailing list.<sup>6</sup></li>
  <li><strong>Feb 6, 2022:</strong> Jia Tan’s first legitimate commit is merged into XZ by Lasse Collin.<sup>6</sup></li>
  <li><strong>Apr – Jun 2022:</strong> Sock puppets Jigar Kumar and Dennis Ens launch a coordinated harassment campaign leveraging maintainer burnout to force a governance handover.<sup>6</sup></li>
  <li><strong>Jun 29, 2022:</strong> Lasse Collin yields to psychological pressure and officially acknowledges Jia Tan as a co-maintainer.<sup>6</sup></li>
  <li><strong>Jul 8, 2023:</strong> Jia Tan (JiaT75) modifies Google’s oss-fuzz configuration to disable IFUNC fuzzing checks, blinding security scanners.<sup>12</sup></li>
  <li><strong>Jan 19, 2024:</strong> Jia Tan (JiaT75) migrates the official XZ web page to GitHub Pages to exert total informational control.<sup>6</sup></li>
  <li><strong>Feb 15, 2024:</strong> Jia Tan (JiaT75) modifies <code class="language-plaintext highlighter-rouge">.gitignore</code> to hide the forthcoming <code class="language-plaintext highlighter-rouge">build-to-host.m4</code> malicious script.<sup>6</sup></li>
</ul>

<h2 id="technical-architecture-of-the-supply-chain-attack">Technical Architecture of the Supply Chain Attack</h2>

<p>The technical implementation of the CVE-2024-3094 backdoor is distinguished by its extreme operational security, multi-stage obfuscation, and surgical architectural targeting. The threat actor avoided committing highly suspicious C code directly to the public Git repository, as such changes would likely be flagged during routine peer review or automated scanning.<sup>9</sup> Instead, the attacker exploited a widely held, yet flawed, assumption within the software ecosystem: that the release tarballs (the packaged archives distributed to package managers) perfectly match the transparent upstream Git source code.<sup>11</sup></p>

<h3 id="build-time-obfuscation-and-script-injection">Build-Time Obfuscation and Script Injection</h3>

<p>The active phase of the compromise began in February 2024. On February 15, Jia Tan added an ignore rule for the <code class="language-plaintext highlighter-rouge">build-to-host.m4</code> file in the project’s <code class="language-plaintext highlighter-rouge">.gitignore</code> configuration.<sup>6</sup> Several days later, on February 23, two binary files were committed to the repository: <code class="language-plaintext highlighter-rouge">tests/files/bad-3-corrupt_lzma2.xz</code> and <code class="language-plaintext highlighter-rouge">tests/files/good-large_compressed.lzma</code>.<sup>6</sup> Within the context of a compression library, the presence of manually crafted, corrupted binary files is highly standard; developers utilize them to test how the software handles edge cases, corrupted streams, and specific decoding errors.<sup>4</sup> These files, however, contained the encrypted components of the backdoor.</p>

<p>When Jia Tan published the release tarballs for XZ Utils versions 5.6.0 (February 24) and 5.6.1 (March 9), the archives included a modified version of the GNU autoconf support macro, <code class="language-plaintext highlighter-rouge">m4/build-to-host.m4</code>, which was completely absent from the public Git history.<sup>11</sup> The modifications appeared benign to automated scanners—ostensibly updating version numbers and copyright years—but they contained a deeply obfuscated injection script designed to execute at the end of the <code class="language-plaintext highlighter-rouge">./configure</code> build phase.<sup>11</sup></p>

<p>The script utilized native Unix utilities to dynamically assemble the attack. First, it utilized <code class="language-plaintext highlighter-rouge">grep</code> to scan the binary test files for a specific magic string (<code class="language-plaintext highlighter-rouge">####[[:alnum:]]{5}####$</code>), effectively locating the hidden payload within <code class="language-plaintext highlighter-rouge">bad-3-corrupt_lzma2.xz</code>.<sup>11</sup> To evade detection by static analyzers looking for malicious commands, the script employed a substitution cipher. It utilized an obfuscated <code class="language-plaintext highlighter-rouge">cat</code> command (written via <code class="language-plaintext highlighter-rouge">sed "r\n"</code>) and piped the output through the <code class="language-plaintext highlighter-rouge">tr</code> command to swap tabs, spaces, underscores, and dashes.<sup>11</sup> The resulting, de-obfuscated byte stream was then piped into <code class="language-plaintext highlighter-rouge">xz -d</code> (decompress), yielding a secondary, hidden shell script.<sup>6</sup></p>

<h3 id="payload-extraction-and-environment-verification">Payload Extraction and Environment Verification</h3>

<p>The secondary script functioned as a rigorous environmental gating mechanism. The threat actor designed the backdoor to deploy only under highly specific conditions, ensuring the payload remained dormant during forensic analysis, sandboxed testing, or on incompatible architectures.<sup>5</sup> The script verified the following prerequisites:</p>

<ul>
  <li><strong>Architecture:</strong> The target system must be running an x86-64 Linux kernel.<sup>2</sup></li>
  <li><strong>Toolchain:</strong> The software must be compiled using the GNU C Compiler (gcc) and the GNU Linker.<sup>23</sup></li>
  <li><strong>Standard Library:</strong> The operating system must rely on the GNU C Library (glibc).<sup>2</sup></li>
  <li><strong>Packaging:</strong> The build process must be executing as part of a Debian (dpkg) or Red Hat (rpm) package creation sequence, hindering discovery by independent researchers compiling from source.<sup>2</sup></li>
</ul>

<p>If, and only if, these stringent conditions were met, the script proceeded to extract a third, significantly larger script from the <code class="language-plaintext highlighter-rouge">good-large_compressed.lzma</code> file.<sup>6</sup> Using a complex pipeline of <code class="language-plaintext highlighter-rouge">head</code>, <code class="language-plaintext highlighter-rouge">tail</code>, and <code class="language-plaintext highlighter-rouge">tr</code> commands, the script extracted 33,492 bytes of data, retaining the final 31,265 bytes.<sup>6</sup> This data was decrypted using a custom RC4-like algorithm implemented entirely in AWK, yielding a pre-compiled, malicious object file that was subsequently saved to the build directory as <code class="language-plaintext highlighter-rouge">liblzma_la-crc64-fast.o</code>.<sup>6</sup></p>

<p>During the final <code class="language-plaintext highlighter-rouge">make</code> phase, the script invoked <code class="language-plaintext highlighter-rouge">sed</code> to edit the legitimate source code file <code class="language-plaintext highlighter-rouge">crc64_fast.c</code>.<sup>11</sup> It modified the intrinsic CPU feature detection function <code class="language-plaintext highlighter-rouge">__get_cpuid</code>, renaming it to <code class="language-plaintext highlighter-rouge">getcpuid</code>. This subtle alteration forced the compiler to link the resulting library against the malicious <code class="language-plaintext highlighter-rouge">getcpuid</code> function residing within the injected object file, silently embedding the backdoor into the finalized <code class="language-plaintext highlighter-rouge">liblzma.so</code> binary.<sup>6</sup></p>

<h3 id="ifunc-hijacking-and-dynamic-linker-manipulation">IFUNC Hijacking and Dynamic Linker Manipulation</h3>

<p>The payload embedded within the object file relied heavily on a sophisticated feature of the GNU C Library known as IFUNC (Indirect Function) resolution.<sup>2</sup> IFUNC is an optimization mechanism that allows developers to provide multiple implementations of a specific function. When a shared library is loaded, the dynamic linker executes the IFUNC resolver to select the most efficient implementation based on the host processor’s hardware capabilities (e.g., determining whether to use hardware-accelerated CLMUL or SSE4.1 instructions for CRC checksums).<sup>2</sup></p>

<p>Crucially, IFUNC resolvers are executed extremely early in the dynamic linking sequence, before the operating system maps the library’s memory pages as read-only.<sup>5</sup> The attacker exploited this temporal window. When the compromised <code class="language-plaintext highlighter-rouge">sshd</code> process starts, it loads <code class="language-plaintext highlighter-rouge">liblzma</code> (via <code class="language-plaintext highlighter-rouge">libsystemd</code>), inadvertently invoking the backdoored <code class="language-plaintext highlighter-rouge">crc32_resolve()</code> and <code class="language-plaintext highlighter-rouge">crc64_resolve()</code> functions.<sup>23</sup></p>

<p>Once executing within the IFUNC context, the malicious code embarks on a complex memory manipulation sequence. It parses the process’s symbol tables—a computationally expensive operation that would ultimately lead to its discovery—and installs a malicious audit hook (<code class="language-plaintext highlighter-rouge">_rtld_global_ro._dl_naudit</code>) directly into the dynamic linker.<sup>23</sup> This hook grants the backdoor the ability to intercept and monitor all subsequent symbol resolutions across the entire process.<sup>23</sup></p>

<p>The backdoor’s code specifically waits for the dynamic linker to resolve the memory address for <code class="language-plaintext highlighter-rouge">RSA_public_decrypt@got.plt</code>.<sup>2</sup> This function, residing within OpenSSL’s libcrypto, is the cornerstone of OpenSSH’s public-key authentication mechanism.<sup>2</sup> Once the symbol is requested, the backdoor alters the Global Offset Table (GOT) entry, redirecting the execution flow of <code class="language-plaintext highlighter-rouge">RSA_public_decrypt</code> away from the legitimate cryptographic library and into the attacker’s own payload.<sup>23</sup></p>

<h2 id="cryptographic-mechanics-the-ed448-authentication-bypass">Cryptographic Mechanics: The Ed448 Authentication Bypass</h2>

<p>By successfully hijacking the execution flow of <code class="language-plaintext highlighter-rouge">RSA_public_decrypt</code>, the XZ Utils backdoor established a position of ultimate authority over the SSH authentication sequence. However, a ubiquitous backdoor is inherently dangerous to the attacker if it can be discovered and utilized by rival threat actors or security researchers. To ensure exclusive access, Jia Tan engineered a highly sophisticated, asymmetric cryptographic verification system based on the Ed448 elliptic curve algorithm.<sup>2</sup></p>

<h3 id="interception-and-signature-verification">Interception and Signature Verification</h3>

<p>During a standard public-key SSH login attempt, the SSH daemon invokes the <code class="language-plaintext highlighter-rouge">ssh_rsa_verify</code> function, which subsequently calls <code class="language-plaintext highlighter-rouge">RSA_public_decrypt</code> to validate the user’s digital signature.<sup>24</sup> On a compromised system, this call is intercepted by the backdoor. The malicious code examines the data transmitted during the authentication handshake, specifically looking for a specialized payload hidden within the RSA public modulus (the “N” value) of the incoming SSH certificate.<sup>24</sup></p>

<p>If the payload is absent, the backdoor seamlessly returns execution to the legitimate libcrypto functions, allowing normal authentication to proceed unhindered, thereby masking its presence from legitimate users.<sup>24</sup> If the payload is present, the backdoor initiates its internal decryption and verification routines.</p>

<p>The backdoor contains a hardcoded, 57-byte Ed448 public key.<sup>24</sup> To extract the attacker’s commands, the backdoor utilizes the first 32 bytes of this public key as a symmetric encryption key for the ChaCha20 cipher.<sup>24</sup> The decryption yields a 240-byte ciphertext block containing execution flags, a command string, and a 114-byte RFC-8032 Ed448 digital signature.<sup>24</sup></p>

<h3 id="hostkey-binding-and-anti-replay-mechanisms">Hostkey Binding and Anti-Replay Mechanisms</h3>

<p>To prevent security researchers from capturing a valid exploit packet and replaying it against other vulnerable servers (a classic replay attack), the threat actor implemented a cryptographic binding mechanism.<sup>24</sup> The signature verification process calculates a hash over several specific data points, including a 32-bit magic value, pre-command structural fields, the command payload itself, and crucially, the first 32 bytes of the SHA-256 hash of the target server’s specific SSH hostkey.<sup>24</sup></p>

<p>By incorporating the server’s unique hostkey into the signed payload, the attacker ensures that every exploit packet is mathematically bound to a single, specific machine.<sup>24</sup> An authentication packet that successfully compromises Server A will fail signature validation if transmitted to Server B.</p>

<p>If the Ed448 signature is mathematically valid, the backdoor processes a complex “request type” derivation. The payload header contains three variables (a, b, and c); the backdoor calculates the formula a * b + c.<sup>24</sup> If the resulting value is greater than 3, the backdoor assumes the packet is invalid or corrupted and skips processing.<sup>24</sup> If the value resolves to “Type 2,” the backdoor extracts the null-terminated command string provided by the attacker and passes it directly to the system’s native <code class="language-plaintext highlighter-rouge">system()</code> call.<sup>24</sup> Because the SSH daemon operates with root privileges, the executed command instantly achieves total, unauthenticated system compromise.<sup>1</sup></p>

<h3 id="anti-analysis-and-evasion-tactics">Anti-Analysis and Evasion Tactics</h3>

<p>Beyond its cryptographic exclusivity, the backdoor was engineered with extreme operational security to evade discovery by forensic tools and logging systems.<sup>22</sup> Prior to executing the payload, the code evaluates the state of the surrounding operating system environment. It explicitly checks the process name, requiring <code class="language-plaintext highlighter-rouge">argv</code> to be exactly <code class="language-plaintext highlighter-rouge">/usr/sbin/sshd</code>.<sup>24</sup> It verifies that the <code class="language-plaintext highlighter-rouge">LANG</code> environment variable is set, while simultaneously ensuring that critical debugging variables—such as <code class="language-plaintext highlighter-rouge">LD_DEBUG</code>, <code class="language-plaintext highlighter-rouge">LD_PROFILE</code>, and <code class="language-plaintext highlighter-rouge">TERM</code>—are unset.<sup>23</sup></p>

<p>Furthermore, the payload actively searches the process space for indicators of popular debugging and profiling environments, including gdb (GNU Debugger) and rr (Record and Replay framework).<sup>23</sup> If any forensic tools are detected, the backdoor immediately aborts its execution path, allowing the process to function normally and preventing the analyst from observing the malicious behavior.<sup>23</sup> Finally, the code was explicitly designed to suppress operational logging. A successful exploitation, resulting in complete root access via <code class="language-plaintext highlighter-rouge">system()</code>, generates absolutely no INFO or higher-level log entries in the system’s auth.log or syslog files, rendering the intrusion invisible to traditional log aggregation and Security Information and Event Management (SIEM) tools.<sup>22</sup></p>

<h3 id="cryptographic-components-and-functions-within-the-exploit-chain">Cryptographic Components and Functions within the Exploit Chain</h3>

<ul>
  <li><strong>Ed448 Public Key (57 bytes):</strong> Hardcoded directly into the backdoor; used exclusively to verify the attacker’s digital signature.<sup>24</sup></li>
  <li><strong>ChaCha20 Cipher:</strong> Utilizes the first 32 bytes of the Ed448 public key as a symmetric key to decrypt the incoming payload body.<sup>24</sup></li>
  <li><strong>RFC-8032 Signature (114 bytes):</strong> Mathematically validates that the payload was strictly authorized by the holder of the Ed448 private key.<sup>24</sup></li>
  <li><strong>SHA-256 Server Hostkey:</strong> Bound into the signature hash by the attacker to prevent packet replay attacks across different servers.<sup>24</sup></li>
  <li><strong>Type 2 Request Logic:</strong> Derives the execution state and passes the validated payload directly to the Linux <code class="language-plaintext highlighter-rouge">system()</code> call for RCE.<sup>24</sup></li>
</ul>

<h2 id="the-discovery-anomalies-profiling-and-the-500ms-delay">The Discovery: Anomalies, Profiling, and the 500ms Delay</h2>

<p>The sheer complexity and stealth of the XZ Utils backdoor challenged foundational assumptions regarding open-source security. The eventual discovery of the CVE-2024-3094 vulnerability did not stem from rigorous institutional code reviews, automated static analysis tools, or dedicated threat hunting operations. Instead, a global cybersecurity catastrophe was averted through the serendipitous diligence of a single software engineer investigating a seemingly trivial performance anomaly.<sup>15</sup></p>

<h3 id="micro-benchmarking-and-cpu-utilization">Micro-benchmarking and CPU Utilization</h3>

<p>In late February and early March of 2024, Andres Freund, a software engineer at Microsoft and a prominent core developer for the PostgreSQL database system, was conducting routine micro-benchmarking tasks on a system running Debian Sid (the unstable testing branch of the Debian distribution).<sup>2</sup> During his tests, Freund observed a highly unusual performance degradation.<sup>20</sup> While profiling a fully cached workload, he noticed a 1% to 2% performance regression, alongside an unexpected consumption of CPU resources by the SSH daemon.<sup>20</sup></p>

<p>Contrary to the popular narrative that emerged in early media reports, the primary trigger for Freund’s investigation was not a “500ms delay” in login times. As Freund later clarified, the investigation began when he noticed that automated, failing SSH login attempts—the routine background noise of botnets attempting to brute-force passwords with random combinations—were utilizing an inexplicably high amount of CPU power.<sup>11</sup> Only after noticing the CPU spike did Freund measure the actual login latency, quantifying that the time required to establish an SSH connection had increased from approximately 0.3 seconds to 0.8 seconds (a ~500ms delay).<sup>11</sup></p>

<p>Utilizing advanced CPU profiling tools, Freund traced the latency back to <code class="language-plaintext highlighter-rouge">liblzma</code>.<sup>20</sup> Because data compression algorithms should not be executing during the cryptographic validation phase of an SSH handshake, this architectural anomaly warranted deeper investigation.<sup>20</sup></p>

<h3 id="valgrind-errors-and-the-path-to-disclosure">Valgrind Errors and the Path to Disclosure</h3>

<p>Freund’s suspicions were further cemented when he encountered memory access violations reported by valgrind, a powerful memory debugging and profiling tool.<sup>23</sup> The XZ backdoor’s IFUNC symbol-table manipulation process was inherently slow and aggressive. As the malicious code traversed the dynamic linker’s memory structures to locate the <code class="language-plaintext highlighter-rouge">RSA_public_decrypt</code> function, it accessed memory boundaries that triggered valgrind alerts regarding “supposedly inaccessible memory”.<sup>20</sup></p>

<p>Initially, Freund hypothesized that the Debian package maintainers had inadvertently introduced a bug during a routine update. However, his exhaustive reverse-engineering of the memory traces revealed that the upstream release tarballs generated by Jia Tan had been intentionally compromised.<sup>23</sup> On Wednesday, March 27, 2024, Freund quietly contacted the Debian security team to report the anomaly.<sup>28</sup></p>

<p>Recognizing that the backdoored code was already circulating in the wild and effectively compromising vulnerable systems, Freund accelerated the disclosure timeline. On Friday, March 29, 2024, he published a comprehensive, technically exhaustive warning to the public oss-security mailing list hosted by Openwall.<sup>23</sup> In an absurd twist of fate that underscores the human element of cybersecurity, Freund later noted in an interview that he was listening to an episode of the Risky Business cybersecurity podcast during a cooking break while simultaneously writing the disclosure report that would soon dominate the industry.<sup>11</sup></p>

<p>Because Freund discovered the backdoor while the compromised 5.6.0 and 5.6.1 versions were still incubating within bleeding-edge “beta” and “unstable” Linux distributions, the malicious code had not yet migrated into the enterprise-stable releases (such as Debian Stable, Ubuntu LTS, or Red Hat Enterprise Linux) that power the majority of the global internet.<sup>21</sup> A global crisis was narrowly, and fortunately, avoided.<sup>31</sup></p>

<h2 id="ecosystem-remediation-and-infrastructure-recovery">Ecosystem Remediation and Infrastructure Recovery</h2>

<h3 id="distribution-impact-and-rapid-rollbacks">Distribution Impact and Rapid Rollbacks</h3>

<p>The publication of Freund’s findings on the oss-security list on March 29 triggered an unprecedented, coordinated incident response across the global Linux ecosystem.<sup>28</sup> Red Hat’s Information Security (InfoSec) and Product Security (ProdSec) departments engaged their Incident Response Plans (IRP) within hours of the disclosure.<sup>28</sup> A multidisciplinary team of developers, penetration testers, and offensive analysts worked rapidly to assess the threat, determining that the malware had successfully infiltrated Fedora Rawhide and the Fedora Linux 40 beta.<sup>28</sup></p>

<p>Simultaneously, the Cybersecurity and Infrastructure Security Agency (CISA) issued an emergency advisory recommending that all developers and system administrators immediately downgrade XZ Utils to version 5.4.6, the last verified safe release authorized solely by Lasse Collin before Jia Tan exerted total control over the repository.<sup>1</sup></p>

<p>The immediate remediation efforts varied by distribution, depending entirely on their respective update methodologies:</p>

<ul>
  <li><strong>Debian</strong> — Affected (Sid / unstable / testing). Rolled back to version <code class="language-plaintext highlighter-rouge">5.6.1+really5.4.5-1</code>; build infrastructure temporarily shut down to rebuild machines from Debian stable, mitigating potential sandbox escape risks.<sup>6</sup></li>
  <li><strong>Fedora</strong> — Affected (Rawhide, Fedora 40 Beta). Urgent security alerts issued to the community; compromised packages downgraded immediately.<sup>2</sup></li>
  <li><strong>Kali Linux</strong> — Affected (Rolling release, Mar 26–29). Acknowledged exposure window; updated to a clean, reverted package iteration.<sup>11</sup></li>
  <li><strong>Arch Linux</strong> — Affected (Rolling release / Installation mediums). Altered the distribution build process to pull source code directly from Git rather than relying on tarballs; updated to version 5.6.1-2.<sup>11</sup></li>
  <li><strong>openSUSE</strong> — Affected (Tumbleweed, MicroOS). Released snapshots reverting the packages entirely to the 5.4 release line.<sup>11</sup></li>
  <li><strong>Ubuntu / Amazon Linux</strong> — Not Affected. Stable and LTS versions had not yet adopted the 5.6.x development line.<sup>33</sup></li>
</ul>

<p><em>Note: While distributions such as Arch Linux and Gentoo received the backdoored package, their specific implementations did not patch OpenSSH to support systemd-notify. Consequently, they were largely insulated from the immediate Remote Code Execution (RCE) threat via SSH, though the compromised library remained on the system.</em><sup>6</sup></p>

<h3 id="the-tukaani-project-cleanup">The Tukaani Project Cleanup</h3>

<p>In the immediate aftermath of the disclosure, GitHub unilaterally suspended the accounts of both Jia Tan and Lasse Collin, severing access to the xz.tukaani.org repositories to halt any further proliferation of the malicious code.<sup>2</sup> Collin’s account was subsequently reinstated on April 2, 2024, allowing him to commence the arduous process of reclaiming and sanitizing the compromised infrastructure.<sup>2</sup></p>

<p>Collin executed a comprehensive security audit of the Tukaani project.<sup>2</sup> The DNS CNAME records routing traffic to Jia Tan’s GitHub pages were permanently revoked.<sup>2</sup> Email forwarding rules directing vulnerability reports to Jia Tan were destroyed.<sup>2</sup> Collin meticulously verified that no malicious force-pushes had altered the core master or v5.x branches on his self-hosted git.tukaani.org servers, confirming that the attack was entirely confined to the release tarballs and the dormant test binaries.<sup>2</sup></p>

<p>The developer community engaged in a fierce debate regarding whether to execute a hard Git rebase to rewrite the repository’s history and permanently erase Jia Tan’s commits.<sup>2</sup> It was ultimately decided not to rebase. While retaining the commits meant antivirus software might occasionally flag the dormant binary files, rewriting history would break cryptographic hashes for countless downstream mirrors and obscure the historical record of the attack.<sup>2</sup> Because the necessary trigger code (the modified m4 macro) was never included in the Git repository, the binary files themselves are inert and harmless.<sup>2</sup> Version 5.6.2 was released as a strict cleanup iteration, and the project announced plans to transition to a 5.8.0 release line to permanently distance the software from the tainted 5.6.x nomenclature.<sup>2</sup></p>

<h2 id="systemic-implications-and-the-future-of-open-source-security">Systemic Implications and the Future of Open-Source Security</h2>

<p>The CVE-2024-3094 vulnerability has precipitated a profound paradigm shift in how the technology industry perceives and manages software supply chains. For decades, the open-source model has been lauded for its transparency, collaborative ethos, and cost-efficiency—factors that have led to its integration into an estimated 97% of modern software applications globally.<sup>10</sup> However, the XZ incident vividly illuminated the asymmetry of the current ecosystem: multi-trillion-dollar corporations and critical government infrastructures rely on foundational code maintained by unpaid, overextended volunteers working in their free time.<sup>9</sup></p>

<h3 id="the-systemd-dependency-debate">The Systemd Dependency Debate</h3>

<p>The technical mechanics of the exploit have catalyzed structural engineering reforms, particularly regarding the dangers of bloated dependency chains.<sup>11</sup> The realization that a vulnerability in a data compression utility could yield complete control over the secure shell daemon forced developers to reevaluate software architecture.<sup>11</sup></p>

<p>In direct response to the XZ backdoor, the OpenSSH development team accelerated efforts to eliminate their reliance on <code class="language-plaintext highlighter-rouge">libsystemd</code>. By engineering a library-less implementation of the systemd-notify protocol directly into OpenSSH (scheduled for integration in OpenSSH 9.8), developers successfully severed the indirect link to <code class="language-plaintext highlighter-rouge">liblzma</code>.<sup>13</sup> This architectural decoupling significantly reduces the daemon’s attack surface, ensuring that future vulnerabilities in peripheral libraries cannot easily escalate into SSH-based remote code execution.<sup>13</sup></p>

<h3 id="the-myth-of-many-eyeballs-and-maintainer-burnout">The Myth of Many Eyeballs and Maintainer Burnout</h3>

<p>The XZ Utils backdoor fundamentally challenged “Linus’s Law”—the famous open-source software adage coined by Eric S. Raymond, which asserts that “given enough eyeballs, all bugs are shallow”.<sup>35</sup> While open-source transparency theoretically allows anyone to audit source code, the reality of modern software development is vastly different. Highly complex, low-level dependencies like compression algorithms, cryptographic libraries, and memory allocators are rarely scrutinized by independent security experts unless a blatant error occurs.<sup>16</sup></p>

<p>With the sheer volume of software updates continuously flowing through package managers, the ecosystem has surpassed the capacity for manual human review.<sup>16</sup> The threat actor behind Jia Tan exploited this exact blind spot, banking on the community’s implicit trust that release tarballs matched their upstream Git counterparts.<sup>11</sup></p>

<p>Maintainer burnout emerged as the primary vector for this social engineering attack.<sup>8</sup> A 2024 Open Source Security and Risk Analysis (OSSRA) report noted that 49% of commercial applications contain open-source components that have seen no new development activity in the past two years.<sup>37</sup> When malicious actors—masquerading as enthusiastic volunteers—offer to relieve the burden of overwhelmed maintainers, the resulting transfer of administrative power is rarely subjected to rigorous background checks or identity verification.<sup>37</sup></p>

<p>This infiltration tactic is highly scalable and is actively being utilized by advanced persistent threats. Shortly after the XZ disclosure, the OpenJS Foundation—which hosts critical JavaScript projects utilized by billions of websites—reported the interception of a highly similar, credible takeover attempt.<sup>38</sup> Anonymous actors using overlapping email patterns aggressively lobbied to be granted maintainer status over popular JavaScript libraries under the guise of addressing “critical vulnerabilities”.<sup>38</sup> Coordinated warnings from the OpenSSF (Open Source Security Foundation) and CISA indicate that this psychological infiltration model is now a standardized playbook for cyberespionage.<sup>38</sup></p>

<h3 id="third-party-risk-management-and-secure-by-design">Third-Party Risk Management and Secure by Design</h3>

<p>On a macro level, government and industry consortiums are demanding an immediate transition to “Secure by Design” principles.<sup>8</sup> CISA has explicitly stated that the burden of cybersecurity can no longer rest disproportionately on individual, unfunded open-source maintainers.<sup>8</sup> A tabletop exercise conducted by CISA precisely mirrored the XZ scenario, highlighting the fragility of key ecosystem choke points and the necessity of resilient recovery plans.<sup>8</sup></p>

<p>The path forward requires a fundamental recalibration of Third-Party Risk Management (TPRM) strategies.<sup>22</sup> Technology manufacturers and enterprise organizations that extract massive financial profit from open-source ecosystems must transition from passive consumers to sustainable contributors.<sup>8</sup> This necessitates providing direct financial support to critical infrastructure projects, dedicating paid corporate developer time to audit and maintain upstream dependencies, and implementing rigorous cryptographic verification pipelines to compare source repositories against distributed release binaries.<sup>8</sup> Furthermore, the degradation of centralized vulnerability tracking services, such as the National Vulnerability Database (NVD), underscores the need for private-sector organizations to invest heavily in independent threat intelligence and automated code-review mechanisms.<sup>40</sup></p>

<h2 id="conclusion">Conclusion</h2>

<p>The discovery and subsequent neutralization of the CVE-2024-3094 vulnerability in XZ Utils serves as a historic case study in advanced cyberespionage and software supply chain compromise. The operation executed by “Jia Tan” represents an evolutionary leap in threat actor methodology, seamlessly blending extreme cryptographic sophistication with a masterful execution of human psychological manipulation. By exploiting the emotional vulnerabilities and resource constraints of a solitary open-source maintainer, the attacker successfully embedded a deeply obfuscated, dynamically executing backdoor into the foundational architecture of the Linux operating system.</p>

<p>The deployment of glibc IFUNC hooking, Ed448 asymmetric cryptography, anti-analysis evasion tactics, and dynamic shell script generation demonstrated a level of operational security indicative of a highly resourced, likely state-sponsored entity. While the catastrophic global compromise of SSH infrastructure was averted by the serendipitous diligence of Andres Freund investigating a minor CPU anomaly, the incident has permanently shattered the assumption that open-source software is inherently secure simply by virtue of its public availability.</p>

<p>The XZ Utils backdoor has unequivocally demonstrated that securing the future of the digital economy requires systemic, well-funded organizational frameworks to support the human maintainers who build and protect its foundational code. Without immediate, sustained corporate and governmental investment in the open-source ecosystem, alongside rigorous architectural decoupling of critical dependencies, the next patient threat actor will inevitably succeed where Jia Tan failed.</p>

<h2 id="works-cited">Works cited</h2>

<ol class="refs">
  <li id="ref-1"><a href="https://www.cybereason.com/blog/threat-alert-the-xz-backdoor">THREAT ALERT: The XZ Backdoor — Supply Chaining Into Your SSH</a> — Cybereason, accessed on February 27, 2026.</li>
  <li id="ref-2"><a href="https://en.wikipedia.org/wiki/XZ_Utils_backdoor">XZ Utils backdoor</a> — Wikipedia, accessed on February 27, 2026.</li>
  <li id="ref-3"><a href="https://www.offsec.com/blog/xz-backdoor/">Behind Enemy Lines: Understanding the Threat of the XZ Backdoor</a> — OffSec, accessed on February 27, 2026.</li>
  <li id="ref-4"><a href="https://safecomputing.umich.edu/security-alerts/linux-xz-utils-and-ssh-backdoor">Linux XZ Utils and SSH Backdoor</a> — Safe Computing, University of Michigan, accessed on February 27, 2026.</li>
  <li id="ref-5"><a href="https://www.softwareseni.com/the-xz-utils-backdoor-cve-2024-3094-and-the-multi-year-social-engineering-campaign-behind-it/">The XZ Utils Backdoor CVE-2024-3094 and the Multi-Year Social Engineering Campaign Behind It</a> — SoftwareSeni, accessed on February 27, 2026.</li>
  <li id="ref-6"><a href="https://securelist.com/xz-backdoor-story-part-2-social-engineering/112476/">Social engineering aspect of the XZ incident</a> — Securelist, accessed on February 27, 2026.</li>
  <li id="ref-7"><a href="https://www.youtube.com/watch?v=9sMIClxits4">Lessons That The XZ Utils Backdoor Spells Out — Farshad Abasi — ASW #280</a> — YouTube, accessed on February 27, 2026.</li>
  <li id="ref-8"><a href="https://www.cisa.gov/news-events/news/lessons-xz-utils-achieving-more-sustainable-open-source-ecosystem">Lessons from XZ Utils: Achieving a More Sustainable Open Source Ecosystem</a> — CISA, accessed on February 27, 2026.</li>
  <li id="ref-9"><a href="https://www.cyberadviserblog.com/2024/05/xz-utils-supply-chain-attack-sheds-light-on-vulnerabilities-in-widely-adopted-open-source-system/">XZ Utils Supply Chain Attack Sheds Light on Vulnerabilities in Widely Adopted Open Source System</a> — CyberAdviser, accessed on February 27, 2026.</li>
  <li id="ref-10"><a href="https://openssf.org/blog/2025/01/23/predictions-for-open-source-security-in-2025-ai-state-actors-and-supply-chains/">Predictions for Open Source Security in 2025: AI, State Actors, and Supply Chains</a> — OpenSSF, accessed on February 27, 2026.</li>
  <li id="ref-11"><a href="https://risky.biz/RB743/">Risky Business #743 — A chat about the xz backdoor with the guy who found it</a> — Risky.Biz, accessed on February 27, 2026.</li>
  <li id="ref-12"><a href="https://arxiv.org/html/2404.08987v1">On the critical path to implant backdoors and the effectiveness of potential mitigation techniques: Early learnings from XZ</a> — arXiv, accessed on February 27, 2026.</li>
  <li id="ref-13"><a href="https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27">xz-utils backdoor situation (CVE-2024-3094)</a> — GitHub Gist, accessed on February 27, 2026.</li>
  <li id="ref-14"><a href="https://www.ssh.com/blog/a-recap-of-the-openssh-and-xz-liblzma-incident">A recap of the OpenSSH and XZ/liblzma incident</a> — SSH Communications Security, accessed on February 27, 2026.</li>
  <li id="ref-15"><a href="https://doublepulsar.com/inside-the-failed-attempt-to-backdoor-ssh-globally-that-got-caught-by-chance-bbfe628fafdd">Inside the failed attempt to backdoor SSH globally — that got caught by chance</a> — Kevin Beaumont, DoublePulsar, accessed on February 27, 2026.</li>
  <li id="ref-16"><a href="https://www.keysight.com/blogs/en/tech/nwvs/2024/05/24/security-highlight-can-we-trust-open-source-after-xz-utils-backdoor">Security Highlight: Can We Trust Open Source After XZ Utils Backdoor?</a> — Keysight, accessed on February 27, 2026.</li>
  <li id="ref-17"><a href="https://medium.com/@orojcik/the-xz-backdoor-unveiling-the-elaborated-social-engineering-tactics-of-a-persistent-threat-actor-95fa8311ea09">The XZ Backdoor: Unveiling the Elaborated Social Engineering Tactics of a Persistent Threat Actor</a> — Ondra Rojčík, Medium, accessed on February 27, 2026.</li>
  <li id="ref-18"><a href="https://jfrog.com/blog/xz-backdoor-attack-cve-2024-3094-all-you-need-to-know/">XZ Backdoor Attack CVE-2024-3094: All You Need To Know</a> — JFrog, accessed on February 27, 2026.</li>
  <li id="ref-19"><a href="https://huntedlabs.com/where-the-wild-things-are-a-complete-analysis-of-jia-tans-github-history-and-the-xz-utils-software-supply-chain-breach/">Where the Wild Things Are: A Complete Analysis of Jia Tan's GitHub History and the XZ Utils Software Supply Chain Breach</a> — Hunted Labs, accessed on February 27, 2026.</li>
  <li id="ref-20"><a href="https://oxide-and-friends.transistor.fm/episodes/discovering-the-xz-backdoor-with-andres-freund/transcript">Discovering the XZ Backdoor with Andres Freund</a> — Oxide and Friends, transcript, accessed on February 27, 2026.</li>
  <li id="ref-21"><a href="https://www.wilsoncenter.org/blog-post/how-secure-open-source-software-dilemma-xz-utils-backdoor">How to Secure Open Source Software: The Dilemma of the XZ Utils Backdoor</a> — Wilson Center, accessed on February 27, 2026.</li>
  <li id="ref-22"><a href="https://riskledger.com/resources/xz-utils-backdoor-tprm">The XZ Utils Backdoor Incident: Some TPRM Implications</a> — Risk Ledger, accessed on February 27, 2026.</li>
  <li id="ref-23"><a href="https://www.openwall.com/lists/oss-security/2024/03/29/4">oss-security — backdoor in upstream xz/liblzma leading to ssh server compromise</a> — Openwall, accessed on February 27, 2026.</li>
  <li id="ref-24"><a href="https://github.com/amlweems/xzbot">amlweems/xzbot: notes, honeypot, and exploit demo for the xz backdoor</a> — GitHub, accessed on February 27, 2026.</li>
  <li id="ref-25"><a href="https://pentest-tools.com/blog/xz-utils-backdoor-cve-2024-3094">CVE-2024-3094 — The XZ Utils Backdoor, a critical SSH vulnerability in Linux</a> — Pentest-Tools, accessed on February 27, 2026.</li>
  <li id="ref-26"><a href="https://blog.trackflaw.com/en/xz-utils-the-backdoor-shaking-the-free-world/">XZ Utils: the backdoor shaking the free world and cybersecurity</a> — Trackflaw, accessed on February 27, 2026.</li>
  <li id="ref-27"><a href="https://securelist.com/xz-backdoor-part-3-hooking-ssh/113007/">XZ backdoor: Hook analysis</a> — Securelist, accessed on February 27, 2026.</li>
  <li id="ref-28"><a href="https://www.redhat.com/en/blog/understanding-red-hats-response-xz-security-incident">Understanding Red Hat's response to the XZ security incident</a> — Red Hat, accessed on February 27, 2026.</li>
  <li id="ref-29"><a href="https://www.elastic.co/security-labs/500ms-to-midnight">500ms to midnight: XZ A.K.A. liblzma backdoor</a> — Elastic Security Labs, accessed on February 27, 2026.</li>
  <li id="ref-30"><a href="https://podcasts.apple.com/us/podcast/discovering-the-xz-backdoor-with-andres-freund/id1625932222?i=1000652031933">Discovering the XZ Backdoor with Andres Freund</a> — Apple Podcasts, accessed on February 27, 2026.</li>
  <li id="ref-31"><a href="https://www.reddit.com/r/cybersecurity/comments/1brdrgc/backdoor_found_in_widely_used_linux_utility/">Backdoor found in widely used Linux utility breaks encrypted SSH connections</a> — r/cybersecurity, Reddit, accessed on February 27, 2026.</li>
  <li id="ref-32"><a href="https://research.swtch.com/xz-timeline">Timeline of the xz open source attack</a> — research!rsc, accessed on February 27, 2026.</li>
  <li id="ref-33"><a href="https://blog.qualys.com/vulnerabilities-threat-research/2024/03/29/xz-utils-sshd-backdoor">CVE-2024-3094: XZ Utils SSHd Backdoor Vulnerability in Linux</a> — Qualys Blog, accessed on February 27, 2026.</li>
  <li id="ref-34"><a href="https://tukaani.org/xz-backdoor/">XZ Utils backdoor</a> — The Tukaani Project, accessed on February 27, 2026.</li>
  <li id="ref-35"><a href="http://cs.furman.edu/~tallen/csc475/materials/cathedral.pdf">The Cathedral and the Bazaar</a> — Furman University, accessed on February 27, 2026.</li>
  <li id="ref-36"><a href="https://nakamotoinstitute.org/library/the-cathedral-and-the-bazaar/">The Cathedral and the Bazaar</a> — Satoshi Nakamoto Institute, accessed on February 27, 2026.</li>
  <li id="ref-37"><a href="https://www.blackduck.com/blog/xz-utils-backdoor-supply-chain-attack.html">What is the Xz Utils Backdoor: Everything you need to know about the supply chain attack</a> — Black Duck, accessed on February 27, 2026.</li>
  <li id="ref-38"><a href="https://www.linuxfoundation.org/blog/openssf-openjs-alert-for-social-engineering-takeovers-of-open-source-projects">Open Source Security (OpenSSF) and OpenJS Foundations Issue Alert for Social Engineering Takeovers of Open Source Projects</a> — Linux Foundation, accessed on February 27, 2026.</li>
  <li id="ref-39"><a href="https://openssf.org/blog/2024/02/20/openssf-responds-to-us-cisa-rfi-on-cybersecurity-risk-and-secure-by-design-software/">OpenSSF Responds to US CISA RFI on Cybersecurity Risk and Secure by Design Software</a> — OpenSSF, accessed on February 27, 2026.</li>
  <li id="ref-40"><a href="https://www.bitsight.com/blog/xz-apocalypse-almost-was">The xz apocalypse that almost was</a> — Bitsight, accessed on February 27, 2026.</li>
</ol>]]></content><author><name>Akhil S. Pillai</name><email>akhilspillaihs@gmail.com</email></author><category term="security" /><category term="open-source" /><summary type="html"><![CDATA[Originally published on LinkedIn.]]></summary></entry><entry><title type="html">Setting up this site</title><link href="https://codesbyakhil.github.io/blog/2026/setting-up-this-site/" rel="alternate" type="text/html" title="Setting up this site" /><published>2026-02-01T00:00:00+00:00</published><updated>2026-02-01T00:00:00+00:00</updated><id>https://codesbyakhil.github.io/blog/2026/setting-up-this-site</id><content type="html" xml:base="https://codesbyakhil.github.io/blog/2026/setting-up-this-site/"><![CDATA[<p>This site is meant to work like a lab notebook with the door open: research progress on
the <a href="/research/">Research</a> page, short dated updates on the
homepage, and longer notes here when something is worth writing down properly.</p>

<p>Since most of what I might write about involves equations, here is the rendering test.
The phase-mass conservation equation from the six-equation two-fluid model I work with:</p>

\[\frac{\partial}{\partial t}\left(\alpha_k \rho_k\right)
+ \nabla \cdot \left(\alpha_k \rho_k \, \mathbf{u}_k\right) = \Gamma_k\]

<p>where \(\alpha_k\), \(\rho_k\), and \(\mathbf{u}_k\) are the volume fraction, density,
and velocity of phase \(k\), and \(\Gamma_k\) is the interphase mass-transfer term.
Inline math works too: the shedding regime I simulate sits at
\(\mathrm{Re} = 100\text{–}300\).</p>

<p>Code blocks get the same treatment. A crude way to estimate the shedding frequency from
a lift-coefficient history — counting upward zero crossings:</p>

<div class="language-fortran highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">! shedding frequency from upward zero crossings of C_L(t)</span><span class="w">
</span><span class="n">nzero</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="w">
</span><span class="k">do</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">nt</span><span class="w">
   </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">cl</span><span class="p">(</span><span class="n">i</span><span class="mi">-1</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0.0d0</span><span class="w"> </span><span class="ow">.and.</span><span class="w"> </span><span class="n">cl</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mf">0.0d0</span><span class="p">)</span><span class="w"> </span><span class="n">nzero</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nzero</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w">
</span><span class="k">end</span><span class="w"> </span><span class="k">do</span><span class="w">
</span><span class="n">f_shed</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">dble</span><span class="p">(</span><span class="n">nzero</span><span class="p">)</span><span class="w"> </span><span class="p">/</span><span class="w"> </span><span class="n">t_total</span><span class="w">
</span><span class="n">st</span><span class="w">     </span><span class="o">=</span><span class="w"> </span><span class="n">f_shed</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="p">/</span><span class="w"> </span><span class="n">u_inf</span><span class="w">      </span><span class="c1">! Strouhal number</span><span class="w">
</span></code></pre></div></div>

<p>If you can read both of those clearly, the pipeline works. More substantial posts to
follow — feel free to delete this one once the site is live.</p>]]></content><author><name>Akhil S. Pillai</name><email>akhilspillaihs@gmail.com</email></author><category term="meta" /><summary type="html"><![CDATA[This site is meant to work like a lab notebook with the door open: research progress on the Research page, short dated updates on the homepage, and longer notes here when something is worth writing down properly.]]></summary></entry></feed>