Satu cara yang mungkin, meskipun akan memakan waktu yang sangat lama dalam praktik, adalah kembali ke akarnya. Pengembangan GNU dimulai pada tahun 1984, dan versi asli Minix (yang digunakan selama pengembangan Linux awal untuk keperluan bootstrap) dirilis pada tahun 1987.
Seluruh jawaban ini didasarkan pada premis Anda bahwa "[Anda] atau orang lain memiliki kemampuan untuk membaca dan memahami kode sumber untuk kelemahan keamanan, sehingga kode sumber akan diperiksa terlebih dahulu sebelum kompilasi", dan bahwa Anda dapat mempercayai hasil analisis seperti itu. . Tanpa itu, jawaban ini mungkin lebih buruk daripada tidak berharga, karena Anda akan menghabiskan banyak waktu tanpa manfaat sama sekali.
Jika Anda dapat menemukan salinan buku Minix asli dengan kode sumber, Anda dapat mengetiknya dari buku itu. Kompilasi, dan kemudian gunakan dekompiler yang berbeda pada sistem yang berbeda untuk memverifikasi bahwa kompiler menghasilkan output biner bahasa mesin yang diharapkan. (Kode ini hanya 12.000 baris, mungkin C, sehingga hal itu memakan waktu tetapi masih masuk akal jika Anda serius tentang proyek semacam itu.) Anda bahkan dapat menulis disassembler Anda sendiri; seharusnya tidak terlalu sulit.
Raih versi tertua dari utilitas GNU yang bisa Anda dapatkan (karena mungkin kode-kode itu lebih sedikit dan lebih sedikit ketergantungan pada perpustakaan eksternal), baca kode, bangun untuk Minix (ini mungkin memerlukan beberapa pekerjaan, meskipun; apa yang Anda lakukan Yang benar-benar ingin dihindari adalah membuat penyesuaian pada kode sumber, karena itu akan membuat penambahan tambalan nantinya sangat rawan kesalahan) dan melalui siklus pembongkaran-verifikasi yang serupa untuk alat-alat GNU. Pada saat itu Anda mempercayai OS dan toolchain, jadi Anda hanya perlu melalui kode sumber di patchset (apa pun yang tidak di patchset sudah dipercaya), tetapi alat tersebut akan tetap sangat primitif dan kasar dibandingkan dengan apa yang Anda gunakan untuk hari ini. Sebagai contoh, jangan mengharapkan sesuatu yang lebih dari fungsionalitas paling dasar dari alat sistem.Baca banyak XKCD.
Pada titik tertentu, Anda akan memiliki sistem yang dapat mengkompilasi dan mem-bootstrap kernel Linux versi awal, seperti yang dilakukan pada awal 1990-an ketika Linux mulai mendapatkan daya tarik di antara para peretas. Saya menyarankan migrasi ke Linux pada saat itu (membangun kembali pustaka sistem dan toolchain terhadap Linux, membangun kernel Linux, boot ke Linux dan mungkin membangun kembali kernel Linux dan GNU toolchain dalam Linux; yang terakhir membuktikan bahwa sistem sekarang mandiri hosting), tetapi sebagian besar terserah Anda. Terus memverifikasi tambalan, menambal kernel, pustaka dan alat GNU dasar, dan membangun kembali sampai Anda mendapatkan versi modern.
Saat itulah Anda memiliki OS dan kompiler dasar tepercaya yang dapat digunakan untuk membangun perangkat lunak modern. Pada saat itu, Anda dapat mengikuti misalnya panduan Linux From Scratch untuk membangun sistem yang mampu melakukan tugas-tugas yang bermanfaat .
Pada titik mana pun sistem "kompiler" tidak dapat dihubungkan ke jaringan dengan cara apa pun (termasuk sebagai VM pada host jaringan); Anda akan berisiko penetrasi melalui komponen berkemampuan jaringan apa pun termasuk kernel. Jika Anda khawatir tentang serangan kompiler Thompson , Anda harus berharap bahwa setiap host VM juga dapat dikompromikan. Gunakan sneakernet untuk mendapatkan kode sumber dan binari dari host fisik tempat Anda mengompil. Harapkan kesulitan mendapatkan dan mematikan file sistem setidaknya sebelum Anda sampai ke titik di mana dukungan penyimpanan massal USB diimplementasikan. Jika Anda benar-benar paranoid, cetak daftar kode sumber dan ketik dengan tangan (dan berharap driver printer dan printer tidak memiliki kode yang sama di dalamnya), atau baca kode pada satu monitor komputer dan ketikkan ke komputer lain secara fisik di sebelah tetapi tidak terhubung.
Ya, ini akan memakan banyak waktu. Tetapi keuntungan dari pendekatan ini adalah bahwa setiap langkah bersifat inkremental, yang berarti bahwa akan lebih sulit bagi apa pun yang berbahaya untuk lolos kecuali itu secara bertahap diperkenalkan selama periode banyak versi; ini karena set perubahan pada setiap langkah relatif kecil dan karenanya lebih mudah untuk dilihat. Bandingkan tambalan dengan changelog dan pastikan Anda dapat menentukan entri changelog mana yang sesuai dengan setiap perubahan dalam kode sumber. Sekali lagi, ini memang mengasumsikan bahwa Anda memiliki kemampuan (mungkin melalui seseorang yang Anda percayai) untuk memverifikasi bahwa perubahan tersebut belum dimasukkan ke dalam basis kode, tetapi harus membuat Anda sedekat mungkin dengan sistem tepercaya sebagai perangkat lunak saja kecuali- Pendekatan firmware bisa.