SlideShare a Scribd company logo
PostgreSQLのパス
ワードの謎を追え!
まぐろ
はじめに
 これは、C言語のプログラミング経験がないにも関わらず、無謀にも
PostgreSQLのソースに挑んだ1人の男の物語です
 小ネタだと思って気負わずお付き合いください
自己紹介
 まぐろ(Twitter:tameguro)
 都内某SI勤務のSE
 普段はPostgreSQLの設計・導入・保守などをやっています
 PostgreSQL歴はだいたい6年くらい
 PostgreSQLの技術同人誌をいくつか書いてます
 「まぐろのみぞおち」で検索!
 Cのプログラミング経験なし
 プログラミング経験はJavaがほとんど
 ここ数年は仕事でプログラミングしてない…
Slackだとこんな感じのアイコンです
ある日・・・
顧客 まぐろ
わかりました!
調べてみます!
ググってみたものの・・・
 PostgreSQLと連携するツールでの制限はツールごとに存在する
 PostgreSQLで規定されているパスワードの文字数や文字種などの制限は見
つからない
マニュアルを見てみたものの・・・
 CREATE ROLE
 パスワードの制限についての記述なし…
 CREATE USER
 パスワードの制限についての記述なし…
 passwordcheck
 contribだし、そもそもこれが必要とされているということは素のPostgreSQLは
パスワードの制限気にしないのでは…
 結局よくわからない。マニュアルに書いてないということは、パスワードの
制限はないということ?
 そんなことある??
こうなったらソースを
見るしかない!
というわけでダウンロードして展開
 12.4のソースをダウンロード、展開
 展開した直下はわかりやすい構成
srcフォルダにソースがあるに
違いない
わ、わからねえ…
 予想外にたくさんフォルダ
 どのフォルダが何を表しているのか
まるでわからない
パスワードが関わる部分を探す
 「password」でgrep
 検索結果ありすぎてわけがわからない
 明らかに無関係そうなフォルダ(test、template等)以外を探す
 「backend」フォルダにuser.cがある
 CreateRole関数がある!きっとこれに違いない!
 見つけられたのは運が良かったとしか言えない
 CreateRoleがbackendにあるのは見つけた後ならなんとなく理解できるが、何
も知らない状態ではまずわからなかった…
user.cのパスワード関係の処理を追
う
 パスワードのハッシュ化はデフォルトだとMD5で行うという意味かな?制限
とはちょっと違いそう
 check_passwordとは実にそれっぽい!でも値はNULL…?何もチェックしない
ということ?
CreateRole関数
 パスワードの何かをチェックしているようだけど、エラーメッセージから推察
するに、CREATE ROLEのオプションの指定に誤りがあった場合に通る?
同時にdpassword変数に何かを格納している。
 password変数に指定されたパスワードを格納している…のか?
CreateRole関数(パスワードチェッ
ク?)
 まさにここでパスワードのチェックをしているのでは!?
でもcheck_password_hookはNULLが格納されて、特にその後変更はなかったか
ら、このチェックは実際には行われない?
CreateRole関数
(パスワードの
ハッシュ化)
 パスワードが存在してい
たら、パスワードをハッ
シュ化(md5で)して、
pg_authidの新規レコー
ドの配列に格納している
 passwordオプションが
指定されていなかったら
pg_authidの新規レコー
ドのnullフラグを立てて
いる
 制限のチェックはしてい
ないようだ
CreateRole関数(終わり)
 この後pg_authidに格納される処理があり、特にパスワードが関わる処理はあり
ませんでした
 user.cには他にAlterRoleやRenameRoleなどの関数がありますが、CreateRoleと
似たような処理で、パスワードの制限を明示しているような処理はありません
でした
 あれ、これ本当にどんな文字でも何文字でもいいんじゃね?
やってみた
 マルチバイト
 1024文字
やっぱり作れた
作れた
ログインできた
結論
 いかがでしたか? 結局PostgreSQLのユーザのパスワードの文字数や文字
種についての制限は見つけられませんでした
 見当違いのところを探していたかも?
 マルチバイト文字を使ったり異常に長いパスワードを使ったりすると、
PostgreSQLと連携するツールでパスワード入力ができないなどの弊害が考
えられます
 パスワードは常識の範疇で考えましょう!
 ソースの読み方教えて下さい

More Related Content

What's hot (20)

PDF
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PPTX
Dbts 分散olt pv2
Takashi Kambayashi
 
PDF
使ってみて気づいた AGPL ライセンスの メリット・デメリット
Fumito Mizuno
 
PPTX
Dockerからcontainerdへの移行
Akihiro Suda
 
PDF
私にとってのテスト
Takuto Wada
 
PDF
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
 
PDF
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
Hiro H.
 
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
PDF
オススメの標準・準標準パッケージ20選
Takuya Ueda
 
PDF
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
aha_oretama
 
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
 
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
 
PDF
マイクロにしすぎた結果がこれだよ!
mosa siru
 
PPTX
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
NTT DATA Technology & Innovation
 
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PDF
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
Dbts 分散olt pv2
Takashi Kambayashi
 
使ってみて気づいた AGPL ライセンスの メリット・デメリット
Fumito Mizuno
 
Dockerからcontainerdへの移行
Akihiro Suda
 
私にとってのテスト
Takuto Wada
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
 
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
Hiro H.
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
オススメの標準・準標準パッケージ20選
Takuya Ueda
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
aha_oretama
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
Takeshi HASEGAWA
 
マイクロにしすぎた結果がこれだよ!
mosa siru
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
NTT DATA Technology & Innovation
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 

Recently uploaded (8)

PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
Ad

PostgreSQLのパスワードの謎を追え!