Open19

GitHub Copilot のセキュリティ・ライセンスに関する懸念の調査メモ

miyajanmiyajan

GitHub Copilot を業務で利用するとなると、以下の 2 つの懸念がある。

  1. 自社のプライベートなコードが GitHub Copilot に送信され、学習モデルとして使われ、外部に流出してしまわないか
  2. 自動生成されたコードが学習モデルとなった public なコードのライセンスを侵害してしまわないか

1 については、コードの一部なら大きな問題にはならないと思われるが、もし一時的にエディタに貼っていたクレデンシャルが送信されて外部流出してしまう可能性があるのであればリスクが低いとは言いづらい。
2 については、ライセンスを侵害すること自体がリスクである。それに加えて、GitHub Copilot がよそのライセンスを侵害する可能性があることがあとから発覚した場合、それまでに GitHub Copilot を使って書かれたコードすべてを精査しなくてはいけなくなる可能性があるのもリスクと考えられる。

miyajanmiyajan

1 については、GitHub Copilot 公式サイトで以下のように書かれている。

Will my private code be shared with other users?
No. We use data, including information about which suggestions users accept or reject, to improve the model. We follow responsible practices in accordance with our Privacy Statement to ensure that your code snippets will not be used as suggested code for other users of GitHub Copilot.
(翻訳)私のプライベートコードは、他のユーザーに共有されますか?
いいえ。我々は、モデルを改善するためにデータ(どの提案をユーザーが受け入れるか、または拒否するかについての情報を含む)を、使用します。我々は、あなたのコードスニペットが GitHub Copilot の他のユーザーへの提案コードとして使用されないように、プライバシーステートメントに従って責任ある行動をとります。

これを見る限りでは、GitHub Copilot ユーザーが手元で書いてるプライベートなコードが外部に流出するリスクはなさそうに見える。

miyajanmiyajan

他には、プライベートなコードをそもそも送らない設定があるのかが気になるところ。調べると、GitHub の個人の Settings → GitHub Copilot に以下のような設定が存在するのが気になる。

Allow GitHub to use my code snippets for product improvements *
Allow GitHub and its affiliates to use my code snippets to research and improve Copilot suggestions, related models and product features. More information in Privacy FAQ.
(翻訳)GitHub が私のコードスニペットを製品改善のために使用することを許可する
GitHub とその関連会社が私のコードスニペットを使用して、Copilot の提案、関連モデル、製品機能を調査・改善することを許可する。詳細はプライバシー FAQ へ。

Privacy FAQ には以下のように書かれている。

How can I control the use of my data collected by Copilot?
GitHub Copilot gives you certain choices about how it uses the data it collects. User engagement data, including pseudonymous identifiers and general usage data, is required for the use of GitHub Copilot and will continue to be collected, processed, and shared with Microsoft and OpenAI as you use GitHub Copilot. You can choose whether your code snippets are collected and retained by GitHub and further processed and shared with Microsoft and OpenAI by adjusting your user settings. Additional information about the types of telemetry collected and processed by GitHub Copilot can be found in What data does GitHub Copilot collect? below.
You can also request deletion of GitHub Copilot data associated with your GitHub identity by filling out a support ticket. Please note that future data collection will occur with continued use of GitHub Copilot, but you can control whether your code snippets are collected, processed, and retained in telemetry in your Copilot user settings.
(翻訳)どうすれば Copilot が収集した私のデータの使用を制御できますか?
GitHub Copilot は、収集したデータの使用方法について、あなたにいくつかの選択肢を提供します。ユーザーエンゲージメントデータ(仮名の識別子や一般的な使用データを含む)は、GitHub Copilotの使用に必要であり、GitHub Copilot を使用すると収集、処理され、Microsoft と OpenAI に共有されます。あなたは、ユーザー設定を調整することにより、あなたのコードスニペットを GitHub が収集・保持し、さらに処理されて Microsoft と OpenAI に共有されるかどうかを選択できます。GitHub Copilot に収集・処理されるテレメトリーの種類についてのさらなる情報は、下記の「GitHub Copilotはどのようなデータを収集するのですか?」にあります。
あなたは、サポートチケットに記入することで、あなたの GitHub アイデンティティに関連する GitHub Copilot データの削除を要求できます。GitHub Copilot を継続して使用すると、将来的にデータ収集が発生することに注意してください。しかし、Copilot のユーザー設定で、コードスニペットを収集、処理、テレメトリーに保持するかどうかを制御できます。

これらを見ると、個人設定を変更することでこちらの手元のコードスニペットを GitHub Copilot の改善に使われることはなくなりそう。

しかし、FAQ の General には以下のようにも書かれている。

How does GitHub Copilot work?
OpenAI Codex was trained on publicly available source code and natural language, so it works for both programming and human languages. The GitHub Copilot extension sends your comments and code to the GitHub Copilot service, and it relies on context, as described in Privacy below - i.e., file content both in the file you are editing, as well as neighboring or related files within a project. It may also collect the URLs of repositories or file paths to identify relevant context. The comments and code along with context are then used by OpenAI Codex to synthesize and suggest individual lines and whole functions.
(翻訳)GitHub Copilotはどのように動きますか?
OpenAI Codex は、一般に公開されているソースコードと自然言語で学習させたので、プログラミング言語と人間の言語の両方で動作します。GitHub Copilot 拡張は、あなたのコメントとコードを GitHub Copilot サービスに送信します。そして、以下の Privacy で説明するように、コンテキストに依存します。つまり、編集中のファイルや、プロジェクト内の隣接するまたは関連するファイルのコンテンツに依存します。また、関連するコンテキストを識別するために、リポジトリの URL やファイルパスを収集することもあります。コンテキスト内のコメントとコードは、OpenAI Codex によって、個々の行や関数全体を統合して提案するために使用されます。

ここまでを見ると、個人設定で自分のプライベートなコードを GitHub Copilot の改善には使わないように設定できるけど、そもそもコードサジェストのために情報を送信する必要があるので、データ送信自体を完全に止めることはできなさそうに見える。

miyajanmiyajan

1 の懸念についてまとめると、GitHub Copilot を利用しているユーザーの手元のプライベートなコードが他のユーザーに共有されることはないと考えられる。しかし、手元のコードは、GitHub Copilot 側に送信される。
GitHub Copilot に手元のコードが送信されることのリスクをどう捉えるかは人によって意見が分かれそうではあるけど、個人的には許容範囲内に思う。

ここからは 2 の懸念について調べていく。

miyajanmiyajan

https://www.theverge.com/2021/7/7/22561180/github-copilot-legal-copyright-fair-use-public-code
The Verge による 2021/07/07 の記事。

GitHub の元 CEO である Nat Friedman は、以下の見解を示している。

In general: (1) training ML systems on public data is fair use (2) the output belongs to the operator, just like with a compiler.
(翻訳)一般的には、(1) 公開データを用いた機械学習はフェアユースの範疇である、(2) 出力はコンパイラと同様にオペレータに帰属する。

一方で、US でも公開データによる機械学習をフェアユースとする判例はないとのこと。
類似の判例としては、Google Books が 2 億冊以上の本の文字検索データベースを作ったことは、読者や著者に広く利益をもたらすとして、最高裁はフェアユースの主張を支持したとのこと。
なので、公開データを機械に読み込ませるところまではあまり問題にならないと考えられるのでは、とのこと。

しかし、機械の出力についてはまだ曖昧で今後明らかになっていくもので、機械学習の出力によって著作者から奪ったものがあればその支払いを命じられる可能性はある、とのこと。

miyajanmiyajan

https://atmarkit.itmedia.co.jp/ait/articles/1903/27/news013.html
@IT による 2019/03/29 の記事。これは日本での著作権法の話。(GitHub Copilot はサーバーが海外にあるはずであり、日本の法律が適用されない部分もあるので、参考までに)

柿沼氏が重要視するのは「著作権法第三十条の四」だ。この条文により「情報解析」を目的とする場合は、著作権者の利益を不当に害しない場合において、方法を問わず、著作物を利用できる

ここから、単純に機械学習に公開データを使うこと自体は著作権法上の問題はないと考えられる。(ただし記事中にもある通り、サイトの利用規約違反になる可能性はあるし、そのデータを利用することで著作権者の利益を侵害する場合は著作権法上でも問題になりうる)

「データセットを基に生成されたAIモデルは誰のものか?」は、「『AIモデル(学習済みモデル)』という言葉の意味をどう定義するかによるが、『学習済みパラメーターが組み込まれた推論プログラム』と定義すると、学習データを提供した者ではなく、AIモデルを開発(創作)した者がAIモデルに関する各種知的財産権を持つことになると思われる」

公開データを機械学習したモデルは、モデル開発者側が知的財産権を持つことになる。

「AIモデルが生成したコンテンツの権利は誰が有するのか?」は、「日本の著作権法は、著作物として保護されるには『人間が創作すること』が前提になっているので、モデルが完全に自律的に生成したコンテンツは、著作権が発生しないことになる。そのため、生成されたコンテンツは誰でも利用できることになるだろう」

機械学習から完全に自動で生成されたコンテンツには著作権が発生しない。(生成後に人の手によって改変されたらまた違う話になると思われる)

「AIモデルが生成したコンテンツがAIモデル生成に利用した著作物(入力データ)の1つに偶然似てしまった場合、当該著作物の著作権侵害にならないのか?」については、「AIモデル生成に利用したデータ著作物(入力データ)と全く無関係に出力された訳ではなく、入力データにアクセスしていることは間違いないため、著作権侵害に関する要件の一つである『依拠性』があると判断され、著作権侵害になる可能性がある。ただし、ここはさまざまな考え方があり得るところなので、確たる結論は出せない」

そして、やはり機械学習から生成されたコンテンツについては学習データと完全に無関係ではなく、依拠性があると判断され著作権侵害になる可能性がある。しかし、やはり明確な結論は出せないとされている。

miyajanmiyajan

https://aws.amazon.com/jp/blogs/aws/now-in-preview-amazon-codewhisperer-ml-powered-coding-companion/
https://aws.amazon.com/jp/blogs/machine-learning/introducing-amazon-codewhisperer-the-ml-powered-coding-companion/
AWS から出た GitHub Copilot 風サービス、Amazon CodeWhisperer の記事。

こちらは OSS だけでなく、Amazon 内部のリポジトリや API ドキュメント、フォーラムを学習データにしているとのこと。
現在はプレビュー期間中で、無料。
JetBrains, VSCode, AWS Cloud9 などから利用できる。
Python, Java, JS をサポート。

そして、既存の学習データに似ているコードスニペットが生成される場合は、利用者にそのスニペットの元となるリポジトリとライセンス情報が通知され、自分のコードに取り込むかの判断材料になる。

また、ステレオタイプに基づいたバイアスをコードから排除する技術も実装されてるとのこと。(詳細はちょっとよくわからない)

miyajanmiyajan

https://storialaw.jp/blog/8267
自然言語系 AI サービスの提供事業者が著作権侵害の責任を問われるかについての記事。

GitHub Copilot の自分の懸念は利用者側が著作権侵害になるかなのでちょっとずれるけど、書かれてる法的解釈はとても参考になる。

miyajanmiyajan

https://felixreda.eu/2021/07/github-copilot-is-not-infringing-your-copyright/
GitHub Copilot は著作権を侵害しないとする 2021/07/05 の記事。筆者は元欧州議会議員で著作権の改革に関わった人。

テキスト&データマイニングは著作権侵害ではないし、生成される短いコードスニペットは独創性を認められなさそう、とのこと。また、著作権を拡大解釈すると機械的に大量のパターンのコードスニペットを生成して著作権を主張される危険性とかも出てくるので危険、という話。

miyajanmiyajan

https://fossa.com/blog/analyzing-legal-implications-github-copilot/
オープンソースのコンプライアンスなどの分野でソフトウェア企業を支援することを専門とする IP 弁護士 Kate Downing 氏に Copilot について質問した 2021/07/14 の記事。

まず、GitHub のコードを使って学習するのは、コードのライセンスに関わらず、利用規約で製品の改善のために使うことを同意していることになるので、著作権を侵害しない、とのこと。GitHub 以外のコードを使うのはフェアユースか裁判所で判断してもらう必要があるけど、Google Books の事例があるから有利、でも法廷で決着するまではわからない、とのこと。

次に、GitHub Copilot が生成するコードについて。こちらは、コードが長くて複雑になるほど著作権で保護される可能性が高くなるとのこと。逆に、短ければ独創性を認められない。また、実際にコーパスのコピーであるかも重要とのこと。なんにせよ、現状で確信を持って評価はできない、とのこと。

予防策としては、明らかに他のコードからコピーされたコード(それっぽいコメントが付いているとか)の提案は使用しないようにするとか。

miyajanmiyajan

https://matthewbutterick.com/chron/this-copilot-is-stupid-and-wants-to-kill-me.html
GitHub Copilot はオープンソースを侵害するとする 2022/07/25 の記事。

GitHub のドキュメントの以下の部分で、IP スキャンをユーザーの責任としているけど、IP スキャンをするために必要なコードのライセンス情報を追跡できないようにしていることを問題視している。

You are responsible for ensuring the security and quality of your code. We recommend you take the same precautions when using code generated by GitHub Copilot that you would when using any code you didn't write yourself. These precautions include rigorous testing, IP scanning, and tracking for security vulnerabilities.
(翻訳)あなたのコードのセキュリティと品質を確保するのはあたなの責任です。GitHub Copilot で生成されたコードを使用する際は、自分で書いていないコードを使用するときと同じ予防措置を取ることをおすすめします。これらの予防措置には、厳密なテスト、IP スキャン、セキュリティ脆弱性の追跡が含まれます。

これに対し、コードのライセンス情報を検証可能にすることを提案している。Chain of Custody という考え方らしい。

miyajanmiyajan

GitHub Copilot の設定には、パブリックなコードに完全に一致する提案をブロックするオプションがある。

これをブロックするように設定すれば著作権侵害のリスクを緩和できる可能性があると考えられる。しかし、ブロックする設定にしたところで完全に著作権侵害を防げる保証はない。(元のコードと完全一致でなくなれば著作権侵害ではなくなる、という単純な話ではないはずなので)

また、この設定をチームメンバー全員に強制することは保証できない。
2023/04/02 追記
GitHub Copilot for Business ならば Organization 単位でパブリックなコードに完全一致する提案をブロックする設定ができる。GitHub Copilot for Individual では個人単位での設定しかできない。

miyajanmiyajan

ここまで 2 の懸念についていろいろ調べたが、やはり現時点で明確な判断は難しいと思った。

まず、GitHub Copilot が生成したコードに創作性が認められるか、というのが一つの論点になりそう。ただし、生成されたコードを見て創作性が認められるかを素人が判断するようなものではないと思われる。なので、これについてはなにかしら公式な見解が示されるまでは、創作性が認められるかもしれないし、認められないかもしれない、と考えるしかなさそう。

次に、生成されたコードがライセンス侵害にならないか検証できるか、という論点が考えられる。Amazon CodeWhisperer みたいに元となるコードのライセンス情報が表示されるような改善はあれば嬉しいところ。(ただし、Amazon CodeWhisperer が表示する情報がどこまで正確なのかとかはわからない)

とはいえ、普段チームメンバーが書いたコードをレビューするときにライセンス侵害していないか気にしているかとか、Stack Overflow のコードを参考にするときにそのコードの創作性を気にしているかとか言われると、感覚的に怪しい以上のことは判断できていないと思われる。じゃあ Copilot が生成するコードも同じぐらいの注意を払えば十分なのかというと、やはり断言は難しい。

リスクがどれぐらい高そうかというと、実際に著作権侵害が認められるかというと個人的にはとても可能性は低そうに思うけど、もしも認められた場合のリスクが大きいのが悩ましいところ。(倫理的にも思うところがあるだろうし)

やはり公式から GitHub Copilot を使用しても著作権侵害にはならないという法的根拠が示されるか、生成されたコードに対してこういう注意を払えば十分ですよという公式見解が示されないと、まっとうな会社の法務からは GitHub Copilot を使っていいよとは言いづらいだろうなという感想。GitHub 社にはもう少し情報を出してほしいところ🙏

miyajanmiyajan

https://githubcopilotinvestigation.com/
GitHub Copilot がオープンソースの作者とエンドユーザーに対する法的義務に違反しているとして訴訟を起こす可能性について調査中とのサイトが出ました。

Copilot の現状の問題点について、とてもよく整理されていると思います。

まず、一つ目の問題点は、Copilot のトレーニングデータについてです。

Copilot は、GitHub のパブリックリポジトリを学習データとしています。
OSS ライセンスは帰属の表示などなにかしらの義務を課すものが大半ですが、Copilot はそういったことは行っていません。

GitHub としては、この件についてはフェアユースの範疇と主張しています。
しかし、Copilot がフェアユースの範疇であるという法的根拠は現時点ではなにもないです。

二つ目の問題は、Copilot を使用することによってユーザーに課されることになるライセンス義務についてです。

Copilot ユーザーは、Copilot が生み出すコードに対して責任を負うことになります。
Copilot がパブリックリポジトリのコードをそのまま出力することがある例は、すでに数多く示されています。(例1, 例2
これらのコードに対して、Copilot ユーザーがライセンス義務を負うことになる可能性は高いです。
しかし、Copilot が出力するコードは元のコードのライセンス情報が削除されてしまっているため、ユーザーがどのような義務を果たせばいいのかわかりません。

筆者は、AI によるコード支援ツールすべてを否定したいわけではなく、Copilot が OSS コミュニティから利益を得るだけでなにも貢献しないことを問題視しているようです。
たしかに、Copilot が生み出したコードに間違いを見つけても、そのコードの元となったコミュニティに報告する方法は今のところありません。

miyajanmiyajan

https://github.blog/2022-11-01-preview-referencing-public-code-in-github-copilot/

GitHub Copilot が、2023 年のメジャーアップデートで、サジェストされるコードに類似するパブリックリポジトリとそのライセンスなどの一覧を表示する機能を追加予定との話が出ました。
Amazon CodeWhisperer の機能と近そうです。

明言はされてないですが、このタイミングで出してくるということは、おそらくこの前の Copilot への訴訟を検討している話への対策なんですかね。

miyajanmiyajan

https://github.com/customer-terms/github-copilot-product-specific-terms

GitHub Copilot Product Specific Terms が公開されていました。

"3. Responsibility for Your Code." によると、生成されたコードの責任は Copilot 利用者に属しており、他社の権利を侵害していないか適切なポリシーとプラクティスを行うように書かれているように読めます。

  1. Responsibility for Your Code.
    You retain all responsibility for Your Code, including Suggestions you include in Your Code or reference to develop Your Code. It is entirely your decision whether to use Suggestions generated by GitHub Copilot. If you use Suggestions, GitHub strongly recommends that you have reasonable policies and practices in place designed to prevent the use of a Suggestion in a way that may violate the rights of others. This includes, but is not limited to, using all filtering features available in GitHub Copilot.

しかし、"4. Defense of Third Party Claims." によると、第三者から訴えられた場合は GitHub が最大 50 万ドルまで保護すると書かれています。ただし、(i) 訴訟が Copilot のコードによるものでない場合、(ii) 適切なレビュープロセスを行っていない場合、(iii) Copilot のフィルタリング機能を設定していない場合は、対象外のようです。

  1. Defense of Third Party Claims.
    Notwithstanding any other language in your Agreement, GitHub will defend you against any claim by an unaffiliated third-party that your use of GitHub Copilot misappropriated a trade secret or directly infringes a patent, copyright, trademark, or other intellectual property right of a third party, up to the greater of $500,000.00 USD or the total amount paid to GitHub for the use of GitHub Copilot during the 12 months preceding the claim. GitHub’s defense obligations do not apply if (i) the claim is based on Code that differs from a Suggestion provided by GitHub Copilot, (ii) you fail to follow reasonable software development review practices designed to prevent the intentional or inadvertent use of Code in a way that may violate the intellectual property or other rights of a third party, or (iii) you have not enabled all filtering features available in GitHub Copilot.
miyajanmiyajan

GitHub Copilot Product Specific Terms が変更され、第三者から訴えられた場合は GitHub が最大 50 万ドルまで保護すると書かれていた話が消えています。
最新版: https://github.com/customer-terms/github-copilot-product-specific-terms

  1. Defense of Third Party Claims.
    If your Agreement provides for the defense of third party claims, that provision will apply to your use of GitHub
    Copilot. Notwithstanding any other language in your Agreement, any GitHub defense obligations related to your
    use of GitHub Copilot do not apply if (i) the claim is based on Code that differs from a Suggestion provided by
    GitHub Copilot, or (ii) you have not enabled all filtering features available in GitHub Copilot.

過去版: http://web.archive.org/web/20230318174701/https://github.com/customer-terms/github-copilot-product-specific-terms

この変更についてなんらかの告知や説明がされているかは、自分は見つけられていません。もしご存知の方がいたら教えていただけると助かります🙏

miyajanmiyajan

マイクロソフト、お客様向けの Copilot Copyright Commitment を発表 - News Center Japan
https://news.microsoft.com/ja-jp/2023/09/12/230912-copilot-copyright-commitment-ai-legal-concerns/

Microsoft が Copilot Copyright Commitment を発表しました。
Copilot の出力を使用して第三者から著作権侵害で訴えられた場合、マイクロソフトは顧客を弁護し、訴訟の結果生じた不利な判決や和解の金額を支払うとのことです。
対象は、有償版の Microsoft の Copilot サービス(Word, Excel, PowerPoint の AI 支援機能も含む)、Bing Chat Enterprise、GitHub Copilot など。
利用者は、Copilot 製品のガードレールとコンテンツフィルター機能を有効にしている必要があります。

具体的にどのような補償がされるかは訴訟が起こってみないと詳細はわからないところはありますが、Copilot の利用者としては不安が軽減されるのではと思います。
Copilot に限らず AI が引き起こす結果からリスクを完全になくすことは難しいと思うので、AI サービス提供者側が問題が起きたときに補償する方向に進む流れは今後も増えそうですね。