owasp-scsvs-ja
  • OWASP Smart Contract Security Verification Standard ja
  • OWASP スマートコントラクトセキュリティ検証標準 0.0.1 日本語版
    • OWASP スマートコントラクトセキュリティ検証標準
    • リーダー
    • S1. アーキテクチャ、設計、脅威モデリング (Architecture, Design, and Threat Modeling)
    • S2. ポリシー、手続き、コード管理 (Policies, Procedures, and Code Management)
    • S3. ビジネスロジックと経済のセキュリティ (Business Logic and Economic Security)
    • S4. アクセス制御と認証 (Access Control and Authentication)
    • S5. 安全なインタラクションと通信 (Secure Interactions and Communications)
    • S6. 暗号化の実践 (Cryptographic Practices)
    • S7. 算術と論理のセキュリティ (Arithmetic and Logic Security)
    • S8. サービス拒否 (Denial of Service (DoS))
    • S9. ブロックチェーンデータと状態管理 (Blockchain Data and State Management)
    • S10. ガスの使用量、効率、制限 (Gas Usage, Efficiency, and Limitations)
    • S11. コンポーネント固有のセキュリティ (Component-Specific Security)
Powered by GitBook
On this page
  • 管理目標
  • S7.1 オーバーフロー/アンダーフローの防止 (Preventing Overflow/Underflow)
  • 管理目標
  • S7.1.A 安全な数学ライブラリの使用 (Use of Safe Math Libraries)
  • S7.1.B 固定小数点算術 (Fixed-Point Arithmetic)
  • S7.2 算術の完全性 (Arithmetic Integrity)
  • 管理目標
  • S7.2.A 安全な計算と論理 (Secure Calculations and Logic)
  • S7.2.B 前提条件と事後条件のチェック (Precondition and Postcondition Checks)
  1. OWASP スマートコントラクトセキュリティ検証標準 0.0.1 日本語版

S7. 算術と論理のセキュリティ (Arithmetic and Logic Security)

管理目標

安全な算術と論理のプラクティスを確立して、オーバーフロー/アンダーフローなどの脆弱性を防ぎ、スマートコントラクト内の計算の完全性を確保します。

S7.1 オーバーフロー/アンダーフローの防止 (Preventing Overflow/Underflow)

管理目標

安全な算術プラクティスを実装して、コントラクトの機能やセキュリティを脅かす可能性のあるオーバーフローやアンダーフローの脆弱性を防ぎます。

S7.1.A 安全な数学ライブラリの使用 (Use of Safe Math Libraries)

参照コード
要件
L1
L2
L3
SWE

S7.1.A1

明示的な型キャストがオーバーフローやアンダーフローにつながらないことを検証します。

✓

✓

S7.1.A2

整数算術演算がその境界を超えず、整数オーバーフローやアンダーフローの脆弱性を防いでいることを検証します。

✓

✓

S7.1.A3

時間単位やその他の式を含む演算が潜在的なオーバーフローを正しく処理することを確認します。

✓

✓

S7.1.A4

ゼロによる除算が正しく処理され、トランザクションを元に戻して、予期しない動作を防いでいることを検証します。

✓

✓

S7.1.A5

変数が境界内で管理され、制限を超えたことによる差し戻しを防いでいることを確認します。

✓

✓

S7.1.A6

unchecked{} ブロック内の算術演算は慎重に管理され、意図しないオーバーフローやアンダーフローを防いでいることを確認します。

✓

✓

S7.1.A7

インラインアセンブリ演算がゼロによる除算とオーバーフロー/アンダーフローを望ましい動作に従って処理して、適切に戻すことを確認します。

✓

✓

S7.1.A8

演算によって意図しない精度の問題や丸め誤差につながるかもしれない場合に対処するためのチェックを実装します。

✓

✓

S7.1.B 固定小数点算術 (Fixed-Point Arithmetic)

参照コード
要件
L1
L2
L3
SWE

S7.1.B1

固定小数点算術演算が安全に実行され、オーバーフロー、アンダーフロー、精度損失を防いでいることを検証します。

✓

✓

S7.2 算術の完全性 (Arithmetic Integrity)

管理目標

スマートコントラクト内のすべての計算と論理演算が正しく実行され、データの完全性を維持して、操作を防いでいることを確認します。

S7.2.A 安全な計算と論理 (Secure Calculations and Logic)

参照コード
要件
L1
L2
L3
SWE

S7.2.A1

フラッシュローンや寄付などの攻撃ベクトルを考慮して、資産残高から導き出される価格やレートの計算が操作から保護されていることを確認します。

✓

✓

S7.2.A2

構造体と配列の使用がストレージのエンコーディング問題によるデータ破損や不正確な値につながらないことを確認します。

✓

✓

S7.2.A3

算術演算が正しく実行されるようにすることで、意図しないデータ型変換や精度損失につながる可能性のある演算を回避します。

✓

✓

S7.2.A4

最小トランザクション金額を強制して、攻撃者がゼロ金額やダストトランザクションでネットワークを詰まらせることを防ぎます。

✓

✓

S7.2.A5

金融演算が結合法則を尊重することを検証して、演算が集約的に実行されても反復的に実行されても一貫した結果を確保します。

✓

✓

S7.2.A6

会計がユーザーシェアに依存する計算に対して適切な丸め方向を実装して、不正確さを回避します。

✓

✓

S7.2.A7

不等式と比較が正しく実装され、エッジ値を適切に処理することを検証します。

✓

✓

S7.2.A8

abi.decode が型制限を準拠して、ターゲット型のオーバーフローによる差し戻しを回避することを確認します。

✓

✓

S7.2.A9

特にテストカバレッジが制限される可能性がある場合は、==, !=, &&, `

, !` などの論理演算子が正しく使用されていることを確認します。

✓

S7.2.B 前提条件と事後条件のチェック (Precondition and Postcondition Checks)

参照コード
要件
L1
L2
L3
SWE

S7.2.B1

乗算が除算の前に実行され、計算の精度を維持していることを確認します。

✓

✓

S7.2.B2

リクエスト確認番号がチェーン再構成に伴うリスクを軽減するのに十分に高いことを確認します。

✓

✓

S7.2.B3

ループとイテレーションで off-by-one エラーが回避され、リストの長さとインデックスを正しく処理することを確保していることを検証します。

✓

✓

S7.2.B4

符号なし整数が負の値を表すために使用されていないことを検証します。これは誤った動作につながる可能性があります。

✓

✓

S7.2.B5

複数の項を持つ計算が最小値/最大値のすべての可能なエッジケースを処理して、エラーを回避することを検証します。

✓

✓

PreviousS6. 暗号化の実践 (Cryptographic Practices)NextS8. サービス拒否 (Denial of Service (DoS))

Last updated 6 months ago