UNIX(セキュリティ)
IoT機材がDDoSノードに使われているという話. PCに比べて常にネットワークに繋がっているし, 機器は多いので脅威ですよね.
Mirai亜種が国内の最大2万4000ホストに感染、ロジテック製Wi-Fiルーターの脆弱性を悪用 -INTERNET Watch 時事ネタでしたね.
ネットワークカメラは元々回線が太いから脅威という話. ネットワークカメラもルータもネットワーク回線が太いことが前提なので, 乗っ取られると脅威ですよね.
組み込みLinux開発者のセキュリティ意識が低いという話は確かにそうかもしれない. これまではネットワークに接続してなかったので気にする必要がなかった.
管理者権限のパスワードが初期設定なの本当によくありますよね. 管理者権限ユーザのパスワードがデフォルト設定になっていることがルーターですらよくある.
Mirai-Source-Code/scanner.c at 6a5941be681b839eeff8ece1de8b245bcd5ffb02 · jgamblin/Mirai-Source-Codeの話. というかこのコード群よくGitHubにBANされないですね… GGCはすぐBANされたのに, GitHubの基準がわからない.
MIRAIがビルド時にアタック方法をオプションで変更している話. コードを見るとプリプロセッサで分岐しているし確かにそれっぽい. こういうのを見ると, 条件コンパイル - プログラミング言語 D (日本語訳)機能が強力なD言語はかなり良さそうに思えますね. HaskellですらTemplate Haskellは書くのが面倒, Cプリプロセッサは機能が貧弱な上に文法がわかりにくいと苦しんでいるので, D言語の強力なコンパイル時分岐機能が羨ましくなります. Go言語もコメントで分岐しているので厳しそう. やはり条件コンパイルしたいときは正式文法でサポートされているD言語が強い.
「MISRA C」という組み込みC言語のコーディング標準があるという話を初めて聞きました. C言語という時点で使いたくないと思ってしまう.
関数の末尾以外の return を禁止するという誰得ルール
HaskellやRubyのように式で値が返せる言語なら良いけれど,
C言語でreturn
を末尾だけにしてコード書くのってかなりつらくないですか?
Rubyでreturn
禁止というのはよく聞きますが,
C言語だととてもつらそう.
C言語はif
が式ではなく文になっているので,
if
で分岐した後に返す値を変える時はどうするの?
という問題があります.
わざわざ可変な値result
を用意してそこにセットしてreturn
するのかな…
バカバカしくないですか?
そもそもC言語でセキュアなプログラムを書くというのが,
相当の腕を持っていないと出来ないことだと思います.
せめてC++でstd::unique_ptr
などのスマートポインタを多用したプログラムを書いたほうが良さそう.
と思ったらMISRA C++とかいうのもあるんですね… そしてRAIIを完全に無視しているコーディングスタイルを強制してくるらしいです. きつい.