今週の注目トピック
Taisho Nishiiより
今週のTech編には、まず脆弱性に関するトピックを2つ。一つは、論文がICSE 2020 Techical Papers Trackに採択された、スマートコントラクトの脆弱性等の自動解析フレームワーク「SmartBugs」について、もう一つは、IEEE S&P 2020に採択された、主にモバイルデバイスに搭載されているArm TrustZoneベースのTEEに対する脆弱性に関するSoKペーパーについて取り上げています。また、EthereumベースのDEXであるUniswapが発表したv2において新規で追加された機能について解説しています。List編と合わせてご覧ください。
Section1: PickUp
●スマートコントラクトの自動解析フレームワークSmartBugsについて
今回は、SmartBugsという、スマートコントラクトの自動解析フレームワークについて紹介する。SmartBugsとは、Solidityを用いたスマートコントラクトに関するデータセットの自動解析ツールの利用を簡素化する新しいフレームワークである。SmartBugsは、47,587回にわたるEthereum上のスマートコントラクトの自動解析についての実証レビューの文脈の中で生まれたものである。このレビューについて記述した論文はICSE 2020 Techical Papers Track にも採択されており、先日の「Week in Ethereum News for March 15, 2020」でも紹介されていたことから、今回取り上げることとした(論文)。
現在では、SmartBugsは10個の解析ツールに対応しており、新たな解析ツールを簡単に追加できるシンプルなプラグインシステムを有する。また、同時並行でのツール使用を可能にしており、ツールの使用時間の短縮が可能。加えて、解析ツールのアウトプットを標準化し、その後の実験等を円滑に進めることにも資するものとされている。
このフレームワークの誕生の経緯について簡単に紹介する。過去数年にわたって、相当数のEthereumのスマートコントラクトに関する自動解析、検証、デバッグに係る研究が行われてきたが、それらの研究の比較や検証は容易なものではなかった。この問題に取り組むため、まず9つの最新の自動解析ツールの実証評価が行われた。HoneyBadger, Maian, Manticore, Mythril, Osiris, Oyente, Securify, Slither, Smartcheckの9つのツールである。その9つの自動解析ツールは2つの新しいデータセットを用いており、一つは、69つの脆弱性のあるスマートコントラクトのデータセット、もう一つが、Etherscanで手に入れることが可能なSolidityソースコードをもつEthereum上の全てのスマートコントラクトのデータセットであった。上述のとおり膨大な回数の解析を実施したため、約564日と3時間を要したとのことで、過去最多数の使用解析ツール数及び所要期間をもつ実験となったが、その過程においてSmaartBugsが生み出されることになった。
簡単に実験結果を紹介すると、全ツール合計では、42%の脆弱性がデータセットからは検知されたが、9つのうち最も正確とされるMythrilからは27%の脆弱性が発見された。コントラクトのうち、97%が脆弱性ありと評価されていたことを踏まえると、大多数は偽陽性であったことを示唆する。実際に脆弱性は少なくとも4つのツールからはほとんど発見されなかった。また、解析スピードとその正確さの間には相関関係が見出せなかったというのも興味深い結果である。
この研究はでは、パブリックのすべてのデータセットを用いることができていないので、適切に過去の研究を比較できているわけではない、とされているが、スマートコントラクトのデータセットについて解析するツール利用の簡素化、自動化に資する第一歩のフレームワークとなったことは間違いない。Ethereumというパブリックブロックチェーンの抱える課題の解決に向けては様々な研究が行われているところ、その課題のうちの一つである脆弱性に関わる研究について、引き続き注視していきたい。
● IEEE S&P 2020にArm TrustZoneベースのTEEに対する脆弱性SoKペーパーが採択
機密性の高いデータをハードウェアレベルで保護するTEEシステムが近年特に注目されている。主に、モバイルデバイスに搭載されているArmプロセッサのTrustZone(Cortex-A)上にも様々な種類のTEE(Qualcommn, Trustonic, Huawei,…)が実装されており、スマートフォンにおける秘密鍵などのデータ保護にも応用されている。
引用:https://www.cs.purdue.edu/homes/pfonseca/papers/sp2020-tees.pdf
一方で、このTEEに対する脆弱性も近年多く見つかっておりIEEE S&P ‘20でDavid CerdeiraらによるArm TrustZoneにおけるTEEの脆弱性に対するSoKペーパー「SoK: Understanding the Prevailing Security Vulnerabilities in TrustZone-assisted TEE Systems」が採択された。
著者らは2013~2018年の6年間に公表されたCVEから124個のTEE脆弱性を分析し、その原因を「architectual」「implementation」「hardware」に由来するものとして3分類に大別した。
引用:https://www.cs.purdue.edu/homes/pfonseca/papers/sp2020-tees.pdf
「architectual」は、TEE全体のシステム設計としての必要な機能の欠如が原因によるもので、例えば、ASLRによるメモリ保護機能の欠如などがあげられる。(ASLRは、heap領域以降のアドレス空間に対してコードやデータをランダムに配置することで攻撃者によるアドレス特定を困難にする基本的機能)
「implementation」は、TEEシステムのソフトウェアにおける実装の欠陥が原因によるので、バッファを超えてデータを入力し意図しないプログラム動作を引き起こすバッファオーバーフローが具体例としてあげられる。
「hardware」は、ハードウェア由来の振る舞いがTEEの脆弱性に結びついてしまうものだ。例えば、機密データ自体にプログラムの処理実行が依存してしまうことで、物理的に外部から変動を測定するサイドチャネル攻撃などがあげられる。
当論文では、それぞれの脆弱性に対してさらにカテゴライズしてグループ化されている。ブロックチェーンを含めさまざな分野で応用が期待されているTEEであるが、根本的なセキュリティについては今後も注視していきたい。
● Uniswapが v2 を発表
UniswapはEthereum上のDEX(Decentralized Exchange)の一つ。オーダーブックはなく、事前にプールされたトークンのペアがあり、プールの中のトークンの交換を行う。取引価格は二種類のトークンX, Yにつき、そのプール量をx,yとしてこれらの積を定数kに保つことで決定する(x*y=k)。v1ではETHとERC20のペアによるプールのみが作成可能であった(詳細はこちら)。
今回のアップデート
ERC20 / ERC20 Pairs
Uniswap V2ではERC20トークンの同士によるペアによってプールすることが可能になる。これにより流動性の提供者はETHに依存せずERC20トークンにポジションを持つことができる。また、手数料もv1では2つのペア分(e.g. ETH/DAI、ETH/USDC)を払う必要があったが、トークン同士の直接のペアが可能になり、手数料も1ペア分(DAI/USDC)で済む。また、二つのトークンがペアリングされていなくても、Router contractsによって複数のペアを経由してトークンのスワップを行うことも可能。
交換手法は直接交換、ETH経由の交換、カスタムのパスによる交換の3種類に大きく分類される
Price Oracles
Uniswap V2ではオンチェーン上でトークンの価格を提供するPrice Oracleが追加された。前のブロックの最後のトランザクションにトークンの価格を記録し、ブロックの組成時に全てのブロックに記録された価格とタイムスタンプから、価格を推測する。このPrice Oracleはブロックからデータを取得しているため、改竄耐性があり、攻撃者(アビトラなど)が自分の都合の良い価格を設定するためには前のブロックで大きく価格が変動するような取引を行うか、ブロックを2つ連続で作る(セルフィッシュマイニングをする)必要があり、大きなコストを必要とする。
Flash Swaps
Uniswap V2のflash swapsでは前金なしにERC20を引き出し、どんな処理も実行することができる。v1ではまず、ETHまたはその他のトークンをコントラクトに送ることをトリガーとし、様々な処理を実行していたが、flash swapsでは無からトークンを引き出し、様々な処理を実行し、最終的に引き出した額のトークンまたは同等のペアされたトークンをPoolに返却する。手数料は最後の返却時に控除され、金額が不足している場合は全体のトランザクションが成立しない。
開発言語はv1はVyperであったが、v2はsolidityになっている。その理由は、vyperではまだ表現できない処理(ERC20に準拠してないトークンの解釈や、新しいオペコードchainid)があるため、とされている。また、Solidityも小数を表現できないため、UQ112.112フォーマットを採用し、1/2**112まで細かく表現することとしている。
UniswapはHayden Adamsが会社をクビになったことをきっかけに開始したプロジェクトであるが、確実に進化を遂げており、今後も注目が集まる。
Section2: ListUp
1. Bitcoin
●Lightning Network向けWatchtowerプロトコルの仕様がアップデート。ユーザーアカウントやペイメントメソッドおよびメッセージ署名についての詳細を含むもの
2. Ethereum
●スマートコントラクトのセキュリティ学習を目的としたハッキングゲーム、Capture the Ether
●スマートコントラクトのセキュリティむけゲーム、The Ethernaut
3. Bitcoin/Ethereum以外
●パブリックEthereum上でセンシティブデータを明かすことなくプライベートビジネスプロセスを実行し企業間コラボレーションを行うBaseline Protocolがパブリックオープン
ユースケースとして調達サプライチェーン「Radish34」を例示
●Storj Labs、分散クラウドストレージTardigradeをローンチ
4. 統計・リスト
●各種ブロックチェーンプロジェクトのセキュリティチーム宛コンタクト先のキュレーションリスト
●MakerDAOを始めとしたDeFiプロジェクトで使われているオラクルのリスト
5. 論考
●iden3によるzkRollupと分散アイデンティティの関係の解説記事。zkRollup用いてアイデンティティclaimのRelayerをトラストレスに
●SSI Meetupのスライド。Self-Sovereign Identity: Ideology and Architecture with Christopher Allen
●DeFiの攻撃に対する脆弱性についての論文。Makerの担保を何のトークンをロックすること無しに2トランザクションで取り出すことのできる可能性についての言及など
Disclaimers
This newsletter is not financial advice. So do your own research and due diligence.