Closed n4o847 closed 3 years ago
こちらも redefine_state_2 を取り込みましたが、差分をわかりやすくするため redefine_state_2 をベースにして最後に master に戻します
む、master も取り込んじゃってるせいであんまりきれいに差分表示できなかった
いま showMessageEDA
と showMessageIDA
が判定のみに特化していて、それと処理が重複するのでどう統合するかが現時点での問題ですね
変更点
Message
の定義に攻撃文字列を付け加えた(プロパティ名など要相談)まだできていない点
ところで検出メッセージについて、
と思いました
僕のこのメッセージ結構適当に決めたので、適切に変えていただけるとありがたいです
いうて自分も決めかねるので、直接話し合うとき決めましょう~
// (a*)* has EDA?: {
status: 'Vulnerable',
message: 'Detected EDA.',
attack: 'aaaaaaaaaaaaaaaaaaaaa\u0000'
}
// (a+)+ has EDA?: {
status: 'Vulnerable',
message: 'Detected EDA.',
attack: 'aaaaaaaaaaaaaaaaaaaaa\u0000'
}
// (\w|\d)* has EDA?: {
status: 'Vulnerable',
message: 'Detected EDA.',
attack: '00000000000000000000000000000000000000000\u0000'
}
// a*a* has IDA?: {
status: 'Vulnerable',
message: 'Detected IDA.',
attack: 'aaaaaaaaaaaaaaaaaaaaa\u0000'
}
// (.*)="(.*)" has IDA?: {
status: 'Vulnerable',
message: 'Detected IDA.',
attack: '\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000="\u0000'
}
アルゴリズム自体はできているんですが、 #38 が終わってから各種コンフリクトを直す必要があるのでそしたら WIP を外します。
PrunedNFA
に置き換えたら suffix が作れなくなってしまったので考え中です
アルゴリズムを変えたらいい感じになりました。
$ git checkout master
$ npm test > out/master
$ git checkout add_attacker
$ npm test > out/attack
$ diff out/master out/attack
834c834,838
< // (a*)* has EDA?: { status: 'Vulnerable', message: 'Detected EDA.' }
---
> // (a*)* has EDA?: {
> status: 'Vulnerable',
> message: 'Detected EDA.',
> attack: 'aaaaaaaaaaaaaaaaaaaaa\x00'
> }
915c919,923
< // (a+)+ has EDA?: { status: 'Vulnerable', message: 'Detected EDA.' }
---
> // (a+)+ has EDA?: {
> status: 'Vulnerable',
> message: 'Detected EDA.',
> attack: 'aaaaaaaaaaaaaaaaaaaaa\x00'
> }
2041c2049,2053
< // (\w|\d)* has EDA?: { status: 'Vulnerable', message: 'Detected EDA.' }
---
> // (\w|\d)* has EDA?: {
> status: 'Vulnerable',
> message: 'Detected EDA.',
> attack: '00000000000000000000000000000000000000000\x00'
> }
3225c3237,3241
< // a*a* has IDA?: { status: 'Vulnerable', message: 'Detected IDA.' }
---
> // a*a* has IDA?: {
> status: 'Vulnerable',
> message: 'Detected IDA.',
> attack: 'aaaaaaaaaaaaaaaaaaaaa\x00'
> }
3472c3488,3492
< // (.*)="(.*)" has IDA?: { status: 'Vulnerable', message: 'Detected IDA.' }
---
> // (.*)="(.*)" has IDA?: {
> status: 'Vulnerable',
> message: 'Detected IDA.',
> attack: '\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00="\x00\x00'
> }
EDA判定のバグ修正してくださりありがとうございます。 以前(n,n)(m,k)(m!==k)の場合EDA検出をしたが、nとmとkが違うかという判定をしていなかった気がする。。。(m!==kだけ判定していたので, (a,a)(a,b)(a!==b)のようなグラフを通してしまっていた) 全部見るのにもう少しかかります、お待ちを
コードの方はいい感じです! しかし自分が攻撃文字列生成について納得できない部分(getSuffixの空集合からQ_fに遷移してしまうところ)があったので、一旦スラックに投げました。
実装途中ですが経過が見えたほうがいい気がするのでプルリクにします。