カーネギーメロン大学のコンピューター科学者は、同じプログラムで複数のプログラミング言語を使用する方法を設計し、プログラマーが各機能に最適な言語を使用できるようにしました。この概念により、Web アプリケーションが今日直面する可能性のある最も深刻な脅威の 1 つであるコード インジェクション攻撃からサービスを保護できます。

ISR(ソフトウェア研究所)では、ジョナサン・アルドリッチ教授がWyvernと呼ばれるプログラミング言語を開発しています。これにより、それぞれがその分野に焦点を当てた複数のプログラミング言語を1つで使用してWebページやアプリケーションを構築できるようになります。そうすれば、SQL を使用してデータベースにリクエストを送信したり、HTML を使用してページをレイアウトしたりすることができます。それらはすべて、一種のサブ言語として機能します。この概念をよりよく理解するために、開発者の 1 人は次のような例えを示します。

>ワイバーンは非常に熟練した交渉人であり、人々のグループがうまく協力できるように言語を簡単に切り替えることができると言えます。私たちの新しいアプローチは、これまでの発展に大きな影響を与える可能性があると思います。
-ジョナサン・アルドリッチ、ISR准教授。

Wyvern は、プログラマが操作しているデータ型によって、プログラムで使用されているサブ言語を決定します。タイプは、英数字か、Web ページ上のデータベースからのデータのリクエストなどのより複雑なデータ構造かにかかわらず、データの形式を指定します。

その目的はセキュリティを強化することです

その目的はセキュリティを強化することです

Web ページを作成するときは、必ず多数の異なる言語を使用することになります。私たちが読む文字や目にする画像は、HTML または CSS を使用してレイアウトされています。おそらく、PHP からデータベースへのリクエストを介して、あるいはサーバーからファイルを直接アップロードすることによって行われます。多数の Web アプリケーションの検索バーに入力したときに表示される候補と、それとともに自動的に読み込まれるページは、JavaScript (通常は PHP や Python などの言語と組み合わせることで可能です。ログを記録するとおそらく可能です) Web サイト上のアカウントにデータを送信したり、オンラインで商品を購入したりする場合、私たちが行っていることは SQL リクエストをデータベースに直接送信することです。

一般的な方法は、文字列をコピーして SQL などの特殊な言語でコマンドを作成することです。この方法が正しく実装されていない場合、プロジェクトは現在直面する可能性のある 2 つの最も深刻なセキュリティ脅威に対して脆弱なままになる可能性があります。 1 つ目は、クロスサイト スクリプティングまたは SQL インジェクション攻撃です。たとえば、後者の場合、攻撃者は単純なログイン フォームを使用してコマンド「DROP TABLE」を挿入し、データベースから重要な情報を削除する可能性があります。

このような種類のセキュリティ問題を回避するには、多くの注意、経験、テストが必要ですが、Wyvern のようなこれに特化した言語があれば、作業が容易になる可能性があります。 Wyvern は、コンテキストによってさまざまな言語を理解して識別し、データとオブジェクトをリテラル (固定値) として扱います。このように、前の例に従って、値を渡す特別な関数を使用する代わりに、SQL コードを直接使用します。この概念を理解するのは複雑な場合がありますが、いくつかのコード例を見ることでアイデアを得ることができます

Wyvern はまだ完成しておらず、基本的なレベルでのみ実装されているため、多くの機能が完全に開発されていません。プロジェクトの背後で何が起こっているのかを知るには、GitHub のページにアクセスしてください。セキュリティ問題の解決に役立つものであれば何でも歓迎します。しかし、Wyvern 言語の開発者によって提案された概念を実際に見るための、よりユーザーフレンドリーなドキュメントが恋しいです。これに最も近いのは研究文書ですが、あまり理解しやすいものではありません。今のところ、私たちはそれがもたらすニュースに注意を払うつもりです。

参考資料一覧

  1. https://twitter.com/TTIVanguard/status/517361983931179011
  2. https://twitter.com/JAldrichCMU
  3. http://t.co/wgmoDDRycZ
  4. http://www.cs.cmu.edu/~aldrich/papers/maspeghi13.pdf
  5. https://github.com/wyvernlang/wyvern
  6. http://www.cs.cmu.edu/~aldrich/wyvern/
  7. http://t.co/o032GoP3dh
  8. http://es.wikipedia.org/wiki/Cross-site_scripting)*
  9. https://twitter.com/hashtag/TTIcode?src=hash

プログラミングのエスペラント語: ワイバーン言語・関連動画