Majikan saya meminta saya untuk mengimplementasikan fitur yang akan membutuhkan penyimpanan kata sandi dalam teks yang jelas dalam database (atau menggunakan fungsi enkripsi / dekripsi tersembunyi yang disimpan dalam biner, yang sedikit lebih baik, tetapi juga tidak aman).
Saya menjawab bahwa saya bersedia menerapkan fitur seperti itu, asalkan pelanggan mengetahui implikasi keamanan ketika menggunakannya.
Ketika mendiskusikan masalah ini dengan kolega, seseorang mengatakan kepada saya bahwa, sebagai insinyur perangkat lunak, kami secara pribadi bertanggung jawab (dalam pengertian hukum) untuk masalah keamanan yang kami perkenalkan dalam produk kami. Saya melihat ke dalam kontrak saya, tetapi tidak menemukan sesuatu yang berhubungan dengan kasus serupa.
Dari sudut pandang hukum, haruskah saya menolak untuk mengimplementasikan fitur seperti itu? Benarkah majikan saya dapat membawa saya ke pengadilan jika seorang pelanggan mengalami kerusakan karena fitur ini, bahkan jika ia juga mengetahui masalah keamanan?
EDIT: Saya mengerti pertanyaan ini hanya dapat dijawab dengan andal dari seorang pengacara. Hal yang sama berlaku untuk pertanyaan perizinan: orang-orang di sini memberikan pemahaman dan pengalaman mereka, kadang-kadang setelah berkonsultasi dengan pengacara, tanpa jaminan itu berlaku di yurisdiksi lain. Tetapi lisensi diterima secara eksplisit sebagai topik di sini, lihat Pertanyaan apa yang bisa saya tanyakan di sini? . Saya percaya programmer lain mungkin memiliki masalah yang sama, dan yang lain mungkin pernah berhadapan dengan situasi ini sebelumnya, dan mungkin telah berkonsultasi dengan pengacara untuk itu.
Jawaban:
Rekan Anda salah arah, terutama karena Anda tidak dapat menemukan apa pun tentang tanggung jawab keamanan dalam kontrak Anda. Bahkan jika itu terjadi, Anda hanya mendapat pesanan yang saling bertentangan dari manajemen.
Saya pikir satu-satunya saat Anda mengajukan diri ke litigasi potensial adalah jika Anda secara sadar merusak produk sendiri, membuat bom waktu Anda sendiri, telur paskah, dll.
Pada kebanyakan kasus, perusahaan memiliki perangkat lunak, sehingga mereka dapat menikmati keuntungan, tetapi itu juga berarti mereka dapat mengambil risiko juga, bukan pengembang individu.
Secara pribadi, saya akan memastikan manajemen mengetahui masalah dengan fitur keamanan ini, sehingga didokumentasikan sebelumnya, dan terus melakukan pekerjaan saya.
Yang sedang berkata, berkonsultasi dengan pengacara, yada-yada-yada.
sumber
Apa pun yang terjadi: Jangan pernah menulis kode seperti itu tanpa memiliki email atau bukti lain yang menunjukkan dengan jelas bahwa Anda hanya mengikuti instruksi dari majikan Anda.
sumber
Dari sudut pandang hukum, konsultasikan dengan pengacara. Saya bukan satu, kami juga tidak memiliki petunjuk apa yurisdiksi atau hukum yang Anda jalani yang dapat membantu menjelaskan beberapa hal. Tetapi bagaimanapun juga berkonsultasi dengan pengacara, apakah Anda akan mempercayai situs T&J internet dengan masa depan pribadi, profesional, dan keuangan Anda.
Nasihat bisnis umum adalah memastikan Anda membuat reservasi Anda secara tertulis dan perintah langsung atasan Anda untuk terus mengingat masalah keamanan secara tertulis. Jika ada hal-hal pergi ke selatan dan tekan kipas Anda akan memiliki itu untuk jatuh kembali.
Cara lain untuk mengatasinya adalah dengan melihat lebih dalam persyaratan - Anda telah membagikan rencana, bukan masalah yang sedang Anda pecahkan. Ada lebih dari satu cara untuk menguliti kucing, atau menangani persyaratan pencarian kata sandi.
sumber
Saya tidak akan khawatir tentang hal itu - tidak seperti Anda dengan jahat memutuskan sendiri untuk memasukkan fitur tidak aman dan mengeksploitasinya sendiri nanti, atau hanya memasukkannya karena Anda lalai. Perusahaan menginginkan ini, seseorang telah memutuskan pertukaran antara waktu pengembangan dan harapan pengguna dapat diterima (seperti biasa) dan karenanya Anda harus melanjutkannya. Jika Anda benar-benar khawatir tentang serangan balik, kirimkan surel kepada atasan Anda dan simpan jawabannya. Setelah Anda selesai melakukannya, sebagai karyawan, Anda dilindungi.
Kadang-kadang ada alasan mengapa hal ini dapat diterima - misalnya, saya tahu beberapa solusi kritis yang menyimpan kata sandi teks biasa, tetapi sisa sistem diamankan sehingga ini tidak menjadi masalah. Sistem ini pada jaringan yang terpisah misalnya. Jika Anda tidak tahu sisa ceritanya (situasi umum di sebagian besar perusahaan) maka Anda dapat berharap bahwa orang lain telah mempertimbangkan hal ini. Demikian pula, jika Anda memiliki email itu dari bos Anda, Anda dapat berharap bahwa dia tahu apa yang dia lakukan.
Secara kebetulan ... apakah ini produk yang saya (sebagai konsumen) akan gunakan? Jika demikian .. apa itu, jadi saya bisa menghindarinya? :)
sumber
Apakah kita menyadari bahwa banyak bug ditambahkan oleh pengembang yang tidak membahayakan pelanggan selama operasi langsung ke aset yang sama hebatnya. Kami tidak berpikir mereka disengaja tetapi masih merupakan hasil dari beberapa pekerjaan nyata kami dan masih belum tepat sasaran. Jadi contoh yang Anda buat bukanlah kasus yang terisolasi, di mana keputusan pengembang (atau atasan) memang memengaruhi klien.
Inilah yang saya sarankan:
Pertama, dengan segala cara - itu adalah perusahaan yang mengirimkan perangkat lunak ke perusahaan lain. Seorang individu tidak diberikan kredit langsung (melebihi tepuk tangan di dalam tim dan gaji paling banyak) dan kepemilikan pekerjaan. Jadi sementara ini bukan hal yang baik sebagai bagian dari pengiriman kami, tetapi Anda bukan penjahat di sini - selama keputusan bukan milik Anda.
Sebagai seorang programmer profesional - Anda akan dengan jelas menunjukkan keterbatasan kode dan bahaya yang terlibat dalam cara memelihara sesuatu sebagai bagian dari file README atau dokumentasi yang terlibat. Jika ada dokumen persyaratan - laporan uji yang disarankan, dll. Harus dengan jelas menyebutkan batasannya.
Untuk membuat pengambil keputusan sejati bertanggung jawab - saya akan meminta yang lebih tinggi untuk mengonfirmasi pemikiran mereka dalam email dari dokumen tersebut.
Timbang risikonya dengan benar. Perangkat lunak kartu data saya memang menyimpan kata sandi dalam teks paket tetapi itu tidak penting. Tetapi hal yang sama tidak dapat diterima jika saya menyimpan kata sandi bank atau jika itu akses ke database atau server. Jadi berdasarkan risiko nyata, Anda harus mengeskalasi masalah menjadi lebih tinggi sebanyak mungkin.
sumber
Kecuali jika Anda melakukan pekerjaan Anda dengan sengaja merusak, ada sedikit kerugian hukum untuk melakukan tugas yang diminta dari Anda. Anda akan memiliki kontrak kerja yang akan menyatakan kewajiban Anda, Anda dapat berkonsultasi dengan pengacara mengenai masalah teknis. Dapatkan persetujuan tertulis dari keputusan desain kata sandi plaintext jika Anda benar-benar merasa terbuka.
Yang sedikit lebih mengkhawatirkan adalah kutipan Anda tentang 'menginformasikan pelanggan'. Jika Anda merusak kedudukan, reputasi, dll. (Klausa tentang mana yang akan ada dalam kontrak Anda), maka perusahaan Anda dapat menuntut Anda - dan pembelaan 'pelapor' mungkin tidak membantu Anda ketika Anda memerlukan referensi atau pekerjaan lain.
Jika Anda tidak puas dengan implikasi dari lubang keamanan maka gosok resume Anda dan lanjutkan, tetapi jika itu bukan keputusan Anda dan bukan perusahaan Anda, saya tidak dapat melihat mengapa ini akan 'disalahkan' (secara hukum) pada Anda .
sumber
Perusahaan Anda seharusnya mengambil bentuk asuransi ganti rugi profesional ketika mereka mempekerjakan Anda. Ini harus memberikan perlindungan hukum yang memadai untuk semua karyawannya dalam kasus apapun beres dengan perangkat lunak, atau penyalahgunaan perangkat lunak atau kelemahan yang ditemukan dalam perangkat lunak (seperti password terenkripsi).
Sebagai karyawan Anda seharusnya melakukan apa yang mereka minta, dan mereka seharusnya melakukan apa yang diinginkan klien, selama tidak ada pihak yang melanggar hukum, tidak ada masalah, tetapi jika Anda melakukan apa yang diinginkan perusahaan, dan kemudian ditemukan bukan apa yang diinginkan / diminta klien, maka itu adalah di antara mereka, dan asuransi ganti rugi profesional harus melindungi Anda dari kesalahan / pertanggungjawaban pribadi.
IANAL, tetapi saya akan mengambil ini dengan tim hukum perusahaan, selain memeriksa dengan pengacara Anda sendiri.
PS, jika Anda benar-benar takut dengan ini, simpan semua email yang relevan dalam bentuk elektronik & cetak di suatu tempat di luar situs jika memungkinkan.
sumber
Saatnya untuk pekerjaan baru. Lupakan penerapan ini. Saatnya bergerak. Jika mereka rela begitu angkuh dan licik dengan ini, mereka juga tidak akan takut melempar Anda ke bawah bus.
Selain itu, jangan takut begitu Anda pergi untuk menghubungi secara anonim salah satu dari banyak grup yang menunjukkan celah keamanan pada perangkat lunak orang. Ini adalah bencana yang menunggu untuk terjadi. Sama sekali tidak ada alasan kuat untuk menyimpan ini. Apakah bos Anda memberi Anda alasan? Apakah mereka ingin masuk sebagai pengguna? Apakah mereka ingin membuatnya lebih mudah untuk mengambil kata sandi? Kecuali jika Anda mendapatkan jawaban untuk salah satu di atas yang dapat Anda atasi dengan lebih aman, maka inilah saatnya untuk melanjutkan. Ketika Anda pergi, akan lebih baik untuk tidak memberi tahu mereka alasannya.
sumber
apa yang dapat Anda lakukan untuk mengikuti arahan untuk menyimpan kata sandi dalam format yang dapat dipulihkan namun tetap tidak mungkin untuk diambil jika Anda memiliki akses penuh ke program ini menggunakan enkripsi asimetris
Anda mengenkripsi kunci (asin seperti biasa) dengan kunci publik yang disimpan dalam biner
dan ketika kata sandi diperlukan dalam teks biasa, manusia perlu menyediakan kunci pribadi yang jika tidak disimpan jauh dari server
sumber
Secara pribadi, saya belum pernah mendengar tentang insinyur perangkat lunak, tanpa klausul dalam kontrak atau perjanjian formal lainnya, yang secara hukum bertanggung jawab atas masalah keamanan dalam produk yang mereka kerjakan. Dari apa yang saya baca tentang hukum dan etika dalam rekayasa perangkat lunak, persyaratan keamanan untuk suatu sistem ditentukan oleh spesifikasi persyaratan, yang juga merujuk pada persyaratan hukum, industri, atau perusahaan. Saat membangun sistem, kegagalan untuk memenuhi persyaratan keamanan diperlakukan sebagai kegagalan untuk menyelesaikan persyaratan kontrak karena sistem tidak dibangun seperti yang ditentukan. Bagaimana peristiwa spesifik terungkap tergantung pada kontrak antara insinyur dan majikan dan majikan dan pelanggan.
Hukum juga tidak memberi tahu Anda apa yang harus Anda lakukan, tetapi apa yang bisa / tidak bisa Anda lakukan. Anda tidak menyebutkan industri apa yang Anda ikuti, tetapi beberapa memang memiliki undang-undang, peraturan, dan aturan bagaimana menangani jenis data tertentu - apa yang harus dienkripsi, tingkat enkripsi minimum, persyaratan untuk mengelola / mengendalikan akses, Dan seterusnya. Jika area Anda (negara, negara bagian) tidak memiliki aturan tentang keamanan, industri Anda tidak memiliki aturan tentang keamanan, dan persyaratan perangkat lunak tidak menyebut persyaratan atau standar keamanan, mungkin itu lebih merupakan masalah etika daripada masalah hukum.
Ketika datang ke masalah etika dalam pengembangan perangkat lunak, saya berlangganan Kode Etik Rekayasa Perangkat Lunak dan Praktek Profesional . Pada akhirnya, itu panggilan Anda. Namun, saya merasa bahwa menyimpan kata sandi dalam plaintext atau dalam format yang dapat didekripsi adalah tidak etis.
sumber
Cukup sesuaikan dengan proses pengembangan proyek Anda: jika fitur ini ditulis dalam dokumen persyaratan, Anda harus mengimplementasikannya.
sumber