Spellcrash
Page 20
“I think I just did.” All those lives tied up in whether I did or didn’t manage to fix Necessity, all that weight on my narrow shoulders . . . I shuddered. This must be how Atlas felt all the time.
“Tell me about it.”
So I explained my thoughts about the consequences of failure. When I finished, Mel let out a low, unhappy whistle. “Ugly.”
“Yeah,” I agreed. “I somehow managed to forget the stakes for a while. I think it’s all the time I spend dealing with gods and immortals. They can be hurt, deeply even—look at Persephone—
but they’re also eternal and virtually indestructible, ideals personified as much as they are people.”
Mel nodded soberly. “The whole lot is so prone to treating humanity as the counters in an elaborate game that it’s easy to become infected with their worldview. Hell, Lachesis thought nothing of making a threat against my entire species.”
“We’re not going to let her carry that through, Mel. I’ll nuke the whole god-governing part of Necessity if I have to in order to prevent it—tear the system down and let the worlds go on their merry way without any of the powers, me included.” I turned away, looking out over the datascape. “Come on, we need to figure out how this thing works. We’ve got a ton of work to do.”
With Melchior’s help, I coded up a bunch of tools for the task. One big ugly codespell would let me see exactly what was happening when an edit rearranged the software around us. Another, subtler piece of magic, would trace the source of the edits back through the computer architecture to their various sources. A third brief spell string was designed to hide the second and drag us invisibly along in its wake.
That done, we settled in to wait. The first act didn’t take long—the edit war was burning fast and hot. Change ripped through the datascape, moving around all of the sensors we’d conjured. It happened at the speed of light, far too fast for me to register anything more than a before and after. But the sensors were another matter. They showed us the exact place where the new code had first appeared.
We made a note and placed a new suite of monitoring spells aimed at that entry point to the subsystem. Then we reset the other sensors and went back to waiting, repeating the process until we’d gathered data for the whole cycle and all the way back to the first revert we’d measured.
This time, we had sensors waiting within the point of entry and were able to backtrace the command source quite a distance through the system. Over the next six hours, we created a steadily expanding map of the edit war that included considerable information about the places where the different versions of the data architecture originated. There were three loci of control. We labeled them “Shara?,” “Virus-X,” and “WTF?!?!?”
The “Shara?” trail led back into the security systems we knew were inhabited and controlled by Shara. Or possibly, the pseudo-Shara—Melchior felt that while the code tasted kind of like what he would expect from Shara, there were enough significant anomalies that he couldn’t say for sure. We put that one aside for the moment.
We also put aside the “WTF?!?!?” path for now since it was going to be a nightmare to examine in any depth. It looked more like an environmental side effect of the hardware than any coherent code locus. It didn’t seem to enter from one point and trace back to a distinct part of the system so much as spontaneously ooze out of about a million places where the software interacted with the firmware and various bits of chip structure. I’d never seen anything in the computer world that looked less centralized or more like old-fashioned chaos magic. I had no trouble imagining why Shara had had such problems trying to figure out where the hell it was sourced.
The “Virus-X” path was the most interesting to me as a hacker and cracker. These days I think of myself mostly as a white hat, someone who finds the loopholes in code and exploits them for the betterment of the multiverse. Or, if I’m going to be more honest, I should perhaps call myself a gray hat. I will crack things just because I can, but I’m no longer likely to use the opportunity to inflict uncalled-for damage when I do that, either to the system or its owner’s ego.
I know that most of the great powers don’t see me that way. To them, I’m a black-hat cracker, nasty and subversive, in the game to destroy and turn things to my advantage. I have to admit, I do use many of the same tools that a black hat might. I know a lot about the dark side of the coder’s world because it’s where I came from, and if I were still a black hat and intent on the subversion or destruction of Necessity, I’d have approached the problem exactly as Virus-X had.
There was no way to locate its initial entry point to Necessity as a whole, but it seemed mostly to be hiding out in the Input/Output channels governing communication between the millions of servers that made up the mind of Necessity. That position in the network’s I/O path let it control the flow of information, making it virtually impossible for anything internal to the system to see it or root it out. It was a bit like seizing control of the synapses of a human brain so that the neurons that actually did all the processing could think only what you wanted them to think.
It was nasty and clever and just the way I’d have done things given the openings I could see. Virus-X’s methods were disturbingly familiar on subtler levels, too. Small twists and turns that exploited already-existing code in preference to writing new stuff, along with an off-the-cuff feel, closely mirrored the operating techniques I preferred. In so many ways, Virus-X had approached things as I might have, which led to the obvious question of who thought that much like I did?
The next time it moved, so did we. For the twenty minutes that followed, Melchior and I played the digital equivalent of red-light, green-light with Virus-X, moving only when we could be pretty sure it wasn’t looking, while still trying to stay right on its backside through a dozen sectors of the system. Eventually, we had it backtracked to a place within the kernel of the OS. Since my Fury blade provided me with absolute access to the entirety of Necessity’s internal domain, we were easily able to follow Virus-X as far as an outer ring of defenses it had erected around its own core.
The OS for Necessity is huge and hardworking, the cyberspace equivalent of really massive city like Tokyo or Mumbai, with about a kazillion lines of interlocked code running flat out all the time. The intruder had usurped a fairly small corner of that space and secured the hell out of it. Picture an American embassy in the heart of a really hostile country—razor wire everywhere, walls within walls, multiple layers of mirrored glass on the windows to baffle spying devices, and all kinds of countersurveillance software constantly scanning the surrounding codescape. Got that? Now translate it into something optimized for dealing with threats in three dimensions. It looked a bit like a giant stainless-steel coconut with razor-wire fuzz.
I had no doubt it was crackable. Everything is, even biometrics if you handle them right, but this wasn’t going to be easy, and a close look around the neighborhood told me we’d have to use a subtle approach rather than brute force. Virus-X was sitting smack in the middle of the control package that governed the powers of the Greek pantheon—like a steel shotgun pellet lodged in the living heart of Necessity. One wrong move, and you’d have a fatal bleed-out. We couldn’t afford to panic it.
Its positioning told me a number of things. First, Virus-X was playing for control, not destruction. If it wanted to kill Necessity as a functioning system, it could already have done so. Second, it knew it might be discovered and wanted to force any opposition to be very cautious. Nobody who wished Necessity well would take a shot at this thing unless they were damn sure they’d get it right the first time. It also suggested that Virus-X wanted to be in a position to kick over the game board if it looked like it might lose. That last was more intuition, based on what I might do in its place, than deduction, but it felt right.
Once we’d finished a series of exquisitely careful loops around the place to get a feel for how Virus-X was tied into the surrounding codescape, we settled in for my least favorite part of the hacking-an
d-cracking routine: waiting and watching. What made it particularly difficult this time was that I didn’t dare delegate any of the watching and waiting to a set of autonomous programs. Virus-X was nasty on a platter, and I wouldn’t trust anything less adaptable than me to watch it until I had a much better idea of the parameters of any potential active security.
That turned out to be a wise choice. After we’d been there about twenty-five minutes, Virus-X
moved. The timing was perfect, hitting just at the point in time where I could no longer maintain maximum wire-trigger awareness without having the top of my skull come off. It struck in the exact instant that I finally started to relax a little—like a gut punch coming at the end of an exhale. Bastard!
Virus-X went from apparently static to sprouting about ten thousand autonomous security bots in an instant. It looked like an exploding pincushion, with pinheads in every color of the spectrum. Before any could hit us, Mel wrapped me in his tail and took off. We spent the next forty or fifty seconds dodging and jinking like a moth that’s accidentally flown into a bat convention. Several hundred probes came in our general direction, some moving straight, some spiraling, some making sudden random changes of direction, and all of them potentially deadly.
Nothing without a real brain and significant experience in avoiding getting caught or killed by nine kinds of lethal software could have avoided the onslaught. Even with that experience, there was a good deal of luck involved in keeping out of the way of the probes. Then, just as suddenly as the hail of hostile bots had begun, it stopped, and the whole thing went back to looking completely inert.
“That was gangs of fun,” Melchior panted, as we settled back into our little hideaway. “Good exercise.”
“There’s nobody here you need to look brave for, buddy. That scared the hell out of me, too.”
He grinned. “Just trying to make a little lemonade.”
Time passed. Tightly wound nerves slowly relaxed. Nothing happened. More time passed. VirusX sent a fresh round of revert commands off to the contested subsystem we’d tracked it from—
nothing for us to worry about. Relaxation turned into boredom and inattention after something on the order of an hour. Then, wham! Bot storm. Again, we managed to evade the bots, though only just. We returned to our lookout.
Time pas—Kablooie! This swarm came within a few minutes of the last, while we were still in the immediate postadrenaline crash. The thing was vicious.
But Melchior had finally begun to get a feel for the movements of the bots, and we were able to rely more on skill than luck in our evasive maneuvers. It was still an ugly game, but one I thought we could reliably win going forward.
“Hey, Mel, I’ve got a question for you,” I said, when we’d caught our breath again. “I’m thinking bot storms would make great cover for any number of other activities. Could you run a playback of the last one?”
“Sure, though it’s going to be pretty sketchy. I was kind of absorbed with the whole not-gettinghit-and-dying thing.”
He held one hand in the air and conjured a ball of light above it. Within the net he had no need to rely on the beam projectors built into the eyes and mouth of his physical self. Images formed in the ball. They were grainier than usual and prone to sudden turns and twists as Mel’s dodges changed the orientation of his primary sensors. Watching them, I got the sense of an overarching pattern to the whole thing but simply didn’t have enough data to really tease it out.
“I feel like there’s something important going on there,” I said after a second playback, “but this just isn’t enough for me to pinpoint it. Next time around, why don’t you let me drive while you focus on getting a better picture of the swarm.”
Mel nodded and shrank himself from giant anaconda proportions into something in the neighborhood of a garter snake. Next, I shifted into Raven form for maximum mobility, and he coiled himself around my ankle. Then we settled in to wait.
When the next round started, it was my turn to flit and float and flutter like a mad thing. Actually, having seen what worked best for Melchior, it really wasn’t that crazy, just strenuous and nerve-wracking. Afterward, we went over the replay. Once. And again. And . . . There!
“Freeze it, Mel. Look here, here, and here.”
I touched three of the bots in Mel’s projection. Though it wasn’t something anyone would likely have spotted in the middle of playing Don’t Perforate Me with the swarm, there were subtle differences in the way the trio moved. Both in terms of a moment-to-moment motion and overall course.
“Unless I’m wrong, those bots are bound for an intersection maybe a subjective half mile farther out from Virus-X headquarters than our present location.” Mel expanded the scope of his projected sphere, and I poked a finger at a new spot. “Right about here.”
More waiting and watching. Whoopee!
“What’s it doing?” Melchior asked.
“Good question,” I said as I reverted to my own shape.
We were a hell of a long way from where we’d started—well beyond the bounds of Necessity proper—in one of the mweb proxy servers housed in the Temple of Fate, if I was any judge of things, and that made me very nervous. It was an older system, which registered on my meatspaceoptimized senses as a series of interconnected tunnels of the sort one might find in a coal mine.
We’d followed a set of the atypical security bots to a point where they’d merged into one much larger piece of software, which had then led us here. The program, which looked rather like a huge plunger, was now doing something very strange while we watched from behind a large pillar. The thing had stuck itself to one wall of the codespace and started to pulse rapidly, looking for all the world like an invisible plumber trying to clear a really big clog.
Melchior let go of my ankle and flitted up to wrap around my shoulder. “It’s thumping out a binary signal of some sort, but not in any language I’ve ever heard.”
After perhaps a minute of sending, the plunger collapsed in on itself and dissolved. Much sooner than I probably should have, I crossed to the area where it had been working. I found a very faint ring where the program had clung to the wall. I leaned in for a better look.
“Don’t touch it,” admonished Melchior. “You don’t know what it’s for.”
“And I’m not likely to ever find that out if I don’t check.”
I put my hand in the exact center of the circle and felt the faintest crackle of magic. Harmless. I leaned my forehead against the stone to get a stronger read. It reminded me of nothing so much as the faded echoes of a long-dead faerie ring. But that didn’t make any sense. There was no way to open a faerie ring into any part of the mweb. The two magics were fundamentally incompatible. I’m very good with faerie rings, and I’d tried it more than once over the years. It simply couldn’t be done.
“What are you finding?” asked Melchior.
I told him, and he shook his head, too. “You’re right. Can’t be done. Can we give up and go home now? We’ve been at this for ten hours straight, and we haven’t gotten much further than Shara did.”
I tapped the edge of the circle. “This is important, Mel. I’m sure of it.”
But I was getting tired, too, and this really didn’t make sense. I turned around and leaned against the stone within the circle, closing my eyes and hoping for inspiration.
“You realize,” said Melchior, “that this is the moment where something would have grabbed us and pulled us through the circle, or you would have triggered a secret panel, if life were a movie, the which depending on whether it’s a horror or a farce. Of course, that would also give us a direction to follow, so it wouldn’t be all bad.”
We waited silently for a good five minutes. Nothing happened. We were getting nowhere at the ongoing cost of who knows how much damage to the fragile stuff of reality. I sighed and gently began to knock the back of my head against the wall. We really needed a break.
Every time my head connected with the stone I got a little flash of whatever
magic the circle held, incredibly faint but also steady rather than fading over time. Thump. Flash. Thump. Flash. It still felt like a faerie ring, and that still didn’t make any sense. Thump. Flash. Thump. Flash. Wait a second. Maybe it didn’t make sense because I was looking at it the wrong way. I turned back around to face the wall, putting both hands on the edge of the circle and leaning my forehead against its exact center.
“You got something, Boss?”
“It feels like a faerie ring.”
“We’ve already done that one,” he replied. “It’s not going to fly.”
“I don’t know,” I muttered. “What would happen if you built a faerie ring, a really tiny one, into the surface of a CPU chip?”
Melchior frowned at me. “I imagine that it would allow very small things to move from the surface of the CPU to other faerie rings elsewhere and vice versa. What’s that got to do with anything?”
“How do you suppose that ring would feel to someone standing inside the processor? Virtually. Say that you entered cyberspace and went to the exact place within the hardware where the ring was closest. Would there be some sort of resonance?”