Skip to content

[Security] TTY出力でterminal escape sequenceを無害化する #17

Description

@mimo-3

概要

Notionのpage title、comment、rich text、URL、API error等を、制御文字の除去や可視化なしでdefaultのplain/table/markdown出力へ書き込んでいます。

Severity: Low
分類: CWE-150

該当箇所

  • src/output/plain.rs
  • src/output/table.rs
  • src/output/markdown.rs
  • src/client/request.rs:130-144

影響

悪意ある、または意図せずESC/OSC sequenceを含むNotion contentをTTYへ表示すると、terminal表示偽装、clipboard書換え、window title変更、link spoof等が起きる可能性があります。具体的な影響はterminal機能に依存します。

修正案

  • stdoutがTTYかつhuman-readable formatの場合、C0/C1/ESCを除去または可視化する
  • JSON/CSV等のmachine formatでは構造上のescape契約を維持する
  • API error bodyをstderrへ表示する場合も同じsanitizerを通す
  • ANSI/OSC 8/OSC 52を含む回帰テストを追加する

完了条件

  • human-readable TTY出力でterminal control sequenceが実行されない
  • 改行・tab等、許可する制御文字の方針が文書化される
  • pipe時のmachine-readable output契約を壊さない

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions