제1부: 명향편

022화| 버그 고치는 해커

4분 읽기·1,337자·발행됨
버그 고치는 해커

과거의 그가 씨앗을 쓰며 렌더 큐가 89%로 포화된다. 리카는 깨진 구역을 보고 경쟁 취약점을 떠올려, 권한 검사를 우회해 Layer 2 입구를 조회한다.

???

리카는 그 씨앗을 응시했다.

새김 무늬가 1초에 한 번씩 다시 그려졌다.

그는 처음엔 무늬가 무작위로 재조합되는 거라 여겼지만, 20초쯤 본 뒤에야 알아챘다——무작위가 아니었다. 다시 그려질 때마다, 무늬의 어떤 몇 줄이 직전보다 곡률이 조금 더 늘거나, 전환점이 하나 더 늘었다.

마치 누군가가 천천히 그것을 새겨 깎고 있는 것처럼. 한 버전에서, 차례차례 다른 버전 쪽으로 밀어 가는 것처럼.

"넌 그걸 뭘로 고치고 있는 거지." 리카가 조용히 말했다.

평서문이었다.


그는 이때서야 알아챘다.

통로 벽면 결정의 흐르는 빛이, 느려졌다.

원래는 결정 한 덩어리가 밝음에서 완전한 어둠까지 1.6초였다——이건 그가 인스턴스에 막 들어왔을 때 측정한 표준 주기로, 한 층이 클록 하나를 공유했다.

그런데 지금은 이 주기가 1.9초로 변해 있었다.

느려지는 게 균일하지 않았다——어떤 덩어리는 여전히 1.6, 어떤 덩어리는 2.1까지 늘어졌다. 한 층 전체의 박자가 어긋나기 시작했다.

리카는 쪼그려 앉아, 손바닥을 지면 결정에 댔다.

발밑 결정이 밝아지는 속도가 아까보다 느린 게, 그는 느낄 수 있었다. 밝음에서 완전한 어둠까지, 눈대중으로 2.4초.

뇌수정 인터페이스가 떴다.

[Layer 1 시스템 클록 드리프트: +0.8s 평균]
[Render queue 점유율: 89%]
[Source: L.K.S._Core 지속 쓰기 작업]

리카는 이 세 줄을 다 읽고, "89%"를 다시 한 번 응시하며 확인했다.

인스턴스가 버벅거렸다. 렌더 큐가 만재에 다가가고 있었다——한 층 전체의 연산력이 "과거의 그가 씨앗을 쓰는" 이 작업에 90%를 잡아먹히고 있었다.

그는 이런 장면을 수백 번 봤다——어떤 프로세스가 CPU를 과도하게 점유하면, 시스템 전체가 버벅거리기 시작하고, 인터페이스가 깨지기 시작하고, 애니메이션이 프레임을 떨구기 시작한다.

인스턴스가 방어를 안 둔 건 아니었다——89%라는 이 임계값 경고가 있다는 건, 그것이 자기가 곧 터질 거라는 걸 안다는 뜻이었다.

그런데도 그것은 여전히 L.K.S._Core가 계속 쓰도록 두었다.

인스턴스가 이 서명에 부여한 권한에는 상한이 없었다.


"좋아." 리카가 조용히 말했다.

그는 허리를 펴고, 통로 앞쪽을 향해 걸었다.

세 번째 걸음에서 그는 멈춰 섰다.


오른쪽 결정 벽면에 한 구역이 깨졌다.

결정은 부서지지 않았다. 그 작은 한 구역, 대략 30센티미터 사방의 범위가, 렌더링되지 않았다. 결정의 무늬도 보이지 않고, 뒤에 무엇이 있는지도 보이지 않았다.

오직 순흑의 바탕색만 보였고, 그 위에 극히 가는 회색 격자선이 떠 있었다. 한 칸이 대략 1센티미터 사방이었다.

하부 계층 노출.

리카는 이 깨진 구역으로 다가갔다.

뇌수정 인터페이스가 떴다.

[Layer 1 visual buffer: local fault]
[원인: render queue 포화 · 일부 모델 컬링됨]

"컬링." 리카가 조용히 읊조렸다.

렌더 큐가 이미 경계 임계값을 넘어서, 인스턴스가 모든 모델을 다 그려 낼 새가 없자, 어쩔 수 없이 선택적으로 버린 것이었다——시각 우선순위가 낮은 구역은 안 그린 것이다.

이 깨진 구역은 지금 인스턴스의 코드 계층이 직접 노출된 상태였다.

정상이라면 인스턴스는 0.5초 안에 다시 그려 메웠겠지만, 렌더 큐가 아직 89%인 탓에, 이 구역은 좀처럼 메워지지 않았다.


리카는 그 깨진 구역을 보며, 머릿속에 한 장면이 떠올랐다.

대학 때 처음으로 익힌 해킹 수법.

경쟁 취약점——시스템이 감당하지 못할 때, 권한 검사가 건너뛰어질 수 있다. 명령을 시스템이 처리 중인 고우선순위 작업 속에 끼워 넣어, 함께 묻어 들어가면, 시스템은 네가 권한이 있는지 검사할 새가 없다——이 인스턴스가 지금 딱 이 상태였다.

인스턴스는 지금 바로 이 상태였다. "과거의 그"가 연산력의 89%를 차지했다. "지금의 그"——그 자신——관측자 권한——은 저우선순위였다.

하지만 그는 묻어 넣을 수 있었다.

리카는 3초 멈췄다.

그는 머릿속에 명령 하나를 썼다.

인터페이스는 권한 검사를 받게 된다. 그는 직접 생각으로 인스턴스에 외쳤다.

query: Layer 1의 출구는 어디인가.

정상이라면 이 물음을 인스턴스는 거부한다. 관측자에게는 인스턴스 구조를 조회할 권한이 없다.

그러나 지금 인스턴스는 바빴다——

뇌수정 인터페이스가 떴다.

[권한 검사 건너뜀: render queue overflow]
[조회 실행: Layer 1 출구]
[결과: 3개 출구 좌표 알려짐 / 1개 출구 좌표 미상]
[Layer 2 입구 위치: ???]

리카는 그 "???" 줄을 보았다.

인스턴스는 답을 안다. 그런데 답이 "모름"이었다.

뇌수정 인터페이스가 두 번째 줄을 띄웠다.

[Layer 1 잠금 해제 깊이: 3/4]
[인스턴스 진행도: 19.4%]

리카는 이 두 줄을 다 읽었다. 2초간 가만히 있었다.


그러자 인스턴스가 정신을 차렸다.

뇌수정 인터페이스가 세 번째 줄을 띄웠다.

[경고: 미인가 명령 주입]
[출처: ??? · 관측자 ID 불일치]
[반응: ??? · 처리 중]

리카는 "반응: ??? · 처리 중" 이 줄을 보았다.

인스턴스는 방금 누군가 명령 하나를 몰래 끼워 넣었다는 걸 안다. 그런데 그것은 출처를 추적하지 못했다. 리카는 출처가 L.K.S._Core의 쓰기 작업에 덮여 버린 게 아닐까 의심했다.

인스턴스는 지금 자기 자신에게 어떻게 처리해야 할지를 묻고 있었다.


리카는 가볍게 한 숨 내쉬었다.

그는 자기 입꼬리가 살짝 올라가 있는 걸 알아챘다——그는 같은 일을 여러 번 해 봤지만, 오늘 이번은 좀 달랐다. 오늘 이 시스템은, 짠 사람이 그 자신이었다.

"흥미롭군." 그가 조용히 말했다.


【제022화 完 · 인스턴스 내 · Rift Memory Layer 1】

0명의 독자가 이 화에 좋아요를 눌렀습니다

이 작품 업데이트 받기

이메일을 남기면 새 화가 공개될 때 바로 보내드립니다.

관측자 댓글

0건

아직 댓글이 없습니다. 첫 관측자가 되어 보세요.