- Framework sabotase tak terdokumentasi yang dibuat pada 2005, dirancang untuk menambal kode di memori pada perangkat lunak komputasi tertentu agar mendistorsi hasil numerik
svcmgmt.exe secara lahiriah tampak seperti service wrapper, tetapi di dalamnya memuat mesin virtual Lua 5.0, bytecode terenkripsi, DLL pendukung, dan driver fast16.sys untuk mengeksekusi payload per tugas secara terpisah
fast16.sys adalah driver filesystem boot-start yang dimuat pada tahap sangat awal, lalu memilih .EXE yang dibangun dengan Intel C/C++ compiler dan melakukan patch memori di tingkat kernel
- Mesin patch bekerja dengan 101 aturan, dan khususnya meninggalkan jejak yang menargetkan alat komputasi khusus seperti rekayasa sipil, fisika, dan simulasi proses dengan menggunakan blok instruksi FPU untuk mengubah penskalaan nilai array internal
- Jika digabungkan dengan penanda
fast16 dari kebocoran ShadowBrokers, terlihat bahwa sabotase industri presisi pada era sebelum Stuxnet sudah ada dalam bentuk gabungan embedded scripting, penargetan sempit, dan patch kernel
Ikhtisar dan petunjuk identifikasi
fast16 adalah framework sabotase siber tak terdokumentasi dengan komponen inti dari 2005, di mana fast16.sys secara selektif menargetkan perangkat lunak komputasi presisi tinggi, menambal kode di memori, dan mendistorsi hasil perhitungan
svcmgmt.exe secara lahiriah tampak seperti service wrapper umum pada era Windows 2000/XP, tetapi di dalamnya memuat mesin virtual Lua 5.0 dan kontainer bytecode terenkripsi yang dibuka oleh service entry point
- Dalam proses penelusuran malware berbasis Lua, magic byte bytecode
1B 4C 75 61, byte versi, LUA_PATH, dan C API khas menjadi petunjuk, dan dalam alur itu svcmgmt.exe berhasil diidentifikasi
- String
C:\buildy\driver\fd\i386\fast16.pdb di dalam svcmgmt.exe menjadi petunjuk forensik yang menghubungkan executable layanan dengan proyek driver kernel
- Dalam kebocoran ShadowBrokers 2017
drv_list.txt, nama fast16 yang sama juga muncul, sehingga string PDB svcmgmt.exe dan driver untuk sabotase presisi dapat disatukan dalam satu alur
- Signature penghindaran dari pihak ShadowBrokers mencakup frasa
fast16 *** Nothing to see here – carry on***
Struktur carrier dan cara eksekusi
svcmgmt.exe dirancang sebagai carrier adaptif yang mengubah perilaku berdasarkan argumen command line
- Tanpa argumen: dijalankan sebagai layanan Windows
-p: mengatur InstallFlag = 1 lalu dijalankan sebagai layanan
-i: mengatur InstallFlag = 1 lalu mengeksekusi kode Lua
-r: mengeksekusi kode Lua tanpa flag instalasi
- Selain itu
<filename>: beroperasi dalam mode Wrapper/Proxy yang membuat dua child process, yaitu perintah asli dan perintah yang ditambahi argumen -r
- Penyimpanan internalnya berisi bytecode Lua terenkripsi, DLL pendukung, dan driver
fast16.sys
- Lingkungan Lua diperluas melampaui kondisi default, dengan menyediakan modul
wstring, fungsi kripto simetris bawaan b, serta modul binding untuk API Windows NT filesystem, registry, kontrol layanan, dan jaringan
- Binary carrier eksternal dijaga relatif stabil, sementara payload per tugas dipisahkan dalam bentuk terenkripsi agar dapat digunakan ulang sesuai lingkungan dan sasaran operasi
- Nilai identifikasi
svcmgmt.exe adalah sebagai berikut
- Nama file
svcmgmt.exe
- Ukuran
315,392 bytes
- MD5
dbe51eabebf9d4ef9581ef99844a2944
- SHA1
de584703c78a60a56028f9834086facd1401b355
- SHA256
9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
- Tipe
PE32 executable for MS Windows 4.00 (console), Intel i386
- Link time
2005-08-30 18:15:06 UTC
Struktur propagasi wormlet dan penghindaran
svcmgmt.exe bertindak seperti carrier munisi klaster yang dapat memuat beberapa wormlet, dan pada sampel yang terkonfirmasi hanya terdapat satu SCM wormlet
- Alur eksekusinya berlanjut dari persiapan konfigurasi, konversi wide string, eskalasi hak istimewa, instalasi dan start layanan
SvcMgmt, deployment kondisional fast16.sys, pelepasan wormlet, jeda awal, hingga eksekusi berulang sampai ambang kegagalan atau kondisi penghentian eksternal tercapai
- SCM wormlet menargetkan lingkungan Windows 2000/XP, lalu mencari server jaringan dengan memanfaatkan file share yang dipasang dengan kata sandi admin yang lemah atau default, menyalin payload, dan memulai layanan jarak jauh
- Propagasi dilakukan bukan lewat protokol jaringan kustom, melainkan dengan mengandalkan fungsi administrasi standar Windows seperti service control API dan file share API
- Sebelum instalasi,
ok_to_install() memanggil ok_to_propagate() untuk memeriksa lingkungan, dan jika tidak ada pemaksaan manual, kelayakan propagasi ditentukan berdasarkan keberadaan registry key dari produk keamanan tertentu
- Jika salah satu registry key berikut ada, instalasi dihentikan untuk menghindari deployment ke lingkungan pemantauan
HKLM\SOFTWARE\Symantec\InstalledApps
HKLM\SOFTWARE\Sygate Technologies, Inc.\Sygate Personal Firewall
HKLM\SOFTWARE\TrendMicro\PFW
HKLM\SOFTWARE\Zone Labs\TrueVector
HKLM\SOFTWARE\F-Secure
HKLM\SOFTWARE\Network Ice\BlackIce
HKLM\SOFTWARE\McAfee.com\Personal Firewall
HKLM\SOFTWARE\ComputerAssociates\eTrust EZ Armor
HKLM\SOFTWARE\RedCannon\Fireball
HKLM\SOFTWARE\Kerio\Personal Firewall 4
HKLM\SOFTWARE\KasperskyLab\InstalledProducts\Kaspersky Anti-Hacker
HKLM\SOFTWARE\Tiny Software\Tiny Firewall
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Look n Stop 2.05p2
HKCU\SOFTWARE\Soft4Ever
HKLM\SOFTWARE\Norman Data Defense Systems
HKLM\SOFTWARE\Agnitum\Outpost Firewall
HKLM\SOFTWARE\Panda Software\Firewall
HKLM\SOFTWARE\InfoTeCS\TermiNET
connotify.dll berperan sebagai kanal pelaporan minimal
- Didaftarkan melalui API Windows
AddConnectNotify() dan dipanggil setiap kali koneksi jaringan baru berbasis RAS dibuat
- Mendekripsi string yang diobfusksi untuk memperoleh named pipe
\\.\pipe\p577, terhubung ke pipe lokal, mencatat nama koneksi jarak jauh dan lokal, lalu berhenti
- Bukan modul eksekusi mandiri dan memerlukan registrasi oleh proses host
- Nama file
svcmgmt.dll
- Ukuran
45056 bytes
- MD5
410eddfc19de44249897986ecc8ac449
- SHA1
675cb83cec5f25ebbe8d9f90dea3d836fcb1c234
- SHA256
8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
- Link time
2005-06-06 18:42:45 UTC
- Tipe
PE32 DLL (i386, 4 sections)
Struktur driver dan metode patch memori
fast16.sys adalah komponen paling kuat dalam framework ini, dikonfigurasi sebagai boot-start filesystem driver sehingga dimuat pada tahap sangat awal bersama driver disk
- Konfigurasinya adalah
Start=0, Type=2, grup kelas SCSI, dan menyisipkan dirinya di atas NTFS, FAT, MRxSMB
- Pada masuk awal, ia mengatur nilai
EnablePrefetcher di bawah Session Manager\PrefetchParameters menjadi 0 agar permintaan code page berikutnya melewati seluruh stack filesystem
- Dengan enkripsi string XOR sederhana dan pemindaian
ntoskrnl.exe, ia menyelesaikan API kernel secara dinamis dan mengekspos \Device\fast16, \??\fast16, serta DeviceType kustom 0xA57C
- Dengan
IoRegisterFsRegistrationChange, ia menempelkan worker device object di atas perangkat filesystem yang aktif maupun yang baru, lalu membypass IRP_MJ_CREATE, IRP_MJ_READ, IRP_MJ_CLOSE, IRP_MJ_QUERY_INFORMATION, IRP_MJ_FILE_SYSTEM_CONTROL dan jalur Fast I/O terkait
- Meski dimuat saat boot, mesin injeksi kode level kernel yang sesungguhnya baru aktif setelah
explorer.exe dibuka
- Target patch harus memenuhi dua syarat sekaligus
- nama file berakhir dengan
.EXE
- tepat setelah header section PE terakhir terdapat string ASCII yang dapat dicetak dan diawali dengan
Intel
- Kondisi ini menargetkan file executable yang dibangun dengan Intel C/C++ compiler, menunjukkan bahwa pelaku mengetahui toolchain perangkat lunak target
- Pada file yang cocok, diterapkan modifikasi header PE di memori, menyuntikkan dua section baru yaitu
.xdata dan .pdata, serta mengisi byte section kode asli untuk mempertahankan salinan kode yang bersih
- Nilai identifikasi
fast16.sys adalah sebagai berikut
- nama file
fast16.sys
- ukuran
44,580 bytes
- MD5
0ff6abe0252d4f37a196a1231fae5f26
- SHA1
92e9dcaf7249110047ef121b7586c81d4b8cb4e5
- SHA256
07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
- tipe
PE32 executable for MS Windows 5.00 (native), Intel i386, 5 sections
- link time
2005-07-19 15:15:41 UTC
Mesin patch berbasis aturan dan karakteristik target
- Mesin patch terdiri dari 101 aturan, sebuah pemindai minimalis berbasis status, yang secara diam-diam mengubah kode eksekusi di memori melalui pencocokan pola dan logika penggantian saat file dibaca dari disk
- Untuk menjaga performa, ia memakai dispatch array 256-byte untuk cepat menyaring sebagian byte awal, mengizinkan wildcard di dalam pola, dan beberapa aturan mengatur serta memeriksa state flag untuk menjalankan urutan modifikasi bertahap
- Sebagian besar pola patch menyesuaikan urutan instruksi umum pada kode x86 yang membajak atau memengaruhi alur eksekusi, tetapi satu di antaranya terdiri dari blok instruksi FPU yang jauh lebih besar
- Blok FPU ini adalah kode khusus untuk aritmetika presisi dan penskalaan nilai array internal, menunjukkan sifat yang berbeda dari injeksi berbahaya pada umumnya
- Para peneliti mengubah aturan patch menjadi pola heksadesimal signature YARA dan menerapkannya pada korpus perangkat lunak sezaman; file yang cocok dengan dua atau lebih pola sangat sedikit, kurang dari 10
- File yang terkena secara umum adalah alat komputasi bidang khusus seperti teknik sipil, fisika, dan simulasi proses fisik
- Patch FPU mengubah perhitungan secara halus dengan menskalakan nilai yang diteruskan ke tiga array internal, menunjukkan bahwa tujuannya bukan akses tanpa izin atau penyebaran umum, melainkan manipulasi hasil numerik
- Karena binary target yang tepat dan workload-nya belum semuanya teridentifikasi, makna array tersebut belum dapat dipastikan sepenuhnya
- Sabotase semacam ini bisa gagal jika perhitungan diverifikasi pada sistem terpisah, tetapi jika driver yang sama disebarkan ke beberapa sistem yang berbagi jaringan dan lingkungan keamanan yang sama, kemungkinan ketidaksesuaian dalam verifikasi independen juga berkurang
- Lampiran memuat sebagian pola hasil ekstraksi dari mesin patch apa adanya
48 89 84 24 9C 00 00 00 4B 0F 8F 79 FF FF FF 00
D8 E1 D9 5D FC D9 04 00
55 8B EC 83 EC 14 53 56 57 8B 3D ?? ?? ?? ?? 8B 0D 00
8D 1D ?? ?? ?? ?? 52 8D 05 ?? ?? ?? ?? 51 8D 15 ?? ?? ?? ?? 8D 0D ?? ?? ?? ?? 53 50 52 51 56 57 E8 ?? ?? ?? ?? 83 C4 38 EB 0E 83 EC 04 00
B9 01 00 00 00 C1 E7 02 8B BF ?? ?? ?? ?? 8B D7 85 FF 8B 55 30 8B 45 30 D8 C9 8B 75 2C 00 9A 8B 00 00 00 1B 00 90 0F 94 C3 0B D8 33 D2 83 3D 00
Kandidat target patch
- Target dengan tumpang tindih hasil pencocokan pola paling kuat adalah LS-DYNA 970, PKPM, dan MOHID
- LS-DYNA 970 adalah perangkat lunak simulasi rekayasa yang menganalisis perilaku material dan struktur dalam kondisi ekstrem, mencakup tabrakan kendaraan, ledakan, benturan, pembentukan logam, dan proses manufaktur, serta digunakan di bidang otomotif, kedirgantaraan, riset pertahanan dan militer, manufaktur, dan ilmu material
- Telah dikembangkan sejak 1976
- MD5
1d2f32c57ae2f2013f513d342925e972
- SHA1
2fa28ef1c6744bdc2021abd4048eefc777dccf22
- SHA256
5966513a12a5601b262c4ee4d3e32091feb05b666951d06431c30a8cece83010
- Ukuran file
5,225,591 bytes
- Waktu link
2003-10-24 16:34:57 UTC
- Tipe file
PE32 executable for MS Windows 4.00 (console), Intel i386, 7 sections
- PKPM adalah rangkaian produk CAD rekayasa struktur yang digunakan secara luas di Tiongkok, terdiri dari berbagai modul eksekusi yang mencakup seluruh siklus desain struktur bangunan
- SATWE adalah mesin inti yang menangani analisis struktur 3 dimensi untuk lantai, balok, kolom, dinding, dan keseluruhan rangka
- Nilai identifikasi modul desain geser beton
- MD5
af4461a149bfd2ba566f2abefe7dcde4
- SHA1
586edef41c3b3fba87bf0f0346c7e402f86fc11e
- SHA256
09ca719e06a526f70aadf34fb66b136ed20f923776e6b33a33a9059ef674da22
- Ukuran file
7716864 bytes
- Tipe file
PE32 executable for MS Windows 4.00 (GUI), Intel i386, 6 sections
- Waktu link
2011-08-26 10:58:17 UTC
- Nilai identifikasi modul Building Structure CAD
- MD5
49a8934ccd34e2aaae6ea1e6a6313ffe
- SHA1
3ce5b358c2ddd116ac9582efbb38354809999cb5
- SHA256
8b018452fdd64c346af4d97da420681e2e0b55b8c9ce2b8de75e330993b759a0
- Ukuran
11849728 bytes
- Waktu link
2005-12-01 08:35:46 UTC
- MD5
e0c10106626711f287ff91c0d6314407
- SHA1
650fc6b3e4f62ecdc1ec5728f36bb46ba0f74d05
- SHA256
06361562cc53d759fb5a4c2b7aac348e4d23fe59be3b2871b14678365283ca47
- Ukuran
16355328 bytes
- Waktu link
2012-07-07 08:47:11 UTC
- Nilai identifikasi mesin analisis struktur SATWE
- MD5
2717b58246237b35d44ef2e49712d3a2
- SHA1
d475ace24b9aedebf431efc68f9db32d5ae761bd
- SHA256
bd04715c5c43c862c38a4ad6c2167ad082a352881e04a35117af9bbfad8e5613
- Ukuran
9908224 bytes
- Waktu link
2011-01-12 06:37:39 UTC
- MD5
daea40562458fc7ae1adb812137d3d05
- SHA1
1ce1111702b765f5c4d09315ff1f0d914f7e5c70
- SHA256
da2b170994031477091be89c8835ff9db1a5304f3f2f25344654f44d0430ced1
- Ukuran
8454144 bytes
- Waktu link
2012-11-29 03:10:12 UTC
- MD5
2740a703859cbd8b43425d4a2cacb5ec
- SHA1
ca665b59bc590292f94c23e04fa458f90d7b20c9
- SHA256
aeaa389453f04a9e79ff6c8b7b66db7b65d4aaffc6cac0bd7957257a30468e33
- Ukuran
16568320 bytes
- Waktu link
2014-12-30 03:23:43 UTC
- MD5
ebff5b7d4c5becb8715009df596c5a91
- SHA1
829f8be65dfe159d2b0dc7ee7a61a017acb54b7b
- SHA256
37414d9ca87a132ec5081f3e7590d04498237746f9a7479c6b443accee17a062
- Ukuran
8089600 bytes
- Waktu link
2009-04-22 01:46:46 UTC
- MD5
cb66a4d52a30bfcd980fe50e7e3f73f0
- SHA1
e6018cd482c012de8b69c64dc3165337bc121b86
- SHA256
66fe485f29a6405265756aaf7f822b9ceb56e108afabd414ee222ee9657dd7e2
- Ukuran
9219072 bytes
- Waktu link
N/A
- Nilai identifikasi file CAD PKPM tambahan
- MD5
075b4aa105e728f2b659723e3f36c72c
- SHA1
145ef372c3e9c352eaaa53bb0893749163e49892
- SHA256
c11a210cb98095422d0d33cbd4e9ecc86b95024f956ede812e17c97e79591cfa
- Ukuran
6852608 bytes
- Waktu link
2012-06-18 10:01:54 UTC
- MD5
cf859f164870d113608a843e4a9600ab
- SHA1
952ed694b60c34ba12df9d392269eae3a4f11be4
- SHA256
7e00030a35504de5c0d16020aa40cbaf5d36561e0716feb8f73235579a7b0909
- Ukuran
8392704 bytes
- Waktu link
2012-11-29 03:10:12 UTC
- MOHID adalah sistem pemodelan badan air open source yang dikembangkan oleh MARETEC dari Instituto Superior Técnico di Lisbon, Portugal, yang mencakup hidrodinamika laut dan pesisir, simulasi kualitas air, perpindahan sedimen, pemodelan tumpahan minyak, dan pelacakan partikel Lagrangian
- Disebutkan bahwa hingga saat ini mereka masih belum dapat mengidentifikasi secara pasti efek serangan yang dimaksud
- MD5
f4dbbb78979c1ee8a1523c77065e18a5
- SHA1
9e089a733fb2740c0e408b2a25d8f5a451584cf6
- SHA256
e775049d1ecf68dee870f1a5c36b2f3542d1182782eb497b8ccfd2309c400b3a
- Ukuran file
5443584 bytes
- Tipe file
PE32 executable for MS Windows 4.00 (console), Intel i386, 3 sections
- Waktu link
2002-10-18 09:29:54 UTC
- LS-DYNA pernah dikutip bersama riset pemodelan komputer terkait pengembangan senjata nuklir dalam laporan terbuka mengenai dugaan pelanggaran JCPOA Section T oleh Iran
Aturan deteksi dan indikator kompromi
-
Indikator kompromi
- Tiga file yang terkonfirmasi adalah fast16.sys, connotify.dll, dan svcmgmt.exe
fast16.sys: MD5 0ff6abe0252d4f37a196a1231fae5f26, SHA1 92e9dcaf7249110047ef121b7586c81d4b8cb4e5, SHA256 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
connotify.dll: MD5 410eddfc19de44249897986ecc8ac449, SHA1 675cb83cec5f25ebbe8d9f90dea3d836fcb1c234, SHA256 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
svcmgmt.exe: MD5 dbe51eabebf9d4ef9581ef99844a2944, SHA1 de584703c78a60a56028f9834086facd1401b355, SHA256 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
-
apt_fast16_carrier
- Dirancang untuk menangkap carrier, payload Lua, dan varian plaintext, dengan hash acuan
9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
- Menggunakan magic bytecode Lua
1B 4C 75 61, serta string build_wormlet_table, unpropagate, scm_wormlet_install, install_implant, start_worm, ok_to_propagate
- Juga memasukkan banyak kunci registri produk keamanan sebagai syarat, seperti
Symantec, Sygate Personal Firewall, Zone Labs\\TrueVector, Kaspersky Anti-Hacker
- Juga mendeteksi pola byte string terenkripsi, dua konstanta sandi, kode dekripsi panjang container penyimpanan, serta signature record penyimpanan yang berisi string
file
- Syarat terpenuhi jika file memiliki header MZ dan berukuran di bawah 10MB, memenuhi salah satu dari: 3
$s*, 12 $rk*, item mana pun dari $e*, penempatan berdekatan dua konstanta sandi, salah satu dari $code1 atau $stor1; atau jika memenuhi magic Lua dan 7 $s*
-
apt_fast16_driver
- Dirancang untuk menangkap driver atau file proyek terkait, dengan hash acuan
07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
- Menggunakan banyak string identifikasi file sumber seperti
@(#)foo.c :, @(#)par.h :, @(#)pae.h :, @(#)ree.c :
- Mencakup pola
\\Device\\fast16, \\??\\fast16, C:\\buildy\\, driver\\fd\\i386\\fast16.pdb, push 0A57Ch ; DeviceType
- Pola API yang mendorong
ExAllocatePool, ExAllocatePoolWithTag, ExFreePool, ExFreePoolWithTag dalam bentuk XOR juga masuk ke dalam signature
- Syarat terpenuhi pada file di bawah 10MB bila bersama header MZ memenuhi salah satu dari: 2 path PDB,
C:\\buildy\\ dan 1 identifier sumber, #devtype == 3, pe.machine == pe.MACHINE_I386, pe.subsystem == pe.SUBSYSTEM_NATIVE, API mana pun dari api*, atau 2 dari dev*; atau saat memenuhi 6 identifier sumber
-
clean_fast16_patchtarget
- Mendeteksi perangkat lunak target patch dan ditandai sebagai
most probably clean, dengan hash acuan 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
- Menggunakan banyak pola byte berurutan dari
$el0 hingga $el99
- Syaratnya adalah file di bawah 20MB, header MZ, dan minimal 2 kecocokan di antara signature yang didefinisikan
-
apt_fast16_patch
- Mendeteksi kode patch itu sendiri, dan bisa ada pada file yang dipatch secara statis atau dump memori
- Hash acuannya adalah
0ff6abe0252d4f37a196a1231fae5f26
- Mendefinisikan tiga pola byte:
$p1, $p2, $p3
- Syaratnya adalah
any of them, sehingga deteksi terjadi meski hanya satu dari tiga pola yang cocok
Silsilah dan implikasi historis
- String
@(#)par.h $Revision: 1.3 $ di dalam biner menjadi petunjuk untuk memperkirakan silsilah framework ini
- Prefiks
@(#) merujuk pada konvensi pengelolaan source keluarga SCCS/RCS di Unix era 1970–1980-an, dan jejak seperti ini jarang terlihat pada driver kernel Windows pertengahan 2000-an
- Artefak semacam ini tampak lebih dekat dengan jejak insinyur senior yang terbiasa dengan budaya dan toolchain Unix lama berkeamanan tinggi, ketimbang pengembang tipikal yang khusus Windows
svcmgmt.exe diunggah ke VirusTotal hampir 10 tahun lalu, tetapi hingga kini tingkat deteksinya tetap sangat rendah, dan hanya satu engine yang mengklasifikasikannya sebagai malware umum dengan tingkat keyakinan terbatas
- Jika digabungkan dengan signature Territorial Dispute milik ShadowBrokers,
fast16 membuat kita perlu meninjau ulang kapan sabotase siber tingkat negara yang sangat tersembunyi ini mulai dikembangkan
fast16 menunjukkan struktur yang konsisten dengan menggabungkan embedded scripting engine, penargetan sempit berbasis compiler, dan patch tingkat kernel lebih awal daripada keluarga yang lebih dikenal luas
- Selama waktu yang lama, hampir tidak ada analisis publik, kampanye bernama, atau kaitan dengan insiden representatif, dan penanda yang bisa dibaca manusia yang tertinggal di dalamnya pun sangat minimal, seperti
*** Nothing to see here – carry on***
- Ini diposisikan sebagai titik penghubung dalam alur evolusi APT yang berlanjut ke toolkit berbasis Lua dan LuaJIT
1 komentar
Komentar Hacker News
Bagian ini terasa sangat menarik
Analogi bahwa notasi SCCS/RCS muncul di kode kernel Windows tahun 2005 itu setara dengan melihat telepon putar di kantor modern terasa cukup meyakinkan
Bahkan lab astrofisika tempat seseorang bekerja pada 2006 masih memakai svn, dan codebase-nya penuh Fortran dengan jejak sistem dari era 70–80an
Meski begitu, semuanya tetap berjalan baik berkat compiler optimisasi modern, dan proses migrasi dari Vax ke Linux pada 90an juga ternyata sangat mulus
Ini mengingatkan pada presentasi lama do over or make due, yang intinya kira-kira bahwa menulis ulang total codebase besar yang masih berfungsi jarang sepadan jika dengan alat modern kita masih bisa menyambungnya agar tetap jalan
Namanya MKS, dan cara kerjanya mengelola pohon revisi tertentu sebagai "project file", rasanya bahkan versi lawas dari 90an, bukan versi yang dibangun ulang dengan Java EE
Di bagian atas file ada tag seperti
$Revision: 1.3 $dan changelog, tetapi banyak file baru bahkan tidak memasukkan tag itu sama sekali sehingga tidak pernah tersubstitusi, dan konsistensinya berantakanKeluarga perangkat targetnya memang dimulai sejak pertengahan 90an, tetapi pada saat itu hampir tidak ada kode yang benar-benar berusia lebih dari 5 tahun
Bahkan dengan jumlah engineer hanya puluhan, konflik commit sering terjadi dan seluruh tree kerap rusak
Iseng-iseng saya menulis skrip untuk membaca seluruh riwayat dan mengimpornya ke git, dan ketika ditelusuri mundur beberapa tahun saja catatannya sudah benar-benar kacau
Saya tidak tahu kenapa mereka masih memakainya saat itu, tetapi perusahaan hardware memang kadang sampai relatif belakangan masih menganggap source control itu sekadar "shared folder jarak jauh", jadi version control untuk software tampaknya bukan prioritas
Garis keturunan itu sampai sekarang masih menjadi fondasi dunia komputasi numerik
Sampai era 2000an pun memang masih ada tempat yang memakai RCS, dan sebagai alat murni ada sisi-sisinya yang bahkan lebih baik daripada SVN atau CVS
Misalnya, mudah dibayangkan fast16 ditulis oleh orang yang tadinya membuat software komputasi ilmiah, sedangkan Stunex oleh orang yang pernah bekerja di Siemens
Jika penyebab awal kenapa kode itu butuh refactoring tetap dibiarkan, pada akhirnya hasilnya akan kembali ke keadaan yang sama
Penyebab seperti itu sering tertanam sangat dalam, sampai ke lapisan psikologis seperti kebiasaan pengembang, keyakinan, atau trauma profesional
Ditambah lagi Hukum Conway, tim pada akhirnya nyaris pasti membangun software yang mencerminkan struktur organisasi yang lebih besar, dan jika organisasinya tidak berubah maka hasil refactoring pun cenderung mengulang pola yang sama
Pengecualiannya biasanya saat mengambil alih codebase tim lain atau kode pendahulu lalu menata strukturnya ulang
Tetapi ketika orang yang sama menyatakan akan merefactor kode mereka sendiri, sering kali hasilnya hanya jebakan tikus lain yang lebih nyaman bagi mereka
Tidak masalah terus menyempurnakan hasil dari pola pikir sendiri, tetapi kalau ingin turun dari komidi putar itu, kita perlu menuliskan penyebab arsitektur buruk dan memeriksa diri sendiri dengan jujur
Seperti yang ingin dipercaya banyak pengembang, gagasan bahwa "asal hati-hati dan tekun, desain yang agak buruk pun bisa diimplementasikan dengan baik" biasanya tidak benar
Pada akhirnya akar masalahnya adalah desain; kita harus menerima pohon yang tumbuh darinya atau menebangnya, karena memangkas cabangnya saja ada batasnya
Tulisan ini terasa cukup mengerikan
Fakta bahwa malware ini berada di bawah radar deteksi selama 20 tahun saja sudah cukup membuat tidak nyaman
Ini tautan unduhan bagi yang penasaran
https://bazaar.abuse.ch/sample/9a10e1faa86a5d39417cae44da5ad...
Saya mungkin akan mulai dengan membuat Windows XP VM dulu
Yang itu tampaknya cuma loader
IEEE-754 hanya mewajibkan pembulatan yang benar untuk +-*/ dan sqrt
Untuk fungsi transendental seperti sin/cos/exp/log/pow, beberapa ULP terakhir memang boleh berbeda, dan glibc, musl, MSVC, serta Intel SVML memang berperilaku seperti itu
PID kebanyakan hanya memakai operasi dasar sehingga lebih sedikit terpengaruh perbedaan libm, tetapi kontrol vektor motor atau linearisasi sensor menyentuh fungsi-fungsi ini di setiap siklus sehingga ketidakcocokan kecil bisa terakumulasi
Karena itu, bahkan tanpa diff source code sama sekali, perilaku di lapangan bisa drift hanya karena libm yang ditautkan berubah
Perbedaan seperti ini benar-benar muncul pada Payne-Hanek argument reduction atau di batas terburuk table-maker's dilemma
Mungkin itu sebabnya panduan sistem kritis-keselamatan tidak cuma menulis "patuh IEEE-754", melainkan mengunci build libm tertentu
Penemuan yang benar-benar luar biasa
Saya sangat penasaran sasaran tepat aturan-aturan ini apa, dan bagaimana persisnya hasilnya diubah
Bisa jadi memang dirancang agar hanya menghasilkan perbedaan pada kondisi simulasi yang sangat spesifik, seperti reaktor nuklir
Misalnya, persamaan EOS_JWL dalam manual publik [1] adalah formula yang diimplementasikan LS-DYNA, dan bila dipakai bersama persamaan lain tampaknya bisa digunakan untuk menghitung hal-hal seperti waktu yang dibutuhkan pemicu hulu ledak rudal untuk meledakkan bahan peledak utama hingga menghasilkan gelombang tekanan tertentu pada jarak 20 m
Hasil itu lalu bisa dibalik untuk memperkirakan timing fuze yang diperlukan
Persamaan dan parameter yang masuk ke LS-DYNA berasal dari riset ilmiah seperti [2], yang merupakan penelitian eksperimen bahan peledak tinggi pemerintah AS pada 1980an
Di dalamnya juga ada eksperimen yang mengukur karakteristik saat bahan peledak bergesekan dengan berbagai material pembungkusnya
Karena persamaan untuk pemodelan bahan peledak sudah tersedia, kalau seseorang mengutak-atik sedikit formula itu dan menambahkan noise ±20% pada koefisien gesek, ilmuwan atau engineer kemungkinan besar akan lebih dulu mencurigai kualitas manufaktur baja ketimbang manipulasi software
Analogi versi modernnya adalah membayangkan sebuah negara musuh memakai salinan bajakan Ansys Autodyn 2026 R1 yang dibobol grup cracking Tiongkok lalu diunggah ke forum Tiongkok, dan mereka mengunduhnya dari segelintir seeder di balik ISP Rusia
Lalu ketika belakangan nilai eksperimen dan hasil perhitungan terus tidak cocok, barulah muncul kecurigaan bahwa salinan bajakan itu sengaja dirusak
Meski begitu, sekarang mungkin lebih mudah bagi negara musuh seperti itu untuk mengambil salinan resmi dari jaringan universitas acak atau perusahaan konsultan dirgantara/pertahanan yang diretas
Menganggap negara musuh pada 2026 tidak akan mampu membuat software itu sendiri dari nol juga mungkin naif, dan mereka pun bisa mencapai hasil yang diinginkan dengan bergantung pada perhitungan manual atau eksperimen
Pada akhirnya, untuk memverifikasi kualitas manufaktur, peralatan dan kemampuan eksperimen memang sejak awal tetap dibutuhkan
Software simulasi terutama hanya membantu mengurangi jumlah pembuatan model dan eksperimen fisik sehingga menghemat biaya dan waktu
Misalnya, menjalankan skenario seperti [3] di mana peluru artileri menghantam pelat baja sebanyak 1000 kali itu murah, tetapi mengulanginya di dunia nyata jauh lebih mahal dan memakan waktu
[1] https://ftp.lstc.com/anonymous/outgoing/jday/manuals/LS-DYNA...
[2] https://www.osti.gov/servlets/purl/6530310
[3] https://www.youtube.com/watch?v=_dv2PecKUBM
Saat orang melihat hal-hal yang saya publikasikan masih menyertakan data revisi RCS, saya berharap mereka setidaknya berhenti sejenak
Buku yang baru-baru ini saya baca adalah Sandworm: A New Era of Cyberwar and the Hunt for the Kremlin's Most Dangerous Hackers, karya Andy Greenberg
Cukup bagus, dan karena informasi baru terus bermunculan, saya rasa mungkin memang perlu seri lanjutan
Melihat Guix dan komputasi yang dapat direproduksi makin bisa dipindahkan bahkan ke PowerPC atau mesin legacy, rasanya pemerintah, lembaga ala 1984, dan beberapa organisasi di Timur Tengah akan benar-benar tidak menyukainya
Semakin heterogen lingkungannya, semakin menguntungkan
Angka kuncinya adalah worm
Pemeriksaan di komputer lain pun tidak berhasil menangkapnya, karena sejak awal memang tidak ada komputer kedua yang bersih
Ini penemuan yang menarik, tetapi komentar soal source control terasa agak meleset
Hal-hal mirip SCCS seperti itu mungkin memang masih tersisa pada masa tersebut, dan sesaat saya juga sempat bingung apakah CVS punya gaya yang mirip
Itu mengisyaratkan para pengembangnya awalnya juga mengerjakan sisi UNIX, karena SCCS/RCS memang umum di sana