SSRF対策って何?
AIが書いたコードを読みつつ、でてきた疑問を調べて共有していく記事です。今回は、SSRF対策について説明します。
SSRF対策って何?
AIが書いたコードの中でSSRF対策という記述を見かけました。これは何だろう?と思ったので調べてみました。具体的なコードは次のようなコードです。
def _is_private_ip(hostname: str) -> bool:
"""ホスト名がプライベートIPに解決されるか判定する(SSRF対策)。"""
try:
addrs = getaddrinfo(hostname, None)
except gaierror:
return False
return any(ipaddress.ip_address(addr[4][0]).is_private for addr in addrs)
URLが投稿されたら、そこにアクセスして、ogpを取得する、というコードをAIに書かせた際に登場しました。
調べてみた
と言っても次のようなサイトを拝見して勉強しました。
https://blog.tokumaru.org/2018/12/introduction-to-ssrf-server-side-request-forgery.html
https://owasp.org/Top10/2021/ja/A10_2021-Server-Side_Request_Forgery_%28SSRF%29
要は、ユーザーが投稿したURLにサーバー側の権限でアクセスすることになるので、内部ネットワークにアクセスされたり、ローカルにあるファイルへアクセスされる可能性がある、ということです。なるほど。これは怖い。知らないのは勉強不足ですね。
まとめ
最近、AIにコードを書かせて動く状態になった後に、中身を確認して把握することが増えてきました。そして、そこから自分が知っている範囲を増やしていってるので、新しい時代の勉強の流れを感じます。
要件や仕様のみを検討して、実装の詳細は若手に任せた後、その若手の描いたコードで勉強している中堅の方々はこういう気持ちだったのでしょうか。