Skip to content

Instantly share code, notes, and snippets.

mala mala

Block or report user

Report or block mala

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@mala
mala / gist:4129717
Created Nov 22, 2012
NICOSパスワード8文字切り詰め制限祭りまとめ
View gist:4129717
平文でパスワード保存されていた?と推測する奴は頭がおかしいのでエンジニアやめろ。
----
まず事実関係
MUFGは、ID登録及び、ログインの際に、パスワード規定文字数を超えて「入力することができませんでした」と主張している。
http://www.cr.mufg.jp/corporate/info/pdf/2012/121120_01.pdf
リニューアル前の直近のログインフォームでは、password入力のinput要素に各提携先に応じたmaxlengthが設定されていて、
@mala
mala / gist:9086206
Created Feb 19, 2014
CSRF対策用トークンの値にセッションIDそのものを使ってもいい時代なんて、そもそも無かった
View gist:9086206

概要

http://co3k.org/blog/csrf-token-should-not-be-session-id について。

この記事では触れられていませんが、

  • むかし、セッションIDをHTMLソース中に埋め込んでも脅威は変わらないと主張した人がいました
  • 正確には「hiddenの値のみ漏れやすいような特殊な脆弱性が無ければ」という前提であったけれど、実際にそのようなバグはあったし、予見されていた。
  • とても影響のある人だったので、色々なサイトや書籍がその方法を紹介し、安全なウェブサイトの作り方にも載ってしまいました

この際ハッキリ言っておくべきだと思うので書きますが、そもそもセッションIDを(HTMLソース中に埋め込む)CSRF対策トークンとして使うのは間違いでした。最初から間違っていたのです。正確に言うとCSRFの話は関係ないですね。CSRF関係なく、特に「単体で」セッションハイジャックが可能になるような値を、HTMLソース中に埋め込むべきではありません。

@mala
mala / memcachedos.pl
Created Aug 13, 2010
DoS for memcached
View memcachedos.pl
#!/usr/local/bin/perl
# DoS tool for memcached
# ulimit -n 15000; perl memcachedos.pl 127.0.0.1 11211 3
# original: http://gist.github.com/522741
# This is Public Domain Software
use strict;
use warnings;
use AnyEvent;
@mala
mala / e.md
Created Apr 25, 2017
アプリの信頼とサービス運営者の信頼の話
View e.md

もう5年も前の話になっていたのだけど、Echofon(Twitterクライアントの一つ)の件を今更だけど書かねばならない。

当時、Echofonのプッシュ通知を管理するサーバーの認証機能に欠陥があり(というか認証が無く) 他のEchofon利用者に対して送られるpush通知(DMやreplyなど)を横取りすることが出来た。

このセキュリティホール自体は素早く修正されたのだけど、この件をきっかけに、クライアント/サーバーの境界線が曖昧になっている、という問題を強く意識するようになった。

@mala
mala / app.js
Last active Apr 26, 2017
markdownで書かれた複数のスライドをwebsocketで同期して表示するやつ
View app.js
var express = require("express");
var app = express();
var expressWs = require('express-ws')(app);
app.use(express.static(__dirname + '/public'));
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
app.ws('/state', function(ws, req) {
ws.on('message', function(msg) {
@mala
mala / o.md
Created Apr 21, 2017
Orarioについての雑感
View o.md

調べたこと

通信をキャプチャして調べた。似たようなことをしている人が既にいて仕組みについてはサービス提供者側が説明されているとおりだった。

IDパスワードはネイティブUIで表示して、html中のどこに入力するかなどはリモートから受信するjsで定義している。特に難読化や独自の暗号化などがされているわけではない。

@mala
mala / gist:82074a542d703247a481
Created Aug 5, 2014
Storableからの任意コード実行脆弱性についての調査
View gist:82074a542d703247a481

Storableからの任意コード実行脆弱性についての調査

概要

  • HTTP::Cookies と DBI::ProfileDumperを使う
  • HTTP::Cookies は LWPの依存モジュールで、DBI::ProfileDumperはDBIに付属している。どちらもインストールされている可能性が非常に高い

HTTP::Cookies の autosave 機能で任意ファイルにcookiejarが保存される。 DBI::ProfileDumper もDESTROY時のflushでファイルに書きこむ。存在しているファイルへの追記であれば比較的自由なフォーマットでファイルに書き込み可能。

@mala
mala / autofill_ui.md
Last active Jan 19, 2017
暮らしに役立つITコラム ChromeやSafariの自動入力機能が、なぜ「悪いデザイン」なのか
View autofill_ui.md

見た目の上で、隠されているフィールドに対しても自動入力してしまうという問題が話題になっている(2017年1月)

のだけれど、この問題の歴史はとても古い。自分も調査したり問題を報告したりしているので、振り返ってみる。

2012年の話

2012年4月のShibuya.XSS #1 https://atnd.org/events/25689 で、Hamachiya2が発表した

@mala
mala / 00.md
Created Dec 9, 2016
サンドボックスドメイン上に書き込まれたcookieを使ったWeb訪問履歴漏洩やfingerprintingについて
View 00.md

要約

  • サンドボックスドメイン上に記録されたcookieを使って、ユーザーの限定的な訪問履歴を取得したり、検索キーワードを取得することが可能です。
  • 検索エンジンや翻訳サービスなどで、他のサイトのコンテンツをproxyして表示する機能があると、単独では問題がないJavaScriptによるcookieを読み書きするコードが、同一のdomain上で実行されることになり影響が大きくなる場合があります。
  • 4年前に報告したものですが、今でも影響があり、多くのサービスは未対策または対策が不完全です。

対策

View gist:92e60ca794284304b6383bb2a2019db2
拡張機能、live http headers, http headersにポリシー違反の挙動があります。
https://gist.github.com/mala/e87973df5029d96c9269d9431fcef5cb
https://chrome.google.com/webstore/detail/live-http-headers/iaiioopjkcekapmldfgbebdclcnpgnlo
https://chrome.google.com/webstore/detail/http-headers/mhbpoeinkhpajikalhfpjjafpfgjnmgk
- 拡張機能の background js に対して、難読化されたscriptが埋め込まれています。
- webサイトに対して(chrome.tabs.executeScript) 外部のjsコードを挿入します。この機能はユーザーに対しては説明されていません。
- webサイトに対して実行されるscriptは、少なくとも広告やURLのtrackingが含まれています。サイトによって挙動が変わったり、後から変更される可能性があります。
- setTimeoutによって非常に長い時間(24時間以上) 経過した後に有効化されています。
You can’t perform that action at this time.