"Koki, kita punya lubang keamanan!"
- Yah, setidaknya ada sesuatu yang aman dengan kami ...Halo, Habr!
Dalam komentar
ke posting sebelumnya tentang InoThings ++, mereka menyatakan pendapat bahwa di Internet of Things ada area yang lebih penting untuk diskusi daripada intervensi pemerintah - ini adalah area untuk memastikan keamanan perangkat. Dari semua sudut pandang.
Saya dapat berdebat di sini hanya dengan satu hal - bahwa diskusi tentang masalah keamanan harus diadakan dalam format meja bundar; untuk alasan ini, kita akan meninggalkan meja bundar sebagaimana adanya, pada kebutuhan (atau tidak perlu) standar nasional dan, secara umum, campur tangan pemerintah dalam industri, tetapi kita akan berbicara tentang keamanan secara terpisah.
Mengapa keamanan secara umum dianggap dalam IoT sebagai sesuatu yang terpisah dan spesifik, tidak seperti keamanan dalam sistem TI klasik?
Ya, secara umum, karena sistem IoT mirip dengan yang klasik hanya pada bagian pengguna yang melihat gambar-gambar indah di layar monitor atau mengontrol bola lampu dari smartphone - tetapi di dalam, pada level rendah, mereka sama sekali, sangat berbeda.
Dan, sayangnya, kami masih menelan banyak kali dengan penulis produk yang tidak memahami perbedaan dalam pendekatan dan masalah.
“Internet of things” adalah, pertama dan terutama, sebuah kisah tentang perangkat yang terjangkau, murah, ringkas, ekonomis, dan karenanya sangat masif terhubung ke jaringan data lokal atau global.
Apa artinya ini dalam praktik?
• Umumnya
koneksi nirkabel . Dalam kawat kami percaya, tentu saja, hanya kawat yang mahal; mereka yang membuat rumah pintar kabel mengerti bahwa ini berarti perombakan besar dengan peletakan tegangan rendah di semua sudut. Dan jika kawat itu tidak bisa dipasang sama sekali?
Sebenarnya, perkembangan IoT yang cepat dimulai dengan munculnya koneksi nirkabel yang murah, ekonomis dan jarak jauh - dari rumah Wi-Fi dan BLE ke LoRaWAN, Sigfox, NB-IoT dan sebagainya. Koneksi yang memungkinkan menjenuhkan ruang tertentu dengan sensor tanpa mengganggu daya dan koneksinya.
Namun, radio tidak hanya kenyamanan, tetapi juga kutukan. Jika untuk terhubung ke kabel, tetangga perlu membuka kunci di pintu Anda, maka mereka tidak hanya "mendengar" rumah nirkabel Anda hampir selalu, tetapi juga bisa macet, atau bahkan memalsukannya.
• Sebagai aturan,
mode operasi yang sangat
ekonomis dari saluran radio - perangkat tanpa catu daya yang konstan harus dilindungi oleh baterai. Menyimpan di saluran radio menghasilkan fakta bahwa memperbarui firmware perangkat melalui udara sama sekali tidak mungkin, atau tidak berarti karena fakta bahwa satu episode dari pembaruan menghabiskan puluhan persen dari baterai yang tersedia.
Dengan demikian, kualitas awal kode dan protokol memperoleh signifikansi yang sangat tinggi - jika ada lubang fatal yang ditemukan di dalamnya, pabrikan, tentu saja, akan dapat mengunggah file baru ke situs webnya, tetapi tidak akan ada artinya di dalamnya.
• Biasanya,
daya rendah ,
prosesor daya rendah . Sensor IoT tipikal saat ini dibangun di atas prosesor kelas dari STM32L0 ke yang lebih muda STM32L4, dan hanya karena keterbatasan dalam memori dan daya pemrosesan (serta saluran radio, lihat di atas) mungkin tidak menarik otorisasi rumit, otentikasi dan skema perlindungan lainnya . Selain itu, daya rendah juga dapat berarti kurangnya memori "ekstra" yang diperlukan untuk memperbarui firmware melalui udara - saluran radio yang tidak dapat diandalkan berarti ketidakmampuan untuk memutar firmware secara langsung ke flash "langsung", dan mungkin tidak ada memori untuk menyimpannya di area terpisah dengan penulisan ulang berikutnya dari firmware yang berfungsi berikutnya .
Dan di atas semua ini, massa dan di mana-mana melebarkan sayapnya - yang dalam praktiknya berarti pemilik tidak memiliki kontrol yang efektif atas akses ke perangkat.
Ketika Anda memiliki empat perangkat Wi-Fi di rumah Anda - router, laptop, dan dua smartphone - masalah kehilangannya tidak terlalu akut, karena tidak ada satupun yang merupakan insiden yang bisa dibuang.
Ketika Anda memiliki tiga atau empat lusin bola lampu pintar, sakelar, sensor suhu, dan iblis di rumah Anda apa lagi - Anda kemungkinan besar akan mengirim yang lain hangus atau hanya bola lampu tua ke tempat sampah tanpa berpikir bahwa ia terus menyimpan kunci dengan andal dalam flash Anda. dari jaringan wifi Anda.
Selain itu, jika kita tidak berbicara tentang skala apartemen, tetapi situs pondok, hotel atau pabrik - Anda bahkan tidak mengontrol akses ke perangkat IoT. Siapa pun dapat melepaskan bohlam lampu Anda, tiriskan kunci akses darinya dan putar kembali dalam waktu setengah jam - dan Anda bahkan tidak akan menyadarinya.
Perangkat dapat dikloning. Anda dapat membaca kunci dan sertifikat dari perangkat. Firmware yang dimodifikasi dapat diunggah ke perangkat.
Pertanyaannya di sini bukanlah bahwa semua ini tidak dapat dilakukan dengan router Wi-Fi - itu mungkin, tentu saja. Masalahnya adalah transisi dari kuantitas ke kualitas: dengan peningkatan eksponensial yang dijanjikan dalam jumlah perangkat IoT, serangan seperti itu menjadi bermakna dan dapat direalisasikan. Faktanya, cerita dengan kamera IP diulangi - sementara ada beberapa, tidak ada yang berpikir bahwa kamera dengan lubang yang sama dalam firmware akan cukup masuk akal untuk menulis skrip yang mengumpulkannya ke dalam botnet raksasa yang dapat membanjiri GitHub dengan Twitter
Bagaimana itu berakhir -
Anda semua tahu .
Dalam keamanan informasi klasik, diyakini bahwa jika penyerang mendapat akses fisik penuh ke perangkat yang dilindungi - yah, secara umum, ini bukan akhir, tetapi semuanya buruk. Dalam IoT dalam konteks ini, "semuanya buruk" - ini bukan hasil dari tindakan jahat seseorang, tetapi kondisi permanen dan awal sistem.
Masalah keamanan dalam IoT bukan masalah besok. Ini masalah hari ini. Jika Anda tidak menyelesaikannya, besok itu tidak akan menjadi masalah, tetapi bencana.
Di InoThings ++, kami, antara lain, tidak diragukan lagi ingin membicarakan hal ini juga - dan bagaimana menjelaskan kepada pengembang bahwa IoT membawa model ancaman yang sama sekali baru, dan berbicara tentang apa yang harus dilakukan tentang hal itu.
Saya akan menyajikan beberapa laporan.
Laporan pengantar tentang masalah perlindungan perangkat IoT dan ancaman baru khusus untuk IoT, dengan analisis undang-undang dan rekomendasi Rusia yang telah dikeluarkan - yang belum menjadi persyaratan - dari organisasi asing, termasuk
NIST ,
ENISA ,
IIC , dan
lainnya (tautan dengan nama bukan hanya tautan, tetapi ke dokumen yang relevan - Saya benar-benar merekomendasikan untuk membacanya jika Anda ada hubungannya dengan pengembangan perangkat IoT).
Laporan ini hanya harus dimiliki untuk integrator dan pengembang yang baru saja memasuki pasar IoT dan belum sepenuhnya menyadari konsekuensi yang mungkin terjadi dari ini. Tidak ada pilihan di sini - ini adalah hal-hal yang Anda tidak bisa tidak tahu tentang keberadaan, dan jika Anda tidak memahaminya hari ini, besok mungkin berakhir dengan malapetaka bagi Anda dan bisnis Anda, yang Anda tidak punya waktu untuk mempersiapkannya.
Sama sekali bukan laporan teknis, tetapi juga laporan penting - bahwa kita sekarang hidup dalam masa yang bahagia, ketika setiap produsen dapat membisikkan ke dalam perangkatnya apa yang diinginkan hatinya, dan tidak akan ada apa pun baginya.
Lebih tepatnya, tentang fakta bahwa saat ini akan segera berakhir - kebutuhan untuk perubahan legislatif terkait dengan IoT dan perangkat pintar secara umum telah matang, dan industri masih akan menerima GDPR-nya di sini.
Langkah pertama (perlu, tetapi tidak cukup) untuk keamanan sistem IoT adalah menulis kode yang dapat diandalkan. Salah satu cara untuk meningkatkan keandalannya adalah dengan mematuhi standar yang dikembangkan dalam industri yang beberapa dekade lebih tua dari IoT - misalnya, standar kualitas kode MISRA C "otomotif".
Kepatuhan dengan MISRA C dan penggunaan penganalisa kode statis saja, tentu saja, tidak menjamin Anda keandalan mutlak - namun, itu dapat menyelamatkan Anda dari sejumlah kesalahan yang cukup besar, mulai dari kecerobohan dangkal, salin-tempel, dan kesalahan ketik. Sayangnya, praktik penulisan kode yang dapat diandalkan sangat jarang menyebar di antara programmer yang tertanam - dan saya berharap Philip akan menginspirasi setidaknya beberapa peserta konferensi untuk mencoba menerapkan praktik-praktik ini dalam pekerjaan mereka.
Cara lain untuk meningkatkan keandalan kode adalah alih-alih mendorong pemotretan di kaki Anda sendiri dan seleksi alam lainnya dari bahasa tipe C, beralih ke bahasa yang semula dianggap lebih dapat diandalkan dan tidak memungkinkan Anda membuat banyak kesalahan (sekarang saya menulis dengan semua tanggung jawab, sebagai pribadi, kemarin pukul dua di malam hari, menangkap peristiwa stack overflow yang terjadi pada saat-saat acak, kadang-kadang setelah puluhan menit operasi firmware aktif).
Namun, seberapa cerah prospeknya, berkabut dan hadir dari bahasa-bahasa tersebut - misalnya, Rust, kandidat utama untuk peran standar masa depan di bidang perangkat lunak tertanam, untuk sebagian besar programmer yang dipraktikkan termasuk dalam kategori "Saya dengar, itu keren, tapi untuk apa saya punya sekarang?". Ini terutama difasilitasi oleh kurva hype tradisional, di mana Rust berjalan - naik ke puncaknya, secara terbuka tidak siap untuk penggunaan praktis yang serius, setelah itu banyak pengembang hanya berhenti memantau nasib masa depannya.
Jadi, pada kenyataannya, dalam laporan itu, Eugene akan memberi tahu Anda apa nasib Rust saat ini, mengapa itu sudah dapat dianggap sebagai bahasa yang berfungsi dan berapa kilometer ujung saraf yang akan dikenakan biaya untuk menggunakannya di sini dan sekarang.
Dan akhirnya, sebuah laporan yang sepenuhnya praktis - tentang apa yang diperlukan untuk memastikan kepercayaan pada perangkat Anda, jika Anda telah menginstalnya beberapa ratus keping, dan pada saat yang sama tahu pasti bahwa setiap saat setidaknya beberapa lusin dari mereka berada di dalam lemari, bahwa Anda lupa untuk mengunci dan di mana setiap saat siapa pun dapat masuk, menggabungkan firmware dan mengisinya dengan sesuatu seperti perangkat yang sama, tetapi bukan milik Anda, tetapi itu.
Selain itu, tidak cukup untuk mengontrol perangkat ini - mereka harus terlebih dahulu digunakan, yang dari sudut pandang otentikasi juga bisa menjadi tugas yang agak tidak penting.
InoThings ++ 2019
Jadi, semua laporan ini - serta banyak laporan lainnya - dapat didengar di konferensi InoThings ++, dan apa yang sangat berharga tidak hanya untuk didengar, tetapi untuk mengakhiri pidato mereka dan membawanya di sela-sela untuk melanjutkan pembicaraan. Sebenarnya, inilah yang membuat kunjungan langsung ke konferensi teknologi berharga - melihat rekaman kinerja atau album pada tayangan slide setengah tahun kemudian, Anda tidak dapat bangun dan meminta lebih banyak detail pada saat itu, membawa pembicara ke secangkir kopi untuk berbicara lebih detail tentang proyeknya, dan seterusnya dan seterusnya.
Karena itu, ayo. Tiket
saat ini harganya 15 ribu rubel , dan percayalah, untuk konferensi tingkat ini dan dengan pembicara seperti itu - ini sangat sederhana.
