NTTと早稲田大学(早大)の両者は6月16日、情報漏洩やサービス停止の原因となりうる、正規表現の文字列抽出機能の誤りを自動修正する技術を実現したことを発表した。

同成果は、NTT、早大 理工学術院 基幹理工学部の寺内多智弘教授らの共同研究チームによるもの。なお、NTTは正規表現の解釈を行うプログラムの振る舞いの定義と修正アルゴリズムの考案を行い、寺内教授らはNTTが考案した手法の理論的な正確さの検証を担当したとのことだ。

詳細は、6月17日から22日まで米国・フロリダで開催中のプログラミング言語分野の最難関国際会議「PLDI2023」にて口頭発表されるとともに、プログラミング言語に関する全般を扱うオープンアクセスジャーナル「Proceedings of the ACM on Programming Languages」に掲載された。

正規表現は、ほとんどのプログラミング言語に組み込まれて利用されており、WebサイトのURLに含まれるユーザIDの抽出など、さまざまなソフトウェアやサービスにおいて幅広く利用されている。

  • 正規表現を用いた文字列抽出の例。"ID="の後で末尾または"&"の前にあるアルファベット大文字または小文字から成る文字列を抽出する例。

    正規表現を用いた文字列抽出の例。"ID="の後で末尾または"&"の前にあるアルファベット大文字または小文字から成る文字列を抽出する例。(出所:NTT Webサイト)

しかし、正規表現を用いたプログラムの動作を人間が正確に理解することは困難であり、一般公開されているオープンソースのプログラムにも誤った正規表現が修正されないまま残っていることが報告されている。これらの誤った正規表現は、システムの誤動作を引き起こし情報漏洩やサービス停止の原因となる恐れがある。また、これを意図的に起こそうとするサイバー攻撃も顕在化しており、安定的なサービス提供を脅かすリスク要因にもなっている。

正規表現の主な用途には、文字列が意図したパターンと一致しているか判定する用途(以下「文字列チェック」)と、文字列から意図したパターンに一致する文字列を抽出する用途(以下「文字列抽出」)がある。文字列抽出は、文字列チェックよりも多様なバリエーションを扱うことが求められるため、曖昧性がない形で正確に正規表現を記述するには、高い専門知識が必要だ。しかし従来の理論では、機械的な修正が困難であることが知られており、すべての用途に対応した正規表現の自動修正は、これまで実現できていなかったという。

そこで研究チームは今回、正規表現を用いた文字列抽出を行うプログラムの振る舞いを厳密に定義して、その修正問題を形式化し、その修正問題を解くアルゴリズムを考案したとする。これにより、文字列抽出にも対応した正規表現の自動修正技術の実現に成功。新技術を用いることで、専門知識を持たない開発者でも誤った正規表現を修正することが容易になる上、情報漏洩やサービス停止などのリスクを低減させることが可能になるとしている。

  • 正規表現の用途における今回の成果の位置づけ。

    正規表現の用途における今回の成果の位置づけ。(出所:NTT Webサイト)