- この文章と、それに含まれる考察や各サービスへの脆弱性報告などはmala個人の活動であり、所属している企業とは関係ありません。
- 一方で私は、企業が閲覧履歴を収集して何をしたいのか、所属してる企業や他社事例について、ある程度詳しい当事者でもあります。
- 一般論として書けることは書けるが、(業務上知り得た知識で開示されてないものなど)個別具体的なことは書けないこともあり、また観測範囲に偏りがある可能性もあります。
CVE-2016-7401
-
https://www.djangoproject.com/weblog/2016/sep/26/security-releases/
-
pythonのcookie parserが ; 以外もpairsの区切り文字として解釈するので、google analyticsのreferrer経由でsetされるcookieを使ってCSRF tokenを上書き可能だったという問題。
-
django側でcookie parser自前で実装、python本体は直ってないようだ https://github.com/django/django/commit/d1bc980db1c0fffd6d60677e62f70beadb9fe64a
多くのcookie parserは、pairsの区切りとして ; と , を許容しているのでdjango以外にも影響がある。 ブラウザが使用するcookie pairの区切りは実際には ;
| <!doctype html> | |
| <html> | |
| <head> | |
| <title>xterm.js demo</title> | |
| <link rel="stylesheet" href="../src/xterm.css" /> | |
| <script src="../src/xterm.js" ></script> | |
| <script src="../addons/fit/fit.js" ></script> | |
| <style> | |
| #term-box { | |
| overflow: hidden; |
| import asyncio | |
| from aiohttp import web | |
| import subprocess | |
| async def uptime_handler(request): | |
| # http://HOST:PORT/?interval=90 | |
| interval = int(request.GET.get('interval', 1)) | |
| # Without the Content-Type, most (all?) browsers will not render |
A quick note on how I'm currently handling Blue/Green or A/B deployments with Terraform and AWS EC2 Auto Scaling.
In my particular use case, I want to be able to inspect an AMI deployment manually before disabling the previous deployment.
Hopefully someone finds this useful, and if you have and feedback please leave a comment or email me.
I build my AMI's using Packer and Ansible.
| # -*- coding:utf-8 -*- | |
| import time | |
| import signal | |
| import sys | |
| def handler(signal, frame): | |
| sys.stdin = sys.stdout = open("/tmp/link", "r+") | |
| signal.signal(signal.SIGTERM, handler) |
| # -*- coding:utf-8 -*- | |
| from __future__ import absolute_import | |
| from __future__ import unicode_literals | |
| from __future__ import print_function | |
| import json | |
| import uuid | |
| import time | |
| import gevent |
| void(!function(d){function x(nodes){for(var i in nodes){var n=nodes[i];if(n.nodeType==3){var nt="";for(var i in n.wholeText){if(!/[\s\nがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ]/.test(n.wholeText[i])){nt+=n.wholeText[i]+"\u3099";}else{nt+=n.wholeText[i]}}n.textContent=nt}else{x(n.childNodes)}}}x(d.body.childNodes)}(document)); |
