0

明らかな何かが見られないかどうかはわかりません...安全なコーディングに関するこれらの推奨事項を読んでいました: http://www.javaworld.com/article/2076837/mobile-java/twelve-rules-for-developing -より安全なJavaコード.html

クラスまたはメソッドを final と宣言しないと、攻撃者がバイト コードでオーバーライドまたは拡張する可能性があるため、攻撃者は独自の悪意のあるコードをバイトコードに配置できますが、攻撃がどのように行われるかは明確にわかりません。完了しました。つまり、プログラムが元のクラスではなく拡張クラスを使用するようにする方法...たとえば、プログラムがある場合:

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
    }
}

プログラム、ユーザー、またはだます必要があるものをだまして、プログラムが TheClass の代わりに TheMaliciousClass を使用する方法は? 多分私は要点を正しく理解しておらず、攻撃は別の方法で行われています...とにかく、説明をいただければ幸いです。どうもありがとう!!

OWASP では、「最終性」でこのセキュリティ上の欠陥についても話しています: https://www.owasp.org/index.php/Java_leading_security_practice

4

1 に答える 1