偽の採用担当者が悪意あるコーディングチャレンジで航空宇宙企業の従業員を誘導
(welivesecurity.com)- スペインの航空宇宙企業の従業員がLinkedInで Metaの採用担当者 を装ったLazarusから連絡を受け、採用テストに見せかけたファイルを会社の端末で実行したことで初期侵入が発生
- 悪意ある課題は
Quiz1.exeとQuiz2.exeとして配布され、「Hello, World!」と フィボナッチ数列 の出力後、ISOイメージ内の追加ペイロードのインストールをトリガー - 侵入後はDLLサイドローディングによって NickelLoader、miniBlindingCan、新たなRATである LightlessCan が配布され、ESETはこれをOperation DreamJob関連のLazarus活動に高い確度で帰属
- LightlessCanはBlindingCanの後継とみられ、
ipconfig、net、ping、systeminfo、scなどのWindowsコマンド機能をRAT内部で模倣し、コンソール実行の痕跡を減少 - 攻撃の目的は サイバー諜報 であり、コマンド内蔵方式と被害者端末上でのみ復号される実行ガードレールにより、リアルタイム検知と事後フォレンジック分析がさらに困難化
LinkedInの採用おとりで始まった初期侵入
- Lazarusはスペインの航空宇宙企業の複数の従業員に LinkedIn Messaging で接触
- 攻撃者はFacebook、Instagram、WhatsAppの親会社である Meta の採用担当者を装っていた
- 採用プロセスの一部のように見せかけ、C++プログラミング能力の証明を求める手口を使った
- 被害者はサードパーティのクラウドストレージに置かれた
Quiz1.isoとQuiz2.isoをダウンロードし、その中の実行ファイルを会社の端末で実行Quiz1.exe: 「Hello, World!」を出力する単純な課題を装うQuiz2.exe: 入力値未満の最大要素までフィボナッチ数列を出力する課題を装う- 2つの実行ファイルはいずれも正規のコンソールアプリケーションのように入力と出力を処理した後、追加の悪性ペイロードのインストールを開始
- 最初のペイロードはESETが NickelLoader と名付けたHTTP(S)ダウンローダ
- NickelLoaderは被害者PCのメモリ上に攻撃者が望むプログラムを配布できる
Lazarus帰属の根拠とOperation DreamJob
- ESETはこのスペインでの攻撃を、Lazarus、とりわけ Operation DreamJob 関連活動に高い確度で帰属
- マルウェア、インフラ、標的が過去のLazarusキャンペーンと重複
- LinkedInで接触した後、採用テストを装った悪性ファイルの実行へ誘導する手法は、Operation DreamJob以降Lazarusが使ってきた戦術
- 2022年のオランダ事例で確認された中間ローダーとBlindingCan系バックドアの新たな亜種が観測された
- ツールには AES-128 と256ビットキーを使う RC6 暗号化が用いられており、これはAmazonテーマのキャンペーンでも使われた方式
- 攻撃者は第1段階のC&Cサーバーを直接構築する代わりに、セキュリティが弱い、または保守が不十分な既存Webサイトを侵害して利用
- 航空宇宙企業のノウハウ窃取はLazarusの長期目標と一致
- 国連報告書では、北朝鮮関連APTグループが機微技術や航空宇宙知識へのアクセスを狙って航空宇宙企業を攻撃しているとされる
侵入後のツール構成
- NickelLoader実行後、攻撃者は2種類のRATを被害者システムへ配布
- miniBlindingCan: Lazarusツールとして知られるBlindingCanバックドアの機能縮小版亜種
- LightlessCan: 公には文書化されていなかった新しいRAT
- 実行チェーンは複雑さの異なる複数段階で構成され、ドロッパーとローダーが最終RAT実行前に配置される
- ドロッパーは埋め込みペイロードを含み、ファイルシステムへ書き込まなくてもメモリから直接ロードして実行できる
- ローダーは埋め込み暗号化配列を持たず、ファイルシステムからペイロードを読み込む
- 主要ファイルの多くは、正規実行ファイルが悪性DLLを読み込む DLLサイドローディング 構成
PresentationHost.exe+mscoree.dll: トロイの木馬化されたNppyPluginDllベース、NickelLoaderを配布colorcpl.exe+colorui.dll: LibreSSL 2.6.5ベース、miniBlindingCanを配布fixmapi.exe+mapistub.dll: Notepad++向けLua plugin 1.4.0.0ベース、LightlessCanを配布tabcal.exe+HID.dll: Notepad++向けMZC8051 3.2ベース、LightlessCanを配布
LightlessCanの主な特徴
- LightlessCan はLazarusのHTTP(S) RATであるBlindingCanの後継とみられ、現在版の内部バージョン番号は
1.0 - 最大68個のコマンドに対応するよう設計され、現行版ではそのうち43個のコマンドに機能が実装
- 残りのコマンドはプレースホルダーとして存在するが、実際の機能はない
- 共通コマンドの順序が大きく維持されており、BlindingCanのソースコードを基にしているとみられる
- 最大の変化は、複数のWindows標準コマンドの機能をRAT内部で模倣する方式
- 実装済みコマンドの例として
ipconfig、net、netsh advfirewall、netstat、ping、reg、sc、tasklist、wmic process call create、nslookup、schtasks、systeminfo、arp、mkdirなどがある - 従来のLazarus攻撃では、こうしたコマンドが攻撃者の足場確保後にコンソール上で何度も実行される例があった
- 今回の方式では本来のコンソールユーティリティを目立つ形で実行せずRAT内部で処理するため、EDR などのリアルタイム監視や事後デジタルフォレンジックツールによる検知を難しくする
- 実装済みコマンドの例として
- ESETは、LightlessCan開発者がWindowsの中核ユーティリティを模倣するためにクローズドソースのバイナリをリバースエンジニアリングした可能性が高いと見ている
- Wineプロジェクトにも複数プログラムの実装があるが、LightlessCanが模倣した一部機能はWine実装と異なるか、存在しなかった
NickelLoader侵入チェーン
- NickelLoaderは感染システム上で動作する HTTP(S)ダウンローダ で、その後のLazarusペイロード配布に使われる
- 被害者がクイズ実行ファイルを手動実行すると
PresentationHost.exeが自動実行され、同じC:\ProgramShared\パス上の悪性mscoree.dllがサイドロードされるmscoree.dllは2011年に無効化された General Python Plugins DLL for Notepad++ プロジェクトのNppyPluginDll.dllをトロイの木馬化したファイル- 正規の
mscoree.dllのexportと元のNppyPluginDll.dllのexportを含み、CorExitProcessexportに悪性コードがある
- 埋め込み暗号化配列の復号には3つの16文字キーワードが必要
- 親プロセス名
PresentationHost - バイナリにハードコードされた内部パラメータ
9zCnQP6o78753qg8 - コマンドラインで渡される外部パラメータ
‑embeddingObject - 3つのキーワードをバイト単位でXORし、AES-128 復号キーを生成
- 親プロセス名
- NickelLoaderは5文字コマンドを4つ認識
abcde: 通常の長いsleep遅延なしに直ちに次のコマンドを要求avdrq: 受信バッファ内のDLLをロードし、ハードコードされたexportinfoを実行gabnc: 受信バッファのDLLをロードdcrqv: 自身を終了
- ESETは、5文字コマンド構造から米国の5セント硬貨の俗称nickelを連想し、このペイロードを NickelLoader と命名
miniBlindingCan実行チェーン
- NickelLoaderがダウンロードして実行したペイロードの1つが miniBlindingCan
- BlindingCan RATの簡素化版で、2022年9月にMandiantがAIRDRY.V2という名称で初めて報告
- ロードには
C:\ProgramData\Adobe\で実行される正規のcolorcpl.exeと悪性colorui.dllが使われるcolorui.dllは64ビットの悪性DLLで、VMProtectにより難読化されている- 数千のexportを含み、
LaunchColorCplが次段階実行を処理
- ドロッパーは実行初期に解析回避機能を使用
- PEB構造の
BeingDebugged値を検査する アンチデバッグ を実施 - サンドボックス環境検知を回避するための アンチサンドボックス 手法を使用
- 親プロセスが
colorcpl.exeかどうかを明示的に確認し、そうでなければ即座に終了
- PEB構造の
- 最終ペイロード復号には、親プロセス名、ドロッパーファイル名、外部コマンドラインパラメータを連結した長い文字列がXORキーとして使われる
- 生成文字列の例は
COLORCPL.EXECOLORUI.DLL669498484488D3F22712CC5BACA6B7A7
- 生成文字列の例は
- miniBlindingCanはBlindingCanに似たコマンド処理ロジックを持つが、機能は大幅に縮小
- システム情報送信、通信間隔更新、設定送信と更新、ファイルダウンロードと復号、受け取ったshellcodeの実行などをサポート
- 復号された設定は9,392バイトで、最大260 wide characterサイズのURLを5件含む
LightlessCanの単純実行チェーン
- LightlessCanの単純チェーンは
C:\ProgramData\Oracle\Java\で実行される正規のfixmapi.exeと悪性mapistub.dllを使用 mapistub.dllはNotepad++向けLua plugin 1.4をトロイの木馬化したDLL- 正規Windows
mapi32.dllのexportがコピーされている FixMAPIexportが次段階の復号とロードを担当- 他のexportは公開されているMineSweeperサンプルプロジェクトの正規コードで埋められている
- 正規Windows
- このドロッパーには スケジュールタスク による永続化が設定されている
- ESETはこのタスクの詳細は不足しているが、親プロセスは
%WINDOWS%\system32\svchost.exe -k netsvcs -p -s Scheduleと見られるとしている
- ESETはこのタスクの詳細は不足しているが、親プロセスは
- 埋め込みデータの復号には3つのキーワードが使われる
- 親プロセス名
fixmapi.exe - 内部パラメータ
IP7pdINfE9uMz63n - コマンドライン外部パラメータ
AudioEndpointBuilder - キーワードはバイト単位でXORされ、結果が128ビットAESキーとなる
- 親プロセス名
LightlessCanの複雑な実行チェーンと実行ガードレール
- より複雑なLightlessCanチェーンは、正規アプリケーション、初期ドロッパー、完全ドロッパー、中間ドロッパー、設定ファイル、システム情報ファイル、中間ローダー、最終的なLightlessCan RATへと続く
- 初期ドロッパーは
C:\ProgramData\Adobe\ARM\で実行される正規のtabcal.exeがサイドロードする悪性HID.dllHID.dllはNotepad++向け 8051 C compiler plugin プロジェクトのMZC8051.dllをトロイの木馬化したファイルHidD_GetHidGuidexportが次段階のドロップを担当
- 最初の復号段階には3つのキーワードが必要
- 親プロセス名
tabcal.exe - 内部パラメータ
9zCnQP6o78753qg8 %WINDOWS%\system32\thumbs.dbファイル内容のLocalServiceNetworkRestricted- 3つの値をXORして128ビットAESキーを生成
- 親プロセス名
- 生成される完全ドロッパーは
AppResolver.dllというInternalNameリソースを持ち、2つの暗号化データ配列を含む- 126バイトの小さな配列と1,807,464バイトの大きな配列を含む
- 小さな配列は256ビットキーを使う RC6 で復号され、
C:\windows\system32\oci.dllとC:\windows\system32\grpedit.datのパスを生成 - 大きな配列の復号結果には、LightlessCan、中間ドロッパー、
%WINDOWS%\System32\wlansvc.cplにドロップされる14,948バイトの暗号化設定ファイルが含まれる
- 完全ドロッパーは感染システムを識別する複数の特性を
%WINDOWS%\System32\4F59FB87DF2Fに保存- 値は主に
Computer\HKLM\HARDWARE\DESCRIPTION\System\BIOSレジストリパスから取得 SystemBIOSDate、SystemBIOSVersion、SystemManufacturer、SystemProductName、ディスクコントローラ配下のIdentifier値が含まれる- これらの値を連結した文字列は、ファイルシステム上の暗号化された
grpedit.datの復号に必要
- 値は主に
- この構造は 実行ガードレール として機能
- ペイロードが意図した被害者PC上でのみ復号されるようにし、セキュリティ研究者の別環境では復号を困難にする
検知回避と分析への影響
- LightlessCanは攻撃後段階で頻繁に使われるWindowsコマンドラインプログラムの実行痕跡を大幅に減らせる
- コマンド機能を内部実装に置き換え、元のコンソールユーティリティ実行を回避
- コマンド履歴ログやリアルタイム検知で観測可能な痕跡が減少
- 攻撃チェーン全体では複数の 防御回避手法 が組み合わされている
- DLLサイドローディング
- VMProtect難読化
- 動的Windows API解決
- 埋め込みペイロード
- リフレクティブDLLインジェクション
- プロセスインジェクション
- デバッガ・サンドボックス回避
- ファイルシステム上の暗号化ツールと設定
- C&C通信も分析と検知を難しくするよう設計
- LightlessCanとminiBlindingCanはHTTP/HTTPSを使ってC&Cと通信
- C&CトラフィックはAES-128で暗号化
- トラフィックのエンコードにはbase64を使用
- LightlessCanはデータ窃取機能も備え、C&Cサーバーへデータを送信できる
IoCとMITRE ATT&CKの要約
- 主な初期ファイルIoC
C273B244EA7DFF20B1D6B1C7FD97F343201984B3:%TEMP%\7zOC35416EE\Quiz1.exe、「Hello World」チャレンジを装った初期ドロッパー38736CA46D7FC9B9E5C74D192EEC26F951E45752:%TEMP%\7zOCB3CC96D\Quiz2.exe、フィボナッチ数列チャレンジを装った初期ドロッパーC136DD71F45EAEF3206BF5C03412195227D15F38:C:\ProgramShared\mscoree.dll、NickelLoaderドロッパーE61672B23DBD03FE3B97EE469FA0895ED1F9185D: NickelLoader HTTPSダウンローダ
- 主なLightlessCan関連ファイルIoC
0F33ECE7C32074520FBEA46314D7D5AB9265EC52:%ALLUSERSPROFILE%\Oracle\Java\mapistub.dll、LightlessCanドロッパーC7C6027ABDCED3093288AB75FAB907C598E0237D:mapistub.dllがドロップしたLightlessCanE18B9743EC203AB49D3B57FED6DF5A99061F80E0:%ALLUSERSPROFILE%\Adobe\ARM\HID.dll、複雑チェーンの初期ドロッパー3007DDA05CA8C7DE85CD169F3773D43B1A009318:%WINDIR%\system32\grpedit.dat、複雑チェーンでドロップされたLightlessCan247C5F59CFFBAF099203F5BA3680F82A95C51E6E:%WINDIR%\system32\oci.dll、中間ドロッパー
- C&Cには侵害された正規サイトが使われる
bug.restoroad[.]comhurricanepub[.]comturnscor[.]commantis.quick.net[.]plwww.radiographers[.]orgkapata-arkeologi.kemdikbud.go[.]idbarsaji.com[.]mxwww.keewoom.co[.]krkerstpakketten.horesca-meppel[.]nlkittimasszazs[.]hunrfm[.]lk
- MITRE ATT&CKでは、ソーシャルメディア偵察、スピアフィッシングリンクとサービス、悪意あるファイルのユーザー実行、スケジュールタスク、DLLサイドローディング、実行ガードレール、コマンド履歴ログ弱体化、WebプロトコルC&C、対称暗号化チャネル、C2チャネル経由の流出などにマッピングされる
1件のコメント
Hacker News の意見
在宅の LeetCode 課題で侵入したとは賢い
Apple ソフトウェアを開発しているが、Xcode プロジェクトはかなり深いところまで入り込める。Apple はダウンロードしたプロジェクトを開くときに警告を出すが、在宅課題だと思えばほぼ無視してしまう
オンライン課題も厄介なアクセス権を要求する可能性があるし、こうした標的は会社の中核資産へのアクセス権をかなり高い確率で持っている。もちろん求職に会社のリソースを使う人はいないだろうが、そういうことがかなり頻繁に起きていると言えば、ここでは皆が敏感に反応する
ある応募者は自分のプロジェクトの REPL すら起動できず、苦戦した末に「会社のコンピュータを使えばよかった」とつぶやいた。個人のコンピュータで最も基本的な実行すらできないということは、その課題を会社のコンピュータでやったという意味だった
1996年には個人メールアドレスが今ほど一般的ではなかった点は考慮すべきだが、それでも初歩的なミスだった。昔から会社のコンピュータで私用をしないという原則を守ってきたが、一般的な姿勢ではなかった
完璧な解決策ではないだろうが、すべてのビルドステップがサンドボックス内で実行されるモードでプロジェクトを開けるとよい。失敗したら、何をしようとしていたのかを見ればいい
正直なところ、ほとんどの同僚が同じレベルのデューデリジェンスをしているとは思えない
人々が今いる会社の機器で在宅課題、ヘッドハンターへのメール、他社の面接電話をしているのを見るたびに驚く
そうすると言う人は多かったが、理解できない。潜在的な結果があまりに多い。やる気に満ちたある管理職は、個人的な人脈を通じて将来の雇用主に私を採用しないよう説得したことさえあった。ただ、それを知ったという理由だけで
非倫理的または違法であっても、こういうことは実際に起きるし、大手テック企業でも同じだ。求職活動の詳細を雇用主に自発的に共有していると考えると奇妙に感じる。仕事と私生活は政教分離のように分けるべきではないかと思う
ソフトウェア開発者で、ノートPCを買う余裕は十分にある。私が混用する最大限は、小さく軽くて Bluetooth が使える会社のノートPCで、皿洗いをしながら無害な YouTube 動画を見る程度だ。以前はたまにオフィスで印刷するときにも使った
リスクが大きく、そうすべきではないという点には完全に同意するが、人々が深く考えなかったり、常に警戒していなかったりすれば十分起こり得る
なぜ不要なリスクを増やすのかと思う。もしかすると、その緊張感が好きなのかもしれない
被害者に機能を C++ で複製する必要があるという口実で .exe ファイルを送ったのか? 誰かから .exe ファイルを受け取った瞬間、それは攻撃であるか、少なくとも送信者が信じがたいほど技術的に無能だという強いシグナルであるべきだ
ただ、Windows 95 時代を経験しているからそう思うのかもしれない。教訓の中には世代ごとに学び直さなければならないものがあるようだ
変なテストを要求されて「ならやらない」と言った人がどれだけいるかは分からない。今ではアプリケーションをサンドボックスで動かすのはかなり簡単なのに、やらないのは愚かだ。Sandboxie は無料で、常に動作が保証されるわけではないが、成功した可能性はあるし、少なくとも変な挙動を目立たせることはできた可能性が高い。Windows Pro にも、しばらくの間、実行ファイルをサンドボックスで実行する右クリックメニューのオプションがあった
タイトルを見たとき、最初は IDE 経由の感染だと思った。「このプロジェクトの作者を信頼しますか」のような質問があるのには理由があり、VS Code の場合、Git 設定の小細工でプロンプト前にコード実行まで可能だ
プログラムの実行には慎重になるだろうが、採用担当者が Git リポジトリの未完成プロジェクトの形でコーディング課題を送ってきたら、「コード実行を許可」ボタンを押す可能性は高い。特にリモート面接でコードをリアルタイムに見ながら「問題への取り組み方を見たい」と言われれば、なおさらそうなりそうだ。今回の攻撃は非常に基本的だが、初期感染を早期に検知しにくくするのは難しくない
ダウンロードした、または添付された実行ファイルを実行させるのは単純だが、今でも効果的なようだ。もっと邪悪で効果的な方法は、「課題」プロジェクトがある GitHub リポジトリを示し、被害者が自分の解答をテストするときに攻撃者の望むことをする侵害されたパッケージを参照させることだ
平凡なスクリプトキディではないことは分かるが、逆攻撃を試みたらどう反応するのか気になる。.exe を渡して実行しろと言われたら、実行せずに16進エディタで開いて調べる。「hello world」やフィボナッチ生成器だと主張するファイルが予想よりはるかに大きかったり、暗号化されているように見えるデータや難読化の試みが入っていたりすれば、実行しない
ソースをロックし、候補者ごとに細部を変えられれば、オンラインに上がっている解答は役に立たない
政府プログラムのコンサルティングをしていたときは、意識的に履歴書をインターネットに載せていなかった
スパイが使えそうなアクセス権限は持っていなかったが、一部のキーワードだけを見るとそう見える可能性はあった。LinkedInでキーワード検索に引っかかった人全員にスパムを送る採用担当者たちのように
どんなセキュリティインシデントでも報告しなければならないことは知っていたし、慎重な官僚組織がインシデントを処理している間に契約と収入が途絶える可能性があると考えていた。そこでオンラインの履歴書は消し、無差別な窃盗犯が誤って仕事用ノートPCを盗まないようにする対策も取った
今はその仕事を離れたので、ほかの人たちと同じようにLinkedInでJunior Python Leetcode Hazing Engineerみたいな採用スパムを楽しんでいる
特定の職務や業界では、雇用状況を公開しないことが標的型攻撃を防ぐための普通のセキュリティ対策になり得る。現実世界で言えば、CIA職員が海外でCIAの印が押された名刺を配り歩くことはないはず
自分も同じように、特定の人たちには自分がどこで働いているか知られたくないが、現在の勤務先に触れていない昔の履歴書ならオンラインに残しておいても問題ないと思う。HR責任者には、公開されている「私たちのチーム」ページに自分の名前を絶対に載せないでほしいとも頼んだ
副作用として、標的型攻撃への対処法やフィッシングメールの例を見せる必須の企業セキュリティ研修のたびに笑ってしまう。これまで侵入テスト業者のテストを除けば、標的型フィッシングを一度も受けたことがない
どんな間抜けが会社の機器で私用をするんだろうと思う
貧しい人の話ではなく、自分の個人用機器を買うお金が十分にある人たちの話だ
個人用PCはビデオゲームも動かせる一種の暖房器具なので、普段使いにはしていない。3台目の機器を買う余裕はあるが、そのお金はもっと良いことに使える
もちろん会社のセキュリティルールは守るつもりだ。会社を信頼している。自分のブラウザCookieを預けられない会社では働きたくない。自分が住む法域では法律も自分の味方だ。会社が気に入らないことを会社のノートPCでやったという理由だけでは解雇できず、かなり正当な理由が必要になる
大学生インターンで、もっと貧しかったときに自分も同じことをしたことがある
ログインはせず、仕事用ノートPCで映画を見るくらいなら楽しくやっている
この場合、被害者は航空宇宙企業で働いていた。その業界の人たちを少し知っているが、みんなとんでもなく長時間働いている。しかもスペインの会社だったので、1日10時間以上働くのが当然と見なされていた可能性もある
少し別の話だが、北朝鮮の人たちが政府職員になるまでインターネットアクセスもほとんど得られないのだとしたら、Lazarus/HIDDEN COBRAがどうやってあれほど精巧な国家支援型攻撃者になれるのか気になる
現代のセキュリティ研究、オープンソースプロジェクト、プログラミング資料、実際に流通しているマルウェアにアクセスできなければ、優れたハッカー世代が育つのは難しいのではないかと思う。もしかすると、ファイアウォールを回避する人たちを捕まえて部隊の仕事を提案しているのかもしれない
それに、ハッカーをどう訓練すると思っているのかも気になる。ReactのナイトリービルドでToDoアプリを作る方法を教えれば済むわけではない。おそらくイーサネットやTCP/IPスタックを作った人たちよりもよく暗記していて、逆からでも暗唱できるだろうし、それだけでも多くのものをハックするには十分だ
食料や電気など不足しているものが多い国では、とても憧れられる職業だ。もっと知りたければLazarus Heistのポッドキャストを聴くとよい
うちの地域にある人材派遣会社300社のうち、実際にサービスとして合法的に運営する許可を得ているのは23社だけなので驚かない
どこが偽物でどこが本物かを認証しようとするのは、ほとんどの会社や応募者があえて引きたがらない糸だ
偽の採用詐欺もある。従業員に魅力的な報酬パッケージを提示して引き抜いたあと、競合他社がデータを掘り出し、評価期間が終わる前、通常6〜10か月以内に放り出すというやり方だ。複数の悪意ある行為者が、大げさな約束とともに感染したPDFもばらまいている
注意が必要で、86BoxはBochs/kvmのように読み取り専用のバッキングイメージとセッションをサポートしている: https://github.com/86Box/86Box/releases
Apple M1ノートPCでも動作するが遅い
こういう悪いことは実際に起きる
2019年に本社が提供した無料Wi-Fi経由でノートPCがハッキングされ、SSHキーをすべて変更しなければならなかった
「悪意ある実行ファイルが2つ…1つ目はHello Worldプロジェクト…2つ目は入力値より小さい最大の要素までフィボナッチ数列を出力」だなんて、これが何かおかしいという最初のサインであるべきだった
MetaならLeetCode mediumまたはhardから始めたはずだ
このウェブサイトのセキュリティは幻想的だ
ページ内容をスクロールするときに矢印キーを使えないようにしてある。キーボードを使った未知の攻撃ベクトルが原因に違いない。素晴らしい