オープンソースは危険なのか

公開日 2021年10月22日

更新日 2021年11月17日

プロポーザルの機能要件への対応

プロポーザルの機能要件

自治体ホームページ再構築のプロポーザルにて、機能要件一覧に次のような仕様が記載されていることがあります。

「セキュリティ対策、改ざん防止を考慮し、一般にソースが開示されたオープンソースCMSではないこと。」

この要件について、当社としてはJoruri CMS 2020のソースコードは配布費用をいただいたユーザー様のみに配布していますので、「一般にソースが開示されたオープンソースCMS」には該当しないと考えています。

Joruri CMS 2020をオープンソースライセンスでご利用いただくのは、導入する自治体様、ベンダー様の利便性を高めるためです。
CMSのライセンスの規約として、オープンソースライセンスではどうしても不都合という場合は、商用ライセンスでのご提供を検討いたしますのでご連絡ください。

なお、ベンダー様におかれましては、導入する自治体様がオープンソースソフトウェアは不都合とお話の場合、ライセンス形態が不都合なのか、ソースコードが公開されていることが不都合なのかなど、技術的な詳細をご確認ください。

自治体公式サイトのCMSのセキュリティに関しては、以下の列記するような多様な論点がありますが、すべてのオープンソースソフトウェアのCMSを排除するほどの理由が思い当たりません。
下記の内容を踏まえて、自治体様がどのような観点からオープンソースソフトウェアにはリスクがあると考えているかを説明いだだいてください。

スクリプト言語であることが問題なのか?

Joruri CMS 2020は配布手続きを行ったユーザーのみに配布しているため、不特定多数にソースコードを公開していません。
再配布される可能性はありますが、日本の自治体向けのCMSという性質から、ある程度限定した範囲で利用されるため、広く全世界に拡散するわけではありません。

また自治体サイトを構築するベンダー様が、当社以外のサイトにて公開されているJoruri CMS 2020のソースコードを公式サイトの構築に利用することはほぼないと考えています。コードが欠損していないかなど、いろいろな心配をするなら、配布手数料を支払い当社から配布したものを使うのが安心と判断すると思います。

攻撃者がソースコードを入手してそれを解析し、その問題点を発見して専用の攻撃ツールを作成し、攻撃を実行する可能性はそれほど高くないと考えています。
また攻撃が行われたとしても、下記に記載したように自治体公式サイトは比較的高度なセキュリティ対応が行われているため、ソースコードが公開されていることに起因する問題が発生し、具体的な被害を被る可能性は非常に低いと考えています。

商用ライセンスのCMSであっても、プログラミング言語がPHPであり、ソースコードを暗号化しないで配置している場合、ソースコードを開発会社の社外に配布していることとなります。
製品を購入すると、商用CMSでも暗号化していなければ、ソースコードを解析することができます。

スクリプト言語で開発され、ソースコードを暗号化していないCMSは不可ということであれば、技術的には合理性があります。
またはクラウドサービスのみで提供し、パッケージ販売していないCMSという条件であれば、ソースコードが開発会社の外部に出ていない主旨に合致します。

冗長構成ではCMSはローカルネットで運用

冗長構成でサーバーを構築した場合、負荷分散サーバーを前段に配置し、CMSにはグローバルIPを割り振らずローカルIPで運用します。
当社標準の構成の場合、問合せフォームを受け付けるアプリケーションサーバーのCMSも、Webサーバーのリバースプロキシーを経由してローカルネットに配置しています。

このような構成でCMSがハッキングされるのであれば、ローカルネットに侵入されていることとなり、そもそもネットワーク構成に重大な問題があると言えます。
ハッカーがローカルネットに侵入した場合、CMSのソースコードを改ざんするという手間がかかることは行わず、データベースを不正アクセスしたり、公開している静的HTMLを改ざんすると思われます。

ローカルネットに侵入された場合に、CMSのソースコードを改ざんから防ぐという考え方は、前提と対策が正しくありません。

セキュリティクラウドでのセキュリティ対策

自治体公式サイトは各都道府県ごとに共有しているセキュリティクラウドを経由してWebサーバーにアクセスする仕様に変わりつつあります。
セキュリティクラウドには、WAFなどを含むネットワーク管理・監視のしくみが備わっており、不正なアクセスを検知・排除する機能があります。
各種のリスクへの対策は、セキュリティクラウドとWebシステムとで分担する構成となっています。
各種リスクへの対策は相応するシステムを構成をして行うもので、もはやCMS単体の仕様を超えたレベルにあります。

自治体サイトは静的HTMLでの運用

通常、自治体サイトは静的HTMLで運用しているため、Webサーバーへのアクセスから動的にデータベースへのアクセスが行われているわけではありません。
WebページのHTMLファイルはWebサーバーに配置され、セキュリティを担保しているのはCMSではなくWebサーバーです。
一般によく利用されるWebサーバーはオープンソースソフトウェアであるため、ソースコードが公開されています。

またページを生成する元のデータはデータベースに格納されています。
このデータベースも安価に利用できるものは、オープンソースソフトウェアです。

データベースへの接続情報はテキストファイルに記載されていますが、そのファイルのセキュリティはWebサーバーとOSが担保しています。
一般によく利用されているOSもオープンソースソフトウェアです。

Webシステムを安価に構築するには、オープンソースソフトウェアの利用は不可避です。
CMS周辺のデータを管理しているソフトウェアがオープンソースソフトウェアであることに関してどのように考えているかをご確認ください。

SQLインジェクションやクロスサイトスクリプティングへの対策

ソースコードが公開されていると、フォームのセキュリティ対策が抜けているところを見つけられて、攻撃される可能性があるというのがもっともらしい理由と思われます。
自治体公式サイトで利用されているフォームは、問合せの内容をデータベースに格納するだけの単純なものです。
一般的に自治体公式サイトには、公開画面からのログインとか、ユーザーが閲覧できる入力データの一覧画面はありません。

フォームを利用しているところは限定的であるため、プログラミングにおいて十分なチェックが行われており、セキュリティ面で問題ないプログラムとしています。

また万一フォームを経由してデータベースの内容を閲覧された場合に備えて、ユーザーが書き込んだデータは短時間に内部のデータベースに移動する仕様としています。
このため通常はフォームから書き込まれたデータを格納しているデータベースのテーブルにはデータが存在しません。
初期のJoruri CMSを開発する際、この件は徳島県様の要求仕様に記載されており、Joruri CMSではこの機能が最初から備わっています。

フォームへの攻撃の場合、ソースコードを解析せずに無作為に攻撃が行われる可能性が高いため、ソースコードを公開していない商用CMSであっても適切な対策が行われていないと情報が漏洩します。

フォームへの攻撃の安全性を高めたい場合は、データをデータベースに格納せず、登録と同時にメールで内部に送信する設定にする方法があります。
この場合、フォームの内容の細かいチェックをプログラムで行えないため、ユーザーの利便性は下がります。

ソースを非公開にすれば安全というわけではない

当社はCMSがオープンソースであることにより、セキュリティ上のリスクが発生するとは考えていません。
セキュリティ上のリスクは、ソースコードを非公開にしても解消するわけではありません。
セキュリティ対策は、各種のネットワークの設定や各システムの連携の設定を細かく積み上げていくことで実現します。

セキュリティ対策の問題をCMSがオープンソースであることにのみに帰着させ、CMSのソースコードを非公開にすれば安全という考えるのは危険です。
Webシステムがどのような要素で構成され、どこにどのようなリスクがあり、どの程度の対策を講じるかを技術的な視点で検討いただきたいと考えています。

ソースコードが公開されているので安心

自治体には公式サイト以外に、子育てサイト、移住サイト、就職支援サイトなど、多くのサブサイトが存在します。これらのサイトを1式のCMSで運用するのが最も効率的です。
Webサイトに関するセキュリティ対策、高負荷対応の費用を1式のWebシステムに集中投資でき、トータルの運用コストを低減できます。

新たにサブサイトを企画・制作する際、WebサーバーやCMSについて調査や費用の支払いを大幅に削減できます。
1つのCMSの操作方法を習得すると、部署異動によりそれまでとは異なるサイトを更新することになった場合も円滑に対応できます。

しかし多くのWebサイトをマルチテナントで1式のCMSで運用する場合、CMSを含めWebシステム全体に高い信頼性が求められます。
信頼性を確保するためのマクロな視点からすると、ソースコードが公開されていることは重要な要素です。
特定の民間企業が開発している商用CMSの場合、Javaなどのスクリプト言語でない言語で開発されていると、ソースコードを自治体には公開してくれません。
またデータベースの構造やWebサーバー、データベースサーバーとの連携の設定方法など、問題を調査するために必要な情報も、個別に依頼して対応してもらうこととなります。

このようにシステムが完全にブラックボックの状態では、何か大きな問題が発生した場合、導入したベンダーの調査をただ待つだけで、自治体側では技術的な対応ができません。
ソースコードや技術情報が公開されていると、導入したベンダー以外に調査を委託するなどの適切な措置をとることができます。

Topへ