界: Code Quality

コードの質が低いと、予測できない動作につながります。ユーザーの視点には、それがしばしば使い勝手の悪さとなって現れます。攻撃者にとっては、予期せぬ方法でシステムにストレスを与える機会となります。

Solidity Misconfiguration: Floating Pragma

Abstract
コントラクトは、浮動小数点の pragma を使用しており、Solidity コンパイラーは特定のバージョンに固定されていません。
Explanation
開発者は、スマート コントラクトを作成する際に、使用する Solidity コンパイラーの互換バージョンの範囲を指定できます。通常、コントラクトは使用可能な 1 つのバージョンのみで開発およびテストされるため、これは推奨されません。これにより、既知のセキュリティ脆弱性がある古いバージョンのコンパイラーを使用してコンパイルされる可能性が残ります。

例 1: 次のコード行は、スマート コントラクトが 0.4.5 より前のバージョンではコンパイルを行わず、バージョン 0.5.0 以降のコンパイラーでは動作しないように pragma を設定しています。


pragma solidity ^0.4.5;
References
[1] Enterprise Ethereum Alliance Source code, pragma, and compilers
[2] Standards Mapping - CIS Azure Kubernetes Service Benchmark 5
[3] Standards Mapping - CIS Amazon Elastic Kubernetes Service Benchmark 5
[4] Standards Mapping - CIS Amazon Web Services Foundations Benchmark 3
[5] Standards Mapping - CIS Google Kubernetes Engine Benchmark normal
[6] Standards Mapping - Common Weakness Enumeration CWE ID 664
[7] Standards Mapping - Smart Contract Weakness Classification SWC-103
desc.structural.solidity.swc103