0

セキュアコーディングのベストプラクティス(特にJavaアプリ用)の学習に興味があり、OWASPのセキュアコーディングプラクティスのチェックリストを読んでいます。彼らのメモリ管理セクションの下で、彼らは次のように述べています:

既知の脆弱な関数(、、、など)の使用は避けprintfstrcatくださいstrcpy

私はC/C ++開発者ではありませんが、これは上記の関数にセキュリティの脆弱性があることを意味しているに違いありません。私は脆弱なJavaメソッドをいくつか検索しましたが、思いついたのはこのCVEだけでした。

OWASPからのこのアドバイザリに適用されるJavaSE/ EEメソッド(存在する場合)は何ですか?

4

2 に答える 2

3

C API の場合、はい、パラメータを注意深くチェックしないと、意図しないメモリ破損が発生して、これらの関数で問題が発生する可能性があります。

Java では、すべての操作が自動的にチェックされるため、このクラスのメモリ破損のエクスプロイトは発生しないはずです (実装のバグがなければ)。

于 2012-08-10T00:44:09.620 に答える
2

これらは、特にバッファ オーバーフローやフォーマット文字列攻撃を受けやすい C 関数です。

通常、Java にはこれらの問題はありませんが、同じ経験則が適用されます。つまり、入力を信頼しないでください。

リフレクションとシリアル化

Java のリフレクション API は、脆弱性の原因となる可能性があります。

攻撃者が提供する文字列の一部をクラス、メソッド、またはプロパティ名として扱わせることができる場合、多くの場合、攻撃者は意図しないことをプログラムに実行させる可能性があります。

例えば、

ObjectInputStream in = ...;
MyType x = (MyType) in.readObject();

コンテンツを制御する攻撃者がin、CLASSPATH 上の任意のクラスのロードと初期化を引き起こし、CLASSPATH 上のシリアル化可能なクラスの任意のコンストラクターを呼び出すことを可能にします。たとえば、CLASSPATH に JS または Python インタープリターがある場合、Java リフレクションを介してより強力なメソッドにアクセスできる場所から、String -> JavaScript/Python 関数クラスにアクセスできる可能性があります。 .

javax.script

javax.scriptは Java 6 で利用可能で、組み込みスクリプト言語で文字列をソース コードに変換できます。信頼できない入力がこれらのシンクに到達すると、スクリプト エンジンの Java リフレクションへのアクセスを使用してファイル システムまたはシェルに到達し、現在のプロセスの所有者の権限で任意のユーザーリング命令を実行できる可能性があります。

XML

Java は、XML 入力の外部エンティティを使用してローカル ネットワークの URL のコンテンツを含めることができる他の言語と同様に、外部エンティティ攻撃に対して脆弱です。

発信接続をフィルター処理するためにフックjava.net.SocketFactoryまたは使用しない場合SecurityManager、DTD に表示される URL をホワイトリストに登録できない XML 解析メソッドは脆弱です。

ランタイム / プロセスビルダー

また、Java 固有ではありませんが、ローカル ファイル システム上の実行可能ファイルへのアクセスを許可しますRuntimeProcessBuilderこれらに到達する攻撃者が制御する文字列は、アクセス許可の昇格に使用される可能性があります。

于 2012-08-10T00:56:55.997 に答える