パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

オープンソースソフトウェアの脆弱性、2019年は前年から50%近く増加したとの調査結果」記事へのコメント

  • Cではバッファーエラー(CWE-119)・領域外読み込み(CWE-125)・NULLポインター参照(CWE-476)の順になっている。

    他の言語ではそもそも脆弱性になりえないから…と思ったが、ここではC++も「他の言語」なのか。みんな意外とC++の機能をちゃんと使っているということか

    • by Anonymous Coward on 2020年03月14日 19時38分 (#3779293)

      ダメなプログラムを書いた責任を言語に擦り付けるようじゃ何使ってもダメでしょ
      チンパンジーがキーボードを乱打しても正常なプログラムが書けるような言語があるなら話は別だけど

      親コメント
      • by Anonymous Coward on 2020年03月14日 20時20分 (#3779302)

        人間の注意力に責任を押し付けるようなやつは何をやってもダメ

        親コメント
        • by Anonymous Coward

          ただ、この手の指摘って実害はないけれどコーディング上はだめというものも含まれているから
          ただ統計結果だけだとゴミの評価にしかならないというのが個人的な感想。
          企業がやってるコーディングのセキュリティチェックなんかがよい例なんじゃないだろうか。
          ツールの出力結果を成形して貼り付けるだけで中身なんて何も見てないからなあれ。ほんと存在価値がない。
          まぁ。全部が全部そういう実害のない脆弱性というわけでもないだろうけれど。。。

          基本的なことをちゃんと手抜かずにすればいいのに
          Cの場合、めんどくさがってやらないやつが多いという話でもあるんだと思う。
          手間を惜しまず、手続きさえちゃんとふめば、Cが一番安定した言語だと今でも思うよ。
          基幹部分を作るのならばの話。

          • by Anonymous Coward

            あのさぁ……データの収集元になったNVDや脆弱性データベースって見たことない?
            そこに「実害はないけれどコーディング上はだめ」というものが含まれていると思う?

        • by Anonymous Coward

          例えばポインタの存在しないプログラムで同じように初期化や値チェックが雑なプログラムを組んだらNULLポで落ちない代わりによくわからない想定外の動作をするプログラムになるだけでしょ?
          バッファーオーバランでセキュリティリスクになるよりはランタイムエラーで落ちる方が良いとか?
          注意力に限界はあるしプログラムにバグが発生するのはあたりまえ
          それをテストデバッグせずに言語が悪いと言う人はプログラマーに向いてない
          ※注意力散漫でもバグが無いプログラムを作れる言語なりシステムがあるなら教えてほしい

          • by Anonymous Coward

            Cでも初期化や値チェックがだめでよいわけじゃないので、なんの比較にもなっていない。

            バグが完全に無くならないかぎり、少なくしようとするのに意味はないという意見には
            賛成できない。

          • by Anonymous Coward

            例えばポインタの存在しないプログラムで同じように初期化や値チェックが雑なプログラムを組んだらNULLポで落ちない代わりによくわからない想定外の動作をするプログラムになるだけでしょ?
            バッファーオーバランでセキュリティリスクになるよりはランタイムエラーで落ちる方が良いとか?

            例えば流行りのRustなら、ランタイムエラーどころか、そもそもビルドを通さない仕組みがいくつかあるよな。
            レースコンディションとかはきっちり叱ってくれる。解放済みのポインタの使用も。
            何もないよりは、こっちの方が断然良い。

            注意力に限界はあるしプログラムにバグが発生するのはあたりまえ

            そう。
            それを言語がカバーして叱ってくれるんだぜ。やっぱり言語の選択は重要よ。

            • by Anonymous Coward

              言語側でカバーして、文法レベルでエラーにしてくれるのが良いのはもちろんだが、Cは最近の静的解析使えばかなり改善する。
              いまどきの静的解析はとても優秀で一昔前だとリソース的に無理だったような、そこまでの実行パスで取りうる値を網羅的にチェックしてくれたりするんだよな。解放済みのポインタ参照なんか当たり前のように検出してくれる。
              valgrindはもう無くていいレベル

          • by Anonymous Coward

            ソースを読まずにお前が悪いと言う人はスラドに向いてない。
            Pythonは人気が高いにも関わらず脆弱性の割合が低いってことが書いてあるぞ。

            • by Anonymous Coward

              ソースを読まずにお前が悪いと言う人はスラドに向いてない。
              Pythonは人気が高いにも関わらず脆弱性の割合が低いってことが書いてあるぞ。

              Pythonでポインタとか使えたっけ?

              低レベルな操作ができない(あるいはできることが少ない)言語は、それに起因した脆弱性は減るよ。
              それは特性の問題で、言語の良し悪し(や、ユーザーの良し悪し)とは、直接関係ははない。

              かといって低レベルな操作が仕様にない言語だけになると、その辺やるのにいきなり機械語書くのか?みたいな問題になるから、たとえ脆弱性を作りこみやすいとしても、低レベル操作が可能な言語は必要だ。

              # 包丁とミキサーなら包丁のほうが負傷事故は起きやすいが、じゃあ包丁がいらないかと言えばそんなことはない

              • by Anonymous Coward

                言語特性起因の脆弱性が(言語内でも言語外でも)トップにきてる時点で、
                セイフティが存在しないか役に立ってない残念言語ってことにならない?

                # ミキサーの負傷事故が少ないのは、指をミキサーに突っ込んだ状態で
                # 動かないようにするとか、絶縁して漏電しないように安全性が考慮されているから

              • by Anonymous Coward

                で、ミキサーで野菜の皮を剥いたり、生魚の鱗を取ったり、エビの背腸をとったり、食肉をダイスカットできるわけ?

                機能を制限すればリミッターや安全装置はつけられるけど、その分、汎用性は失われる。
                その汎用性が必要なときに、仕方なくリミッターや安全装置がない道具を使わざるを得ないこともある。
                そこにリミッターも安全装置もないのは欠陥ではないよ。汎用性を維持するために付けられなかっただけ。

              • by Anonymous Coward

                LinuxというカーネルはgccのC言語拡張を使ってて、OpenMandrivaの人たちなんかがパッチを当ててclangでビルドできるように
                していると聞いているけど、C言語は野菜の皮を剥けるのか剥けないのかどっち側なんでしょ?

                データベース関係だと、コンパイル結果がCのソースになるプログラム言語というかコンバータというかがありますけど、
                素のCの作法にしなかったのは生魚の鱗が取りづらいんからじゃないかなあ。

      • by Anonymous Coward

        無限の猿に無限時間書かせればばいずれ意味解析通るので正常がなにか定義しないとダメ。

        • by Anonymous Coward

          正常をどう定義したところで無限の数の猿に無限の時間タイプさせれば意味解析も構文チェッカも通るでしょ。

          • by Anonymous Coward

            一体いつから正常なプログラムが有限と錯覚していた?

            • by Anonymous Coward

              元コメは無限が2つあるので、正常なプログラムが無限でも別に発散したりしないのでは

              • by Anonymous Coward

                無限の猿は日常的な感覚で言えば可算無限集合にしかならないでしょ?

                # どんな日常だ

            • by Anonymous Coward

              正常なプログラムを全部猿がかけるって話ではないでしょ

              • by Anonymous Coward

                無限の話なので「全部」という概念が適切かはわからないけど、「任意」の正常の定義について猿がプログラムを書けるという主張でしょ?
                空やコメントだけのプログラムは大抵有効なプログラムなので、特定の正常なプログラムを有限の猿が書けることは自明でしょう。

アレゲは一日にしてならず -- アレゲ研究家

処理中...