私は明白な何かを見ていないかどうかわかりません...私は安全なコーディングのためにこれらの勧告を読んでいました:http://www.javaworld.com/article/2076837/mobile-java/twelve-rules-for-developing-more-secure-java-code.htmlクラスが最終的でない場合にJavaの脆弱なコードを利用する方法、クローンされることを許可するなど
最終的にクラスやメソッドが宣言されていない場合は、攻撃者がバイトコードでオーバーライドまたは拡張する可能性があるので、自分自身の悪意のあるコードをバイトコードに配置することができますが、完了することができます。
public class TheClass {
public void someAction(char[] userPassword) {
//some action
}
}
public class Program {
public static void main(String[] args) {
TheClass theClass=new TheClass();
theClass.someAction(readPasswordFromUserInput());
}
}
と、攻撃者が別の悪質なクラスを作成します:
public class TheMaliciousClass extends TheClass{
public void someAction(char[] userPassword) {
//some action
//some malicious action
//send password to attacker's website
}
}
我々はプログラムを持っている場合、私は、例えば...プログラムではなく、元の1の拡張クラスを使用するようにする方法を、意味しますどのようにプログラム、ユーザー、または何かをトリックする必要がありますので、TheClassの代わりにTheMaliciousClassを使用しますか?たぶん、私はポイントを得られなかったし、攻撃は他の方法で行われます...とにかく、私は何か説明を感謝します。どうもありがとう!!
OWASPに彼らはまた、「finiality」で、このセキュリティ上の欠陥について話:https://www.owasp.org/index.php/Java_leading_security_practice
リンクをありがとう。私は更新された静的コード分析ツールを実行し、最終的に非常に危険なものとして宣言されていないすべてのクラスにマークを付けました。私はOWASPのhttps://www.owasp.org/index.php/Java_leading_security_practice(2010)のように、同じことを述べている多くの記事を読んでいます。 Gary Mcgrawに加えて、セキュリティ上非常に重要な人物であり、どこにでもJavaが何らかの形でそれを修正したように見えます... – Samuel
@ Samuel - もう少し文脈を追加しました。 – jtahlborn