
PythonによるMinskyの万能チューリングマシン実装。教育研究用に、任意のコード実行を実証する組み込みエクスプロイト(CVE-2021-32471)を備えています。
これは、Minsky『Computation: Finite and infinite machines』(1967年)第7章で提示された万能チューリングマシンの実装です。
シミュレートされたマシンへのデフォルトの入力は、任意コード実行を達成するエクスプロイトです。
次のコマンドでプログラムを実行します。
$ python3.7 minskys_turing_machine.py
State 19 reading S writing B shifting left resulting in: 00111MYBAAXAAAAAAAXAABAAAAB1000Y01SX0000001X0010110X0100011X0110100Y00 Step 380
A
State 19 reading S writing B shifting left resulting in: 0011M0Y00BX0000000X001000011000Y00SX0000001X0010110X0100011X0110100Y00 Step 721
A
State 19 reading S writing B shifting left resulting in: 001M00Y00BX0000000X001000011000Y00SX0000001X0010110X0100011X0110100Y00 Step 1055
A
State 19 reading S writing B shifting left resulting in: 00M000Y00BX0000000X001000011000Y00SX0000001X0010110X0100011X0110100Y00 Step 1393
A
State 18 reading S writing A shifting left resulting in: 0M0000Y00AX0000000X001000011000Y00SX0000001X0010110X0100011X0110100Y00 Step 1735
A
State 18 reading S writing A shifting left resulting in: M00000Y00AX0000000X001000011000Y00SX0000001X0010110X0100011X0110100Y00 Step 1909
A
Ran out of tape!
ヘルプは次のように表示されます。
$ python3.7 minskys_turing_machine.py -h
usage: minskys_turing_machine.py [-h] [--machine_condition MACHINE_CONDITION]
[--machine_description MACHINE_DESCRIPTION]
[--machine_tape MACHINE_TAPE]
[--verbosity VERBOSITY]
A Universal Turing Machine as described in Minsky, Computation: Finite and
infinite machines, 1967, Chapter 7.
optional arguments:
-h, --help show this help message and exit
--machine_condition MACHINE_CONDITION
The internal state and the currently read symbol. The
default starts in state 00 and the head is scanning a
1.
--machine_description MACHINE_DESCRIPTION
The program of the Turing machine to be simulated.
--machine_tape MACHINE_TAPE
The simulated Turing machine's initial tape. The
default is an exploit that achieves arbitrary code
execution.
--verbosity VERBOSITY
Degree of vebosity, 1-4.
この脆弱性には CVE-2021-32471 が割り当てられており、Pontus Johnson 氏の論文 Intrinsic Propensity for Vulnerability in Computers? Arbitrary Code Execution in the Universal Turing Machine(2021年)で詳細に紹介されています。また、脆弱性とその悪用に関する YouTube の講演 もあります。
エクスプロイトの視覚的シミュレーションは https://intrinsic-propensity.github.io で利用できます。
脆弱性のある Minsky チューリングマシンの別の再実装については、Martín Ugarte のチューリングマシンシミュレータ 向けの Andreas Rozek の仕様 を参照してください。