本日朝起きてTwitterをみたら、何やら某銀行の名前とGitHubがトレンドに出ていて、何事かなと調べてみたら、どうやら某銀行系のソースコードの一部がGitHubで見れる状態になっていたのだとか。
この問題が広く発覚したのは深夜の用で、私が朝に気が付いた時点では1次情報はすでに見れない状態になっていました。よって、情報はTwitterで拡散しているものをもとにしていますので、正確でない部分や全くの誤報ものがあるかもしれないことをあらかじめご了承ください。
まだ経験が少ない駆け出しエンジニアや、開発のことが良くわからない経営者に読んでほしいと思います。
問題の経緯
現在わかっている事件の経緯をまとめます。
まず、今回システムのソースコードを無断で公開していたとみられる人物が、SNS上で他のユーザーと口論となったということが発端のようです。
その口論がきっかけで、問題の人物と対立していたほかのSNSのユーザーによって、身元情報、本名や勤務している会社が特定され、さらにその人物がGitHubにあげていたソースコードの中に、大手企業の名前があることが見つかり、ソースコードの流出が発覚した。
といったことがおおまかな経緯です。
ソースコード流出による被害は?
それでは、ソースコードが流出したことにより、ソースコードが流出した大手企業のサービスを使っているユーザーが、セキュリティーやプライバシーが侵害されることがあるのでしょうか?
実際に流出したコードを見たわけではないので、何とも言えません。一部情報によると、”社内ツール”的なもののようなので、直接的な被害に発生する可能性は低いとみられますが、しばらく情報を注視する必要はあるでしょう。
また、ソースコードが流出したからといって、セキュリティーリスクがさらされるということは通常はあり得ません。そもそも、世の中にはオープンソースといってソースコードが全世界に公開されていて、だれでもコードを読んだり改良したりすることができるものも多いです。そういったもののセキュリティーが低いかというとそんなことはありません。むしろ、多数の目でみることでソースコードのセキュリティーホールの発見率を高めているのです。
ただ、今回のような、本来クローズドにしておかなければならないソースコードはどうなのかというと、これは何とも言えません。
まともなエンジニアが書いたコードであれば大丈夫だとは思いますが・・・。
世の中には、たとえばデータベース接続情報を書いた設定ファイルをGitにあげちゃったり、そもそも設定ファイルなんかなくてソースコードに直書きしてたりする人もいますからね。まぁ、そういった場合でも、特定の環境からしか接続できないような設定にして、二重三重の対策が取られていることが普通です。
影響があるとすれば、クライアントからお漏らしした本人の間の関係企業すべての信用が落ちるということぐらいかなと思います。
なぜ流出したのか?
では、なぜソースコードがGitに上がっていたのでしょうか?
もともと開発会社でGitを使っていて、リポジトリのアクセス権限設定を間違えてパブリック設定、つまり外部公開して誰でも見れる状態でで運用してしまっていたということがたまにあります。
例えばこんなニュース
ですが、今回の件はそうではないようです。
ちなみに、この件の不正利用の件に関しては、そもそもアプリの仕様自体に問題がありました。
実際に、不正利用の方法についてソースコードを見て思いついたのかは定かではありません。すくなくともエンジニアじゃなくてもだめだろとわかる仕様なので、ソースコードの流出が原因とはいえないと思われることは言及しておきます。
ソースコードを流出させた本人によると、転職サイトのGitHubのコードで年収を可視化するということをやっているサイトを利用するため、ということだそうです。
たぶんここですね。というか、少なくとも日本ではこういうことをやっているのはここだけだと思います。
ソースコードで年収査定ってなんだよ?
このサービスは結構前からネット広告で見て知っていました。ソースコードで年収なんかわかるのかという疑問もありますが、それよりも、今回のようなソースコードの流出事件が起きるような気がしていました。
だいたい、仕事でプログラムを書いている場合、公開できるものなんてほぼないです。あるとしたら、オープンソースのコードを保守している、ごく一部の会社ぐらいでしょうか?自分で作ったアプリやサービスであっても、もとからオープンソースにするという場合は別ですが、普通公開はしません。
こんなサービスを使えるのは、ポートフォリオ作成でコードを書いている場合ぐらいで、プログラミングスクールを卒業したての未経験者や初心者だけです。
この査定をどういう風に使っているのかは知りませんが、就職時のアピールに使うのはやめたほうがいいと思います。
少なくともまともなエンジニアにはバカにされるだけですし、リテラシーが少し高めの人事担当だと、今回のようにソースコードを流出させるかもしれないと思われる可能性もあり、マイナスイメージにしかなりません。
オープンソースをやっているのでしたら、直接アピールすればよいでしょう。
大きい会社であればあるほど、ソースコードを理解できるエンジニアが面接や採用の権限を持っていることは少ないので、数値で判断できるようなこういったサービスが生まれたのだと思います。
GitHubはどうなの
それでは、GitHubを使うこと自体はどうなのでしょうか?
今は無料でもプライベートリポジトリが使えるので安易に採用する事例も多いと思います。
私は、仕事で使うものに関してはGitHubを利用することは勧めしていません。ソースコードは、自分や、自分のクライアントの資産です。特に何の取り決め、契約もなく使えるようなサービスは正直怖いです。
GitHubは海外の企業ですし、少なくともGitHubの管理者はプライベートリポジトリもすべて見れてしまうはずですし、バックアップに関してもどうなっているのかわかりません。サービスが停止することも年に数回あります。
ですので、個人的にはプライベートでサーバーを立てるか、Backlogなど国内サービスを使うことをお勧めしています。ただ、最悪リポジトリが飛んでも大丈夫なように最低限のバックアップはしておくということが前提です。
GitHubに関しては個人的に使ったり、オープンソースを作る場合は全く問題はないと思いますが、仕事で使う場合には、少なくともクライアントに了解や指示もらってからにしましょう。
ただ、一つ言っておきますが、今回の件に関して、GitHubは何一つ悪くありません。
仕事で使う場合には企業向けの契約プランがありますのでそういったものを利用するとよいでしょう。
ただし、問題点があって、簡単に言うとGitHubは基本的に複数のアカウントを持てません。
普通、個人とは別に、会社のメールアドレスでアカウントを取ってGitHubを使うと思いますが、これはGitHubの規約上問題になる場合があります。
この問題について詳しく解説したブログがあるので、詳しくしりたいかたはこちらをどうぞ。
一応、この方法を使うと個人のアカウントでもセキュリティーを担保して安全にソースコードを管理できるそうです。
ですが、はっきり言ってめんどくさい。
間違った設定で公開してしまうという事故が起きる可能性は否定できません。
やはり、Gitはプライベートでサーバーを立てて運用したほうがいいのではないかと思います。
GitHubに似たもので、GitLabというサイト、アプリもあります。GitHubと同じようにGitLabのサーバーでリポジトリを作って使うこともできますが、アプリケーション本体がオープンソース化もされているので、自分のサーバーに無料でインストールして使うこともできます。Gitサーバーを構築するのは若干面倒ですが、GitLabであれば比較的簡単にインストールできて、GitHubと同等の機能が使えますので、こちらを採用するのも手だと思います。
日本のITの問題点
それでは、今回の事件から見えてくる、日本のITの問題点を指摘していきます。
大企業の案件ほど、スキルが底辺なエンジニアが作業している
本当かどうかはわかりませんが、一部情報で、ソースコードを流出させたエンジニアは40代で年収300万円代なんだそうです。
そりゃ転職したくもなりますよね。
でも、問題のユーザーは、
GitHub にSMBCのソースコードを全世界に公開しちゃったニキ
調べたらNTTジェトロのも警視庁のも公開してるみたいで、全エンジニアの涙が止まらない…
セキュリティインシデント扱いで明日らへん大変なことになりそう
何より一番面白いのは公開した本人が呑気にツイートしてることwww— のぶ (@mattun6253) January 28, 2021
ということらしいんですよね。
みんながしってる大企業や公官庁の仕事も経験があるようです。いろいろ経験があるということは、ここ最近エンジニアに転職したという感じではなさそうです。詳しい経歴はわかりませんが、それなりに古いコードらしいということと、40代ということは20年ぐらいエンジニアをやっている可能性があります。
つまり、そういった有名どころの企業の案件をかなり長期間やっているのに、その程度の年収しかもらえてないということです。
なぜこんなことになるのかというと
商流が深すぎて多重請負体制になってしまうからに間違いはありません。
プロジェクトが大きければ大きいほど、金額が大きければ大きいほど、大きな会社が受託して、小さい会社に丸投げ、丸投げされた会社がほかの会社に丸投げ・・・ということが繰り返されて、最終的には一般的なエンジニアの半額ぐらいしかもらえない底辺なエンジニアが、こういった重要なプロジェクトのコードを書いている状況になっています。
これが日本のプログラマの現実です。
なので、大企業の案件ほど、アプリケーションの質が悪いという現象がおきます。
この現状を何とかしないといつまでたっても日本はIT後進国のままです。
ちょっとだけ希望もある
でも、一方でこれはある意味チャンスとは言えます。
大企業は、上記のような構造的欠陥を抱えています。
しかし、エンジニアを直接雇用できる中小企業であればこの呪縛を打開できるのです。
今までは、資本力で負けてしまっていました。実は、こういった大企業案件を仕切っているのは、
大手の広告代理店
大手のSIre
なんです。
しかし、いま広告業界はコロナによる混乱で大ダメージを受けています。
一部社員をフリーランスに変えたり、自社ビルを売却したりして延命を図っているようです。
中小企業は、大手広告代理店の資本力、広告費で負けてしまっていましたが、広告代理店が弱った今、同じ土俵に立てる可能性が出てきました。
大手企業に関しても、こういったことをきっかけに多重請負体制の問題に気付いて、自社の開発案件を直接中小企業に発注するというスキームもできるかもしれません。
ただ、これに気が付いている経営者ってほとんどいないんじゃないかなぁ?
今後の見通し
ちょっと脱線しましたが、本事件に関する影響の見通しです。
コロナの影響で在宅勤務が増えてきました。
しかし、こういった問題が出ると、やはり在宅勤務はダメだと考える人が増えてきてしまうという影響はあると思います。
最近、フリーランスSES(簡単言えば派遣)の案件を見てみると、ほとんどがリモートワークに対応しています。せっかくこういう流れになってきたのにまた逆戻りになるのは目に見えています。
新しい技術は、ネットを調べないと利用できません。そんな環境でまともに作業できるはずもありませんし、技術力も上がりません。
また、底辺エンジニアな現場ほど、低単価で仕事を受けているので大量の仕事をしなければなりません。
結果として、スキルアップのための時間や工数がとれません。残業も多いですので、プライベートでも勉強はできず、そんな気も起きないでしょう。ですので、いつまでたってもスキルがたまらず底辺のままといった状態になってしまいます。
プログラマ35歳定年説なんていう話も昔はありましたが、こういった理由があります。
こういう環境や先に述べたような多重請負体制がこそが、今回の事件の主人公のような底辺エンジニアを産んでいる土壌になっているのです。
SESや派遣が悪いシステムだとは言いません。日本の法律や仕組み上しかたがない面もあります。
以前そのような記事を書いたので紹介しておきます
まとめ
最後に、これからエンジニアになりたい人にひとこと言わせてください。
具体的には、どういった会社・案件が商流が深いのかを判別するのは難しいと思います。
ですが、例をあげると
こういった案件を取り扱っている開発会社が比較的危険性が高いと思います。
公共事業系など、一見、安定していてよさそうに見えるかもしれませんが、実際はそうでもないようです。
銀行系も、もっとも古くからIT化をしていますが、中途半端に閉鎖的でレガシーな技術を使い続けていることが多いようです。
私も、そこまでいろいろ経験しているわけではないのですが、いつか記事にしてみたいなと思います。
日本のプログラマ、エンジニアがもっと働きやすい環境になって、日本のIT技術がもっと発展ほしいと思います。