サイト内の現在位置

OWASP Top10 Low-Code/No-Code Security RisksとOWASP Top10の比較

NECセキュリティブログ

2022年8月26日

NEC サイバーセキュリティ戦略統括部 セキュリティ技術センターの山本和也です。セキュリティサービス開発のスクラムマスター new window[1]及びアジャイル開発におけるセキュリティ実装の推進活動を担当しております。今回のセキュリティブログでは、システム開発において採用が増えているローコード/ノーコード開発におけるセキュリティを考えるきっかけとして、OWASP Top 10 Low-Code/No-Code Security Risksを、OWASP Top 10との比較を交えつつ紹介します。

1.ローコード/ノーコード開発が注目される背景

近年、民間企業ならびに行政組織において、デジタルトランスフォーメーション(以下DX)の取り組みが盛んになっています。経済産業省は『DXレポート』new window[2]や『デジタルトランスフォーメーションを推進するためのガイドライン(DX推進ガイドライン)』PDF[3]の中で、経営戦略だけでなく、システムとしても環境変化に対して柔軟かつスピーディーに対応していくことの必要性を挙げています。また既存システムを取り巻く環境の問題点の一つとして、これまで主流であったスクラッチ開発の多用による独自ノウハウのブラックボックス化なども課題として挙げています。

この課題に対する一つの解決策として、ローコード/ノーコード開発が注目されています。従来のプロコード開発と呼ばれる、プログラミングを主体としてアプリケーション開発を行うスタイルではなく、ツール・サービスを活用し、プログラミングなしでアプリケーションを開発することをノーコード開発と呼び、少しのプログラミングで開発することをローコード開発と呼びます[4]

  • (※
    ローコード、ノーコードは厳密には異なりますが、本ブログでは以降「ローコード」とまとめて記述します。)

書籍『ローコード革命』[5]では、DXを実現するためには圧倒的なスピードが重要である点、内製化・自社開発の推進、開発の手法の見直しにより組織の在り方の変革を実現するためのツールとしてローコード開発が挙げられています。

日本国内においては、ローコード開発は年々拡大しています。ITRのレポートでは、以下の通り報告されています。new window[6]

  • ローコード/ノーコード開発市場の2020年度の売上金額は515億8,000万円、前年度比24.3%増
  • 同市場のCAGR(2020~2025年度)は24.4%を予測
  • 内製化による開発コストの大幅な削減にも寄与

ソースコードを書くことを主体としてシステムを開発するプロコード開発と比べて、ローコード開発ではUIの設計は直感的であり、総製造量も少なくなります。また、テストも共通プラットフォームの中で自動化されていくことが期待されています。そうしたときに、ローコード開発によって開発されたシステムのセキュリティについて考慮すべきことは何でしょうか。

2.ローコード開発で活用する機能

セキュリティを考える前に、まずローコード開発で活用する機能群について説明します。
ローコード開発では、共通機能を提供するようなソフトウェア群をサービスとして提供する、ローコードプラットフォームを用いるケースが多いです。

ローコード開発では、例えば以下のような点が期待されています。

  • アプリケーションの迅速なプロトタイピング・システム開発
  • プログラミングの知識への依存度を下げた開発
  • 既存のビジネスアプリケーションとの連携
  • 開発したアプリケーションの迅速な提供

これらを実現するために、開発を実施するローコードプラットフォームでは、例えば以下のように、共通的に利用可能な機能群を有しています。(『Gartner Magic Quadrant for Enterprise Low-Code Application Platforms』new window[7]にて掲載されているいくつかのサービスより抜粋)

(表1: ローコードプラットフォームが有する機能の例)

機能 説明
UI コンポーネントやフローを組み合わせ、UIを開発する機能
デプロイ機能 開発したシステムを、所定の環境にデプロイし、利用できるようにする機能
多要素認証 複数の認証要素を組み合わせてユーザ認証を実現する機能
アクセス制御 システムにアクセスする利用者の権限を管理し、適切なユーザにアクセスを許可する機能
暗号化 システムが利用しているファイルやデータの暗号化を行う機能
ログ管理 定められた一定期間のログを保管し、障害調査・監査などに活用できるようにする機能
アンチウイルス システムで扱うファイルとして有害なものを含まないかどうかをチェックする機能
データバックアップ 問題発生時にロールバック等が行えるよう、バックアップを取得する機能

3.OWASP Top10 Low-Code/No-Code Security Risks

それでは、ローコード開発で考慮されるセキュリティ要素について説明します。
ここでは、ローコード開発において想定されるリスクの参考として、『OWASP Top10 Low-Code/No-Code Security Risks』new window[8]を紹介します。

本レポートは、OWASP Foundationにおいて、ノーコード/ローコードで開発されたアプリケーションに対するセキュリティソリューションの提供などを行うZenity社 new window[9]がプロジェクトスポンサーとなっているIncubator Projectで、2022年7月5日に初版がリリースされたものです。ローコード開発プラットフォームにおける顕著なセキュリティリスクや課題、およびそれらの対策例などがTop10の形式でまとめられています。

(表2: OWASP Top 10 Low-Code/No-Code Security Risks)

No 名前 想定するリスクの説明
LCNC-SEC-01 アカウントのなりすまし
(Account Impersonation)
アプリケーションに埋め込まれたアカウントとユーザアカウントの不整合により権限外のアクセスが発生する
LCNC-SEC-02 認証の誤用
(Authorization Misuse)
相互接続されるアプリケーションにおいて、意図しない権限あるいは操作ミスにより、情報/サービスにアクセスが出来てしまう
LCNC-SEC-03 データ漏えいと予期しない結果
(Data Leakage and Unexpected Consequences)
複数のシステムでのデータ同期の過程で、システムが本来持つべきでない情報の漏えいが発生する
LCNC-SEC-04 認証と安全な通信の失敗
(Authentication and Secure Communication Failures)
サービス間の接続確立の際に、適切な権限設定が行われていない
LCNC-SEC-05 セキュリティ設定のミス
(Security Misconfiguration)
セキュリティに関する設定値を誤る、あるいはベストプラクティスに沿った設定がなされていない
LCNC-SEC-06 インジェクション対策の失敗
(Injection Handling Failures)
ユーザからの入力の検証が不十分で、攻撃的なクエリやマルウェアが送り込まれる
LCNC-SEC-07 脆弱で信頼できないコンポーネント
(Vulnerable and Untrusted Components)
プラットフォームに含まれるコンポーネントに、信頼できないアプリケーションが含まれる
LCNC-SEC-08 データおよび秘密情報管理の失敗
(Data and Secret Handling Failures)
データや秘密情報を、他のアプリケーションが閲覧できる形で格納されてしまい、権限外のアクセスが発生する
LCNC-SEC-09 資産管理の失敗
(Asset Management Failures)
開発の簡易性、メンテナンスコストの低さから、組織内に急速にアプリケーションが増加し、適切に管理されていない状態となる
LCNC-SEC-10 セキュリティログと監視の失敗
(Security Logging and Monitoring Failures)
包括的なログ・監査証跡の生成機能が無い。機能によってはログが不十分で、問題発生時に追跡ができない

各項目で想定されている攻撃シナリオの解釈によっては、リスクが存在する箇所は異なると考えますが、代表的な攻撃シナリオを元にそれぞれの項目を模擬的なシステムに対してマッピングした一例が下図になります。

(図1: リスクの図示例)

これに対して、Webアプリケーションセキュリティ全般においてより有名で長い歴史を持つOWASP Top 10 new window[10]と比較します。OWASP Top 10は、Webアプリケーション全般のセキュリティのリスクについてのレポートです。同じくTop 10の形式でリスクに順位付けがされています。初版は2003年に公開されており、以降数年ごとに更新があります。なお、2022年現在の最新版は2021年に公開された「OWASP Top 10 - 2021」です。

(表3: OWASP Top 10 - 2021)

No 名前 想定するリスクの説明 前回比
(2017年)
A01:2021 アクセス制御の不備
(Broken Access Control)
アクセスポリシーの不備により、許可していない行動が行われる (5)
A02:2021 暗号化の失敗
(Cryptographic Failures)
暗号化の欠如あるいはデータの保持要件を満たさない形で暗号化が実施され、データが露出する (3)
A03:2021 インジェクション
(Injection)
ユーザから不正なクエリが実行され、情報の奪取や破壊行動が行われる ↓(1)
A04:2021 安全が確認されない不安な設計
(Insecure Design)
要件が適切に考慮されていない設計が行われ、様々な攻撃シナリオを引き起こす
A05:2021 セキュリティの設定ミス
(Security Misconfiguration)
セキュリティ設定の不備により、設定を悪用した情報の奪取や破壊行動が行われる (6)
A06:2021 脆弱で古くなったコンポーネント
(Vulnerable and Outdated Components)
脆弱性パッチが適用されておらず、未修復の部分を起点に攻撃活動が行われる (9)
A07:2021 識別と認証の失敗
(Identification and Authentication Failures)
IDに関する攻撃が成立する構造や認証情報の扱いが不適で、権限外のアクセスが発生する ↓(2)
A08:2021 ソフトウェアとデータの整合性の不具合
(Software and Data Integrity Failures)
CI/CDパイプラインにおいてソフトウェアあるいはデータの不整合が含まれることにより、攻撃者は攻撃の機会を得る
A09:2021 セキュリティログとモニタリングの失敗
(Security Logging and Monitoring Failures)
適切にログ・監査情報が記録・利用されておらず、システムに対するチェックが適切に行えない (10)
A10:2021 サーバーサイドリクエストフォージェリ(SSRF)
(Server Side Request Forgery(SSRF))
公開サーバを起点とし、内部ネットワーク・サービスに影響するような不正なアクセスが行われる

項目ごとの詳細を確認すると、これらはローコード開発のみを対象としたリスクではないため、想定されるケースや防止方法などが多岐に渡りますが、ローコード開発のケースと類似の項目も見られます。

改めて、2つの項目を並べて比較します。

(図2: Low-Code,No-Codeと通常のTop 10の比較)

順位付けの基準、及び記述の粒度がそれぞれ異なるため、一概に比較することは難しいですが、いくつか特徴的な差異が伺えます。(本節では以下、それぞれ「ローコードTop10」と「Top10」と表記します。)

  • ローコードTop10とTop10で共通と考えられるリスクは、以下の4種類があります(図2のピンクの項目)
    ・セキュリティ設定のミス
    ・インジェクション
    ・脆弱なコンポーネントの使用
    ・ログの活用

    このうち、インジェクションはTop10では3番目ですが、ローコードTop10では6番目となっており差があります。これは、ローコード開発では開発者によるコーディングに起因するインジェクションの発生が抑えられるから、という見方もできると考えています。ローコード開発においてもインジェクションは存在しますが、フォーム自体は共通部品化されております。よって、そのフォームの品質は一定以上に保たれる傾向はあります。逆に、ローコードプラットフォーム自体の品質が低い場合は、インジェクションの可能性は高まるということも考えられます。
  • ローコードTop10の1~4位は、ローコードプラットフォーム上で利用するコンポーネントの活用方法や、コンポーネントやサービス間の接続不備に関することです。一方、Top10において同様のリスクは、1位「アクセス制御の不備」、4位「安全が確認されない不安な設計」、7位「識別と認証の失敗」などに分かれて散らばっています。

    ローコードプラットフォームは、多くのセキュリティ機能を提供しています。しかし、すべての箇所で自動的に適切な設定が行われるわけではありません。つまり、コードの量が少ないということは、開発スキルが不要ということと同義ではなく、ローコード開発においても、セキュリティに対する設計・テストが必要な点は変わりません。

    ローコード開発の特徴である実装の速さが悪い方向に働き、適切な開発プロセスまでもがおろそかになってしまうと、設計フェーズで検討すべきだったセキュリティ要件(この場合では、認証/認可・データフロー設計など)が漏れてしまうケースがあります。表面上のビジネスロジックとしては動作しているように見えるため、セキュリティ上の問題が把握されないままリリースされるケースがリスクとして高い順位で想定されていると考えます。
  • Top10では2位に位置する「暗号化の失敗」については、ローコードTop10ではランク外でした。セキュリティ機能のひとつとして暗号化を備えたローコードプラットフォームは多く、適切に使用することでセキュリティリスクは減らせられるから、と解釈されたと考えられます。

以上、一面的な考察ですが、他にも多数の解釈は出来ると思いますので、是非一度、どういった側面があるかご一考いただけると幸いです。

4.各種認証制度

ローコードプラットフォームを活用すると、ここまで登場したリスクが発生する可能性に関して、コーディングに起因する部分が減らせます。一方で、外からは見えないプラットフォームの中の部分のセキュリティにも気を付ける必要があります。コーディングによって実現していた機能の一部をローコードプラットフォームが有する機能に任せるということは、開発者はユーザに対して、その機能を提供するプラットフォームベンダーのセキュリティのレベルを証明する必要があります。それを支えるのが、一つには各種認証制度です。

有名なローコードプラットフォーム製品が取得している認証には、例えば以下があります。 (『Gartner Magic Quadrant for Enterprise Low-Code Application Platforms』new window[7]にて掲載されているいくつかのサービスより抜粋)

  • ISO/IEC 27000シリーズ (ISO/IEC 27017 , ISO/IEC 27018他)
  • SOC報告書( SOC 1 Type II 他)
  • Fed RAMP認定
  • HIPAA法への準拠
  • CSA STAR認証
  • DoD影響レベル4

ローコードプラットフォームを選択する際には、開発するシステムが利用される業種やシステムの特徴、サービスとして確保したいセキュリティレベルなどの保証のために、期待する認証を取得しているか、という点は重要になるでしょう。

5.まとめ

DXを推進する中で、新しい開発方式として注目を集めているローコード開発とその活用の際のリスクについて、新たに公開された「OWASP Top 10 Low-Code/No-Code Security Risks」を紹介しました。また既存のOWASP Top 10とリスク項目を比較し、一般的なWebアプリケーションに対するリスクとの違い・特徴について考察しました。

認定を受けたローコードプラットフォームを用いることで、共通部品のセキュリティ品質はプラットフォーム側で担保されるため、セキュリティ実装の効率を改善できる可能性があります。

ローコードプラットフォームの使用に対するリスクとしては、その使い方が不適切(誤用や設定ミス等)で発生することが現時点では重視されているようでした。今回紹介したローコードTop10は、まだ登場したばかりです。今後の更新も期待されることから、ローコード開発の一つの参考としていただければ幸いです。

参考:

  • [4]
    超高速開発の本命 ローコード/ノーコード 最前線
    日経クロステック(2021). 日経BP
  • [5]
    ローコード革命
    篠田ヒロシ (2020). マイナビ出版

執筆者プロフィール

山本 和也(やまもと かずや)
セキュリティ技術センター セキュア技術開発グループ

スクラムマスターとしてセキュリティSaaSのアジャイル開発、及びNEC社内外にてアジャイル開発におけるセキュア開発の推進活動に従事。CISSP、CISA、CSM、LSM、LSPO等を保持。NEC将棋部に所属。

執筆者の他の記事を読む

アクセスランキング