41961


話を簡単にするために、ブラウザ・ホストOSの脆弱性などはなかったと(考慮しないように)します。

悪意のある javascript を含むページを開いてしまった場合に、そのコード断片が実行可能なことは何になりますか? これも簡単のために、それは
malicious-web.com という攻撃者独自のドメイン・サイトを閲覧してそこから実行されたとしています。

個人的にこれを聞こうと思った背景には、例えば以下のようなことが可能なのではないかと考えたからです。

  * LAN 内部でのみアクセス可能なドメイン・ホストがあり、そこに対してデータを GET して、それを malicious-web.com/storage にむかって POST する。

これが可能であったならば、「悪意のある javascript を実行すると、その client が実行されているパソコンからアクセス可能な http
通信リソースすべてを、攻撃者は取得・操作できる」と言えそうです。

では、ここから自分は理解できていないのですが、その取得できるリソースは http 通信だけでしょうか? 他の TCP/UDP 系の通信はどうでしょう?
ローカルのファイルシステムはどうでしょう。 malicious-web.com
ドメインのクッキーは(もちろん)取得できそうですが、その他のサイトのものはどうなのでしょうか? など。


CC BY-SA 3.0
2018-02-22T08:03:36.587
41921
2018-02-23T13:38:47.783
2018-02-22T08:31:01.027
3060
754
question
javascript security
悪意のある javascript が実行できることは?


> LAN 内部でのみアクセス可能なドメイン・ホストがあり、そこに対してデータを GET して、それを malicious-web.com/storage
> にむかって POST する。

ほとんどのAPIが[同一オリジンポリシー](https://developer.mozilla.org/ja/docs/Web/Security/Same-
origin_policy)に従って設計されているため、そういったことは不可能です。たとえば攻撃者ドメインのページがLAN内ドメインのページを
<iframe> で指定しても、描画はされますがその <iframe>内の `window` や `document` にはアクセスできません。

ただし、<img src=...> や <script src=...>
を利用すればLAN内のリソースを表示したり実行することはできます。そういうものはサーバ側の設定で防御できます。

> TCP/UDP 系の通信はどうでしょう?

HTTP系以外でブラウザ環境のJavaScriptから使えるプロトコルは WebSocket ぐらいでしょうか。なぜか WebSocket
は同一オリジンポリシーを適用していないそうです。これはサーバ側で制限する必要があります。  
Web USB や Web Bluethooth 経由で通信させることが可能かもしれませんが、これらの API
はユーザが機器への接続を明示的に許可する必要があります。

> ローカルのファイルシステムはどうでしょう。

<input type=file> でユーザが指定したファイルはフォームでどこかに送ったり、JavaScriptから読むことが可能です。

Filesystem API はオリジン毎に隔離されたファイルシステムにしかアクセスできないので、とくに脅威とはならないと思います。


CC BY-SA 3.0
2018-02-23T13:38:47.783
41961
2018-02-23T13:38:47.783
3475
41921
answer