Institut Teknologi Massachusetts. Kursus Kuliah # 6.858. "Keamanan sistem komputer." Nikolai Zeldovich, James Mickens. Tahun 2014
Keamanan Sistem Komputer adalah kursus tentang pengembangan dan implementasi sistem komputer yang aman. Ceramah mencakup model ancaman, serangan yang membahayakan keamanan, dan teknik keamanan berdasarkan pada karya ilmiah baru-baru ini. Topik meliputi keamanan sistem operasi (OS), fitur, manajemen aliran informasi, keamanan bahasa, protokol jaringan, keamanan perangkat keras, dan keamanan aplikasi web.
Kuliah 1: “Pendahuluan: model ancaman”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 2: "Kontrol serangan hacker"
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 3: “Buffer Overflows: Exploits and Protection”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 4: “Pemisahan Hak Istimewa”
Bagian 1 /
Bagian 2 /
Bagian 3Kuliah 5: "Dari mana sistem keamanan berasal?"
Bagian 1 /
Bagian 2 Profesor Nikolai Zeldovich: selamat siang, saya ingin memperkenalkan Anda kepada tamu kami dari Mitra iSec, yang akan memberi tahu Anda apa keamanan sistem komputer di dunia nyata.
Paul Yang: selamat siang, nama saya Paul Yang, saya lulus dari MIT pada tahun 2004, menerima gelar master di bidang teknik dan ilmu komputer, dan sampai 2010 bekerja di Oracle. Sekarang saya bekerja sebagai direktur teknis di Mitra iSec. Sebelumnya, saya bahkan tidak tahu bahwa perusahaan seperti itu ada. Perusahaan kami bergerak dalam bidang konsultasi di bidang keamanan komputer, pengujian penetrasi (pentesting), keamanan jaringan, kami mempelajari program-program hacker, menemukan berbagai kerentanan dan menghilangkannya.

Saya memutuskan untuk memberi tahu Anda tentang ini karena saya tahu bahwa banyak siswa spesialisasi Anda ingin berkarier di bidang keamanan sistem komputer. Garis besar kuliah hari ini terlihat seperti ini:
- Apa itu kesalahan keamanan?
- hubungan saling percaya;
- contoh kesalahan yang ditemui dalam kehidupan nyata;
- Operasi Aurora
- Stuxnet
- Saya suka berurusan dengan masalah keamanan, apa yang harus saya lakukan?
Mari kita lihat apa yang peneliti pikirkan tentang kerentanan. Saya ingin Anda memahami dari mana kerentanan itu berasal setelah Anda menemukannya. Artinya, Anda harus menemukan apa yang menyebabkannya. Penting untuk memahami bagaimana kerentanan mempengaruhi sistem dan bagaimana mereka berinteraksi dengan komponen lainnya.
Jadi, mari kita mulai dengan melihat kesalahan keamanan apa. Tetapi sebelum kita mulai membicarakan ini, pertama-tama kita mendefinisikan apa arti konsep keamanan itu sendiri.
Ivan Arch berkata: "Suatu sistem aman jika berperilaku tepat seperti yang dimaksudkan dan tidak melakukan hal lain." Sistem menjadi lebih dan lebih kompleks. Jika kita berbicara tentang sistem operasi, siapa yang dapat mengetahui apa yang dimaksudkan untuk dan Apa sebenarnya yang mereka izinkan?
Karena itu, perlu dipelajari semua jenis serangan yang mungkin terjadi. Mengetahui serangan mana yang ada, tujuan keamanan utama dapat dikembangkan. Oleh karena itu, langkah pertama di bidang keamanan haruslah definisi model keamanan dan definisi model ancaman.
Sebagai contoh, pertimbangkan bagaimana TSA menentukan model ancaman. Tujuan keamanan Bandara Internasional Logan adalah untuk mencegah barang-barang terlarang, seperti busa cukur, memasuki pesawat. Model ancaman terdiri dari dua poin:
- Apa cara yang memungkinkan untuk barang terlarang memasuki bandara?
- Di mana "titik masuk" hal-hal ini ke bandara?
Bagaimana Anda bisa membawa barang-barang terlarang melewati keamanan? Bagaimana Anda mencoba menyerang sistem keamanan mereka? Anda dapat membawanya di mana tidak ada cek, menggunakan hak istimewa penumpang VIP, menyembunyikannya di antara hal-hal lain atau menggunakan layanan dari maskapai lain untuk mengirimkan barang-barang terlarang ke bandara.
Saya selalu dikejutkan oleh kenyataan bahwa dalam bagasi Logan yang tiba dari bandara lain tidak terlihat di monitor. Artinya, Anda dapat mengirim substansi atau objek terlarang dari bandara lain, ia akan terbang ke Logan, dan di sana Anda akan menerimanya. Dengan demikian, bandara dengan sistem keamanan yang tidak terlalu ketat adalah ancaman bagi sistem keamanan canggih Logan, dan tidak ada yang dapat dilakukan tentang itu. Oleh karena itu, momen penting dalam membangun model ancaman adalah memahami apa yang Anda lawan secara spesifik. Saya perhatikan bahwa ini tidak mengganggu banyak insinyur dengan baik.
Insinyur membuat kesalahan keamanan dan menemukannya sendiri. Tujuan para insinyur adalah menemukan sebanyak mungkin kekurangan dan meminimalkan kemungkinan menyebabkan kerusakan pada sistem.
Pendekatan untuk mencapai tujuan ini harus sangat teliti - perlu untuk mencakup semua parameter sistem keamanan, atau setidaknya menemukan elemen yang mudah diakses oleh penjahat.
Cara untuk mencapai tujuannya adalah mempelajari kode sumber, menggunakan alat untuk men-debug aplikasi, dan rekayasa. Selain itu, uang diperlukan untuk peralatan dan staf.
Biasanya, pengembang perangkat lunak lebih memperhatikan fungsi dan kemampuan produk mereka, daripada keamanannya. Semua orang membeli perangkat lunak karena kemampuannya, dan bukan karena keamanannya. Oleh karena itu, keamanan selalu tetap di tempat kedua dan pengembang mulai mengurusnya hanya setelah produk rusak oleh penyusup. Biasanya insinyur hanya melihat sebagian kecil dari "mosaik", mereka tidak memperhatikan detail teknis. Bisakah Anda menjawab pertanyaan berapa banyak baris kode Linux 2.6.32, Windows NT4 dan Adobe Acrobat mengandung?
Jawaban yang benar dalam urutan daftar program adalah dari 8 hingga 12,6 juta baris, 11-12 juta dan 15 juta. Memang, biasanya mengejutkan bagi semua orang bahwa Acrobat mengandung lebih banyak baris kode program daripada Linux dan Windows. Dengan demikian, bahkan perangkat lunak yang kami anggap sederhana sangat kompleks dalam kenyataannya.
Kategori orang berikut ini tertarik pada masalah keamanan:
- insinyur
- penjahat;
- peneliti keamanan;
- penguji penetrasi (pentester);
- Pemerintah
- peretas;
- perwakilan dari komunitas ilmiah.
Saya hanya mengidentifikasi 6 kategori, tetapi mungkin lebih dari itu. Pertimbangkan apa yang menarik kategori pertama orang - penjahat.

Tujuan mereka adalah sumber daya yang dapat Anda gunakan untuk mengambil uang orang lain (botnet, CC #, email spam "surat kebahagiaan") dan pada saat yang sama tidak masuk penjara. Untuk mencapai tujuan, mereka menggunakan eksploit hacker terbaru yang mengeksploitasi kerentanan perangkat lunak. Mereka tidak membutuhkan hak akses data, tetapi cukup mencuri mereka menggunakan kerentanan yang ditinggalkan oleh pengembang. Paling sering, kartu kredit dan segala sesuatu yang berhubungan dengannya adalah objek serangan. Oleh karena itu, penjahat mendapatkan akses ke uang orang lain dengan bantuan uang, membeli data dari peretas, atau menggunakan metode pengujian Black Box. Ini adalah metode pengujian untuk perangkat lunak sesuai dengan spesifikasi dan persyaratan fungsional, tanpa menggunakan struktur kode internal atau akses ke database. Dalam hal ini, kode sumber dibongkar menjadi komponen, yang memungkinkan Anda untuk mendeteksi celah dalam perlindungan program.

Teknik ini memungkinkan Anda untuk menembus basis data kartu kredit, "meretas" sistem pembayaran berbagai toko.
Kategori berikutnya adalah peneliti keamanan sukarela, sejenis hacker.

Tujuan mereka adalah untuk membuat masyarakat sadar akan mereka, untuk mempublikasikannya di surat kabar, dan teman-teman untuk menghormati atau mengagumi mereka. Pekerjaan mereka tidak membutuhkan ketelitian, tidak ada yang akan mempermalukan Anda jika Anda belum menemukan kerentanan atau cara untuk mengatasinya. Mereka mendapatkan akses ke sistem keamanan melalui alat amatir dan kontak biasa dengan insinyur yang bekerja di perusahaan keamanan besar atau mengembangkan perangkat lunak, dan pengacara sering bertindak sebagai sumber informasi.
Kategori ketiga yang paling berguna dalam keamanan adalah penguji penetrasi (pentester).

Arti pekerjaan mereka adalah untuk memastikan keamanan pelanggan dan pengguna perangkat lunak. Mereka menemukan kerentanan yang ingin dieksploitasi penjahat sebelum mereka ditemukan oleh penjahat, dan membantu pengembang menghilangkan kerentanan ini.
Ketelitian dari pekerjaan mereka terdiri dalam mencakup semua detail dan nuansa sistem, dalam menemukan tempat-tempat umum yang tidak aman dan kerentanan yang menjadi sasaran gangguan terbesar, tidak diperbaiki atau diretas.
Untuk melakukan pekerjaan semacam ini, mereka memerlukan akses ke pengembang, akses ke kode sumber dan semua jenis izin.
Berikut ini adalah pemerintah dari berbagai negara. Keamanan mengkhawatirkan mereka dalam hal serangan, spionase dan melindungi negara mereka sendiri dari tindakan musuh tersebut. Eksploitasi yang andal yang dapat mendeteksi dan mengeksploitasi kerentanan menyediakan pekerjaan mereka, dan untuk mendapatkan akses ke sistem keamanan mereka menggunakan uang, bakat, dan waktu yang dapat mereka beli untuk mendapatkan uang.
Kelompok kedua dari belakang adalah peretas. Ini adalah peretas anonim, aktivitas mereka adalah campuran dari peretasan dan protes terhadap pelanggaran hak untuk secara bebas bertukar informasi apa pun. Ini adalah peretas yang berorientasi sosial, biasanya sistem peretasan bukan untuk pengayaan mereka.

Tujuan mereka adalah melakukan "sesuatu yang baik", dalam pengertian mereka akan kata itu, dan tidak masuk penjara karenanya. Terkadang saya setuju dengan apa yang mereka lakukan, terkadang saya tidak.
Mereka menggunakan eksploitasi paling modern dan menembus sistem keamanan berkat bakat mereka sendiri dan berbagai "tujuan" untuk menerapkan keterampilan mereka. Mereka mengeksploitasi semua kemungkinan kerentanan, dan jika Anda dapat mencuri nomor kartu kredit, mereka akan mencurinya.
Kelompok terakhir adalah perwakilan sains. Ini adalah bidang kegiatan yang menarik di mana Profesor Nikolai Zeldovich bekerja. Ini mengeksplorasi kemampuan jangka panjang dan masalah fungsional program. Orang-orang sains menemukan kelemahan umum dan masalah umum lainnya, misalnya, kesalahan dalam penggunaan firewall atau enkripsi, mencoba membuat perangkat lunak lebih aman. Biasanya mereka memiliki cukup waktu dan bakat untuk penelitian mereka, dan ketelitian pekerjaan mereka dijamin oleh kedalaman pendekatan.
Mereka mendapatkan akses ke sistem keamanan melalui penciptaan hal-hal baru dan Black Box. Ada perbedaan antara perkembangan teoretis dan implementasinya dalam praktik, tetapi sebagian besar mereka bertindak dengan cara yang sama seperti pemerintah nasional, yaitu, mereka terlibat dalam proyek yang sangat ambisius.
Semua kelompok orang ini menggunakan teknik yang sama dan mencari hal yang sama: sistem yang rentan. Jika mereka memiliki akses, mereka meninjau kode sumber, menggunakan wawancara dengan insinyur, atau melakukan pengujian di lingkungan yang terkendali. Jika tidak ada akses, mereka melakukan pengujian Black Box, terlibat dalam teknologi fuzzing (misalnya, memasukkan data acak dan melihat bagaimana sistem bereaksi terhadapnya), membuat salinan teknis dari Reverse Engineering (menggunakan file kode biner) dan melakukan rekayasa sosial.
Banyak sistem perangkat lunak yang kompleks tunduk pada fuzzing, misalnya,
Acrobat Reader yang sama - ia memeriksa kemungkinan buffer overflow menggunakan dokumen tebal yang dibuat khusus dalam format .pdf. Dokumen semacam itu "didorong" ke dalam "Acrobat" untuk memeriksa apakah ia mampu menyebabkan sistem crash.
Rekayasa sosial adalah cara termudah dan tercepat untuk menemukan masalah keamanan dengan meretas akun di jejaring sosial.
Jadi, mari selami pelajarannya dan lihat kerentanan yang kita cari.

Insinyur sering membuat kesalahan tentang bagaimana sistem seharusnya bekerja dan bagaimana mereka akan bekerja setelah penciptaan. Contoh dari kesalahan katastropik dalam perangkat lunak yang menyebabkan kematian orang adalah program untuk alat terapi radiasi
Therac-25 .
Pengoperasian sistem keamanan perangkat yang salah menyebabkan setidaknya 6 orang menerima radiasi dosis besar, dua orang berakibat fatal. Saya akan memberi tahu Anda tentang ini secara umum, tanpa menyebutkan detail dan prinsip pengoperasian irradiator ini.
Perangkat lunak perangkat medis ini menyediakan dua mode penggunaan irradiator. Pertama,
gambar X-Ray , mode hamburan elektron, di mana paparan radiasi minimal, tidak melibatkan penggunaan layar pemfokusan pelindung. Mode
Perawatan Radiasi kedua memberikan mode iradiasi yang kuat di mana area yang terkena terkena sinar radiasi radioaktif terarah dengan kekuatan 25 MeV. Untuk ini, layar fokus pelindung ditempatkan antara pasien dan emitor.
Slide berikutnya menunjukkan bagaimana kode program yang mengontrol operasi firewall terlihat. Anda melihat bahwa dalam satu baris ada data byte tunggal yang mengatakan apakah memasang layar pelindung atau tidak. Jika nilai ini 1, layar dipasang, jika 0, layar dihapus. Masalahnya adalah bahwa di dalam program, ketika memasukkan parameter sama dengan 0, misalnya, jika dokter secara manual menyesuaikan daya radiasi ke 0, nilai radiasi dibagi dengan 0. Karena pembagian dengan 0 adalah operasi yang tidak valid, buffer meluap, program mogok dan kekuatan radiasi secara otomatis mengasumsikan nilai maksimum yang mungkin tanpa adanya pelindung layar.
Di sini, pengembang menggunakan asumsi yang salah bahwa dalam mode Radiation Treatment parameter untuk menggunakan layar pelindung akan selalu mengambil nilai bukan nol, buffer overflow tidak akan pernah terjadi dan program tidak akan pernah gagal.
Sebagai hasil dari asumsi yang salah ini, orang meninggal, karena selama sesi tanpa layar dalam mode Perawatan Radiasi, mereka menerima luka bakar radiasi yang fatal.
Belajar tentang kasus ini, teman sekelas saya berkata: "Saya menyimpulkan sendiri bahwa saya tidak akan pernah menulis perangkat lunak medis."
Prasyarat yang salah untuk pengembangan perangkat lunak bisa sangat berbahaya, misalnya, sistem akun amazon.com.Toko online ini memungkinkan Anda untuk:
- Anda dapat menambahkan kartu kredit atau kotak surat elektronik dengan nama dan alamat fisik ke akun Anda;
- Amazon memberi Anda kemampuan untuk mengubah kata sandi akun Anda melalui kotak surat terdaftar;
- Amazon memungkinkan Anda melihat 4 digit terakhir dari nomor kartu kredit;
- Apple memberi Anda opsi untuk masuk ke akun Anda menggunakan 4 digit terakhir dari nomor kartu kredit Anda;
- Gmail memungkinkan Anda untuk mengubah akun Apple Anda melalui akun Twitter Anda.
Asumsi salah apa yang memungkinkan rantai setan ini terjadi? Kebijakan keamanan yang salah diungkapkan dalam paragraf pertama dan keempat. Ini mengarah pada kesimpulan: komponen-komponen yang mempengaruhi sistem Anda seringkali di luar perhatian Anda (Facebook, Amazon, Apple). Oleh karena itu, penyerang dapat mengendalikan informasi kartu kredit Anda melalui akun di amazon.com, menggunakan kemampuan tiga sistem independen ini. Ini dapat dianggap sebagai model ancaman yang lengkap.
Karena itu, jawab pertanyaan: apakah kata sandi kotak surat pribadi Anda lebih dapat diandalkan atau lebih lemah daripada kata sandi yang Anda gunakan untuk perbankan online?
Saya melihat berapa banyak orang yang mengangkat tangan. Sekarang ambil mereka yang memiliki kata sandi perbankan yang lebih kuat daripada kata sandi surat. Saya melihat ada lebih banyak. Dan ini salah.
Orang-orang percaya bahwa perbankan online adalah masalah serius, dan di sini kita memerlukan kata sandi yang lebih andal. Tetapi mereka lupa bahwa akses ke akun pembayaran dilakukan melalui kotak surat elektronik. Mail harus memiliki kata sandi yang paling dapat diandalkan, dan bukan sebaliknya.
Jika Anda ingin menjadi insinyur yang mengembangkan sistem komputer, Anda harus berpikir seperti yang dipikirkan peneliti keamanan:
- Prasyarat apa yang harus digunakan untuk memastikan keamanan saat mengembangkan desain sistem?
- asumsi mana yang salah?
- Apa yang bisa Anda langgar jika premisnya ternyata salah?
Poin terakhir membantu merancang sistem sedemikian rupa sehingga meskipun sistem macet, kernel Anda akan terlindungi.
Mengelola memori sulit.

Sebagai contoh, saya akan memberi Anda diagram yang disederhanakan dari protokol komunikasi aman:
- menghindari merevisi, atau membangun kembali kontak;
- Alice: "Bob, jika kamu di sini, katakan boo!"
- Bob: "Boo!"
- akibatnya, Alice dan Bob percaya bahwa mereka mengenal satu sama lain dengan sangat baik.
Secara teknis, protokol ini terlihat seperti ini:
- Alice mengirimkan paket berisi ping;
- sebuah paket memiliki panjang data tertentu;
- Bob mengembalikan paket dengan panjang yang sama.
Dalam hal ini, Bob mem-parsing data yang dikirim oleh Alice:

Lihat panjang data dan lokasinya di buffer. Kemudian dia menyiapkan jawaban untuk Alice, menambahkan 2 byte pada panjang permintaan Alice, menyalin panjang baru permintaan Alice sebagai tanggapan, dan mengirimkannya kembali kepadanya:

Apakah Anda melihat masalah di sini? Di mana kerentanan di sini?

Itu terlampir di baris kedua dan keempat dari jawaban Bob. Ukuran data yang dikirimkan oleh pengguna mungkin tidak sesuai dengan ukuran sebenarnya dari data tersebut.
TSL Establishment Protocol menggunakan
protokol enkripsi
SSL terbuka. Beginilah kira-kira 60% server yang tersedia di Internet berfungsi. Bob, yaitu server, tidak pernah memeriksa panjang aktual data yang diterima. Karena server menambahkan 2 byte, pengguna dapat membaca sekitar 64 KB data memori server, termasuk kunci pribadi.
Sekarang kita telah menemukan kesalahan ini, bagaimana kita memperbaikinya? Semakin banyak orang mengetahuinya, semakin besar kebocoran informasi. Oleh karena itu, segera setelah informasi tentang kerentanan diungkapkan, mereka akan segera memanfaatkannya. Jadi, untuk perlindungan perlu untuk memperbaiki situasi sesegera mungkin.
Terkadang perusahaan berpaling kepada kami dan mengatakan bahwa mereka telah menemukan kerentanan seperti itu dan bagaimana cara memperbaikinya. Kami menjawab mereka: "Tidak mungkin, Anda hanya perlu segera mengubah kunci enkripsi." Oleh karena itu, sangat penting untuk memantau perbedaan yang terjadi di
Open SSL selama pertukaran data.
,
TSL , , .
, , , « », , .
, . , .

2014
Yahoo , . Java-, 6 .
, java-,
Magnitude XSS .
Magnitude « »
Yahoo , - 30 2013 3 2014 27000 . .
java- «click-to-play» Chrome.
Confused Deputy – . .
Cross-Site Request Forgery (
CSRF XSRF ), « ». , .
Microsoft . ,
Cashier as a Service . , «foo…», , .
: ,
CaaS -. . .

, - , . , $10
CaaS 123. «» : « $10 TxID:123».
CaaS : « ». : «». .
- , ? ? , , ! 3 4, , , . , , – $10 $1, .

, , - , . : , , .
.
, . , «» «», . , , , , . , .
, . , . , . , , . - . , .
.

, , .
Cloud To Butt Plus Chrome . .
, , ,
java- Flash-player , . .
www.isecpartners.com , , , .
, -, - . «» .
, ,
Google , . . , . : «, $10000»! , -, . , , . , Chrome 2014 , .
, . , :
. , ? .
1password LastPass Mask Me ? .
1password , «»
HTTP . , .
LastPass ,
Mask Me ,
1password . , , , .
, , . :
- HTTP HTTPS;
- iframes;
- - ;
- ();
- .
HTTP HTTPS . , .
SSL stripping «» .
,
https:// example.com http:// example.com . , .
Mask Me , , , .
33:35
:
Kursus MIT "Keamanan Sistem Komputer". 5: « », 2.
, . ? ? ,
30% entry-level , : VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps $20 ? ( RAID1 RAID10, 24 40GB DDR4).
Dell R730xd 2 ? 2 Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 $249 ! . c Dell R730xd 5-2650 v4 9000 ?