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

Apache Log4j 2 で非常に深刻なリモートコード実行の脆弱性が見つかる」記事へのコメント

  • by Anonymous Coward on 2021年12月11日 23時04分 (#4168312)

    普通に考えて、ロギングライブラリとして求められる機能ではないように思うのだが、
    開発者にもともと脆弱性を仕込む意図があったのでは無いかと勘ぐってしまうな

    • by Anonymous Coward on 2021年12月12日 8時06分 (#4168361)

      例えば、
      異常検知やユーザーの異常行動の解析のためログの吐く先がDBの場合に、
      Appender インタフェースを使った JDBCAppenderがよく使われますが、
      そこでJNDIが使われてたりします。
      ご参考まで:https://logging.apache.org/log4j/2.x/manual/appenders.html

      これに限らず、
      サービス化されている機能を介してログや設定を取ったり、ログを吐き出すのに、
      JNDIを使うことはまあ一般的です。

      といっても、
      今回の脆弱性が、URI書式異常時の例外をトラップするもスルーし、
      しかも、”This is OK.”とかコメントを書いときながら、
      異常URIをそのままJNDI接続処理に回してた、
      修正はreturn文を1行追加するだけ、
      ってー感じの、
      ちょっと恥ずかしくなる類のミスなので、勘繰りたくもなりますよね…。

      親コメント
      • by Anonymous Coward

        "This is OK."のコードは今回の脆弱性の修正過程で一時的に入ったもので、今回の脆弱性の原因じゃないですよ。

    • by Anonymous Coward

      こちら [github.io] に詳細な説明がありますが、ログ出力時に動作環境に関する様々な情報を出力したい、という要件から作られたものですから、意図的ではなかったと思いますよ。

    • by Anonymous Coward

      Java 等のフレームワークやライブラリは、大規模システム向けに設計されたと考えると大体合点がいく。
      ロギングライブラリとしての機能が高度であるほど、設定ファイル(XML)の変更だけでロギングを柔軟に変更できる。主眼点は、ビジネスロジックへの影響を与えずに、柔軟性を確保すること。そうすることで、保守性や運用性が高まる。

      発想自体はまとも、概念設計(アイディア)としても妥当、でも、現実の開発と運用に適用するとなると難易度が高くなっているだけにしか思えない。大規模システム(複雑な構成のシステム)での適用でないと恩恵を感じられないのがふつう

      • by Anonymous Coward

        メッセージパターンではなく、ログメッセージ自体をさらに展開したい需要がどれほどあるかというと……

        #4168363 :
        > ログ出力時に動作環境に関する様々な情報を出力したい、という要件から作られたものですから
        にしても自分できちんと文字列を作ってやれば良いわけで。

        とはいえ最初は「設定の他のところでも展開してるし」程度のノリでメッセージも展開するようにしたのかもしれません。
        2.7あたりで{nolookups}オプションを追加した人は薄々問題に気付いていたかも。

        • by Anonymous Coward

          ログ出力のために文字列作るぐらいなら、ログ出力しない場合にログ出力関連ブロックをばっさり削るなんてことはしないわけで。
          ログ出力しない場合の少しの無駄も許せないという人も多いんですよ。それこそ条件判断でさえ。
          さらに実行環境を取得して文字列を作成して出力レベルが違うから破棄なんて無駄の極み。

日本発のオープンソースソフトウェアは42件 -- ある官僚

処理中...