Keamanan Microsoft Office: Objek Tertanam



Awalnya, arsitektur Microsoft Office dibangun berdasarkan konsep dokumen komposit, mereka juga dokumen OLE , secara aktif dipromosikan oleh Microsoft pada awal Windows 32-bit. Pada masa itu, gagasan "menggabungkan" data berbagai format dalam satu dokumen tampak menggoda dan mempesona, dan sebelum mengidentifikasi masalah pertama, ia berhasil tumbuh dengan kuat menjadi banyak produk skala besar.

"Berita buruk" adalah bahwa cara universal untuk menambahkan data (dan kode untuk memproses data ini) ke dalam dokumen telah menjadi cara universal untuk memperkenalkan kerentanan dalam produk, yang saat ini masih menghadirkan kejutan yang menyenangkan bagi pencipta peneliti keamanan malware .

Selanjutnya, paket aplikasi menerima seperangkat alat yang cukup kaya untuk menambahkan gambar, grafik dan bagan, elemen kontrol yang dibuat dan diproses oleh aplikasi dan merupakan bagian dari itu dalam dokumen. Dari sudut pandang keamanan, elemen-elemen ini sedikit kurang menarik daripada elemen yang (terutama) akan dibahas dalam artikel - elemen yang menggunakan kode aplikasi eksternal yang ditambahkan ke dokumen menggunakan OLE.

Representasi "disk" dari dokumen gabungan adalah file CFBF . Artikel ini akan membahas penyematan objek dalam dokumen Microsoft Office (atau lebih tepatnya, hanya aspek keamanan) dalam konteks data dan kode yang dimuat ke dalam memori saat runtime.

Objek yang disematkan secara formal dalam dokumen Microsoft Office dapat dibagi ke dalam grup berikut:

  • Kontrol ActiveX (Kontrol ActiveX)
  • Objek Tertanam OLE
  • File Tertanam ( Paket )
  • Elemen Inline Non-OLE

Kontrol ActiveX


Kontrol ActiveX dapat direpresentasikan sebagai elemen dari jendela program - misalnya, tombol, tombol radio, daftar, bidang input, dan formulir lainnya - yang dirancang untuk menghasilkan acara tertentu atau merespons acara. Sekali waktu, sepertinya ide bagus untuk membuat elemen kontrol yang universal, dengan kemungkinan digunakan dalam aplikasi apa pun, dan menempatkannya untuk tujuan ini dalam komponen COM .

ActiveX built-in halaman web mewakili pelanggaran keamanan Internet Explorer yang terkenal, langkah-langkah keamanan meningkat dari waktu ke waktu. Browser dari produsen lain segera meninggalkan dukungan ActiveX. Browser Microsoft Edge baru akhirnya berpisah dengan peninggalan masa lalu ini. Namun, menanamkan dalam dokumen Office masih memungkinkan.

ActiveX dalam dokumen dimaksudkan untuk digunakan bersama dengan Visual Basic for Applications . Namun, VBA tidak diperlukan untuk mengunduh dan mengaktifkannya, dan izin pengguna tidak diperlukan untuk mengunduh item dari daftar putih .

Kerentanan dalam yang terakhir sangat berbahaya - pengaturan default yang ditetapkan saat menginstal aplikasi tidak menyiratkan perlindungan terhadap pemuatan elemen-elemen ini, atau peringatan kepada pengguna. Administrator perlu memperketat pengaturan dengan melarang pemuatan kontrol ActiveX apa pun (namun, perhatikan bahwa ActiveX tidak memuat dalam mode Penjelajahan Aman).
Contoh: CVE-2012-0158

Salah satu kerentanan paling berbahaya dalam dokumen Office di 2012 adalah CVE-2012-0158 . Kode pemuatan untuk elemen Microsoft ListView Control 6.0 dari perpustakaan MSCOMCTL.OCX berisi kemungkinan buffer overflow, yang memungkinkan untuk mengganti alamat pengirim dan menjalankan kode arbitrer. Karena item itu ada dalam "daftar putih" ActiveX, pemuatan dimulai segera ketika dokumen dibuka. Kerentanan saat ini diperbaiki, Kontrol ListView masih dianggap "aman".

Menambahkan ActiveX ke dokumen


Untuk menambahkan elemen kontrol ke dokumen Microsoft Office (untuk kemudahan, ambil Word), gunakan antarmuka pengguna untuk membuka tab "Pengembang" (visibilitasnya dikonfigurasikan dalam menu "Opsi Word") dan pilih Kontrol -> Alat dari versi sebelumnya -> kontrol ActiveX. Menu akan menunjukkan serangkaian ikon yang sesuai dengan elemen Microsoft Forms, serta kemampuan untuk memilih ActiveX dari daftar yang terdiri dari elemen yang tersedia dalam sistem yang dipilih berdasarkan sejumlah kriteria.



Daftar yang ditampilkan tidak sesuai dengan set elemen yang sebenarnya dapat dimuat ke dalam dokumen, oleh karena itu tidak dapat dipandu saat mencari elemen yang rentan. Verifikasi multi-level yang canggih dari ActiveX yang diunduh memiliki beberapa tahap, berbeda untuk versi Office dan bervariasi dari pembaruan ke pembaruan, sehingga cara paling pasti untuk memeriksa kemampuan mengunduh adalah dengan secara manual "membuat" file dokumen dengan elemen yang menarik dan mencoba membukanya di Office. Kemungkinan format dokumen dijelaskan di bawah ini.

Presentasi Program


Setiap elemen ActiveX pada dasarnya adalah objek dari salah satu kelas COM yang memenuhi persyaratan tertentu. Elemen dimuat menggunakan subsistem COM, dan kode yang dapat dieksekusi terkandung dalam salah satu modul, yang biasanya "eksternal" untuk aplikasi kontainer. Seperti objek COM lainnya, elemen ActiveX dapat diimplementasikan sebagai DLL, atau sebagai file EXE yang dapat dieksekusi. Dalam kasus pertama, pustaka akan dimuat ke ruang alamat wadah, di kedua - elemen akan diproses dalam proses terpisah, dengan transfer data antara wadah dan objek melalui COM marshaling.

Seperti objek COM lainnya, ActiveX memiliki Antarmuka , Properti, dan Metode .

Antarmuka pada dasarnya adalah seperangkat antarmuka standar yang harus dimiliki kelas ActiveX untuk pemuatan penuh dan interaksi dengan wadah, khususnya, IOleControl dan IOleObject.

Tidak adanya antarmuka yang diperlukan dapat mengurangi fungsionalitas elemen atau mengganggu pemuatannya pada tahap tertentu.
Contoh: CVE-2015-2424
Kerentanan CVE-2015-2424 dikaitkan dengan elemen Kelas TaskSymbol dari perpustakaan mmcndmgr.dll. Elemen itu tidak dimaksudkan untuk digunakan dalam dokumen, dan tidak mengekspor antarmuka IDispatch. Dalam proses memuat elemen, prosedur yang meminta antarmuka ini menerima kesalahan dan menghancurkan struktur internal elemen, yang menyebabkan kerentanan tipe penggunaan-setelah-bebas. Saat ini, item tidak diperbolehkan untuk diunduh (meskipun demikian, item tersebut masih dapat ditemukan dalam daftar untuk ditambahkan ke menu "Pengembang"). Kerentanan itu sendiri tidak terselesaikan.
Selain yang standar, setiap kelas ActiveX mengekspor antarmuka "utama", yang mewakili fungsi uniknya sendiri. Misalnya, untuk Formulir kelas. PerintahButton.1, ini adalah ICommandButton.

Anda dapat melihat antarmuka ActiveX menggunakan alat OleView yang termasuk dalam paket Microsoft Visual Studio.



Antarmuka elemen mendefinisikan Metode dan Properti . Properti mewakili beberapa data yang menentukan penampilan dan operasi suatu elemen. Pengembang elemen ActiveX memberikan nama spesifik untuk setiap properti, misalnya BackColor atau GridLineWidth, dan tipe, misalnya string, integer, atau presisi ganda nyata. Untuk gambar dan ikon bitmap, ada jenis properti seperti gambar. Program klien dapat mengatur masing-masing properti kontrol dengan menetapkan indeks dan nilai integernya.

Dari sudut pandang implementasi tingkat rendah, pembagian ke dalam metode dan properti bersifat formal, karena โ€œpropertiโ€ diwakili oleh seperangkat metode get / set. Namun, ada perbedaan yang signifikan: Metode elemen (antarmuka utamanya) hanya bisa disebut secara programatis, dalam hal dokumen Office, hanya dari program VBA yang sedang berjalan. Dari sudut pandang keamanan, ini tidak menarik, karena eksekusi VBA sudah merupakan kompromi dari sistem operasi. Properti disimpan dalam dokumen dan ketika dibuka, mereka akan diproses dan dimuat ke dalam struktur dalam memori bahkan jika eksekusi VBA dilarang .

Dari sudut pandang perangkat lunak, pada bagian elemen, untuk mempertahankan properti dan statusnya dalam dokumen, wadah menyediakan antarmuka IStream , IStorage, dan IPropertyBag . Implementasi dan penyajian data dalam file disk tidak lagi menjadi perhatian elemen ActiveX, dan sepenuhnya tergantung pada wadah dan format dokumen. Perlu dicatat bahwa set dan format data yang disimpan dapat sesuai dengan set properti yang diekspor secara publik, atau mungkin sangat berbeda. Pertimbangkan contoh implementasi yang terkait dengan Microsoft Office.

File gabungan (CFBF)


Format dokumen Office yang sudah ketinggalan zaman , di mana penyimpanan tingkat rendah ObjectPool dan subdirektori terpisah di dalamnya dialokasikan untuk menyimpan data ActiveX. Aliran "\ 001CompObj" berisi pengidentifikasi kelas, yang pada akhirnya menentukan kelas objek yang dimuat. Mengganti pengenal secara langsung dalam hex akan menghasilkan upaya untuk memuat objek dari kelas yang sama sekali berbeda .



Office Open XML


Format dokumen XML modern. File ini adalah arsip zip. Data kontrol ActiveX disimpan dalam subdirektori ActiveX dalam file dengan nama sederhana seperti activeX1.xml.



File contoh:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ax:ocx ax: classid="{D7053240-CE69-11CD-A777-00DD01143C57} " ax: persistence="persistPropertyBag" xmlns:ax="http://schemas.microsoft.com/office/2006/activeX" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<ax:ocxPr ax:name="Caption" ax:value="CommandButton1"/>
<ax:ocxPr ax:name="Size" ax:value="2540;847"/>
<ax:ocxPr ax:name="FontName" ax:value="Calibri"/>
<ax:ocxPr ax:name="FontHeight" ax:value="225"/>
<ax:ocxPr ax:name="FontCharSet" ax:value="204"/>
<ax:ocxPr ax:name="FontPitchAndFamily" ax:value="2"/>
<ax:ocxPr ax:name="ParagraphAlign" ax:value="3"/>
</ax:ocx>


Dalam file-file ini, pengidentifikasi kelas ditunjukkan dalam bentuk teks. Mengganti pengenal juga akan menyebabkan upaya memuat elemen kelas lain.

Selanjutnya, file tersebut berisi indikasi jenis penyimpanan data objek: persistPropertyBag, persistStorage, atau persistStream. Jika sebuah elemen mendukung properti persistPropertyBag , datanya dapat disimpan dalam file teks yang sama , lihat contoh di atas. Jika ia membutuhkan penyimpanan atau aliran biner , data akan disimpan dalam file dengan nama tipe activeX1.bin, yang merupakan file CFBF .



RTF


Dalam dokumen rtf, elemen ActiveX didefinisikan oleh tag \ object \ objocx . Tag \ objdata berisi toko properti elemen sebagai representasi hex dari file CFBF.

{\object\objocx\f37\objsetsize\objw1440\objh480{\*\objclass Forms.CommandButton.1}
{\*\objdata 010500000200000016000000
466f726d732e436f6d6d616e64427574746f6e2e31000000000000000000000e0000
d0cf11e 0a1b11ae1000000000000000000000000000000003e000300feff090006


Unduh dari file


Proses memuat ActiveX dari dokumen secara keseluruhan cukup sederhana. Aplikasi kontainer menciptakan objek bersih dari kelas yang ditentukan, meminta antarmuka penyimpanan yang ditentukan dari itu, dan menyediakan pointer ke penyimpanan, aliran, atau "paket properti".

Memfilter item yang dapat dimuat memiliki banyak langkah. Pertama-tama, kelas yang ditentukan dalam daftar hitam yang dikenal sebagai Office COM Kill Bit (petunjuk registri * OFFICE_KEY * \ Common \ COM Compatibility) dihilangkan. Misalnya, flag anti-unduhan memiliki kelas seperti Microsoft Scriptlet Component dan Microsoft Web Browser.

Kelas yang tersisa akan melewati pemuatan awal. Ini berarti bahwa DLL akan dimuat ke dalam aplikasi wadah, atau proses server COM yang diterapkan dalam file EXE akan diluncurkan . Hanya setelah itu sisa pemeriksaan akan dilakukan, termasuk yang elementer - dan apakah objek tersebut, pada kenyataannya, adalah perwakilan ActiveX.
Contoh: CVE-2015-6128
Pada 2015, peneliti menemukan bahwa modul COM preloading dapat digunakan untuk mem-bypass ASLR dan mengeksekusi kode arbitrer dengan memuat pustaka dinamis palsu. CVE-2015-6128 yang dirilis kemudian bukan berita tentang Microsoft Office.
Jika pengenal benar-benar menentukan ActiveX, itu akan melalui beberapa pemeriksaan lagi dalam beberapa daftar hitam dan putih.

Daftar boot ActiveX dari .docx pada clean Windows 7 dan Office 2016 pada pengaturan default.
{00024522-0000-0000-C000-000000000046} RefEdit.Ctrl
{02AF6DD2-77E6-44DF-B3E1-57CF1476D8EA} Microsoft Forms 2.0 OptionButton
{04082FC6-E032-49F2-A263-FE64E9DA1FA3} Microsoft Forms 2.0 HTML TEXT
{0B314611-2C19-4AB4-8513-A6EEA569D3C4} Microsoft Slider Control, version 6.0
{13D557B6-A469-4362-BEAF-52BFD0F180E2} Microsoft Forms 2.0 HTML TextAREA
{19FED08E-EFD1-45da-B524-7BE4774A6AEE} Microsoft Forms 2.0 ListBox
{20DD1B9E-87C4-11D1-8BE3-0000F8754DA1} Microsoft Date and Time Picker Control 6.0 (SP4)
{227B1F3B-C276-4DE0-9FAA-C0AD42ADDCF0} Microsoft Forms 2.0 HTML RESET
{232E456A-87C3-11D1-8BE3-0000F8754DA1} Microsoft MonthView Control 6.0 (SP4)
{3D0FD779-0C2D-4708-A9BA-62F7458A5A53} Microsoft Forms 2.0 ToggleButton
{444D2D27-02E8-486B-9018-3644958EF8A9} FieldListCtrl.2 Object
{4C599241-6926-101B-9992-00000B65C6F9} Microsoft Forms 2.0 Image
{5052A832-2C0F-46c7-B67C-1F1FEC37B280} Microsoft Forms 2.0 Label
{5512D110-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML SUBMIT
{5512D112-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML IMAGE
{5512D114-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML RESET
{5512D116-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML CHECKBOX
{5512D118-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML OPTION
{5512D11A-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML TEXT
{5512D11C-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML Hidden
{5512D11E-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML Password
{5512D122-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML SELECT
{5512D124-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML TextAREA
{556C2772-F1AD-4DE1-8456-BD6E8F66113B} Microsoft ImageList Control 6.0 (SP6)
{585AA280-ED8B-46B2-93AE-132ECFA1DAFC} Microsoft StatusBar Control 6.0 (SP6)
{5CBA34AE-E344-40CF-B61D-FBA4D0D1FF54} Microsoft Forms 2.0 HTML CHECKBOX
{5E90CC8B-E402-4350-82D7-996E92010608} Microsoft Forms 2.0 HTML OPTION
{603C7E80-87C2-11D1-8BE3-0000F8754DA1} Microsoft UpDown Control 6.0 (SP4)
{6240EF28-7EAB-4dc7-A5E3-7CFB35EFB34D} Microsoft Forms 2.0 ScrollBar
{65BCBEE4-7728-41A0-97BE-14E1CAE36AAE} Microsoft Office List 16.0
{6C177EBD-C42D-4728-A04B-4131892EDBF6} Microsoft Forms 2.0 ComboBox
{787A2D6B-EF66-488D-A303-513C9C75C344} Microsoft Forms 2.0 HTML Password
{79176FB0-B7F2-11CE-97EF-00AA006D2776} Microsoft Forms 2.0 SpinButton
{86F56B7F-A81B-478d-B231-50FD37CBE761} Microsoft Forms 2.0 CommandButton
{87DACC48-F1C5-4AF3-84BA-A2A72C2AB959} Microsoft ImageComboBox Control, version 6.0
{8B2ADD10-33B7-4506-9569-0A1E1DBBEBAE} Microsoft Toolbar Control 6.0 (SP6)
{8BD21D10-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 TextBox
{8BD21D20-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 ListBox
{8BD21D30-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 ComboBox
{8BD21D40-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 CheckBox
{8BD21D50-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 OptionButton
{8BD21D60-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 ToggleButton
{9432194C-DF54-4824-8E24-B013BF2B90E3} Microsoft Forms 2.0 HTML SUBMIT
{95F0B3BE-E8AC-4995-9DCA-419849E06410} Microsoft TreeView Control 6.0 (SP6)
{978C9E23-D4B0-11CE-BF2D-00AA003F40D0} Microsoft Forms 2.0 Label
{9A948063-66C3-4F63-AB46-582EDAA35047} Microsoft TabStrip Control 6.0 (SP6)
{9BDAC276-BE24-4F04-BB22-11469B28A496} Microsoft Forms 2.0 HTML IMAGE
{A0E7BF67-8D30-4620-8825-7111714C7CAB} Microsoft ProgressBar Control, version 6.0
{CCDB0DF2-FD1A-4856-80BC-32929D8359B7} Microsoft ListView Control 6.0 (SP6)
{D7053240-CE69-11CD-A777-00DD01143C57} Microsoft Forms 2.0 CommandButton
{DCA0ED3C-B95D-490f-9C60-0FF3726C789A} Microsoft Forms 2.0 Image
{DD4CB8C5-F540-47ff-84D7-67390D2743CA} Microsoft Forms 2.0 TextBox
{DFD181E0-5E2F-11CE-A449-00AA004A803D} Microsoft Forms 2.0 ScrollBar
{E9729012-8271-4e1f-BC56-CF85F914915A} Microsoft Forms 2.0 CheckBox
{EA778DB4-CE69-4da5-BC1D-34E2168D5EED} Microsoft Forms 2.0 SpinButton
{EAE50EB0-4A62-11CE-BED6-00AA00611080} Microsoft Forms 2.0 TabStrip
{F14E8B03-D080-4D3A-AEBA-355E77B20F3D} Microsoft Forms 2.0 HTML SELECT
{F8CF7A98-2C45-4c8d-9151-2D716989DDAB} Microsoft Visio Document
{FB453AD8-2EF4-44D3-98A8-8C6474E63CE4} Microsoft Forms 2.0 HTML Hidden
{FDEA20DB-AC7A-42f8-90EE-82208B9B4FC0} Microsoft Forms 2.0 TabStrip
{FE38753A-44A3-11D1-B5B7-0000C09000C4} Microsoft Flat Scrollbar Control 6.0 (SP4)

Anda dapat melihat bahwa tempat yang signifikan dalam daftar ditempati oleh komponen grup Microsoft Forms . Ini adalah satu set kontrol yang datang dengan Office, dan Anda bisa melihatnya di panel kontrol ActiveX. Awalnya, mereka semua terdaftar sebagai "aman," tetapi seiring waktu menjadi jelas bahwa ini tidak demikian untuk elemen individu. Misalnya, elemen Frame memuat ActiveX lain tanpa memeriksa daftar apa pun (dalam versi terbaru ini "diperbaiki", tetapi daftar hitam Frame sendiri berbeda dari Office umum). Untuk alasan ini, beberapa elemen Formulir Microsoft hanya dapat dimuat ke dalam dokumen dengan izin pengguna. Microsoft Forms Frame juga memerlukan persetujuan pengguna (pada pengaturan default), tetapi ia memungkinkan Anda untuk mengunduh beberapa item dari daftar Kill Bit yang tidak dapat dimuat dalam kondisi lain.

Oleh karena itu, jika penyerang berhasil meyakinkan pengguna untuk mengizinkan ActiveX memuat, Frame akan membantunya untuk memperluas persenjataan secara signifikan karena unsur-unsur seperti, misalnya, Browser Web.

Format penyimpanan properti Microsoft Forms sebagian didokumentasikan oleh spesifikasi [MS-OFORMS] .

Selama pemindaian ActiveX, ternyata kumpulan kelas untuk doc, docx dan rtf berbeda, serta daftar berbeda dari ActiveX yang tersedia untuk aplikasi yang berjalan dengan cara biasa dan berjalan dalam mode otomatisasi .

Banyak aplikasi populer melengkapi daftar ini dengan ActiveX mereka sendiri. Jika kerentanan ditemukan, itu akan tercermin dalam buletin terkait dengan aplikasi yang merupakan bagiannya. Namun, satu-satunya cara untuk mengeksploitasi kerentanan mungkin adalah dokumen Office.
Contoh: Flash ActiveX
Flash ActiveX sangat disukai oleh penulis virus karena kerentanannya yang dapat dideteksi secara konsisten dan tempat permanen dalam daftar putih IE dan Office. Kerentanan pertama yang diketahui dalam komponen ini muncul kembali pada tahun 2008, salah satu CVE-2018-4878 terakhir ditutup pada bulan Februari tahun ini. Dengan semakin populernya IE, dokumen Office telah menjadi cara utama untuk mendistribusikan exploit untuk Flash.

Elemen Data OLE Tertanam


Elemen OLE yang diimplementasikan dirancang untuk mengimplementasikan konsep "dokumen dalam dokumen" dengan kemampuan untuk mengedit data di tempat dari berbagai format yang diproses oleh aplikasi lain. Seperti ActiveX, dokumen OLE diimplementasikan berdasarkan COM.

Anda dapat menambahkan elemen OLE ke dokumen Word sebagai berikut: buka tab "Sisipkan" dan pilih Teks -> Objek. Program menampilkan daftar jenis dokumen yang penangan OLE terdaftar. Seperti halnya dengan ActiveX, daftar ini tidak cocok dengan kelas yang benar-benar dapat dimuat sebagai dokumen OLE.



Presentasi Program


Seperti dalam kasus ActiveX, implementasi dokumen OLE diwakili oleh kelas COM yang sesuai, dibuat dalam bentuk DLL atau EXE. Komponen mengekspor antarmuka layanan yang diperlukan, dan negara disimpan dalam dokumen kontainer melalui antarmuka * IPersist.

Dalam dokumen CFBF, data objek OLE disimpan di penyimpanan tingkat kedua ObjectPool. Seperangkat utas umumnya serupa dengan kontrol ActiveX yang sesuai.



Dalam dokumen Open Office XML, data objek OLE disimpan dalam subdirektori embeddings, dalam file penyimpanan CFBF dengan nama jenis oleObject1.bin.



Dalam dokumen RTF, informasi objek disimpan di bawah tag \ object \ objemb \ . Bagian ini juga berisi penyimpanan yang disandikan sebagai representasi hex dari file CFBF.

{\object\objemb\objw8307\objh553{\*\objclass WordPad.Document.1}
{\*\objdata 010500000200000013000000576f72645061642e446f63756d656e742e31000000000000000000000a0000
d0cf11e 0a1b11ae100000000


Format RTF dibedakan oleh fakta bahwa ia mendukung tag \ objupdate , yang menyebabkan aktivasi otomatis elemen, sementara secara default elemen OLE tidak aktif saat dimuat.
Contoh: CVE-2017-11882
Kerentanan CVE-2017-11882 OLE dari komponen Editor Persamaan karena pemrosesan objek dalam proses terpisah memungkinkan operasi yang stabil dan universal. Tag \ objupdate menyebabkan Word memuat komponen yang rentan segera setelah membuka dokumen.
Contoh: Elemen tertanam Excel dengan virus makro
Para peneliti telah menemukan dokumen rtf berbahaya yang tidak menggunakan kerentanan baru. Dokumen berisi beberapa dokumen Excel dengan makro sebagai objek yang disematkan. Perhitungan dibuat berdasarkan fakta bahwa pengguna yang, setelah membuka dokumen beberapa kali berturut-turut, menolak untuk mengeksekusi makro, sebagai akibatnya, โ€œmenyerahโ€ dan memungkinkan eksekusi. Saat ini, tekniknya masih bekerja.


Perbedaan signifikan dari ActiveX dalam hal elemen OLE tertanam adalah bahwa pengidentifikasi kelas ditulis langsung ke file penyimpanan oleh fungsi WriteClassStg. Teknik ini diwarisi sejak dahulu kala, ketika Microsoft dengan antusias mengembangkan konsep "serialisasi" dan penyimpanan objek dengan keadaan mereka dalam format CFBF. Dokumen kontainer juga menyimpan pengenal kelas dari elemen yang diimplementasikan, tetapi objek dari kelas yang ditentukan dalam repositori akan dimuat. Pengidentifikasi ini dapat diganti dengan memaksa aplikasi memuat objek yang tidak dimaksudkan untuk tujuan ini sama sekali.
Dimungkinkan untuk mengedit data elemen, yang dalam kasus tertentu mengarah pada identifikasi kerentanan.

Objek OLE juga menjalani banyak pemeriksaan untuk dapat diunduh, sehingga sulit untuk mendapatkan daftar lengkap item yang berpotensi dimuat. Himpunan elemen yang dapat dimuat sebagai objek OLE berbeda dari daftar ActiveX yang dimuat. Secara khusus, mereka diperiksa pada daftar KillBit yang tidak dimiliki oleh Office, tetapi oleh Internet Explorer (HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Kompatibilitas ActiveX).

OLE dengan tautan


OLE membedakan antara dua mekanisme untuk menyematkan konten dalam dokumen - langsung menyematkan dokumen OLE dan membuat tautan dalam dokumen lain ke dokumen lain. Dalam hal menyematkan objek OLE dengan referensi, dokumen utama berisi indikasi jalur ke file dokumen yang disematkan. Path bisa lokal atau jaringan, atau alamat Internet. Penangan OLE ditentukan oleh ekstensi file, penangan yang sesuai harus terdaftar dalam sistem operasi.
Contoh: CVE-2017-0199
Kerentanan CVE-2017-0199 terdiri dari kemungkinan menambahkan format "objek dengan referensi" hta ke dokumen. Yang terakhir adalah html dengan kemampuan untuk mengeksekusi kode, yaitu sebenarnya file yang dapat dieksekusi. Pawang secara otomatis mengunduh dan mengeksekusi hta, memungkinkan Anda untuk mengeksekusi kode arbitrer ketika membuka dokumen.
Sebelum memperbarui objek tertanam, aplikasi meminta izin pengguna. Dalam hal ini, file diunduh terlebih dahulu, yang dapat berfungsi untuk mengungkapkan informasi tentang pengguna.

File Tertanam (Paket)


Dokumen Office mendukung kemampuan untuk menambahkan file apa pun (Objek -> Buat dari file atau cukup seret dan letakkan ikon file ke dalam bidang edit). Secara teknis, ini diimplementasikan dengan menambahkan elemen Object Packager built-in ke dokumen yang menulis file yang diinginkan ke datanya sendiri. Object Packager memungkinkan Anda untuk mengganti ikon dan tanda tangan file, serta menentukan baris perintah untuk dibuka. Itu dapat menyertakan file "dengan referensi" ketika file dibuka bukan dari penyimpanannya sendiri, tetapi di sepanjang jalur yang ditentukan, termasuk yang satu jaringan .

Baru-baru ini, fungsionalitas Object Packager telah dipotong secara signifikan, dan pada awalnya elemen tersebut dapat menyimpan file apa pun, termasuk yang dapat dieksekusi, tautan, dan bahkan baris perintah. Yang harus dilakukan pengguna untuk memulai konten adalah mengklik dua kali ikon dalam teks dokumen.
Contoh: file dalam isi pesan Outlook
Pesan Outlook, yang juga merupakan dokumen majemuk, memungkinkan Anda untuk menambahkan elemen Object Packager ke badan pesan . Untuk pengguna, elemen tampak seperti gambar yang dipilih secara sewenang-wenang oleh penyerang. Mengklik dua kali pada gambar akan membuka file yang dikemas. Seorang penyerang harus memilih tipe data dari mereka yang belum datang di bawah pengetatan kebijakan keamanan .



Elemen sebaris tidak diterapkan menggunakan OLE


Saat ini, ancaman / kepentingan terbesar dari elemen non-OLE mungkin adalah gambar yang ditambahkan ke dokumen dengan referensi . Ketika sebuah dokumen dibuka dalam mode yang tidak dilindungi, gambar diunduh secara otomatis, yang dapat mengarah pada pengungkapan lokasi dan identitas pengguna yang mengunduh dokumen tersebut melalui proxy anonim atau menerima dokumen rahasia dari pihak ketiga. Teknik ini, khususnya, diimplementasikan dalam alat Scribbles , yang dalam pelayanan dengan intelijen AS.
Pada jaringan area lokal Windows, mengunduh gambar secara otomatis dengan referensi memungkinkan untuk mengeksploitasi kerentanan NTLMRelay . Mekanisme untuk menautkan gambar tidak kompatibel dengan persyaratan keamanan jaringan ActiveDirectory, karena administrator yang menerima dokumen semacam itu pada dasarnya mengeksekusi kode penyerang dengan hak administratif penuh.

Metode keamanan


Apa yang bisa dilakukan? Secara keseluruhan, sedikit.

Metode perlindungan paling efektif terhadap kerentanan pada objek yang disematkan dalam dokumen Office adalah mode tampilan terlindungi . Dalam mode ini, memuat objek dan memuat data dari sumber eksternal tidak termasuk. Sayangnya, transisi ke mode berfitur lengkap membutuhkan tindakan pengguna dasar yang mudah terpancing oleh metode rekayasa sosial.



Kontrol ActiveX dapat dinonaktifkan di pengaturan Pusat Kepercayaan



Perhatikan bahwa ini tidak berfungsi untuk elemen inline OLE.

Source: https://habr.com/ru/post/id423933/


All Articles