1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614276152761627617276182761927620276212762227623276242762527626276272762827629276302763127632276332763427635276362763727638276392764027641276422764327644276452764627647276482764927650276512765227653276542765527656276572765827659276602766127662276632766427665276662766727668276692767027671276722767327674276752767627677276782767927680276812768227683276842768527686276872768827689276902769127692276932769427695276962769727698276992770027701277022770327704277052770627707277082770927710277112771227713277142771527716277172771827719277202772127722277232772427725277262772727728277292773027731277322773327734277352773627737277382773927740277412774227743277442774527746277472774827749277502775127752277532775427755277562775727758277592776027761277622776327764277652776627767277682776927770277712777227773277742777527776277772777827779277802778127782277832778427785277862778727788277892779027791277922779327794277952779627797277982779927800278012780227803278042780527806278072780827809278102781127812278132781427815278162781727818278192782027821278222782327824278252782627827 |
- Changes in version 0.3.3.5-rc - 2018-04-15
- Tor 0.3.3.5-rc fixes various bugs in earlier versions of Tor,
- including some that could affect reliability or correctness.
- This is the first release candidate in the 0.3.3 series. If we find no
- new bugs or regression here, then the first stable 0.3.3 release will
- be nearly identical to this one.
- o Major bugfixes (security, protover, voting):
- - Revise Rust implementation of protover to use a more memory-
- efficient voting algorithm and corresponding data structures, thus
- avoiding a potential memory-based DoS attack where specially
- crafted protocol strings would expand to fill available memory.
- Fixes bug 24031; bugfix on 0.3.3.1-alpha.
- o Major bugfixes (performance, load balancing):
- - Directory authorities no longer vote in favor of the Guard flag
- for relays without directory support. Starting in Tor
- 0.3.0.1-alpha, clients have been avoiding using such relays in the
- Guard position, leading to increasingly broken load balancing for
- the 5%-or-so of Guards that don't advertise directory support.
- Fixes bug 22310; bugfix on 0.3.0.6.
- o Minor feature (continuous integration):
- - Update the Travis CI configuration to use the stable Rust channel,
- now that we have decided to require that. Closes ticket 25714.
- o Minor features (config options):
- - Change the way the default value for MaxMemInQueues is calculated.
- We now use 40% of the hardware RAM if the system has 8 GB RAM or
- more. Otherwise we use the former value of 75%. Closes
- ticket 24782.
- o Minor features (geoip):
- - Update geoip and geoip6 to the April 3 2018 Maxmind GeoLite2
- Country database. Closes ticket 25718.
- o Minor bugfixes (client):
- - When using a listed relay as a bridge, and also using
- microdescriptors, and considering that relay as a non-bridge in a
- circuit, treat its microdescriptor as a valid source of
- information about that relay. This change should prevent a non-
- fatal assertion error. Fixes bug 25691; bugfix on 0.3.3.4-alpha.
- o Minor bugfixes (controller):
- - Restore the correct operation of the RESOLVE command, which had
- been broken since we added the ability to enable/disable DNS on
- specific listener ports. Fixes bug 25617; bugfix on 0.2.9.3-alpha.
- o Minor bugfixes (distribution, compilation, rust):
- - Build correctly when the rust dependencies submodule is loaded,
- but the TOR_RUST_DEPENDENCIES environment variable is not set.
- Fixes bug 25679; bugfix on 0.3.3.1-alpha.
- - Actually include all of our Rust source in our source
- distributions. (Previously, a few of the files were accidentally
- omitted.) Fixes bug 25732; bugfix on 0.3.3.2-alpha.
- o Minor bugfixes (documentation):
- - Document that the PerConnBW{Rate,Burst} options will fall back to
- their corresponding consensus parameters only if those parameters
- are set. Previously we had claimed that these values would always
- be set in the consensus. Fixes bug 25296; bugfix on 0.2.2.7-alpha.
- - Revert a misformatting issue in the ExitPolicy documentation.
- Fixes bug 25582; bugfix on 0.3.3.1-alpha.
- o Minor bugfixes (exit node DNS retries):
- - Re-attempt timed-out DNS queries 3 times before failure, since our
- timeout is 5 seconds for them, but clients wait 10-15. Also allow
- slightly more timeouts per resolver when an exit has multiple
- resolvers configured. Fixes bug 21394; bugfix on 0.3.1.9.
- o Minor bugfixes (onion services):
- - Re-instate counting the client HSDir fetch circuits against the
- MaxClientCircuitsPending rate limit. Fixes bug 24989; bugfix
- on 0.3.3.1-alpha.
- - Remove underscores from the _HSLayer{2,3}Nodes options. This
- expert-user configuration can now be enabled as HSLayer{2,3}Nodes.
- Fixes bug 25581; bugfix on 0.3.3.1-alpha
- o Code simplification and refactoring:
- - Move the list of default directory authorities to its own file.
- Closes ticket 24854. Patch by "beastr0".
- o Documentation (manpage, denial of service):
- - Provide more detail about the denial-of-service options, by
- listing each mitigation and explaining how they relate. Closes
- ticket 25248.
- Changes in version 0.3.3.4-alpha - 2018-03-29
- Tor 0.3.3.4-alpha includes various bugfixes for issues found during
- the alpha testing of earlier releases in its series. We are
- approaching a stable 0.3.3 release: more testing is welcome!
- o New system requirements:
- - When built with Rust, Tor now depends on version 0.2.39 of the
- libc crate. Closes tickets 25310 and 25664.
- o Major bugfixes (relay, connection):
- - If we have failed to connect to a relay and received a connection
- refused, timeout, or similar error (at the TCP level), do not try
- that same address/port again for 60 seconds after the failure has
- occurred. Fixes bug 24767; bugfix on 0.0.6.
- o Minor features (geoip):
- - Update geoip and geoip6 to the March 8 2018 Maxmind GeoLite2
- Country database. Closes ticket 25469.
- o Minor features (log messages):
- - Improve log message in the out-of-memory handler to include
- information about memory usage from the different compression
- backends. Closes ticket 25372.
- o Minor features (sandbox):
- - Explicitly permit the poll() system call when the Linux
- seccomp2-based sandbox is enabled: apparently, some versions of
- libc use poll() when calling getpwnam(). Closes ticket 25313.
- o Minor bugfixes (C correctness):
- - Fix a very unlikely (impossible, we believe) null pointer
- dereference. Fixes bug 25629; bugfix on 0.2.9.15. Found by
- Coverity; this is CID 1430932.
- o Minor bugfixes (channel, client):
- - Better identify client connection when reporting to the geoip
- client cache. Fixes bug 24904; bugfix on 0.3.1.7.
- o Minor bugfixes (compilation):
- - Fix a C99 compliance issue in our configuration script that caused
- compilation issues when compiling Tor with certain versions of
- xtools. Fixes bug 25474; bugfix on 0.3.2.5-alpha.
- o Minor bugfixes (controller, reliability):
- - Avoid a (nonfatal) assertion failure when extending a one-hop
- circuit from the controller to become a multihop circuit. Fixes
- bug 24903; bugfix on 0.2.5.2-alpha.
- o Minor bugfixes (networking):
- - Tor will no longer reject IPv6 address strings from TorBrowser
- when they are passed as hostnames in SOCKS5 requests. Fixes bug
- 25036, bugfix on Tor 0.3.1.2.
- - string_is_valid_hostname() will not consider IP strings to be
- valid hostnames. Fixes bug 25055; bugfix on Tor 0.2.5.5.
- o Minor bugfixes (onion service v3):
- - Avoid an assertion failure when the next the next onion service
- descriptor rotation type is out of sync with the consensus's
- valid-after time. Instead, log a warning message with extra
- information, so we can better hunt down the cause of this
- assertion. Fixes bug 25306; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (testing):
- - Avoid intermittent test failures due to a test that had relied on
- onion service introduction point creation finishing within 5
- seconds of real clock time. Fixes bug 25450; bugfix
- on 0.3.1.3-alpha.
- - Rust crates are now automatically detected and tested. Previously,
- some crates were not tested by `make test-rust` due to a static
- string in the `src/test/test_rust.sh` script specifying which
- crates to test. Fixes bug 25560; bugfix on 0.3.3.3-alpha.
- o Minor bugfixes (testing, benchmarks):
- - Fix a crash when running benchmark tests on win32 systems. The
- crash was due to a mutex that wasn't initialized before logging
- and options were initialized. Fixes bug 25479; bugfix
- on 0.3.3.3-alpha.
- o Minor bugfixes (warnings, ipv6):
- - Avoid a bug warning that could occur when trying to connect to a
- relay over IPv6. This warning would occur on a Tor instance that
- downloads router descriptors, but prefers to use microdescriptors.
- Fixes bug 25213; bugfix on 0.3.3.1-alpha.
- o Code simplification and refactoring:
- - Remove the old (deterministic) directory retry logic entirely:
- We've used exponential backoff exclusively for some time. Closes
- ticket 23814.
- o Documentation:
- - Improved the documentation of AccountingStart parameter. Closes
- ticket 23635.
- - Update the documentation for "Log" to include the current list of
- logging domains. Closes ticket 25378.
- Changes in version 0.3.3.3-alpha - 2018-03-03
- Tor 0.3.3.3-alpha is the third alpha release for the 0.3.3.x series.
- It includes an important security fix for a remote crash attack
- against directory authorities tracked as TROVE-2018-001.
- Additionally, with this release, we are upgrading the severity of a
- bug fixed in 0.3.3.2-alpha. Bug 24700, which was fixed in
- 0.3.3.2-alpha, can be remotely triggered in order to crash relays with
- a use-after-free pattern. As such, we are now tracking that bug as
- TROVE-2018-002 and CVE-2018-0491. This bug affected versions
- 0.3.2.1-alpha through 0.3.2.9, as well as 0.3.3.1-alpha.
- This release also fixes several minor bugs and annoyances from
- earlier releases.
- Relays running 0.3.2.x should upgrade to one of the versions released
- today, for the fix to TROVE-2018-002. Directory authorities should
- also upgrade. (Relays on earlier versions might want to update too for
- the DoS mitigations.)
- o Major bugfixes (denial-of-service, directory authority):
- - Fix a protocol-list handling bug that could be used to remotely crash
- directory authorities with a null-pointer exception. Fixes bug 25074;
- bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
- CVE-2018-0490.
- o Minor features (compatibility, OpenSSL):
- - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
- Previous versions of Tor would not have worked with OpenSSL 1.1.1,
- since they neither disabled TLS 1.3 nor enabled any of the
- ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
- Closes ticket 24978.
- o Minor features (logging):
- - Clarify the log messages produced when getrandom() or a related
- entropy-generation mechanism gives an error. Closes ticket 25120.
- o Minor features (testing):
- - Add a "make test-rust" target to run the rust tests only. Closes
- ticket 25071.
- o Minor bugfixes (denial-of-service):
- - Fix a possible crash on malformed consensus. If a consensus had
- contained an unparseable protocol line, it could have made clients
- and relays crash with a null-pointer exception. To exploit this
- issue, however, an attacker would need to be able to subvert the
- directory authority system. Fixes bug 25251; bugfix on
- 0.2.9.4-alpha. Also tracked as TROVE-2018-004.
- o Minor bugfixes (DoS mitigation):
- - Add extra safety checks when refilling the circuit creation bucket
- to ensure we never set a value above the allowed maximum burst.
- Fixes bug 25202; bugfix on 0.3.3.2-alpha.
- - When a new consensus arrives, don't update our DoS-mitigation
- parameters if we aren't a public relay. Fixes bug 25223; bugfix
- on 0.3.3.2-alpha.
- o Minor bugfixes (man page, SocksPort):
- - Remove dead code from the old "SocksSocket" option, and rename
- SocksSocketsGroupWritable to UnixSocksGroupWritable. The old option
- still works, but is deprecated. Fixes bug 24343; bugfix on 0.2.6.3.
- o Minor bugfixes (performance):
- - Reduce the number of circuits that will be opened at once during
- the circuit build timeout phase. This is done by increasing the
- idle timeout to 3 minutes, and lowering the maximum number of
- concurrent learning circuits to 10. Fixes bug 24769; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (spec conformance):
- - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
- 0.2.9.4-alpha.
- - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
- bugfix on 0.2.9.4-alpha.
- o Minor bugfixes (spec conformance, rust):
- - Resolve a denial-of-service issue caused by an infinite loop in
- the rust protover code. Fixes bug 25250, bugfix on 0.3.3.1-alpha.
- Also tracked as TROVE-2018-003.
- o Code simplification and refactoring:
- - Update the "rust dependencies" submodule to be a project-level
- repository, rather than a user repository. Closes ticket 25323.
- Changes in version 0.3.2.10 - 2018-03-03
- Tor 0.3.2.10 is the second stable release in the 0.3.2 series. It
- backports a number of bugfixes, including important fixes for security
- issues.
- It includes an important security fix for a remote crash attack
- against directory authorities, tracked as TROVE-2018-001.
- Additionally, it backports a fix for a bug whose severity we have
- upgraded: Bug 24700, which was fixed in 0.3.3.2-alpha, can be remotely
- triggered in order to crash relays with a use-after-free pattern. As
- such, we are now tracking that bug as TROVE-2018-002 and
- CVE-2018-0491, and backporting it to earlier releases. This bug
- affected versions 0.3.2.1-alpha through 0.3.2.9, as well as version
- 0.3.3.1-alpha.
- This release also backports our new system for improved resistance to
- denial-of-service attacks against relays.
- This release also fixes several minor bugs and annoyances from
- earlier releases.
- Relays running 0.3.2.x SHOULD upgrade to one of the versions released
- today, for the fix to TROVE-2018-002. Directory authorities should
- also upgrade. (Relays on earlier versions might want to update too for
- the DoS mitigations.)
- o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
- - Fix a protocol-list handling bug that could be used to remotely crash
- directory authorities with a null-pointer exception. Fixes bug 25074;
- bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
- CVE-2018-0490.
- o Major bugfixes (scheduler, KIST, denial-of-service, backport from 0.3.3.2-alpha):
- - Avoid adding the same channel twice in the KIST scheduler pending
- list, which could lead to remote denial-of-service use-after-free
- attacks against relays. Fixes bug 24700; bugfix on 0.3.2.1-alpha.
- o Major features (denial-of-service mitigation, backport from 0.3.3.2-alpha):
- - Give relays some defenses against the recent network overload. We
- start with three defenses (default parameters in parentheses).
- First: if a single client address makes too many concurrent
- connections (>100), hang up on further connections. Second: if a
- single client address makes circuits too quickly (more than 3 per
- second, with an allowed burst of 90) while also having too many
- connections open (3), refuse new create cells for the next while
- (1-2 hours). Third: if a client asks to establish a rendezvous
- point to you directly, ignore the request. These defenses can be
- manually controlled by new torrc options, but relays will also
- take guidance from consensus parameters, so there's no need to
- configure anything manually. Implements ticket 24902.
- o Major bugfixes (onion services, retry behavior, backport from 0.3.3.1-alpha):
- - Fix an "off by 2" error in counting rendezvous failures on the
- onion service side. While we thought we would stop the rendezvous
- attempt after one failed circuit, we were actually making three
- circuit attempts before giving up. Now switch to a default of 2,
- and allow the consensus parameter "hs_service_max_rdv_failures" to
- override. Fixes bug 24895; bugfix on 0.0.6.
- - New-style (v3) onion services now obey the "max rendezvous circuit
- attempts" logic. Previously they would make as many rendezvous
- circuit attempts as they could fit in the MAX_REND_TIMEOUT second
- window before giving up. Fixes bug 24894; bugfix on 0.3.2.1-alpha.
- o Major bugfixes (protocol versions, backport from 0.3.3.2-alpha):
- - Add Link protocol version 5 to the supported protocols list. Fixes
- bug 25070; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (relay, backport from 0.3.3.1-alpha):
- - Fix a set of false positives where relays would consider
- connections to other relays as being client-only connections (and
- thus e.g. deserving different link padding schemes) if those
- relays fell out of the consensus briefly. Now we look only at the
- initial handshake and whether the connection authenticated as a
- relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (scheduler, consensus, backport from 0.3.3.2-alpha):
- - The scheduler subsystem was failing to promptly notice changes in
- consensus parameters, making it harder to switch schedulers
- network-wide. Fixes bug 24975; bugfix on 0.3.2.1-alpha.
- o Minor features (denial-of-service avoidance, backport from 0.3.3.2-alpha):
- - Make our OOM handler aware of the geoip client history cache so it
- doesn't fill up the memory. This check is important for IPv6 and
- our DoS mitigation subsystem. Closes ticket 25122.
- o Minor features (compatibility, OpenSSL, backport from 0.3.3.3-alpha):
- - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
- Previous versions of Tor would not have worked with OpenSSL 1.1.1,
- since they neither disabled TLS 1.3 nor enabled any of the
- ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
- Closes ticket 24978.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
- Country database.
- o Minor features (logging, diagnostic, backport from 0.3.3.2-alpha):
- - When logging a failure to check a hidden service's certificate,
- also log what the problem with the certificate was. Diagnostic
- for ticket 24972.
- o Minor bugfix (channel connection, backport from 0.3.3.2-alpha):
- - Use the actual observed address of an incoming relay connection,
- not the canonical address of the relay from its descriptor, when
- making decisions about how to handle the incoming connection.
- Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
- o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
- - Fix a possible crash on malformed consensus. If a consensus had
- contained an unparseable protocol line, it could have made clients
- and relays crash with a null-pointer exception. To exploit this
- issue, however, an attacker would need to be able to subvert the
- directory authority system. Fixes bug 25251; bugfix on
- 0.2.9.4-alpha. Also tracked as TROVE-2018-004.
- o Minor bugfix (directory authority, backport from 0.3.3.2-alpha):
- - Directory authorities, when refusing a descriptor from a rejected
- relay, now explicitly tell the relay (in its logs) to set a valid
- ContactInfo address and contact the bad-relays@ mailing list.
- Fixes bug 25170; bugfix on 0.2.9.1.
- o Minor bugfixes (build, rust, backport from 0.3.3.1-alpha):
- - When building with Rust on OSX, link against libresolv, to work
- around the issue at https:
- Fixes bug 24652; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (onion services, backport from 0.3.3.2-alpha):
- - Remove a BUG() statement when a client fetches an onion descriptor
- that has a lower revision counter than the one in its cache. This
- can happen in normal circumstances due to HSDir desync. Fixes bug
- 24976; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (logging, backport from 0.3.3.2-alpha):
- - Don't treat inability to store a cached consensus object as a bug:
- it can happen normally when we are out of disk space. Fixes bug
- 24859; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (performance, fragile-hardening, backport from 0.3.3.1-alpha):
- - Improve the performance of our consensus-diff application code
- when Tor is built with the --enable-fragile-hardening option set.
- Fixes bug 24826; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (OSX, backport from 0.3.3.1-alpha):
- - Don't exit the Tor process if setrlimit() fails to change the file
- limit (which can happen sometimes on some versions of OSX). Fixes
- bug 21074; bugfix on 0.0.9pre5.
- o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
- - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
- 0.2.9.4-alpha.
- - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
- bugfix on 0.2.9.4-alpha.
- o Minor bugfixes (testing, backport from 0.3.3.1-alpha):
- - Fix a memory leak in the scheduler/loop_kist unit test. Fixes bug
- 25005; bugfix on 0.3.2.7-rc.
- o Minor bugfixes (v3 onion services, backport from 0.3.3.2-alpha):
- - Look at the "HSRend" protocol version, not the "HSDir" protocol
- version, when deciding whether a consensus entry can support the
- v3 onion service protocol as a rendezvous point. Fixes bug 25105;
- bugfix on 0.3.2.1-alpha.
- o Code simplification and refactoring (backport from 0.3.3.3-alpha):
- - Update the "rust dependencies" submodule to be a project-level
- repository, rather than a user repository. Closes ticket 25323.
- o Documentation (backport from 0.3.3.1-alpha)
- - Document that operators who run more than one relay or bridge are
- expected to set MyFamily and ContactInfo correctly. Closes
- ticket 24526.
- Changes in version 0.3.1.10 - 2018-03-03
- Tor 0.3.1.10 backports a number of bugfixes, including important fixes for
- security issues.
- It includes an important security fix for a remote crash attack
- against directory authorities, tracked as TROVE-2018-001.
- This release also backports our new system for improved resistance to
- denial-of-service attacks against relays.
- This release also fixes several minor bugs and annoyances from
- earlier releases.
- All directory authorities should upgrade to one of the versions
- released today. Relays running 0.3.1.x may wish to update to one of
- the versions released today, for the DoS mitigations.
- Please note: according to our release calendar, Tor 0.3.1 will no
- longer be supported after 1 July 2018. If you will be running Tor
- after that date, you should make sure to plan to upgrade to the latest
- stable version, or downgrade to 0.2.9 (which will receive long-term
- support).
- o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
- - Fix a protocol-list handling bug that could be used to remotely crash
- directory authorities with a null-pointer exception. Fixes bug 25074;
- bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
- CVE-2018-0490.
- o Major features (denial-of-service mitigation, backport from 0.3.3.2-alpha):
- - Give relays some defenses against the recent network overload. We
- start with three defenses (default parameters in parentheses).
- First: if a single client address makes too many concurrent
- connections (>100), hang up on further connections. Second: if a
- single client address makes circuits too quickly (more than 3 per
- second, with an allowed burst of 90) while also having too many
- connections open (3), refuse new create cells for the next while
- (1-2 hours). Third: if a client asks to establish a rendezvous
- point to you directly, ignore the request. These defenses can be
- manually controlled by new torrc options, but relays will also
- take guidance from consensus parameters, so there's no need to
- configure anything manually. Implements ticket 24902.
- o Minor features (linux seccomp2 sandbox, backport from 0.3.2.5-alpha):
- - Update the sandbox rules so that they should now work correctly
- with Glibc 2.26. Closes ticket 24315.
- o Major bugfixes (onion services, retry behavior, backport from 0.3.3.1-alpha):
- - Fix an "off by 2" error in counting rendezvous failures on the
- onion service side. While we thought we would stop the rendezvous
- attempt after one failed circuit, we were actually making three
- circuit attempts before giving up. Now switch to a default of 2,
- and allow the consensus parameter "hs_service_max_rdv_failures" to
- override. Fixes bug 24895; bugfix on 0.0.6.
- o Major bugfixes (protocol versions, backport from 0.3.3.2-alpha):
- - Add Link protocol version 5 to the supported protocols list. Fixes
- bug 25070; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (relay, backport from 0.3.3.1-alpha):
- - Fix a set of false positives where relays would consider
- connections to other relays as being client-only connections (and
- thus e.g. deserving different link padding schemes) if those
- relays fell out of the consensus briefly. Now we look only at the
- initial handshake and whether the connection authenticated as a
- relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.
- o Minor features (denial-of-service avoidance, backport from 0.3.3.2-alpha):
- - Make our OOM handler aware of the geoip client history cache so it
- doesn't fill up the memory. This check is important for IPv6 and
- our DoS mitigation subsystem. Closes ticket 25122.
- o Minor feature (relay statistics, backport from 0.3.2.6-alpha):
- - Change relay bandwidth reporting stats interval from 4 hours to 24
- hours in order to reduce the efficiency of guard discovery
- attacks. Fixes ticket 23856.
- o Minor features (compatibility, OpenSSL, backport from 0.3.3.3-alpha):
- - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
- Previous versions of Tor would not have worked with OpenSSL 1.1.1,
- since they neither disabled TLS 1.3 nor enabled any of the
- ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
- Closes ticket 24978.
- o Minor features (fallback directory mirrors, backport from 0.3.2.9):
- - The fallback directory list has been re-generated based on the
- current status of the network. Tor uses fallback directories to
- bootstrap when it doesn't yet have up-to-date directory
- information. Closes ticket 24801.
- - Make the default DirAuthorityFallbackRate 0.1, so that clients
- prefer to bootstrap from fallback directory mirrors. This is a
- follow-up to 24679, which removed weights from the default
- fallbacks. Implements ticket 24681.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
- Country database.
- o Minor bugfix (channel connection, backport from 0.3.3.2-alpha):
- - Use the actual observed address of an incoming relay connection,
- not the canonical address of the relay from its descriptor, when
- making decisions about how to handle the incoming connection.
- Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
- o Minor bugfix (directory authority, backport from 0.3.3.2-alpha):
- - Directory authorities, when refusing a descriptor from a rejected
- relay, now explicitly tell the relay (in its logs) to set a valid
- ContactInfo address and contact the bad-relays@ mailing list.
- Fixes bug 25170; bugfix on 0.2.9.1.
- o Minor bugfixes (address selection, backport from 0.3.2.9):
- - When the fascist_firewall_choose_address_ functions don't find a
- reachable address, set the returned address to the null address
- and port. This is a precautionary measure, because some callers do
- not check the return value. Fixes bug 24736; bugfix
- on 0.2.8.2-alpha.
- o Major bugfixes (bootstrapping, backport from 0.3.2.5-alpha):
- - Fetch descriptors aggressively whenever we lack enough to build
- circuits, regardless of how many descriptors we are missing.
- Previously, we would delay launching the fetch when we had fewer
- than 15 missing descriptors, even if some of those descriptors
- were blocking circuits from building. Fixes bug 23985; bugfix on
- 0.1.1.11-alpha. The effects of this bug became worse in
- 0.3.0.3-alpha, when we began treating missing descriptors from our
- primary guards as a reason to delay circuits.
- - Don't try fetching microdescriptors from relays that have failed
- to deliver them in the past. Fixes bug 23817; bugfix
- on 0.3.0.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.2.7-rc):
- - Fix a signed/unsigned comparison warning introduced by our fix to
- TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.
- o Minor bugfixes (control port, linux seccomp2 sandbox, backport from 0.3.2.5-alpha):
- - Avoid a crash when attempting to use the seccomp2 sandbox together
- with the OwningControllerProcess feature. Fixes bug 24198; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
- - Fix a possible crash on malformed consensus. If a consensus had
- contained an unparseable protocol line, it could have made clients
- and relays crash with a null-pointer exception. To exploit this
- issue, however, an attacker would need to be able to subvert the
- directory authority system. Fixes bug 25251; bugfix on
- 0.2.9.4-alpha. Also tracked as TROVE-2018-004.
- o Minor bugfixes (directory cache, backport from 0.3.2.5-alpha):
- - Recover better from empty or corrupt files in the consensus cache
- directory. Fixes bug 24099; bugfix on 0.3.1.1-alpha.
- - When a consensus diff calculation is only partially successful,
- only record the successful parts as having succeeded. Partial
- success can happen if (for example) one compression method fails
- but the others succeed. Previously we misrecorded all the
- calculations as having succeeded, which would later cause a
- nonfatal assertion failure. Fixes bug 24086; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (entry guards, backport from 0.3.2.3-alpha):
- - Tor now updates its guard state when it reads a consensus
- regardless of whether it's missing descriptors. That makes tor use
- its primary guards to fetch descriptors in some edge cases where
- it would previously have used fallback directories. Fixes bug
- 23862; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (logging, backport from 0.3.3.2-alpha):
- - Don't treat inability to store a cached consensus object as a bug:
- it can happen normally when we are out of disk space. Fixes bug
- 24859; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (memory usage, backport from 0.3.2.8-rc):
- - When queuing DESTROY cells on a channel, only queue the circuit-id
- and reason fields: not the entire 514-byte cell. This fix should
- help mitigate any bugs or attacks that fill up these queues, and
- free more RAM for other uses. Fixes bug 24666; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (network layer, backport from 0.3.2.5-alpha):
- - When closing a connection via close_connection_immediately(), we
- mark it as "not blocked on bandwidth", to prevent later calls from
- trying to unblock it, and give it permission to read. This fixes a
- backtrace warning that can happen on relays under various
- circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.
- o Minor bugfixes (path selection, backport from 0.3.2.4-alpha):
- - When selecting relays by bandwidth, avoid a rounding error that
- could sometimes cause load to be imbalanced incorrectly.
- Previously, we would always round upwards; now, we round towards
- the nearest integer. This had the biggest effect when a relay's
- weight adjustments should have given it weight 0, but it got
- weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
- - When calculating the fraction of nodes that have descriptors, and
- all nodes in the network have zero bandwidths, count the number of
- nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
- - Actually log the total bandwidth in compute_weighted_bandwidths().
- Fixes bug 24170; bugfix on 0.2.4.3-alpha.
- o Minor bugfixes (performance, fragile-hardening, backport from 0.3.3.1-alpha):
- - Improve the performance of our consensus-diff application code
- when Tor is built with the --enable-fragile-hardening option set.
- Fixes bug 24826; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (OSX, backport from 0.3.3.1-alpha):
- - Don't exit the Tor process if setrlimit() fails to change the file
- limit (which can happen sometimes on some versions of OSX). Fixes
- bug 21074; bugfix on 0.0.9pre5.
- o Minor bugfixes (portability, msvc, backport from 0.3.2.9):
- - Fix a bug in the bit-counting parts of our timing-wheel code on
- MSVC. (Note that MSVC is still not a supported build platform, due
- to cyptographic timing channel risks.) Fixes bug 24633; bugfix
- on 0.2.9.1-alpha.
- o Minor bugfixes (relay, partial backport):
- - Make the internal channel_is_client() function look at what sort
- of connection handshake the other side used, rather than whether
- the other side ever sent a create_fast cell to us. Backports part
- of the fixes from bugs 22805 and 24898.
- o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
- - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
- 0.2.9.4-alpha.
- - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
- bugfix on 0.2.9.4-alpha.
- o Code simplification and refactoring (backport from 0.3.3.3-alpha):
- - Update the "rust dependencies" submodule to be a project-level
- repository, rather than a user repository. Closes ticket 25323.
- Changes in version 0.2.9.15 - 2018-03-03
- Tor 0.2.9.15 backports important security and stability bugfixes from
- later Tor releases.
- It includes an important security fix for a remote crash attack
- against directory authorities, tracked as TROVE-2018-001.
- This release also backports our new system for improved resistance to
- denial-of-service attacks against relays.
- This release also fixes several minor bugs and annoyances from
- earlier releases.
- All directory authorities should upgrade to one of the versions
- released today. Relays running 0.2.9.x may wish to update to one of
- the versions released today, for the DoS mitigations.
- o Major bugfixes (denial-of-service, directory authority, backport from 0.3.3.3-alpha):
- - Fix a protocol-list handling bug that could be used to remotely crash
- directory authorities with a null-pointer exception. Fixes bug 25074;
- bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2018-001 and
- CVE-2018-0490.
- o Major features (denial-of-service mitigation):
- - Give relays some defenses against the recent network overload. We
- start with three defenses (default parameters in parentheses).
- First: if a single client address makes too many concurrent
- connections (>100), hang up on further connections. Second: if a
- single client address makes circuits too quickly (more than 3 per
- second, with an allowed burst of 90) while also having too many
- connections open (3), refuse new create cells for the next while
- (1-2 hours). Third: if a client asks to establish a rendezvous
- point to you directly, ignore the request. These defenses can be
- manually controlled by new torrc options, but relays will also
- take guidance from consensus parameters, so there's no need to
- configure anything manually. Implements ticket 24902.
- o Major bugfixes (bootstrapping):
- - Fetch descriptors aggressively whenever we lack enough to build
- circuits, regardless of how many descriptors we are missing.
- Previously, we would delay launching the fetch when we had fewer
- than 15 missing descriptors, even if some of those descriptors
- were blocking circuits from building. Fixes bug 23985; bugfix on
- 0.1.1.11-alpha. The effects of this bug became worse in
- 0.3.0.3-alpha, when we began treating missing descriptors from our
- primary guards as a reason to delay circuits.
- o Major bugfixes (onion services, retry behavior):
- - Fix an "off by 2" error in counting rendezvous failures on the
- onion service side. While we thought we would stop the rendezvous
- attempt after one failed circuit, we were actually making three
- circuit attempts before giving up. Now switch to a default of 2,
- and allow the consensus parameter "hs_service_max_rdv_failures" to
- override. Fixes bug 24895; bugfix on 0.0.6.
- o Minor feature (relay statistics):
- - Change relay bandwidth reporting stats interval from 4 hours to 24
- hours in order to reduce the efficiency of guard discovery
- attacks. Fixes ticket 23856.
- o Minor features (compatibility, OpenSSL):
- - Tor will now support TLS1.3 once OpenSSL 1.1.1 is released.
- Previous versions of Tor would not have worked with OpenSSL 1.1.1,
- since they neither disabled TLS 1.3 nor enabled any of the
- ciphersuites it requires. Now we enable the TLS 1.3 ciphersuites.
- Closes ticket 24978.
- o Minor features (denial-of-service avoidance):
- - Make our OOM handler aware of the geoip client history cache so it
- doesn't fill up the memory. This check is important for IPv6 and
- our DoS mitigation subsystem. Closes ticket 25122.
- o Minor features (fallback directory mirrors):
- - The fallback directory list has been re-generated based on the
- current status of the network. Tor uses fallback directories to
- bootstrap when it doesn't yet have up-to-date directory
- information. Closes ticket 24801.
- - Make the default DirAuthorityFallbackRate 0.1, so that clients
- prefer to bootstrap from fallback directory mirrors. This is a
- follow-up to 24679, which removed weights from the default
- fallbacks. Implements ticket 24681.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
- Country database.
- o Minor features (linux seccomp2 sandbox):
- - Update the sandbox rules so that they should now work correctly
- with Glibc 2.26. Closes ticket 24315.
- o Minor bugfix (channel connection):
- - Use the actual observed address of an incoming relay connection,
- not the canonical address of the relay from its descriptor, when
- making decisions about how to handle the incoming connection.
- Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
- o Minor bugfix (directory authority):
- - Directory authorities, when refusing a descriptor from a rejected
- relay, now explicitly tell the relay (in its logs) to set a valid
- ContactInfo address and contact the bad-relays@ mailing list.
- Fixes bug 25170; bugfix on 0.2.9.1.
- o Minor bugfixes (address selection):
- - When the fascist_firewall_choose_address_ functions don't find a
- reachable address, set the returned address to the null address
- and port. This is a precautionary measure, because some callers do
- not check the return value. Fixes bug 24736; bugfix
- on 0.2.8.2-alpha.
- o Minor bugfixes (compilation):
- - Fix a signed/unsigned comparison warning introduced by our fix to
- TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.
- o Minor bugfixes (control port, linux seccomp2 sandbox):
- - Avoid a crash when attempting to use the seccomp2 sandbox together
- with the OwningControllerProcess feature. Fixes bug 24198; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (denial-of-service, backport from 0.3.3.3-alpha):
- - Fix a possible crash on malformed consensus. If a consensus had
- contained an unparseable protocol line, it could have made clients
- and relays crash with a null-pointer exception. To exploit this
- issue, however, an attacker would need to be able to subvert the
- directory authority system. Fixes bug 25251; bugfix on
- 0.2.9.4-alpha. Also tracked as TROVE-2018-004.
- o Minor bugfixes (memory usage):
- - When queuing DESTROY cells on a channel, only queue the circuit-id
- and reason fields: not the entire 514-byte cell. This fix should
- help mitigate any bugs or attacks that fill up these queues, and
- free more RAM for other uses. Fixes bug 24666; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (network layer):
- - When closing a connection via close_connection_immediately(), we
- mark it as "not blocked on bandwidth", to prevent later calls from
- trying to unblock it, and give it permission to read. This fixes a
- backtrace warning that can happen on relays under various
- circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.
- o Minor bugfixes (OSX):
- - Don't exit the Tor process if setrlimit() fails to change the file
- limit (which can happen sometimes on some versions of OSX). Fixes
- bug 21074; bugfix on 0.0.9pre5.
- o Minor bugfixes (path selection):
- - When selecting relays by bandwidth, avoid a rounding error that
- could sometimes cause load to be imbalanced incorrectly.
- Previously, we would always round upwards; now, we round towards
- the nearest integer. This had the biggest effect when a relay's
- weight adjustments should have given it weight 0, but it got
- weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
- - When calculating the fraction of nodes that have descriptors, and
- all nodes in the network have zero bandwidths, count the number of
- nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
- - Actually log the total bandwidth in compute_weighted_bandwidths().
- Fixes bug 24170; bugfix on 0.2.4.3-alpha.
- o Minor bugfixes (portability, msvc):
- - Fix a bug in the bit-counting parts of our timing-wheel code on
- MSVC. (Note that MSVC is still not a supported build platform, due
- to cryptographic timing channel risks.) Fixes bug 24633; bugfix
- on 0.2.9.1-alpha.
- o Minor bugfixes (relay):
- - Make the internal channel_is_client() function look at what sort
- of connection handshake the other side used, rather than whether
- the other side ever sent a create_fast cell to us. Backports part
- of the fixes from bugs 22805 and 24898.
- o Minor bugfixes (spec conformance, backport from 0.3.3.3-alpha):
- - Forbid "-0" as a protocol version. Fixes part of bug 25249; bugfix on
- 0.2.9.4-alpha.
- - Forbid UINT32_MAX as a protocol version. Fixes part of bug 25249;
- bugfix on 0.2.9.4-alpha.
- Changes in version 0.3.3.2-alpha - 2018-02-10
- Tor 0.3.3.2-alpha is the second alpha in the 0.3.3.x series. It
- introduces a mechanism to handle the high loads that many relay
- operators have been reporting recently. It also fixes several bugs in
- older releases. If this new code proves reliable, we plan to backport
- it to older supported release series.
- o Major features (denial-of-service mitigation):
- - Give relays some defenses against the recent network overload. We
- start with three defenses (default parameters in parentheses).
- First: if a single client address makes too many concurrent
- connections (>100), hang up on further connections. Second: if a
- single client address makes circuits too quickly (more than 3 per
- second, with an allowed burst of 90) while also having too many
- connections open (3), refuse new create cells for the next while
- (1-2 hours). Third: if a client asks to establish a rendezvous
- point to you directly, ignore the request. These defenses can be
- manually controlled by new torrc options, but relays will also
- take guidance from consensus parameters, so there's no need to
- configure anything manually. Implements ticket 24902.
- o Major bugfixes (netflow padding):
- - Stop adding unneeded channel padding right after we finish
- flushing to a connection that has been trying to flush for many
- seconds. Instead, treat all partial or complete flushes as
- activity on the channel, which will defer the time until we need
- to add padding. This fix should resolve confusing and scary log
- messages like "Channel padding timeout scheduled 221453ms in the
- past." Fixes bug 22212; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (protocol versions):
- - Add Link protocol version 5 to the supported protocols list. Fixes
- bug 25070; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (scheduler, consensus):
- - The scheduler subsystem was failing to promptly notice changes in
- consensus parameters, making it harder to switch schedulers
- network-wide. Fixes bug 24975; bugfix on 0.3.2.1-alpha.
- o Minor features (denial-of-service avoidance):
- - Make our OOM handler aware of the geoip client history cache so it
- doesn't fill up the memory. This check is important for IPv6 and
- our DoS mitigation subsystem. Closes ticket 25122.
- o Minor features (directory authority):
- - When directory authorities are unable to add signatures to a
- pending consensus, log the reason why. Closes ticket 24849.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 7 2018 Maxmind GeoLite2
- Country database.
- o Minor features (logging, diagnostic):
- - When logging a failure to create an onion service's descriptor,
- also log what the problem with the descriptor was. Diagnostic for
- ticket 24972.
- o Minor bugfix (channel connection):
- - Use the actual observed address of an incoming relay connection,
- not the canonical address of the relay from its descriptor, when
- making decisions about how to handle the incoming connection.
- Fixes bug 24952; bugfix on 0.2.4.11-alpha. Patch by "ffmancera".
- o Minor bugfix (directory authority):
- - Directory authorities, when refusing a descriptor from a rejected
- relay, now explicitly tell the relay (in its logs) to set a valid
- ContactInfo address and contact the bad-relays@ mailing list.
- Fixes bug 25170; bugfix on 0.2.9.1.
- o Minor bugfixes (all versions of Tor):
- - Use the "misspell" tool to detect and fix typos throughout the
- source code. Fixes bug 23650; bugfix on various versions of Tor.
- Patch from Deepesh Pathak.
- o Minor bugfixes (circuit, cannibalization):
- - Don't cannibalize preemptively-built circuits if we no longer
- recognize their first hop. This situation can happen if our Guard
- relay went off the consensus after the circuit was created. Fixes
- bug 24469; bugfix on 0.0.6.
- o Minor bugfixes (correctness):
- - Remove a nonworking, unnecessary check to see whether a circuit
- hop's identity digest was set when the circuit failed. Fixes bug
- 24927; bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (logging):
- - Don't treat inability to store a cached consensus object as a bug:
- it can happen normally when we are out of disk space. Fixes bug
- 24859; bugfix on 0.3.1.1-alpha.
- - Fix a (mostly harmless) race condition when invoking
- LOG_PROTOCOL_WARN message from a subthread while the torrc options
- are changing. Fixes bug 23954; bugfix on 0.1.1.9-alpha.
- o Minor bugfixes (onion services):
- - Remove a BUG() statement when a client fetches an onion descriptor
- that has a lower revision counter than the one in its cache. This
- can happen in normal circumstances due to HSDir desync. Fixes bug
- 24976; bugfix on 0.3.2.1-alpha.
- - If we are configured to offer a single onion service, don't log
- long-term established one hop rendezvous points in the heartbeat.
- Fixes bug 25116; bugfix on 0.2.9.6-rc.
- o Minor bugfixes (performance):
- - Avoid calling protocol_list_supports_protocol() from inside tight
- loops when running with cached routerinfo_t objects. Instead,
- summarize the relevant protocols as flags in the routerinfo_t, as
- we do for routerstatus_t objects. This change simplifies our code
- a little, and saves a large amount of short-term memory allocation
- operations. Fixes bug 25008; bugfix on 0.2.9.4-alpha.
- o Minor bugfixes (Rust FFI):
- - Fix a minor memory leak which would happen whenever the C code
- would call the Rust implementation of
- protover_get_supported_protocols(). This was due to the C version
- returning a static string, whereas the Rust version newly allocated
- a CString to pass across the FFI boundary. Consequently, the C
- code was not expecting to need to free() what it was given. Fixes
- bug 25127; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (scheduler, KIST):
- - Avoid adding the same channel twice in the KIST scheduler pending
- list, which would waste CPU cycles. Fixes bug 24700; bugfix
- on 0.3.2.1-alpha.
- o Minor bugfixes (unit test, monotonic time):
- - Increase a constant (1msec to 10msec) in the monotonic time test
- that makes sure the nsec/usec/msec times read are synchronized.
- This change was needed to accommodate slow systems like armel or
- when the clock_gettime() is not a VDSO on the running kernel.
- Fixes bug 25113; bugfix on 0.2.9.1.
- o Minor bugfixes (v3 onion services):
- - Look at the "HSRend" protocol version, not the "HSDir" protocol
- version, when deciding whether a consensus entry can support the
- v3 onion service protocol as a rendezvous point. Fixes bug 25105;
- bugfix on 0.3.2.1-alpha.
- o Code simplification and refactoring:
- - Remove the unused nodelist_recompute_all_hsdir_indices(). Closes
- ticket 25108.
- - Remove a series of counters used to track circuit extend attempts
- and connection status but that in reality we aren't using for
- anything other than stats logged by a SIGUSR1 signal. Closes
- ticket 25163.
- o Documentation (man page):
- - The HiddenServiceVersion torrc option accepts only one number:
- either version 2 or 3. Closes ticket 25026; bugfix
- on 0.3.2.2-alpha.
- Changes in version 0.3.3.1-alpha - 2018-01-25
- Tor 0.3.3.1-alpha is the first release in the 0.3.3.x series. It adds
- several new features to Tor, including several improvements to
- bootstrapping, and support for an experimental "vanguards" feature to
- resist guard discovery attacks. This series also includes better
- support for applications that need to embed Tor or manage v3
- onion services.
- o Major features (embedding):
- - There is now a documented stable API for programs that need to
- embed Tor. See tor_api.h for full documentation and known bugs.
- Closes ticket 23684.
- - Tor now has support for restarting in the same process.
- Controllers that run Tor using the "tor_api.h" interface can now
- restart Tor after Tor has exited. This support is incomplete,
- however: we fixed crash bugs that prevented it from working at
- all, but many bugs probably remain, including a possibility of
- security issues. Implements ticket 24581.
- o Major features (IPv6, directory documents):
- - Add consensus method 27, which adds IPv6 ORPorts to the microdesc
- consensus. This information makes it easier for IPv6 clients to
- bootstrap and choose reachable entry guards. Implements 23826.
- - Add consensus method 28, which removes IPv6 ORPorts from
- microdescriptors. Now that the consensus contains IPv6 ORPorts,
- they are redundant in microdescs. This change will be used by Tor
- clients on 0.2.8.x and later. (That is to say, with all Tor
- clients having IPv6 bootstrap and guard support.) Implements 23828.
- - Expand the documentation for AuthDirHasIPv6Connectivity when it is
- set by different numbers of authorities. Fixes 23870
- on 0.2.4.1-alpha.
- o Major features (onion service v3, control port):
- - The control port now supports commands and events for v3 onion
- services. It is now possible to create ephemeral v3 services using
- ADD_ONION. Additionally, several events (HS_DESC, HS_DESC_CONTENT,
- CIRC and CIRC_MINOR) and commands (GETINFO, HSPOST, ADD_ONION and
- DEL_ONION) have been extended to support v3 onion services. Closes
- ticket 20699; implements proposal 284.
- o Major features (onion services):
- - Provide torrc options to pin the second and third hops of onion
- service circuits to a list of nodes. The option HSLayer2Guards
- pins the second hop, and the option HSLayer3Guards pins the third
- hop. These options are for use in conjunction with experiments
- with "vanguards" for preventing guard enumeration attacks. Closes
- ticket 13837.
- o Major features (rust, portability, experimental):
- - Tor now ships with an optional implementation of one of its
- smaller modules (protover.c) in the Rust programming language. To
- try it out, install a Rust build environment, and configure Tor
- with "--enable-rust --enable-cargo-online-mode". This should not
- cause any user-visible changes, but should help us gain more
- experience with Rust, and plan future Rust integration work.
- Implementation by Chelsea Komlo. Closes ticket 22840.
- o Major features (storage, configuration):
- - Users can store cached directory documents somewhere other than
- the DataDirectory by using the CacheDirectory option. Similarly,
- the storage location for relay's keys can be overridden with the
- KeyDirectory option. Closes ticket 22703.
- o Major features (v3 onion services, ipv6):
- - When v3 onion service clients send introduce cells, they now
- include the IPv6 address of the rendezvous point, if it has one.
- Current v3 onion services running 0.3.2 ignore IPv6 addresses, but
- in future Tor versions, IPv6-only v3 single onion services will be
- able to use IPv6 addresses to connect directly to the rendezvous
- point. Closes ticket 23577. Patch by Neel Chauhan.
- o Major bugfixes (onion services, retry behavior):
- - Fix an "off by 2" error in counting rendezvous failures on the
- onion service side. While we thought we would stop the rendezvous
- attempt after one failed circuit, we were actually making three
- circuit attempts before giving up. Now switch to a default of 2,
- and allow the consensus parameter "hs_service_max_rdv_failures" to
- override. Fixes bug 24895; bugfix on 0.0.6.
- - New-style (v3) onion services now obey the "max rendezvous circuit
- attempts" logic. Previously they would make as many rendezvous
- circuit attempts as they could fit in the MAX_REND_TIMEOUT second
- window before giving up. Fixes bug 24894; bugfix on 0.3.2.1-alpha.
- o Major bugfixes (relays):
- - Fix a set of false positives where relays would consider
- connections to other relays as being client-only connections (and
- thus e.g. deserving different link padding schemes) if those
- relays fell out of the consensus briefly. Now we look only at the
- initial handshake and whether the connection authenticated as a
- relay. Fixes bug 24898; bugfix on 0.3.1.1-alpha.
- o Minor feature (IPv6):
- - Make IPv6-only clients wait for microdescs for relays, even if we
- were previously using descriptors (or were using them as a bridge)
- and have a cached descriptor for them. Implements 23827.
- - When a consensus has IPv6 ORPorts, make IPv6-only clients use
- them, rather than waiting to download microdescriptors.
- Implements 23827.
- o Minor features (cleanup):
- - Tor now deletes the CookieAuthFile and ExtORPortCookieAuthFile
- when it stops. Closes ticket 23271.
- o Minor features (defensive programming):
- - Most of the functions in Tor that free objects have been replaced
- with macros that free the objects and set the corresponding
- pointers to NULL. This change should help prevent a large class of
- dangling pointer bugs. Closes ticket 24337.
- - Where possible, the tor_free() macro now only evaluates its input
- once. Part of ticket 24337.
- - Check that microdesc ed25519 ids are non-zero in
- node_get_ed25519_id() before returning them. Implements 24001,
- patch by "aruna1234".
- o Minor features (directory authority):
- - Make the "Exit" flag assignment only depend on whether the exit
- policy allows connections to ports 80 and 443. Previously relays
- would get the Exit flag if they allowed connections to one of
- these ports and also port 6667. Resolves ticket 23637.
- o Minor features (embedding):
- - Tor can now start with a preauthenticated control connection
- created by the process that launched it. This feature is meant for
- use by programs that want to launch and manage a Tor process
- without allowing other programs to manage it as well. For more
- information, see the __OwningControllerFD option documented in
- control-spec.txt. Closes ticket 23900.
- - On most errors that would cause Tor to exit, it now tries to
- return from the tor_main() function, rather than calling the
- system exit() function. Most users won't notice a difference here,
- but it should make a significant for programs that run Tor inside
- a separate thread: they should now be able to survive Tor's exit
- conditions rather than having Tor shut down the entire process.
- Closes ticket 23848.
- - Applications that want to embed Tor can now tell Tor not to
- register any of its own POSIX signal handlers, using the
- __DisableSignalHandlers option. Closes ticket 24588.
- o Minor features (fallback directory list):
- - Avoid selecting fallbacks that change their IP addresses too
- often. Select more fallbacks by ignoring the Guard flag, and
- allowing lower cutoffs for the Running and V2Dir flags. Also allow
- a lower bandwidth, and a higher number of fallbacks per operator
- (5% of the list). Implements ticket 24785.
- - Update the fallback whitelist and blacklist based on opt-ins and
- relay changes. Closes tickets 22321, 24678, 22527, 24135,
- and 24695.
- o Minor features (fallback directory mirror configuration):
- - Add a nickname to each fallback in a C comment. This makes it
- easier for operators to find their relays, and allows stem to use
- nicknames to identify fallbacks. Implements ticket 24600.
- - Add a type and version header to the fallback directory mirror
- file. Also add a delimiter to the end of each fallback entry. This
- helps external parsers like stem and Relay Search. Implements
- ticket 24725.
- - Add an extrainfo cache flag for each fallback in a C comment. This
- allows stem to use fallbacks to fetch extra-info documents, rather
- than using authorities. Implements ticket 22759.
- - Add the generateFallbackDirLine.py script for automatically
- generating fallback directory mirror lines from relay fingerprints.
- No more typos! Add the lookupFallbackDirContact.py script for
- automatically looking up operator contact info from relay
- fingerprints. Implements ticket 24706, patch by teor and atagar.
- - Reject any fallback directory mirror that serves an expired
- consensus. Implements ticket 20942, patch by "minik".
- - Remove commas and equals signs from external string inputs to the
- fallback list. This avoids format confusion attacks. Implements
- ticket 24726.
- - Remove the "weight=10" line from fallback directory mirror
- entries. Ticket 24681 will maintain the current fallback weights
- by changing Tor's default fallback weight to 10. Implements
- ticket 24679.
- - Stop logging excessive information about fallback netblocks.
- Implements ticket 24791.
- o Minor features (forward-compatibility):
- - If a relay supports some link authentication protocol that we do
- not recognize, then include that relay's ed25519 key when telling
- other relays to extend to it. Previously, we treated future
- versions as if they were too old to support ed25519 link
- authentication. Closes ticket 20895.
- o Minor features (heartbeat):
- - Add onion service information to our heartbeat logs, displaying
- stats about the activity of configured onion services. Closes
- ticket 24896.
- o Minor features (instrumentation, development):
- - Add the MainloopStats option to allow developers to get
- instrumentation information from the main event loop via the
- heartbeat messages. We hope to use this to improve Tor's behavior
- when it's trying to sleep. Closes ticket 24605.
- o Minor features (log messages):
- - Improve a warning message that happens when we fail to re-parse an
- old router because of an expired certificate. Closes ticket 20020.
- - Make the log more quantitative when we hit MaxMemInQueues
- threshold exposing some values. Closes ticket 24501.
- o Minor features (logging, android):
- - Added support for the Android logging subsystem. Closes
- ticket 24362.
- o Minor features (performance):
- - Support predictive circuit building for onion service circuits
- with multiple layers of guards. Closes ticket 23101.
- - Use stdatomic.h where available, rather than mutexes, to implement
- atomic_counter_t. Closes ticket 23953.
- o Minor features (performance, 32-bit):
- - Improve performance on 32-bit systems by avoiding 64-bit division
- when calculating the timestamp in milliseconds for channel padding
- computations. Implements ticket 24613.
- - Improve performance on 32-bit systems by avoiding 64-bit division
- when timestamping cells and buffer chunks for OOM calculations.
- Implements ticket 24374.
- o Minor features (performance, OSX, iOS):
- - Use the mach_approximate_time() function (when available) to
- implement coarse monotonic time. Having a coarse time function
- should avoid a large number of system calls, and improve
- performance slightly, especially under load. Closes ticket 24427.
- o Minor features (performance, windows):
- - Improve performance on Windows Vista and Windows 7 by adjusting
- TCP send window size according to the recommendation from
- SIO_IDEAL_SEND_BACKLOG_QUERY. Closes ticket 22798. Patch
- from Vort.
- o Minor features (relay):
- - Implement an option, ReducedExitPolicy, to allow an Tor exit relay
- operator to use a more reasonable ("reduced") exit policy, rather
- than the default one. If you want to run an exit node without
- thinking too hard about which ports to allow, this one is for you.
- Closes ticket 13605. Patch from Neel Chauhan.
- o Minor features (testing, debugging, embedding):
- - For development purposes, Tor now has a mode in which it runs for
- a few seconds, then stops, and starts again without exiting the
- process. This mode is meant to help us debug various issues with
- ticket 23847. To use this feature, compile with
- --enable-restart-debugging, and set the TOR_DEBUG_RESTART
- environment variable. This is expected to crash a lot, and is
- really meant for developers only. It will likely be removed in a
- future release. Implements ticket 24583.
- o Minor bugfix (network IPv6 test):
- - Tor's test scripts now check if "ping -6 ::1" works when the user
- runs "make test-network-all". Fixes bug 24677; bugfix on
- 0.2.9.3-alpha. Patch by "ffmancera".
- o Minor bugfixes (build, rust):
- - Fix output of autoconf checks to display success messages for Rust
- dependencies and a suitable rustc compiler version. Fixes bug
- 24612; bugfix on 0.3.1.3-alpha.
- - When building with Rust on OSX, link against libresolv, to work
- around the issue at https:
- Fixes bug 24652; bugfix on 0.3.1.1-alpha.
- - Don't pass the --quiet option to cargo: it seems to suppress some
- errors, which is not what we want to do when building. Fixes bug
- 24518; bugfix on 0.3.1.7.
- - Build correctly when building from outside Tor's source tree with
- the TOR_RUST_DEPENDENCIES option set. Fixes bug 22768; bugfix
- on 0.3.1.7.
- o Minor bugfixes (directory authorities, IPv6):
- - When creating a routerstatus (vote) from a routerinfo (descriptor),
- set the IPv6 address to the unspecified IPv6 address, and
- explicitly initialize the port to zero. Fixes bug 24488; bugfix
- on 0.2.4.1-alpha.
- o Minor bugfixes (fallback directory mirrors):
- - Make updateFallbackDirs.py search harder for python. (Some OSs
- don't put it in /usr/bin.) Fixes bug 24708; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (hibernation, bandwidth accounting, shutdown):
- - When hibernating, close connections normally and allow them to
- flush. Fixes bug 23571; bugfix on 0.2.4.7-alpha. Also fixes
- bug 7267.
- - Do not attempt to launch self-reachability tests when entering
- hibernation. Fixes a case of bug 12062; bugfix on 0.0.9pre5.
- - Resolve several bugs related to descriptor fetching on bridge
- clients with bandwidth accounting enabled. (This combination is
- not recommended!) Fixes a case of bug 12062; bugfix
- on 0.2.0.3-alpha.
- - When hibernating, do not attempt to launch DNS checks. Fixes a
- case of bug 12062; bugfix on 0.1.2.2-alpha.
- - When hibernating, do not try to upload or download descriptors.
- Fixes a case of bug 12062; bugfix on 0.0.9pre5.
- o Minor bugfixes (IPv6, bridges):
- - Tor now always sets IPv6 preferences for bridges. Fixes bug 24573;
- bugfix on 0.2.8.2-alpha.
- - Tor now sets IPv6 address in the routerstatus as well as in the
- router descriptors when updating addresses for a bridge. Closes
- ticket 24572; bugfix on 0.2.4.5-alpha. Patch by "ffmancera".
- o Minor bugfixes (linux seccomp2 sandbox):
- - When running with the sandbox enabled, reload configuration files
- correctly even when %include was used. Previously we would crash.
- Fixes bug 22605; bugfix on 0.3.1. Patch from Daniel Pinto.
- o Minor bugfixes (memory leaks):
- - Avoid possible at-exit memory leaks related to use of Libevent's
- event_base_once() function. (This function tends to leak memory if
- the event_base is closed before the event fires.) Fixes bug 24584;
- bugfix on 0.2.8.1-alpha.
- - Fix a harmless memory leak in tor-resolve. Fixes bug 24582; bugfix
- on 0.2.1.1-alpha.
- o Minor bugfixes (OSX):
- - Don't exit the Tor process if setrlimit() fails to change the file
- limit (which can happen sometimes on some versions of OSX). Fixes
- bug 21074; bugfix on 0.0.9pre5.
- o Minor bugfixes (performance, fragile-hardening):
- - Improve the performance of our consensus-diff application code
- when Tor is built with the --enable-fragile-hardening option set.
- Fixes bug 24826; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (performance, timeouts):
- - Consider circuits for timeout as soon as they complete a hop. This
- is more accurate than applying the timeout in
- circuit_expire_building() because that function is only called
- once per second, which is now too slow for typical timeouts on the
- current network. Fixes bug 23114; bugfix on 0.2.2.2-alpha.
- - Use onion service circuits (and other circuits longer than 3 hops)
- to calculate a circuit build timeout. Previously, Tor only
- calculated its build timeout based on circuits that planned to be
- exactly 3 hops long. With this change, we include measurements
- from all circuits at the point where they complete their third
- hop. Fixes bug 23100; bugfix on 0.2.2.2-alpha.
- o Minor bugfixes (testing):
- - Give out Exit flags in bootstrapping networks. Fixes bug 24137;
- bugfix on 0.2.3.1-alpha.
- - Fix a memory leak in the scheduler/loop_kist unit test. Fixes bug
- 25005; bugfix on 0.3.2.7-rc.
- o Code simplification and refactoring:
- - Remove /usr/athena from search path in configure.ac. Closes
- ticket 24363.
- - Remove duplicate code in node_has_curve25519_onion_key() and
- node_get_curve25519_onion_key(), and add a check for a zero
- microdesc curve25519 onion key. Closes ticket 23966, patch by
- "aruna1234" and teor.
- - Rewrite channel_rsa_id_group_set_badness to reduce temporary
- memory allocations with large numbers of OR connections (e.g.
- relays). Closes ticket 24119.
- - Separate the function that deletes ephemeral files when Tor
- stops gracefully.
- - Small changes to Tor's buf_t API to make it suitable for use as a
- general-purpose safe string constructor. Closes ticket 22342.
- - Switch -Wnormalized=id to -Wnormalized=nfkc in configure.ac to
- avoid source code identifier confusion. Closes ticket 24467.
- - The tor_git_revision[] constant no longer needs to be redeclared
- by everything that links against the rest of Tor. Done as part of
- ticket 23845, to simplify our external API.
- - We make extend_info_from_node() use node_get_curve25519_onion_key()
- introduced in ticket 23577 to access the curve25519 public keys
- rather than accessing it directly. Closes ticket 23760. Patch by
- Neel Chauhan.
- - Add a function to log channels' scheduler state changes to aid
- debugging efforts. Closes ticket 24531.
- o Documentation:
- - Add documentation on how to build tor with Rust dependencies
- without having to be online. Closes ticket 22907; bugfix
- on 0.3.0.3-alpha.
- - Clarify the behavior of RelayBandwidth{Rate,Burst} with client
- traffic. Closes ticket 24318.
- - Document that OutboundBindAddress doesn't apply to DNS requests.
- Closes ticket 22145. Patch from Aruna Maurya.
- - Document that operators who run more than one relay or bridge are
- expected to set MyFamily and ContactInfo correctly. Closes
- ticket 24526.
- o Code simplification and refactoring (channels):
- - Remove the incoming and outgoing channel queues. These were never
- used, but still took up a step in our fast path.
- - The majority of the channel unit tests have been rewritten and the
- code coverage has now been raised to 83.6% for channel.c. Closes
- ticket 23709.
- - Remove other dead code from the channel subsystem: All together,
- this cleanup has removed more than 1500 lines of code overall and
- adding very little except for unit test.
- o Code simplification and refactoring (circuit rendezvous):
- - Split the client-size rendezvous circuit lookup into two
- functions: one that returns only established circuits and another
- that returns all kinds of circuits. Closes ticket 23459.
- o Code simplification and refactoring (controller):
- - Make most of the variables in networkstatus_getinfo_by_purpose()
- const. Implements ticket 24489.
- Changes in version 0.3.2.9 - 2018-01-09
- Tor 0.3.2.9 is the first stable release in the 0.3.2 series.
- The 0.3.2 series includes our long-anticipated new onion service
- design, with numerous security features. (For more information, see
- our blog post at https:
- have a new circuit scheduler algorithm for improved performance on
- relays everywhere (see https:
- along with many smaller features and bugfixes.
- Per our stable release policy, we plan to support each stable release
- series for at least the next nine months, or for three months after
- the first stable release of the next series: whichever is longer. If
- you need a release with long-term support, we recommend that you stay
- with the 0.2.9 series.
- Below is a list of the changes since 0.3.2.8-rc. For a list of all
- changes since 0.3.1, see the ReleaseNotes file.
- o Minor features (fallback directory mirrors):
- - The fallback directory list has been re-generated based on the
- current status of the network. Tor uses fallback directories to
- bootstrap when it doesn't yet have up-to-date directory
- information. Closes ticket 24801.
- - Make the default DirAuthorityFallbackRate 0.1, so that clients
- prefer to bootstrap from fallback directory mirrors. This is a
- follow-up to 24679, which removed weights from the default
- fallbacks. Implements ticket 24681.
- o Minor features (geoip):
- - Update geoip and geoip6 to the January 5 2018 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (address selection):
- - When the fascist_firewall_choose_address_ functions don't find a
- reachable address, set the returned address to the null address
- and port. This is a precautionary measure, because some callers do
- not check the return value. Fixes bug 24736; bugfix
- on 0.2.8.2-alpha.
- o Minor bugfixes (compilation):
- - Resolve a few shadowed-variable warnings in the onion service
- code. Fixes bug 24634; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (portability, msvc):
- - Fix a bug in the bit-counting parts of our timing-wheel code on
- MSVC. (Note that MSVC is still not a supported build platform, due
- to cryptographic timing channel risks.) Fixes bug 24633; bugfix
- on 0.2.9.1-alpha.
- Changes in version 0.3.2.8-rc - 2017-12-21
- Tor 0.3.2.8-rc fixes a pair of bugs in the KIST and KISTLite
- schedulers that had led servers under heavy load to overload their
- outgoing connections. All relay operators running earlier 0.3.2.x
- versions should upgrade. This version also includes a mitigation for
- over-full DESTROY queues leading to out-of-memory conditions: if it
- works, we will soon backport it to earlier release series.
- This is the second release candidate in the 0.3.2 series. If we find
- no new bugs or regression here, then the first stable 0.3.2 release
- will be nearly identical to this.
- o Major bugfixes (KIST, scheduler):
- - The KIST scheduler did not correctly account for data already
- enqueued in each connection's send socket buffer, particularly in
- cases when the TCP/IP congestion window was reduced between
- scheduler calls. This situation lead to excessive per-connection
- buffering in the kernel, and a potential memory DoS. Fixes bug
- 24665; bugfix on 0.3.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the December 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (hidden service v3):
- - Bump hsdir_spread_store parameter from 3 to 4 in order to increase
- the probability of reaching a service for a client missing
- microdescriptors. Fixes bug 24425; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (memory usage):
- - When queuing DESTROY cells on a channel, only queue the circuit-id
- and reason fields: not the entire 514-byte cell. This fix should
- help mitigate any bugs or attacks that fill up these queues, and
- free more RAM for other uses. Fixes bug 24666; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (scheduler, KIST):
- - Use a sane write limit for KISTLite when writing onto a connection
- buffer instead of using INT_MAX and shoving as much as it can.
- Because the OOM handler cleans up circuit queues, we are better
- off at keeping them in that queue instead of the connection's
- buffer. Fixes bug 24671; bugfix on 0.3.2.1-alpha.
- Changes in version 0.3.2.7-rc - 2017-12-14
- Tor 0.3.2.7-rc fixes various bugs in earlier versions of Tor,
- including some that could affect reliability or correctness.
- This is the first release candidate in the 0.3.2 series. If we find no
- new bugs or regression here, then the first stable 0.3.2. release will
- be nearly identical to this.
- o Major bugfixes (circuit prediction):
- - Fix circuit prediction logic so that a client doesn't treat a port
- as being "handled" by a circuit if that circuit already has
- isolation settings on it. This change should make Tor clients more
- responsive by improving their chances of having a pre-created
- circuit ready for use when a request arrives. Fixes bug 18859;
- bugfix on 0.2.3.3-alpha.
- o Minor features (logging):
- - Provide better warnings when the getrandom() syscall fails. Closes
- ticket 24500.
- o Minor features (portability):
- - Tor now compiles correctly on arm64 with libseccomp-dev installed.
- (It doesn't yet work with the sandbox enabled.) Closes
- ticket 24424.
- o Minor bugfixes (bridge clients, bootstrap):
- - Retry directory downloads when we get our first bridge descriptor
- during bootstrap or while reconnecting to the network. Keep
- retrying every time we get a bridge descriptor, until we have a
- reachable bridge. Fixes part of bug 24367; bugfix on 0.2.0.3-alpha.
- - Stop delaying bridge descriptor fetches when we have cached bridge
- descriptors. Instead, only delay bridge descriptor fetches when we
- have at least one reachable bridge. Fixes part of bug 24367;
- bugfix on 0.2.0.3-alpha.
- - Stop delaying directory fetches when we have cached bridge
- descriptors. Instead, only delay bridge descriptor fetches when
- all our bridges are definitely unreachable. Fixes part of bug
- 24367; bugfix on 0.2.0.3-alpha.
- o Minor bugfixes (compilation):
- - Fix a signed/unsigned comparison warning introduced by our fix to
- TROVE-2017-009. Fixes bug 24480; bugfix on 0.2.5.16.
- o Minor bugfixes (correctness):
- - Fix several places in our codebase where a C compiler would be
- likely to eliminate a check, based on assuming that undefined
- behavior had not happened elsewhere in the code. These cases are
- usually a sign of redundant checking or dubious arithmetic. Found
- by Georg Koppen using the "STACK" tool from Wang, Zeldovich,
- Kaashoek, and Solar-Lezama. Fixes bug 24423; bugfix on various
- Tor versions.
- o Minor bugfixes (onion service v3):
- - Fix a race where an onion service would launch a new intro circuit
- after closing an old one, but fail to register it before freeing
- the previously closed circuit. This bug was making the service
- unable to find the established intro circuit and thus not upload
- its descriptor, thus making a service unavailable for up to 24
- hours. Fixes bug 23603; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (scheduler, KIST):
- - Properly set the scheduler state of an unopened channel in the
- KIST scheduler main loop. This prevents a harmless but annoying
- log warning. Fixes bug 24502; bugfix on 0.3.2.4-alpha.
- - Avoid a possible integer overflow when computing the available
- space on the TCP buffer of a channel. This had no security
- implications; but could make KIST allow too many cells on a
- saturated connection. Fixes bug 24590; bugfix on 0.3.2.1-alpha.
- - Downgrade to "info" a harmless warning about the monotonic time
- moving backwards: This can happen on platform not supporting
- monotonic time. Fixes bug 23696; bugfix on 0.3.2.1-alpha.
- Changes in version 0.3.2.6-alpha - 2017-12-01
- This version of Tor is the latest in the 0.3.2 alpha series. It
- includes fixes for several important security issues. All Tor users
- should upgrade to this release, or to one of the other releases coming
- out today.
- o Major bugfixes (security):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - Fix a denial of service issue where an attacker could crash a
- directory authority using a malformed router descriptor. Fixes bug
- 24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
- and CVE-2017-8820.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, onion service v2):
- - Fix a use-after-free error that could crash v2 Tor onion services
- when they failed to open circuits while expiring introduction
- points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
- also tracked as TROVE-2017-013 and CVE-2017-8823.
- o Major bugfixes (security, relay):
- - When running as a relay, make sure that we never build a path
- through ourselves, even in the case where we have somehow lost the
- version of our descriptor appearing in the consensus. Fixes part
- of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
- as TROVE-2017-012 and CVE-2017-8822.
- - When running as a relay, make sure that we never choose ourselves
- as a guard. Fixes part of bug 21534; bugfix on 0.3.0.1-alpha. This
- issue is also tracked as TROVE-2017-012 and CVE-2017-8822.
- o Minor feature (relay statistics):
- - Change relay bandwidth reporting stats interval from 4 hours to 24
- hours in order to reduce the efficiency of guard discovery
- attacks. Fixes ticket 23856.
- o Minor features (directory authority):
- - Add an IPv6 address for the "bastet" directory authority. Closes
- ticket 24394.
- o Minor bugfixes (client):
- - By default, do not enable storage of client-side DNS values. These
- values were unused by default previously, but they should not have
- been cached at all. Fixes bug 24050; bugfix on 0.2.6.3-alpha.
- Changes in version 0.3.1.9 - 2017-12-01:
- Tor 0.3.1.9 backports important security and stability fixes from the
- 0.3.2 development series. All Tor users should upgrade to this
- release, or to another of the releases coming out today.
- o Major bugfixes (security, backport from 0.3.2.6-alpha):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - Fix a denial of service issue where an attacker could crash a
- directory authority using a malformed router descriptor. Fixes bug
- 24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
- and CVE-2017-8820.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
- - Fix a use-after-free error that could crash v2 Tor onion services
- when they failed to open circuits while expiring introduction
- points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
- also tracked as TROVE-2017-013 and CVE-2017-8823.
- o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
- - When running as a relay, make sure that we never build a path
- through ourselves, even in the case where we have somehow lost the
- version of our descriptor appearing in the consensus. Fixes part
- of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
- as TROVE-2017-012 and CVE-2017-8822.
- - When running as a relay, make sure that we never choose ourselves
- as a guard. Fixes part of bug 21534; bugfix on 0.3.0.1-alpha. This
- issue is also tracked as TROVE-2017-012 and CVE-2017-8822.
- o Major bugfixes (exit relays, DNS, backport from 0.3.2.4-alpha):
- - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
- making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
- 0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
- identifying and finding a workaround to this bug and to Moritz,
- Arthur Edelstein, and Roger for helping to track it down and
- analyze it.
- o Minor features (bridge):
- - Bridges now include notice in their descriptors that they are
- bridges, and notice of their distribution status, based on their
- publication settings. Implements ticket 18329. For more fine-
- grained control of how a bridge is distributed, upgrade to 0.3.2.x
- or later.
- o Minor features (directory authority, backport from 0.3.2.6-alpha):
- - Add an IPv6 address for the "bastet" directory authority. Closes
- ticket 24394.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfix (relay address resolution, backport from 0.3.2.1-alpha):
- - Avoid unnecessary calls to directory_fetches_from_authorities() on
- relays, to prevent spurious address resolutions and descriptor
- rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
- bugfix on in 0.2.8.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.2.1-alpha):
- - Fix unused variable warnings in donna's Curve25519 SSE2 code.
- Fixes bug 22895; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (logging, relay shutdown, annoyance, backport from 0.3.2.2-alpha):
- - When a circuit is marked for close, do not attempt to package any
- cells for channels on that circuit. Previously, we would detect
- this condition lower in the call stack, when we noticed that the
- circuit had no attached channel, and log an annoying message.
- Fixes bug 8185; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (onion service, backport from 0.3.2.5-alpha):
- - Rename the consensus parameter "hsdir-interval" to "hsdir_interval"
- so it matches dir-spec.txt. Fixes bug 24262; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (relay, crash, backport from 0.3.2.4-alpha):
- - Avoid a crash when transitioning from client mode to bridge mode.
- Previously, we would launch the worker threads whenever our
- "public server" mode changed, but not when our "server" mode
- changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
- Changes in version 0.3.0.13 - 2017-12-01
- Tor 0.3.0.13 backports important security and stability bugfixes from
- later Tor releases. All Tor users should upgrade to this release, or
- to another of the releases coming out today.
- Note: the Tor 0.3.0 series will no longer be supported after 26 Jan
- 2018. If you need a release with long-term support, please stick with
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Major bugfixes (security, backport from 0.3.2.6-alpha):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - Fix a denial of service issue where an attacker could crash a
- directory authority using a malformed router descriptor. Fixes bug
- 24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
- and CVE-2017-8820.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
- - Fix a use-after-free error that could crash v2 Tor onion services
- when they failed to open circuits while expiring introduction
- points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
- also tracked as TROVE-2017-013 and CVE-2017-8823.
- o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
- - When running as a relay, make sure that we never build a path
- through ourselves, even in the case where we have somehow lost the
- version of our descriptor appearing in the consensus. Fixes part
- of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
- as TROVE-2017-012 and CVE-2017-8822.
- - When running as a relay, make sure that we never choose ourselves
- as a guard. Fixes part of bug 21534; bugfix on 0.3.0.1-alpha. This
- issue is also tracked as TROVE-2017-012 and CVE-2017-8822.
- o Major bugfixes (exit relays, DNS, backport from 0.3.2.4-alpha):
- - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
- making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
- 0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
- identifying and finding a workaround to this bug and to Moritz,
- Arthur Edelstein, and Roger for helping to track it down and
- analyze it.
- o Minor features (security, windows, backport from 0.3.1.1-alpha):
- - Enable a couple of pieces of Windows hardening: one
- (HeapEnableTerminationOnCorruption) that has been on-by-default
- since Windows 8, and unavailable before Windows 7; and one
- (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
- affect us, but shouldn't do any harm. Closes ticket 21953.
- o Minor features (bridge, backport from 0.3.1.9):
- - Bridges now include notice in their descriptors that they are
- bridges, and notice of their distribution status, based on their
- publication settings. Implements ticket 18329. For more fine-
- grained control of how a bridge is distributed, upgrade to 0.3.2.x
- or later.
- o Minor features (directory authority, backport from 0.3.2.6-alpha):
- - Add an IPv6 address for the "bastet" directory authority. Closes
- ticket 24394.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfix (relay address resolution, backport from 0.3.2.1-alpha):
- - Avoid unnecessary calls to directory_fetches_from_authorities() on
- relays, to prevent spurious address resolutions and descriptor
- rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
- bugfix on in 0.2.8.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.2.1-alpha):
- - Fix unused variable warnings in donna's Curve25519 SSE2 code.
- Fixes bug 22895; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (logging, relay shutdown, annoyance, backport from 0.3.2.2-alpha):
- - When a circuit is marked for close, do not attempt to package any
- cells for channels on that circuit. Previously, we would detect
- this condition lower in the call stack, when we noticed that the
- circuit had no attached channel, and log an annoying message.
- Fixes bug 8185; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (relay, crash, backport from 0.3.2.4-alpha):
- - Avoid a crash when transitioning from client mode to bridge mode.
- Previously, we would launch the worker threads whenever our
- "public server" mode changed, but not when our "server" mode
- changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
- o Minor bugfixes (testing, backport from 0.3.1.6-rc):
- - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
- bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
- Changes in version 0.2.9.14 - 2017-12-01
- Tor 0.3.0.13 backports important security and stability bugfixes from
- later Tor releases. All Tor users should upgrade to this release, or
- to another of the releases coming out today.
- o Major bugfixes (exit relays, DNS, backport from 0.3.2.4-alpha):
- - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
- making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
- 0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
- identifying and finding a workaround to this bug and to Moritz,
- Arthur Edelstein, and Roger for helping to track it down and
- analyze it.
- o Major bugfixes (security, backport from 0.3.2.6-alpha):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - Fix a denial of service issue where an attacker could crash a
- directory authority using a malformed router descriptor. Fixes bug
- 24245; bugfix on 0.2.9.4-alpha. Also tracked as TROVE-2017-010
- and CVE-2017-8820.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
- - Fix a use-after-free error that could crash v2 Tor onion services
- when they failed to open circuits while expiring introduction
- points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
- also tracked as TROVE-2017-013 and CVE-2017-8823.
- o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
- - When running as a relay, make sure that we never build a path
- through ourselves, even in the case where we have somehow lost the
- version of our descriptor appearing in the consensus. Fixes part
- of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
- as TROVE-2017-012 and CVE-2017-8822.
- o Minor features (bridge, backport from 0.3.1.9):
- - Bridges now include notice in their descriptors that they are
- bridges, and notice of their distribution status, based on their
- publication settings. Implements ticket 18329. For more fine-
- grained control of how a bridge is distributed, upgrade to 0.3.2.x
- or later.
- o Minor features (directory authority, backport from 0.3.2.6-alpha):
- - Add an IPv6 address for the "bastet" directory authority. Closes
- ticket 24394.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- o Minor features (security, windows, backport from 0.3.1.1-alpha):
- - Enable a couple of pieces of Windows hardening: one
- (HeapEnableTerminationOnCorruption) that has been on-by-default
- since Windows 8, and unavailable before Windows 7; and one
- (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
- affect us, but shouldn't do any harm. Closes ticket 21953.
- o Minor bugfix (relay address resolution, backport from 0.3.2.1-alpha):
- - Avoid unnecessary calls to directory_fetches_from_authorities() on
- relays, to prevent spurious address resolutions and descriptor
- rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
- bugfix on in 0.2.8.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.2.1-alpha):
- - Fix unused variable warnings in donna's Curve25519 SSE2 code.
- Fixes bug 22895; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (logging, relay shutdown, annoyance, backport from 0.3.2.2-alpha):
- - When a circuit is marked for close, do not attempt to package any
- cells for channels on that circuit. Previously, we would detect
- this condition lower in the call stack, when we noticed that the
- circuit had no attached channel, and log an annoying message.
- Fixes bug 8185; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (relay, crash, backport from 0.3.2.4-alpha):
- - Avoid a crash when transitioning from client mode to bridge mode.
- Previously, we would launch the worker threads whenever our
- "public server" mode changed, but not when our "server" mode
- changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
- o Minor bugfixes (testing, backport from 0.3.1.6-rc):
- - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
- bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
- Changes in version 0.2.8.17 - 2017-12-01
- Tor 0.2.8.17 backports important security and stability bugfixes from
- later Tor releases. All Tor users should upgrade to this release, or
- to another of the releases coming out today.
- Note: the Tor 0.2.8 series will no longer be supported after 1 Jan
- 2018. If you need a release with long-term support, please upgrade with
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Major bugfixes (security, backport from 0.3.2.6-alpha):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, onion service v2, backport from 0.3.2.6-alpha):
- - Fix a use-after-free error that could crash v2 Tor onion services
- when they failed to open circuits while expiring introduction
- points. Fixes bug 24313; bugfix on 0.2.7.2-alpha. This issue is
- also tracked as TROVE-2017-013 and CVE-2017-8823.
- o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
- - When running as a relay, make sure that we never build a path through
- ourselves, even in the case where we have somehow lost the version of
- our descriptor appearing in the consensus. Fixes part of bug 21534;
- bugfix on 0.2.0.1-alpha. This issue is also tracked as TROVE-2017-012
- and CVE-2017-8822.
- o Minor features (bridge, backport from 0.3.1.9):
- - Bridges now include notice in their descriptors that they are
- bridges, and notice of their distribution status, based on their
- publication settings. Implements ticket 18329. For more fine-
- grained control of how a bridge is distributed, upgrade to 0.3.2.x
- or later.
- o Minor features (directory authority, backport from 0.3.2.6-alpha):
- - Add an IPv6 address for the "bastet" directory authority. Closes
- ticket 24394.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (testing, backport from 0.3.1.6-rc):
- - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
- bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
- Changes in version 0.2.5.16 - 2017-12-01
- Tor 0.2.5.13 backports important security and stability bugfixes from
- later Tor releases. All Tor users should upgrade to this release, or
- to another of the releases coming out today.
- Note: the Tor 0.2.5 series will no longer be supported after 1 May
- 2018. If you need a release with long-term support, please upgrade to
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Major bugfixes (security, backport from 0.3.2.6-alpha):
- - Fix a denial of service bug where an attacker could use a
- malformed directory object to cause a Tor instance to pause while
- OpenSSL would try to read a passphrase from the terminal. (Tor
- instances run without a terminal, which is the case for most Tor
- packages, are not impacted.) Fixes bug 24246; bugfix on every
- version of Tor. Also tracked as TROVE-2017-011 and CVE-2017-8821.
- Found by OSS-Fuzz as testcase 6360145429790720.
- - When checking for replays in the INTRODUCE1 cell data for a
- (legacy) onion service, correctly detect replays in the RSA-
- encrypted part of the cell. We were previously checking for
- replays on the entire cell, but those can be circumvented due to
- the malleability of Tor's legacy hybrid encryption. This fix helps
- prevent a traffic confirmation attack. Fixes bug 24244; bugfix on
- 0.2.4.1-alpha. This issue is also tracked as TROVE-2017-009
- and CVE-2017-8819.
- o Major bugfixes (security, relay, backport from 0.3.2.6-alpha):
- - When running as a relay, make sure that we never build a path
- through ourselves, even in the case where we have somehow lost the
- version of our descriptor appearing in the consensus. Fixes part
- of bug 21534; bugfix on 0.2.0.1-alpha. This issue is also tracked
- as TROVE-2017-012 and CVE-2017-8822.
- o Minor features (bridge, backport from 0.3.1.9):
- - Bridges now include notice in their descriptors that they are
- bridges, and notice of their distribution status, based on their
- publication settings. Implements ticket 18329. For more fine-
- grained control of how a bridge is distributed, upgrade to 0.3.2.x
- or later.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- Changes in version 0.3.2.5-alpha - 2017-11-22
- Tor 0.3.2.5-alpha is the fifth alpha release in the 0.3.2.x series. It
- fixes several stability and reliability bugs, including a fix for
- intermittent bootstrapping failures that some people have been seeing
- since the 0.3.0.x series.
- Please test this alpha out -- many of these fixes will soon be
- backported to stable Tor versions if no additional bugs are found
- in them.
- o Major bugfixes (bootstrapping):
- - Fetch descriptors aggressively whenever we lack enough to build
- circuits, regardless of how many descriptors we are missing.
- Previously, we would delay launching the fetch when we had fewer
- than 15 missing descriptors, even if some of those descriptors
- were blocking circuits from building. Fixes bug 23985; bugfix on
- 0.1.1.11-alpha. The effects of this bug became worse in
- 0.3.0.3-alpha, when we began treating missing descriptors from our
- primary guards as a reason to delay circuits.
- - Don't try fetching microdescriptors from relays that have failed
- to deliver them in the past. Fixes bug 23817; bugfix
- on 0.3.0.1-alpha.
- o Minor features (directory authority):
- - Make the "Exit" flag assignment only depend on whether the exit
- policy allows connections to ports 80 and 443. Previously relays
- would get the Exit flag if they allowed connections to one of
- these ports and also port 6667. Resolves ticket 23637.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 6 2017 Maxmind GeoLite2
- Country database.
- o Minor features (linux seccomp2 sandbox):
- - Update the sandbox rules so that they should now work correctly
- with Glibc 2.26. Closes ticket 24315.
- o Minor features (logging):
- - Downgrade a pair of log messages that could occur when an exit's
- resolver gave us an unusual (but not forbidden) response. Closes
- ticket 24097.
- - Improve the message we log when re-enabling circuit build timeouts
- after having received a consensus. Closes ticket 20963.
- o Minor bugfixes (compilation):
- - Fix a memory leak warning in one of the libevent-related
- configuration tests that could occur when manually specifying
- -fsanitize=address. Fixes bug 24279; bugfix on 0.3.0.2-alpha.
- Found and patched by Alex Xu.
- - When detecting OpenSSL on Windows from our configure script, make
- sure to try linking with the ws2_32 library. Fixes bug 23783;
- bugfix on 0.3.2.2-alpha.
- o Minor bugfixes (control port, linux seccomp2 sandbox):
- - Avoid a crash when attempting to use the seccomp2 sandbox together
- with the OwningControllerProcess feature. Fixes bug 24198; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (control port, onion services):
- - Report "FAILED" instead of "UPLOAD_FAILED" "FAILED" for the
- HS_DESC event when a service is not able to upload a descriptor.
- Fixes bug 24230; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (directory cache):
- - Recover better from empty or corrupt files in the consensus cache
- directory. Fixes bug 24099; bugfix on 0.3.1.1-alpha.
- - When a consensus diff calculation is only partially successful,
- only record the successful parts as having succeeded. Partial
- success can happen if (for example) one compression method fails
- but the others succeed. Previously we misrecorded all the
- calculations as having succeeded, which would later cause a
- nonfatal assertion failure. Fixes bug 24086; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (logging):
- - Only log once if we notice that KIST support is gone. Fixes bug
- 24158; bugfix on 0.3.2.1-alpha.
- - Suppress a log notice when relay descriptors arrive. We already
- have a bootstrap progress for this so no need to log notice
- everytime tor receives relay descriptors. Microdescriptors behave
- the same. Fixes bug 23861; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (network layer):
- - When closing a connection via close_connection_immediately(), we
- mark it as "not blocked on bandwidth", to prevent later calls from
- trying to unblock it, and give it permission to read. This fixes a
- backtrace warning that can happen on relays under various
- circumstances. Fixes bug 24167; bugfix on 0.1.0.1-rc.
- o Minor bugfixes (onion services):
- - The introduction circuit was being timed out too quickly while
- waiting for the rendezvous circuit to complete. Keep the intro
- circuit around longer instead of timing out and reopening new ones
- constantly. Fixes bug 23681; bugfix on 0.2.4.8-alpha.
- - Rename the consensus parameter "hsdir-interval" to "hsdir_interval"
- so it matches dir-spec.txt. Fixes bug 24262; bugfix
- on 0.3.1.1-alpha.
- - Silence a warning about failed v3 onion descriptor uploads that
- can happen naturally under certain edge cases. Fixes part of bug
- 23662; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (tests):
- - Fix a memory leak in one of the bridge-distribution test cases.
- Fixes bug 24345; bugfix on 0.3.2.3-alpha.
- - Fix a bug in our fuzzing mock replacement for crypto_pk_checksig(),
- to correctly handle cases where a caller gives it an RSA key of
- under 160 bits. (This is not actually a bug in Tor itself, but
- rather in our fuzzing code.) Fixes bug 24247; bugfix on
- 0.3.0.3-alpha. Found by OSS-Fuzz as issue 4177.
- o Documentation:
- - Add notes in man page regarding OS support for the various
- scheduler types. Attempt to use less jargon in the scheduler
- section. Closes ticket 24254.
- Changes in version 0.3.2.4-alpha - 2017-11-08
- Tor 0.3.2.4-alpha is the fourth alpha release in the 0.3.2.x series.
- It fixes several stability and reliability bugs, especially including
- a major reliability issue that has been plaguing fast exit relays in
- recent months.
- o Major bugfixes (exit relays, DNS):
- - Fix an issue causing DNS to fail on high-bandwidth exit nodes,
- making them nearly unusable. Fixes bugs 21394 and 18580; bugfix on
- 0.1.2.2-alpha, which introduced eventdns. Thanks to Dhalgren for
- identifying and finding a workaround to this bug and to Moritz,
- Arthur Edelstein, and Roger for helping to track it down and
- analyze it.
- o Major bugfixes (scheduler, channel):
- - Stop processing scheduled channels if they closed while flushing
- cells. This can happen if the write on the connection fails
- leading to the channel being closed while in the scheduler loop.
- Fixes bug 23751; bugfix on 0.3.2.1-alpha.
- o Minor features (logging, scheduler):
- - Introduce a SCHED_BUG() function to log extra information about
- the scheduler state if we ever catch a bug in the scheduler.
- Closes ticket 23753.
- o Minor features (removed deprecations):
- - The ClientDNSRejectInternalAddresses flag can once again be set in
- non-testing Tor networks, so long as they do not use the default
- directory authorities. This change also removes the deprecation of
- this flag from 0.2.9.2-alpha. Closes ticket 21031.
- o Minor features (testing):
- - Our fuzzing tests now test the encrypted portions of v3 onion
- service descriptors. Implements more of 21509.
- o Minor bugfixes (directory client):
- - On failure to download directory information, delay retry attempts
- by a random amount based on the "decorrelated jitter" algorithm.
- Our previous delay algorithm tended to produce extra-long delays
- too easily. Fixes bug 23816; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (IPv6, v3 single onion services):
- - Remove buggy code for IPv6-only v3 single onion services, and
- reject attempts to configure them. This release supports IPv4,
- dual-stack, and IPv6-only v3 onion services; and IPv4 and dual-
- stack v3 single onion services. Fixes bug 23820; bugfix
- on 0.3.2.1-alpha.
- o Minor bugfixes (logging, relay):
- - Give only a protocol warning when the ed25519 key is not
- consistent between the descriptor and microdescriptor of a relay.
- This can happen, for instance, if the relay has been flagged
- NoEdConsensus. Fixes bug 24025; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (manpage, onion service):
- - Document that the HiddenServiceNumIntroductionPoints option is
- 0-10 for v2 services and 0-20 for v3 services. Fixes bug 24115;
- bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (memory leaks):
- - Fix a minor memory leak at exit in the KIST scheduler. This bug
- should have no user-visible impact. Fixes bug 23774; bugfix
- on 0.3.2.1-alpha.
- - Fix a memory leak when decrypting a badly formatted v3 onion
- service descriptor. Fixes bug 24150; bugfix on 0.3.2.1-alpha.
- Found by OSS-Fuzz; this is OSS-Fuzz issue 3994.
- o Minor bugfixes (onion services):
- - Cache some needed onion service client information instead of
- constantly computing it over and over again. Fixes bug 23623;
- bugfix on 0.3.2.1-alpha.
- - Properly retry HSv3 descriptor fetches when missing required
- directory information. Fixes bug 23762; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (path selection):
- - When selecting relays by bandwidth, avoid a rounding error that
- could sometimes cause load to be imbalanced incorrectly.
- Previously, we would always round upwards; now, we round towards
- the nearest integer. This had the biggest effect when a relay's
- weight adjustments should have given it weight 0, but it got
- weight 1 instead. Fixes bug 23318; bugfix on 0.2.4.3-alpha.
- - When calculating the fraction of nodes that have descriptors, and
- all nodes in the network have zero bandwidths, count the number of
- nodes instead. Fixes bug 23318; bugfix on 0.2.4.10-alpha.
- - Actually log the total bandwidth in compute_weighted_bandwidths().
- Fixes bug 24170; bugfix on 0.2.4.3-alpha.
- o Minor bugfixes (relay, crash):
- - Avoid a crash when transitioning from client mode to bridge mode.
- Previously, we would launch the worker threads whenever our
- "public server" mode changed, but not when our "server" mode
- changed. Fixes bug 23693; bugfix on 0.2.6.3-alpha.
- o Minor bugfixes (testing):
- - Fix a spurious fuzzing-only use of an uninitialized value. Found
- by Brian Carpenter. Fixes bug 24082; bugfix on 0.3.0.3-alpha.
- - Test that IPv6-only clients can use microdescriptors when running
- "make test-network-all". Requires chutney master 61c28b9 or later.
- Closes ticket 24109.
- Changes in version 0.3.2.3-alpha - 2017-10-27
- Tor 0.3.2.3-alpha is the third release in the 0.3.2 series. It fixes
- numerous small bugs in earlier versions of 0.3.2.x, and adds a new
- directory authority, Bastet.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Minor features (bridge):
- - Bridge relays can now set the BridgeDistribution config option to
- add a "bridge-distribution-request" line to their bridge
- descriptor, which tells BridgeDB how they'd like their bridge
- address to be given out. (Note that as of Oct 2017, BridgeDB does
- not yet implement this feature.) As a side benefit, this feature
- provides a way to distinguish bridge descriptors from non-bridge
- descriptors. Implements tickets 18329.
- o Minor features (client, entry guards):
- - Improve log messages when missing descriptors for primary guards.
- Resolves ticket 23670.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (bridge):
- - Overwrite the bridge address earlier in the process of retrieving
- its descriptor, to make sure we reach it on the configured
- address. Fixes bug 20532; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (documentation):
- - Document better how to read gcov, and what our gcov postprocessing
- scripts do. Fixes bug 23739; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (entry guards):
- - Tor now updates its guard state when it reads a consensus
- regardless of whether it's missing descriptors. That makes tor use
- its primary guards to fetch descriptors in some edge cases where
- it would previously have used fallback directories. Fixes bug
- 23862; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (hidden service client):
- - When handling multiple SOCKS request for the same .onion address,
- only fetch the service descriptor once.
- - When a descriptor fetch fails with a non-recoverable error, close
- all pending SOCKS requests for that .onion. Fixes bug 23653;
- bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (hidden service):
- - Always regenerate missing hidden service public key files. Prior
- to this, if the public key was deleted from disk, it wouldn't get
- recreated. Fixes bug 23748; bugfix on 0.3.2.2-alpha. Patch
- from "cathugger".
- - Make sure that we have a usable ed25519 key when the intro point
- relay supports ed25519 link authentication. Fixes bug 24002;
- bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (hidden service, v2):
- - When reloading configured hidden services, copy all information
- from the old service object. Previously, some data was omitted,
- causing delays in descriptor upload, and other bugs. Fixes bug
- 23790; bugfix on 0.2.1.9-alpha.
- o Minor bugfixes (memory safety, defensive programming):
- - Clear the target address when node_get_prim_orport() returns
- early. Fixes bug 23874; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (relay):
- - Avoid a BUG warning when receiving a dubious CREATE cell while an
- option transition is in progress. Fixes bug 23952; bugfix
- on 0.3.2.1-alpha.
- o Minor bugfixes (testing):
- - Adjust the GitLab CI configuration to more closely match that of
- Travis CI. Fixes bug 23757; bugfix on 0.3.2.2-alpha.
- - Prevent scripts/test/coverage from attempting to move gcov output
- to the root directory. Fixes bug 23741; bugfix on 0.2.5.1-alpha.
- - When running unit tests as root, skip a test that would fail
- because it expects a permissions error. This affects some
- continuous integration setups. Fixes bug 23758; bugfix
- on 0.3.2.2-alpha.
- - Stop unconditionally mirroring the tor repository in GitLab CI.
- This prevented developers from enabling GitLab CI on master. Fixes
- bug 23755; bugfix on 0.3.2.2-alpha.
- - Fix the hidden service v3 descriptor decoding fuzzing to use the
- latest decoding API correctly. Fixes bug 21509; bugfix
- on 0.3.2.1-alpha.
- o Minor bugfixes (warnings):
- - When we get an HTTP request on a SOCKS port, tell the user about
- the new HTTPTunnelPort option. Previously, we would give a "Tor is
- not an HTTP Proxy" message, which stopped being true when
- HTTPTunnelPort was introduced. Fixes bug 23678; bugfix
- on 0.3.2.1-alpha.
- Changes in version 0.2.5.15 - 2017-10-25
- Tor 0.2.5.15 backports a collection of bugfixes from later Tor release
- series. It also adds a new directory authority, Bastet.
- Note: the Tor 0.2.5 series will no longer be supported after 1 May
- 2018. If you need a release with long-term support, please upgrade to
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
- - Avoid an assertion failure bug affecting our implementation of
- inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
- handling of "0xx" differs from what we had expected. Fixes bug
- 22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (defensive programming, undefined behavior, backport from 0.3.1.4-alpha):
- - Fix a memset() off the end of an array when packing cells. This
- bug should be harmless in practice, since the corrupted bytes are
- still in the same structure, and are always padding bytes,
- ignored, or immediately overwritten, depending on compiler
- behavior. Nevertheless, because the memset()'s purpose is to make
- sure that any other cell-handling bugs can't expose bytes to the
- network, we need to fix it. Fixes bug 22737; bugfix on
- 0.2.4.11-alpha. Fixes CID 1401591.
- o Build features (backport from 0.3.1.5-alpha):
- - Tor's repository now includes a Travis Continuous Integration (CI)
- configuration file (.travis.yml). This is meant to help new
- developers and contributors who fork Tor to a Github repository be
- better able to test their changes, and understand what we expect
- to pass. To use this new build feature, you must fork Tor to your
- Github account, then go into the "Integrations" menu in the
- repository settings for your fork and enable Travis, then push
- your changes. Closes ticket 22636.
- Changes in version 0.2.8.16 - 2017-10-25
- Tor 0.2.8.16 backports a collection of bugfixes from later Tor release
- series, including a bugfix for a crash issue that had affected relays
- under memory pressure. It also adds a new directory authority, Bastet.
- Note: the Tor 0.2.8 series will no longer be supported after 1 Jan
- 2018. If you need a release with long-term support, please stick with
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
- - Fix a timing-based assertion failure that could occur when the
- circuit out-of-memory handler freed a connection's output buffer.
- Fixes bug 23690; bugfix on 0.2.6.1-alpha.
- o Minor features (directory authorities, backport from 0.3.2.2-alpha):
- - Remove longclaw's IPv6 address, as it will soon change. Authority
- IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
- 3/8 directory authorities with IPv6 addresses, but there are also
- 52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.9.13 - 2017-10-25
- Tor 0.2.9.13 backports a collection of bugfixes from later Tor release
- series, including a bugfix for a crash issue that had affected relays
- under memory pressure. It also adds a new directory authority, Bastet.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
- - Fix a timing-based assertion failure that could occur when the
- circuit out-of-memory handler freed a connection's output buffer.
- Fixes bug 23690; bugfix on 0.2.6.1-alpha.
- o Minor features (directory authorities, backport from 0.3.2.2-alpha):
- - Remove longclaw's IPv6 address, as it will soon change. Authority
- IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
- 3/8 directory authorities with IPv6 addresses, but there are also
- 52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (directory authority, backport from 0.3.1.5-alpha):
- - When a directory authority rejects a descriptor or extrainfo with
- a given digest, mark that digest as undownloadable, so that we do
- not attempt to download it again over and over. We previously
- tried to avoid downloading such descriptors by other means, but we
- didn't notice if we accidentally downloaded one anyway. This
- behavior became problematic in 0.2.7.2-alpha, when authorities
- began pinning Ed25519 keys. Fixes bug 22349; bugfix
- on 0.2.1.19-alpha.
- o Minor bugfixes (memory safety, backport from 0.3.2.3-alpha):
- - Clear the address when node_get_prim_orport() returns early.
- Fixes bug 23874; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (Windows service, backport from 0.3.1.6-rc):
- - When running as a Windows service, set the ID of the main thread
- correctly. Failure to do so made us fail to send log messages to
- the controller in 0.2.1.16-rc, slowed down controller event
- delivery in 0.2.7.3-rc and later, and crash with an assertion
- failure in 0.3.1.1-alpha. Fixes bug 23081; bugfix on 0.2.1.6-alpha.
- Patch and diagnosis from "Vort".
- Changes in version 0.3.0.12 - 2017-10-25
- Tor 0.3.0.12 backports a collection of bugfixes from later Tor release
- series, including a bugfix for a crash issue that had affected relays
- under memory pressure. It also adds a new directory authority, Bastet.
- Note: the Tor 0.3.0 series will no longer be supported after 26 Jan
- 2018. If you need a release with long-term support, please stick with
- the 0.2.9 series. Otherwise, please upgrade to 0.3.1 or later.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
- - Fix a timing-based assertion failure that could occur when the
- circuit out-of-memory handler freed a connection's output buffer.
- Fixes bug 23690; bugfix on 0.2.6.1-alpha.
- o Minor features (directory authorities, backport from 0.3.2.2-alpha):
- - Remove longclaw's IPv6 address, as it will soon change. Authority
- IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
- 3/8 directory authorities with IPv6 addresses, but there are also
- 52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (directory authority, backport from 0.3.1.5-alpha):
- - When a directory authority rejects a descriptor or extrainfo with
- a given digest, mark that digest as undownloadable, so that we do
- not attempt to download it again over and over. We previously
- tried to avoid downloading such descriptors by other means, but we
- didn't notice if we accidentally downloaded one anyway. This
- behavior became problematic in 0.2.7.2-alpha, when authorities
- began pinning Ed25519 keys. Fixes bug 22349; bugfix
- on 0.2.1.19-alpha.
- o Minor bugfixes (hidden service, relay, backport from 0.3.2.2-alpha):
- - Avoid a possible double close of a circuit by the intro point on
- error of sending the INTRO_ESTABLISHED cell. Fixes bug 23610;
- bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (memory safety, backport from 0.3.2.3-alpha):
- - Clear the address when node_get_prim_orport() returns early.
- Fixes bug 23874; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (Windows service, backport from 0.3.1.6-rc):
- - When running as a Windows service, set the ID of the main thread
- correctly. Failure to do so made us fail to send log messages to
- the controller in 0.2.1.16-rc, slowed down controller event
- delivery in 0.2.7.3-rc and later, and crash with an assertion
- failure in 0.3.1.1-alpha. Fixes bug 23081; bugfix on 0.2.1.6-alpha.
- Patch and diagnosis from "Vort".
- Changes in version 0.3.1.8 - 2017-10-25
- Tor 0.3.1.8 is the second stable release in the 0.3.1 series.
- It includes several bugfixes, including a bugfix for a crash issue
- that had affected relays under memory pressure. It also adds
- a new directory authority, Bastet.
- o Directory authority changes:
- - Add "Bastet" as a ninth directory authority to the default list.
- Closes ticket 23910.
- - The directory authority "Longclaw" has changed its IP address.
- Closes ticket 23592.
- o Major bugfixes (relay, crash, assertion failure, backport from 0.3.2.2-alpha):
- - Fix a timing-based assertion failure that could occur when the
- circuit out-of-memory handler freed a connection's output buffer.
- Fixes bug 23690; bugfix on 0.2.6.1-alpha.
- o Minor features (directory authorities, backport from 0.3.2.2-alpha):
- - Remove longclaw's IPv6 address, as it will soon change. Authority
- IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
- 3/8 directory authorities with IPv6 addresses, but there are also
- 52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, backport from 0.3.2.2-alpha):
- - Fix a compilation warning when building with zstd support on
- 32-bit platforms. Fixes bug 23568; bugfix on 0.3.1.1-alpha. Found
- and fixed by Andreas Stieger.
- o Minor bugfixes (compression, backport from 0.3.2.2-alpha):
- - Handle a pathological case when decompressing Zstandard data when
- the output buffer size is zero. Fixes bug 23551; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (directory authority, backport from 0.3.2.1-alpha):
- - Remove the length limit on HTTP status lines that authorities can
- send in their replies. Fixes bug 23499; bugfix on 0.3.1.6-rc.
- o Minor bugfixes (hidden service, relay, backport from 0.3.2.2-alpha):
- - Avoid a possible double close of a circuit by the intro point on
- error of sending the INTRO_ESTABLISHED cell. Fixes bug 23610;
- bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (memory safety, backport from 0.3.2.3-alpha):
- - Clear the address when node_get_prim_orport() returns early.
- Fixes bug 23874; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (unit tests, backport from 0.3.2.2-alpha):
- - Fix additional channelpadding unit test failures by using mocked
- time instead of actual time for all tests. Fixes bug 23608; bugfix
- on 0.3.1.1-alpha.
- Changes in version 0.3.2.2-alpha - 2017-09-29
- Tor 0.3.2.2-alpha is the second release in the 0.3.2 series. This
- release fixes several minor bugs in the new scheduler and next-
- generation onion services; both features were newly added in the 0.3.2
- series. Other fixes in this alpha include several fixes for non-fatal
- tracebacks which would appear in logs.
- With the aim to stabilise the 0.3.2 series by 15 December 2017, this
- alpha does not contain any substantial new features. Minor features
- include better testing and logging.
- The following comprises the complete list of changes included
- in tor-0.3.2.2-alpha:
- o Major bugfixes (relay, crash, assertion failure):
- - Fix a timing-based assertion failure that could occur when the
- circuit out-of-memory handler freed a connection's output buffer.
- Fixes bug 23690; bugfix on 0.2.6.1-alpha.
- o Major bugfixes (scheduler):
- - If a channel is put into the scheduler's pending list, then it
- starts closing, and then if the scheduler runs before it finishes
- closing, the scheduler will get stuck trying to flush its cells
- while the lower layers refuse to cooperate. Fix that race
- condition by giving the scheduler an escape method. Fixes bug
- 23676; bugfix on 0.3.2.1-alpha.
- o Minor features (build, compilation):
- - The "check-changes" feature is now part of the "make check" tests;
- we'll use it to try to prevent misformed changes files from
- accumulating. Closes ticket 23564.
- - Tor builds should now fail if there are any mismatches between the
- C type representing a configuration variable and the C type the
- data-driven parser uses to store a value there. Previously, we
- needed to check these by hand, which sometimes led to mistakes.
- Closes ticket 23643.
- o Minor features (directory authorities):
- - Remove longclaw's IPv6 address, as it will soon change. Authority
- IPv6 addresses were originally added in 0.2.8.1-alpha. This leaves
- 3/8 directory authorities with IPv6 addresses, but there are also
- 52 fallback directory mirrors with IPv6 addresses. Resolves 19760.
- o Minor features (hidden service, circuit, logging):
- - Improve logging of many callsite in the circuit subsystem to print
- the circuit identifier(s).
- - Log when we cleanup an intro point from a service so we know when
- and for what reason it happened. Closes ticket 23604.
- o Minor features (logging):
- - Log more circuit information whenever we are about to try to
- package a relay cell on a circuit with a nonexistent n_chan.
- Attempt to diagnose ticket 8185.
- - Improve info-level log identification of particular circuits, to
- help with debugging. Closes ticket 23645.
- o Minor features (relay):
- - When choosing which circuits can be expired as unused, consider
- circuits from clients even if those clients used regular CREATE
- cells to make them; and do not consider circuits from relays even
- if they were made with CREATE_FAST. Part of ticket 22805.
- o Minor features (robustness):
- - Change several fatal assertions when flushing buffers into non-
- fatal assertions, to prevent any recurrence of 23690.
- o Minor features (spec conformance, bridge, diagnostic):
- - When handling the USERADDR command on an ExtOrPort, warn when the
- transports provides a USERADDR with no port. In a future version,
- USERADDR commands of this format may be rejected. Detects problems
- related to ticket 23080.
- o Minor features (testing):
- - Add a unit test to make sure that our own generated platform
- string will be accepted by directory authorities. Closes
- ticket 22109.
- o Minor bugfixes (bootstrapping):
- - When warning about state file clock skew, report the correct
- direction for the detected skew. Fixes bug 23606; bugfix
- on 0.2.8.1-alpha.
- - Avoid an assertion failure when logging a state file clock skew
- very early in bootstrapping. Fixes bug 23607; bugfix
- on 0.3.2.1-alpha.
- o Minor bugfixes (build, compilation):
- - Fix a compilation warning when building with zstd support on
- 32-bit platforms. Fixes bug 23568; bugfix on 0.3.1.1-alpha. Found
- and fixed by Andreas Stieger.
- - When searching for OpenSSL, don't accept any OpenSSL library that
- lacks TLSv1_1_method(): Tor doesn't build with those versions.
- Additionally, look in /usr/local/opt/openssl, if it's present.
- These changes together repair the default build on OSX systems
- with Homebrew installed. Fixes bug 23602; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (compression):
- - Handle a pathological case when decompressing Zstandard data when
- the output buffer size is zero. Fixes bug 23551; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (documentation):
- - Fix manpage to not refer to the obsolete (and misspelled)
- UseEntryGuardsAsDirectoryGuards parameter in the description of
- NumDirectoryGuards. Fixes bug 23611; bugfix on 0.2.4.8-alpha.
- o Minor bugfixes (hidden service v3):
- - Don't log an assertion failure when we can't find the right
- information to extend to an introduction point. In rare cases,
- this could happen, causing a warning, even though tor would
- recover gracefully. Fixes bug 23159; bugfix on 0.3.2.1-alpha.
- - Pad RENDEZVOUS cell up to the size of the legacy cell which is
- much bigger so the rendezvous point can't distinguish which hidden
- service protocol is being used. Fixes bug 23420; bugfix
- on 0.3.2.1-alpha.
- o Minor bugfixes (hidden service, relay):
- - Avoid a possible double close of a circuit by the intro point on
- error of sending the INTRO_ESTABLISHED cell. Fixes bug 23610;
- bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (logging, relay shutdown, annoyance):
- - When a circuit is marked for close, do not attempt to package any
- cells for channels on that circuit. Previously, we would detect
- this condition lower in the call stack, when we noticed that the
- circuit had no attached channel, and log an annoying message.
- Fixes bug 8185; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (scheduler):
- - When switching schedulers due to a consensus change, we didn't
- give the new scheduler a chance to react to the consensus. Fix
- that. Fixes bug 23537; bugfix on 0.3.2.1-alpha.
- - Make the KISTSchedRunInterval option a non negative value. With
- this, the way to disable KIST through the consensus is to set it
- to 0. Fixes bug 23539; bugfix on 0.3.2.1-alpha.
- - Only notice log the selected scheduler when we switch scheduler
- types. Fixes bug 23552; bugfix on 0.3.2.1-alpha.
- - Avoid a compilation warning on macOS in scheduler_ev_add() caused
- by a different tv_usec data type. Fixes bug 23575; bugfix
- on 0.3.2.1-alpha.
- - Make a hard exit if tor is unable to pick a scheduler which can
- happen if the user specifies a scheduler type that is not
- supported and not other types in Schedulers. Fixes bug 23581;
- bugfix on 0.3.2.1-alpha.
- - Properly initialize the scheduler last run time counter so it is
- not 0 at the first tick. Fixes bug 23696; bugfix on 0.3.2.1-alpha.
- o Minor bugfixes (testing):
- - Capture and detect several "Result does not fit" warnings in unit
- tests on platforms with 32-bit time_t. Fixes bug 21800; bugfix
- on 0.2.9.3-alpha.
- - Fix additional channelpadding unit test failures by using mocked
- time instead of actual time for all tests. Fixes bug 23608; bugfix
- on 0.3.1.1-alpha.
- - The removal of some old scheduler options caused some tests to
- fail on BSD systems. Assume current behavior is correct and make
- the tests pass again. Fixes bug 23566; bugfix on 0.3.2.1-alpha.
- o Code simplification and refactoring:
- - Remove various ways of testing circuits and connections for
- "clientness"; instead, favor channel_is_client(). Part of
- ticket 22805.
- o Deprecated features:
- - The ReachableDirAddresses and ClientPreferIPv6DirPort options are
- now deprecated; they do not apply to relays, and they have had no
- effect on clients since 0.2.8.x. Closes ticket 19704.
- o Documentation:
- - HiddenServiceVersion man page entry wasn't mentioning the now
- supported version 3. Fixes ticket 23580; bugfix on 0.3.2.1-alpha.
- - Clarify that the Address option is entirely about setting an
- advertised IPv4 address. Closes ticket 18891.
- - Clarify the manpage's use of the term "address" to clarify what
- kind of address is intended. Closes ticket 21405.
- - Document that onion service subdomains are allowed, and ignored.
- Closes ticket 18736.
- Changes in version 0.3.2.1-alpha - 2017-09-18
- Tor 0.3.2.1-alpha is the first release in the 0.3.2.x series. It
- includes support for our next-generation ("v3") onion service
- protocol, and adds a new circuit scheduler for more responsive
- forwarding decisions from relays. There are also numerous other small
- features and bugfixes here.
- Below are the changes since Tor 0.3.1.7.
- o Major feature (scheduler, channel):
- - Tor now uses new schedulers to decide which circuits should
- deliver cells first, in order to improve congestion at relays. The
- first type is called "KIST" ("Kernel Informed Socket Transport"),
- and is only available on Linux-like systems: it uses feedback from
- the kernel to prevent the kernel's TCP buffers from growing too
- full. The second new scheduler type is called "KISTLite": it
- behaves the same as KIST, but runs on systems without kernel
- support for inspecting TCP implementation details. The old
- scheduler is still available, under the name "Vanilla". To change
- the default scheduler preference order, use the new "Schedulers"
- option. (The default preference order is "KIST,KISTLite,Vanilla".)
- Matt Traudt implemented KIST, based on research by Rob Jansen,
- John Geddes, Christ Wacek, Micah Sherr, and Paul Syverson. For
- more information, see the design paper at
- http:
- followup implementation paper at https:
- Closes ticket 12541.
- o Major features (next-generation onion services):
- - Tor now supports the next-generation onion services protocol for
- clients and services! As part of this release, the core of
- proposal 224 has been implemented and is available for
- experimentation and testing by our users. This newer version of
- onion services ("v3") features many improvements over the legacy
- system, including:
- a) Better crypto (replaced SHA1/DH/RSA1024
- with SHA3/ed25519/curve25519)
- b) Improved directory protocol, leaking much less information to
- directory servers.
- c) Improved directory protocol, with smaller surface for
- targeted attacks.
- d) Better onion address security against impersonation.
- e) More extensible introduction/rendezvous protocol.
- f) A cleaner and more modular codebase.
- You can identify a next-generation onion address by its length:
- they are 56 characters long, as in
- "4acth47i6kxnvkewtm6q7ib2s3ufpo5sqbsnzjpbi7utijcltosqemad.onion".
- In the future, we will release more options and features for v3
- onion services, but we first need a testing period, so that the
- current codebase matures and becomes more robust. Planned features
- include: offline keys, advanced client authorization, improved
- guard algorithms, and statistics. For full details, see
- proposal 224.
- Legacy ("v2") onion services will still work for the foreseeable
- future, and will remain the default until this new codebase gets
- tested and hardened. Service operators who want to experiment with
- the new system can use the 'HiddenServiceVersion 3' torrc
- directive along with the regular onion service configuration
- options. We will publish a blog post about this new feature
- soon! Enjoy!
- o Major bugfixes (usability, control port):
- - Report trusted clock skew indications as bootstrap errors, so
- controllers can more easily alert users when their clocks are
- wrong. Fixes bug 23506; bugfix on 0.1.2.6-alpha.
- o Minor features (bug detection):
- - Log a warning message with a stack trace for any attempt to call
- get_options() during option validation. This pattern has caused
- subtle bugs in the past. Closes ticket 22281.
- o Minor features (client):
- - You can now use Tor as a tunneled HTTP proxy: use the new
- HTTPTunnelPort option to open a port that accepts HTTP CONNECT
- requests. Closes ticket 22407.
- - Add an extra check to make sure that we always use the newer guard
- selection code for picking our guards. Closes ticket 22779.
- - When downloading (micro)descriptors, don't split the list into
- multiple requests unless we want at least 32 descriptors.
- Previously, we split at 4, not 32, which led to significant
- overhead in HTTP request size and degradation in compression
- performance. Closes ticket 23220.
- o Minor features (command line):
- - Add a new commandline option, --key-expiration, which prints when
- the current signing key is going to expire. Implements ticket
- 17639; patch by Isis Lovecruft.
- o Minor features (control port):
- - If an application tries to use the control port as an HTTP proxy,
- respond with a meaningful "This is the Tor control port" message,
- and log the event. Closes ticket 1667. Patch from Ravi
- Chandra Padmala.
- - Provide better error message for GETINFO desc/(id|name) when not
- fetching router descriptors. Closes ticket 5847. Patch by
- Kevin Butler.
- - Add GETINFO "{desc,md}/download-enabled", to inform the controller
- whether Tor will try to download router descriptors and
- microdescriptors respectively. Closes ticket 22684.
- - Added new GETINFO targets "ip-to-country/{ipv4,ipv6}-available",
- so controllers can tell whether the geoip databases are loaded.
- Closes ticket 23237.
- - Adds a timestamp field to the CIRC_BW and STREAM_BW bandwidth
- events. Closes ticket 19254. Patch by "DonnchaC".
- o Minor features (development support):
- - Developers can now generate a call-graph for Tor using the
- "calltool" python program, which post-processes object dumps. It
- should work okay on many Linux and OSX platforms, and might work
- elsewhere too. To run it, install calltool from
- https:
- "make callgraph". Closes ticket 19307.
- o Minor features (ed25519):
- - Add validation function to checks for torsion components in
- ed25519 public keys, used by prop224 client-side code. Closes
- ticket 22006. Math help by Ian Goldberg.
- o Minor features (exit relay, DNS):
- - Improve the clarity and safety of the log message from evdns when
- receiving an apparently spoofed DNS reply. Closes ticket 3056.
- o Minor features (integration, hardening):
- - Add a new NoExec option to prevent Tor from running other
- programs. When this option is set to 1, Tor will never try to run
- another program, regardless of the settings of
- PortForwardingHelper, ClientTransportPlugin, or
- ServerTransportPlugin. Once NoExec is set, it cannot be disabled
- without restarting Tor. Closes ticket 22976.
- o Minor features (logging):
- - Improve the warning message for specifying a relay by nickname.
- The previous message implied that nickname registration was still
- part of the Tor network design, which it isn't. Closes
- ticket 20488.
- - If the sandbox filter fails to load, suggest to the user that
- their kernel might not support seccomp2. Closes ticket 23090.
- o Minor features (portability):
- - Check at configure time whether uint8_t is the same type as
- unsigned char. Lots of existing code already makes this
- assumption, and there could be strict aliasing issues if the
- assumption is violated. Closes ticket 22410.
- o Minor features (relay, configuration):
- - Reject attempts to use relative file paths when RunAsDaemon is
- set. Previously, Tor would accept these, but the directory-
- changing step of RunAsDaemon would give strange and/or confusing
- results. Closes ticket 22731.
- o Minor features (startup, safety):
- - When configured to write a PID file, Tor now exits if it is unable
- to do so. Previously, it would warn and continue. Closes
- ticket 20119.
- o Minor features (static analysis):
- - The BUG() macro has been changed slightly so that Coverity no
- longer complains about dead code if the bug is impossible. Closes
- ticket 23054.
- o Minor features (testing):
- - The default chutney network tests now include tests for the v3
- hidden service design. Make sure you have the latest version of
- chutney if you want to run these. Closes ticket 22437.
- - Add a unit test to verify that we can parse a hardcoded v2 hidden
- service descriptor. Closes ticket 15554.
- o Minor bugfixes (certificate handling):
- - Fix a time handling bug in Tor certificates set to expire after
- the year 2106. Fixes bug 23055; bugfix on 0.3.0.1-alpha. Found by
- Coverity as CID 1415728.
- o Minor bugfixes (client, usability):
- - Refrain from needlessly rejecting SOCKS5-with-hostnames and
- SOCKS4a requests that contain IP address strings, even when
- SafeSocks in enabled, as this prevents user from connecting to
- known IP addresses without relying on DNS for resolving. SafeSocks
- still rejects SOCKS connections that connect to IP addresses when
- those addresses are _not_ encoded as hostnames. Fixes bug 22461;
- bugfix on Tor 0.2.6.2-alpha.
- o Minor bugfixes (code correctness):
- - Call htons() in extend_cell_format() for encoding a 16-bit value.
- Previously we used ntohs(), which happens to behave the same on
- all the platforms we support, but which isn't really correct.
- Fixes bug 23106; bugfix on 0.2.4.8-alpha.
- - For defense-in-depth, make the controller's write_escaped_data()
- function robust to extremely long inputs. Fixes bug 19281; bugfix
- on 0.1.1.1-alpha. Reported by Guido Vranken.
- o Minor bugfixes (compilation):
- - Fix unused-variable warnings in donna's Curve25519 SSE2 code.
- Fixes bug 22895; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (consensus expiry):
- - Check for adequate directory information correctly. Previously, Tor
- would reconsider whether it had sufficient directory information
- every 2 minutes. Fixes bug 23091; bugfix on 0.2.0.19-alpha.
- o Minor bugfixes (directory protocol):
- - Directory servers now include a "Date:" http header for response
- codes other than 200. Clients starting with a skewed clock and a
- recent consensus were getting "304 Not modified" responses from
- directory authorities, so without the Date header, the client
- would never hear about a wrong clock. Fixes bug 23499; bugfix
- on 0.0.8rc1.
- - Make clients wait for 6 seconds before trying to download a
- consensus from an authority. Fixes bug 17750; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (DoS-resistance):
- - If future code asks if there are any running bridges, without
- checking if bridges are enabled, log a BUG warning rather than
- crashing. Fixes bug 23524; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (format strictness):
- - Restrict several data formats to decimal. Previously, the
- BuildTimeHistogram entries in the state file, the "bw=" entries in
- the bandwidth authority file, and the process IDs passed to the
- __OwningControllerProcess option could all be specified in hex or
- octal as well as in decimal. This was not an intentional feature.
- Fixes bug 22802; bugfixes on 0.2.2.1-alpha, 0.2.2.2-alpha,
- and 0.2.2.28-beta.
- o Minor bugfixes (heartbeat):
- - If we fail to write a heartbeat message, schedule a retry for the
- minimum heartbeat interval number of seconds in the future. Fixes
- bug 19476; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (linux seccomp2 sandbox, logging):
- - Fix some messages on unexpected errors from the seccomp2 library.
- Fixes bug 22750; bugfix on 0.2.5.1-alpha. Patch from "cypherpunks".
- o Minor bugfixes (logging):
- - Remove duplicate log messages regarding opening non-local
- SocksPorts upon parsing config and opening listeners at startup.
- Fixes bug 4019; bugfix on 0.2.3.3-alpha.
- - Use a more comprehensible log message when telling the user
- they've excluded every running exit node. Fixes bug 7890; bugfix
- on 0.2.2.25-alpha.
- - When logging the number of descriptors we intend to download per
- directory request, do not log a number higher than then the number
- of descriptors we're fetching in total. Fixes bug 19648; bugfix
- on 0.1.1.8-alpha.
- - When warning about a directory owned by the wrong user, log the
- actual name of the user owning the directory. Previously, we'd log
- the name of the process owner twice. Fixes bug 23487; bugfix
- on 0.2.9.1-alpha.
- - The tor specification says hop counts are 1-based, so fix two log
- messages that mistakenly logged 0-based hop counts. Fixes bug
- 18982; bugfix on 0.2.6.2-alpha and 0.2.4.5-alpha. Patch by teor.
- Credit to Xiaofan Li for reporting this issue.
- o Minor bugfixes (portability):
- - Stop using the PATH_MAX variable, which is not defined on GNU
- Hurd. Fixes bug 23098; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (relay):
- - When uploading our descriptor for the first time after startup,
- report the reason for uploading as "Tor just started" rather than
- leaving it blank. Fixes bug 22885; bugfix on 0.2.3.4-alpha.
- - Avoid unnecessary calls to directory_fetches_from_authorities() on
- relays, to prevent spurious address resolutions and descriptor
- rebuilds. This is a mitigation for bug 21789. Fixes bug 23470;
- bugfix on in 0.2.8.1-alpha.
- o Minor bugfixes (tests):
- - Fix a broken unit test for the OutboundAddress option: the parsing
- function was never returning an error on failure. Fixes bug 23366;
- bugfix on 0.3.0.3-alpha.
- - Fix a signed-integer overflow in the unit tests for
- dir/download_status_random_backoff, which was untriggered until we
- fixed bug 17750. Fixes bug 22924; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (usability, control port):
- - Stop making an unnecessary routerlist check in NETINFO clock skew
- detection; this was preventing clients from reporting NETINFO clock
- skew to controllers. Fixes bug 23532; bugfix on 0.2.4.4-alpha.
- o Code simplification and refactoring:
- - Extract the code for handling newly-open channels into a separate
- function from the general code to handle channel state
- transitions. This change simplifies our callgraph, reducing the
- size of the largest strongly connected component by roughly a
- factor of two. Closes ticket 22608.
- - Remove dead code for largely unused statistics on the number of
- times we've attempted various public key operations. Fixes bug
- 19871; bugfix on 0.1.2.4-alpha. Fix by Isis Lovecruft.
- - Remove several now-obsolete functions for asking about old
- variants directory authority status. Closes ticket 22311; patch
- from "huyvq".
- - Remove some of the code that once supported "Named" and "Unnamed"
- routers. Authorities no longer vote for these flags. Closes
- ticket 22215.
- - Rename the obsolete malleable hybrid_encrypt functions used in TAP
- and old hidden services, to indicate that they aren't suitable for
- new protocols or formats. Closes ticket 23026.
- - Replace our STRUCT_OFFSET() macro with offsetof(). Closes ticket
- 22521. Patch from Neel Chauhan.
- - Split the enormous circuit_send_next_onion_skin() function into
- multiple subfunctions. Closes ticket 22804.
- - Split the portions of the buffer.c module that handle particular
- protocols into separate modules. Part of ticket 23149.
- - Use our test macros more consistently, to produce more useful
- error messages when our unit tests fail. Add coccinelle patches to
- allow us to re-check for test macro uses. Closes ticket 22497.
- o Deprecated features:
- - Deprecate HTTPProxy/HTTPProxyAuthenticator config options. They
- only applies to direct unencrypted HTTP connections to your
- directory server, which your Tor probably isn't using. Closes
- ticket 20575.
- o Documentation:
- - Clarify in the manual that "Sandbox 1" is only supported on Linux
- kernels. Closes ticket 22677.
- - Document all values of PublishServerDescriptor in the manpage.
- Closes ticket 15645.
- - Improve the documentation for the directory port part of the
- DirAuthority line. Closes ticket 20152.
- - Restore documentation for the authorities' "approved-routers"
- file. Closes ticket 21148.
- o Removed features:
- - The AllowDotExit option has been removed as unsafe. It has been
- deprecated since 0.2.9.2-alpha. Closes ticket 23426.
- - The ClientDNSRejectInternalAddresses flag can no longer be set on
- non-testing networks. It has been deprecated since 0.2.9.2-alpha.
- Closes ticket 21031.
- - The controller API no longer includes an AUTHDIR_NEWDESCS event:
- nobody was using it any longer. Closes ticket 22377.
- Changes in version 0.2.8.15 - 2017-09-18
- Tor 0.2.8.15 backports a collection of bugfixes from later
- Tor series.
- Most significantly, it includes a fix for TROVE-2017-008, a
- security bug that affects hidden services running with the
- SafeLogging option disabled. For more information, see
- https:
- Note that Tor 0.2.8.x will no longer be supported after 1 Jan
- 2018. We suggest that you upgrade to the latest stable release if
- possible. If you can't, we recommend that you upgrade at least to
- 0.2.9, which will be supported until 2020.
- o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
- - Avoid an assertion failure bug affecting our implementation of
- inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
- handling of "0xx" differs from what we had expected. Fixes bug
- 22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
- o Minor features:
- - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, mingw, backport from 0.3.1.1-alpha):
- - Backport a fix for an "unused variable" warning that appeared
- in some versions of mingw. Fixes bug 22838; bugfix on
- 0.2.8.1-alpha.
- o Minor bugfixes (defensive programming, undefined behavior, backport from 0.3.1.4-alpha):
- - Fix a memset() off the end of an array when packing cells. This
- bug should be harmless in practice, since the corrupted bytes are
- still in the same structure, and are always padding bytes,
- ignored, or immediately overwritten, depending on compiler
- behavior. Nevertheless, because the memset()'s purpose is to make
- sure that any other cell-handling bugs can't expose bytes to the
- network, we need to fix it. Fixes bug 22737; bugfix on
- 0.2.4.11-alpha. Fixes CID 1401591.
- o Build features (backport from 0.3.1.5-alpha):
- - Tor's repository now includes a Travis Continuous Integration (CI)
- configuration file (.travis.yml). This is meant to help new
- developers and contributors who fork Tor to a Github repository be
- better able to test their changes, and understand what we expect
- to pass. To use this new build feature, you must fork Tor to your
- Github account, then go into the "Integrations" menu in the
- repository settings for your fork and enable Travis, then push
- your changes. Closes ticket 22636.
- Changes in version 0.2.9.12 - 2017-09-18
- Tor 0.2.9.12 backports a collection of bugfixes from later
- Tor series.
- Most significantly, it includes a fix for TROVE-2017-008, a
- security bug that affects hidden services running with the
- SafeLogging option disabled. For more information, see
- https:
- o Major features (security, backport from 0.3.0.2-alpha):
- - Change the algorithm used to decide DNS TTLs on client and server
- side, to better resist DNS-based correlation attacks like the
- DefecTor attack of Greschbach, Pulls, Roberts, Winter, and
- Feamster. Now relays only return one of two possible DNS TTL
- values, and clients are willing to believe DNS TTL values up to 3
- hours long. Closes ticket 19769.
- o Major bugfixes (crash, directory connections, backport from 0.3.0.5-rc):
- - Fix a rare crash when sending a begin cell on a circuit whose
- linked directory connection had already been closed. Fixes bug
- 21576; bugfix on 0.2.9.3-alpha. Reported by Alec Muffett.
- o Major bugfixes (DNS, backport from 0.3.0.2-alpha):
- - Fix a bug that prevented exit nodes from caching DNS records for
- more than 60 seconds. Fixes bug 19025; bugfix on 0.2.4.7-alpha.
- o Major bugfixes (linux TPROXY support, backport from 0.3.1.1-alpha):
- - Fix a typo that had prevented TPROXY-based transparent proxying
- from working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
- Patch from "d4fq0fQAgoJ".
- o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
- - Avoid an assertion failure bug affecting our implementation of
- inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
- handling of "0xx" differs from what we had expected. Fixes bug
- 22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
- o Minor features (code style, backport from 0.3.1.3-alpha):
- - Add "Falls through" comments to our codebase, in order to silence
- GCC 7's -Wimplicit-fallthrough warnings. Patch from Andreas
- Stieger. Closes ticket 22446.
- o Minor features (geoip):
- - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (bandwidth accounting, backport from 0.3.1.1-alpha):
- - Roll over monthly accounting at the configured hour and minute,
- rather than always at 00:00. Fixes bug 22245; bugfix on 0.0.9rc1.
- Found by Andrey Karpov with PVS-Studio.
- o Minor bugfixes (compilation, backport from 0.3.1.5-alpha):
- - Suppress -Wdouble-promotion warnings with clang 4.0. Fixes bug 22915;
- bugfix on 0.2.8.1-alpha.
- - Fix warnings when building with libscrypt and openssl scrypt support
- on Clang. Fixes bug 22916; bugfix on 0.2.7.2-alpha.
- - When building with certain versions the mingw C header files, avoid
- float-conversion warnings when calling the C functions isfinite(),
- isnan(), and signbit(). Fixes bug 22801; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (compilation, backport from 0.3.1.7):
- - Avoid compiler warnings in the unit tests for running tor_sscanf()
- with wide string outputs. Fixes bug 15582; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (compilation, mingw, backport from 0.3.1.1-alpha):
- - Backport a fix for an "unused variable" warning that appeared
- in some versions of mingw. Fixes bug 22838; bugfix on
- 0.2.8.1-alpha.
- o Minor bugfixes (controller, backport from 0.3.1.7):
- - Do not crash when receiving a HSPOST command with an empty body.
- Fixes part of bug 22644; bugfix on 0.2.7.1-alpha.
- - Do not crash when receiving a POSTDESCRIPTOR command with an
- empty body. Fixes part of bug 22644; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (coverity build support, backport from 0.3.1.5-alpha):
- - Avoid Coverity build warnings related to our BUG() macro. By
- default, Coverity treats BUG() as the Linux kernel does: an
- instant abort(). We need to override that so our BUG() macro
- doesn't prevent Coverity from analyzing functions that use it.
- Fixes bug 23030; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (defensive programming, undefined behavior, backport from 0.3.1.4-alpha):
- - Fix a memset() off the end of an array when packing cells. This
- bug should be harmless in practice, since the corrupted bytes are
- still in the same structure, and are always padding bytes,
- ignored, or immediately overwritten, depending on compiler
- behavior. Nevertheless, because the memset()'s purpose is to make
- sure that any other cell-handling bugs can't expose bytes to the
- network, we need to fix it. Fixes bug 22737; bugfix on
- 0.2.4.11-alpha. Fixes CID 1401591.
- o Minor bugfixes (file limits, osx, backport from 0.3.1.5-alpha):
- - When setting the maximum number of connections allowed by the OS,
- always allow some extra file descriptors for other files. Fixes
- bug 22797; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.5-alpha):
- - Avoid a sandbox failure when trying to re-bind to a socket and
- mark it as IPv6-only. Fixes bug 20247; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.4-alpha):
- - Permit the fchmod system call, to avoid crashing on startup when
- starting with the seccomp2 sandbox and an unexpected set of
- permissions on the data directory or its contents. Fixes bug
- 22516; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (relay, backport from 0.3.0.5-rc):
- - Avoid a double-marked-circuit warning that could happen when we
- receive DESTROY cells under heavy load. Fixes bug 20059; bugfix
- on 0.1.0.1-rc.
- o Minor bugfixes (voting consistency, backport from 0.3.1.1-alpha):
- - Reject version numbers with non-numeric prefixes (such as +, -, or
- whitespace). Disallowing whitespace prevents differential version
- parsing between POSIX-based and Windows platforms. Fixes bug 21507
- and part of 21508; bugfix on 0.0.8pre1.
- o Build features (backport from 0.3.1.5-alpha):
- - Tor's repository now includes a Travis Continuous Integration (CI)
- configuration file (.travis.yml). This is meant to help new
- developers and contributors who fork Tor to a Github repository be
- better able to test their changes, and understand what we expect
- to pass. To use this new build feature, you must fork Tor to your
- Github account, then go into the "Integrations" menu in the
- repository settings for your fork and enable Travis, then push
- your changes. Closes ticket 22636.
- Changes in version 0.3.0.11 - 2017-09-18
- Tor 0.3.0.11 backports a collection of bugfixes from Tor the 0.3.1
- series.
- Most significantly, it includes a fix for TROVE-2017-008, a
- security bug that affects hidden services running with the
- SafeLogging option disabled. For more information, see
- https:
- o Minor features (code style, backport from 0.3.1.7):
- - Add "Falls through" comments to our codebase, in order to silence
- GCC 7's -Wimplicit-fallthrough warnings. Patch from Andreas
- Stieger. Closes ticket 22446.
- o Minor features:
- - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, backport from 0.3.1.7):
- - Avoid compiler warnings in the unit tests for calling tor_sscanf()
- with wide string outputs. Fixes bug 15582; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (controller, backport from 0.3.1.7):
- - Do not crash when receiving a HSPOST command with an empty body.
- Fixes part of bug 22644; bugfix on 0.2.7.1-alpha.
- - Do not crash when receiving a POSTDESCRIPTOR command with an empty
- body. Fixes part of bug 22644; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (file limits, osx, backport from 0.3.1.5-alpha):
- - When setting the maximum number of connections allowed by the OS,
- always allow some extra file descriptors for other files. Fixes
- bug 22797; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (logging, relay, backport from 0.3.1.6-rc):
- - Remove a forgotten debugging message when an introduction point
- successfully establishes a hidden service prop224 circuit with
- a client.
- - Change three other log_warn() for an introduction point to
- protocol warnings, because they can be failure from the network
- and are not relevant to the operator. Fixes bug 23078; bugfix on
- 0.3.0.1-alpha and 0.3.0.2-alpha.
- Changes in version 0.3.1.7 - 2017-09-18
- Tor 0.3.1.7 is the first stable release in the 0.3.1 series.
- With the 0.3.1 series, Tor now serves and downloads directory
- information in more compact formats, to save on bandwidth overhead. It
- also contains a new padding system to resist netflow-based traffic
- analysis, and experimental support for building parts of Tor in Rust
- (though no parts of Tor are in Rust yet). There are also numerous
- small features, bugfixes on earlier release series, and groundwork for
- the hidden services revamp of 0.3.2.
- This release also includes a fix for TROVE-2017-008, a security bug
- that affects hidden services running with the SafeLogging option
- disabled. For more information, see
- https:
- Per our stable release policy, we plan to support each stable release
- series for at least the next nine months, or for three months after
- the first stable release of the next series: whichever is longer. If
- you need a release with long-term support, we recommend that you stay
- with the 0.2.9 series.
- Below is a list of the changes since 0.3.1.6-rc. For a list of all
- changes since 0.3.0, see the ReleaseNotes file.
- o Major bugfixes (security, hidden services, loggging):
- - Fix a bug where we could log uninitialized stack when a certain
- hidden service error occurred while SafeLogging was disabled.
- Fixes bug #23490; bugfix on 0.2.7.2-alpha. This is also tracked as
- TROVE-2017-008 and CVE-2017-0380.
- o Minor features (defensive programming):
- - Create a pair of consensus parameters, nf_pad_tor2web and
- nf_pad_single_onion, to disable netflow padding in the consensus
- for non-anonymous connections in case the overhead is high. Closes
- ticket 17857.
- o Minor features (diagnostic):
- - Add a stack trace to the bug warnings that can be logged when
- trying to send an outgoing relay cell with n_chan == 0. Diagnostic
- attempt for bug 23105.
- o Minor features (geoip):
- - Update geoip and geoip6 to the September 6 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - Avoid compiler warnings in the unit tests for calling tor_sscanf()
- with wide string outputs. Fixes bug 15582; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (controller):
- - Do not crash when receiving a HSPOST command with an empty body.
- Fixes part of bug 22644; bugfix on 0.2.7.1-alpha.
- - Do not crash when receiving a POSTDESCRIPTOR command with an empty
- body. Fixes part of bug 22644; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (relay):
- - Inform the geoip and rephist modules about all requests, even on
- relays that are only fetching microdescriptors. Fixes a bug
- related to 21585; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (unit tests):
- - Fix a channelpadding unit test failure on slow systems by using
- mocked time instead of actual time. Fixes bug 23077; bugfix
- on 0.3.1.1-alpha.
- Changes in version 0.3.1.6-rc - 2017-09-05
- Tor 0.3.1.6-rc fixes a few small bugs and annoyances in the 0.3.1
- release series, including a bug that produced weird behavior on
- Windows directory caches.
- This is the first release candidate in the Tor 0.3.1 series. If we
- find no new bugs or regressions here, the first stable 0.3.1 release
- will be nearly identical to it.
- o Major bugfixes (windows, directory cache):
- - On Windows, do not try to delete cached consensus documents and
- diffs before they are unmapped from memory--Windows won't allow
- that. Instead, allow the consensus cache directory to grow larger,
- to hold files that might need to stay around longer. Fixes bug
- 22752; bugfix on 0.3.1.1-alpha.
- o Minor features (directory authority):
- - Improve the message that authorities report to relays that present
- RSA/Ed25519 keypairs that conflict with previously pinned keys.
- Closes ticket 22348.
- o Minor features (geoip):
- - Update geoip and geoip6 to the August 3 2017 Maxmind GeoLite2
- Country database.
- o Minor features (testing):
- - Add more tests for compression backend initialization. Closes
- ticket 22286.
- o Minor bugfixes (directory cache):
- - Fix a memory leak when recovering space in the consensus cache.
- Fixes bug 23139; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (hidden service):
- - Increase the number of circuits that a service is allowed to
- open over a specific period of time. The value was lower than it
- should be (8 vs 12) in the normal case of 3 introduction points.
- Fixes bug 22159; bugfix on 0.3.0.5-rc.
- - Fix a BUG warning during HSv3 descriptor decoding that could be
- cause by a specially crafted descriptor. Fixes bug 23233; bugfix
- on 0.3.0.1-alpha. Bug found by "haxxpop".
- - Rate-limit the log messages if we exceed the maximum number of
- allowed intro circuits. Fixes bug 22159; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (logging, relay):
- - Remove a forgotten debugging message when an introduction point
- successfully establishes a hidden service prop224 circuit with
- a client.
- - Change three other log_warn() for an introduction point to
- protocol warnings, because they can be failure from the network
- and are not relevant to the operator. Fixes bug 23078; bugfix on
- 0.3.0.1-alpha and 0.3.0.2-alpha.
- o Minor bugfixes (relay):
- - When a relay is not running as a directory cache, it will no
- longer generate compressed consensuses and consensus diff
- information. Previously, this was a waste of disk and CPU. Fixes
- bug 23275; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (robustness, error handling):
- - Improve our handling of the cases where OpenSSL encounters a
- memory error while encoding keys and certificates. We haven't
- observed these errors in the wild, but if they do happen, we now
- detect and respond better. Fixes bug 19418; bugfix on all versions
- of Tor. Reported by Guido Vranken.
- o Minor bugfixes (stability):
- - Avoid crashing on a double-free when unable to load or process an
- included file. Fixes bug 23155; bugfix on 0.3.1.1-alpha. Found
- with the clang static analyzer.
- o Minor bugfixes (testing):
- - Fix an undersized buffer in test-memwipe.c. Fixes bug 23291;
- bugfix on 0.2.7.2-alpha. Found and patched by Ties Stuij.
- - Port the hs_ntor handshake test to work correctly with recent
- versions of the pysha3 module. Fixes bug 23071; bugfix
- on 0.3.1.1-alpha.
- o Minor bugfixes (Windows service):
- - When running as a Windows service, set the ID of the main thread
- correctly. Failure to do so made us fail to send log messages to
- the controller in 0.2.1.16-rc, slowed down controller event
- delivery in 0.2.7.3-rc and later, and crash with an assertion
- failure in 0.3.1.1-alpha. Fixes bug 23081; bugfix on 0.2.1.6-alpha.
- Patch and diagnosis from "Vort".
- Changes in version 0.3.0.10 - 2017-08-02
- Tor 0.3.0.10 backports a collection of small-to-medium bugfixes
- from the current Tor alpha series. OpenBSD users and TPROXY users
- should upgrade; others are probably okay sticking with 0.3.0.9.
- o Major features (build system, continuous integration, backport from 0.3.1.5-alpha):
- - Tor's repository now includes a Travis Continuous Integration (CI)
- configuration file (.travis.yml). This is meant to help new
- developers and contributors who fork Tor to a Github repository be
- better able to test their changes, and understand what we expect
- to pass. To use this new build feature, you must fork Tor to your
- Github account, then go into the "Integrations" menu in the
- repository settings for your fork and enable Travis, then push
- your changes. Closes ticket 22636.
- o Major bugfixes (linux TPROXY support, backport from 0.3.1.1-alpha):
- - Fix a typo that had prevented TPROXY-based transparent proxying
- from working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
- Patch from "d4fq0fQAgoJ".
- o Major bugfixes (openbsd, denial-of-service, backport from 0.3.1.5-alpha):
- - Avoid an assertion failure bug affecting our implementation of
- inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
- handling of "0xbar" differs from what we had expected. Fixes bug
- 22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
- o Minor features (backport from 0.3.1.5-alpha):
- - Update geoip and geoip6 to the July 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (bandwidth accounting, backport from 0.3.1.2-alpha):
- - Roll over monthly accounting at the configured hour and minute,
- rather than always at 00:00. Fixes bug 22245; bugfix on 0.0.9rc1.
- Found by Andrey Karpov with PVS-Studio.
- o Minor bugfixes (compilation warnings, backport from 0.3.1.5-alpha):
- - Suppress -Wdouble-promotion warnings with clang 4.0. Fixes bug 22915;
- bugfix on 0.2.8.1-alpha.
- - Fix warnings when building with libscrypt and openssl scrypt
- support on Clang. Fixes bug 22916; bugfix on 0.2.7.2-alpha.
- - When building with certain versions of the mingw C header files,
- avoid float-conversion warnings when calling the C functions
- isfinite(), isnan(), and signbit(). Fixes bug 22801; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (compilation, mingw, backport from 0.3.1.1-alpha):
- - Backport a fix for an "unused variable" warning that appeared
- in some versions of mingw. Fixes bug 22838; bugfix on
- 0.2.8.1-alpha.
- o Minor bugfixes (coverity build support, backport from 0.3.1.5-alpha):
- - Avoid Coverity build warnings related to our BUG() macro. By
- default, Coverity treats BUG() as the Linux kernel does: an
- instant abort(). We need to override that so our BUG() macro
- doesn't prevent Coverity from analyzing functions that use it.
- Fixes bug 23030; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (directory authority, backport from 0.3.1.1-alpha):
- - When rejecting a router descriptor for running an obsolete version
- of Tor without ntor support, warn about the obsolete tor version,
- not the missing ntor key. Fixes bug 20270; bugfix on 0.2.9.3-alpha.
- o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.5-alpha):
- - Avoid a sandbox failure when trying to re-bind to a socket and
- mark it as IPv6-only. Fixes bug 20247; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (unit tests, backport from 0.3.1.5-alpha)
- - Fix a memory leak in the link-handshake/certs_ok_ed25519 test.
- Fixes bug 22803; bugfix on 0.3.0.1-alpha.
- Changes in version 0.3.1.5-alpha - 2017-08-01
- Tor 0.3.1.5-alpha improves the performance of consensus diff
- calculation, fixes a crash bug on older versions of OpenBSD, and fixes
- several other bugs. If no serious bugs are found in this version, the
- next version will be a release candidate.
- This release also marks the end of support for the Tor 0.2.4.x,
- 0.2.6.x, and 0.2.7.x release series. Those releases will receive no
- further bug or security fixes. Anyone still running or distributing
- one of those versions should upgrade.
- o Major features (build system, continuous integration):
- - Tor's repository now includes a Travis Continuous Integration (CI)
- configuration file (.travis.yml). This is meant to help new
- developers and contributors who fork Tor to a Github repository be
- better able to test their changes, and understand what we expect
- to pass. To use this new build feature, you must fork Tor to your
- Github account, then go into the "Integrations" menu in the
- repository settings for your fork and enable Travis, then push
- your changes. Closes ticket 22636.
- o Major bugfixes (openbsd, denial-of-service):
- - Avoid an assertion failure bug affecting our implementation of
- inet_pton(AF_INET6) on certain OpenBSD systems whose strtol()
- handling of "0xbar" differs from what we had expected. Fixes bug
- 22789; bugfix on 0.2.3.8-alpha. Also tracked as TROVE-2017-007.
- o Major bugfixes (relay, performance):
- - Perform circuit handshake operations at a higher priority than we
- use for consensus diff creation and compression. This should
- prevent circuits from starving when a relay or bridge receives a
- new consensus, especially on lower-powered machines. Fixes bug
- 22883; bugfix on 0.3.1.1-alpha.
- o Minor features (bridge authority):
- - Add "fingerprint" lines to the networkstatus-bridges file produced
- by bridge authorities. Closes ticket 22207.
- o Minor features (directory cache, consensus diff):
- - Add a new MaxConsensusAgeForDiffs option to allow directory cache
- operators with low-resource environments to adjust the number of
- consensuses they'll store and generate diffs from. Most cache
- operators should leave it unchanged. Helps to work around
- bug 22883.
- o Minor features (geoip):
- - Update geoip and geoip6 to the July 4 2017 Maxmind GeoLite2
- Country database.
- o Minor features (relay, performance):
- - Always start relays with at least two worker threads, to prevent
- priority inversion on slow tasks. Part of the fix for bug 22883.
- - Allow background work to be queued with different priorities, so
- that a big pile of slow low-priority jobs will not starve out
- higher priority jobs. This lays the groundwork for a fix for
- bug 22883.
- o Minor bugfixes (build system, rust):
- - Fix a problem where Rust toolchains were not being found when
- building without --enable-cargo-online-mode, due to setting the
- $HOME environment variable instead of $CARGO_HOME. Fixes bug
- 22830; bugfix on 0.3.1.1-alpha. Fix by Chelsea Komlo.
- o Minor bugfixes (compatibility, zstd):
- - Write zstd epilogues correctly when the epilogue requires
- reallocation of the output buffer, even with zstd 1.3.0.
- (Previously, we worked on 1.2.0 and failed with 1.3.0). Fixes bug
- 22927; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (compilation warnings):
- - Suppress -Wdouble-promotion warnings with clang 4.0. Fixes bug
- 22915; bugfix on 0.2.8.1-alpha.
- - Fix warnings when building with libscrypt and openssl scrypt
- support on Clang. Fixes bug 22916; bugfix on 0.2.7.2-alpha.
- - Compile correctly when both openssl 1.1.0 and libscrypt are
- detected. Previously this would cause an error. Fixes bug 22892;
- bugfix on 0.3.1.1-alpha.
- - When building with certain versions of the mingw C header files,
- avoid float-conversion warnings when calling the C functions
- isfinite(), isnan(), and signbit(). Fixes bug 22801; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (coverity build support):
- - Avoid Coverity build warnings related to our BUG() macro. By
- default, Coverity treats BUG() as the Linux kernel does: an
- instant abort(). We need to override that so our BUG() macro
- doesn't prevent Coverity from analyzing functions that use it.
- Fixes bug 23030; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (directory authority):
- - When a directory authority rejects a descriptor or extrainfo with
- a given digest, mark that digest as undownloadable, so that we do
- not attempt to download it again over and over. We previously
- tried to avoid downloading such descriptors by other means, but we
- didn't notice if we accidentally downloaded one anyway. This
- behavior became problematic in 0.2.7.2-alpha, when authorities
- began pinning Ed25519 keys. Fixes bug 22349; bugfix
- on 0.2.1.19-alpha.
- o Minor bugfixes (error reporting, windows):
- - When formatting Windows error messages, use the English format to
- avoid codepage issues. Fixes bug 22520; bugfix on 0.1.2.8-alpha.
- Patch from "Vort".
- o Minor bugfixes (file limits, osx):
- - When setting the maximum number of connections allowed by the OS,
- always allow some extra file descriptors for other files. Fixes
- bug 22797; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (linux seccomp2 sandbox):
- - Avoid a sandbox failure when trying to re-bind to a socket and
- mark it as IPv6-only. Fixes bug 20247; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (memory leaks):
- - Fix a small memory leak when validating a configuration that uses
- two or more AF_UNIX sockets for the same port type. Fixes bug
- 23053; bugfix on 0.2.6.3-alpha. This is CID 1415725.
- o Minor bugfixes (unit tests):
- - test_consdiff_base64cmp would fail on OS X because while OS X
- follows the standard of (less than zero/zero/greater than zero),
- it doesn't follow the convention of (-1/0/+1). Make the test
- comply with the standard. Fixes bug 22870; bugfix on 0.3.1.1-alpha.
- - Fix a memory leak in the link-handshake/certs_ok_ed25519 test.
- Fixes bug 22803; bugfix on 0.3.0.1-alpha.
- Changes in version 0.3.1.4-alpha - 2017-06-29
- Tor 0.3.1.4-alpha fixes a path selection bug that would allow a client
- to use a guard that was in the same network family as a chosen exit
- relay. This is a security regression; all clients running earlier
- versions of 0.3.0.x or 0.3.1.x should upgrade to 0.3.0.9
- or 0.3.1.4-alpha.
- This release also fixes several other bugs introduced in 0.3.0.x
- and 0.3.1.x, including others that can affect bandwidth usage
- and correctness.
- o New dependencies:
- - To build with zstd and lzma support, Tor now requires the
- pkg-config tool at build time. (This requirement was new in
- 0.3.1.1-alpha, but was not noted at the time. Noting it here to
- close ticket 22623.)
- o Major bugfixes (path selection, security):
- - When choosing which guard to use for a circuit, avoid the exit's
- family along with the exit itself. Previously, the new guard
- selection logic avoided the exit, but did not consider its family.
- Fixes bug 22753; bugfix on 0.3.0.1-alpha. Tracked as TROVE-2017-
- 006 and CVE-2017-0377.
- o Major bugfixes (compression, zstd):
- - Correctly detect a full buffer when decompressing a large zstd-
- compressed input. Previously, we would sometimes treat a full
- buffer as an error. Fixes bug 22628; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (directory protocol):
- - Ensure that we send "304 Not modified" as HTTP status code when a
- client is attempting to fetch a consensus or consensus diff, and
- the best one we can send them is one they already have. Fixes bug
- 22702; bugfix on 0.3.1.1-alpha.
- o Major bugfixes (entry guards):
- - When starting with an old consensus, do not add new entry guards
- unless the consensus is "reasonably live" (under 1 day old). Fixes
- one root cause of bug 22400; bugfix on 0.3.0.1-alpha.
- o Minor features (bug mitigation, diagnostics, logging):
- - Avoid an assertion failure, and log a better error message, when
- unable to remove a file from the consensus cache on Windows.
- Attempts to mitigate and diagnose bug 22752.
- o Minor features (geoip):
- - Update geoip and geoip6 to the June 8 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compression):
- - When compressing or decompressing a buffer, check for a failure to
- create a compression object. Fixes bug 22626; bugfix
- on 0.3.1.1-alpha.
- - When decompressing a buffer, check for extra data after the end of
- the compressed data. Fixes bug 22629; bugfix on 0.3.1.1-alpha.
- - When decompressing an object received over an anonymous directory
- connection, if we have already decompressed it using an acceptable
- compression method, do not reject it for looking like an
- unacceptable compression method. Fixes part of bug 22670; bugfix
- on 0.3.1.1-alpha.
- - When serving directory votes compressed with zlib, do not claim to
- have compressed them with zstd. Fixes bug 22669; bugfix
- on 0.3.1.1-alpha.
- - When spooling compressed data to an output buffer, don't try to
- spool more data when there is no more data to spool and we are not
- trying to flush the input. Previously, we would sometimes launch
- compression requests with nothing to do, which interferes with our
- 22672 checks. Fixes bug 22719; bugfix on 0.2.0.16-alpha.
- o Minor bugfixes (defensive programming):
- - Detect and break out of infinite loops in our compression code. We
- don't think that any such loops exist now, but it's best to be
- safe. Closes ticket 22672.
- - Fix a memset() off the end of an array when packing cells. This
- bug should be harmless in practice, since the corrupted bytes are
- still in the same structure, and are always padding bytes,
- ignored, or immediately overwritten, depending on compiler
- behavior. Nevertheless, because the memset()'s purpose is to make
- sure that any other cell-handling bugs can't expose bytes to the
- network, we need to fix it. Fixes bug 22737; bugfix on
- 0.2.4.11-alpha. Fixes CID 1401591.
- o Minor bugfixes (linux seccomp2 sandbox):
- - Permit the fchmod system call, to avoid crashing on startup when
- starting with the seccomp2 sandbox and an unexpected set of
- permissions on the data directory or its contents. Fixes bug
- 22516; bugfix on 0.2.5.4-alpha.
- - Fix a crash in the LZMA module, when the sandbox was enabled, and
- liblzma would allocate more than 16 MB of memory. We solve this by
- bumping the mprotect() limit in the sandbox module from 16 MB to
- 20 MB. Fixes bug 22751; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (logging):
- - When decompressing, do not warn if we fail to decompress using a
- compression method that we merely guessed. Fixes part of bug
- 22670; bugfix on 0.1.1.14-alpha.
- - When decompressing, treat mismatch between content-encoding and
- actual compression type as a protocol warning. Fixes part of bug
- 22670; bugfix on 0.1.1.9-alpha.
- - Downgrade "assigned_to_cpuworker failed" message to info-level
- severity. In every case that can reach it, either a better warning
- has already been logged, or no warning is warranted. Fixes bug
- 22356; bugfix on 0.2.6.3-alpha.
- - Demote a warn that was caused by libevent delays to info if
- netflow padding is less than 4.5 seconds late, or to notice
- if it is more (4.5 seconds is the amount of time that a netflow
- record might be emitted after, if we chose the maximum timeout).
- Fixes bug 22212; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (process behavior):
- - When exiting because of an error, always exit with a nonzero exit
- status. Previously, we would fail to report an error in our exit
- status in cases related to __OwningControllerProcess failure,
- lockfile contention, and Ed25519 key initialization. Fixes bug
- 22720; bugfix on versions 0.2.1.6-alpha, 0.2.2.28-beta, and
- 0.2.7.2-alpha respectively. Reported by "f55jwk4f"; patch
- from "huyvq".
- o Documentation:
- - Add a manpage description for the key-pinning-journal file. Closes
- ticket 22347.
- - Correctly note that bandwidth accounting values are stored in the
- state file, and the bw_accounting file is now obsolete. Closes
- ticket 16082.
- - Document more of the files in the Tor data directory, including
- cached-extrainfo, secret_onion_key{,_ntor}.old, hidserv-stats,
- approved-routers, sr-random, and diff-cache. Found while fixing
- ticket 22347.
- Changes in version 0.3.0.9 - 2017-06-29
- Tor 0.3.0.9 fixes a path selection bug that would allow a client
- to use a guard that was in the same network family as a chosen exit
- relay. This is a security regression; all clients running earlier
- versions of 0.3.0.x or 0.3.1.x should upgrade to 0.3.0.9 or
- 0.3.1.4-alpha.
- This release also backports several other bugfixes from the 0.3.1.x
- series.
- o Major bugfixes (path selection, security, backport from 0.3.1.4-alpha):
- - When choosing which guard to use for a circuit, avoid the exit's
- family along with the exit itself. Previously, the new guard
- selection logic avoided the exit, but did not consider its family.
- Fixes bug 22753; bugfix on 0.3.0.1-alpha. Tracked as TROVE-2017-
- 006 and CVE-2017-0377.
- o Major bugfixes (entry guards, backport from 0.3.1.1-alpha):
- - Don't block bootstrapping when a primary bridge is offline and we
- can't get its descriptor. Fixes bug 22325; fixes one case of bug
- 21969; bugfix on 0.3.0.3-alpha.
- o Major bugfixes (entry guards, backport from 0.3.1.4-alpha):
- - When starting with an old consensus, do not add new entry guards
- unless the consensus is "reasonably live" (under 1 day old). Fixes
- one root cause of bug 22400; bugfix on 0.3.0.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the June 8 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (voting consistency, backport from 0.3.1.1-alpha):
- - Reject version numbers with non-numeric prefixes (such as +, -, or
- whitespace). Disallowing whitespace prevents differential version
- parsing between POSIX-based and Windows platforms. Fixes bug 21507
- and part of 21508; bugfix on 0.0.8pre1.
- o Minor bugfixes (linux seccomp2 sandbox, backport from 0.3.1.4-alpha):
- - Permit the fchmod system call, to avoid crashing on startup when
- starting with the seccomp2 sandbox and an unexpected set of
- permissions on the data directory or its contents. Fixes bug
- 22516; bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (defensive programming, backport from 0.3.1.4-alpha):
- - Fix a memset() off the end of an array when packing cells. This
- bug should be harmless in practice, since the corrupted bytes are
- still in the same structure, and are always padding bytes,
- ignored, or immediately overwritten, depending on compiler
- behavior. Nevertheless, because the memset()'s purpose is to make
- sure that any other cell-handling bugs can't expose bytes to the
- network, we need to fix it. Fixes bug 22737; bugfix on
- 0.2.4.11-alpha. Fixes CID 1401591.
- Changes in version 0.3.1.3-alpha - 2017-06-08
- Tor 0.3.1.3-alpha fixes a pair of bugs that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-004 and TROVE-2017-005.
- Tor 0.3.1.3-alpha also includes fixes for several key management bugs
- that sometimes made relays unreliable, as well as several other
- bugfixes described below.
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure when a hidden service
- handles a malformed BEGIN cell. Fixes bug 22493, tracked as
- TROVE-2017-004 and as CVE-2017-0375; bugfix on 0.3.0.1-alpha.
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Major bugfixes (relay, link handshake):
- - When performing the v3 link handshake on a TLS connection, report
- that we have the x509 certificate that we actually used on that
- connection, even if we have changed certificates since that
- connection was first opened. Previously, we would claim to have
- used our most recent x509 link certificate, which would sometimes
- make the link handshake fail. Fixes one case of bug 22460; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (relays, key management):
- - Regenerate link and authentication certificates whenever the key
- that signs them changes; also, regenerate link certificates
- whenever the signed key changes. Previously, these processes were
- only weakly coupled, and we relays could (for minutes to hours)
- wind up with an inconsistent set of keys and certificates, which
- other relays would not accept. Fixes two cases of bug 22460;
- bugfix on 0.3.0.1-alpha.
- - When sending an Ed25519 signing->link certificate in a CERTS cell,
- send the certificate that matches the x509 certificate that we
- used on the TLS connection. Previously, there was a race condition
- if the TLS context rotated after we began the TLS handshake but
- before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
- on 0.3.0.1-alpha.
- o Major bugfixes (torrc, crash):
- - Fix a crash bug when using %include in torrc. Fixes bug 22417;
- bugfix on 0.3.1.1-alpha. Patch by Daniel Pinto.
- o Minor features (code style):
- - Add "Falls through" comments to our codebase, in order to silence
- GCC 7's -Wimplicit-fallthrough warnings. Patch from Andreas
- Stieger. Closes ticket 22446.
- o Minor features (diagnostic):
- - Add logging messages to try to diagnose a rare bug that seems to
- generate RSA->Ed25519 cross-certificates dated in the 1970s. We
- think this is happening because of incorrect system clocks, but
- we'd like to know for certain. Diagnostic for bug 22466.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- o Minor bugfixes (directory protocol):
- - Check for libzstd >= 1.1, because older versions lack the
- necessary streaming API. Fixes bug 22413; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (link handshake):
- - Lower the lifetime of the RSA->Ed25519 cross-certificate to six
- months, and regenerate it when it is within one month of expiring.
- Previously, we had generated this certificate at startup with a
- ten-year lifetime, but that could lead to weird behavior when Tor
- was started with a grossly inaccurate clock. Mitigates bug 22466;
- mitigation on 0.3.0.1-alpha.
- o Minor bugfixes (storage directories):
- - Always check for underflows in the cached storage directory usage.
- If the usage does underflow, re-calculate it. Also, avoid a
- separate underflow when the usage is not known. Fixes bug 22424;
- bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (unit tests):
- - The unit tests now pass on systems where localhost is misconfigured
- to some IPv4 address other than 127.0.0.1. Fixes bug 6298; bugfix
- on 0.0.9pre2.
- o Documentation:
- - Clarify the manpage for the (deprecated) torify script. Closes
- ticket 6892.
- Changes in version 0.3.0.8 - 2017-06-08
- Tor 0.3.0.8 fixes a pair of bugs that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-004 and TROVE-2017-005.
- Tor 0.3.0.8 also includes fixes for several key management bugs
- that sometimes made relays unreliable, as well as several other
- bugfixes described below.
- o Major bugfixes (hidden service, relay, security, backport
- from 0.3.1.3-alpha):
- - Fix a remotely triggerable assertion failure when a hidden service
- handles a malformed BEGIN cell. Fixes bug 22493, tracked as
- TROVE-2017-004 and as CVE-2017-0375; bugfix on 0.3.0.1-alpha.
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Major bugfixes (relay, link handshake, backport from 0.3.1.3-alpha):
- - When performing the v3 link handshake on a TLS connection, report
- that we have the x509 certificate that we actually used on that
- connection, even if we have changed certificates since that
- connection was first opened. Previously, we would claim to have
- used our most recent x509 link certificate, which would sometimes
- make the link handshake fail. Fixes one case of bug 22460; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (relays, key management, backport from 0.3.1.3-alpha):
- - Regenerate link and authentication certificates whenever the key
- that signs them changes; also, regenerate link certificates
- whenever the signed key changes. Previously, these processes were
- only weakly coupled, and we relays could (for minutes to hours)
- wind up with an inconsistent set of keys and certificates, which
- other relays would not accept. Fixes two cases of bug 22460;
- bugfix on 0.3.0.1-alpha.
- - When sending an Ed25519 signing->link certificate in a CERTS cell,
- send the certificate that matches the x509 certificate that we
- used on the TLS connection. Previously, there was a race condition
- if the TLS context rotated after we began the TLS handshake but
- before we sent the CERTS cell. Fixes a case of bug 22460; bugfix
- on 0.3.0.1-alpha.
- o Major bugfixes (hidden service v3, backport from 0.3.1.1-alpha):
- - Stop rejecting v3 hidden service descriptors because their size
- did not match an old padding rule. Fixes bug 22447; bugfix on
- 0.3.0.1-alpha.
- o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
- - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
- December 2016 (of which ~126 were still functional) with a list of
- 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
- 2017. Resolves ticket 21564.
- o Minor bugfixes (configuration, backport from 0.3.1.1-alpha):
- - Do not crash when starting with LearnCircuitBuildTimeout 0. Fixes
- bug 22252; bugfix on 0.2.9.3-alpha.
- o Minor bugfixes (correctness, backport from 0.3.1.3-alpha):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- o Minor bugfixes (link handshake, backport from 0.3.1.3-alpha):
- - Lower the lifetime of the RSA->Ed25519 cross-certificate to six
- months, and regenerate it when it is within one month of expiring.
- Previously, we had generated this certificate at startup with a
- ten-year lifetime, but that could lead to weird behavior when Tor
- was started with a grossly inaccurate clock. Mitigates bug 22466;
- mitigation on 0.3.0.1-alpha.
- o Minor bugfixes (memory leak, directory authority, backport from
- 0.3.1.2-alpha):
- - When directory authorities reject a router descriptor due to
- keypinning, free the router descriptor rather than leaking the
- memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
- Changes in version 0.2.9.11 - 2017-06-08
- Tor 0.2.9.11 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- Tor 0.2.9.11 also backports fixes for several key management bugs
- that sometimes made relays unreliable, as well as several other
- bugfixes described below.
- o Major bugfixes (hidden service, relay, security, backport
- from 0.3.1.3-alpha):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Major bugfixes (relay, link handshake, backport from 0.3.1.3-alpha):
- - When performing the v3 link handshake on a TLS connection, report
- that we have the x509 certificate that we actually used on that
- connection, even if we have changed certificates since that
- connection was first opened. Previously, we would claim to have
- used our most recent x509 link certificate, which would sometimes
- make the link handshake fail. Fixes one case of bug 22460; bugfix
- on 0.2.3.6-alpha.
- o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
- - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
- December 2016 (of which ~126 were still functional) with a list of
- 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
- 2017. Resolves ticket 21564.
- o Minor features (future-proofing, backport from 0.3.0.7):
- - Tor no longer refuses to download microdescriptors or descriptors if
- they are listed as "published in the future". This change will
- eventually allow us to stop listing meaningful "published" dates
- in microdescriptor consensuses, and thereby allow us to reduce the
- resources required to download consensus diffs by over 50%.
- Implements part of ticket 21642; implements part of proposal 275.
- o Minor features (directory authorities, backport from 0.3.0.4-rc)
- - Directory authorities now reject relays running versions
- 0.2.9.1-alpha through 0.2.9.4-alpha, because those relays
- suffer from bug 20499 and don't keep their consensus cache
- up-to-date. Resolves ticket 20509.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (control port, backport from 0.3.0.6):
- - The GETINFO extra-info/digest/<digest> command was broken because
- of a wrong base16 decode return value check, introduced when
- refactoring that API. Fixes bug 22034; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (correctness, backport from 0.3.1.3-alpha):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- o Minor bugfixes (Linux seccomp2 sandbox, backport from 0.3.0.7):
- - The getpid() system call is now permitted under the Linux seccomp2
- sandbox, to avoid crashing with versions of OpenSSL (and other
- libraries) that attempt to learn the process's PID by using the
- syscall rather than the VDSO code. Fixes bug 21943; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (memory leak, directory authority, backport
- from 0.3.1.2-alpha):
- - When directory authorities reject a router descriptor due to
- keypinning, free the router descriptor rather than leaking the
- memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
- Changes in version 0.2.8.14 - 2017-06-08
- Tor 0.2.7.8 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor features (fallback directory list, backport from 0.3.1.3-alpha):
- - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
- December 2016 (of which ~126 were still functional) with a list of
- 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
- 2017. Resolves ticket 21564.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- Changes in version 0.2.7.8 - 2017-06-08
- Tor 0.2.7.8 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- Changes in version 0.2.6.12 - 2017-06-08
- Tor 0.2.6.12 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- Changes in version 0.2.5.14 - 2017-06-08
- Tor 0.2.5.14 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- Changes in version 0.2.4.29 - 2017-06-08
- Tor 0.2.4.29 backports a fix for a bug that would allow an attacker to
- remotely crash a hidden service with an assertion failure. Anyone
- running a hidden service should upgrade to this version, or to some
- other version with fixes for TROVE-2017-005. (Versions before 0.3.0
- are not affected by TROVE-2017-004.)
- o Major bugfixes (hidden service, relay, security):
- - Fix a remotely triggerable assertion failure caused by receiving a
- BEGIN_DIR cell on a hidden service rendezvous circuit. Fixes bug
- 22494, tracked as TROVE-2017-005 and CVE-2017-0376; bugfix
- on 0.2.2.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (correctness):
- - Avoid undefined behavior when parsing IPv6 entries from the geoip6
- file. Fixes bug 22490; bugfix on 0.2.4.6-alpha.
- Changes in version 0.3.1.2-alpha - 2017-05-26
- Tor 0.3.1.2-alpha is the second release in the 0.3.1.x series. It
- fixes a few bugs found while testing 0.3.1.1-alpha, including a
- memory corruption bug that affected relay stability.
- o Major bugfixes (crash, relay):
- - Fix a memory-corruption bug in relays that set MyFamily.
- Previously, they would double-free MyFamily elements when making
- the next descriptor or when changing their configuration. Fixes
- bug 22368; bugfix on 0.3.1.1-alpha.
- o Minor bugfixes (logging):
- - Log a better message when a directory authority replies to an
- upload with an unexpected status code. Fixes bug 11121; bugfix
- on 0.1.0.1-rc.
- o Minor bugfixes (memory leak, directory authority):
- - When directory authorities reject a router descriptor due to
- keypinning, free the router descriptor rather than leaking the
- memory. Fixes bug 22370; bugfix on 0.2.7.2-alpha.
- Changes in version 0.3.1.1-alpha - 2017-05-22
- Tor 0.3.1.1-alpha is the first release in the 0.3.1.x series. It
- reduces the bandwidth usage for Tor's directory protocol, adds some
- basic padding to resist netflow-based traffic analysis and to serve as
- the basis of other padding in the future, and adds rust support to the
- build system.
- It also contains numerous other small features and improvements to
- security, correctness, and performance.
- Below are the changes since 0.3.0.7.
- o Major features (directory protocol):
- - Tor relays and authorities can now serve clients an abbreviated
- version of the consensus document, containing only the changes
- since an older consensus document that the client holds. Clients
- now request these documents when available. When both client and
- server use this new protocol, they will use far less bandwidth (up
- to 94% less) to keep the client's consensus up-to-date. Implements
- proposal 140; closes ticket 13339. Based on work by Daniel Martí.
- - Tor can now compress directory traffic with lzma or with zstd
- compression algorithms, which can deliver better bandwidth
- performance. Because lzma is computationally expensive, it's only
- used for documents that can be compressed once and served many
- times. Support for these algorithms requires that tor is built
- with the libzstd and/or liblzma libraries available. Implements
- proposal 278; closes ticket 21662.
- - Relays now perform the more expensive compression operations, and
- consensus diff generation, in worker threads. This separation
- avoids delaying the main thread when a new consensus arrives.
- o Major features (experimental):
- - Tor can now build modules written in Rust. To turn this on, pass
- the "--enable-rust" flag to the configure script. It's not time to
- get excited yet: currently, there is no actual Rust functionality
- beyond some simple glue code, and a notice at startup to tell you
- that Rust is running. Still, we hope that programmers and
- packagers will try building Tor with Rust support, so that we can
- find issues and solve portability problems. Closes ticket 22106.
- o Major features (traffic analysis resistance):
- - Connections between clients and relays now send a padding cell in
- each direction every 1.5 to 9.5 seconds (tunable via consensus
- parameters). This padding will not resist specialized
- eavesdroppers, but it should be enough to make many ISPs' routine
- network flow logging less useful in traffic analysis against
- Tor users.
- Padding is negotiated using Tor's link protocol, so both relays
- and clients must upgrade for this to take effect. Clients may
- still send padding despite the relay's version by setting
- ConnectionPadding 1 in torrc, and may disable padding by setting
- ConnectionPadding 0 in torrc. Padding may be minimized for mobile
- users with the torrc option ReducedConnectionPadding. Implements
- Proposal 251 and Section 2 of Proposal 254; closes ticket 16861.
- - Relays will publish 24 hour totals of padding and non-padding cell
- counts to their extra-info descriptors, unless PaddingStatistics 0
- is set in torrc. These 24 hour totals are also rounded to
- multiples of 10000.
- o Major bugfixes (connection usage):
- - We use NETINFO cells to try to determine if both relays involved
- in a connection will agree on the canonical status of that
- connection. We prefer the connections where this is the case for
- extend cells, and try to close connections where relays disagree
- on their canonical status early. Also, we now prefer the oldest
- valid connection for extend cells. These two changes should reduce
- the number of long-term connections that are kept open between
- relays. Fixes bug 17604; bugfix on 0.2.5.5-alpha.
- - Relays now log hourly statistics (look for
- "channel_check_for_duplicates" lines) on the total number of
- connections to other relays. If the number of connections per
- relay is unexpectedly large, this log message is at notice level.
- Otherwise it is at info.
- o Major bugfixes (entry guards):
- - Don't block bootstrapping when a primary bridge is offline and we
- can't get its descriptor. Fixes bug 22325; fixes one case of bug
- 21969; bugfix on 0.3.0.3-alpha.
- o Major bugfixes (linux TPROXY support):
- - Fix a typo that had prevented TPROXY-based transparent proxying
- from working under Linux. Fixes bug 18100; bugfix on 0.2.6.3-alpha.
- Patch from "d4fq0fQAgoJ".
- o Minor features (security, windows):
- - Enable a couple of pieces of Windows hardening: one
- (HeapEnableTerminationOnCorruption) that has been on-by-default
- since Windows 8, and unavailable before Windows 7; and one
- (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
- affect us, but shouldn't do any harm. Closes ticket 21953.
- o Minor features (config options):
- - Allow "%include" directives in torrc configuration files. These
- directives import the settings from other files, or from all the
- files in a directory. Closes ticket 1922. Code by Daniel Pinto.
- - Make SAVECONF return an error when overwriting a torrc that has
- includes. Using SAVECONF with the FORCE option will allow it to
- overwrite torrc even if includes are used. Related to ticket 1922.
- - Add "GETINFO config-can-saveconf" to tell controllers if SAVECONF
- will work without the FORCE option. Related to ticket 1922.
- o Minor features (controller):
- - Warn the first time that a controller requests data in the long-
- deprecated 'GETINFO network-status' format. Closes ticket 21703.
- o Minor features (defaults):
- - The default value for UseCreateFast is now 0: clients which
- haven't yet received a consensus document will now use a proper
- ntor handshake to talk to their directory servers whenever they
- can. Closes ticket 21407.
- - Onion key rotation and expiry intervals are now defined as a
- network consensus parameter, per proposal 274. The default
- lifetime of an onion key is increased from 7 to 28 days. Old onion
- keys will expire after 7 days by default. This change will make
- consensus diffs much smaller, and save significant bandwidth.
- Closes ticket 21641.
- o Minor features (fallback directory list):
- - Update the fallback directory mirror whitelist and blacklist based
- on operator emails. Closes task 21121.
- - Replace the 177 fallbacks originally introduced in Tor 0.2.9.8 in
- December 2016 (of which ~126 were still functional) with a list of
- 151 fallbacks (32 new, 119 unchanged, 58 removed) generated in May
- 2017. Resolves ticket 21564.
- o Minor features (hidden services, logging):
- - Log a message when a hidden service descriptor has fewer
- introduction points than specified in
- HiddenServiceNumIntroductionPoints. Closes tickets 21598.
- - Log a message when a hidden service reaches its introduction point
- circuit limit, and when that limit is reset. Follow up to ticket
- 21594; closes ticket 21622.
- - Warn user if multiple entries in EntryNodes and at least one
- HiddenService are used together. Pinning EntryNodes along with a
- hidden service can be possibly harmful; for instance see ticket
- 14917 or 21155. Closes ticket 21155.
- o Minor features (linux seccomp2 sandbox):
- - We now have a document storage backend compatible with the Linux
- seccomp2 sandbox. This backend is used for consensus documents and
- diffs between them; in the long term, we'd like to use it for
- unparseable directory material too. Closes ticket 21645
- - Increase the maximum allowed size passed to mprotect(PROT_WRITE)
- from 1MB to 16MB. This was necessary with the glibc allocator in
- order to allow worker threads to allocate more memory -- which in
- turn is necessary because of our new use of worker threads for
- compression. Closes ticket 22096.
- o Minor features (logging):
- - Log files are no longer created world-readable by default.
- (Previously, most distributors would store the logs in a non-
- world-readable location to prevent inappropriate access. This
- change is an extra precaution.) Closes ticket 21729; patch
- from toralf.
- o Minor features (performance):
- - Our Keccak (SHA-3) implementation now accesses memory more
- efficiently, especially on little-endian systems. Closes
- ticket 21737.
- - Add an O(1) implementation of channel_find_by_global_id(), to
- speed some controller functions.
- o Minor features (relay, configuration):
- - The MyFamily option may now be repeated as many times as desired,
- for relays that want to configure large families. Closes ticket
- 4998; patch by Daniel Pinto.
- o Minor features (safety):
- - Add an explicit check to extrainfo_parse_entry_from_string() for
- NULL inputs. We don't believe this can actually happen, but it may
- help silence a warning from the Clang analyzer. Closes
- ticket 21496.
- o Minor features (testing):
- - Add a "--disable-memory-sentinels" feature to help with fuzzing.
- When Tor is compiled with this option, we disable a number of
- redundant memory-safety failsafes that are intended to stop bugs
- from becoming security issues. This makes it easier to hunt for
- bugs that would be security issues without the failsafes turned
- on. Closes ticket 21439.
- - Add a general event-tracing instrumentation support to Tor. This
- subsystem will enable developers and researchers to add fine-
- grained instrumentation to their Tor instances, for use when
- examining Tor network performance issues. There are no trace
- events yet, and event-tracing is off by default unless enabled at
- compile time. Implements ticket 13802.
- - Improve our version parsing tests: add tests for typical version
- components, add tests for invalid versions, including numeric
- range and non-numeric prefixes. Unit tests 21278, 21450, and
- 21507. Partially implements 21470.
- o Minor bugfixes (bandwidth accounting):
- - Roll over monthly accounting at the configured hour and minute,
- rather than always at 00:00. Fixes bug 22245; bugfix on 0.0.9rc1.
- Found by Andrey Karpov with PVS-Studio.
- o Minor bugfixes (code correctness):
- - Accurately identify client connections by their lack of peer
- authentication. This means that we bail out earlier if asked to
- extend to a client. Follow-up to 21407. Fixes bug 21406; bugfix
- on 0.2.4.23.
- o Minor bugfixes (configuration):
- - Do not crash when starting with LearnCircuitBuildTimeout 0. Fixes
- bug 22252; bugfix on 0.2.9.3-alpha.
- o Minor bugfixes (connection lifespan):
- - Allow more control over how long TLS connections are kept open:
- unify CircuitIdleTimeout and PredictedPortsRelevanceTime into a
- single option called CircuitsAvailableTimeout. Also, allow the
- consensus to control the default values for both this preference
- and the lifespan of relay-to-relay connections. Fixes bug 17592;
- bugfix on 0.2.5.5-alpha.
- - Increase the initial circuit build timeout testing frequency, to
- help ensure that ReducedConnectionPadding clients finish learning
- a timeout before their orconn would expire. The initial testing
- rate was set back in the days of TAP and before the Tor Browser
- updater, when we had to be much more careful about new clients
- making lots of circuits. With this change, a circuit build timeout
- is learned in about 15-20 minutes, instead of 100-120 minutes.
- o Minor bugfixes (controller):
- - GETINFO onions/current and onions/detached no longer respond with
- 551 on empty lists. Fixes bug 21329; bugfix on 0.2.7.1-alpha.
- - Trigger HS descriptor events on the control port when the client
- fails to pick a hidden service directory for a hidden service.
- This can happen if all the hidden service directories are in
- ExcludeNodes, or they have all been queried within the last 15
- minutes. Fixes bug 22042; bugfix on 0.2.5.2-alpha.
- o Minor bugfixes (directory authority):
- - When rejecting a router descriptor for running an obsolete version
- of Tor without ntor support, warn about the obsolete tor version,
- not the missing ntor key. Fixes bug 20270; bugfix on 0.2.9.3-alpha.
- - Prevent the shared randomness subsystem from asserting when
- initialized by a bridge authority with an incomplete configuration
- file. Fixes bug 21586; bugfix on 0.2.9.8.
- o Minor bugfixes (exit-side DNS):
- - Fix an untriggerable assertion that checked the output of a
- libevent DNS error, so that the assertion actually behaves as
- expected. Fixes bug 22244; bugfix on 0.2.0.20-rc. Found by Andrey
- Karpov using PVS-Studio.
- o Minor bugfixes (fallback directories):
- - Make the usage example in updateFallbackDirs.py actually work, and
- explain what it does. Fixes bug 22270; bugfix on 0.3.0.3-alpha.
- - Decrease the guard flag average required to be a fallback. This
- allows us to keep relays that have their guard flag removed when
- they restart. Fixes bug 20913; bugfix on 0.2.8.1-alpha.
- - Decrease the minimum number of fallbacks to 100. Fixes bug 20913;
- bugfix on 0.2.8.1-alpha.
- - Make sure fallback directory mirrors have the same address, port,
- and relay identity key for at least 30 days before they are
- selected. Fixes bug 20913; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (hidden services):
- - Stop printing a cryptic warning when a hidden service gets a
- request to connect to a virtual port that it hasn't configured.
- Fixes bug 16706; bugfix on 0.2.6.3-alpha.
- - Simplify hidden service descriptor creation by using an existing
- flag to check if an introduction point is established. Fixes bug
- 21599; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (memory leak):
- - Fix a small memory leak at exit from the backtrace handler code.
- Fixes bug 21788; bugfix on 0.2.5.2-alpha. Patch from Daniel Pinto.
- o Minor bugfixes (protocol, logging):
- - Downgrade a log statement about unexpected relay cells from "bug"
- to "protocol warning", because there is at least one use case
- where it can be triggered by a buggy tor implementation. Fixes bug
- 21293; bugfix on 0.1.1.14-alpha.
- o Minor bugfixes (testing):
- - Use unbuffered I/O for utility functions around the
- process_handle_t type. This fixes unit test failures reported on
- OpenBSD and FreeBSD. Fixes bug 21654; bugfix on 0.2.3.1-alpha.
- - Make display of captured unit test log messages consistent. Fixes
- bug 21510; bugfix on 0.2.9.3-alpha.
- - Make test-network.sh always call chutney's test-network.sh.
- Previously, this only worked on systems which had bash installed,
- due to some bash-specific code in the script. Fixes bug 19699;
- bugfix on 0.3.0.4-rc. Follow-up to ticket 21581.
- o Minor bugfixes (voting consistency):
- - Reject version numbers with non-numeric prefixes (such as +, -, or
- whitespace). Disallowing whitespace prevents differential version
- parsing between POSIX-based and Windows platforms. Fixes bug 21507
- and part of 21508; bugfix on 0.0.8pre1.
- o Minor bugfixes (windows, relay):
- - Resolve "Failure from drain_fd: No error" warnings on Windows
- relays. Fixes bug 21540; bugfix on 0.2.6.3-alpha.
- o Code simplification and refactoring:
- - Break up the 630-line function connection_dir_client_reached_eof()
- into a dozen smaller functions. This change should help
- maintainability and readability of the client directory code.
- - Isolate our use of the openssl headers so that they are only
- included from our crypto wrapper modules, and from tests that
- examine those modules' internals. Closes ticket 21841.
- - Simplify our API to launch directory requests, making it more
- extensible and less error-prone. Now it's easier to add extra
- headers to directory requests. Closes ticket 21646.
- - Our base64 decoding functions no longer overestimate the output
- space that they need when parsing unpadded inputs. Closes
- ticket 17868.
- - Remove unused "ROUTER_ADDED_NOTIFY_GENERATOR" internal value.
- Resolves ticket 22213.
- - The logic that directory caches use to spool request to clients,
- serving them one part at a time so as not to allocate too much
- memory, has been refactored for consistency. Previously there was
- a separate spooling implementation per type of spoolable data. Now
- there is one common spooling implementation, with extensible data
- types. Closes ticket 21651.
- - Tor's compression module now supports multiple backends. Part of
- the implementation for proposal 278; closes ticket 21663.
- o Documentation:
- - Clarify the behavior of the KeepAliveIsolateSOCKSAuth sub-option.
- Closes ticket 21873.
- - Correct documentation about the default DataDirectory value.
- Closes ticket 21151.
- - Document the default behavior of NumEntryGuards and
- NumDirectoryGuards correctly. Fixes bug 21715; bugfix
- on 0.3.0.1-alpha.
- - Document key=value pluggable transport arguments for Bridge lines
- in torrc. Fixes bug 20341; bugfix on 0.2.5.1-alpha.
- - Note that bandwidth-limiting options don't affect TCP headers or
- DNS. Closes ticket 17170.
- o Removed features (configuration options, all in ticket 22060):
- - These configuration options are now marked Obsolete, and no longer
- have any effect: AllowInvalidNodes, AllowSingleHopCircuits,
- AllowSingleHopExits, ExcludeSingleHopRelays, FastFirstHopPK,
- TLSECGroup, WarnUnsafeSocks. They were first marked as deprecated
- in 0.2.9.2-alpha and have now been removed. The previous default
- behavior is now always chosen; the previous (less secure) non-
- default behavior is now unavailable.
- - CloseHSClientCircuitsImmediatelyOnTimeout and
- CloseHSServiceRendCircuitsImmediatelyOnTimeout were deprecated in
- 0.2.9.2-alpha and now have been removed. HS circuits never close
- on circuit build timeout; they have a longer timeout period.
- - {Control,DNS,Dir,Socks,Trans,NATD,OR}ListenAddress were deprecated
- in 0.2.9.2-alpha and now have been removed. Use the ORPort option
- (and others) to configure listen-only and advertise-only addresses.
- o Removed features (tools):
- - We've removed the tor-checkkey tool from src/tools. Long ago, we
- used it to help people detect RSA keys that were generated by
- versions of Debian affected by CVE-2008-0166. But those keys have
- been out of circulation for ages, and this tool is no longer
- required. Closes ticket 21842.
- Changes in version 0.3.0.7 - 2017-05-15
- Tor 0.3.0.7 fixes a medium-severity security bug in earlier versions
- of Tor 0.3.0.x, where an attacker could cause a Tor relay process
- to exit. Relays running earlier versions of Tor 0.3.0.x should upgrade;
- clients are not affected.
- o Major bugfixes (hidden service directory, security):
- - Fix an assertion failure in the hidden service directory code, which
- could be used by an attacker to remotely cause a Tor relay process to
- exit. Relays running earlier versions of Tor 0.3.0.x should upgrade.
- should upgrade. This security issue is tracked as TROVE-2017-002.
- Fixes bug 22246; bugfix on 0.3.0.1-alpha.
- o Minor features:
- - Update geoip and geoip6 to the May 2 2017 Maxmind GeoLite2
- Country database.
- o Minor features (future-proofing):
- - Tor no longer refuses to download microdescriptors or descriptors
- if they are listed as "published in the future". This change will
- eventually allow us to stop listing meaningful "published" dates
- in microdescriptor consensuses, and thereby allow us to reduce the
- resources required to download consensus diffs by over 50%.
- Implements part of ticket 21642; implements part of proposal 275.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - The getpid() system call is now permitted under the Linux seccomp2
- sandbox, to avoid crashing with versions of OpenSSL (and other
- libraries) that attempt to learn the process's PID by using the
- syscall rather than the VDSO code. Fixes bug 21943; bugfix
- on 0.2.5.1-alpha.
- Changes in version 0.3.0.6 - 2017-04-26
- Tor 0.3.0.6 is the first stable release of the Tor 0.3.0 series.
- With the 0.3.0 series, clients and relays now use Ed25519 keys to
- authenticate their link connections to relays, rather than the old
- RSA1024 keys that they used before. (Circuit crypto has been
- Curve25519-authenticated since 0.2.4.8-alpha.) We have also replaced
- the guard selection and replacement algorithm to behave more robustly
- in the presence of unreliable networks, and to resist guard-
- capture attacks.
- This series also includes numerous other small features and bugfixes,
- along with more groundwork for the upcoming hidden-services revamp.
- Per our stable release policy, we plan to support the Tor 0.3.0
- release series for at least the next nine months, or for three months
- after the first stable release of the 0.3.1 series: whichever is
- longer. If you need a release with long-term support, we recommend
- that you stay with the 0.2.9 series.
- Below are the changes since 0.3.0.5-rc. For a list of all changes
- since 0.2.9, see the ReleaseNotes file.
- o Minor features (geoip):
- - Update geoip and geoip6 to the April 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (control port):
- - The GETINFO extra-info/digest/<digest> command was broken because
- of a wrong base16 decode return value check, introduced when
- refactoring that API. Fixes bug 22034; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (crash prevention):
- - Fix a (currently untriggerable, but potentially dangerous) crash
- bug when base32-encoding inputs whose sizes are not a multiple of
- 5. Fixes bug 21894; bugfix on 0.2.9.1-alpha.
- Changes in version 0.3.0.5-rc - 2017-04-05
- Tor 0.3.0.5-rc fixes a few remaining bugs, large and small, in the
- 0.3.0 release series.
- This is the second release candidate in the Tor 0.3.0 series, and has
- much fewer changes than the first. If we find no new bugs or
- regressions here, the first stable 0.3.0 release will be nearly
- identical to it.
- o Major bugfixes (crash, directory connections):
- - Fix a rare crash when sending a begin cell on a circuit whose
- linked directory connection had already been closed. Fixes bug
- 21576; bugfix on 0.2.9.3-alpha. Reported by Alec Muffett.
- o Major bugfixes (guard selection):
- - Fix a guard selection bug where Tor would refuse to bootstrap in
- some cases if the user swapped a bridge for another bridge in
- their configuration file. Fixes bug 21771; bugfix on 0.3.0.1-alpha.
- Reported by "torvlnt33r".
- o Minor features (geoip):
- - Update geoip and geoip6 to the March 7 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfix (compilation):
- - Fix a warning when compiling hs_service.c. Previously, it had no
- exported symbols when compiled for libor.a, resulting in a
- compilation warning from clang. Fixes bug 21825; bugfix
- on 0.3.0.1-alpha.
- o Minor bugfixes (hidden services):
- - Make hidden services check for failed intro point connections,
- even when they have exceeded their intro point creation limit.
- Fixes bug 21596; bugfix on 0.2.7.2-alpha. Reported by Alec Muffett.
- - Make hidden services with 8 to 10 introduction points check for
- failed circuits immediately after startup. Previously, they would
- wait for 5 minutes before performing their first checks. Fixes bug
- 21594; bugfix on 0.2.3.9-alpha. Reported by Alec Muffett.
- o Minor bugfixes (memory leaks):
- - Fix a memory leak when using GETCONF on a port option. Fixes bug
- 21682; bugfix on 0.3.0.3-alpha.
- o Minor bugfixes (relay):
- - Avoid a double-marked-circuit warning that could happen when we
- receive DESTROY cells under heavy load. Fixes bug 20059; bugfix
- on 0.1.0.1-rc.
- o Minor bugfixes (tests):
- - Run the entry_guard_parse_from_state_full() test with the time set
- to a specific date. (The guard state that this test was parsing
- contained guards that had expired since the test was first
- written.) Fixes bug 21799; bugfix on 0.3.0.1-alpha.
- o Documentation:
- - Update the description of the directory server options in the
- manual page, to clarify that a relay no longer needs to set
- DirPort in order to be a directory cache. Closes ticket 21720.
- Changes in version 0.2.8.13 - 2017-03-03
- Tor 0.2.8.13 backports a security fix from later Tor
- releases. Anybody running Tor 0.2.8.12 or earlier should upgrade to this
- this release, if for some reason they cannot upgrade to a later
- release series, and if they build Tor with the --enable-expensive-hardening
- option.
- Note that support for Tor 0.2.8.x is ending next year: we will not issue
- any fixes for the Tor 0.2.8.x series after 1 Jan 2018. If you need
- a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
- o Major bugfixes (parsing, backported from 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.7.7 - 2017-03-03
- Tor 0.2.7.7 backports a number of security fixes from later Tor
- releases. Anybody running Tor 0.2.7.6 or earlier should upgrade to
- this release, if for some reason they cannot upgrade to a later
- release series.
- Note that support for Tor 0.2.7.x is ending this year: we will not issue
- any fixes for the Tor 0.2.7.x series after 1 August 2017. If you need
- a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
- o Directory authority changes (backport from 0.2.8.5-rc):
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Directory authority changes (backport from 0.2.9.2-alpha):
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Directory authority key updates (backport from 0.2.8.1-alpha):
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by "teor".
- o Major bugfixes (parsing, security, backport from 0.2.9.8):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
- - Stop a crash that could occur when a client running with DNSPort
- received a query with multiple address types, and the first
- address type was not supported. Found and fixed by Scott Dial.
- Fixes bug 18710; bugfix on 0.2.5.4-alpha.
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (key management, backport from 0.2.8.3-alpha):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (parsing, backported from 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by "teor".
- o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.6.11 - 2017-03-03
- Tor 0.2.6.11 backports a number of security fixes from later Tor
- releases. Anybody running Tor 0.2.6.10 or earlier should upgrade to
- this release, if for some reason they cannot upgrade to a later
- release series.
- Note that support for Tor 0.2.6.x is ending this year: we will not issue
- any fixes for the Tor 0.2.6.x series after 1 August 2017. If you need
- a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
- o Directory authority changes (backport from 0.2.8.5-rc):
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Directory authority changes (backport from 0.2.9.2-alpha):
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Directory authority key updates (backport from 0.2.8.1-alpha):
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by "teor".
- o Major features (security fixes, backport from 0.2.9.4-alpha):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Major bugfixes (parsing, security, backport from 0.2.9.8):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
- - Stop a crash that could occur when a client running with DNSPort
- received a query with multiple address types, and the first
- address type was not supported. Found and fixed by Scott Dial.
- Fixes bug 18710; bugfix on 0.2.5.4-alpha.
- o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
- - Fix an error that could cause us to read 4 bytes before the
- beginning of an openssl string. This bug could be used to cause
- Tor to crash on systems with unusual malloc implementations, or
- systems with unusual hardening installed. Fixes bug 17404; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (guard selection, backport from 0.2.7.6):
- - Actually look at the Guard flag when selecting a new directory
- guard. When we implemented the directory guard design, we
- accidentally started treating all relays as if they have the Guard
- flag during guard selection, leading to weaker anonymity and worse
- performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
- by Mohsen Imani.
- o Major bugfixes (key management, backport from 0.2.8.3-alpha):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (parsing, backported from 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by "teor".
- o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, backport from 0.2.7.6):
- - Fix a compilation warning with Clang 3.6: Do not check the
- presence of an address which can never be NULL. Fixes bug 17781.
- Changes in version 0.2.5.13 - 2017-03-03
- Tor 0.2.5.13 backports a number of security fixes from later Tor
- releases. Anybody running Tor 0.2.5.13 or earlier should upgrade to
- this release, if for some reason they cannot upgrade to a later
- release series.
- Note that support for Tor 0.2.5.x is ending next year: we will not issue
- any fixes for the Tor 0.2.5.x series after 1 May 2018. If you need
- a Tor release series with longer-term support, we recommend Tor 0.2.9.x.
- o Directory authority changes (backport from 0.2.8.5-rc):
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Directory authority changes (backport from 0.2.9.2-alpha):
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Directory authority key updates (backport from 0.2.8.1-alpha):
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by "teor".
- o Major features (security fixes, backport from 0.2.9.4-alpha):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Major bugfixes (parsing, security, backport from 0.2.9.8):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Major bugfixes (security, client, DNS proxy, backport from 0.2.8.3-alpha):
- - Stop a crash that could occur when a client running with DNSPort
- received a query with multiple address types, and the first
- address type was not supported. Found and fixed by Scott Dial.
- Fixes bug 18710; bugfix on 0.2.5.4-alpha.
- o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
- - Fix an error that could cause us to read 4 bytes before the
- beginning of an openssl string. This bug could be used to cause
- Tor to crash on systems with unusual malloc implementations, or
- systems with unusual hardening installed. Fixes bug 17404; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (guard selection, backport from 0.2.7.6):
- - Actually look at the Guard flag when selecting a new directory
- guard. When we implemented the directory guard design, we
- accidentally started treating all relays as if they have the Guard
- flag during guard selection, leading to weaker anonymity and worse
- performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
- by Mohsen Imani.
- o Major bugfixes (key management, backport from 0.2.8.3-alpha):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (parsing, backported from 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by "teor".
- o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, backport from 0.2.7.6):
- - Fix a compilation warning with Clang 3.6: Do not check the
- presence of an address which can never be NULL. Fixes bug 17781.
- o Minor bugfixes (crypto error-handling, backport from 0.2.7.2-alpha):
- - Check for failures from crypto_early_init, and refuse to continue.
- A previous typo meant that we could keep going with an
- uninitialized crypto library, and would have OpenSSL initialize
- its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
- when implementing ticket 4900. Patch by "teor".
- o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
- - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
- a client authorized hidden service. Fixes bug 15823; bugfix
- on 0.2.1.6-alpha.
- Changes in version 0.2.4.28 - 2017-03-03
- Tor 0.2.4.28 backports a number of security fixes from later Tor
- releases. Anybody running Tor 0.2.4.27 or earlier should upgrade to
- this release, if for some reason they cannot upgrade to a later
- release series.
- Note that support for Tor 0.2.4.x is ending soon: we will not issue
- any fixes for the Tor 0.2.4.x series after 1 August 2017. If you need
- a Tor release series with long-term support, we recommend Tor 0.2.9.x.
- o Directory authority changes (backport from 0.2.8.5-rc):
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Directory authority changes (backport from 0.2.9.2-alpha):
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Directory authority key updates (backport from 0.2.8.1-alpha):
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by "teor".
- o Major features (security fixes, backport from 0.2.9.4-alpha):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Major bugfixes (parsing, security, backport from 0.2.9.8):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Major bugfixes (security, correctness, backport from 0.2.7.4-rc):
- - Fix an error that could cause us to read 4 bytes before the
- beginning of an openssl string. This bug could be used to cause
- Tor to crash on systems with unusual malloc implementations, or
- systems with unusual hardening installed. Fixes bug 17404; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (security, pointers, backport from 0.2.8.2-alpha):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (dns proxy mode, crash, backport from 0.2.8.2-alpha):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (guard selection, backport from 0.2.7.6):
- - Actually look at the Guard flag when selecting a new directory
- guard. When we implemented the directory guard design, we
- accidentally started treating all relays as if they have the Guard
- flag during guard selection, leading to weaker anonymity and worse
- performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
- by Mohsen Imani.
- o Major bugfixes (key management, backport from 0.2.8.3-alpha):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (parsing, backported from 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (security, memory erasure, backport from 0.2.8.1-alpha):
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by "teor".
- o Minor features (bug-resistance, backport from 0.2.8.2-alpha):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- o Minor features (DoS-resistance, backport from 0.2.7.1-alpha):
- - Make it harder for attackers to overload hidden services with
- introductions, by blocking multiple introduction requests on the
- same circuit. Resolves ticket 15515.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation, backport from 0.2.7.6):
- - Fix a compilation warning with Clang 3.6: Do not check the
- presence of an address which can never be NULL. Fixes bug 17781.
- o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
- - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
- a client authorized hidden service. Fixes bug 15823; bugfix
- on 0.2.1.6-alpha.
- Changes in version 0.3.0.4-rc - 2017-03-01
- Tor 0.3.0.4-rc fixes some remaining bugs, large and small, in the
- 0.3.0 release series, and introduces a few reliability features to
- keep them from coming back.
- This is the first release candidate in the Tor 0.3.0 series. If we
- find no new bugs or regressions here, the first stable 0.3.0 release
- will be nearly identical to it.
- o Major bugfixes (bridges):
- - When the same bridge is configured multiple times with the same
- identity, but at different address:port combinations, treat those
- bridge instances as separate guards. This fix restores the ability
- of clients to configure the same bridge with multiple pluggable
- transports. Fixes bug 21027; bugfix on 0.3.0.1-alpha.
- o Major bugfixes (hidden service directory v3):
- - Stop crashing on a failed v3 hidden service descriptor lookup
- failure. Fixes bug 21471; bugfixes on tor-0.3.0.1-alpha.
- o Major bugfixes (parsing):
- - When parsing a malformed content-length field from an HTTP
- message, do not read off the end of the buffer. This bug was a
- potential remote denial-of-service attack against Tor clients and
- relays. A workaround was released in October 2016, to prevent this
- bug from crashing Tor. This is a fix for the underlying issue,
- which should no longer matter (if you applied the earlier patch).
- Fixes bug 20894; bugfix on 0.2.0.16-alpha. Bug found by fuzzing
- using AFL (http:
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor feature (protocol versioning):
- - Add new protocol version for proposal 224. HSIntro now advertises
- version "3-4" and HSDir version "1-2". Fixes ticket 20656.
- o Minor features (directory authorities):
- - Directory authorities now reject descriptors that claim to be
- malformed versions of Tor. Helps prevent exploitation of
- bug 21278.
- - Reject version numbers with components that exceed INT32_MAX.
- Otherwise 32-bit and 64-bit platforms would behave inconsistently.
- Fixes bug 21450; bugfix on 0.0.8pre1.
- - Directory authorities now reject relays running versions
- 0.2.9.1-alpha through 0.2.9.4-alpha, because those relays
- suffer from bug 20499 and don't keep their consensus cache
- up-to-date. Resolves ticket 20509.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- o Minor features (reliability, crash):
- - Try better to detect problems in buffers where they might grow (or
- think they have grown) over 2 GB in size. Diagnostic for
- bug 21369.
- o Minor features (testing):
- - During 'make test-network-all', if tor logs any warnings, ask
- chutney to output them. Requires a recent version of chutney with
- the 21572 patch. Implements 21570.
- o Minor bugfixes (certificate expiration time):
- - Avoid using link certificates that don't become valid till some
- time in the future. Fixes bug 21420; bugfix on 0.2.4.11-alpha
- o Minor bugfixes (code correctness):
- - Repair a couple of (unreachable or harmless) cases of the risky
- comparison-by-subtraction pattern that caused bug 21278.
- - Remove a redundant check for the UseEntryGuards option from the
- options_transition_affects_guards() function. Fixes bug 21492;
- bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (directory mirrors):
- - Allow relays to use directory mirrors without a DirPort: these
- relays need to be contacted over their ORPorts using a begindir
- connection. Fixes one case of bug 20711; bugfix on 0.2.8.2-alpha.
- - Clarify the message logged when a remote relay is unexpectedly
- missing an ORPort or DirPort: users were confusing this with a
- local port. Fixes another case of bug 20711; bugfix
- on 0.2.8.2-alpha.
- o Minor bugfixes (guards):
- - Don't warn about a missing guard state on timeout-measurement
- circuits: they aren't supposed to be using guards. Fixes an
- instance of bug 21007; bugfix on 0.3.0.1-alpha.
- - Silence a BUG() warning when attempting to use a guard whose
- descriptor we don't know, and make this scenario less likely to
- happen. Fixes bug 21415; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (hidden service):
- - Pass correct buffer length when encoding legacy ESTABLISH_INTRO
- cells. Previously, we were using sizeof() on a pointer, instead of
- the real destination buffer. Fortunately, that value was only used
- to double-check that there was enough room--which was already
- enforced elsewhere. Fixes bug 21553; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (testing):
- - Fix Raspbian build issues related to missing socket errno in
- test_util.c. Fixes bug 21116; bugfix on tor-0.2.8.2. Patch
- by "hein".
- - Rename "make fuzz" to "make test-fuzz-corpora", since it doesn't
- actually fuzz anything. Fixes bug 21447; bugfix on 0.3.0.3-alpha.
- - Use bash in src/test/test-network.sh. This ensures we reliably
- call chutney's newer tools/test-network.sh when available. Fixes
- bug 21562; bugfix on 0.2.9.1-alpha.
- o Documentation:
- - Small fixes to the fuzzing documentation. Closes ticket 21472.
- Changes in version 0.2.9.10 - 2017-03-01
- Tor 0.2.9.10 backports a security fix from later Tor release. It also
- includes fixes for some major issues affecting directory authorities,
- LibreSSL compatibility, and IPv6 correctness.
- The Tor 0.2.9.x release series is now marked as a long-term-support
- series. We intend to backport security fixes to 0.2.9.x until at
- least January of 2020.
- o Major bugfixes (directory authority, 0.3.0.3-alpha):
- - During voting, when marking a relay as a probable sybil, do not
- clear its BadExit flag: sybils can still be bad in other ways
- too. (We still clear the other flags.) Fixes bug 21108; bugfix
- on 0.2.0.13-alpha.
- o Major bugfixes (IPv6 Exits, backport from 0.3.0.3-alpha):
- - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
- any IPv6 addresses. Instead, only reject a port over IPv6 if the
- exit policy rejects that port on more than an IPv6 /16 of
- addresses. This bug was made worse by 17027 in 0.2.8.1-alpha,
- which rejected a relay's own IPv6 address by default. Fixes bug
- 21357; bugfix on commit 004f3f4e53 in 0.2.4.7-alpha.
- o Major bugfixes (parsing, also in 0.3.0.4-rc):
- - Fix an integer underflow bug when comparing malformed Tor
- versions. This bug could crash Tor when built with
- --enable-expensive-hardening, or on Tor 0.2.9.1-alpha through Tor
- 0.2.9.8, which were built with -ftrapv by default. In other cases
- it was harmless. Part of TROVE-2017-001. Fixes bug 21278; bugfix
- on 0.0.8pre1. Found by OSS-Fuzz.
- o Minor features (directory authorities, also in 0.3.0.4-rc):
- - Directory authorities now reject descriptors that claim to be
- malformed versions of Tor. Helps prevent exploitation of
- bug 21278.
- - Reject version numbers with components that exceed INT32_MAX.
- Otherwise 32-bit and 64-bit platforms would behave inconsistently.
- Fixes bug 21450; bugfix on 0.0.8pre1.
- o Minor features (geoip):
- - Update geoip and geoip6 to the February 8 2017 Maxmind GeoLite2
- Country database.
- o Minor features (portability, compilation, backport from 0.3.0.3-alpha):
- - Autoconf now checks to determine if OpenSSL structures are opaque,
- instead of explicitly checking for OpenSSL version numbers. Part
- of ticket 21359.
- - Support building with recent LibreSSL code that uses opaque
- structures. Closes ticket 21359.
- o Minor bugfixes (code correctness, also in 0.3.0.4-rc):
- - Repair a couple of (unreachable or harmless) cases of the risky
- comparison-by-subtraction pattern that caused bug 21278.
- o Minor bugfixes (tor-resolve, backport from 0.3.0.3-alpha):
- - The tor-resolve command line tool now rejects hostnames over 255
- characters in length. Previously, it would silently truncate them,
- which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
- Patch by "junglefowl".
- Changes in version 0.3.0.3-alpha - 2017-02-03
- Tor 0.3.0.3-alpha fixes a few significant bugs introduced over the
- 0.3.0.x development series, including some that could cause
- authorities to behave badly. There is also a fix for a longstanding
- bug that could prevent IPv6 exits from working. Tor 0.3.0.3-alpha also
- includes some smaller features and bugfixes.
- The Tor 0.3.0.x release series is now in patch-freeze: no additional
- features will be considered for inclusion in 0.3.0.x. We suspect that
- some bugs will probably remain, however, and we encourage people to
- test this release.
- o Major bugfixes (directory authority):
- - During voting, when marking a relay as a probable sybil, do not
- clear its BadExit flag: sybils can still be bad in other ways
- too. (We still clear the other flags.) Fixes bug 21108; bugfix
- on 0.2.0.13-alpha.
- - When deciding whether we have just found a router to be reachable,
- do not penalize it for not having performed an Ed25519 link
- handshake if it does not claim to support an Ed25519 handshake.
- Previously, we would treat such relays as non-running. Fixes bug
- 21107; bugfix on 0.3.0.1-alpha.
- o Major bugfixes (entry guards):
- - Stop trying to build circuits through entry guards for which we
- have no descriptor. Also, stop crashing in the case that we *do*
- accidentally try to build a circuit in such a state. Fixes bug
- 21242; bugfix on 0.3.0.1-alpha.
- o Major bugfixes (IPv6 Exits):
- - Stop rejecting all IPv6 traffic on Exits whose exit policy rejects
- any IPv6 addresses. Instead, only reject a port over IPv6 if the
- exit policy rejects that port on more than an IPv6 /16 of
- addresses. This bug was made worse by 17027 in 0.2.8.1-alpha,
- which rejected a relay's own IPv6 address by default. Fixes bug
- 21357; bugfix on commit 004f3f4e53 in 0.2.4.7-alpha.
- o Minor feature (client):
- - Enable IPv6 traffic on the SocksPort by default. To disable this,
- a user will have to specify "NoIPv6Traffic". Closes ticket 21269.
- o Minor feature (fallback scripts):
- - Add a check_existing mode to updateFallbackDirs.py, which checks
- if fallbacks in the hard-coded list are working. Closes ticket
- 20174. Patch by haxxpop.
- o Minor features (ciphersuite selection):
- - Clients now advertise a list of ciphersuites closer to the ones
- preferred by Firefox. Closes part of ticket 15426.
- - Allow relays to accept a wider range of ciphersuites, including
- chacha20-poly1305 and AES-CCM. Closes the other part of 15426.
- o Minor features (controller, configuration):
- - Each of the *Port options, such as SocksPort, ORPort, ControlPort,
- and so on, now comes with a __*Port variant that will not be saved
- to the torrc file by the controller's SAVECONF command. This
- change allows TorBrowser to set up a single-use domain socket for
- each time it launches Tor. Closes ticket 20956.
- - The GETCONF command can now query options that may only be
- meaningful in context-sensitive lists. This allows the controller
- to query the mixed SocksPort/__SocksPort style options introduced
- in feature 20956. Implements ticket 21300.
- o Minor features (portability, compilation):
- - Autoconf now checks to determine if OpenSSL structures are opaque,
- instead of explicitly checking for OpenSSL version numbers. Part
- of ticket 21359.
- - Support building with recent LibreSSL code that uses opaque
- structures. Closes ticket 21359.
- o Minor features (relay):
- - We now allow separation of exit and relay traffic to different
- source IP addresses, using the OutboundBindAddressExit and
- OutboundBindAddressOR options respectively. Closes ticket 17975.
- Written by Michael Sonntag.
- o Minor bugfix (logging):
- - Don't recommend the use of Tor2web in non-anonymous mode.
- Recommending Tor2web is a bad idea because the client loses all
- anonymity. Tor2web should only be used in specific cases by users
- who *know* and understand the issues. Fixes bug 21294; bugfix
- on 0.2.9.3-alpha.
- o Minor bugfixes (client):
- - Always recover from failures in extend_info_from_node(), in an
- attempt to prevent any recurrence of bug 21242. Fixes bug 21372;
- bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (client, entry guards):
- - Fix a bug warning (with backtrace) when we fail a channel that
- circuits to fallback directories on it. Fixes bug 21128; bugfix
- on 0.3.0.1-alpha.
- - Fix a spurious bug warning (with backtrace) when removing an
- expired entry guard. Fixes bug 21129; bugfix on 0.3.0.1-alpha.
- - Fix a bug of the new guard algorithm where tor could stall for up
- to 10 minutes before retrying a guard after a long period of no
- network. Fixes bug 21052; bugfix on 0.3.0.1-alpha.
- - Do not try to build circuits until we have descriptors for our
- primary entry guards. Related to fix for bug 21242.
- o Minor bugfixes (configure, autoconf):
- - Rename the configure option --enable-expensive-hardening to
- --enable-fragile-hardening. Expensive hardening makes the tor
- daemon abort when some kinds of issues are detected. Thus, it
- makes tor more at risk of remote crashes but safer against RCE or
- heartbleed bug category. We now try to explain this issue in a
- message from the configure script. Fixes bug 21290; bugfix
- on 0.2.5.4-alpha.
- o Minor bugfixes (controller):
- - Restore the (deprecated) DROPGUARDS controller command. Fixes bug
- 20824; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (hidden service):
- - Clean up the code for expiring intro points with no associated
- circuits. It was causing, rarely, a service with some expiring
- introduction points to not open enough additional introduction
- points. Fixes part of bug 21302; bugfix on 0.2.7.2-alpha.
- - Stop setting the torrc option HiddenServiceStatistics to "0" just
- because we're not a bridge or relay. Instead, we preserve whatever
- value the user set (or didn't set). Fixes bug 21150; bugfix
- on 0.2.6.2-alpha.
- - Resolve two possible underflows which could lead to creating and
- closing a lot of introduction point circuits in a non-stop loop.
- Fixes bug 21302; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (portability):
- - Use "OpenBSD" compiler macro instead of "OPENBSD" or "__OpenBSD__".
- It is supported by OpenBSD itself, and also by most OpenBSD
- variants (such as Bitrig). Fixes bug 20980; bugfix
- on 0.1.2.1-alpha.
- - When mapping a file of length greater than SIZE_MAX, do not
- silently truncate its contents. This issue could occur on 32 bit
- systems with large file support and files which are larger than 4
- GB. Fixes bug 21134; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (tor-resolve):
- - The tor-resolve command line tool now rejects hostnames over 255
- characters in length. Previously, it would silently truncate them,
- which could lead to bugs. Fixes bug 21280; bugfix on 0.0.9pre5.
- Patch by "junglefowl".
- o Minor bugfixes (Windows services):
- - Be sure to initialize the monotonic time subsystem before using
- it, even when running as an NT service. Fixes bug 21356; bugfix
- on 0.2.9.1-alpha.
- Changes in version 0.3.0.2-alpha - 2017-01-23
- Tor 0.3.0.2-alpha fixes a denial-of-service bug where an attacker could
- cause relays and clients to crash, even if they were not built with
- the --enable-expensive-hardening option. This bug affects all 0.2.9.x
- versions, and also affects 0.3.0.1-alpha: all relays running an affected
- version should upgrade.
- Tor 0.3.0.2-alpha also improves how exit relays and clients handle DNS
- time-to-live values, makes directory authorities enforce the 1-to-1
- mapping of relay RSA identity keys to ED25519 identity keys, fixes a
- client-side onion service reachability bug, does better at selecting
- the set of fallback directories, and more.
- o Major bugfixes (security, also in 0.2.9.9):
- - Downgrade the "-ftrapv" option from "always on" to "only on when
- --enable-expensive-hardening is provided." This hardening option, like
- others, can turn survivable bugs into crashes--and having it on by
- default made a (relatively harmless) integer overflow bug into a
- denial-of-service bug. Fixes bug 21278 (TROVE-2017-001); bugfix on
- 0.2.9.1-alpha.
- o Major features (security):
- - Change the algorithm used to decide DNS TTLs on client and server
- side, to better resist DNS-based correlation attacks like the
- DefecTor attack of Greschbach, Pulls, Roberts, Winter, and
- Feamster. Now relays only return one of two possible DNS TTL
- values, and clients are willing to believe DNS TTL values up to 3
- hours long. Closes ticket 19769.
- o Major features (directory authority, security):
- - The default for AuthDirPinKeys is now 1: directory authorities
- will reject relays where the RSA identity key matches a previously
- seen value, but the Ed25519 key has changed. Closes ticket 18319.
- o Major bugfixes (client, guard, crash):
- - In circuit_get_global_origin_list(), return the actual list of
- origin circuits. The previous version of this code returned the
- list of all the circuits, and could have caused strange bugs,
- including possible crashes. Fixes bug 21118; bugfix
- on 0.3.0.1-alpha.
- o Major bugfixes (client, onion service, also in 0.2.9.9):
- - Fix a client-side onion service reachability bug, where multiple
- socks requests to an onion service (or a single slow request)
- could cause us to mistakenly mark some of the service's
- introduction points as failed, and we cache that failure so
- eventually we run out and can't reach the service. Also resolves a
- mysterious "Remote server sent bogus reason code 65021" log
- warning. The bug was introduced in ticket 17218, where we tried to
- remember the circuit end reason as a uint16_t, which mangled
- negative values. Partially fixes bug 21056 and fixes bug 20307;
- bugfix on 0.2.8.1-alpha.
- o Major bugfixes (DNS):
- - Fix a bug that prevented exit nodes from caching DNS records for
- more than 60 seconds. Fixes bug 19025; bugfix on 0.2.4.7-alpha.
- o Minor features (controller):
- - Add "GETINFO sr/current" and "GETINFO sr/previous" keys, to expose
- shared-random values to the controller. Closes ticket 19925.
- o Minor features (entry guards):
- - Add UseEntryGuards to TEST_OPTIONS_DEFAULT_VALUES in order to not
- break regression tests.
- - Require UseEntryGuards when UseBridges is set, in order to make
- sure bridges aren't bypassed. Resolves ticket 20502.
- o Minor features (fallback directories):
- - Select 200 fallback directories for each release. Closes
- ticket 20881.
- - Allow 3 fallback relays per operator, which is safe now that we
- are choosing 200 fallback relays. Closes ticket 20912.
- - Exclude relays affected by bug 20499 from the fallback list.
- Exclude relays from the fallback list if they are running versions
- known to be affected by bug 20499, or if in our tests they deliver
- a stale consensus (i.e. one that expired more than 24 hours ago).
- Closes ticket 20539.
- - Reduce the minimum fallback bandwidth to 1 MByte/s. Part of
- ticket 18828.
- - Require fallback directories to have the same address and port for
- 7 days (now that we have enough relays with this stability).
- Relays whose OnionOO stability timer is reset on restart by bug
- 18050 should upgrade to Tor 0.2.8.7 or later, which has a fix for
- this issue. Closes ticket 20880; maintains short-term fix
- in 0.2.8.2-alpha.
- - Require fallbacks to have flags for 90% of the time (weighted
- decaying average), rather than 95%. This allows at least 73% of
- clients to bootstrap in the first 5 seconds without contacting an
- authority. Part of ticket 18828.
- - Annotate updateFallbackDirs.py with the bandwidth and consensus
- weight for each candidate fallback. Closes ticket 20878.
- - Make it easier to change the output sort order of fallbacks.
- Closes ticket 20822.
- - Display the relay fingerprint when downloading consensuses from
- fallbacks. Closes ticket 20908.
- o Minor features (geoip, also in 0.2.9.9):
- - Update geoip and geoip6 to the January 4 2017 Maxmind GeoLite2
- Country database.
- o Minor features (next-gen onion service directories):
- - Remove the "EnableOnionServicesV3" consensus parameter that we
- introduced in 0.3.0.1-alpha: relays are now always willing to act
- as v3 onion service directories. Resolves ticket 19899.
- o Minor features (linting):
- - Enhance the changes file linter to warn on Tor versions that are
- prefixed with "tor-". Closes ticket 21096.
- o Minor features (logging):
- - In several places, describe unset ed25519 keys as "<unset>",
- rather than the scary "AAAAAAAA...AAA". Closes ticket 21037.
- o Minor bugfix (control protocol):
- - The reply to a "GETINFO config/names" request via the control
- protocol now spells the type "Dependent" correctly. This is a
- breaking change in the control protocol. (The field seems to be
- ignored by the most common known controllers.) Fixes bug 18146;
- bugfix on 0.1.1.4-alpha.
- o Minor bugfixes (bug resilience):
- - Fix an unreachable size_t overflow in base64_decode(). Fixes bug
- 19222; bugfix on 0.2.0.9-alpha. Found by Guido Vranken; fixed by
- Hans Jerry Illikainen.
- o Minor bugfixes (build):
- - Replace obsolete Autoconf macros with their modern equivalent and
- prevent similar issues in the future. Fixes bug 20990; bugfix
- on 0.1.0.1-rc.
- o Minor bugfixes (client, guards):
- - Fix bug where Tor would think that there are circuits waiting for
- better guards even though those circuits have been freed. Fixes
- bug 21142; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (config):
- - Don't assert on startup when trying to get the options list and
- LearnCircuitBuildTimeout is set to 0: we are currently parsing the
- options so of course they aren't ready yet. Fixes bug 21062;
- bugfix on 0.2.9.3-alpha.
- o Minor bugfixes (controller):
- - Make the GETINFO interface for inquiring about entry guards
- support the new guards backend. Fixes bug 20823; bugfix
- on 0.3.0.1-alpha.
- o Minor bugfixes (dead code):
- - Remove a redundant check for PidFile changes at runtime in
- options_transition_allowed(): this check is already performed
- regardless of whether the sandbox is active. Fixes bug 21123;
- bugfix on 0.2.5.4-alpha.
- o Minor bugfixes (documentation):
- - Update the tor manual page to document every option that can not
- be changed while tor is running. Fixes bug 21122.
- o Minor bugfixes (fallback directories):
- - Stop failing when a relay has no uptime data in
- updateFallbackDirs.py. Fixes bug 20945; bugfix on 0.2.8.1-alpha.
- - Avoid checking fallback candidates' DirPorts if they are down in
- OnionOO. When a relay operator has multiple relays, this
- prioritizes relays that are up over relays that are down. Fixes
- bug 20926; bugfix on 0.2.8.3-alpha.
- - Stop failing when OUTPUT_COMMENTS is True in updateFallbackDirs.py.
- Fixes bug 20877; bugfix on 0.2.8.3-alpha.
- o Minor bugfixes (guards, bootstrapping):
- - When connecting to a directory guard during bootstrap, do not mark
- the guard as successful until we receive a good-looking directory
- response from it. Fixes bug 20974; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (onion services):
- - Fix the config reload pruning of old vs new services so it
- actually works when both ephemeral and non-ephemeral services are
- configured. Fixes bug 21054; bugfix on 0.3.0.1-alpha.
- - Allow the number of introduction points to be as low as 0, rather
- than as low as 3. Fixes bug 21033; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (IPv6):
- - Make IPv6-using clients try harder to find an IPv6 directory
- server. Fixes bug 20999; bugfix on 0.2.8.2-alpha.
- - When IPv6 addresses have not been downloaded yet (microdesc
- consensus documents don't list relay IPv6 addresses), use hard-
- coded addresses for authorities, fallbacks, and configured
- bridges. Now IPv6-only clients can use microdescriptors. Fixes bug
- 20996; bugfix on b167e82 from 19608 in 0.2.8.5-alpha.
- o Minor bugfixes (memory leaks):
- - Fix a memory leak when configuring hidden services. Fixes bug
- 20987; bugfix on 0.3.0.1-alpha.
- o Minor bugfixes (portability, also in 0.2.9.9):
- - Avoid crashing when Tor is built using headers that contain
- CLOCK_MONOTONIC_COARSE, but then tries to run on an older kernel
- without CLOCK_MONOTONIC_COARSE. Fixes bug 21035; bugfix
- on 0.2.9.1-alpha.
- - Fix Libevent detection on platforms without Libevent 1 headers
- installed. Fixes bug 21051; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (relay):
- - Honor DataDirectoryGroupReadable when tor is a relay. Previously,
- initializing the keys would reset the DataDirectory to 0700
- instead of 0750 even if DataDirectoryGroupReadable was set to 1.
- Fixes bug 19953; bugfix on 0.0.2pre16. Patch by "redfish".
- o Minor bugfixes (testing):
- - Remove undefined behavior from the backtrace generator by removing
- its signal handler. Fixes bug 21026; bugfix on 0.2.5.2-alpha.
- o Minor bugfixes (unit tests):
- - Allow the unit tests to pass even when DNS lookups of bogus
- addresses do not fail as expected. Fixes bug 20862 and 20863;
- bugfix on unit tests introduced in 0.2.8.1-alpha
- through 0.2.9.4-alpha.
- o Code simplification and refactoring:
- - Refactor code to manipulate global_origin_circuit_list into
- separate functions. Closes ticket 20921.
- o Documentation (formatting):
- - Clean up formatting of tor.1 man page and HTML doc, where <pre>
- blocks were incorrectly appearing. Closes ticket 20885.
- o Documentation (man page):
- - Clarify many options in tor.1 and add some min/max values for
- HiddenService options. Closes ticket 21058.
- Changes in version 0.2.9.9 - 2017-01-23
- Tor 0.2.9.9 fixes a denial-of-service bug where an attacker could
- cause relays and clients to crash, even if they were not built with
- the --enable-expensive-hardening option. This bug affects all 0.2.9.x
- versions, and also affects 0.3.0.1-alpha: all relays running an affected
- version should upgrade.
- This release also resolves a client-side onion service reachability
- bug, and resolves a pair of small portability issues.
- o Major bugfixes (security):
- - Downgrade the "-ftrapv" option from "always on" to "only on when
- --enable-expensive-hardening is provided." This hardening option,
- like others, can turn survivable bugs into crashes -- and having
- it on by default made a (relatively harmless) integer overflow bug
- into a denial-of-service bug. Fixes bug 21278 (TROVE-2017-001);
- bugfix on 0.2.9.1-alpha.
- o Major bugfixes (client, onion service):
- - Fix a client-side onion service reachability bug, where multiple
- socks requests to an onion service (or a single slow request)
- could cause us to mistakenly mark some of the service's
- introduction points as failed, and we cache that failure so
- eventually we run out and can't reach the service. Also resolves a
- mysterious "Remote server sent bogus reason code 65021" log
- warning. The bug was introduced in ticket 17218, where we tried to
- remember the circuit end reason as a uint16_t, which mangled
- negative values. Partially fixes bug 21056 and fixes bug 20307;
- bugfix on 0.2.8.1-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the January 4 2017 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (portability):
- - Avoid crashing when Tor is built using headers that contain
- CLOCK_MONOTONIC_COARSE, but then tries to run on an older kernel
- without CLOCK_MONOTONIC_COARSE. Fixes bug 21035; bugfix
- on 0.2.9.1-alpha.
- - Fix Libevent detection on platforms without Libevent 1 headers
- installed. Fixes bug 21051; bugfix on 0.2.9.1-alpha.
- Changes in version 0.3.0.1-alpha - 2016-12-19
- Tor 0.3.0.1-alpha is the first alpha release in the 0.3.0 development
- series. It strengthens Tor's link and circuit handshakes by
- identifying relays by their Ed25519 keys, improves the algorithm that
- clients use to choose and maintain their list of guards, and includes
- additional backend support for the next-generation hidden service
- design. It also contains numerous other small features and
- improvements to security, correctness, and performance.
- Below are the changes since 0.2.9.8.
- o Major features (guard selection algorithm):
- - Tor's guard selection algorithm has been redesigned from the
- ground up, to better support unreliable networks and restrictive
- sets of entry nodes, and to better resist guard-capture attacks by
- hostile local networks. Implements proposal 271; closes
- ticket 19877.
- o Major features (next-generation hidden services):
- - Relays can now handle v3 ESTABLISH_INTRO cells as specified by
- prop224 aka "Next Generation Hidden Services". Service and clients
- don't use this functionality yet. Closes ticket 19043. Based on
- initial code by Alec Heifetz.
- - Relays now support the HSDir version 3 protocol, so that they can
- can store and serve v3 descriptors. This is part of the next-
- generation onion service work detailed in proposal 224. Closes
- ticket 17238.
- o Major features (protocol, ed25519 identity keys):
- - Relays now use Ed25519 to prove their Ed25519 identities and to
- one another, and to clients. This algorithm is faster and more
- secure than the RSA-based handshake we've been doing until now.
- Implements the second big part of proposal 220; Closes
- ticket 15055.
- - Clients now support including Ed25519 identity keys in the EXTEND2
- cells they generate. By default, this is controlled by a consensus
- parameter, currently disabled. You can turn this feature on for
- testing by setting ExtendByEd25519ID in your configuration. This
- might make your traffic appear different than the traffic
- generated by other users, however. Implements part of ticket
- 15056; part of proposal 220.
- - Relays now understand requests to extend to other relays by their
- Ed25519 identity keys. When an Ed25519 identity key is included in
- an EXTEND2 cell, the relay will only extend the circuit if the
- other relay can prove ownership of that identity. Implements part
- of ticket 15056; part of proposal 220.
- o Major bugfixes (scheduler):
- - Actually compare circuit policies in ewma_cmp_cmux(). This bug
- caused the channel scheduler to behave more or less randomly,
- rather than preferring channels with higher-priority circuits.
- Fixes bug 20459; bugfix on 0.2.6.2-alpha.
- o Minor features (controller):
- - When HSFETCH arguments cannot be parsed, say "Invalid argument"
- rather than "unrecognized." Closes ticket 20389; patch from
- Ivan Markin.
- o Minor features (diagnostic, directory client):
- - Warn when we find an unexpected inconsistency in directory
- download status objects. Prevents some negative consequences of
- bug 20593.
- o Minor features (directory authority):
- - Add a new authority-only AuthDirTestEd25519LinkKeys option (on by
- default) to control whether authorities should try to probe relays
- by their Ed25519 link keys. This option will go away in a few
- releases--unless we encounter major trouble in our ed25519 link
- protocol rollout, in which case it will serve as a safety option.
- o Minor features (directory cache):
- - Relays and bridges will now refuse to serve the consensus they
- have if they know it is too old for a client to use. Closes
- ticket 20511.
- o Minor features (ed25519 link handshake):
- - Advertise support for the ed25519 link handshake using the
- subprotocol-versions mechanism, so that clients can tell which
- relays can identity themselves by Ed25519 ID. Closes ticket 20552.
- o Minor features (fingerprinting resistance, authentication):
- - Extend the length of RSA keys used for TLS link authentication to
- 2048 bits. (These weren't used for forward secrecy; for forward
- secrecy, we used P256.) Closes ticket 13752.
- o Minor features (infrastructure):
- - Implement smartlist_add_strdup() function. Replaces the use of
- smartlist_add(sl, tor_strdup(str)). Closes ticket 20048.
- o Minor bugfixes (client):
- - When clients that use bridges start up with a cached consensus on
- disk, they were ignoring it and downloading a new one. Now they
- use the cached one. Fixes bug 20269; bugfix on 0.2.3.12-alpha.
- o Minor bugfixes (configuration):
- - Accept non-space whitespace characters after the severity level in
- the `Log` option. Fixes bug 19965; bugfix on 0.2.1.1-alpha.
- - Support "TByte" and "TBytes" units in options given in bytes.
- "TB", "terabyte(s)", "TBit(s)" and "terabit(s)" were already
- supported. Fixes bug 20622; bugfix on 0.2.0.14-alpha.
- o Minor bugfixes (consensus weight):
- - Add new consensus method that initializes bw weights to 1 instead
- of 0. This prevents a zero weight from making it all the way to
- the end (happens in small testing networks) and causing an error.
- Fixes bug 14881; bugfix on 0.2.2.17-alpha.
- o Minor bugfixes (descriptors):
- - Correctly recognise downloaded full descriptors as valid, even
- when using microdescriptors as circuits. This affects clients with
- FetchUselessDescriptors set, and may affect directory authorities.
- Fixes bug 20839; bugfix on 0.2.3.2-alpha.
- o Minor bugfixes (directory system):
- - Download all consensus flavors, descriptors, and authority
- certificates when FetchUselessDescriptors is set, regardless of
- whether tor is a directory cache or not. Fixes bug 20667; bugfix
- on all recent tor versions.
- - Bridges and relays now use microdescriptors (like clients do)
- rather than old-style router descriptors. Now bridges will blend
- in with clients in terms of the circuits they build. Fixes bug
- 6769; bugfix on 0.2.3.2-alpha.
- o Minor bugfixes (ed25519 certificates):
- - Correctly interpret ed25519 certificates that would expire some
- time after 19 Jan 2038. Fixes bug 20027; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (hidden services):
- - Stop ignoring misconfigured hidden services. Instead, refuse to
- start tor until the misconfigurations have been corrected. Fixes
- bug 20559; bugfix on multiple commits in 0.2.7.1-alpha
- and earlier.
- o Minor bugfixes (memory leak at exit):
- - Fix a small harmless memory leak at exit of the previously unused
- RSA->Ed identity cross-certificate. Fixes bug 17779; bugfix
- on 0.2.7.2-alpha.
- o Minor bugfixes (util):
- - When finishing writing a file to disk, if we were about to replace
- the file with the temporary file created before and we fail to
- replace it, remove the temporary file so it doesn't stay on disk.
- Fixes bug 20646; bugfix on tor-0.2.0.7-alpha. Patch by fk.
- o Minor bugfixes (Windows):
- - Check for getpagesize before using it to mmap files. This fixes
- compilation in some MinGW environments. Fixes bug 20530; bugfix on
- 0.1.2.1-alpha. Reported by "ice".
- o Code simplification and refactoring:
- - Abolish all global guard context in entrynodes.c; replace with new
- guard_selection_t structure as preparation for proposal 271.
- Closes ticket 19858.
- - Introduce rend_service_is_ephemeral() that tells if given onion
- service is ephemeral. Replace unclear NULL-checkings for service
- directory with this function. Closes ticket 20526.
- - Extract magic numbers in circuituse.c into defined variables.
- - Refactor circuit_is_available_for_use to remove unnecessary check.
- - Refactor circuit_predict_and_launch_new for readability and
- testability. Closes ticket 18873.
- - Refactor large if statement in purpose_needs_anonymity to use
- switch statement instead. Closes part of ticket 20077.
- - Refactor the hashing API to return negative values for errors, as
- is done as throughout the codebase. Closes ticket 20717.
- - Remove data structures that were used to index or_connection
- objects by their RSA identity digests. These structures are fully
- redundant with the similar structures used in the
- channel abstraction.
- - Remove duplicate code in the channel_write_*cell() functions.
- Closes ticket 13827; patch from Pingl.
- - Remove redundant behavior of is_sensitive_dir_purpose, refactor to
- use only purpose_needs_anonymity. Closes part of ticket 20077.
- - The code to generate and parse EXTEND and EXTEND2 cells has been
- replaced with code automatically generated by the
- "trunnel" utility.
- o Documentation:
- - Include the "TBits" unit in Tor's man page. Fixes part of bug
- 20622; bugfix on tor-0.2.5.1-alpha.
- - Change '1' to 'weight_scale' in consensus bw weights calculation
- comments, as that is reality. Closes ticket 20273. Patch
- from pastly.
- - Correct the value for AuthDirGuardBWGuarantee in the manpage, from
- 250 KBytes to 2 MBytes. Fixes bug 20435; bugfix
- on tor-0.2.5.6-alpha.
- - Stop the man page from incorrectly stating that HiddenServiceDir
- must already exist. Fixes 20486.
- - Clarify that when ClientRejectInternalAddresses is enabled (which
- is the default), multicast DNS hostnames for machines on the local
- network (of the form *.local) are also rejected. Closes
- ticket 17070.
- o Removed features:
- - The AuthDirMaxServersPerAuthAddr option no longer exists: The same
- limit for relays running on a single IP applies to authority IP
- addresses as well as to non-authority IP addresses. Closes
- ticket 20960.
- - The UseDirectoryGuards torrc option no longer exists: all users
- that use entry guards will also use directory guards. Related to
- proposal 271; implements part of ticket 20831.
- o Testing:
- - New unit tests for tor_htonll(). Closes ticket 19563. Patch
- from "overcaffeinated".
- - Perform the coding style checks when running the tests and fail
- when coding style violations are found. Closes ticket 5500.
- - Add tests for networkstatus_compute_bw_weights_v10.
- - Add unit tests circuit_predict_and_launch_new.
- - Extract dummy_origin_circuit_new so it can be used by other
- test functions.
- Changes in version 0.2.8.12 - 2016-12-19
- Tor 0.2.8.12 backports a fix for a medium-severity issue (bug 21018
- below) where Tor clients could crash when attempting to visit a
- hostile hidden service. Clients are recommended to upgrade as packages
- become available for their systems.
- It also includes an updated list of fallback directories, backported
- from 0.2.9.
- Now that the Tor 0.2.9 series is stable, only major bugfixes will be
- backported to 0.2.8 in the future.
- o Major bugfixes (parsing, security, backported from 0.2.9.8):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Minor features (fallback directory list, backported from 0.2.9.8):
- - Replace the 81 remaining fallbacks of the 100 originally
- introduced in Tor 0.2.8.3-alpha in March 2016, with a list of 177
- fallbacks (123 new, 54 existing, 27 removed) generated in December
- 2016. Resolves ticket 20170.
- o Minor features (geoip, backported from 0.2.9.7-rc):
- - Update geoip and geoip6 to the December 7 2016 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.9.8 - 2016-12-19
- Tor 0.2.9.8 is the first stable release of the Tor 0.2.9 series.
- The Tor 0.2.9 series makes mandatory a number of security features
- that were formerly optional. It includes support for a new shared-
- randomness protocol that will form the basis for next generation
- hidden services, includes a single-hop hidden service mode for
- optimizing .onion services that don't actually want to be hidden,
- tries harder not to overload the directory authorities with excessive
- downloads, and supports a better protocol versioning scheme for
- improved compatibility with other implementations of the Tor protocol.
- And of course, there are numerous other bugfixes and improvements.
- This release also includes a fix for a medium-severity issue (bug
- 21018 below) where Tor clients could crash when attempting to visit a
- hostile hidden service. Clients are recommended to upgrade as packages
- become available for their systems.
- Below are the changes since 0.2.9.7-rc. For a list of all changes
- since 0.2.8, see the ReleaseNotes file.
- o Major bugfixes (parsing, security):
- - Fix a bug in parsing that could cause clients to read a single
- byte past the end of an allocated region. This bug could be used
- to cause hardened clients (built with --enable-expensive-hardening)
- to crash if they tried to visit a hostile hidden service. Non-
- hardened clients are only affected depending on the details of
- their platform's memory allocator. Fixes bug 21018; bugfix on
- 0.2.0.8-alpha. Found by using libFuzzer. Also tracked as TROVE-
- 2016-12-002 and as CVE-2016-1254.
- o Minor features (fallback directory list):
- - Replace the 81 remaining fallbacks of the 100 originally
- introduced in Tor 0.2.8.3-alpha in March 2016, with a list of 177
- fallbacks (123 new, 54 existing, 27 removed) generated in December
- 2016. Resolves ticket 20170.
- Changes in version 0.2.9.7-rc - 2016-12-12
- Tor 0.2.9.7-rc fixes a few small bugs remaining in Tor 0.2.9.6-rc,
- including a few that had prevented tests from passing on
- some platforms.
- o Minor features (geoip):
- - Update geoip and geoip6 to the December 7 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfix (build):
- - The current Git revision when building from a local repository is
- now detected correctly when using git worktrees. Fixes bug 20492;
- bugfix on 0.2.3.9-alpha.
- o Minor bugfixes (directory authority):
- - When computing old Tor protocol line version in protover, we were
- looking at 0.2.7.5 twice instead of a specific case for
- 0.2.9.1-alpha. Fixes bug 20810; bugfix on 0.2.9.4-alpha.
- o Minor bugfixes (download scheduling):
- - Resolve a "bug" warning when considering a download schedule whose
- delay had approached INT_MAX. Fixes 20875; bugfix on 0.2.9.5-alpha.
- o Minor bugfixes (logging):
- - Downgrade a harmless log message about the
- pending_entry_connections list from "warn" to "info". Mitigates
- bug 19926.
- o Minor bugfixes (memory leak):
- - Fix a small memory leak when receiving AF_UNIX connections on a
- SocksPort. Fixes bug 20716; bugfix on 0.2.6.3-alpha.
- - When moving a signed descriptor object from a source to an
- existing destination, free the allocated memory inside that
- destination object. Fixes bug 20715; bugfix on 0.2.8.3-alpha.
- o Minor bugfixes (memory leak, use-after-free, linux seccomp2 sandbox):
- - Fix a memory leak and use-after-free error when removing entries
- from the sandbox's getaddrinfo() cache. Fixes bug 20710; bugfix on
- 0.2.5.5-alpha. Patch from "cypherpunks".
- o Minor bugfixes (portability):
- - Use the correct spelling of MAC_OS_X_VERSION_10_12 on configure.ac
- Fixes bug 20935; bugfix on 0.2.9.6-rc.
- o Minor bugfixes (unit tests):
- - Stop expecting NetBSD unit tests to report success for ipfw. Part
- of a fix for bug 19960; bugfix on 0.2.9.5-alpha.
- - Fix tolerances in unit tests for monotonic time comparisons
- between nanoseconds and microseconds. Previously, we accepted a 10
- us difference only, which is not realistic on every platform's
- clock_gettime(). Fixes bug 19974; bugfix on 0.2.9.1-alpha.
- - Remove a double-free in the single onion service unit test. Stop
- ignoring a return value. Make future changes less error-prone.
- Fixes bug 20864; bugfix on 0.2.9.6-rc.
- Changes in version 0.2.8.11 - 2016-12-08
- Tor 0.2.8.11 backports fixes for additional portability issues that
- could prevent Tor from building correctly on OSX Sierra, or with
- OpenSSL 1.1. Affected users should upgrade; others can safely stay
- with 0.2.8.10.
- o Minor bugfixes (portability):
- - Avoid compilation errors when building on OSX Sierra. Sierra began
- to support the getentropy() and clock_gettime() APIs, but created
- a few problems in doing so. Tor 0.2.9 has a more thorough set of
- workarounds; in 0.2.8, we are just using the /dev/urandom and mach
- monotonic time interfaces. Fixes bug 20865. Bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (portability, backport from 0.2.9.5-alpha):
- - Fix compilation with OpenSSL 1.1 and less commonly-used CPU
- architectures. Closes ticket 20588.
- Changes in version 0.2.8.10 - 2016-12-02
- Tor 0.2.8.10 backports a fix for a bug that would sometimes make clients
- unusable after they left standby mode. It also backports fixes for
- a few portability issues and a small but problematic memory leak.
- o Major bugfixes (client reliability, backport from 0.2.9.5-alpha):
- - When Tor leaves standby because of a new application request, open
- circuits as needed to serve that request. Previously, we would
- potentially wait a very long time. Fixes part of bug 19969; bugfix
- on 0.2.8.1-alpha.
- o Major bugfixes (client performance, backport from 0.2.9.5-alpha):
- - Clients now respond to new application stream requests immediately
- when they arrive, rather than waiting up to one second before
- starting to handle them. Fixes part of bug 19969; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (portability, backport from 0.2.9.6-rc):
- - Work around a bug in the OSX 10.12 SDK that would prevent us from
- successfully targeting earlier versions of OSX. Resolves
- ticket 20235.
- o Minor bugfixes (portability, backport from 0.2.9.5-alpha):
- - Fix implicit conversion warnings under OpenSSL 1.1. Fixes bug
- 20551; bugfix on 0.2.1.1-alpha.
- o Minor bugfixes (relay, backport from 0.2.9.5-alpha):
- - Work around a memory leak in OpenSSL 1.1 when encoding public
- keys. Fixes bug 20553; bugfix on 0.0.2pre8.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 3 2016 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.9.6-rc - 2016-12-02
- Tor 0.2.9.6-rc fixes a few remaining bugs found in the previous alpha
- version. We hope that it will be ready to become stable soon, and we
- encourage everyone to test this release. If no showstopper bugs are
- found here, the next 0.2.9 release will be stable.
- o Major bugfixes (relay, resolver, logging):
- - For relays that don't know their own address, avoid attempting a
- local hostname resolve for each descriptor we download. This
- will cut down on the number of "Success: chose address 'x.x.x.x'"
- log lines, and also avoid confusing clock jumps if the resolver
- is slow. Fixes bugs 20423 and 20610; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (client, fascistfirewall):
- - Avoid spurious warnings when ReachableAddresses or FascistFirewall
- is set. Fixes bug 20306; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (hidden services):
- - Stop ignoring the anonymity status of saved keys for hidden
- services and single onion services when first starting tor.
- Instead, refuse to start tor if any hidden service key has been
- used in a different hidden service anonymity mode. Fixes bug
- 20638; bugfix on 17178 in 0.2.9.3-alpha; reported by ahf.
- o Minor bugfixes (portability):
- - Work around a bug in the OSX 10.12 SDK that would prevent us from
- successfully targeting earlier versions of OSX. Resolves
- ticket 20235.
- - Run correctly when built on Windows build environments that
- require _vcsprintf(). Fixes bug 20560; bugfix on 0.2.2.11-alpha.
- o Minor bugfixes (single onion services, Tor2web):
- - Stop complaining about long-term one-hop circuits deliberately
- created by single onion services and Tor2web. These log messages
- are intended to diagnose issue 8387, which relates to circuits
- hanging around forever for no reason. Fixes bug 20613; bugfix on
- 0.2.9.1-alpha. Reported by "pastly".
- o Minor bugfixes (unit tests):
- - Stop spurious failures in the local interface address discovery
- unit tests. Fixes bug 20634; bugfix on 0.2.8.1-alpha; patch by
- Neel Chauhan.
- o Documentation:
- - Correct the minimum bandwidth value in torrc.sample, and queue a
- corresponding change for torrc.minimal. Closes ticket 20085.
- Changes in version 0.2.9.5-alpha - 2016-11-08
- Tor 0.2.9.5-alpha fixes numerous bugs discovered in the previous alpha
- version. We believe one or two probably remain, and we encourage
- everyone to test this release.
- o Major bugfixes (client performance):
- - Clients now respond to new application stream requests immediately
- when they arrive, rather than waiting up to one second before
- starting to handle them. Fixes part of bug 19969; bugfix
- on 0.2.8.1-alpha.
- o Major bugfixes (client reliability):
- - When Tor leaves standby because of a new application request, open
- circuits as needed to serve that request. Previously, we would
- potentially wait a very long time. Fixes part of bug 19969; bugfix
- on 0.2.8.1-alpha.
- o Major bugfixes (download scheduling):
- - When using an exponential backoff schedule, do not give up on
- downloading just because we have failed a bunch of times. Since
- each delay is longer than the last, retrying indefinitely won't
- hurt. Fixes bug 20536; bugfix on 0.2.9.1-alpha.
- - If a consensus expires while we are waiting for certificates to
- download, stop waiting for certificates.
- - If we stop waiting for certificates less than a minute after we
- started downloading them, do not consider the certificate download
- failure a separate failure. Fixes bug 20533; bugfix
- on 0.2.0.9-alpha.
- - Remove the maximum delay on exponential-backoff scheduling. Since
- we now allow an infinite number of failures (see ticket 20536), we
- must now allow the time to grow longer on each failure. Fixes part
- of bug 20534; bugfix on 0.2.9.1-alpha.
- - Make our initial download delays closer to those from 0.2.8. Fixes
- another part of bug 20534; bugfix on 0.2.9.1-alpha.
- - When determining when to download a directory object, handle times
- after 2038 if the operating system supports them. (Someday this
- will be important!) Fixes bug 20587; bugfix on 0.2.8.1-alpha.
- - When using exponential backoff in test networks, use a lower
- exponent, so the delays do not vary as much. This helps test
- networks bootstrap consistently. Fixes bug 20597; bugfix on 20499.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 3 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (client directory scheduling):
- - Treat "relay too busy to answer request" as a failed request and a
- reason to back off on our retry frequency. This is safe now that
- exponential backoffs retry indefinitely, and avoids a bug where we
- would reset our download schedule erroneously. Fixes bug 20593;
- bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (client, logging):
- - Remove a BUG warning in circuit_pick_extend_handshake(). Instead,
- assume all nodes support EXTEND2. Use ntor whenever a key is
- available. Fixes bug 20472; bugfix on 0.2.9.3-alpha.
- - On DNSPort, stop logging a BUG warning on a failed hostname
- lookup. Fixes bug 19869; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (hidden services):
- - When configuring hidden services, check every hidden service
- directory's permissions. Previously, we only checked the last
- hidden service. Fixes bug 20529; bugfix the work to fix 13942
- in 0.2.6.2-alpha.
- o Minor bugfixes (portability):
- - Fix compilation with OpenSSL 1.1 and less commonly-used CPU
- architectures. Closes ticket 20588.
- - Use ECDHE ciphers instead of ECDH in tortls tests. LibreSSL has
- removed the ECDH ciphers which caused the tests to fail on
- platforms which use it. Fixes bug 20460; bugfix on 0.2.8.1-alpha.
- - Fix implicit conversion warnings under OpenSSL 1.1. Fixes bug
- 20551; bugfix on 0.2.1.1-alpha.
- o Minor bugfixes (relay bootstrap):
- - Ensure relays don't make multiple connections during bootstrap.
- Fixes bug 20591; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (relay):
- - Work around a memory leak in OpenSSL 1.1 when encoding public
- keys. Fixes bug 20553; bugfix on 0.0.2pre8.
- - Avoid a small memory leak when informing worker threads about
- rotated onion keys. Fixes bug 20401; bugfix on 0.2.6.3-alpha.
- - Do not try to parallelize workers more than 16x without the user
- explicitly configuring us to do so, even if we do detect more than
- 16 CPU cores. Fixes bug 19968; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (single onion services):
- - Start correctly when creating a single onion service in a
- directory that did not previously exist. Fixes bug 20484; bugfix
- on 0.2.9.3-alpha.
- o Minor bugfixes (testing):
- - Avoid a unit test failure on systems with over 16 detectable CPU
- cores. Fixes bug 19968; bugfix on 0.2.3.1-alpha.
- o Documentation:
- - Clarify that setting HiddenServiceNonAnonymousMode requires you to
- also set "SOCKSPort 0". Fixes bug 20487; bugfix on 0.2.9.3-alpha.
- - Module-level documentation for several more modules. Closes
- tickets 19287 and 19290.
- Changes in version 0.2.8.9 - 2016-10-17
- Tor 0.2.8.9 backports a fix for a security hole in previous versions
- of Tor that would allow a remote attacker to crash a Tor client,
- hidden service, relay, or authority. All Tor users should upgrade to
- this version, or to 0.2.9.4-alpha. Patches will be released for older
- versions of Tor.
- o Major features (security fixes, also in 0.2.9.4-alpha):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2016 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.9.4-alpha - 2016-10-17
- Tor 0.2.9.4-alpha fixes a security hole in previous versions of Tor
- that would allow a remote attacker to crash a Tor client, hidden
- service, relay, or authority. All Tor users should upgrade to this
- version, or to 0.2.8.9. Patches will be released for older versions
- of Tor.
- Tor 0.2.9.4-alpha also adds numerous small features and fix-ups to
- previous versions of Tor, including the implementation of a feature to
- future- proof the Tor ecosystem against protocol changes, some bug
- fixes necessary for Tor Browser to use unix domain sockets correctly,
- and several portability improvements. We anticipate that this will be
- the last alpha in the Tor 0.2.9 series, and that the next release will
- be a release candidate.
- o Major features (security fixes):
- - Prevent a class of security bugs caused by treating the contents
- of a buffer chunk as if they were a NUL-terminated string. At
- least one such bug seems to be present in all currently used
- versions of Tor, and would allow an attacker to remotely crash
- most Tor instances, especially those compiled with extra compiler
- hardening. With this defense in place, such bugs can't crash Tor,
- though we should still fix them as they occur. Closes ticket
- 20384 (TROVE-2016-10-001).
- o Major features (subprotocol versions):
- - Tor directory authorities now vote on a set of recommended
- subprotocol versions, and on a set of required subprotocol
- versions. Clients and relays that lack support for a _required_
- subprotocol version will not start; those that lack support for a
- _recommended_ subprotocol version will warn the user to upgrade.
- Closes ticket 19958; implements part of proposal 264.
- - Tor now uses "subprotocol versions" to indicate compatibility.
- Previously, versions of Tor looked at the declared Tor version of
- a relay to tell whether they could use a given feature. Now, they
- should be able to rely on its declared subprotocol versions. This
- change allows compatible implementations of the Tor protocol(s) to
- exist without pretending to be 100% bug-compatible with particular
- releases of Tor itself. Closes ticket 19958; implements part of
- proposal 264.
- o Minor feature (fallback directories):
- - Remove broken fallbacks from the hard-coded fallback directory
- list. Closes ticket 20190; patch by teor.
- o Minor features (client, directory):
- - Since authorities now omit all routers that lack the Running and
- Valid flags, we assume that any relay listed in the consensus must
- have those flags. Closes ticket 20001; implements part of
- proposal 272.
- o Minor features (compilation, portability):
- - Compile correctly on MacOS 10.12 (aka "Sierra"). Closes
- ticket 20241.
- o Minor features (development tools, etags):
- - Teach the "make tags" Makefile target how to correctly find
- "MOCK_IMPL" function definitions. Patch from nherring; closes
- ticket 16869.
- o Minor features (geoip):
- - Update geoip and geoip6 to the October 4 2016 Maxmind GeoLite2
- Country database.
- o Minor features (unix domain sockets):
- - When configuring a unix domain socket for a SocksPort,
- ControlPort, or Hidden service, you can now wrap the address in
- quotes, using C-style escapes inside the quotes. This allows unix
- domain socket paths to contain spaces.
- o Minor features (virtual addresses):
- - Increase the maximum number of bits for the IPv6 virtual network
- prefix from 16 to 104. In this way, the condition for address
- allocation is less restrictive. Closes ticket 20151; feature
- on 0.2.4.7-alpha.
- o Minor bugfixes (address discovery):
- - Stop reordering IP addresses returned by the OS. This makes it
- more likely that Tor will guess the same relay IP address every
- time. Fixes issue 20163; bugfix on 0.2.7.1-alpha, ticket 17027.
- Reported by René Mayrhofer, patch by "cypherpunks".
- o Minor bugfixes (client, unix domain sockets):
- - Disable IsolateClientAddr when using AF_UNIX backed SocksPorts as
- the client address is meaningless. Fixes bug 20261; bugfix
- on 0.2.6.3-alpha.
- o Minor bugfixes (compilation, OpenBSD):
- - Detect Libevent2 functions correctly on systems that provide
- libevent2, but where libevent1 is linked with -levent. Fixes bug
- 19904; bugfix on 0.2.2.24-alpha. Patch from Rubiate.
- o Minor bugfixes (configuration):
- - When parsing quoted configuration values from the torrc file,
- handle windows line endings correctly. Fixes bug 19167; bugfix on
- 0.2.0.16-alpha. Patch from "Pingl".
- o Minor bugfixes (getpass):
- - Defensively fix a non-triggerable heap corruption at do_getpass()
- to protect ourselves from mistakes in the future. Fixes bug
- 19223; bugfix on 0.2.7.3-rc. Bug found by Guido Vranken, patch
- by nherring.
- o Minor bugfixes (hidden service):
- - Allow hidden services to run on IPv6 addresses even when the
- IPv6Exit option is not set. Fixes bug 18357; bugfix
- on 0.2.4.7-alpha.
- o Documentation:
- - Add module-level internal documentation for 36 C files that
- previously didn't have a high-level overview. Closes ticket #20385.
- o Required libraries:
- - When building with OpenSSL, Tor now requires version 1.0.1 or
- later. OpenSSL 1.0.0 and earlier are no longer supported by the
- OpenSSL team, and should not be used. Closes ticket 20303.
- Changes in version 0.2.9.3-alpha - 2016-09-23
- Tor 0.2.9.3-alpha adds improved support for entities that want to make
- high-performance services available through the Tor .onion mechanism
- without themselves receiving anonymity as they host those services. It
- also tries harder to ensure that all steps on a circuit are using the
- strongest crypto possible, strengthens some TLS properties, and
- resolves several bugs -- including a pair of crash bugs from the 0.2.8
- series. Anybody running an earlier version of 0.2.9.x should upgrade.
- o Major bugfixes (crash, also in 0.2.8.8):
- - Fix a complicated crash bug that could affect Tor clients
- configured to use bridges when replacing a networkstatus consensus
- in which one of their bridges was mentioned. OpenBSD users saw
- more crashes here, but all platforms were potentially affected.
- Fixes bug 20103; bugfix on 0.2.8.2-alpha.
- o Major bugfixes (relay, OOM handler, also in 0.2.8.8):
- - Fix a timing-dependent assertion failure that could occur when we
- tried to flush from a circuit after having freed its cells because
- of an out-of-memory condition. Fixes bug 20203; bugfix on
- 0.2.8.1-alpha. Thanks to "cypherpunks" for help diagnosing
- this one.
- o Major features (circuit building, security):
- - Authorities, relays and clients now require ntor keys in all
- descriptors, for all hops (except for rare hidden service protocol
- cases), for all circuits, and for all other roles. Part of
- ticket 19163.
- - Tor authorities, relays, and clients only use ntor, except for
- rare cases in the hidden service protocol. Part of ticket 19163.
- o Major features (single-hop "hidden" services):
- - Add experimental HiddenServiceSingleHopMode and
- HiddenServiceNonAnonymousMode options. When both are set to 1,
- every hidden service on a Tor instance becomes a non-anonymous
- Single Onion Service. Single Onions make one-hop (direct)
- connections to their introduction and renzedvous points. One-hop
- circuits make Single Onion servers easily locatable, but clients
- remain location-anonymous. This is compatible with the existing
- hidden service implementation, and works on the current tor
- network without any changes to older relays or clients. Implements
- proposal 260, completes ticket 17178. Patch by teor and asn.
- o Major features (resource management):
- - Tor can now notice it is about to run out of sockets, and
- preemptively close connections of lower priority. (This feature is
- off by default for now, since the current prioritizing method is
- yet not mature enough. You can enable it by setting
- "DisableOOSCheck 0", but watch out: it might close some sockets
- you would rather have it keep.) Closes ticket 18640.
- o Major bugfixes (circuit building):
- - Hidden service client-to-intro-point and service-to-rendezvous-
- point circuits use the TAP key supplied by the protocol, to avoid
- epistemic attacks. Fixes bug 19163; bugfix on 0.2.4.18-rc.
- o Major bugfixes (compilation, OpenBSD):
- - Fix a Libevent-detection bug in our autoconf script that would
- prevent Tor from linking successfully on OpenBSD. Patch from
- rubiate. Fixes bug 19902; bugfix on 0.2.9.1-alpha.
- o Major bugfixes (hidden services):
- - Clients now require hidden services to include the TAP keys for
- their intro points in the hidden service descriptor. This prevents
- an inadvertent upgrade to ntor, which a malicious hidden service
- could use to distinguish clients by consensus version. Fixes bug
- 20012; bugfix on 0.2.4.8-alpha. Patch by teor.
- o Minor features (security, TLS):
- - Servers no longer support clients that without AES ciphersuites.
- (3DES is no longer considered an acceptable cipher.) We believe
- that no such Tor clients currently exist, since Tor has required
- OpenSSL 0.9.7 or later since 2009. Closes ticket 19998.
- o Minor feature (fallback directories):
- - Remove 8 fallbacks that are no longer suitable, leaving 81 of the
- 100 fallbacks originally introduced in Tor 0.2.8.2-alpha in March
- 2016. Closes ticket 20190; patch by teor.
- o Minor features (geoip, also in 0.2.8.8):
- - Update geoip and geoip6 to the September 6 2016 Maxmind GeoLite2
- Country database.
- o Minor feature (port flags):
- - Add new flags to the *Port options to finer control over which
- requests are allowed. The flags are NoDNSRequest, NoOnionTraffic,
- and the synthetic flag OnionTrafficOnly, which is equivalent to
- NoDNSRequest, NoIPv4Traffic, and NoIPv6Traffic. Closes enhancement
- 18693; patch by "teor".
- o Minor features (directory authority):
- - After voting, if the authorities decide that a relay is not
- "Valid", they no longer include it in the consensus at all. Closes
- ticket 20002; implements part of proposal 272.
- o Minor features (testing):
- - Disable memory protections on OpenBSD when performing our unit
- tests for memwipe(). The test deliberately invokes undefined
- behavior, and the OpenBSD protections interfere with this. Patch
- from "rubiate". Closes ticket 20066.
- o Minor features (testing, ipv6):
- - Add the single-onion and single-onion-ipv6 chutney targets to
- "make test-network-all". This requires a recent chutney version
- with the single onion network flavours (git c72a652 or later).
- Closes ticket 20072; patch by teor.
- - Add the hs-ipv6 chutney target to make test-network-all's IPv6
- tests. Remove bridges+hs, as it's somewhat redundant. This
- requires a recent chutney version that supports IPv6 clients,
- relays, and authorities. Closes ticket 20069; patch by teor.
- o Minor features (Tor2web):
- - Make Tor2web clients respect ReachableAddresses. This feature was
- inadvertently enabled in 0.2.8.6, then removed by bugfix 19973 on
- 0.2.8.7. Implements feature 20034. Patch by teor.
- o Minor features (unit tests):
- - We've done significant work to make the unit tests run faster.
- - Our link-handshake unit tests now check that when invalid
- handshakes fail, they fail with the error messages we expected.
- - Our unit testing code that captures log messages no longer
- prevents them from being written out if the user asked for them
- (by passing --debug or --info or or --notice --warn to the "test"
- binary). This change prevents us from missing unexpected log
- messages simply because we were looking for others. Related to
- ticket 19999.
- - The unit tests now log all warning messages with the "BUG" flag.
- Previously, they only logged errors by default. This change will
- help us make our testing code more correct, and make sure that we
- only hit this code when we mean to. In the meantime, however,
- there will be more warnings in the unit test logs than before.
- This is preparatory work for ticket 19999.
- - The unit tests now treat any failure of a "tor_assert_nonfatal()"
- assertion as a test failure.
- o Minor bug fixes (circuits):
- - Use the CircuitBuildTimeout option whenever
- LearnCircuitBuildTimeout is disabled. Previously, we would respect
- the option when a user disabled it, but not when it was disabled
- because some other option was set. Fixes bug 20073; bugfix on
- 0.2.4.12-alpha. Patch by teor.
- o Minor bugfixes (allocation):
- - Change how we allocate memory for large chunks on buffers, to
- avoid a (currently impossible) integer overflow, and to waste less
- space when allocating unusually large chunks. Fixes bug 20081;
- bugfix on 0.2.0.16-alpha. Issue identified by Guido Vranken.
- - Always include orconfig.h before including any other C headers.
- Sometimes, it includes macros that affect the behavior of the
- standard headers. Fixes bug 19767; bugfix on 0.2.9.1-alpha (the
- first version to use AC_USE_SYSTEM_EXTENSIONS).
- - Fix a syntax error in the IF_BUG_ONCE__() macro in non-GCC-
- compatible compilers. Fixes bug 20141; bugfix on 0.2.9.1-alpha.
- Patch from Gisle Vanem.
- - Stop trying to build with Clang 4.0's -Wthread-safety warnings.
- They apparently require a set of annotations that we aren't
- currently using, and they create false positives in our pthreads
- wrappers. Fixes bug 20110; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (directory authority):
- - Die with a more useful error when the operator forgets to place
- the authority_signing_key file into the keys directory. This
- avoids an uninformative assert & traceback about having an invalid
- key. Fixes bug 20065; bugfix on 0.2.0.1-alpha.
- - When allowing private addresses, mark Exits that only exit to
- private locations as such. Fixes bug 20064; bugfix
- on 0.2.2.9-alpha.
- o Minor bugfixes (documentation):
- - Document the default PathsNeededToBuildCircuits value that's used
- by clients when the directory authorities don't set
- min_paths_for_circs_pct. Fixes bug 20117; bugfix on 02c320916e02
- in 0.2.4.10-alpha. Patch by teor, reported by Jesse V.
- - Fix manual for the User option: it takes a username, not a UID.
- Fixes bug 19122; bugfix on 0.0.2pre16 (the first version to have
- a manpage!).
- o Minor bugfixes (hidden services):
- - Stop logging intro point details to the client log on certain
- error conditions. Fixed as part of bug 20012; bugfix on
- 0.2.4.8-alpha. Patch by teor.
- o Minor bugfixes (IPv6, testing):
- - Check for IPv6 correctly on Linux when running test networks.
- Fixes bug 19905; bugfix on 0.2.7.3-rc; patch by teor.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Add permission to run the sched_yield() and sigaltstack() system
- calls, in order to support versions of Tor compiled with asan or
- ubsan code that use these calls. Now "sandbox 1" and
- "--enable-expensive-hardening" should be compatible on more
- systems. Fixes bug 20063; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (logging):
- - When logging a message from the BUG() macro, be explicit about
- what we were asserting. Previously we were confusing what we were
- asserting with what the bug was. Fixes bug 20093; bugfix
- on 0.2.9.1-alpha.
- - When we are unable to remove the bw_accounting file, do not warn
- if the reason we couldn't remove it was that it didn't exist.
- Fixes bug 19964; bugfix on 0.2.5.4-alpha. Patch from 'pastly'.
- o Minor bugfixes (option parsing):
- - Count unix sockets when counting client listeners (SOCKS, Trans,
- NATD, and DNS). This has no user-visible behaviour changes: these
- options are set once, and never read. Required for correct
- behaviour in ticket 17178. Fixes bug 19677; bugfix on
- 0.2.6.3-alpha. Patch by teor.
- o Minor bugfixes (options):
- - Check the consistency of UseEntryGuards and EntryNodes more
- reliably. Fixes bug 20074; bugfix on 0.2.4.12-alpha. Patch
- by teor.
- - Stop changing the configured value of UseEntryGuards on
- authorities and Tor2web clients. Fixes bug 20074; bugfix on
- commits 51fc6799 in 0.1.1.16-rc and acda1735 in 0.2.4.3-alpha.
- Patch by teor.
- o Minor bugfixes (Tor2web):
- - Prevent Tor2web clients running hidden services, these services
- are not anonymous due to the one-hop client paths. Fixes bug
- 19678. Patch by teor.
- o Minor bugfixes (unit tests):
- - Fix a shared-random unit test that was failing on big endian
- architectures due to internal representation of a integer copied
- to a buffer. The test is changed to take a full 32 bytes of data
- and use the output of a python script that make the COMMIT and
- REVEAL calculation according to the spec. Fixes bug 19977; bugfix
- on 0.2.9.1-alpha.
- - The tor_tls_server_info_callback unit test no longer crashes when
- debug-level logging is turned on. Fixes bug 20041; bugfix
- on 0.2.8.1-alpha.
- Changes in version 0.2.8.8 - 2016-09-23
- Tor 0.2.8.8 fixes two crash bugs present in previous versions of the
- 0.2.8.x series. Relays running 0.2.8.x should upgrade, as should users
- who select public relays as their bridges.
- o Major bugfixes (crash):
- - Fix a complicated crash bug that could affect Tor clients
- configured to use bridges when replacing a networkstatus consensus
- in which one of their bridges was mentioned. OpenBSD users saw
- more crashes here, but all platforms were potentially affected.
- Fixes bug 20103; bugfix on 0.2.8.2-alpha.
- o Major bugfixes (relay, OOM handler):
- - Fix a timing-dependent assertion failure that could occur when we
- tried to flush from a circuit after having freed its cells because
- of an out-of-memory condition. Fixes bug 20203; bugfix on
- 0.2.8.1-alpha. Thanks to "cypherpunks" for help diagnosing
- this one.
- o Minor feature (fallback directories):
- - Remove 8 fallbacks that are no longer suitable, leaving 81 of the
- 100 fallbacks originally introduced in Tor 0.2.8.2-alpha in March
- 2016. Closes ticket 20190; patch by teor.
- o Minor features (geoip):
- - Update geoip and geoip6 to the September 6 2016 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.9.2-alpha - 2016-08-24
- Tor 0.2.9.2-alpha continues development of the 0.2.9 series with
- several new features and bugfixes. It also includes an important
- authority update and an important bugfix from 0.2.8.7. Everyone who
- sets the ReachableAddresses option, and all bridges, are strongly
- encouraged to upgrade to 0.2.8.7, or to 0.2.9.2-alpha.
- o Directory authority changes (also in 0.2.8.7):
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Major bugfixes (client, security, also in 0.2.8.7):
- - Only use the ReachableAddresses option to restrict the first hop
- in a path. In earlier versions of 0.2.8.x, it would apply to
- every hop in the path, with a possible degradation in anonymity
- for anyone using an uncommon ReachableAddress setting. Fixes bug
- 19973; bugfix on 0.2.8.2-alpha.
- o Major features (user interface):
- - Tor now supports the ability to declare options deprecated, so
- that we can recommend that people stop using them. Previously,
- this was done in an ad-hoc way. Closes ticket 19820.
- o Major bugfixes (directory downloads):
- - Avoid resetting download status for consensuses hourly, since we
- already have another, smarter retry mechanism. Fixes bug 8625;
- bugfix on 0.2.0.9-alpha.
- o Minor features (config):
- - Warn users when descriptor and port addresses are inconsistent.
- Mitigates bug 13953; patch by teor.
- o Minor features (geoip):
- - Update geoip and geoip6 to the August 2 2016 Maxmind GeoLite2
- Country database.
- o Minor features (user interface):
- - There is a new --list-deprecated-options command-line option to
- list all of the deprecated options. Implemented as part of
- ticket 19820.
- o Minor bugfixes (code style):
- - Fix an integer signedness conversion issue in the case conversion
- tables. Fixes bug 19168; bugfix on 0.2.1.11-alpha.
- o Minor bugfixes (compilation):
- - Build correctly on versions of libevent2 without support for
- evutil_secure_rng_add_bytes(). Fixes bug 19904; bugfix
- on 0.2.5.4-alpha.
- - Fix a compilation warning on GCC versions before 4.6. Our
- ENABLE_GCC_WARNING macro used the word "warning" as an argument,
- when it is also required as an argument to the compiler pragma.
- Fixes bug 19901; bugfix on 0.2.9.1-alpha.
- o Minor bugfixes (compilation, also in 0.2.8.7):
- - Remove an inappropriate "inline" in tortls.c that was causing
- warnings on older versions of GCC. Fixes bug 19903; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (fallback directories, also in 0.2.8.7):
- - Avoid logging a NULL string pointer when loading fallback
- directory information. Fixes bug 19947; bugfix on 0.2.4.7-alpha
- and 0.2.8.1-alpha. Report and patch by "rubiate".
- o Minor bugfixes (logging):
- - Log a more accurate message when we fail to dump a microdescriptor.
- Fixes bug 17758; bugfix on 0.2.2.8-alpha. Patch from Daniel Pinto.
- o Minor bugfixes (memory leak):
- - Fix a series of slow memory leaks related to parsing torrc files
- and options. Fixes bug 19466; bugfix on 0.2.1.6-alpha.
- o Deprecated features:
- - A number of DNS-cache-related sub-options for client ports are now
- deprecated for security reasons, and may be removed in a future
- version of Tor. (We believe that client-side DNS caching is a bad
- idea for anonymity, and you should not turn it on.) The options
- are: CacheDNS, CacheIPv4DNS, CacheIPv6DNS, UseDNSCache,
- UseIPv4Cache, and UseIPv6Cache.
- - A number of options are deprecated for security reasons, and may
- be removed in a future version of Tor. The options are:
- AllowDotExit, AllowInvalidNodes, AllowSingleHopCircuits,
- AllowSingleHopExits, ClientDNSRejectInternalAddresses,
- CloseHSClientCircuitsImmediatelyOnTimeout,
- CloseHSServiceRendCircuitsImmediatelyOnTimeout,
- ExcludeSingleHopRelays, FastFirstHopPK, TLSECGroup,
- UseNTorHandshake, and WarnUnsafeSocks.
- - The *ListenAddress options are now deprecated as unnecessary: the
- corresponding *Port options should be used instead. These options
- may someday be removed. The affected options are:
- ControlListenAddress, DNSListenAddress, DirListenAddress,
- NATDListenAddress, ORListenAddress, SocksListenAddress,
- and TransListenAddress.
- o Documentation:
- - Correct the IPv6 syntax in our documentation for the
- VirtualAddrNetworkIPv6 torrc option. Closes ticket 19743.
- o Removed code:
- - We no longer include the (dead, deprecated) bufferevent code in
- Tor. Closes ticket 19450. Based on a patch from U+039b.
- Changes in version 0.2.8.7 - 2016-08-24
- Tor 0.2.8.7 fixes an important bug related to the ReachableAddresses
- option in 0.2.8.6, and replaces a retiring bridge authority. Everyone
- who sets the ReachableAddresses option, and all bridges, are strongly
- encouraged to upgrade.
- o Directory authority changes:
- - The "Tonga" bridge authority has been retired; the new bridge
- authority is "Bifroest". Closes tickets 19728 and 19690.
- o Major bugfixes (client, security):
- - Only use the ReachableAddresses option to restrict the first hop
- in a path. In earlier versions of 0.2.8.x, it would apply to
- every hop in the path, with a possible degradation in anonymity
- for anyone using an uncommon ReachableAddress setting. Fixes bug
- 19973; bugfix on 0.2.8.2-alpha.
- o Minor features (geoip):
- - Update geoip and geoip6 to the August 2 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - Remove an inappropriate "inline" in tortls.c that was causing
- warnings on older versions of GCC. Fixes bug 19903; bugfix
- on 0.2.8.1-alpha.
- o Minor bugfixes (fallback directories):
- - Avoid logging a NULL string pointer when loading fallback
- directory information. Fixes bug 19947; bugfix on 0.2.4.7-alpha
- and 0.2.8.1-alpha. Report and patch by "rubiate".
- Changes in version 0.2.9.1-alpha - 2016-08-08
- Tor 0.2.9.1-alpha is the first alpha release in the 0.2.9 development
- series. It improves our support for hardened builds and compiler
- warnings, deploys some critical infrastructure for improvements to
- hidden services, includes a new timing backend that we hope to use for
- better support for traffic padding, makes it easier for programmers to
- log unexpected events, and contains other small improvements to
- security, correctness, and performance.
- Below are the changes since 0.2.8.6.
- o New system requirements:
- - Tor now requires Libevent version 2.0.10-stable or later. Older
- versions of Libevent have less efficient backends for several
- platforms, and lack the DNS code that we use for our server-side
- DNS support. This implements ticket 19554.
- - Tor now requires zlib version 1.2 or later, for security,
- efficiency, and (eventually) gzip support. (Back when we started,
- zlib 1.1 and zlib 1.0 were still found in the wild. 1.2 was
- released in 2003. We recommend the latest version.)
- o Major features (build, hardening):
- - Tor now builds with -ftrapv by default on compilers that support
- it. This option detects signed integer overflow (which C forbids),
- and turns it into a hard-failure. We do not apply this option to
- code that needs to run in constant time to avoid side-channels;
- instead, we use -fwrapv in that code. Closes ticket 17983.
- - When --enable-expensive-hardening is selected, stop applying the
- clang/gcc sanitizers to code that needs to run in constant time.
- Although we are aware of no introduced side-channels, we are not
- able to prove that there are none. Related to ticket 17983.
- o Major features (compilation):
- - Our big list of extra GCC warnings is now enabled by default when
- building with GCC (or with anything like Clang that claims to be
- GCC-compatible). To make all warnings into fatal compilation
- errors, pass --enable-fatal-warnings to configure. Closes
- ticket 19044.
- - Use the Autoconf macro AC_USE_SYSTEM_EXTENSIONS to automatically
- turn on C and POSIX extensions. (Previously, we attempted to do
- this on an ad hoc basis.) Closes ticket 19139.
- o Major features (directory authorities, hidden services):
- - Directory authorities can now perform the shared randomness
- protocol specified by proposal 250. Using this protocol, directory
- authorities generate a global fresh random value every day. In the
- future, this value will be used by hidden services to select
- HSDirs. This release implements the directory authority feature;
- the hidden service side will be implemented in the future as part
- of proposal 224. Resolves ticket 16943; implements proposal 250.
- o Major features (downloading, random exponential backoff):
- - When we fail to download an object from a directory service, wait
- for an (exponentially increasing) randomized amount of time before
- retrying, rather than a fixed interval as we did before. This
- prevents a group of Tor instances from becoming too synchronized,
- or a single Tor instance from becoming too predictable, in its
- download schedule. Closes ticket 15942.
- o Major bugfixes (exit policies):
- - Avoid disclosing exit outbound bind addresses, configured port
- bind addresses, and local interface addresses in relay descriptors
- by default under ExitPolicyRejectPrivate. Instead, only reject
- these (otherwise unlisted) addresses if
- ExitPolicyRejectLocalInterfaces is set. Fixes bug 18456; bugfix on
- 0.2.7.2-alpha. Patch by teor.
- o Major bugfixes (hidden service client):
- - Allow Tor clients with appropriate controllers to work with
- FetchHidServDescriptors set to 0. Previously, this option also
- disabled descriptor cache lookup, thus breaking hidden services
- entirely. Fixes bug 18704; bugfix on 0.2.0.20-rc. Patch by "twim".
- o Minor features (build, hardening):
- - Detect and work around a libclang_rt problem that would prevent
- clang from finding __mulodi4() on some 32-bit platforms, and thus
- keep -ftrapv from linking on those systems. Closes ticket 19079.
- - When building on a system without runtime support for the runtime
- hardening options, try to log a useful warning at configuration
- time, rather than an incomprehensible warning at link time. If
- expensive hardening was requested, this warning becomes an error.
- Closes ticket 18895.
- o Minor features (code safety):
- - In our integer-parsing functions, ensure that maxiumum value we
- give is no smaller than the minimum value. Closes ticket 19063;
- patch from U+039b.
- o Minor features (controller):
- - Implement new GETINFO queries for all downloads that use
- download_status_t to schedule retries. This allows controllers to
- examine the schedule for pending downloads. Closes ticket 19323.
- - Allow controllers to configure basic client authorization on
- hidden services when they create them with the ADD_ONION control
- command. Implements ticket 15588. Patch by "special".
- - Fire a STATUS_SERVER controller event whenever the hibernation
- status changes between "awake"/"soft"/"hard". Closes ticket 18685.
- o Minor features (directory authority):
- - Directory authorities now only give the Guard flag to a relay if
- they are also giving it the Stable flag. This change allows us to
- simplify path selection for clients. It should have minimal effect
- in practice, since >99% of Guards already have the Stable flag.
- Implements ticket 18624.
- - Directory authorities now write their v3-status-votes file out to
- disk earlier in the consensus process, so we have a record of the
- votes even if we abort the consensus process. Resolves
- ticket 19036.
- o Minor features (hidden service):
- - Stop being so strict about the payload length of "rendezvous1"
- cells. We used to be locked in to the "TAP" handshake length, and
- now we can handle better handshakes like "ntor". Resolves
- ticket 18998.
- o Minor features (infrastructure, time):
- - Tor now uses the operating system's monotonic timers (where
- available) for internal fine-grained timing. Previously we would
- look at the system clock, and then attempt to compensate for the
- clock running backwards. Closes ticket 18908.
- - Tor now includes an improved timer backend, so that we can
- efficiently support tens or hundreds of thousands of concurrent
- timers, as will be needed for some of our planned anti-traffic-
- analysis work. This code is based on William Ahern's "timeout.c"
- project, which implements a "tickless hierarchical timing wheel".
- Closes ticket 18365.
- o Minor features (logging):
- - Provide a more useful warning message when configured with an
- invalid Nickname. Closes ticket 18300; patch from "icanhasaccount".
- - When dumping unparseable router descriptors, optionally store them
- in separate files, named by digest, up to a configurable size
- limit. You can change the size limit by setting the
- MaxUnparseableDescSizeToLog option, and disable this feature by
- setting that option to 0. Closes ticket 18322.
- - Add a set of macros to check nonfatal assertions, for internal
- use. Migrating more of our checks to these should help us avoid
- needless crash bugs. Closes ticket 18613.
- o Minor features (performance):
- - Changer the "optimistic data" extension from "off by default" to
- "on by default". The default was ordinarily overridden by a
- consensus option, but when clients were bootstrapping for the
- first time, they would not have a consensus to get the option
- from. Changing this default When fetching a consensus for the
- first time, use optimistic data. This saves a round-trip during
- startup. Closes ticket 18815.
- o Minor features (relay, usability):
- - When the directory authorities refuse a bad relay's descriptor,
- encourage the relay operator to contact us. Many relay operators
- won't notice this line in their logs, but it's a win if even a few
- learn why we don't like what their relay was doing. Resolves
- ticket 18760.
- o Minor features (testing):
- - Let backtrace tests work correctly under AddressSanitizer. Fixes
- part of bug 18934; bugfix on 0.2.5.2-alpha.
- - Move the test-network.sh script to chutney, and modify tor's test-
- network.sh to call the (newer) chutney version when available.
- Resolves ticket 19116. Patch by teor.
- - Use the lcov convention for marking lines as unreachable, so that
- we don't count them when we're generating test coverage data.
- Update our coverage tools to understand this convention. Closes
- ticket 16792.
- o Minor bugfixes (bootstrap):
- - Remember the directory we fetched the consensus or previous
- certificates from, and use it to fetch future authority
- certificates. This change improves bootstrapping performance.
- Fixes bug 18963; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (build):
- - The test-stem and test-network makefile targets now depend only on
- the tor binary that they are testing. Previously, they depended on
- "make all". Fixes bug 18240; bugfix on 0.2.8.2-alpha. Based on a
- patch from "cypherpunks".
- o Minor bugfixes (circuits):
- - Make sure extend_info_from_router() is only called on servers.
- Fixes bug 19639; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (compilation):
- - When building with Clang, use a full set of GCC warnings.
- (Previously, we included only a subset, because of the way we
- detected them.) Fixes bug 19216; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (directory authority):
- - Authorities now sort the "package" lines in their votes, for ease
- of debugging. (They are already sorted in consensus documents.)
- Fixes bug 18840; bugfix on 0.2.6.3-alpha.
- - When parsing a detached signature, make sure we use the length of
- the digest algorithm instead of an hardcoded DIGEST256_LEN in
- order to avoid comparing bytes out-of-bounds with a smaller digest
- length such as SHA1. Fixes bug 19066; bugfix on 0.2.2.6-alpha.
- o Minor bugfixes (documentation):
- - Document the --passphrase-fd option in the tor manpage. Fixes bug
- 19504; bugfix on 0.2.7.3-rc.
- - Fix the description of the --passphrase-fd option in the
- tor-gencert manpage. The option is used to pass the number of a
- file descriptor to read the passphrase from, not to read the file
- descriptor from. Fixes bug 19505; bugfix on 0.2.0.20-alpha.
- o Minor bugfixes (ephemeral hidden service):
- - When deleting an ephemeral hidden service, close its intro points
- even if they are not completely open. Fixes bug 18604; bugfix
- on 0.2.7.1-alpha.
- o Minor bugfixes (guard selection):
- - Use a single entry guard even if the NumEntryGuards consensus
- parameter is not provided. Fixes bug 17688; bugfix
- on 0.2.5.6-alpha.
- - Don't mark guards as unreachable if connection_connect() fails.
- That function fails for local reasons, so it shouldn't reveal
- anything about the status of the guard. Fixes bug 14334; bugfix
- on 0.2.3.10-alpha.
- o Minor bugfixes (hidden service client):
- - Increase the minimum number of internal circuits we preemptively
- build from 2 to 3, so a circuit is available when a client
- connects to another onion service. Fixes bug 13239; bugfix
- on 0.1.0.1-rc.
- o Minor bugfixes (logging):
- - When logging a directory ownership mismatch, log the owning
- username correctly. Fixes bug 19578; bugfix on 0.2.2.29-beta.
- o Minor bugfixes (memory leaks):
- - Fix a small, uncommon memory leak that could occur when reading a
- truncated ed25519 key file. Fixes bug 18956; bugfix
- on 0.2.6.1-alpha.
- o Minor bugfixes (testing):
- - Allow clients to retry HSDirs much faster in test networks. Fixes
- bug 19702; bugfix on 0.2.7.1-alpha. Patch by teor.
- - Disable ASAN's detection of segmentation faults while running
- test_bt.sh, so that we can make sure that our own backtrace
- generation code works. Fixes another aspect of bug 18934; bugfix
- on 0.2.5.2-alpha. Patch from "cypherpunks".
- - Fix the test-network-all target on out-of-tree builds by using the
- correct path to the test driver script. Fixes bug 19421; bugfix
- on 0.2.7.3-rc.
- o Minor bugfixes (time):
- - Improve overflow checks in tv_udiff and tv_mdiff. Fixes bug 19483;
- bugfix on all released tor versions.
- - When computing the difference between two times in milliseconds,
- we now round to the nearest millisecond correctly. Previously, we
- could sometimes round in the wrong direction. Fixes bug 19428;
- bugfix on 0.2.2.2-alpha.
- o Minor bugfixes (user interface):
- - Display a more accurate number of suppressed messages in the log
- rate-limiter. Previously, there was a potential integer overflow
- in the counter. Now, if the number of messages hits a maximum, the
- rate-limiter doesn't count any further. Fixes bug 19435; bugfix
- on 0.2.4.11-alpha.
- - Fix a typo in the passphrase prompt for the ed25519 identity key.
- Fixes bug 19503; bugfix on 0.2.7.2-alpha.
- o Code simplification and refactoring:
- - Remove redundant declarations of the MIN macro. Closes
- ticket 18889.
- - Rename tor_dup_addr() to tor_addr_to_str_dup() to avoid confusion.
- Closes ticket 18462; patch from "icanhasaccount".
- - Split the 600-line directory_handle_command_get function into
- separate functions for different URL types. Closes ticket 16698.
- o Documentation:
- - Fix spelling of "--enable-tor2web-mode" in the manpage. Closes
- ticket 19153. Patch from "U+039b".
- o Removed features:
- - Remove support for "GET /tor/bytes.txt" DirPort request, and
- "GETINFO dir-usage" controller request, which were only available
- via a compile-time option in Tor anyway. Feature was added in
- 0.2.2.1-alpha. Resolves ticket 19035.
- - There is no longer a compile-time option to disable support for
- TransPort. (If you don't want TransPort; just don't use it.) Patch
- from "U+039b". Closes ticket 19449.
- o Testing:
- - Run more workqueue tests as part of "make check". These had
- previously been implemented, but you needed to know special
- command-line options to enable them.
- - We now have unit tests for our code to reject zlib "compression
- bombs". (Fortunately, the code works fine.)
- Changes in version 0.2.8.6 - 2016-08-02
- Tor 0.2.8.6 is the first stable version of the Tor 0.2.8 series.
- The Tor 0.2.8 series improves client bootstrapping performance,
- completes the authority-side implementation of improved identity
- keys for relays, and includes numerous bugfixes and performance
- improvements throughout the program. This release continues to
- improve the coverage of Tor's test suite. For a full list of
- changes since Tor 0.2.7, see the ReleaseNotes file.
- Changes since 0.2.8.5-rc:
- o Minor features (geoip):
- - Update geoip and geoip6 to the July 6 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - Fix a compilation warning in the unit tests on systems where char
- is signed. Fixes bug 19682; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (fallback directories):
- - Remove 1 fallback that was on the hardcoded list, then opted-out,
- leaving 89 of the 100 fallbacks originally introduced in Tor
- 0.2.8.2-alpha in March 2016. Closes ticket 19782; patch by teor.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Allow more syscalls when running with "Sandbox 1" enabled:
- sysinfo, getsockopt(SO_SNDBUF), and setsockopt(SO_SNDBUFFORCE). On
- some systems, these are required for Tor to start. Fixes bug
- 18397; bugfix on 0.2.5.1-alpha. Patch from Daniel Pinto.
- - Allow IPPROTO_UDP datagram sockets when running with "Sandbox 1",
- so that get_interface_address6_via_udp_socket_hack() can work.
- Fixes bug 19660; bugfix on 0.2.5.1-alpha.
- Changes in version 0.2.8.5-rc - 2016-07-07
- Tor 0.2.8.5-rc is the second release candidate in the Tor 0.2.8
- series. If we find no new bugs or regressions here, the first stable
- 0.2.8 release will be identical to it. It has a few small bugfixes
- against previous versions.
- o Directory authority changes:
- - Urras is no longer a directory authority. Closes ticket 19271.
- o Major bugfixes (heartbeat):
- - Fix a regression that would crash Tor when the periodic
- "heartbeat" log messages were disabled. Fixes bug 19454; bugfix on
- 0.2.8.1-alpha. Reported by "kubaku".
- o Minor features (build):
- - Tor now again builds with the recent OpenSSL 1.1 development
- branch (tested against 1.1.0-pre6-dev). Closes ticket 19499.
- - When building manual pages, set the timezone to "UTC", so that the
- output is reproducible. Fixes bug 19558; bugfix on 0.2.2.9-alpha.
- Patch from intrigeri.
- o Minor bugfixes (fallback directory selection):
- - Avoid errors during fallback selection if there are no eligible
- fallbacks. Fixes bug 19480; bugfix on 0.2.8.3-alpha. Patch
- by teor.
- o Minor bugfixes (IPv6, microdescriptors):
- - Don't check node addresses when we only have a routerstatus. This
- allows IPv6-only clients to bootstrap by fetching microdescriptors
- from fallback directory mirrors. (The microdescriptor consensus
- has no IPv6 addresses in it.) Fixes bug 19608; bugfix
- on 0.2.8.2-alpha.
- o Minor bugfixes (logging):
- - Reduce pointlessly verbose log messages when directory servers
- can't be found. Fixes bug 18849; bugfix on 0.2.8.3-alpha and
- 0.2.8.1-alpha. Patch by teor.
- - When a fallback directory changes its fingerprint from the hard-
- coded fingerprint, log a less severe, more explanatory log
- message. Fixes bug 18812; bugfix on 0.2.8.1-alpha. Patch by teor.
- o Minor bugfixes (Linux seccomp2 sandboxing):
- - Allow statistics to be written to disk when "Sandbox 1" is
- enabled. Fixes bugs 19556 and 19957; bugfix on 0.2.5.1-alpha and
- 0.2.6.1-alpha respectively.
- o Minor bugfixes (user interface):
- - Remove a warning message "Service [scrubbed] not found after
- descriptor upload". This message appears when one uses HSPOST
- control command to upload a service descriptor. Since there is
- only a descriptor and no service, showing this message is
- pointless and confusing. Fixes bug 19464; bugfix on 0.2.7.2-alpha.
- o Fallback directory list:
- - Add a comment to the generated fallback directory list that
- explains how to comment out unsuitable fallbacks in a way that's
- compatible with the stem fallback parser.
- - Update fallback whitelist and blacklist based on relay operator
- emails. Blacklist unsuitable (non-working, over-volatile)
- fallbacks. Resolves ticket 19071. Patch by teor.
- - Remove 10 unsuitable fallbacks, leaving 90 of the 100 fallbacks
- originally introduced in Tor 0.2.8.2-alpha in March 2016. Closes
- ticket 19071; patch by teor.
- Changes in version 0.2.8.4-rc - 2016-06-15
- Tor 0.2.8.4-rc is the first release candidate in the Tor 0.2.8 series.
- If we find no new bugs or regressions here, the first stable 0.2.8
- release will be identical to it. It has a few small bugfixes against
- previous versions.
- o Major bugfixes (user interface):
- - Correctly give a warning in the cases where a relay is specified
- by nickname, and one such relay is found, but it is not officially
- Named. Fixes bug 19203; bugfix on 0.2.3.1-alpha.
- o Minor features (build):
- - Tor now builds once again with the recent OpenSSL 1.1 development
- branch (tested against 1.1.0-pre5 and 1.1.0-pre6-dev).
- o Minor features (geoip):
- - Update geoip and geoip6 to the June 7 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - Cause the unit tests to compile correctly on mingw64 versions that
- lack sscanf. Fixes bug 19213; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (downloading):
- - Predict more correctly whether we'll be downloading over HTTP when
- we determine the maximum length of a URL. This should avoid a
- "BUG" warning about the Squid HTTP proxy and its URL limits. Fixes
- bug 19191.
- Changes in version 0.2.8.3-alpha - 2016-05-26
- Tor 0.2.8.3-alpha resolves several bugs, most of them introduced over
- the course of the 0.2.8 development cycle. It improves the behavior of
- directory clients, fixes several crash bugs, fixes a gap in compiler
- hardening, and allows the full integration test suite to run on
- more platforms.
- o Major bugfixes (security, client, DNS proxy):
- - Stop a crash that could occur when a client running with DNSPort
- received a query with multiple address types, and the first
- address type was not supported. Found and fixed by Scott Dial.
- Fixes bug 18710; bugfix on 0.2.5.4-alpha.
- o Major bugfixes (security, compilation):
- - Correctly detect compiler flags on systems where _FORTIFY_SOURCE
- is predefined. Previously, our use of -D_FORTIFY_SOURCE would
- cause a compiler warning, thereby making other checks fail, and
- needlessly disabling compiler-hardening support. Fixes one case of
- bug 18841; bugfix on 0.2.3.17-beta. Patch from "trudokal".
- o Major bugfixes (security, directory authorities):
- - Fix a crash and out-of-bounds write during authority voting, when
- the list of relays includes duplicate ed25519 identity keys. Fixes
- bug 19032; bugfix on 0.2.8.2-alpha.
- o Major bugfixes (client, bootstrapping):
- - Check if bootstrap consensus downloads are still needed when the
- linked connection attaches. This prevents tor making unnecessary
- begindir-style connections, which are the only directory
- connections tor clients make since the fix for 18483 was merged.
- - Fix some edge cases where consensus download connections may not
- have been closed, even though they were not needed. Related to fix
- for 18809.
- - Make relays retry consensus downloads the correct number of times,
- rather than the more aggressive client retry count. Fixes part of
- ticket 18809.
- - Stop downloading consensuses when we have a consensus, even if we
- don't have all the certificates for it yet. Fixes bug 18809;
- bugfix on 0.2.8.1-alpha. Patches by arma and teor.
- o Major bugfixes (directory mirrors):
- - Decide whether to advertise begindir support in the the same way
- we decide whether to advertise our DirPort. Allowing these
- decisions to become out-of-sync led to surprising behavior like
- advertising begindir support when hibernation made us not
- advertise a DirPort. Resolves bug 18616; bugfix on 0.2.8.1-alpha.
- Patch by teor.
- o Major bugfixes (IPv6 bridges, client):
- - Actually use IPv6 addresses when selecting directory addresses for
- IPv6 bridges. Fixes bug 18921; bugfix on 0.2.8.1-alpha. Patch
- by "teor".
- o Major bugfixes (key management):
- - If OpenSSL fails to generate an RSA key, do not retain a dangling
- pointer to the previous (uninitialized) key value. The impact here
- should be limited to a difficult-to-trigger crash, if OpenSSL is
- running an engine that makes key generation failures possible, or
- if OpenSSL runs out of memory. Fixes bug 19152; bugfix on
- 0.2.1.10-alpha. Found by Yuan Jochen Kang, Suman Jana, and
- Baishakhi Ray.
- o Major bugfixes (testing):
- - Fix a bug that would block 'make test-network-all' on systems where
- IPv6 packets were lost. Fixes bug 19008; bugfix on 0.2.7.3-rc.
- - Avoid "WSANOTINITIALISED" warnings in the unit tests. Fixes bug 18668;
- bugfix on 0.2.8.1-alpha.
- o Minor features (clients):
- - Make clients, onion services, and bridge relays always use an
- encrypted begindir connection for directory requests. Resolves
- ticket 18483. Patch by "teor".
- o Minor features (fallback directory mirrors):
- - Give each fallback the same weight for client selection; restrict
- fallbacks to one per operator; report fallback directory detail
- changes when rebuilding list; add new fallback directory mirrors
- to the whitelist; and many other minor simplifications and fixes.
- Closes tasks 17905, 18749, bug 18689, and fixes part of bug 18812 on
- 0.2.8.1-alpha; patch by "teor".
- - Replace the 21 fallbacks generated in January 2016 and included in
- Tor 0.2.8.1-alpha, with a list of 100 fallbacks generated in March
- 2016. Closes task 17158; patch by "teor".
- o Minor features (geoip):
- - Update geoip and geoip6 to the May 4 2016 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (assert, portability):
- - Fix an assertion failure in memarea.c on systems where "long" is
- shorter than the size of a pointer. Fixes bug 18716; bugfix
- on 0.2.1.1-alpha.
- o Minor bugfixes (bootstrap):
- - Consistently use the consensus download schedule for authority
- certificates. Fixes bug 18816; bugfix on 0.2.4.13-alpha.
- o Minor bugfixes (build):
- - Remove a pair of redundant AM_CONDITIONAL declarations from
- configure.ac. Fixes one final case of bug 17744; bugfix
- on 0.2.8.2-alpha.
- - Resolve warnings when building on systems that are concerned with
- signed char. Fixes bug 18728; bugfix on 0.2.7.2-alpha
- and 0.2.6.1-alpha.
- - When libscrypt.h is found, but no libscrypt library can be linked,
- treat libscrypt as absent. Fixes bug 19161; bugfix
- on 0.2.6.1-alpha.
- o Minor bugfixes (client):
- - Turn all TestingClientBootstrap* into non-testing torrc options.
- This changes simply renames them by removing "Testing" in front of
- them and they do not require TestingTorNetwork to be enabled
- anymore. Fixes bug 18481; bugfix on 0.2.8.1-alpha.
- - Make directory node selection more reliable, mainly for IPv6-only
- clients and clients with few reachable addresses. Fixes bug 18929;
- bugfix on 0.2.8.1-alpha. Patch by "teor".
- o Minor bugfixes (controller, microdescriptors):
- - Make GETINFO dir/status-vote/current/consensus conform to the
- control specification by returning "551 Could not open cached
- consensus..." when not caching consensuses. Fixes bug 18920;
- bugfix on 0.2.2.6-alpha.
- o Minor bugfixes (crypto, portability):
- - The SHA3 and SHAKE routines now produce the correct output on Big
- Endian systems. No code calls either algorithm yet, so this is
- primarily a build fix. Fixes bug 18943; bugfix on 0.2.8.1-alpha.
- - Tor now builds again with the recent OpenSSL 1.1 development
- branch (tested against 1.1.0-pre4 and 1.1.0-pre5-dev). Closes
- ticket 18286.
- o Minor bugfixes (directories):
- - When fetching extrainfo documents, compare their SHA256 digests
- and Ed25519 signing key certificates with the routerinfo that led
- us to fetch them, rather than with the most recent routerinfo.
- Otherwise we generate many spurious warnings about mismatches.
- Fixes bug 17150; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (logging):
- - When we can't generate a signing key because OfflineMasterKey is
- set, do not imply that we should have been able to load it. Fixes
- bug 18133; bugfix on 0.2.7.2-alpha.
- - Stop periodic_event_dispatch() from blasting twelve lines per
- second at loglevel debug. Fixes bug 18729; fix on 0.2.8.1-alpha.
- - When rejecting a misformed INTRODUCE2 cell, only log at
- PROTOCOL_WARN severity. Fixes bug 18761; bugfix on 0.2.8.2-alpha.
- o Minor bugfixes (pluggable transports):
- - Avoid reporting a spurious error when we decide that we don't need
- to terminate a pluggable transport because it has already exited.
- Fixes bug 18686; bugfix on 0.2.5.5-alpha.
- o Minor bugfixes (pointer arithmetic):
- - Fix a bug in memarea_alloc() that could have resulted in remote
- heap write access, if Tor had ever passed an unchecked size to
- memarea_alloc(). Fortunately, all the sizes we pass to
- memarea_alloc() are pre-checked to be less than 128 kilobytes.
- Fixes bug 19150; bugfix on 0.2.1.1-alpha. Bug found by
- Guido Vranken.
- o Minor bugfixes (relays):
- - Consider more config options when relays decide whether to
- regenerate their descriptor. Fixes more of bug 12538; bugfix
- on 0.2.8.1-alpha.
- - Resolve some edge cases where we might launch an ORPort
- reachability check even when DisableNetwork is set. Noticed while
- fixing bug 18616; bugfix on 0.2.3.9-alpha.
- o Minor bugfixes (statistics):
- - We now include consensus downloads via IPv6 in our directory-
- request statistics. Fixes bug 18460; bugfix on 0.2.3.14-alpha.
- o Minor bugfixes (testing):
- - Allow directories in small networks to bootstrap by skipping
- DirPort checks when the consensus has no exits. Fixes bug 19003;
- bugfix on 0.2.8.1-alpha. Patch by teor.
- - Fix a small memory leak that would occur when the
- TestingEnableCellStatsEvent option was turned on. Fixes bug 18673;
- bugfix on 0.2.5.2-alpha.
- o Minor bugfixes (time handling):
- - When correcting a corrupt 'struct tm' value, fill in the tm_wday
- field. Otherwise, our unit tests crash on Windows. Fixes bug
- 18977; bugfix on 0.2.2.25-alpha.
- o Documentation:
- - Document the contents of the 'datadir/keys' subdirectory in the
- manual page. Closes ticket 17621.
- - Stop recommending use of nicknames to identify relays in our
- MapAddress documentation. Closes ticket 18312.
- Changes in version 0.2.8.2-alpha - 2016-03-28
- Tor 0.2.8.2-alpha is the second alpha in its series. It fixes numerous
- bugs in earlier versions of Tor, including some that prevented
- authorities using Tor 0.2.7.x from running correctly. IPv6 and
- directory support should also be much improved.
- o New system requirements:
- - Tor no longer supports versions of OpenSSL with a broken
- implementation of counter mode. (This bug was present in OpenSSL
- 1.0.0, and was fixed in OpenSSL 1.0.0a.) Tor still detects, but no
- longer runs with, these versions.
- - Tor no longer attempts to support platforms where the "time_t"
- type is unsigned. (To the best of our knowledge, only OpenVMS does
- this, and Tor has never actually built on OpenVMS.) Closes
- ticket 18184.
- - Tor now uses Autoconf version 2.63 or later, and Automake 1.11 or
- later (released in 2008 and 2009 respectively). If you are
- building Tor from the git repository instead of from the source
- distribution, and your tools are older than this, you will need to
- upgrade. Closes ticket 17732.
- o Major bugfixes (security, pointers):
- - Avoid a difficult-to-trigger heap corruption attack when extending
- a smartlist to contain over 16GB of pointers. Fixes bug 18162;
- bugfix on 0.1.1.11-alpha, which fixed a related bug incompletely.
- Reported by Guido Vranken.
- o Major bugfixes (bridges, pluggable transports):
- - Modify the check for OR connections to private addresses. Allow
- bridges on private addresses, including pluggable transports that
- ignore the (potentially private) address in the bridge line. Fixes
- bug 18517; bugfix on 0.2.8.1-alpha. Reported by gk, patch by teor.
- o Major bugfixes (compilation):
- - Repair hardened builds under the clang compiler. Previously, our
- use of _FORTIFY_SOURCE would conflict with clang's address
- sanitizer. Fixes bug 14821; bugfix on 0.2.5.4-alpha.
- o Major bugfixes (crash on shutdown):
- - Correctly handle detaching circuits from muxes when shutting down.
- Fixes bug 18116; bugfix on 0.2.8.1-alpha.
- - Fix an assert-on-exit bug related to counting memory usage in
- rephist.c. Fixes bug 18651; bugfix on 0.2.8.1-alpha.
- o Major bugfixes (crash on startup):
- - Fix a segfault during startup: If a Unix domain socket was
- configured as listener (such as a ControlSocket or a SocksPort
- "unix:" socket), and tor was started as root but not configured to
- switch to another user, tor would segfault while trying to string
- compare a NULL value. Fixes bug 18261; bugfix on 0.2.8.1-alpha.
- Patch by weasel.
- o Major bugfixes (dns proxy mode, crash):
- - Avoid crashing when running as a DNS proxy. Fixes bug 16248;
- bugfix on 0.2.0.1-alpha. Patch from "cypherpunks".
- o Major bugfixes (relays, bridge clients):
- - Ensure relays always allow IPv4 OR and Dir connections. Ensure
- bridge clients use the address configured in the bridge line.
- Fixes bug 18348; bugfix on 0.2.8.1-alpha. Reported by sysrqb,
- patch by teor.
- o Major bugfixes (voting):
- - Actually enable support for authorities to match routers by their
- Ed25519 identities. Previously, the code had been written, but
- some debugging code that had accidentally been left in the
- codebase made it stay turned off. Fixes bug 17702; bugfix
- on 0.2.7.2-alpha.
- - When collating votes by Ed25519 identities, authorities now
- include a "NoEdConsensus" flag if the ed25519 value (or lack
- thereof) for a server does not reflect the majority consensus.
- Related to bug 17668; bugfix on 0.2.7.2-alpha.
- - When generating a vote with keypinning disabled, never include two
- entries for the same ed25519 identity. This bug was causing
- authorities to generate votes that they could not parse when a
- router violated key pinning by changing its RSA identity but
- keeping its Ed25519 identity. Fixes bug 17668; fixes part of bug
- 18318. Bugfix on 0.2.7.2-alpha.
- o Minor features (security, win32):
- - Set SO_EXCLUSIVEADDRUSE on Win32 to avoid a local port-stealing
- attack. Fixes bug 18123; bugfix on all tor versions. Patch
- by teor.
- o Minor features (bug-resistance):
- - Make Tor survive errors involving connections without a
- corresponding event object. Previously we'd fail with an
- assertion; now we produce a log message. Related to bug 16248.
- o Minor features (build):
- - Detect systems with FreeBSD-derived kernels (such as GNU/kFreeBSD)
- as having possible IPFW support. Closes ticket 18448. Patch from
- Steven Chamberlain.
- o Minor features (code hardening):
- - Use tor_snprintf() and tor_vsnprintf() even in external and low-
- level code, to harden against accidental failures to NUL-
- terminate. Part of ticket 17852. Patch from jsturgix. Found
- with Flawfinder.
- o Minor features (crypto):
- - Validate the hard-coded Diffie-Hellman parameters and ensure that
- p is a safe prime, and g is a suitable generator. Closes
- ticket 18221.
- o Minor features (geoip):
- - Update geoip and geoip6 to the March 3 2016 Maxmind GeoLite2
- Country database.
- o Minor features (hidden service directory):
- - Streamline relay-side hsdir handling: when relays consider whether
- to accept an uploaded hidden service descriptor, they no longer
- check whether they are one of the relays in the network that is
- "supposed" to handle that descriptor. Implements ticket 18332.
- o Minor features (IPv6):
- - Add ClientPreferIPv6DirPort, which is set to 0 by default. If set
- to 1, tor prefers IPv6 directory addresses.
- - Add ClientUseIPv4, which is set to 1 by default. If set to 0, tor
- avoids using IPv4 for client OR and directory connections.
- - Try harder to obey the IP version restrictions "ClientUseIPv4 0",
- "ClientUseIPv6 0", "ClientPreferIPv6ORPort", and
- "ClientPreferIPv6DirPort". Closes ticket 17840; patch by teor.
- o Minor features (linux seccomp2 sandbox):
- - Reject attempts to change our Address with "Sandbox 1" enabled.
- Changing Address with Sandbox turned on would never actually work,
- but previously it would fail in strange and confusing ways. Found
- while fixing 18548.
- o Minor features (robustness):
- - Exit immediately with an error message if the code attempts to use
- Libevent without having initialized it. This should resolve some
- frequently-made mistakes in our unit tests. Closes ticket 18241.
- o Minor features (unix domain sockets):
- - Add a new per-socket option, RelaxDirModeCheck, to allow creating
- Unix domain sockets without checking the permissions on the parent
- directory. (Tor checks permissions by default because some
- operating systems only check permissions on the parent directory.
- However, some operating systems do look at permissions on the
- socket, and tor's default check is unneeded.) Closes ticket 18458.
- Patch by weasel.
- o Minor bugfixes (exit policies, security):
- - Refresh an exit relay's exit policy when interface addresses
- change. Previously, tor only refreshed the exit policy when the
- configured external address changed. Fixes bug 18208; bugfix on
- 0.2.7.3-rc. Patch by teor.
- o Minor bugfixes (security, hidden services):
- - Prevent hidden services connecting to client-supplied rendezvous
- addresses that are reserved as internal or multicast. Fixes bug
- 8976; bugfix on 0.2.3.21-rc. Patch by dgoulet and teor.
- o Minor bugfixes (build):
- - Do not link the unit tests against both the testing and non-
- testing versions of the static libraries. Fixes bug 18490; bugfix
- on 0.2.7.1-alpha.
- - Avoid spurious failures from configure files related to calling
- exit(0) in TOR_SEARCH_LIBRARY. Fixes bug 18626; bugfix on
- 0.2.0.1-alpha. Patch from "cypherpunks".
- - Silence spurious clang-scan warnings in the ed25519_donna code by
- explicitly initializing some objects. Fixes bug 18384; bugfix on
- 0.2.7.2-alpha. Patch by teor.
- o Minor bugfixes (client, bootstrap):
- - Count receipt of new microdescriptors as progress towards
- bootstrapping. Previously, with EntryNodes set, Tor might not
- successfully repopulate the guard set on bootstrapping. Fixes bug
- 16825; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (code correctness):
- - Update to the latest version of Trunnel, which tries harder to
- avoid generating code that can invoke memcpy(p,NULL,0). Bug found
- by clang address sanitizer. Fixes bug 18373; bugfix
- on 0.2.7.2-alpha.
- o Minor bugfixes (configuration):
- - Fix a tiny memory leak when parsing a port configuration ending in
- ":auto". Fixes bug 18374; bugfix on 0.2.3.3-alpha.
- o Minor bugfixes (containers):
- - If we somehow attempt to construct a heap with more than
- 1073741822 elements, avoid an integer overflow when maintaining
- the heap property. Fixes bug 18296; bugfix on 0.1.2.1-alpha.
- o Minor bugfixes (correctness):
- - Fix a bad memory handling bug that would occur if we had queued a
- cell on a channel's incoming queue. Fortunately, we can't actually
- queue a cell like that as our code is constructed today, but it's
- best to avoid this kind of error, even if there isn't any code
- that triggers it today. Fixes bug 18570; bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (directory):
- - When generating a URL for a directory server on an IPv6 address,
- wrap the IPv6 address in square brackets. Fixes bug 18051; bugfix
- on 0.2.3.9-alpha. Patch from Malek.
- o Minor bugfixes (fallback directory mirrors):
- - When requesting extrainfo descriptors from a trusted directory
- server, check whether it is an authority or a fallback directory
- which supports extrainfo descriptors. Fixes bug 18489; bugfix on
- 0.2.4.7-alpha. Reported by atagar, patch by teor.
- o Minor bugfixes (hidden service, client):
- - Handle the case where the user makes several fast consecutive
- requests to the same .onion address. Previously, the first six
- requests would each trigger a descriptor fetch, each picking a
- directory (there are 6 overall) and the seventh one would fail
- because no directories were left, thereby triggering a close on
- all current directory connections asking for the hidden service.
- The solution here is to not close the connections if we have
- pending directory fetches. Fixes bug 15937; bugfix
- on 0.2.7.1-alpha.
- o Minor bugfixes (hidden service, control port):
- - Add the onion address to the HS_DESC event for the UPLOADED action
- both on success or failure. It was previously hardcoded with
- UNKNOWN. Fixes bug 16023; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (hidden service, directory):
- - Bridges now refuse "rendezvous2" (hidden service descriptor)
- publish attempts. Suggested by ticket 18332.
- o Minor bugfixes (linux seccomp2 sandbox):
- - Allow the setrlimit syscall, and the prlimit and prlimit64
- syscalls, which some libc implementations use under the hood.
- Fixes bug 15221; bugfix on 0.2.5.1-alpha.
- - Avoid a 10-second delay when starting as a client with "Sandbox 1"
- enabled and no DNS resolvers configured. This should help TAILS
- start up faster. Fixes bug 18548; bugfix on 0.2.5.1-alpha.
- - Fix the sandbox's interoperability with unix domain sockets under
- setuid. Fixes bug 18253; bugfix on 0.2.8.1-alpha.
- o Minor bugfixes (logging):
- - When logging information about an unparsable networkstatus vote or
- consensus, do not say "vote" when we mean consensus. Fixes bug
- 18368; bugfix on 0.2.0.8-alpha.
- - Scrub service name in "unrecognized service ID" log messages.
- Fixes bug 18600; bugfix on 0.2.4.11-alpha.
- - Downgrade logs and backtraces about IP versions to info-level.
- Only log backtraces once each time tor runs. Assists in diagnosing
- bug 18351; bugfix on 0.2.8.1-alpha. Reported by sysrqb and
- Christian, patch by teor.
- o Minor bugfixes (memory safety):
- - Avoid freeing an uninitialized pointer when opening a socket fails
- in get_interface_addresses_ioctl(). Fixes bug 18454; bugfix on
- 0.2.3.11-alpha. Reported by toralf and "cypherpunks", patch
- by teor.
- - Correctly duplicate addresses in get_interface_address6_list().
- Fixes bug 18454; bugfix on 0.2.8.1-alpha. Reported by toralf,
- patch by "cypherpunks".
- - Fix a memory leak in tor-gencert. Fixes part of bug 18672; bugfix
- on 0.2.0.1-alpha.
- - Fix a memory leak in "tor --list-fingerprint". Fixes part of bug
- 18672; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (private directory):
- - Prevent a race condition when creating private directories. Fixes
- part of bug 17852; bugfix on 0.0.2pre13. Part of ticket 17852.
- Patch from jsturgix. Found with Flawfinder.
- o Minor bugfixes (test networks, IPv6):
- - Allow internal IPv6 addresses in descriptors in test networks.
- Fixes bug 17153; bugfix on 0.2.3.16-alpha. Patch by teor, reported
- by karsten.
- o Minor bugfixes (testing):
- - We no longer disable assertions in the unit tests when coverage is
- enabled. Instead, we require you to say --disable-asserts-in-tests
- to the configure script if you need assertions disabled in the
- unit tests (for example, if you want to perform branch coverage).
- Fixes bug 18242; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (time parsing):
- - Avoid overflow in tor_timegm when parsing dates in and after 2038
- on platforms with 32-bit time_t. Fixes bug 18479; bugfix on
- 0.0.2pre14. Patch by teor.
- o Minor bugfixes (tor-gencert):
- - Correctly handle the case where an authority operator enters a
- passphrase but sends an EOF before sending a newline. Fixes bug
- 17443; bugfix on 0.2.0.20-rc. Found by junglefowl.
- o Code simplification and refactoring:
- - Quote all the string interpolations in configure.ac -- even those
- which we are pretty sure can't contain spaces. Closes ticket
- 17744. Patch from zerosion.
- - Remove specialized code for non-inplace AES_CTR. 99% of our AES is
- inplace, so there's no need to have a separate implementation for
- the non-inplace code. Closes ticket 18258. Patch from Malek.
- - Simplify return types for some crypto functions that can't
- actually fail. Patch from Hassan Alsibyani. Closes ticket 18259.
- o Documentation:
- - Change build messages to refer to "Fedora" instead of "Fedora
- Core", and "dnf" instead of "yum". Closes tickets 18459 and 18426.
- Patches from "icanhasaccount" and "cypherpunks".
- o Removed features:
- - We no longer maintain an internal freelist in memarea.c.
- Allocators should be good enough to make this code unnecessary,
- and it's doubtful that it ever had any performance benefit.
- o Testing:
- - Fix several warnings from clang's address sanitizer produced in
- the unit tests.
- - Treat backtrace test failures as expected on FreeBSD until we
- solve bug 17808. Closes ticket 18204.
- Changes in version 0.2.8.1-alpha - 2016-02-04
- Tor 0.2.8.1-alpha is the first alpha release in its series. It
- includes numerous small features and bugfixes against previous Tor
- versions, and numerous small infrastructure improvements. The most
- notable features are a set of improvements to the directory subsystem.
- o Major features (security, Linux):
- - When Tor starts as root on Linux and is told to switch user ID, it
- can now retain the capability to bind to low ports. By default,
- Tor will do this only when it's switching user ID and some low
- ports have been configured. You can change this behavior with the
- new option KeepBindCapabilities. Closes ticket 8195.
- o Major features (directory system):
- - When bootstrapping multiple consensus downloads at a time, use the
- first one that starts downloading, and close the rest. This
- reduces failures when authorities or fallback directories are slow
- or down. Together with the code for feature 15775, this feature
- should reduces failures due to fallback churn. Implements ticket
- 4483. Patch by "teor". Implements IPv4 portions of proposal 210 by
- "mikeperry" and "teor".
- - Include a trial list of 21 default fallback directories, generated
- in January 2016, based on an opt-in survey of suitable relays.
- Doing this should make clients bootstrap more quickly and reliably,
- and reduce the load on the directory authorities. Closes ticket
- 15775. Patch by "teor".
- Candidates identified using an OnionOO script by "weasel", "teor",
- "gsathya", and "karsten".
- - Previously only relays that explicitly opened a directory port
- (DirPort) accepted directory requests from clients. Now all
- relays, with and without a DirPort, accept and serve tunneled
- directory requests that they receive through their ORPort. You can
- disable this behavior using the new DirCache option. Closes
- ticket 12538.
- o Major key updates:
- - Update the V3 identity key for the dannenberg directory authority:
- it was changed on 18 November 2015. Closes task 17906. Patch
- by "teor".
- o Minor features (security, clock):
- - Warn when the system clock appears to move back in time (when the
- state file was last written in the future). Tor doesn't know that
- consensuses have expired if the clock is in the past. Patch by
- "teor". Implements ticket 17188.
- o Minor features (security, exit policies):
- - ExitPolicyRejectPrivate now rejects more private addresses by
- default. Specifically, it now rejects the relay's outbound bind
- addresses (if configured), and the relay's configured port
- addresses (such as ORPort and DirPort). Fixes bug 17027; bugfix on
- 0.2.0.11-alpha. Patch by "teor".
- o Minor features (security, memory erasure):
- - Set the unused entries in a smartlist to NULL. This helped catch
- a (harmless) bug, and shouldn't affect performance too much.
- Implements ticket 17026.
- - Use SecureMemoryWipe() function to securely clean memory on
- Windows. Previously we'd use OpenSSL's OPENSSL_cleanse() function.
- Implements feature 17986.
- - Use explicit_bzero or memset_s when present. Previously, we'd use
- OpenSSL's OPENSSL_cleanse() function. Closes ticket 7419; patches
- from <logan@hackers.mu> and <selven@hackers.mu>.
- - Make memwipe() do nothing when passed a NULL pointer or buffer of
- zero size. Check size argument to memwipe() for underflow. Fixes
- bug 18089; bugfix on 0.2.3.25 and 0.2.4.6-alpha. Reported by "gk",
- patch by "teor".
- o Minor features (security, RNG):
- - Adjust Tor's use of OpenSSL's RNG APIs so that they absolutely,
- positively are not allowed to fail. Previously we depended on
- internal details of OpenSSL's behavior. Closes ticket 17686.
- - Never use the system entropy output directly for anything besides
- seeding the PRNG. When we want to generate important keys, instead
- of using system entropy directly, we now hash it with the PRNG
- stream. This may help resist certain attacks based on broken OS
- entropy implementations. Closes part of ticket 17694.
- - Use modern system calls (like getentropy() or getrandom()) to
- generate strong entropy on platforms that have them. Closes
- ticket 13696.
- o Minor features (accounting):
- - Added two modes to the AccountingRule option: One for limiting
- only the number of bytes sent ("AccountingRule out"), and one for
- limiting only the number of bytes received ("AccountingRule in").
- Closes ticket 15989; patch from "unixninja92".
- o Minor features (build):
- - Since our build process now uses "make distcheck", we no longer
- force "make dist" to depend on "make check". Closes ticket 17893;
- patch from "cypherpunks."
- - Tor now builds successfully with the recent OpenSSL 1.1
- development branch, and with the latest LibreSSL. Closes tickets
- 17549, 17921, and 17984.
- o Minor features (controller):
- - Adds the FallbackDir entries to 'GETINFO config/defaults'. Closes
- tickets 16774 and 17817. Patch by George Tankersley.
- - New 'GETINFO hs/service/desc/id/' command to retrieve a hidden
- service descriptor from a service's local hidden service
- descriptor cache. Closes ticket 14846.
- - Add 'GETINFO exit-policy/reject-private/[default,relay]', so
- controllers can examine the the reject rules added by
- ExitPolicyRejectPrivate. This makes it easier for stem to display
- exit policies.
- o Minor features (crypto):
- - Add SHA512 support to crypto.c. Closes ticket 17663; patch from
- George Tankersley.
- - Add SHA3 and SHAKE support to crypto.c. Closes ticket 17783.
- - When allocating a digest state object, allocate no more space than
- we actually need. Previously, we would allocate as much space as
- the state for the largest algorithm would need. This change saves
- up to 672 bytes per circuit. Closes ticket 17796.
- - Improve performance when hashing non-multiple of 8 sized buffers,
- based on Andrew Moon's public domain SipHash-2-4 implementation.
- Fixes bug 17544; bugfix on 0.2.5.3-alpha.
- o Minor features (directory downloads):
- - Wait for busy authorities and fallback directories to become non-
- busy when bootstrapping. (A similar change was made in 6c443e987d
- for directory caches chosen from the consensus.) Closes ticket
- 17864; patch by "teor".
- - Add UseDefaultFallbackDirs, which enables any hard-coded fallback
- directory mirrors. The default is 1; set it to 0 to disable
- fallbacks. Implements ticket 17576. Patch by "teor".
- o Minor features (geoip):
- - Update geoip and geoip6 to the January 5 2016 Maxmind GeoLite2
- Country database.
- o Minor features (IPv6):
- - Add an argument 'ipv6=address:orport' to the DirAuthority and
- FallbackDir torrc options, to specify an IPv6 address for an
- authority or fallback directory. Add hard-coded ipv6 addresses for
- directory authorities that have them. Closes ticket 17327; patch
- from Nick Mathewson and "teor".
- - Add address policy assume_action support for IPv6 addresses.
- - Limit IPv6 mask bits to 128.
- - Warn when comparing against an AF_UNSPEC address in a policy, it's
- almost always a bug. Closes ticket 17863; patch by "teor".
- - Allow users to configure directory authorities and fallback
- directory servers with IPv6 addresses and ORPorts. Resolves
- ticket 6027.
- - routerset_parse now accepts IPv6 literal addresses. Fixes bug
- 17060; bugfix on 0.2.1.3-alpha. Patch by "teor".
- - Make tor_ersatz_socketpair work on IPv6-only systems. Fixes bug
- 17638; bugfix on 0.0.2pre8. Patch by "teor".
- o Minor features (logging):
- - When logging to syslog, allow a tag to be added to the syslog
- identity (the string prepended to every log message). The tag can
- be configured with SyslogIdentityTag and defaults to none. Setting
- it to "foo" will cause logs to be tagged as "Tor-foo". Closes
- ticket 17194.
- o Minor features (portability):
- - Use timingsafe_memcmp() where available. Closes ticket 17944;
- patch from <logan@hackers.mu>.
- o Minor features (relay, address discovery):
- - Add a family argument to get_interface_addresses_raw() and
- subfunctions to make network interface address interogation more
- efficient. Now Tor can specifically ask for IPv4, IPv6 or both
- types of interfaces from the operating system. Resolves
- ticket 17950.
- - When get_interface_address6_list(.,AF_UNSPEC,.) is called and
- fails to enumerate interface addresses using the platform-specific
- API, have it rely on the UDP socket fallback technique to try and
- find out what IP addresses (both IPv4 and IPv6) our machine has.
- Resolves ticket 17951.
- o Minor features (replay cache):
- - The replay cache now uses SHA256 instead of SHA1. Implements
- feature 8961. Patch by "teor", issue reported by "rransom".
- o Minor features (unix file permissions):
- - Defer creation of Unix sockets until after setuid. This avoids
- needing CAP_CHOWN and CAP_FOWNER when using systemd's
- CapabilityBoundingSet, or chown and fowner when using SELinux.
- Implements part of ticket 17562. Patch from Jamie Nguyen.
- - If any directory created by Tor is marked as group readable, the
- filesystem group is allowed to be either the default GID or the
- root user. Allowing root to read the DataDirectory prevents the
- need for CAP_READ_SEARCH when using systemd's
- CapabilityBoundingSet, or dac_read_search when using SELinux.
- Implements part of ticket 17562. Patch from Jamie Nguyen.
- - Introduce a new DataDirectoryGroupReadable option. If it is set to
- 1, the DataDirectory will be made readable by the default GID.
- Implements part of ticket 17562. Patch from Jamie Nguyen.
- o Minor bugfixes (accounting):
- - The max bandwidth when using 'AccountRule sum' is now correctly
- logged. Fixes bug 18024; bugfix on 0.2.6.1-alpha. Patch
- from "unixninja92".
- o Minor bugfixes (code correctness):
- - When closing an entry connection, generate a warning if we should
- have sent an end cell for it but we haven't. Fixes bug 17876;
- bugfix on 0.2.3.2-alpha.
- - Assert that allocated memory held by the reputation code is freed
- according to its internal counters. Fixes bug 17753; bugfix
- on 0.1.1.1-alpha.
- - Assert when the TLS contexts fail to initialize. Fixes bug 17683;
- bugfix on 0.0.6.
- o Minor bugfixes (compilation):
- - Mark all object files that include micro-revision.i as depending
- on it, so as to make parallel builds more reliable. Fixes bug
- 17826; bugfix on 0.2.5.1-alpha.
- - Don't try to use the pthread_condattr_setclock() function unless
- it actually exists. Fixes compilation on NetBSD-6.x. Fixes bug
- 17819; bugfix on 0.2.6.3-alpha.
- - Fix backtrace compilation on FreeBSD. Fixes bug 17827; bugfix
- on 0.2.5.2-alpha.
- - Fix compilation of sandbox.c with musl-libc. Fixes bug 17347;
- bugfix on 0.2.5.1-alpha. Patch from 'jamestk'.
- - Fix search for libevent libraries on OpenBSD (and other systems
- that install libevent 1 and libevent 2 in parallel). Fixes bug
- 16651; bugfix on 0.1.0.7-rc. Patch from "rubiate".
- - Isolate environment variables meant for tests from the rest of the
- build system. Fixes bug 17818; bugfix on 0.2.7.3-rc.
- - Replace usage of 'INLINE' with 'inline'. Fixes bug 17804; bugfix
- on 0.0.2pre8.
- - Remove config.log only from make distclean, not from make clean.
- Fixes bug 17924; bugfix on 0.2.4.1-alpha.
- o Minor bugfixes (crypto):
- - Check the return value of HMAC() and assert on failure. Fixes bug
- 17658; bugfix on 0.2.3.6-alpha. Patch by "teor".
- o Minor bugfixes (fallback directories):
- - Mark fallbacks as "too busy" when they return a 503 response,
- rather than just marking authorities. Fixes bug 17572; bugfix on
- 0.2.4.7-alpha. Patch by "teor".
- o Minor bugfixes (IPv6):
- - Update the limits in max_dl_per_request for IPv6 address length.
- Fixes bug 17573; bugfix on 0.2.1.5-alpha.
- o Minor bugfixes (linux seccomp2 sandbox):
- - Fix a crash when using offline master ed25519 keys with the Linux
- seccomp2 sandbox enabled. Fixes bug 17675; bugfix on 0.2.7.3-rc.
- o Minor bugfixes (logging):
- - In log messages that include a function name, use __FUNCTION__
- instead of __PRETTY_FUNCTION__. In GCC, these are synonymous, but
- with clang __PRETTY_FUNCTION__ has extra information we don't
- need. Fixes bug 16563; bugfix on 0.0.2pre8. Fix by Tom van
- der Woerdt.
- - Remove needless quotes from a log message about unparseable
- addresses. Fixes bug 17843; bugfix on 0.2.3.3-alpha.
- o Minor bugfixes (portability):
- - Remove an #endif from configure.ac so that we correctly detect the
- presence of in6_addr.s6_addr32. Fixes bug 17923; bugfix
- on 0.2.0.13-alpha.
- o Minor bugfixes (relays):
- - Check that both the ORPort and DirPort (if present) are reachable
- before publishing a relay descriptor. Otherwise, relays publish a
- descriptor with DirPort 0 when the DirPort reachability test takes
- longer than the ORPort reachability test. Fixes bug 18050; bugfix
- on 0.1.0.1-rc. Reported by "starlight", patch by "teor".
- o Minor bugfixes (relays, hidden services):
- - Refuse connection requests to private OR addresses unless
- ExtendAllowPrivateAddresses is set. Previously, tor would connect,
- then refuse to send any cells to a private address. Fixes bugs
- 17674 and 8976; bugfix on 0.2.3.21-rc. Patch by "teor".
- o Minor bugfixes (safe logging):
- - When logging a malformed hostname received through socks4, scrub
- it if SafeLogging says we should. Fixes bug 17419; bugfix
- on 0.1.1.16-rc.
- o Minor bugfixes (statistics code):
- - Consistently check for overflow in round_*_to_next_multiple_of
- functions, and add unit tests with additional and maximal values.
- Fixes part of bug 13192; bugfix on 0.2.2.1-alpha.
- - Handle edge cases in the laplace functions: avoid division by
- zero, avoid taking the log of zero, and silence clang type
- conversion warnings using round and trunc. Add unit tests for edge
- cases with maximal values. Fixes part of bug 13192; bugfix
- on 0.2.6.2-alpha.
- o Minor bugfixes (testing):
- - The test for log_heartbeat was incorrectly failing in timezones
- with non-integer offsets. Instead of comparing the end of the time
- string against a constant, compare it to the output of
- format_local_iso_time when given the correct input. Fixes bug
- 18039; bugfix on 0.2.5.4-alpha.
- - Make unit tests pass on IPv6-only systems, and systems without
- localhost addresses (like some FreeBSD jails). Fixes bug 17632;
- bugfix on 0.2.7.3-rc. Patch by "teor".
- - Fix a memory leak in the ntor test. Fixes bug 17778; bugfix
- on 0.2.4.8-alpha.
- - Check the full results of SHA256 and SHA512 digests in the unit
- tests. Bugfix on 0.2.2.4-alpha. Patch by "teor".
- o Code simplification and refactoring:
- - Move logging of redundant policy entries in
- policies_parse_exit_policy_internal into its own function. Closes
- ticket 17608; patch from "juce".
- - Extract the more complicated parts of circuit_mark_for_close()
- into a new function that we run periodically before circuits are
- freed. This change removes more than half of the functions
- currently in the "blob". Closes ticket 17218.
- - Clean up a little duplicated code in
- crypto_expand_key_material_TAP(). Closes ticket 17587; patch
- from "pfrankw".
- - Decouple the list of streams waiting to be attached to circuits
- from the overall connection list. This change makes it possible to
- attach streams quickly while simplifying Tor's callgraph and
- avoiding O(N) scans of the entire connection list. Closes
- ticket 17590.
- - When a direct directory request fails immediately on launch,
- instead of relaunching that request from inside the code that
- launches it, instead mark the connection for teardown. This change
- simplifies Tor's callback and prevents the directory-request
- launching code from invoking itself recursively. Closes
- ticket 17589
- - Remove code for configuring OpenSSL dynamic locks; OpenSSL doesn't
- use them. Closes ticket 17926.
- o Documentation:
- - Add a description of the correct use of the '--keygen' command-
- line option. Closes ticket 17583; based on text by 's7r'.
- - Document the minimum HeartbeatPeriod value. Closes ticket 15638.
- - Explain actual minima for BandwidthRate. Closes ticket 16382.
- - Fix a minor formatting typo in the manpage. Closes ticket 17791.
- - Mention torspec URL in the manpage and point the reader to it
- whenever we mention a document that belongs in torspce. Fixes
- issue 17392.
- o Removed features:
- - Remove client-side support for connecting to Tor relays running
- versions of Tor before 0.2.3.6-alpha. These relays didn't support
- the v3 TLS handshake protocol, and are no longer allowed on the
- Tor network. Implements the client side of ticket 11150. Based on
- patches by Tom van der Woerdt.
- o Testing:
- - Add unit tests to check for common RNG failure modes, such as
- returning all zeroes, identical values, or incrementing values
- (OpenSSL's rand_predictable feature). Patch by "teor".
- - Log more information when the backtrace tests fail. Closes ticket
- 17892. Patch from "cypherpunks."
- - Always test both ed25519 backends, so that we can be sure that our
- batch-open replacement code works. Part of ticket 16794.
- - Cover dns_resolve_impl() in dns.c with unit tests. Implements a
- portion of ticket 16831.
- - More unit tests for compat_libevent.c, procmon.c, tortls.c,
- util_format.c, directory.c, and options_validate.c. Closes tickets
- 17075, 17082, 17084, 17003, and 17076 respectively. Patches from
- Ola Bini.
- - Unit tests for directory_handle_command_get. Closes ticket 17004.
- Patch from Reinaldo de Souza Jr.
- Changes in version 0.2.7.6 - 2015-12-10
- Tor version 0.2.7.6 fixes a major bug in entry guard selection, as
- well as a minor bug in hidden service reliability.
- o Major bugfixes (guard selection):
- - Actually look at the Guard flag when selecting a new directory
- guard. When we implemented the directory guard design, we
- accidentally started treating all relays as if they have the Guard
- flag during guard selection, leading to weaker anonymity and worse
- performance. Fixes bug 17772; bugfix on 0.2.4.8-alpha. Discovered
- by Mohsen Imani.
- o Minor features (geoip):
- - Update geoip and geoip6 to the December 1 2015 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - When checking for net/pfvar.h, include netinet/in.h if possible.
- This fixes transparent proxy detection on OpenBSD. Fixes bug
- 17551; bugfix on 0.1.2.1-alpha. Patch from "rubiate".
- - Fix a compilation warning with Clang 3.6: Do not check the
- presence of an address which can never be NULL. Fixes bug 17781.
- o Minor bugfixes (correctness):
- - When displaying an IPv6 exit policy, include the mask bits
- correctly even when the number is greater than 31. Fixes bug
- 16056; bugfix on 0.2.4.7-alpha. Patch from "gturner".
- - The wrong list was used when looking up expired intro points in a
- rend service object, causing what we think could be reachability
- issues for hidden services, and triggering a BUG log. Fixes bug
- 16702; bugfix on 0.2.7.2-alpha.
- - Fix undefined behavior in the tor_cert_checksig function. Fixes
- bug 17722; bugfix on 0.2.7.2-alpha.
- Changes in version 0.2.7.5 - 2015-11-20
- The Tor 0.2.7 release series is dedicated to the memory of Tor user
- and privacy advocate Caspar Bowden (1961-2015). Caspar worked
- tirelessly to advocate human rights regardless of national borders,
- and oppose the encroachments of mass surveillance. He opposed national
- exceptionalism, he brought clarity to legal and policy debates, he
- understood and predicted the impact of mass surveillance on the world,
- and he laid the groundwork for resisting it. While serving on the Tor
- Project's board of directors, he brought us his uncompromising focus
- on technical excellence in the service of humankind. Caspar was an
- inimitable force for good and a wonderful friend. He was kind,
- humorous, generous, gallant, and believed we should protect one
- another without exception. We honor him here for his ideals, his
- efforts, and his accomplishments. Please honor his memory with works
- that would make him proud.
- Tor 0.2.7.5 is the first stable release in the Tor 0.2.7 series.
- The 0.2.7 series adds a more secure identity key type for relays,
- improves cryptography performance, resolves several longstanding
- hidden-service performance issues, improves controller support for
- hidden services, and includes small bugfixes and performance
- improvements throughout the program. This release series also includes
- more tests than before, and significant simplifications to which parts
- of Tor invoke which others.
- (This release contains no code changes since 0.2.7.4-rc.)
- Changes in version 0.2.7.4-rc - 2015-10-21
- Tor 0.2.7.4-rc is the second release candidate in the 0.2.7 series. It
- fixes some important memory leaks, and a scary-looking (but mostly
- harmless in practice) invalid-read bug. It also has a few small
- bugfixes, notably fixes for compilation and portability on different
- platforms. If no further significant bounds are found, the next
- release will the the official stable release.
- o Major bugfixes (security, correctness):
- - Fix an error that could cause us to read 4 bytes before the
- beginning of an openssl string. This bug could be used to cause
- Tor to crash on systems with unusual malloc implementations, or
- systems with unusual hardening installed. Fixes bug 17404; bugfix
- on 0.2.3.6-alpha.
- o Major bugfixes (correctness):
- - Fix a use-after-free bug in validate_intro_point_failure(). Fixes
- bug 17401; bugfix on 0.2.7.3-rc.
- o Major bugfixes (memory leaks):
- - Fix a memory leak in ed25519 batch signature checking. Fixes bug
- 17398; bugfix on 0.2.6.1-alpha.
- - Fix a memory leak in rend_cache_failure_entry_free(). Fixes bug
- 17402; bugfix on 0.2.7.3-rc.
- - Fix a memory leak when reading an expired signing key from disk.
- Fixes bug 17403; bugfix on 0.2.7.2-rc.
- o Minor features (geoIP):
- - Update geoip and geoip6 to the October 9 2015 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (compilation):
- - Repair compilation with the most recent (unreleased, alpha)
- vesions of OpenSSL 1.1. Fixes part of ticket 17237.
- - Fix an integer overflow warning in test_crypto_slow.c. Fixes bug
- 17251; bugfix on 0.2.7.2-alpha.
- - Fix compilation of sandbox.c with musl-libc. Fixes bug 17347;
- bugfix on 0.2.5.1-alpha. Patch from 'jamestk'.
- o Minor bugfixes (portability):
- - Use libexecinfo on FreeBSD to enable backtrace support. Fixes
- part of bug 17151; bugfix on 0.2.5.2-alpha. Patch from
- Marcin Cieślak.
- o Minor bugfixes (sandbox):
- - Add the "hidserv-stats" filename to our sandbox filter for the
- HiddenServiceStatistics option to work properly. Fixes bug 17354;
- bugfix on 0.2.6.2-alpha. Patch from David Goulet.
- o Minor bugfixes (testing):
- - Add unit tests for get_interface_address* failure cases. Fixes bug
- 17173; bugfix on 0.2.7.3-rc. Patch by fk/teor.
- - Fix breakage when running 'make check' with BSD make. Fixes bug
- 17154; bugfix on 0.2.7.3-rc. Patch by Marcin Cieślak.
- - Make the get_ifaddrs_* unit tests more tolerant of different
- network configurations. (Don't assume every test box has an IPv4
- address, and don't assume every test box has a non-localhost
- address.) Fixes bug 17255; bugfix on 0.2.7.3-rc. Patch by "teor".
- - Skip backtrace tests when backtrace support is not compiled in.
- Fixes part of bug 17151; bugfix on 0.2.7.1-alpha. Patch from
- Marcin Cieślak.
- o Documentation:
- - Fix capitalization of SOCKS in sample torrc. Closes ticket 15609.
- - Note that HiddenServicePorts can take a unix domain socket. Closes
- ticket 17364.
- Changes in version 0.2.7.3-rc - 2015-09-25
- Tor 0.2.7.3-rc is the first release candidate in the 0.2.7 series. It
- contains numerous usability fixes for Ed25519 keys, safeguards against
- several misconfiguration problems, significant simplifications to
- Tor's callgraph, and numerous bugfixes and small features.
- This is the most tested release of Tor to date. The unit tests cover
- 39.40% of the code, and the integration tests (accessible with "make
- test-full-online", requiring stem and chutney and a network
- connection) raise the coverage to 64.49%.
- o Major features (security, hidden services):
- - Hidden services, if using the EntryNodes option, are required to
- use more than one EntryNode, in order to avoid a guard discovery
- attack. (This would only affect people who had configured hidden
- services and manually specified the EntryNodes option with a
- single entry-node. The impact was that it would be easy to
- remotely identify the guard node used by such a hidden service.
- See ticket for more information.) Fixes ticket 14917.
- o Major features (Ed25519 keys, keypinning):
- - The key-pinning option on directory authorities is now advisory-
- only by default. In a future version, or when the AuthDirPinKeys
- option is set, pins are enforced again. Disabling key-pinning
- seemed like a good idea so that we can survive the fallout of any
- usability problems associated with Ed25519 keys. Closes
- ticket 17135.
- o Major features (Ed25519 performance):
- - Improve the speed of Ed25519 operations and Curve25519 keypair
- generation when built targeting 32 bit x86 platforms with SSE2
- available. Implements ticket 16535.
- - Improve the runtime speed of Ed25519 signature verification by
- using Ed25519-donna's batch verification support. Implements
- ticket 16533.
- o Major features (performance testing):
- - The test-network.sh script now supports performance testing.
- Requires corresponding chutney performance testing changes. Patch
- by "teor". Closes ticket 14175.
- o Major features (relay, Ed25519):
- - Significant usability improvements for Ed25519 key management. Log
- messages are better, and the code can recover from far more
- failure conditions. Thanks to "s7r" for reporting and diagnosing
- so many of these!
- - Add a new OfflineMasterKey option to tell Tor never to try loading
- or generating a secret Ed25519 identity key. You can use this in
- combination with tor --keygen to manage offline and/or encrypted
- Ed25519 keys. Implements ticket 16944.
- - Add a --newpass option to allow changing or removing the
- passphrase of an encrypted key with tor --keygen. Implements part
- of ticket 16769.
- - On receiving a HUP signal, check to see whether the Ed25519
- signing key has changed, and reload it if so. Closes ticket 16790.
- o Major bugfixes (relay, Ed25519):
- - Avoid crashing on 'tor --keygen'. Fixes bug 16679; bugfix on
- 0.2.7.2-alpha. Reported by "s7r".
- - Improve handling of expired signing keys with offline master keys.
- Fixes bug 16685; bugfix on 0.2.7.2-alpha. Reported by "s7r".
- o Minor features (client-side privacy):
- - New KeepAliveIsolateSOCKSAuth option to indefinitely extend circuit
- lifespan when IsolateSOCKSAuth and streams with SOCKS
- authentication are attached to the circuit. This allows
- applications like TorBrowser to manage circuit lifetime on their
- own. Implements feature 15482.
- - When logging malformed hostnames from SOCKS5 requests, respect
- SafeLogging configuration. Fixes bug 16891; bugfix on 0.1.1.16-rc.
- o Minor features (compilation):
- - Give a warning as early as possible when trying to build with an
- unsupported OpenSSL version. Closes ticket 16901.
- - Fail during configure if we're trying to build against an OpenSSL
- built without ECC support. Fixes bug 17109, bugfix on 0.2.7.1-alpha
- which started requiring ECC.
- o Minor features (geoip):
- - Update geoip and geoip6 to the September 3 2015 Maxmind GeoLite2
- Country database.
- o Minor features (hidden services):
- - Relays need to have the Fast flag to get the HSDir flag. As this
- is being written, we'll go from 2745 HSDirs down to 2342, a ~14%
- drop. This change should make some attacks against the hidden
- service directory system harder. Fixes ticket 15963.
- - Turn on hidden service statistics collection by setting the torrc
- option HiddenServiceStatistics to "1" by default. (This keeps
- track only of the fraction of traffic used by hidden services, and
- the total number of hidden services in existence.) Closes
- ticket 15254.
- - Client now uses an introduction point failure cache to know when
- to fetch or keep a descriptor in their cache. Previously, failures
- were recorded implicitly, but not explicitly remembered. Closes
- ticket 16389.
- o Minor features (testing, authorities, documentation):
- - New TestingDirAuthVote{Exit,Guard,HSDir}IsStrict flags to
- explicitly manage consensus flags in testing networks. Patch by
- "robgjansen", modified by "teor". Implements part of ticket 14882.
- o Minor bugfixes (security, exit policies):
- - ExitPolicyRejectPrivate now also rejects the relay's published
- IPv6 address (if any), and any publicly routable IPv4 or IPv6
- addresses on any local interfaces. ticket 17027. Patch by "teor".
- Fixes bug 17027; bugfix on 0.2.0.11-alpha.
- o Minor bug fixes (torrc exit policies):
- - In torrc, "accept6 *" and "reject6 *" ExitPolicy lines now only
- produce IPv6 wildcard addresses. Previously they would produce
- both IPv4 and IPv6 wildcard addresses. Patch by "teor". Fixes part
- of bug 16069; bugfix on 0.2.4.7-alpha.
- - When parsing torrc ExitPolicies, we now warn for a number of cases
- where the user's intent is likely to differ from Tor's actual
- behavior. These include: using an IPv4 address with an accept6 or
- reject6 line; using "private" on an accept6 or reject6 line; and
- including any ExitPolicy lines after accept *:* or reject *:*.
- Related to ticket 16069.
- - When parsing torrc ExitPolicies, we now issue an info-level
- message when expanding an "accept/reject *" line to include both
- IPv4 and IPv6 wildcard addresses. Related to ticket 16069.
- - In each instance above, usage advice is provided to avoid the
- message. Resolves ticket 16069. Patch by "teor". Fixes part of bug
- 16069; bugfix on 0.2.4.7-alpha.
- o Minor bugfixes (authority):
- - Don't assign "HSDir" to a router if it isn't Valid and Running.
- Fixes bug 16524; bugfix on 0.2.7.2-alpha.
- - Downgrade log messages about Ed25519 key issues if they are in old
- cached router descriptors. Fixes part of bug 16286; bugfix
- on 0.2.7.2-alpha.
- - When we find an Ed25519 key issue in a cached descriptor, stop
- saying the descriptor was just "uploaded". Fixes another part of
- bug 16286; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (control port):
- - Repair a warning and a spurious result when getting the maximum
- number of file descriptors from the controller. Fixes bug 16697;
- bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (correctness):
- - When calling channel_free_list(), avoid calling smartlist_remove()
- while inside a FOREACH loop. This partially reverts commit
- 17356fe7fd96af where the correct SMARTLIST_DEL_CURRENT was
- incorrectly removed. Fixes bug 16924; bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (documentation):
- - Advise users on how to configure separate IPv4 and IPv6 exit
- policies in the manpage and sample torrcs. Related to ticket 16069.
- - Fix the usage message of tor-resolve(1) so that it no longer lists
- the removed -F option. Fixes bug 16913; bugfix on 0.2.2.28-beta.
- - Fix an error in the manual page and comments for
- TestingDirAuthVoteHSDir[IsStrict], which suggested that a HSDir
- required "ORPort connectivity". While this is true, it is in no
- way unique to the HSDir flag. Of all the flags, only HSDirs need a
- DirPort configured in order for the authorities to assign that
- particular flag. Patch by "teor". Fixed as part of 14882; bugfix
- on 0.2.6.3-alpha.
- o Minor bugfixes (Ed25519):
- - Fix a memory leak when reading router descriptors with expired
- Ed25519 certificates. Fixes bug 16539; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (linux seccomp2 sandbox):
- - Allow bridge authorities to run correctly under the seccomp2
- sandbox. Fixes bug 16964; bugfix on 0.2.5.1-alpha.
- - Allow routers with ed25519 keys to run correctly under the
- seccomp2 sandbox. Fixes bug 16965; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (open file limit):
- - Fix set_max_file_descriptors() to set by default the max open file
- limit to the current limit when setrlimit() fails. Fixes bug
- 16274; bugfix on 0.2.0.10-alpha. Patch by dgoulet.
- o Minor bugfixes (portability):
- - Try harder to normalize the exit status of the Tor process to the
- standard-provided range. Fixes bug 16975; bugfix on every version
- of Tor ever.
- - Check correctly for Windows socket errors in the workqueue
- backend. Fixes bug 16741; bugfix on 0.2.6.3-alpha.
- - Fix the behavior of crypto_rand_time_range() when told to consider
- times before 1970. (These times were possible when running in a
- simulated network environment where time()'s output starts at
- zero.) Fixes bug 16980; bugfix on 0.2.7.1-alpha.
- - Restore correct operation of TLS client-cipher detection on
- OpenSSL 1.1. Fixes bug 14047; bugfix on 0.2.7.2-alpha.
- o Minor bugfixes (relay):
- - Ensure that worker threads actually exit when a fatal error or
- shutdown is indicated. This fix doesn't currently affect the
- behavior of Tor, because Tor workers never indicates fatal error
- or shutdown except in the unit tests. Fixes bug 16868; bugfix
- on 0.2.6.3-alpha.
- - Unblock threads before releasing the work queue mutex to ensure
- predictable scheduling behavior. Fixes bug 16644; bugfix
- on 0.2.6.3-alpha.
- o Code simplification and refactoring:
- - Change the function that's called when we need to retry all
- downloads so that it only reschedules the downloads to happen
- immediately, rather than launching them all at once itself. This
- further simplifies Tor's callgraph.
- - Move some format-parsing functions out of crypto.c and
- crypto_curve25519.c into crypto_format.c and/or util_format.c.
- - Move the client-only parts of init_keys() into a separate
- function. Closes ticket 16763.
- - Simplify the microdesc_free() implementation so that it no longer
- appears (to code analysis tools) to potentially invoke a huge
- suite of other microdesc functions.
- - Simply the control graph further by deferring the inner body of
- directory_all_unreachable() into a callback. Closes ticket 16762.
- - Treat the loss of an owning controller as equivalent to a SIGTERM
- signal. This removes a tiny amount of duplicated code, and
- simplifies our callgraph. Closes ticket 16788.
- - When generating an event to send to the controller, we no longer
- put the event over the network immediately. Instead, we queue
- these events, and use a Libevent callback to deliver them. This
- change simplifies Tor's callgraph by reducing the number of
- functions from which all other Tor functions are reachable. Closes
- ticket 16695.
- - Wrap Windows-only C files inside '#ifdef _WIN32' so that tools
- that try to scan or compile every file on Unix won't decide that
- they are broken.
- - Remove the unused "nulterminate" argument from buf_pullup().
- o Documentation:
- - Recommend a 40 GB example AccountingMax in torrc.sample rather
- than a 4 GB max. Closes ticket 16742.
- - Include the TUNING document in our source tarball. It is referred
- to in the ChangeLog and an error message. Fixes bug 16929; bugfix
- on 0.2.6.1-alpha.
- o Removed code:
- - The internal pure-C tor-fw-helper tool is now removed from the Tor
- distribution, in favor of the pure-Go clone available from
- https:
- used by the C tor-fw-helper are not, in our opinion, very
- confidence- inspiring in their secure-programming techniques.
- Closes ticket 13338.
- - Remove the code that would try to aggressively flush controller
- connections while writing to them. This code was introduced in
- 0.1.2.7-alpha, in order to keep output buffers from exceeding
- their limits. But there is no longer a maximum output buffer size,
- and flushing data in this way caused some undesirable recursions
- in our call graph. Closes ticket 16480.
- o Testing:
- - Make "bridges+hs" the default test network. This tests almost all
- tor functionality during make test-network, while allowing tests
- to succeed on non-IPv6 systems. Requires chutney commit 396da92 in
- test-network-bridges-hs. Closes tickets 16945 (tor) and 16946
- (chutney). Patches by "teor".
- - Autodetect CHUTNEY_PATH if the chutney and Tor sources are side-
- by-side in the same parent directory. Closes ticket 16903. Patch
- by "teor".
- - Use environment variables rather than autoconf substitutions to
- send variables from the build system to the test scripts. This
- change should be easier to maintain, and cause 'make distcheck' to
- work better than before. Fixes bug 17148.
- - Add a new set of callgraph analysis scripts that use clang to
- produce a list of which Tor functions are reachable from which
- other Tor functions. We're planning to use these to help simplify
- our code structure by identifying illogical dependencies.
- - Add new 'test-full' and 'test-full-online' targets to run all
- tests, including integration tests with stem and chutney.
- - Make the test-workqueue test work on Windows by initializing the
- network before we begin.
- - New make target (make test-network-all) to run multiple applicable
- chutney test cases. Patch from Teor; closes 16953.
- - Unit test dns_resolve(), dns_clip_ttl() and dns_get_expiry_ttl()
- functions in dns.c. Implements a portion of ticket 16831.
- - When building Tor with testing coverage enabled, run Chutney tests
- (if any) using the 'tor-cov' coverage binary.
- - When running test-network or test-stem, check for the absence of
- stem/chutney before doing any build operations.
- Changes in version 0.2.7.2-alpha - 2015-07-27
- This, the second alpha in the Tor 0.2.7 series, has a number of new
- features, including a way to manually pick the number of introduction
- points for hidden services, and the much stronger Ed25519 signing key
- algorithm for regular Tor relays (including support for encrypted
- offline identity keys in the new algorithm).
- Support for Ed25519 on relays is currently limited to signing router
- descriptors; later alphas in this series will extend Ed25519 key
- support to more parts of the Tor protocol.
- o Major features (Ed25519 identity keys, Proposal 220):
- - All relays now maintain a stronger identity key, using the Ed25519
- elliptic curve signature format. This master key is designed so
- that it can be kept offline. Relays also generate an online
- signing key, and a set of other Ed25519 keys and certificates.
- These are all automatically regenerated and rotated as needed.
- Implements part of ticket 12498.
- - Directory authorities now vote on Ed25519 identity keys along with
- RSA1024 keys. Implements part of ticket 12498.
- - Directory authorities track which Ed25519 identity keys have been
- used with which RSA1024 identity keys, and do not allow them to
- vary freely. Implements part of ticket 12498.
- - Microdescriptors now include Ed25519 identity keys. Implements
- part of ticket 12498.
- - Add support for offline encrypted Ed25519 master keys. To use this
- feature on your tor relay, run "tor --keygen" to make a new master
- key (or to make a new signing key if you already have a master
- key). Closes ticket 13642.
- o Major features (Hidden services):
- - Add the torrc option HiddenServiceNumIntroductionPoints, to
- specify a fixed number of introduction points. Its maximum value
- is 10 and default is 3. Using this option can increase a hidden
- service's reliability under load, at the cost of making it more
- visible that the hidden service is facing extra load. Closes
- ticket 4862.
- - Remove the adaptive algorithm for choosing the number of
- introduction points, which used to change the number of
- introduction points (poorly) depending on the number of
- connections the HS sees. Closes ticket 4862.
- o Major features (onion key cross-certification):
- - Relay descriptors now include signatures of their own identity
- keys, made using the TAP and ntor onion keys. These signatures
- allow relays to prove ownership of their own onion keys. Because
- of this change, microdescriptors will no longer need to include
- RSA identity keys. Implements proposal 228; closes ticket 12499.
- o Major features (performance):
- - Improve the runtime speed of Ed25519 operations by using the
- public-domain Ed25519-donna by Andrew M. ("floodyberry").
- Implements ticket 16467.
- - Improve the runtime speed of the ntor handshake by using an
- optimized curve25519 basepoint scalarmult implementation from the
- public-domain Ed25519-donna by Andrew M. ("floodyberry"), based on
- ideas by Adam Langley. Implements ticket 9663.
- o Major bugfixes (client-side privacy, also in 0.2.6.9):
- - Properly separate out each SOCKSPort when applying stream
- isolation. The error occurred because each port's session group
- was being overwritten by a default value when the listener
- connection was initialized. Fixes bug 16247; bugfix on
- 0.2.6.3-alpha. Patch by "jojelino".
- o Major bugfixes (hidden service clients, stability, also in 0.2.6.10):
- - Stop refusing to store updated hidden service descriptors on a
- client. This reverts commit 9407040c59218 (which indeed fixed bug
- 14219, but introduced a major hidden service reachability
- regression detailed in bug 16381). This is a temporary fix since
- we can live with the minor issue in bug 14219 (it just results in
- some load on the network) but the regression of 16381 is too much
- of a setback. First-round fix for bug 16381; bugfix
- on 0.2.6.3-alpha.
- o Major bugfixes (hidden services):
- - When cannibalizing a circuit for an introduction point, always
- extend to the chosen exit node (creating a 4 hop circuit).
- Previously Tor would use the current circuit exit node, which
- changed the original choice of introduction point, and could cause
- the hidden service to skip excluded introduction points or
- reconnect to a skipped introduction point. Fixes bug 16260; bugfix
- on 0.1.0.1-rc.
- o Major bugfixes (open file limit):
- - The open file limit wasn't checked before calling
- tor_accept_socket_nonblocking(), which would make Tor exceed the
- limit. Now, before opening a new socket, Tor validates the open
- file limit just before, and if the max has been reached, return an
- error. Fixes bug 16288; bugfix on 0.1.1.1-alpha.
- o Major bugfixes (stability, also in 0.2.6.10):
- - Stop crashing with an assertion failure when parsing certain kinds
- of malformed or truncated microdescriptors. Fixes bug 16400;
- bugfix on 0.2.6.1-alpha. Found by "torkeln"; fix based on a patch
- by "cypherpunks_backup".
- - Stop random client-side assertion failures that could occur when
- connecting to a busy hidden service, or connecting to a hidden
- service while a NEWNYM is in progress. Fixes bug 16013; bugfix
- on 0.1.0.1-rc.
- o Minor features (directory authorities, security, also in 0.2.6.9):
- - The HSDir flag given by authorities now requires the Stable flag.
- For the current network, this results in going from 2887 to 2806
- HSDirs. Also, it makes it harder for an attacker to launch a sybil
- attack by raising the effort for a relay to become Stable to
- require at the very least 7 days, while maintaining the 96 hours
- uptime requirement for HSDir. Implements ticket 8243.
- o Minor features (client):
- - Relax the validation of hostnames in SOCKS5 requests, allowing the
- character '_' to appear, in order to cope with domains observed in
- the wild that are serving non-RFC compliant records. Resolves
- ticket 16430.
- - Relax the validation done to hostnames in SOCKS5 requests, and
- allow a single trailing '.' to cope with clients that pass FQDNs
- using that syntax to explicitly indicate that the domain name is
- fully-qualified. Fixes bug 16674; bugfix on 0.2.6.2-alpha.
- - Add GroupWritable and WorldWritable options to unix-socket based
- SocksPort and ControlPort options. These options apply to a single
- socket, and override {Control,Socks}SocketsGroupWritable. Closes
- ticket 15220.
- o Minor features (control protocol):
- - Support network-liveness GETINFO key and NETWORK_LIVENESS event in
- the control protocol. Resolves ticket 15358.
- o Minor features (directory authorities):
- - Directory authorities no longer vote against the "Fast", "Stable",
- and "HSDir" flags just because they were going to vote against
- "Running": if the consensus turns out to be that the router was
- running, then the authority's vote should count. Patch from Peter
- Retzlaff; closes issue 8712.
- o Minor features (geoip, also in 0.2.6.10):
- - Update geoip to the June 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the June 3 2015 Maxmind GeoLite2 Country database.
- o Minor features (hidden services):
- - Add the new options "HiddenServiceMaxStreams" and
- "HiddenServiceMaxStreamsCloseCircuit" to allow hidden services to
- limit the maximum number of simultaneous streams per circuit, and
- optionally tear down the circuit when the limit is exceeded. Part
- of ticket 16052.
- o Minor features (portability):
- - Use C99 variadic macros when the compiler is not GCC. This avoids
- failing compilations on MSVC, and fixes a log-file-based race
- condition in our old workarounds. Original patch from Gisle Vanem.
- o Minor bugfixes (compilation, also in 0.2.6.9):
- - Build with --enable-systemd correctly when libsystemd is
- installed, but systemd is not. Fixes bug 16164; bugfix on
- 0.2.6.3-alpha. Patch from Peter Palfrader.
- o Minor bugfixes (controller):
- - Add the descriptor ID in each HS_DESC control event. It was
- missing, but specified in control-spec.txt. Fixes bug 15881;
- bugfix on 0.2.5.2-alpha.
- o Minor bugfixes (crypto error-handling, also in 0.2.6.10):
- - Check for failures from crypto_early_init, and refuse to continue.
- A previous typo meant that we could keep going with an
- uninitialized crypto library, and would have OpenSSL initialize
- its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
- when implementing ticket 4900. Patch by "teor".
- o Minor bugfixes (hidden services):
- - Fix a crash when reloading configuration while at least one
- configured and one ephemeral hidden service exists. Fixes bug
- 16060; bugfix on 0.2.7.1-alpha.
- - Avoid crashing with a double-free bug when we create an ephemeral
- hidden service but adding it fails for some reason. Fixes bug
- 16228; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Use the sandbox in tor_open_cloexec whether or not O_CLOEXEC is
- defined. Patch by "teor". Fixes bug 16515; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (Linux seccomp2 sandbox, also in 0.2.6.10):
- - Allow pipe() and pipe2() syscalls in the seccomp2 sandbox: we need
- these when eventfd2() support is missing. Fixes bug 16363; bugfix
- on 0.2.6.3-alpha. Patch from "teor".
- o Minor bugfixes (Linux seccomp2 sandbox, also in 0.2.6.9):
- - Fix sandboxing to work when running as a relay, by allowing the
- renaming of secret_id_key, and allowing the eventfd2 and futex
- syscalls. Fixes bug 16244; bugfix on 0.2.6.1-alpha. Patch by
- Peter Palfrader.
- - Allow systemd connections to work with the Linux seccomp2 sandbox
- code. Fixes bug 16212; bugfix on 0.2.6.2-alpha. Patch by
- Peter Palfrader.
- o Minor bugfixes (relay):
- - Fix a rarely-encountered memory leak when failing to initialize
- the thread pool. Fixes bug 16631; bugfix on 0.2.6.3-alpha. Patch
- from "cypherpunks".
- o Minor bugfixes (systemd):
- - Fix an accidental formatting error that broke the systemd
- configuration file. Fixes bug 16152; bugfix on 0.2.7.1-alpha.
- - Tor's systemd unit file no longer contains extraneous spaces.
- These spaces would sometimes confuse tools like deb-systemd-
- helper. Fixes bug 16162; bugfix on 0.2.5.5-alpha.
- o Minor bugfixes (tests):
- - Use the configured Python executable when running test-stem-full.
- Fixes bug 16470; bugfix on 0.2.7.1-alpha.
- o Minor bugfixes (tests, also in 0.2.6.9):
- - Fix a crash in the unit tests when built with MSVC2013. Fixes bug
- 16030; bugfix on 0.2.6.2-alpha. Patch from "NewEraCracker".
- o Minor bugfixes (threads, comments):
- - Always initialize return value in compute_desc_id in rendcommon.c
- Patch by "teor". Fixes part of bug 16115; bugfix on 0.2.7.1-alpha.
- - Check for NULL values in getinfo_helper_onions(). Patch by "teor".
- Fixes part of bug 16115; bugfix on 0.2.7.1-alpha.
- - Remove undefined directive-in-macro in test_util_writepid clang
- 3.7 complains that using a preprocessor directive inside a macro
- invocation in test_util_writepid in test_util.c is undefined.
- Patch by "teor". Fixes part of bug 16115; bugfix on 0.2.7.1-alpha.
- o Code simplification and refactoring:
- - Define WINVER and _WIN32_WINNT centrally, in orconfig.h, in order
- to ensure they remain consistent and visible everywhere.
- - Remove some vestigial workarounds for the MSVC6 compiler. We
- haven't supported that in ages.
- - The link authentication code has been refactored for better
- testability and reliability. It now uses code generated with the
- "trunnel" binary encoding generator, to reduce the risk of bugs
- due to programmer error. Done as part of ticket 12498.
- o Documentation:
- - Include a specific and (hopefully) accurate documentation of the
- torrc file's meta-format in doc/torrc_format.txt. This is mainly
- of interest to people writing programs to parse or generate torrc
- files. This document is not a commitment to long-term
- compatibility; some aspects of the current format are a bit
- ridiculous. Closes ticket 2325.
- o Removed features:
- - Tor no longer supports copies of OpenSSL that are missing support
- for Elliptic Curve Cryptography. (We began using ECC when
- available in 0.2.4.8-alpha, for more safe and efficient key
- negotiation.) In particular, support for at least one of P256 or
- P224 is now required, with manual configuration needed if only
- P224 is available. Resolves ticket 16140.
- - Tor no longer supports versions of OpenSSL before 1.0. (If you are
- on an operating system that has not upgraded to OpenSSL 1.0 or
- later, and you compile Tor from source, you will need to install a
- more recent OpenSSL to link Tor against.) These versions of
- OpenSSL are still supported by the OpenSSL, but the numerous
- cryptographic improvements in later OpenSSL releases makes them a
- clear choice. Resolves ticket 16034.
- - Remove the HidServDirectoryV2 option. Now all relays offer to
- store hidden service descriptors. Related to 16543.
- - Remove the VoteOnHidServDirectoriesV2 option, since all
- authorities have long set it to 1. Closes ticket 16543.
- o Testing:
- - Document use of coverity, clang static analyzer, and clang dynamic
- undefined behavior and address sanitizers in doc/HACKING. Include
- detailed usage instructions in the blacklist. Patch by "teor".
- Closes ticket 15817.
- - The link authentication protocol code now has extensive tests.
- - The relay descriptor signature testing code now has
- extensive tests.
- - The test_workqueue program now runs faster, and is enabled by
- default as a part of "make check".
- - Now that OpenSSL has its own scrypt implementation, add an unit
- test that checks for interoperability between libscrypt_scrypt()
- and OpenSSL's EVP_PBE_scrypt() so that we could not use libscrypt
- and rely on EVP_PBE_scrypt() whenever possible. Resolves
- ticket 16189.
- Changes in version 0.2.6.10 - 2015-07-12
- Tor version 0.2.6.10 fixes some significant stability and hidden
- service client bugs, bulletproofs the cryptography init process, and
- fixes a bug when using the sandbox code with some older versions of
- Linux. Everyone running an older version, especially an older version
- of 0.2.6, should upgrade.
- o Major bugfixes (hidden service clients, stability):
- - Stop refusing to store updated hidden service descriptors on a
- client. This reverts commit 9407040c59218 (which indeed fixed bug
- 14219, but introduced a major hidden service reachability
- regression detailed in bug 16381). This is a temporary fix since
- we can live with the minor issue in bug 14219 (it just results in
- some load on the network) but the regression of 16381 is too much
- of a setback. First-round fix for bug 16381; bugfix
- on 0.2.6.3-alpha.
- o Major bugfixes (stability):
- - Stop crashing with an assertion failure when parsing certain kinds
- of malformed or truncated microdescriptors. Fixes bug 16400;
- bugfix on 0.2.6.1-alpha. Found by "torkeln"; fix based on a patch
- by "cypherpunks_backup".
- - Stop random client-side assertion failures that could occur when
- connecting to a busy hidden service, or connecting to a hidden
- service while a NEWNYM is in progress. Fixes bug 16013; bugfix
- on 0.1.0.1-rc.
- o Minor features (geoip):
- - Update geoip to the June 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the June 3 2015 Maxmind GeoLite2 Country database.
- o Minor bugfixes (crypto error-handling):
- - Check for failures from crypto_early_init, and refuse to continue.
- A previous typo meant that we could keep going with an
- uninitialized crypto library, and would have OpenSSL initialize
- its own PRNG. Fixes bug 16360; bugfix on 0.2.5.2-alpha, introduced
- when implementing ticket 4900. Patch by "teor".
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Allow pipe() and pipe2() syscalls in the seccomp2 sandbox: we need
- these when eventfd2() support is missing. Fixes bug 16363; bugfix
- on 0.2.6.3-alpha. Patch from "teor".
- Changes in version 0.2.6.9 - 2015-06-11
- Tor 0.2.6.9 fixes a regression in the circuit isolation code, increases the
- requirements for receiving an HSDir flag, and addresses some other small
- bugs in the systemd and sandbox code. Clients using circuit isolation
- should upgrade; all directory authorities should upgrade.
- o Major bugfixes (client-side privacy):
- - Properly separate out each SOCKSPort when applying stream
- isolation. The error occurred because each port's session group was
- being overwritten by a default value when the listener connection
- was initialized. Fixes bug 16247; bugfix on 0.2.6.3-alpha. Patch
- by "jojelino".
- o Minor feature (directory authorities, security):
- - The HSDir flag given by authorities now requires the Stable flag.
- For the current network, this results in going from 2887 to 2806
- HSDirs. Also, it makes it harder for an attacker to launch a sybil
- attack by raising the effort for a relay to become Stable which
- takes at the very least 7 days to do so and by keeping the 96
- hours uptime requirement for HSDir. Implements ticket 8243.
- o Minor bugfixes (compilation):
- - Build with --enable-systemd correctly when libsystemd is
- installed, but systemd is not. Fixes bug 16164; bugfix on
- 0.2.6.3-alpha. Patch from Peter Palfrader.
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Fix sandboxing to work when running as a relaymby renaming of
- secret_id_key, and allowing the eventfd2 and futex syscalls. Fixes
- bug 16244; bugfix on 0.2.6.1-alpha. Patch by Peter Palfrader.
- - Allow systemd connections to work with the Linux seccomp2 sandbox
- code. Fixes bug 16212; bugfix on 0.2.6.2-alpha. Patch by
- Peter Palfrader.
- o Minor bugfixes (tests):
- - Fix a crash in the unit tests when built with MSVC2013. Fixes bug
- 16030; bugfix on 0.2.6.2-alpha. Patch from "NewEraCracker".
- Changes in version 0.2.6.8 - 2015-05-21
- Tor 0.2.6.8 fixes a bit of dodgy code in parsing INTRODUCE2 cells, and
- fixes an authority-side bug in assigning the HSDir flag. All directory
- authorities should upgrade.
- o Major bugfixes (hidden services, backport from 0.2.7.1-alpha):
- - Revert commit that made directory authorities assign the HSDir
- flag to relays without a DirPort; this was bad because such relays
- can't handle BEGIN_DIR cells. Fixes bug 15850; bugfix
- on 0.2.6.3-alpha.
- o Minor bugfixes (hidden service, backport from 0.2.7.1-alpha):
- - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
- a client authorized hidden service. Fixes bug 15823; bugfix
- on 0.2.1.6-alpha.
- o Minor features (geoip):
- - Update geoip to the April 8 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the April 8 2015 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.7.1-alpha - 2015-05-12
- Tor 0.2.7.1-alpha is the first alpha release in its series. It
- includes numerous small features and bugfixes against previous Tor
- versions, and numerous small infrastructure improvements. The most
- notable features are several new ways for controllers to interact with
- the hidden services subsystem.
- o New system requirements:
- - Tor no longer includes workarounds to support Libevent versions
- before 1.3e. Libevent 2.0 or later is recommended. Closes
- ticket 15248.
- o Major features (controller):
- - Add the ADD_ONION and DEL_ONION commands that allow the creation
- and management of hidden services via the controller. Closes
- ticket 6411.
- - New "GETINFO onions/current" and "GETINFO onions/detached"
- commands to get information about hidden services created via the
- controller. Part of ticket 6411.
- - New HSFETCH command to launch a request for a hidden service
- descriptor. Closes ticket 14847.
- - New HSPOST command to upload a hidden service descriptor. Closes
- ticket 3523. Patch by "DonnchaC".
- o Major bugfixes (hidden services):
- - Revert commit that made directory authorities assign the HSDir
- flag to relays without a DirPort; this was bad because such relays
- can't handle BEGIN_DIR cells. Fixes bug 15850; bugfix
- on 0.2.6.3-alpha.
- o Minor features (clock-jump tolerance):
- - Recover better when our clock jumps back many hours, like might
- happen for Tails or Whonix users who start with a very wrong
- hardware clock, use Tor to discover a more accurate time, and then
- fix their clock. Resolves part of ticket 8766.
- o Minor features (command-line interface):
- - Make --hash-password imply --hush to prevent unnecessary noise.
- Closes ticket 15542. Patch from "cypherpunks".
- - Print a warning whenever we find a relative file path being used
- as torrc option. Resolves issue 14018.
- o Minor features (controller):
- - Add DirAuthority lines for default directory authorities to the
- output of the "GETINFO config/defaults" command if not already
- present. Implements ticket 14840.
- - Controllers can now use "GETINFO hs/client/desc/id/..." to
- retrieve items from the client's hidden service descriptor cache.
- Closes ticket 14845.
- - Implement a new controller command "GETINFO status/fresh-relay-
- descs" to fetch a descriptor/extrainfo pair that was generated on
- demand just for the controller's use. Implements ticket 14784.
- o Minor features (DoS-resistance):
- - Make it harder for attackers to overload hidden services with
- introductions, by blocking multiple introduction requests on the
- same circuit. Resolves ticket 15515.
- o Minor features (geoip):
- - Update geoip to the April 8 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the April 8 2015 Maxmind GeoLite2
- Country database.
- o Minor features (HS popularity countermeasure):
- - To avoid leaking HS popularity, don't cycle the introduction point
- when we've handled a fixed number of INTRODUCE2 cells but instead
- cycle it when a random number of introductions is reached, thus
- making it more difficult for an attacker to find out the amount of
- clients that have used the introduction point for a specific HS.
- Closes ticket 15745.
- o Minor features (logging):
- - Include the Tor version in all LD_BUG log messages, since people
- tend to cut and paste those into the bugtracker. Implements
- ticket 15026.
- o Minor features (pluggable transports):
- - When launching managed pluggable transports on Linux systems,
- attempt to have the kernel deliver a SIGTERM on tor exit if the
- pluggable transport process is still running. Resolves
- ticket 15471.
- - When launching managed pluggable transports, setup a valid open
- stdin in the child process that can be used to detect if tor has
- terminated. The "TOR_PT_EXIT_ON_STDIN_CLOSE" environment variable
- can be used by implementations to detect this new behavior.
- Resolves ticket 15435.
- o Minor features (testing):
- - Add a test to verify that the compiler does not eliminate our
- memwipe() implementation. Closes ticket 15377.
- - Add make rule `check-changes` to verify the format of changes
- files. Closes ticket 15180.
- - Add unit tests for control_event_is_interesting(). Add a compile-
- time check that the number of events doesn't exceed the capacity
- of control_event_t.event_mask. Closes ticket 15431, checks for
- bugs similar to 13085. Patch by "teor".
- - Command-line argument tests moved to Stem. Resolves ticket 14806.
- - Integrate the ntor, backtrace, and zero-length keys tests into the
- automake test suite. Closes ticket 15344.
- - Remove assertions during builds to determine Tor's test coverage.
- We don't want to trigger these even in assertions, so including
- them artificially makes our branch coverage look worse than it is.
- This patch provides the new test-stem-full and coverage-html-full
- configure options. Implements ticket 15400.
- o Minor bugfixes (build):
- - Improve out-of-tree builds by making non-standard rules work and
- clean up additional files and directories. Fixes bug 15053; bugfix
- on 0.2.7.0-alpha.
- o Minor bugfixes (command-line interface):
- - When "--quiet" is provided along with "--validate-config", do not
- write anything to stdout on success. Fixes bug 14994; bugfix
- on 0.2.3.3-alpha.
- - When complaining about bad arguments to "--dump-config", use
- stderr, not stdout.
- o Minor bugfixes (configuration, unit tests):
- - Only add the default fallback directories when the DirAuthorities,
- AlternateDirAuthority, and FallbackDir directory config options
- are set to their defaults. The default fallback directory list is
- currently empty, this fix will only change tor's behavior when it
- has default fallback directories. Includes unit tests for
- consider_adding_dir_servers(). Fixes bug 15642; bugfix on
- 90f6071d8dc0 in 0.2.4.7-alpha. Patch by "teor".
- o Minor bugfixes (correctness):
- - For correctness, avoid modifying a constant string in
- handle_control_postdescriptor. Fixes bug 15546; bugfix
- on 0.1.1.16-rc.
- - Remove side-effects from tor_assert() calls. This was harmless,
- because we never disable assertions, but it is bad style and
- unnecessary. Fixes bug 15211; bugfix on 0.2.5.5, 0.2.2.36,
- and 0.2.0.10.
- o Minor bugfixes (hidden service):
- - Fix an out-of-bounds read when parsing invalid INTRODUCE2 cells on
- a client authorized hidden service. Fixes bug 15823; bugfix
- on 0.2.1.6-alpha.
- - Remove an extraneous newline character from the end of hidden
- service descriptors. Fixes bug 15296; bugfix on 0.2.0.10-alpha.
- o Minor bugfixes (interface):
- - Print usage information for --dump-config when it is used without
- an argument. Also, fix the error message to use different wording
- and add newline at the end. Fixes bug 15541; bugfix
- on 0.2.5.1-alpha.
- o Minor bugfixes (logs):
- - When building Tor under Clang, do not include an extra set of
- parentheses in log messages that include function names. Fixes bug
- 15269; bugfix on every released version of Tor when compiled with
- recent enough Clang.
- o Minor bugfixes (network):
- - When attempting to use fallback technique for network interface
- lookup, disregard loopback and multicast addresses since they are
- unsuitable for public communications.
- o Minor bugfixes (statistics):
- - Disregard the ConnDirectionStatistics torrc options when Tor is
- not a relay since in that mode of operation no sensible data is
- being collected and because Tor might run into measurement hiccups
- when running as a client for some time, then becoming a relay.
- Fixes bug 15604; bugfix on 0.2.2.35.
- o Minor bugfixes (test networks):
- - When self-testing reachability, use ExtendAllowPrivateAddresses to
- determine if local/private addresses imply reachability. The
- previous fix used TestingTorNetwork, which implies
- ExtendAllowPrivateAddresses, but this excluded rare configurations
- where ExtendAllowPrivateAddresses is set but TestingTorNetwork is
- not. Fixes bug 15771; bugfix on 0.2.6.1-alpha. Patch by "teor",
- issue discovered by CJ Ess.
- o Minor bugfixes (testing):
- - Check for matching value in server response in ntor_ref.py. Fixes
- bug 15591; bugfix on 0.2.4.8-alpha. Reported and fixed
- by "joelanders".
- - Set the severity correctly when testing
- get_interface_addresses_ifaddrs() and
- get_interface_addresses_win32(), so that the tests fail gracefully
- instead of triggering an assertion. Fixes bug 15759; bugfix on
- 0.2.6.3-alpha. Reported by Nicolas Derive.
- o Code simplification and refactoring:
- - Move the hacky fallback code out of get_interface_address6() into
- separate function and get it covered with unit-tests. Resolves
- ticket 14710.
- - Refactor hidden service client-side cache lookup to intelligently
- report its various failure cases, and disentangle failure cases
- involving a lack of introduction points. Closes ticket 14391.
- - Use our own Base64 encoder instead of OpenSSL's, to allow more
- control over the output. Part of ticket 15652.
- o Documentation:
- - Improve the descriptions of statistics-related torrc options in
- the manpage to describe rationale and possible uses cases. Fixes
- issue 15550.
- - Improve the layout and formatting of ./configure --help messages.
- Closes ticket 15024. Patch from "cypherpunks".
- - Standardize on the term "server descriptor" in the manual page.
- Previously, we had used "router descriptor", "server descriptor",
- and "relay descriptor" interchangeably. Part of ticket 14987.
- o Removed code:
- - Remove `USE_OPENSSL_BASE64` and the corresponding fallback code
- and always use the internal Base64 decoder. The internal decoder
- has been part of tor since 0.2.0.10-alpha, and no one should
- be using the OpenSSL one. Part of ticket 15652.
- - Remove the 'tor_strclear()' function; use memwipe() instead.
- Closes ticket 14922.
- o Removed features:
- - Remove the (seldom-used) DynamicDHGroups feature. For anti-
- fingerprinting we now recommend pluggable transports; for forward-
- secrecy in TLS, we now use the P-256 group. Closes ticket 13736.
- - Remove the undocumented "--digests" command-line option. It
- complicated our build process, caused subtle build issues on
- multiple platforms, and is now redundant since we started
- including git version identifiers. Closes ticket 14742.
- - Tor no longer contains checks for ancient directory cache versions
- that didn't know about microdescriptors.
- - Tor no longer contains workarounds for stat files generated by
- super-old versions of Tor that didn't choose guards sensibly.
- Changes in version 0.2.4.27 - 2015-04-06
- Tor 0.2.4.27 backports two fixes from 0.2.6.7 for security issues that
- could be used by an attacker to crash hidden services, or crash clients
- visiting hidden services. Hidden services should upgrade as soon as
- possible; clients should upgrade whenever packages become available.
- This release also backports a simple improvement to make hidden
- services a bit less vulnerable to denial-of-service attacks.
- o Major bugfixes (security, hidden service):
- - Fix an issue that would allow a malicious client to trigger an
- assertion failure and halt a hidden service. Fixes bug 15600;
- bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
- - Fix a bug that could cause a client to crash with an assertion
- failure when parsing a malformed hidden service descriptor. Fixes
- bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
- o Minor features (DoS-resistance, hidden service):
- - Introduction points no longer allow multiple INTRODUCE1 cells to
- arrive on the same circuit. This should make it more expensive for
- attackers to overwhelm hidden services with introductions.
- Resolves ticket 15515.
- Changes in version 0.2.5.12 - 2015-04-06
- Tor 0.2.5.12 backports two fixes from 0.2.6.7 for security issues that
- could be used by an attacker to crash hidden services, or crash clients
- visiting hidden services. Hidden services should upgrade as soon as
- possible; clients should upgrade whenever packages become available.
- This release also backports a simple improvement to make hidden
- services a bit less vulnerable to denial-of-service attacks.
- o Major bugfixes (security, hidden service):
- - Fix an issue that would allow a malicious client to trigger an
- assertion failure and halt a hidden service. Fixes bug 15600;
- bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
- - Fix a bug that could cause a client to crash with an assertion
- failure when parsing a malformed hidden service descriptor. Fixes
- bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
- o Minor features (DoS-resistance, hidden service):
- - Introduction points no longer allow multiple INTRODUCE1 cells to
- arrive on the same circuit. This should make it more expensive for
- attackers to overwhelm hidden services with introductions.
- Resolves ticket 15515.
- Changes in version 0.2.6.7 - 2015-04-06
- Tor 0.2.6.7 fixes two security issues that could be used by an
- attacker to crash hidden services, or crash clients visiting hidden
- services. Hidden services should upgrade as soon as possible; clients
- should upgrade whenever packages become available.
- This release also contains two simple improvements to make hidden
- services a bit less vulnerable to denial-of-service attacks.
- o Major bugfixes (security, hidden service):
- - Fix an issue that would allow a malicious client to trigger an
- assertion failure and halt a hidden service. Fixes bug 15600;
- bugfix on 0.2.1.6-alpha. Reported by "disgleirio".
- - Fix a bug that could cause a client to crash with an assertion
- failure when parsing a malformed hidden service descriptor. Fixes
- bug 15601; bugfix on 0.2.1.5-alpha. Found by "DonnchaC".
- o Minor features (DoS-resistance, hidden service):
- - Introduction points no longer allow multiple INTRODUCE1 cells to
- arrive on the same circuit. This should make it more expensive for
- attackers to overwhelm hidden services with introductions.
- Resolves ticket 15515.
- - Decrease the amount of reattempts that a hidden service performs
- when its rendezvous circuits fail. This reduces the computational
- cost for running a hidden service under heavy load. Resolves
- ticket 11447.
- Changes in version 0.2.6.6 - 2015-03-24
- Tor 0.2.6.6 is the first stable release in the 0.2.6 series.
- It adds numerous safety, security, correctness, and performance
- improvements. Client programs can be configured to use more kinds of
- sockets, AutomapHosts works better, the multithreading backend is
- improved, cell transmission is refactored, test coverage is much
- higher, more denial-of-service attacks are handled, guard selection is
- improved to handle long-term guards better, pluggable transports
- should work a bit better, and some annoying hidden service performance
- bugs should be addressed.
- o Minor bugfixes (portability):
- - Use the correct datatype in the SipHash-2-4 function to prevent
- compilers from assuming any sort of alignment. Fixes bug 15436;
- bugfix on 0.2.5.3-alpha.
- Changes in version 0.2.6.5-rc - 2015-03-18
- Tor 0.2.6.5-rc is the second and (hopefully) last release candidate in
- the 0.2.6. It fixes a small number of bugs found in 0.2.6.4-rc.
- o Major bugfixes (client):
- - Avoid crashing when making certain configuration option changes on
- clients. Fixes bug 15245; bugfix on 0.2.6.3-alpha. Reported
- by "anonym".
- o Major bugfixes (pluggable transports):
- - Initialize the extended OR Port authentication cookie before
- launching pluggable transports. This prevents a race condition
- that occurred when server-side pluggable transports would cache the
- authentication cookie before it has been (re)generated. Fixes bug
- 15240; bugfix on 0.2.5.1-alpha.
- o Major bugfixes (portability):
- - Do not crash on startup when running on Solaris. Fixes a bug
- related to our fix for 9495; bugfix on 0.2.6.1-alpha. Reported
- by "ruebezahl".
- o Minor features (heartbeat):
- - On relays, report how many connections we negotiated using each
- version of the Tor link protocols. This information will let us
- know if removing support for very old versions of the Tor
- protocols is harming the network. Closes ticket 15212.
- o Code simplification and refactoring:
- - Refactor main loop to extract the 'loop' part. This makes it
- easier to run Tor under Shadow. Closes ticket 15176.
- Changes in version 0.2.5.11 - 2015-03-17
- Tor 0.2.5.11 is the second stable release in the 0.2.5 series.
- It backports several bugfixes from the 0.2.6 branch, including a
- couple of medium-level security fixes for relays and exit nodes.
- It also updates the list of directory authorities.
- o Directory authority changes:
- - Remove turtles as a directory authority.
- - Add longclaw as a new (v3) directory authority. This implements
- ticket 13296. This keeps the directory authority count at 9.
- - The directory authority Faravahar has a new IP address. This
- closes ticket 14487.
- o Major bugfixes (crash, OSX, security):
- - Fix a remote denial-of-service opportunity caused by a bug in
- OSX's _strlcat_chk() function. Fixes bug 15205; bug first appeared
- in OSX 10.9.
- o Major bugfixes (relay, stability, possible security):
- - Fix a bug that could lead to a relay crashing with an assertion
- failure if a buffer of exactly the wrong layout was passed to
- buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
- 0.2.0.10-alpha. Patch from 'cypherpunks'.
- - Do not assert if the 'data' pointer on a buffer is advanced to the
- very end of the buffer; log a BUG message instead. Only assert if
- it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
- o Major bugfixes (exit node stability):
- - Fix an assertion failure that could occur under high DNS load.
- Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
- diagnosed and fixed by "cypherpunks".
- o Major bugfixes (Linux seccomp2 sandbox):
- - Upon receiving sighup with the seccomp2 sandbox enabled, do not
- crash during attempts to call wait4. Fixes bug 15088; bugfix on
- 0.2.5.1-alpha. Patch from "sanic".
- o Minor features (controller):
- - New "GETINFO bw-event-cache" to get information about recent
- bandwidth events. Closes ticket 14128. Useful for controllers to
- get recent bandwidth history after the fix for ticket 13988.
- o Minor features (geoip):
- - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the March 3 2015 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (client, automapping):
- - Avoid crashing on torrc lines for VirtualAddrNetworkIPv[4|6] when
- no value follows the option. Fixes bug 14142; bugfix on
- 0.2.4.7-alpha. Patch by "teor".
- - Fix a memory leak when using AutomapHostsOnResolve. Fixes bug
- 14195; bugfix on 0.1.0.1-rc.
- o Minor bugfixes (compilation):
- - Build without warnings with the stock OpenSSL srtp.h header, which
- has a duplicate declaration of SSL_get_selected_srtp_profile().
- Fixes bug 14220; this is OpenSSL's bug, not ours.
- o Minor bugfixes (directory authority):
- - Allow directory authorities to fetch more data from one another if
- they find themselves missing lots of votes. Previously, they had
- been bumping against the 10 MB queued data limit. Fixes bug 14261;
- bugfix on 0.1.2.5-alpha.
- - Enlarge the buffer to read bwauth generated files to avoid an
- issue when parsing the file in dirserv_read_measured_bandwidths().
- Fixes bug 14125; bugfix on 0.2.2.1-alpha.
- o Minor bugfixes (statistics):
- - Increase period over which bandwidth observations are aggregated
- from 15 minutes to 4 hours. Fixes bug 13988; bugfix on 0.0.8pre1.
- o Minor bugfixes (preventative security, C safety):
- - When reading a hexadecimal, base-32, or base-64 encoded value from
- a string, always overwrite the whole output buffer. This prevents
- some bugs where we would look at (but fortunately, not reveal)
- uninitialized memory on the stack. Fixes bug 14013; bugfix on all
- versions of Tor.
- Changes in version 0.2.4.26 - 2015-03-17
- Tor 0.2.4.26 includes an updated list of directory authorities. It
- also backports a couple of stability and security bugfixes from 0.2.5
- and beyond.
- o Directory authority changes:
- - Remove turtles as a directory authority.
- - Add longclaw as a new (v3) directory authority. This implements
- ticket 13296. This keeps the directory authority count at 9.
- - The directory authority Faravahar has a new IP address. This
- closes ticket 14487.
- o Major bugfixes (exit node stability, also in 0.2.6.3-alpha):
- - Fix an assertion failure that could occur under high DNS load.
- Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
- diagnosed and fixed by "cypherpunks".
- o Major bugfixes (relay, stability, possible security, also in 0.2.6.4-rc):
- - Fix a bug that could lead to a relay crashing with an assertion
- failure if a buffer of exactly the wrong layout was passed to
- buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
- 0.2.0.10-alpha. Patch from 'cypherpunks'.
- - Do not assert if the 'data' pointer on a buffer is advanced to the
- very end of the buffer; log a BUG message instead. Only assert if
- it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
- o Minor features (geoip):
- - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the March 3 2015 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.6.4-rc - 2015-03-09
- Tor 0.2.6.4-alpha fixes an issue in the directory code that an
- attacker might be able to use in order to crash certain Tor
- directories. It also resolves some minor issues left over from, or
- introduced in, Tor 0.2.6.3-alpha or earlier.
- o Major bugfixes (crash, OSX, security):
- - Fix a remote denial-of-service opportunity caused by a bug in
- OSX's _strlcat_chk() function. Fixes bug 15205; bug first appeared
- in OSX 10.9.
- o Major bugfixes (relay, stability, possible security):
- - Fix a bug that could lead to a relay crashing with an assertion
- failure if a buffer of exactly the wrong layout is passed to
- buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on
- 0.2.0.10-alpha. Patch from "cypherpunks".
- - Do not assert if the 'data' pointer on a buffer is advanced to the
- very end of the buffer; log a BUG message instead. Only assert if
- it is past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha.
- o Major bugfixes (FreeBSD IPFW transparent proxy):
- - Fix address detection with FreeBSD transparent proxies, when
- "TransProxyType ipfw" is in use. Fixes bug 15064; bugfix
- on 0.2.5.4-alpha.
- o Major bugfixes (Linux seccomp2 sandbox):
- - Pass IPPROTO_TCP rather than 0 to socket(), so that the Linux
- seccomp2 sandbox doesn't fail. Fixes bug 14989; bugfix
- on 0.2.6.3-alpha.
- - Allow AF_UNIX hidden services to be used with the seccomp2
- sandbox. Fixes bug 15003; bugfix on 0.2.6.3-alpha.
- - Upon receiving sighup with the seccomp2 sandbox enabled, do not
- crash during attempts to call wait4. Fixes bug 15088; bugfix on
- 0.2.5.1-alpha. Patch from "sanic".
- o Minor features (controller):
- - Messages about problems in the bootstrap process now include
- information about the server we were trying to connect to when we
- noticed the problem. Closes ticket 15006.
- o Minor features (geoip):
- - Update geoip to the March 3 2015 Maxmind GeoLite2 Country database.
- - Update geoip6 to the March 3 2015 Maxmind GeoLite2
- Country database.
- o Minor features (logs):
- - Quiet some log messages in the heartbeat and at startup. Closes
- ticket 14950.
- o Minor bugfixes (certificate handling):
- - If an authority operator accidentally makes a signing certificate
- with a future publication time, do not discard its real signing
- certificates. Fixes bug 11457; bugfix on 0.2.0.3-alpha.
- - Remove any old authority certificates that have been superseded
- for at least two days. Previously, we would keep superseded
- certificates until they expired, if they were published close in
- time to the certificate that superseded them. Fixes bug 11454;
- bugfix on 0.2.1.8-alpha.
- o Minor bugfixes (compilation):
- - Fix a compilation warning on s390. Fixes bug 14988; bugfix
- on 0.2.5.2-alpha.
- - Fix a compilation warning on FreeBSD. Fixes bug 15151; bugfix
- on 0.2.6.2-alpha.
- o Minor bugfixes (testing):
- - Fix endianness issues in unit test for resolve_my_address() to
- have it pass on big endian systems. Fixes bug 14980; bugfix on
- Tor 0.2.6.3-alpha.
- - Avoid a side-effect in a tor_assert() in the unit tests. Fixes bug
- 15188; bugfix on 0.1.2.3-alpha. Patch from Tom van der Woerdt.
- - When running the new 'make test-stem' target, use the configured
- python binary. Fixes bug 15037; bugfix on 0.2.6.3-alpha. Patch
- from "cypherpunks".
- - When running the zero-length-keys tests, do not use the default
- torrc file. Fixes bug 15033; bugfix on 0.2.6.3-alpha. Reported
- by "reezer".
- o Directory authority IP change:
- - The directory authority Faravahar has a new IP address. This
- closes ticket 14487.
- o Removed code:
- - Remove some lingering dead code that once supported mempools.
- Mempools were disabled by default in 0.2.5, and removed entirely
- in 0.2.6.3-alpha. Closes more of ticket 14848; patch
- by "cypherpunks".
- Changes in version 0.2.6.3-alpha - 2015-02-19
- Tor 0.2.6.3-alpha is the third (and hopefully final) alpha release in
- the 0.2.6.x series. It introduces support for more kinds of sockets,
- makes it harder to accidentally run an exit, improves our
- multithreading backend, incorporates several fixes for the
- AutomapHostsOnResolve option, and fixes numerous other bugs besides.
- If no major regressions or security holes are found in this version,
- the next version will be a release candidate.
- o Deprecated versions:
- - Tor relays older than 0.2.4.18-rc are no longer allowed to
- advertise themselves on the network. Closes ticket 13555.
- o Major features (security, unix domain sockets):
- - Allow SocksPort to be an AF_UNIX Unix Domain Socket. Now high risk
- applications can reach Tor without having to create AF_INET or
- AF_INET6 sockets, meaning they can completely disable their
- ability to make non-Tor network connections. To create a socket of
- this type, use "SocksPort unix:/path/to/socket". Implements
- ticket 12585.
- - Support mapping hidden service virtual ports to AF_UNIX sockets.
- The syntax is "HiddenServicePort 80 unix:/path/to/socket".
- Implements ticket 11485.
- o Major features (changed defaults):
- - Prevent relay operators from unintentionally running exits: When a
- relay is configured as an exit node, we now warn the user unless
- the "ExitRelay" option is set to 1. We warn even more loudly if
- the relay is configured with the default exit policy, since this
- can indicate accidental misconfiguration. Setting "ExitRelay 0"
- stops Tor from running as an exit relay. Closes ticket 10067.
- o Major features (directory system):
- - When downloading server- or microdescriptors from a directory
- server, we no longer launch multiple simultaneous requests to the
- same server. This reduces load on the directory servers,
- especially when directory guards are in use. Closes ticket 9969.
- - When downloading server- or microdescriptors over a tunneled
- connection, do not limit the length of our requests to what the
- Squid proxy is willing to handle. Part of ticket 9969.
- - Authorities can now vote on the correct digests and latest
- versions for different software packages. This allows packages
- that include Tor to use the Tor authority system as a way to get
- notified of updates and their correct digests. Implements proposal
- 227. Closes ticket 10395.
- o Major features (guards):
- - Introduce the Guardfraction feature to improves load balancing on
- guard nodes. Specifically, it aims to reduce the traffic gap that
- guard nodes experience when they first get the Guard flag. This is
- a required step if we want to increase the guard lifetime to 9
- months or greater. Closes ticket 9321.
- o Major features (performance):
- - Make the CPU worker implementation more efficient by avoiding the
- kernel and lengthening pipelines. The original implementation used
- sockets to transfer data from the main thread to the workers, and
- didn't allow any thread to be assigned more than a single piece of
- work at once. The new implementation avoids communications
- overhead by making requests in shared memory, avoiding kernel IO
- where possible, and keeping more requests in flight at once.
- Implements ticket 9682.
- o Major features (relay):
- - Raise the minimum acceptable configured bandwidth rate for bridges
- to 50 KiB/sec and for relays to 75 KiB/sec. (The old values were
- 20 KiB/sec.) Closes ticket 13822.
- o Major bugfixes (exit node stability):
- - Fix an assertion failure that could occur under high DNS load.
- Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr";
- diagnosed and fixed by "cypherpunks".
- o Major bugfixes (mixed relay-client operation):
- - When running as a relay and client at the same time (not
- recommended), if we decide not to use a new guard because we want
- to retry older guards, only close the locally-originating circuits
- passing through that guard. Previously we would close all the
- circuits through that guard. Fixes bug 9819; bugfix on
- 0.2.1.1-alpha. Reported by "skruffy".
- o Minor features (build):
- - New --disable-system-torrc compile-time option to prevent Tor from
- looking for the system-wide torrc or torrc-defaults files.
- Resolves ticket 13037.
- o Minor features (controller):
- - Include SOCKS_USERNAME and SOCKS_PASSWORD values in controller
- events so controllers can observe circuit isolation inputs. Closes
- ticket 8405.
- - ControlPort now supports the unix:/path/to/socket syntax as an
- alternative to the ControlSocket option, for consistency with
- SocksPort and HiddenServicePort. Closes ticket 14451.
- - New "GETINFO bw-event-cache" to get information about recent
- bandwidth events. Closes ticket 14128. Useful for controllers to
- get recent bandwidth history after the fix for ticket 13988.
- o Minor features (Denial of service resistance):
- - Count the total number of bytes used storing hidden service
- descriptors against the value of MaxMemInQueues. If we're low on
- memory, and more than 20% of our memory is used holding hidden
- service descriptors, free them until no more than 10% of our
- memory holds hidden service descriptors. Free the least recently
- fetched descriptors first. Resolves ticket 13806.
- - When we have recently been under memory pressure (over 3/4 of
- MaxMemInQueues is allocated), then allocate smaller zlib objects
- for small requests. Closes ticket 11791.
- o Minor features (geoip):
- - Update geoip and geoip6 files to the January 7 2015 Maxmind
- GeoLite2 Country database.
- o Minor features (guard nodes):
- - Reduce the time delay before saving guard status to disk from 10
- minutes to 30 seconds (or from one hour to 10 minutes if
- AvoidDiskWrites is set). Closes ticket 12485.
- o Minor features (hidden service):
- - Make Sybil attacks against hidden services harder by changing the
- minimum time required to get the HSDir flag from 25 hours up to 96
- hours. Addresses ticket 14149.
- - New option "HiddenServiceAllowUnknownPorts" to allow hidden
- services to disable the anti-scanning feature introduced in
- 0.2.6.2-alpha. With this option not set, a connection to an
- unlisted port closes the circuit. With this option set, only a
- RELAY_DONE cell is sent. Closes ticket 14084.
- o Minor features (interface):
- - Implement "-f -" command-line option to read torrc configuration
- from standard input, if you don't want to store the torrc file in
- the file system. Implements feature 13865.
- o Minor features (logging):
- - Add a count of unique clients to the bridge heartbeat message.
- Resolves ticket 6852.
- - Suppress "router info incompatible with extra info" message when
- reading extrainfo documents from cache. (This message got loud
- around when we closed bug 9812 in 0.2.6.2-alpha.) Closes
- ticket 13762.
- - Elevate hidden service authorized-client message from DEBUG to
- INFO. Closes ticket 14015.
- o Minor features (stability):
- - Add assertions in our hash-table iteration code to check for
- corrupted values that could cause infinite loops. Closes
- ticket 11737.
- o Minor features (systemd):
- - Various improvements and modernizations in systemd hardening
- support. Closes ticket 13805. Patch from Craig Andrews.
- o Minor features (testing networks):
- - Drop the minimum RendPostPeriod on a testing network to 5 seconds,
- and the default on a testing network to 2 minutes. Drop the
- MIN_REND_INITIAL_POST_DELAY on a testing network to 5 seconds, but
- keep the default on a testing network at 30 seconds. This reduces
- HS bootstrap time to around 25 seconds. Also, change the default
- time in test-network.sh to match. Closes ticket 13401. Patch
- by "teor".
- - Create TestingDirAuthVoteHSDir to correspond to
- TestingDirAuthVoteExit/Guard. Ensures that authorities vote the
- HSDir flag for the listed relays regardless of uptime or ORPort
- connectivity. Respects the value of VoteOnHidServDirectoriesV2.
- Partial implementation for ticket 14067. Patch by "teor".
- o Minor features (tor2web mode):
- - Introduce the config option Tor2webRendezvousPoints, which allows
- clients in Tor2webMode to select a specific Rendezvous Point to be
- used in HS circuits. This might allow better performance for
- Tor2Web nodes. Implements ticket 12844.
- o Minor bugfixes (client DNS):
- - Report the correct cached DNS expiration times on SOCKS port or in
- DNS replies. Previously, we would report everything as "never
- expires." Fixes bug 14193; bugfix on 0.2.3.17-beta.
- - Avoid a small memory leak when we find a cached answer for a
- reverse DNS lookup in a client-side DNS cache. (Remember, client-
- side DNS caching is off by default, and is not recommended.) Fixes
- bug 14259; bugfix on 0.2.0.1-alpha.
- o Minor bugfixes (client, automapping):
- - Avoid crashing on torrc lines for VirtualAddrNetworkIPv[4|6] when
- no value follows the option. Fixes bug 14142; bugfix on
- 0.2.4.7-alpha. Patch by "teor".
- - Fix a memory leak when using AutomapHostsOnResolve. Fixes bug
- 14195; bugfix on 0.1.0.1-rc.
- - Prevent changes to other options from removing the wildcard value
- "." from "AutomapHostsSuffixes". Fixes bug 12509; bugfix
- on 0.2.0.1-alpha.
- - Allow MapAddress and AutomapHostsOnResolve to work together when
- an address is mapped into another address type (like .onion) that
- must be automapped at resolve time. Fixes bug 7555; bugfix
- on 0.2.0.1-alpha.
- o Minor bugfixes (client, bridges):
- - When we are using bridges and we had a network connectivity
- problem, only retry connecting to our currently configured
- bridges, not all bridges we know about and remember using. Fixes
- bug 14216; bugfix on 0.2.2.17-alpha.
- o Minor bugfixes (client, IPv6):
- - Reject socks requests to literal IPv6 addresses when IPv6Traffic
- flag is not set; and not because the NoIPv4Traffic flag was set.
- Previously we'd looked at the NoIPv4Traffic flag for both types of
- literal addresses. Fixes bug 14280; bugfix on 0.2.4.7-alpha.
- o Minor bugfixes (compilation):
- - The address of an array in the middle of a structure will always
- be non-NULL. clang recognises this and complains. Disable the
- tautologous and redundant check to silence this warning. Fixes bug
- 14001; bugfix on 0.2.1.2-alpha.
- - Avoid warnings when building with systemd 209 or later. Fixes bug
- 14072; bugfix on 0.2.6.2-alpha. Patch from "h.venev".
- - Compile correctly with (unreleased) OpenSSL 1.1.0 headers.
- Addresses ticket 14188.
- - Build without warnings with the stock OpenSSL srtp.h header, which
- has a duplicate declaration of SSL_get_selected_srtp_profile().
- Fixes bug 14220; this is OpenSSL's bug, not ours.
- - Do not compile any code related to Tor2Web mode when Tor2Web mode
- is not enabled at compile time. Previously, this code was included
- in a disabled state. See discussion on ticket 12844.
- - Remove the --disable-threads configure option again. It was
- accidentally partially reintroduced in 29ac883606d6d. Fixes bug
- 14819; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (controller):
- - Report "down" in response to the "GETINFO entry-guards" command
- when relays are down with an unreachable_since value. Previously,
- we would report "up". Fixes bug 14184; bugfix on 0.1.2.2-alpha.
- - Avoid crashing on a malformed EXTENDCIRCUIT command. Fixes bug
- 14116; bugfix on 0.2.2.9-alpha.
- - Add a code for the END_CIRC_REASON_IP_NOW_REDUNDANT circuit close
- reason. Fixes bug 14207; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (directory authority):
- - Allow directory authorities to fetch more data from one another if
- they find themselves missing lots of votes. Previously, they had
- been bumping against the 10 MB queued data limit. Fixes bug 14261;
- bugfix on 0.1.2.5-alpha.
- - Do not attempt to download extrainfo documents which we will be
- unable to validate with a matching server descriptor. Fixes bug
- 13762; bugfix on 0.2.0.1-alpha.
- - Fix a bug that was truncating AUTHDIR_NEWDESC events sent to the
- control port. Fixes bug 14953; bugfix on 0.2.0.1-alpha.
- - Enlarge the buffer to read bwauth generated files to avoid an
- issue when parsing the file in dirserv_read_measured_bandwidths().
- Fixes bug 14125; bugfix on 0.2.2.1-alpha.
- o Minor bugfixes (file handling):
- - Stop failing when key files are zero-length. Instead, generate new
- keys, and overwrite the empty key files. Fixes bug 13111; bugfix
- on all versions of Tor. Patch by "teor".
- - Stop generating a fresh .old RSA onion key file when the .old file
- is missing. Fixes part of 13111; bugfix on 0.0.6rc1.
- - Avoid overwriting .old key files with empty key files.
- - Skip loading zero-length extrainfo store, router store, stats,
- state, and key files.
- - Avoid crashing when trying to reload a torrc specified as a
- relative path with RunAsDaemon turned on. Fixes bug 13397; bugfix
- on 0.2.3.11-alpha.
- o Minor bugfixes (hidden services):
- - Close the introduction circuit when we have no more usable intro
- points, instead of waiting for it to time out. This also ensures
- that no follow-up HS descriptor fetch is triggered when the
- circuit eventually times out. Fixes bug 14224; bugfix on 0.0.6.
- - When fetching a hidden service descriptor for a down service that
- was recently up, do not keep refetching until we try the same
- replica twice in a row. Fixes bug 14219; bugfix on 0.2.0.10-alpha.
- - Successfully launch Tor with a nonexistent hidden service
- directory. Our fix for bug 13942 didn't catch this case. Fixes bug
- 14106; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (logging):
- - Avoid crashing when there are more log domains than entries in
- domain_list. Bugfix on 0.2.3.1-alpha.
- - Add a string representation for LD_SCHED. Fixes bug 14740; bugfix
- on 0.2.6.1-alpha.
- - Don't log messages to stdout twice when starting up. Fixes bug
- 13993; bugfix on 0.2.6.1-alpha.
- o Minor bugfixes (parsing):
- - Stop accepting milliseconds (or other junk) at the end of
- descriptor publication times. Fixes bug 9286; bugfix on 0.0.2pre25.
- - Support two-number and three-number version numbers correctly, in
- case we change the Tor versioning system in the future. Fixes bug
- 13661; bugfix on 0.0.8pre1.
- o Minor bugfixes (path counting):
- - When deciding whether the consensus lists any exit nodes, count
- the number listed in the consensus, not the number we have
- descriptors for. Fixes part of bug 14918; bugfix on 0.2.6.2-alpha.
- - When deciding whether we have any exit nodes, only examine
- ExitNodes when the ExitNodes option is actually set. Fixes part of
- bug 14918; bugfix on 0.2.6.2-alpha.
- - Get rid of redundant and possibly scary warnings that we are
- missing directory information while we bootstrap. Fixes part of
- bug 14918; bugfix on 0.2.6.2-alpha.
- o Minor bugfixes (portability):
- - Fix the ioctl()-based network interface lookup code so that it
- will work on systems that have variable-length struct ifreq, for
- example Mac OS X.
- - Fix scheduler compilation on targets where char is unsigned. Fixes
- bug 14764; bugfix on 0.2.6.2-alpha. Reported by Christian Kujau.
- o Minor bugfixes (sandbox):
- - Allow glibc fatal errors to be sent to stderr before Tor exits.
- Previously, glibc would try to write them to /dev/tty, and the
- sandbox would trap the call and make Tor exit prematurely. Fixes
- bug 14759; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (shutdown):
- - When shutting down, always call event_del() on lingering read or
- write events before freeing them. Otherwise, we risk double-frees
- or read-after-frees in event_base_free(). Fixes bug 12985; bugfix
- on 0.1.0.2-rc.
- o Minor bugfixes (small memory leaks):
- - Avoid leaking memory when using IPv6 virtual address mappings.
- Fixes bug 14123; bugfix on 0.2.4.7-alpha. Patch by Tom van
- der Woerdt.
- o Minor bugfixes (statistics):
- - Increase period over which bandwidth observations are aggregated
- from 15 minutes to 4 hours. Fixes bug 13988; bugfix on 0.0.8pre1.
- o Minor bugfixes (systemd support):
- - Fix detection and operation of systemd watchdog. Fixes part of bug
- 14141; bugfix on 0.2.6.2-alpha. Patch from Tomasz Torcz.
- - Run correctly under systemd with the RunAsDaemon option set. Fixes
- part of bug 14141; bugfix on 0.2.5.7-rc. Patch from Tomasz Torcz.
- - Inform the systemd supervisor about more changes in the Tor
- process status. Implements part of ticket 14141. Patch from
- Tomasz Torcz.
- - Cause the "--disable-systemd" option to actually disable systemd
- support. Fixes bug 14350; bugfix on 0.2.6.2-alpha. Patch
- from "blueness".
- o Minor bugfixes (TLS):
- - Check more thoroughly throughout the TLS code for possible
- unlogged TLS errors. Possible diagnostic or fix for bug 13319.
- o Minor bugfixes (transparent proxy):
- - Use getsockname, not getsockopt, to retrieve the address for a
- TPROXY-redirected connection. Fixes bug 13796; bugfix
- on 0.2.5.2-alpha.
- o Code simplification and refactoring:
- - Move fields related to isolating and configuring client ports into
- a shared structure. Previously, they were duplicated across
- port_cfg_t, listener_connection_t, and edge_connection_t. Failure
- to copy them correctly had been the cause of at least one bug in
- the past. Closes ticket 8546.
- - Refactor the get_interface_addresses_raw() doom-function into
- multiple smaller and simpler subfunctions. Cover the resulting
- subfunctions with unit-tests. Fixes a significant portion of
- issue 12376.
- - Remove workaround in dirserv_thinks_router_is_hs_dir() that was
- only for version <= 0.2.2.24 which is now deprecated. Closes
- ticket 14202.
- - Remove a test for a long-defunct broken version-one
- directory server.
- o Documentation:
- - Adding section on OpenBSD to our TUNING document. Thanks to mmcc
- for writing the OpenBSD-specific tips. Resolves ticket 13702.
- - Make the tor-resolve documentation match its help string and its
- options. Resolves part of ticket 14325.
- - Log a more useful error message from tor-resolve when failing to
- look up a hidden service address. Resolves part of ticket 14325.
- o Downgraded warnings:
- - Don't warn when we've attempted to contact a relay using the wrong
- ntor onion key. Closes ticket 9635.
- o Removed features:
- - To avoid confusion with the "ExitRelay" option, "ExitNode" is no
- longer silently accepted as an alias for "ExitNodes".
- - The --enable-mempool and --enable-buf-freelists options, which
- were originally created to work around bad malloc implementations,
- no longer exist. They were off-by-default in 0.2.5. Closes
- ticket 14848.
- o Testing:
- - Make the checkdir/perms test complete successfully even if the
- global umask is not 022. Fixes bug 14215; bugfix on 0.2.6.2-alpha.
- - Test that tor does not fail when key files are zero-length. Check
- that tor generates new keys, and overwrites the empty key files.
- - Test that tor generates new keys when keys are missing
- (existing behavior).
- - Test that tor does not overwrite key files that already contain
- data (existing behavior). Tests bug 13111. Patch by "teor".
- - New "make test-stem" target to run stem integration tests.
- Requires that the "STEM_SOURCE_DIR" environment variable be set.
- Closes ticket 14107.
- - Make the test_cmdline_args.py script work correctly on Windows.
- Patch from Gisle Vanem.
- - Move the slower unit tests into a new "./src/test/test-slow"
- binary that can be run independently of the other tests. Closes
- ticket 13243.
- - Avoid undefined behavior when sampling huge values from the
- Laplace distribution. This made unittests fail on Raspberry Pi.
- Bug found by Device. Fixes bug 14090; bugfix on 0.2.6.2-alpha.
- Changes in version 0.2.6.2-alpha - 2014-12-31
- Tor 0.2.6.2-alpha is the second alpha release in the 0.2.6.x series.
- It introduces a major new backend for deciding when to send cells on
- channels, which should lead down the road to big performance
- increases. It contains security and statistics features for better
- work on hidden services, and numerous bugfixes.
- This release contains many new unit tests, along with major
- performance improvements for running testing networks using Chutney.
- Thanks to a series of patches contributed by "teor", testing networks
- should now bootstrap in seconds, rather than minutes.
- o Major features (relay, infrastructure):
- - Complete revision of the code that relays use to decide which cell
- to send next. Formerly, we selected the best circuit to write on
- each channel, but we didn't select among channels in any
- sophisticated way. Now, we choose the best circuits globally from
- among those whose channels are ready to deliver traffic.
- This patch implements a new inter-cmux comparison API, a global
- high/low watermark mechanism and a global scheduler loop for
- transmission prioritization across all channels as well as among
- circuits on one channel. This schedule is currently tuned to
- (tolerantly) avoid making changes in network performance, but it
- should form the basis for major circuit performance increases in
- the future. Code by Andrea; tuning by Rob Jansen; implements
- ticket 9262.
- o Major features (hidden services):
- - Make HS port scanning more difficult by immediately closing the
- circuit when a user attempts to connect to a nonexistent port.
- Closes ticket 13667.
- - Add a HiddenServiceStatistics option that allows Tor relays to
- gather and publish statistics about the overall size and volume of
- hidden service usage. Specifically, when this option is turned on,
- an HSDir will publish an approximate number of hidden services
- that have published descriptors to it the past 24 hours. Also, if
- a relay has acted as a hidden service rendezvous point, it will
- publish the approximate amount of rendezvous cells it has relayed
- the past 24 hours. The statistics themselves are obfuscated so
- that the exact values cannot be derived. For more details see
- proposal 238, "Better hidden service stats from Tor relays". This
- feature is currently disabled by default. Implements feature 13192.
- o Major bugfixes (client, automap):
- - Repair automapping with IPv6 addresses. This automapping should
- have worked previously, but one piece of debugging code that we
- inserted to detect a regression actually caused the regression to
- manifest itself again. Fixes bug 13811 and bug 12831; bugfix on
- 0.2.4.7-alpha. Diagnosed and fixed by Francisco Blas
- Izquierdo Riera.
- o Major bugfixes (hidden services):
- - When closing an introduction circuit that was opened in parallel
- with others, don't mark the introduction point as unreachable.
- Previously, the first successful connection to an introduction
- point would make the other introduction points get marked as
- having timed out. Fixes bug 13698; bugfix on 0.0.6rc2.
- o Directory authority changes:
- - Remove turtles as a directory authority.
- - Add longclaw as a new (v3) directory authority. This implements
- ticket 13296. This keeps the directory authority count at 9.
- o Major removed features:
- - Tor clients no longer support connecting to hidden services
- running on Tor 0.2.2.x and earlier; the Support022HiddenServices
- option has been removed. (There shouldn't be any hidden services
- running these versions on the network.) Closes ticket 7803.
- o Minor features (client):
- - Validate hostnames in SOCKS5 requests more strictly. If SafeSocks
- is enabled, reject requests with IP addresses as hostnames.
- Resolves ticket 13315.
- o Minor features (controller):
- - Add a "SIGNAL HEARTBEAT" controller command that tells Tor to
- write an unscheduled heartbeat message to the log. Implements
- feature 9503.
- o Minor features (geoip):
- - Update geoip and geoip6 to the November 15 2014 Maxmind GeoLite2
- Country database.
- o Minor features (hidden services):
- - When re-enabling the network, don't try to build introduction
- circuits until we have successfully built a circuit. This makes
- hidden services come up faster when the network is re-enabled.
- Patch from "akwizgran". Closes ticket 13447.
- - When we fail to retrieve a hidden service descriptor, send the
- controller an "HS_DESC FAILED" controller event. Implements
- feature 13212.
- - New HiddenServiceDirGroupReadable option to cause hidden service
- directories and hostname files to be created group-readable. Patch
- from "anon", David Stainton, and "meejah". Closes ticket 11291.
- o Minor features (systemd):
- - Where supported, when running with systemd, report successful
- startup to systemd. Part of ticket 11016. Patch by Michael Scherer.
- - When running with systemd, support systemd watchdog messages. Part
- of ticket 11016. Patch by Michael Scherer.
- o Minor features (transparent proxy):
- - Update the transparent proxy option checks to allow for both ipfw
- and pf on OS X. Closes ticket 14002.
- - Use the correct option when using IPv6 with transparent proxy
- support on Linux. Resolves 13808. Patch by Francisco Blas
- Izquierdo Riera.
- o Minor bugfixes (preventative security, C safety):
- - When reading a hexadecimal, base-32, or base-64 encoded value from
- a string, always overwrite the whole output buffer. This prevents
- some bugs where we would look at (but fortunately, not reveal)
- uninitialized memory on the stack. Fixes bug 14013; bugfix on all
- versions of Tor.
- - Clear all memory targeted by tor_addr_{to,from}_sockaddr(), not
- just the part that's used. This makes it harder for data leak bugs
- to occur in the event of other programming failures. Resolves
- ticket 14041.
- o Minor bugfixes (client, microdescriptors):
- - Use a full 256 bits of the SHA256 digest of a microdescriptor when
- computing which microdescriptors to download. This keeps us from
- erroneous download behavior if two microdescriptor digests ever
- have the same first 160 bits. Fixes part of bug 13399; bugfix
- on 0.2.3.1-alpha.
- - Reset a router's status if its microdescriptor digest changes,
- even if the first 160 bits remain the same. Fixes part of bug
- 13399; bugfix on 0.2.3.1-alpha.
- o Minor bugfixes (compilation):
- - Silence clang warnings under --enable-expensive-hardening,
- including implicit truncation of 64 bit values to 32 bit, const
- char assignment to self, tautological compare, and additional
- parentheses around equality tests. Fixes bug 13577; bugfix
- on 0.2.5.4-alpha.
- - Fix a clang warning about checking whether an address in the
- middle of a structure is NULL. Fixes bug 14001; bugfix
- on 0.2.1.2-alpha.
- o Minor bugfixes (hidden services):
- - Correctly send a controller event when we find that a rendezvous
- circuit has finished. Fixes bug 13936; bugfix on 0.1.1.5-alpha.
- - Pre-check directory permissions for new hidden-services to avoid
- at least one case of "Bug: Acting on config options left us in a
- broken state. Dying." Fixes bug 13942; bugfix on 0.0.6pre1.
- - When adding a new hidden service (for example, via SETCONF), Tor
- no longer congratulates the user for running a relay. Fixes bug
- 13941; bugfix on 0.2.6.1-alpha.
- - When fetching hidden service descriptors, we now check not only
- for whether we got the hidden service we had in mind, but also
- whether we got the particular descriptors we wanted. This prevents
- a class of inefficient but annoying DoS attacks by hidden service
- directories. Fixes bug 13214; bugfix on 0.2.1.6-alpha. Reported
- by "special".
- o Minor bugfixes (Linux seccomp2 sandbox):
- - Make transparent proxy support work along with the seccomp2
- sandbox. Fixes part of bug 13808; bugfix on 0.2.5.1-alpha. Patch
- by Francisco Blas Izquierdo Riera.
- - Fix a memory leak in tor-resolve when running with the sandbox
- enabled. Fixes bug 14050; bugfix on 0.2.5.9-rc.
- o Minor bugfixes (logging):
- - Downgrade warnings about RSA signature failures to info log level.
- Emit a warning when an extra info document is found incompatible
- with a corresponding router descriptor. Fixes bug 9812; bugfix
- on 0.0.6rc3.
- - Make connection_ap_handshake_attach_circuit() log the circuit ID
- correctly. Fixes bug 13701; bugfix on 0.0.6.
- o Minor bugfixes (misc):
- - Stop allowing invalid address patterns like "*/24" that contain
- both a wildcard address and a bit prefix length. This affects all
- our address-range parsing code. Fixes bug 7484; bugfix
- on 0.0.2pre14.
- o Minor bugfixes (testing networks, fast startup):
- - Allow Tor to build circuits using a consensus with no exits. If
- the consensus has no exits (typical of a bootstrapping test
- network), allow Tor to build circuits once enough descriptors have
- been downloaded. This assists in bootstrapping a testing Tor
- network. Fixes bug 13718; bugfix on 0.2.4.10-alpha. Patch
- by "teor".
- - When V3AuthVotingInterval is low, give a lower If-Modified-Since
- header to directory servers. This allows us to obtain consensuses
- promptly when the consensus interval is very short. This assists
- in bootstrapping a testing Tor network. Fixes parts of bugs 13718
- and 13963; bugfix on 0.2.0.3-alpha. Patch by "teor".
- - Stop assuming that private addresses are local when checking
- reachability in a TestingTorNetwork. Instead, when testing, assume
- all OR connections are remote. (This is necessary due to many test
- scenarios running all relays on localhost.) This assists in
- bootstrapping a testing Tor network. Fixes bug 13924; bugfix on
- 0.1.0.1-rc. Patch by "teor".
- - Avoid building exit circuits from a consensus with no exits. Now
- thanks to our fix for 13718, we accept a no-exit network as not
- wholly lost, but we need to remember not to try to build exit
- circuits on it. Closes ticket 13814; patch by "teor".
- - Stop requiring exits to have non-zero bandwithcapacity in a
- TestingTorNetwork. Instead, when TestingMinExitFlagThreshold is 0,
- ignore exit bandwidthcapacity. This assists in bootstrapping a
- testing Tor network. Fixes parts of bugs 13718 and 13839; bugfix
- on 0.2.0.3-alpha. Patch by "teor".
- - Add "internal" to some bootstrap statuses when no exits are
- available. If the consensus does not contain Exits, Tor will only
- build internal circuits. In this case, relevant statuses will
- contain the word "internal" as indicated in the Tor control-
- spec.txt. When bootstrap completes, Tor will be ready to build
- internal circuits. If a future consensus contains Exits, exit
- circuits may become available. Fixes part of bug 13718; bugfix on
- 0.2.4.10-alpha. Patch by "teor".
- - Decrease minimum consensus interval to 10 seconds when
- TestingTorNetwork is set, or 5 seconds for the first consensus.
- Fix assumptions throughout the code that assume larger intervals.
- Fixes bugs 13718 and 13823; bugfix on 0.2.0.3-alpha. Patch
- by "teor".
- - Avoid excluding guards from path building in minimal test
- networks, when we're in a test network and excluding guards would
- exclude all relays. This typically occurs in incredibly small tor
- networks, and those using "TestingAuthVoteGuard *". Fixes part of
- bug 13718; bugfix on 0.1.1.11-alpha. Patch by "teor".
- o Code simplification and refactoring:
- - Stop using can_complete_circuits as a global variable; access it
- with a function instead.
- - Avoid using operators directly as macro arguments: this lets us
- apply coccinelle transformations to our codebase more directly.
- Closes ticket 13172.
- - Combine the functions used to parse ClientTransportPlugin and
- ServerTransportPlugin into a single function. Closes ticket 6456.
- - Add inline functions and convenience macros for inspecting channel
- state. Refactor the code to use convenience macros instead of
- checking channel state directly. Fixes issue 7356.
- - Document all members of was_router_added_t and rename
- ROUTER_WAS_NOT_NEW to ROUTER_IS_ALREADY_KNOWN to make it less
- confusable with ROUTER_WAS_TOO_OLD. Fixes issue 13644.
- - In connection_exit_begin_conn(), use END_CIRC_REASON_TORPROTOCOL
- constant instead of hardcoded value. Fixes issue 13840.
- - Refactor our generic strmap and digestmap types into a single
- implementation, so that we can add a new digest256map
- type trivially.
- o Documentation:
- - Document the bridge-authority-only 'networkstatus-bridges' file.
- Closes ticket 13713; patch from "tom".
- - Fix typo in PredictedPortsRelevanceTime option description in
- manpage. Resolves issue 13707.
- - Stop suggesting that users specify relays by nickname: it isn't a
- good idea. Also, properly cross-reference how to specify relays in
- all parts of manual documenting options that take a list of
- relays. Closes ticket 13381.
- - Clarify the HiddenServiceDir option description in manpage to make
- it clear that relative paths are taken with respect to the current
- working directory. Also clarify that this behavior is not
- guaranteed to remain indefinitely. Fixes issue 13913.
- o Testing:
- - New tests for many parts of channel, relay, and circuitmux
- functionality. Code by Andrea; part of 9262.
- - New tests for parse_transport_line(). Part of ticket 6456.
- - In the unit tests, use chgrp() to change the group of the unit
- test temporary directory to the current user, so that the sticky
- bit doesn't interfere with tests that check directory groups.
- Closes 13678.
- - Add unit tests for resolve_my_addr(). Part of ticket 12376; patch
- by 'rl1987'.
- Changes in version 0.2.6.1-alpha - 2014-10-30
- Tor 0.2.6.1-alpha is the first release in the Tor 0.2.6.x series. It
- includes numerous code cleanups and new tests, and fixes a large
- number of annoying bugs. Out-of-memory conditions are handled better
- than in 0.2.5, pluggable transports have improved proxy support, and
- clients now use optimistic data for contacting hidden services. Also,
- we are now more robust to changes in what we consider a parseable
- directory object, so that tightening restrictions does not have a risk
- of introducing infinite download loops.
- This is the first alpha release in a new series, so expect there to be
- bugs. Users who would rather test out a more stable branch should stay
- with 0.2.5.x for now.
- o New compiler and system requirements:
- - Tor 0.2.6.x requires that your compiler support more of the C99
- language standard than before. The 'configure' script now detects
- whether your compiler supports C99 mid-block declarations and
- designated initializers. If it does not, Tor will not compile.
- We may revisit this requirement if it turns out that a significant
- number of people need to build Tor with compilers that don't
- bother implementing a 15-year-old standard. Closes ticket 13233.
- - Tor no longer supports systems without threading support. When we
- began working on Tor, there were several systems that didn't have
- threads, or where the thread support wasn't able to run the
- threads of a single process on multiple CPUs. That no longer
- holds: every system where Tor needs to run well now has threading
- support. Resolves ticket 12439.
- o Removed platform support:
- - We no longer include special code to build on Windows CE; as far
- as we know, nobody has used Tor on Windows CE in a very long time.
- Closes ticket 11446.
- o Major features (bridges):
- - Expose the outgoing upstream HTTP/SOCKS proxy to pluggable
- transports if they are configured via the "TOR_PT_PROXY"
- environment variable. Implements proposal 232. Resolves
- ticket 8402.
- o Major features (client performance, hidden services):
- - Allow clients to use optimistic data when connecting to a hidden
- service, which should remove a round-trip from hidden service
- initialization. See proposal 181 for details. Implements
- ticket 13211.
- o Major features (directory system):
- - Upon receiving an unparseable directory object, if its digest
- matches what we expected, then don't try to download it again.
- Previously, when we got a descriptor we didn't like, we would keep
- trying to download it over and over. Closes ticket 11243.
- o Major features (sample torrc):
- - Add a new, infrequently-changed "torrc.minimal". This file is
- similar to torrc.sample, but it will change as infrequently as
- possible, for the benefit of users whose systems prompt them for
- intervention whenever a default configuration file is changed.
- Making this change allows us to update torrc.sample to be a more
- generally useful "sample torrc".
- o Major bugfixes (directory authorities):
- - Do not assign the HSDir flag to relays if they are not Valid, or
- currently hibernating. Fixes 12573; bugfix on 0.2.0.10-alpha.
- o Major bugfixes (directory bandwidth performance):
- - Don't flush the zlib buffer aggressively when compressing
- directory information for clients. This should save about 7% of
- the bandwidth currently used for compressed descriptors and
- microdescriptors. Fixes bug 11787; bugfix on 0.1.1.23.
- o Minor features (security, memory wiping):
- - Ensure we securely wipe keys from memory after
- crypto_digest_get_digest and init_curve25519_keypair_from_file
- have finished using them. Resolves ticket 13477.
- o Minor features (security, out-of-memory handling):
- - When handling an out-of-memory condition, allocate less memory for
- temporary data structures. Fixes issue 10115.
- - When handling an out-of-memory condition, consider more types of
- buffers, including those on directory connections, and zlib
- buffers. Resolves ticket 11792.
- o Minor features:
- - When identity keypair is generated for first time, log a
- congratulatory message that links to the new relay lifecycle
- document. Implements feature 10427.
- o Minor features (client):
- - Clients are now willing to send optimistic data (before they
- receive a 'connected' cell) to relays of any version. (Relays
- without support for optimistic data are no longer supported on the
- Tor network.) Resolves ticket 13153.
- o Minor features (directory authorities):
- - Don't list relays with a bandwidth estimate of 0 in the consensus.
- Implements a feature proposed during discussion of bug 13000.
- - In tor-gencert, report an error if the user provides the same
- argument more than once.
- - If a directory authority can't find a best consensus method in the
- votes that it holds, it now falls back to its favorite consensus
- method. Previously, it fell back to method 1. Neither of these is
- likely to get enough signatures, but "fall back to favorite"
- doesn't require us to maintain support an obsolete consensus
- method. Implements part of proposal 215.
- o Minor features (logging):
- - On Unix-like systems, you can now use named pipes as the target of
- the Log option, and other options that try to append to files.
- Closes ticket 12061. Patch from "carlo von lynX".
- - When opening a log file at startup, send it every log message that
- we generated between startup and opening it. Previously, log
- messages that were generated before opening the log file were only
- logged to stdout. Closes ticket 6938.
- - Add a TruncateLogFile option to overwrite logs instead of
- appending to them. Closes ticket 5583.
- o Minor features (portability, Solaris):
- - Threads are no longer disabled by default on Solaris; we believe
- that the versions of Solaris with broken threading support are all
- obsolete by now. Resolves ticket 9495.
- o Minor features (relay):
- - Re-check our address after we detect a changed IP address from
- getsockname(). This ensures that the controller command "GETINFO
- address" will report the correct value. Resolves ticket 11582.
- Patch from "ra".
- - A new AccountingRule option lets Relays set whether they'd like
- AccountingMax to be applied separately to inbound and outbound
- traffic, or applied to the sum of inbound and outbound traffic.
- Resolves ticket 961. Patch by "chobe".
- o Minor features (testing networks):
- - Add the TestingDirAuthVoteExit option, which lists nodes to assign
- the "Exit" flag regardless of their uptime, bandwidth, or exit
- policy. TestingTorNetwork must be set for this option to have any
- effect. Previously, authorities would take up to 35 minutes to
- give nodes the Exit flag in a test network. Partially implements
- ticket 13161.
- o Minor features (validation):
- - Check all date/time values passed to tor_timegm and
- parse_rfc1123_time for validity, taking leap years into account.
- Improves HTTP header validation. Implemented with bug 13476.
- - In correct_tm(), limit the range of values returned by system
- localtime(_r) and gmtime(_r) to be between the years 1 and 8099.
- This means we don't have to deal with negative or too large dates,
- even if a clock is wrong. Otherwise we might fail to read a file
- written by us which includes such a date. Fixes bug 13476.
- o Minor bugfixes (bridge clients):
- - When configured to use a bridge without an identity digest (not
- recommended), avoid launching an extra channel to it when
- bootstrapping. Fixes bug 7733; bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (bridges):
- - When DisableNetwork is set, do not launch pluggable transport
- plugins, and if any are running, terminate them. Fixes bug 13213;
- bugfix on 0.2.3.6-alpha.
- o Minor bugfixes (C correctness):
- - Fix several instances of possible integer overflow/underflow/NaN.
- Fixes bug 13104; bugfix on 0.2.3.1-alpha and later. Patches
- from "teor".
- - In circuit_build_times_calculate_timeout() in circuitstats.c,
- avoid dividing by zero in the pareto calculations. This traps
- under clang's "undefined-trap" sanitizer. Fixes bug 13290; bugfix
- on 0.2.2.2-alpha.
- - Fix an integer overflow in format_time_interval(). Fixes bug
- 13393; bugfix on 0.2.0.10-alpha.
- - Set the correct day of year value when the system's localtime(_r)
- or gmtime(_r) functions fail to set struct tm. Not externally
- visible. Fixes bug 13476; bugfix on 0.0.2pre14.
- - Avoid unlikely signed integer overflow in tor_timegm on systems
- with 32-bit time_t. Fixes bug 13476; bugfix on 0.0.2pre14.
- o Minor bugfixes (client):
- - Fix smartlist_choose_node_by_bandwidth() so that relays with the
- BadExit flag are not considered worthy candidates. Fixes bug
- 13066; bugfix on 0.1.2.3-alpha.
- - Use the consensus schedule for downloading consensuses, and not
- the generic schedule. Fixes bug 11679; bugfix on 0.2.2.6-alpha.
- - Handle unsupported or malformed SOCKS5 requests properly by
- responding with the appropriate error message before closing the
- connection. Fixes bugs 12971 and 13314; bugfix on 0.0.2pre13.
- o Minor bugfixes (client, torrc):
- - Stop modifying the value of our DirReqStatistics torrc option just
- because we're not a bridge or relay. This bug was causing Tor
- Browser users to write "DirReqStatistics 0" in their torrc files
- as if they had chosen to change the config. Fixes bug 4244; bugfix
- on 0.2.3.1-alpha.
- - When GeoIPExcludeUnknown is enabled, do not incorrectly decide
- that our options have changed every time we SIGHUP. Fixes bug
- 9801; bugfix on 0.2.4.10-alpha. Patch from "qwerty1".
- o Minor bugfixes (controller):
- - Return an error when the second or later arguments of the
- "setevents" controller command are invalid events. Previously we
- would return success while silently skipping invalid events. Fixes
- bug 13205; bugfix on 0.2.3.2-alpha. Reported by "fpxnns".
- o Minor bugfixes (directory system):
- - Always believe that v3 directory authorities serve extra-info
- documents, whether they advertise "caches-extra-info" or not.
- Fixes part of bug 11683; bugfix on 0.2.0.1-alpha.
- - When running as a v3 directory authority, advertise that you serve
- extra-info documents so that clients who want them can find them
- from you too. Fixes part of bug 11683; bugfix on 0.2.0.1-alpha.
- - Check the BRIDGE_DIRINFO flag bitwise rather than using equality.
- Previously, directories offering BRIDGE_DIRINFO and some other
- flag (i.e. microdescriptors or extrainfo) would be ignored when
- looking for bridges. Partially fixes bug 13163; bugfix
- on 0.2.0.7-alpha.
- o Minor bugfixes (networking):
- - Check for orconns and use connection_or_close_for_error() rather
- than connection_mark_for_close() directly in the getsockopt()
- failure case of connection_handle_write_impl(). Fixes bug 11302;
- bugfix on 0.2.4.4-alpha.
- o Minor bugfixes (relay):
- - When generating our family list, remove spaces from around the
- entries. Fixes bug 12728; bugfix on 0.2.1.7-alpha.
- - If our previous bandwidth estimate was 0 bytes, allow publishing a
- new relay descriptor immediately. Fixes bug 13000; bugfix
- on 0.1.1.6-alpha.
- o Minor bugfixes (testing networks):
- - Fix TestingDirAuthVoteGuard to properly give out Guard flags in a
- testing network. Fixes bug 13064; bugfix on 0.2.5.2-alpha.
- - Stop using the default authorities in networks which provide both
- AlternateDirAuthority and AlternateBridgeAuthority. Partially
- fixes bug 13163; bugfix on 0.2.0.13-alpha.
- o Minor bugfixes (testing):
- - Stop spawn test failures due to a race condition between the
- SIGCHLD handler updating the process status, and the test reading
- it. Fixes bug 13291; bugfix on 0.2.3.3-alpha.
- o Minor bugfixes (testing, Windows):
- - Avoid passing an extra backslash when creating a temporary
- directory for running the unit tests on Windows. Fixes bug 12392;
- bugfix on 0.2.2.25-alpha. Patch from Gisle Vanem.
- o Minor bugfixes (windows):
- - Remove code to special-case handling of NTE_BAD_KEYSET when
- acquiring windows CryptoAPI context. This error can't actually
- occur for the parameters we're providing. Fixes bug 10816; bugfix
- on 0.0.2pre26.
- o Minor bugfixes (zlib):
- - Avoid truncating a zlib stream when trying to finalize it with an
- empty output buffer. Fixes bug 11824; bugfix on 0.1.1.23.
- o Build fixes:
- - Allow our configure script to build correctly with autoconf 2.62
- again. Fixes bug 12693; bugfix on 0.2.5.2-alpha.
- - Improve the error message from ./configure to make it clear that
- when asciidoc has not been found, the user will have to either add
- --disable-asciidoc argument or install asciidoc. Resolves
- ticket 13228.
- o Code simplification and refactoring:
- - Change the entry_is_live() function to take named bitfield
- elements instead of an unnamed list of booleans. Closes
- ticket 12202.
- - Refactor and unit-test entry_is_time_to_retry() in entrynodes.c.
- Resolves ticket 12205.
- - Use calloc and reallocarray functions instead of multiply-
- then-malloc. This makes it less likely for us to fall victim to an
- integer overflow attack when allocating. Resolves ticket 12855.
- - Use the standard macro name SIZE_MAX, instead of our
- own SIZE_T_MAX.
- - Document usage of the NO_DIRINFO and ALL_DIRINFO flags clearly in
- functions which take them as arguments. Replace 0 with NO_DIRINFO
- in a function call for clarity. Seeks to prevent future issues
- like 13163.
- - Avoid 4 null pointer errors under clang static analysis by using
- tor_assert() to prove that the pointers aren't null. Fixes
- bug 13284.
- - Rework the API of policies_parse_exit_policy() to use a bitmask to
- represent parsing options, instead of a confusing mess of
- booleans. Resolves ticket 8197.
- - Introduce a helper function to parse ExitPolicy in
- or_options_t structure.
- o Documentation:
- - Add a doc/TUNING document with tips for handling large numbers of
- TCP connections when running busy Tor relay. Update the warning
- message to point to this file when running out of sockets
- operating system is allowing to use simultaneously. Resolves
- ticket 9708.
- o Removed features:
- - We no longer remind the user about configuration options that have
- been obsolete since 0.2.3.x or earlier. Patch by Adrien Bak.
- - Remove our old, non-weighted bandwidth-based node selection code.
- Previously, we used it as a fallback when we couldn't perform
- weighted bandwidth-based node selection. But that would only
- happen in the cases where we had no consensus, or when we had a
- consensus generated by buggy or ancient directory authorities. In
- either case, it's better to use the more modern, better maintained
- algorithm, with reasonable defaults for the weights. Closes
- ticket 13126.
- - Remove the --disable-curve25519 configure option. Relays and
- clients now are required to support curve25519 and the
- ntor handshake.
- - The old "StrictEntryNodes" and "StrictExitNodes" options, which
- used to be deprecated synonyms for "StrictNodes", are now marked
- obsolete. Resolves ticket 12226.
- - Clients don't understand the BadDirectory flag in the consensus
- anymore, and ignore it.
- o Testing:
- - Refactor the function that chooses guard nodes so that it can more
- easily be tested; write some tests for it.
- - Fix and re-enable the fgets_eagain unit test. Fixes bug 12503;
- bugfix on 0.2.3.1-alpha. Patch from "cypherpunks."
- - Create unit tests for format_time_interval(). With bug 13393.
- - Add unit tests for tor_timegm signed overflow, tor_timegm and
- parse_rfc1123_time validity checks, correct_tm year clamping. Unit
- tests (visible) fixes in bug 13476.
- - Add a "coverage-html" make target to generate HTML-visualized
- coverage results when building with --enable-coverage. (Requires
- lcov.) Patch from Kevin Murray.
- - Enable the backtrace handler (where supported) when running the
- unit tests.
- - Revise all unit tests that used the legacy test_* macros to
- instead use the recommended tt_* macros. This patch was generated
- with coccinelle, to avoid manual errors. Closes ticket 13119.
- o Distribution (systemd):
- - systemd unit file: only allow tor to write to /var/lib/tor and
- /var/log/tor. The rest of the filesystem is accessible for reading
- only. Patch by intrigeri; resolves ticket 12751.
- - systemd unit file: ensure that the process and all its children
- can never gain new privileges. Patch by intrigeri; resolves
- ticket 12939.
- - systemd unit file: set up /var/run/tor as writable for the Tor
- service. Patch by intrigeri; resolves ticket 13196.
- o Removed features (directory authorities):
- - Remove code that prevented authorities from listing Tor relays
- affected by CVE-2011-2769 as guards. These relays are already
- rejected altogether due to the minimum version requirement of
- 0.2.3.16-alpha. Closes ticket 13152.
- - The "AuthDirRejectUnlisted" option no longer has any effect, as
- the fingerprints file (approved-routers) has been deprecated.
- - Directory authorities do not support being Naming dirauths anymore.
- The "NamingAuthoritativeDir" config option is now obsolete.
- - Directory authorities do not support giving out the BadDirectory
- flag anymore.
- - Directory authorities no longer advertise or support consensus
- methods 1 through 12 inclusive. These consensus methods were
- obsolete and/or insecure: maintaining the ability to support them
- served no good purpose. Implements part of proposal 215; closes
- ticket 10163.
- o Testing (test-network.sh):
- - Stop using "echo -n", as some shells' built-in echo doesn't
- support "-n". Instead, use "/bin/echo -n". Partially fixes
- bug 13161.
- - Stop an apparent test-network hang when used with make -j2. Fixes
- bug 13331.
- - Add a --delay option to test-network.sh, which configures the
- delay before the chutney network tests for data transmission.
- Partially implements ticket 13161.
- Changes in version 0.2.5.10 - 2014-10-24
- Tor 0.2.5.10 is the first stable release in the 0.2.5 series.
- It adds several new security features, including improved
- denial-of-service resistance for relays, new compiler hardening
- options, and a system-call sandbox for hardened installations on Linux
- (requires seccomp2). The controller protocol has several new features,
- resolving IPv6 addresses should work better than before, and relays
- should be a little more CPU-efficient. We've added support for more
- OpenBSD and FreeBSD transparent proxy types. We've improved the build
- system and testing infrastructure to allow unit testing of more parts
- of the Tor codebase. Finally, we've addressed several nagging pluggable
- transport usability issues, and included numerous other small bugfixes
- and features mentioned below.
- This release marks end-of-life for Tor 0.2.3.x; those Tor versions
- have accumulated many known flaws; everyone should upgrade.
- o Deprecated versions:
- - Tor 0.2.3.x has reached end-of-life; it has received no patches or
- attention for some while.
- Changes in version 0.2.5.9-rc - 2014-10-20
- Tor 0.2.5.9-rc is the third release candidate for the Tor 0.2.5.x
- series. It disables SSL3 in response to the recent "POODLE" attack
- (even though POODLE does not affect Tor). It also works around a crash
- bug caused by some operating systems' response to the "POODLE" attack
- (which does affect Tor). It also contains a few miscellaneous fixes.
- o Major security fixes:
- - Disable support for SSLv3. All versions of OpenSSL in use with Tor
- today support TLS 1.0 or later, so we can safely turn off support
- for this old (and insecure) protocol. Fixes bug 13426.
- o Major bugfixes (openssl bug workaround):
- - Avoid crashing when using OpenSSL version 0.9.8zc, 1.0.0o, or
- 1.0.1j, built with the 'no-ssl3' configuration option. Fixes bug
- 13471. This is a workaround for an OpenSSL bug.
- o Minor bugfixes:
- - Disable the sandbox name resolver cache when running tor-resolve:
- tor-resolve doesn't use the sandbox code, and turning it on was
- breaking attempts to do tor-resolve on a non-default server on
- Linux. Fixes bug 13295; bugfix on 0.2.5.3-alpha.
- o Compilation fixes:
- - Build and run correctly on systems like OpenBSD-current that have
- patched OpenSSL to remove get_cipher_by_char and/or its
- implementations. Fixes issue 13325.
- o Downgraded warnings:
- - Downgrade the severity of the 'unexpected sendme cell from client'
- from 'warn' to 'protocol warning'. Closes ticket 8093.
- Changes in version 0.2.4.25 - 2014-10-20
- Tor 0.2.4.25 disables SSL3 in response to the recent "POODLE" attack
- (even though POODLE does not affect Tor). It also works around a crash
- bug caused by some operating systems' response to the "POODLE" attack
- (which does affect Tor).
- o Major security fixes (also in 0.2.5.9-rc):
- - Disable support for SSLv3. All versions of OpenSSL in use with Tor
- today support TLS 1.0 or later, so we can safely turn off support
- for this old (and insecure) protocol. Fixes bug 13426.
- o Major bugfixes (openssl bug workaround, also in 0.2.5.9-rc):
- - Avoid crashing when using OpenSSL version 0.9.8zc, 1.0.0o, or
- 1.0.1j, built with the 'no-ssl3' configuration option. Fixes bug
- 13471. This is a workaround for an OpenSSL bug.
- Changes in version 0.2.5.8-rc - 2014-09-22
- Tor 0.2.5.8-rc is the second release candidate for the Tor 0.2.5.x
- series. It fixes a bug that affects consistency and speed when
- connecting to hidden services, and it updates the location of one of
- the directory authorities.
- o Major bugfixes:
- - Clients now send the correct address for their chosen rendezvous
- point when trying to access a hidden service. They used to send
- the wrong address, which would still work some of the time because
- they also sent the identity digest of the rendezvous point, and if
- the hidden service happened to try connecting to the rendezvous
- point from a relay that already had a connection open to it,
- the relay would reuse that connection. Now connections to hidden
- services should be more robust and faster. Also, this bug meant
- that clients were leaking to the hidden service whether they were
- on a little-endian (common) or big-endian (rare) system, which for
- some users might have reduced their anonymity. Fixes bug 13151;
- bugfix on 0.2.1.5-alpha.
- o Directory authority changes:
- - Change IP address for gabelmoo (v3 directory authority).
- Changes in version 0.2.4.24 - 2014-09-22
- Tor 0.2.4.24 fixes a bug that affects consistency and speed when
- connecting to hidden services, and it updates the location of one of
- the directory authorities.
- o Major bugfixes:
- - Clients now send the correct address for their chosen rendezvous
- point when trying to access a hidden service. They used to send
- the wrong address, which would still work some of the time because
- they also sent the identity digest of the rendezvous point, and if
- the hidden service happened to try connecting to the rendezvous
- point from a relay that already had a connection open to it,
- the relay would reuse that connection. Now connections to hidden
- services should be more robust and faster. Also, this bug meant
- that clients were leaking to the hidden service whether they were
- on a little-endian (common) or big-endian (rare) system, which for
- some users might have reduced their anonymity. Fixes bug 13151;
- bugfix on 0.2.1.5-alpha.
- o Directory authority changes:
- - Change IP address for gabelmoo (v3 directory authority).
- o Minor features (geoip):
- - Update geoip and geoip6 to the August 7 2014 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.5.7-rc - 2014-09-11
- Tor 0.2.5.7-rc fixes several regressions from earlier in the 0.2.5.x
- release series, and some long-standing bugs related to ORPort reachability
- testing and failure to send CREATE cells. It is the first release
- candidate for the Tor 0.2.5.x series.
- o Major bugfixes (client, startup):
- - Start making circuits as soon as DisabledNetwork is turned off.
- When Tor started with DisabledNetwork set, it would correctly
- conclude that it shouldn't build circuits, but it would mistakenly
- cache this conclusion, and continue believing it even when
- DisableNetwork is set to 0. Fixes the bug introduced by the fix
- for bug 11200; bugfix on 0.2.5.4-alpha.
- - Resume expanding abbreviations for command-line options. The fix
- for bug 4647 accidentally removed our hack from bug 586 that
- rewrote HashedControlPassword to __HashedControlSessionPassword
- when it appears on the commandline (which allowed the user to set
- her own HashedControlPassword in the torrc file while the
- controller generates a fresh session password for each run). Fixes
- bug 12948; bugfix on 0.2.5.1-alpha.
- - Warn about attempts to run hidden services and relays in the same
- process: that's probably not a good idea. Closes ticket 12908.
- o Major bugfixes (relay):
- - Avoid queuing or sending destroy cells for circuit ID zero when we
- fail to send a CREATE cell. Fixes bug 12848; bugfix on 0.0.8pre1.
- Found and fixed by "cypherpunks".
- - Fix ORPort reachability detection on relays running behind a
- proxy, by correctly updating the "local" mark on the controlling
- channel when changing the address of an or_connection_t after the
- handshake. Fixes bug 12160; bugfix on 0.2.4.4-alpha.
- o Minor features (bridge):
- - Add an ExtORPortCookieAuthFileGroupReadable option to make the
- cookie file for the ExtORPort g+r by default.
- o Minor features (geoip):
- - Update geoip and geoip6 to the August 7 2014 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (logging):
- - Reduce the log severity of the "Pluggable transport proxy does not
- provide any needed transports and will not be launched." message,
- since Tor Browser includes several ClientTransportPlugin lines in
- its torrc-defaults file, leading every Tor Browser user who looks
- at her logs to see these notices and wonder if they're dangerous.
- Resolves bug 13124; bugfix on 0.2.5.3-alpha.
- - Downgrade "Unexpected onionskin length after decryption" warning
- to a protocol-warn, since there's nothing relay operators can do
- about a client that sends them a malformed create cell. Resolves
- bug 12996; bugfix on 0.0.6rc1.
- - Log more specific warnings when we get an ESTABLISH_RENDEZVOUS
- cell on a cannibalized or non-OR circuit. Resolves ticket 12997.
- - When logging information about an EXTEND2 or EXTENDED2 cell, log
- their names correctly. Fixes part of bug 12700; bugfix
- on 0.2.4.8-alpha.
- - When logging information about a relay cell whose command we don't
- recognize, log its command as an integer. Fixes part of bug 12700;
- bugfix on 0.2.1.10-alpha.
- - Escape all strings from the directory connection before logging
- them. Fixes bug 13071; bugfix on 0.1.1.15. Patch from "teor".
- o Minor bugfixes (controller):
- - Restore the functionality of CookieAuthFileGroupReadable. Fixes
- bug 12864; bugfix on 0.2.5.1-alpha.
- - Actually send TRANSPORT_LAUNCHED and HS_DESC events to
- controllers. Fixes bug 13085; bugfix on 0.2.5.1-alpha. Patch
- by "teor".
- o Minor bugfixes (compilation):
- - Fix compilation of test.h with MSVC. Patch from Gisle Vanem;
- bugfix on 0.2.5.5-alpha.
- - Make the nmake make files work again. Fixes bug 13081. Bugfix on
- 0.2.5.1-alpha. Patch from "NewEraCracker".
- - In routerlist_assert_ok(), don't take the address of a
- routerinfo's cache_info member unless that routerinfo is non-NULL.
- Fixes bug 13096; bugfix on 0.1.1.9-alpha. Patch by "teor".
- - Fix a large number of false positive warnings from the clang
- analyzer static analysis tool. This should make real warnings
- easier for clang analyzer to find. Patch from "teor". Closes
- ticket 13036.
- o Distribution (systemd):
- - Verify configuration file via ExecStartPre in the systemd unit
- file. Patch from intrigeri; resolves ticket 12730.
- - Explicitly disable RunAsDaemon in the systemd unit file. Our
- current systemd unit uses "Type = simple", so systemd does not
- expect tor to fork. If the user has "RunAsDaemon 1" in their
- torrc, then things won't work as expected. This is e.g. the case
- on Debian (and derivatives), since there we pass "--defaults-torrc
- /usr/share/tor/tor-service-defaults-torrc" (that contains
- "RunAsDaemon 1") by default. Patch by intrigeri; resolves
- ticket 12731.
- o Documentation:
- - Adjust the URLs in the README to refer to the new locations of
- several documents on the website. Fixes bug 12830. Patch from
- Matt Pagan.
- - Document 'reject6' and 'accept6' ExitPolicy entries. Resolves
- ticket 12878.
- Changes in version 0.2.5.6-alpha - 2014-07-28
- Tor 0.2.5.6-alpha brings us a big step closer to slowing down the
- risk from guard rotation, and fixes a variety of other issues to get
- us closer to a release candidate.
- o Major features (also in 0.2.4.23):
- - Make the number of entry guards configurable via a new
- NumEntryGuards consensus parameter, and the number of directory
- guards configurable via a new NumDirectoryGuards consensus
- parameter. Implements ticket 12688.
- o Major bugfixes (also in 0.2.4.23):
- - Fix a bug in the bounds-checking in the 32-bit curve25519-donna
- implementation that caused incorrect results on 32-bit
- implementations when certain malformed inputs were used along with
- a small class of private ntor keys. This bug does not currently
- appear to allow an attacker to learn private keys or impersonate a
- Tor server, but it could provide a means to distinguish 32-bit Tor
- implementations from 64-bit Tor implementations. Fixes bug 12694;
- bugfix on 0.2.4.8-alpha. Bug found by Robert Ransom; fix from
- Adam Langley.
- o Major bugfixes:
- - Perform circuit cleanup operations even when circuit
- construction operations are disabled (because the network is
- disabled, or because there isn't enough directory information).
- Previously, when we were not building predictive circuits, we
- were not closing expired circuits either. Fixes bug 8387; bugfix on
- 0.1.1.11-alpha. This bug became visible in 0.2.4.10-alpha when we
- became more strict about when we have "enough directory information
- to build circuits".
- o Minor features:
- - Authorities now assign the Guard flag to the fastest 25% of the
- network (it used to be the fastest 50%). Also raise the consensus
- weight that guarantees the Guard flag from 250 to 2000. For the
- current network, this results in about 1100 guards, down from 2500.
- This step paves the way for moving the number of entry guards
- down to 1 (proposal 236) while still providing reasonable expected
- performance for most users. Implements ticket 12690.
- - Update geoip and geoip6 to the July 10 2014 Maxmind GeoLite2
- Country database.
- - Slightly enhance the diagnostic message for bug 12184.
- o Minor bugfixes (also in 0.2.4.23):
- - Warn and drop the circuit if we receive an inbound 'relay early'
- cell. Those used to be normal to receive on hidden service circuits
- due to bug 1038, but the buggy Tor versions are long gone from
- the network so we can afford to resume watching for them. Resolves
- the rest of bug 1038; bugfix on 0.2.1.19.
- - Correct a confusing error message when trying to extend a circuit
- via the control protocol but we don't know a descriptor or
- microdescriptor for one of the specified relays. Fixes bug 12718;
- bugfix on 0.2.3.1-alpha.
- o Minor bugfixes:
- - Fix compilation when building with bufferevents enabled. (This
- configuration is still not expected to work, however.)
- Fixes bugs 12438, 12474, 11578; bugfixes on 0.2.5.1-alpha and
- 0.2.5.3-alpha. Patches from Anthony G. Basile and Sathyanarayanan
- Gunasekaran.
- - Compile correctly with builds and forks of OpenSSL (such as
- LibreSSL) that disable compression. Fixes bug 12602; bugfix on
- 0.2.1.1-alpha. Patch from "dhill".
- Changes in version 0.2.4.23 - 2014-07-28
- Tor 0.2.4.23 brings us a big step closer to slowing down the risk from
- guard rotation, and also backports several important fixes from the
- Tor 0.2.5 alpha release series.
- o Major features:
- - Clients now look at the "usecreatefast" consensus parameter to
- decide whether to use CREATE_FAST or CREATE cells for the first hop
- of their circuit. This approach can improve security on connections
- where Tor's circuit handshake is stronger than the available TLS
- connection security levels, but the tradeoff is more computational
- load on guard relays. Implements proposal 221. Resolves ticket 9386.
- - Make the number of entry guards configurable via a new
- NumEntryGuards consensus parameter, and the number of directory
- guards configurable via a new NumDirectoryGuards consensus
- parameter. Implements ticket 12688.
- o Major bugfixes:
- - Fix a bug in the bounds-checking in the 32-bit curve25519-donna
- implementation that caused incorrect results on 32-bit
- implementations when certain malformed inputs were used along with
- a small class of private ntor keys. This bug does not currently
- appear to allow an attacker to learn private keys or impersonate a
- Tor server, but it could provide a means to distinguish 32-bit Tor
- implementations from 64-bit Tor implementations. Fixes bug 12694;
- bugfix on 0.2.4.8-alpha. Bug found by Robert Ransom; fix from
- Adam Langley.
- o Minor bugfixes:
- - Warn and drop the circuit if we receive an inbound 'relay early'
- cell. Those used to be normal to receive on hidden service circuits
- due to bug 1038, but the buggy Tor versions are long gone from
- the network so we can afford to resume watching for them. Resolves
- the rest of bug 1038; bugfix on 0.2.1.19.
- - Correct a confusing error message when trying to extend a circuit
- via the control protocol but we don't know a descriptor or
- microdescriptor for one of the specified relays. Fixes bug 12718;
- bugfix on 0.2.3.1-alpha.
- - Avoid an illegal read from stack when initializing the TLS
- module using a version of OpenSSL without all of the ciphers
- used by the v2 link handshake. Fixes bug 12227; bugfix on
- 0.2.4.8-alpha. Found by "starlight".
- o Minor features:
- - Update geoip and geoip6 to the July 10 2014 Maxmind GeoLite2
- Country database.
- Changes in version 0.2.5.5-alpha - 2014-06-18
- Tor 0.2.5.5-alpha fixes a wide variety of remaining issues in the Tor
- 0.2.5.x release series, including a couple of DoS issues, some
- performance regressions, a large number of bugs affecting the Linux
- seccomp2 sandbox code, and various other bugfixes. It also adds
- diagnostic bugfixes for a few tricky issues that we're trying to
- track down.
- o Major features (security, traffic analysis resistance):
- - Several major improvements to the algorithm used to decide when to
- close TLS connections. Previous versions of Tor closed connections
- at a fixed interval after the last time a non-padding cell was
- sent over the connection, regardless of the target of the
- connection. Now, we randomize the intervals by adding up to 50% of
- their base value, we measure the length of time since connection
- last had at least one circuit, and we allow connections to known
- ORs to remain open a little longer (15 minutes instead of 3
- minutes minimum). These changes should improve Tor's resistance
- against some kinds of traffic analysis, and lower some overhead
- from needlessly closed connections. Fixes ticket 6799.
- Incidentally fixes ticket 12023; bugfix on 0.2.5.1-alpha.
- o Major bugfixes (security, OOM, new since 0.2.5.4-alpha, also in 0.2.4.22):
- - Fix a memory leak that could occur if a microdescriptor parse
- fails during the tokenizing step. This bug could enable a memory
- exhaustion attack by directory servers. Fixes bug 11649; bugfix
- on 0.2.2.6-alpha.
- o Major bugfixes (security, directory authorities):
- - Directory authorities now include a digest of each relay's
- identity key as a part of its microdescriptor.
- This is a workaround for bug 11743 (reported by "cypherpunks"),
- where Tor clients do not support receiving multiple
- microdescriptors with the same SHA256 digest in the same
- consensus. When clients receive a consensus like this, they only
- use one of the relays. Without this fix, a hostile relay could
- selectively disable some client use of target relays by
- constructing a router descriptor with a different identity and the
- same microdescriptor parameters and getting the authorities to
- list it in a microdescriptor consensus. This fix prevents an
- attacker from causing a microdescriptor collision, because the
- router's identity is not forgeable.
- o Major bugfixes (relay):
- - Use a direct dirport connection when uploading non-anonymous
- descriptors to the directory authorities. Previously, relays would
- incorrectly use tunnel connections under a fairly wide variety of
- circumstances. Fixes bug 11469; bugfix on 0.2.4.3-alpha.
- - When a circuit accidentally has the same circuit ID for its
- forward and reverse direction, correctly detect the direction of
- cells using that circuit. Previously, this bug made roughly one
- circuit in a million non-functional. Fixes bug 12195; this is a
- bugfix on every version of Tor.
- o Major bugfixes (client, pluggable transports):
- - When managing pluggable transports, use OS notification facilities
- to learn if they have crashed, and don't attempt to kill any
- process that has already exited. Fixes bug 8746; bugfix
- on 0.2.3.6-alpha.
- o Minor features (diagnostic):
- - When logging a warning because of bug 7164, additionally check the
- hash table for consistency (as proposed on ticket 11737). This may
- help diagnose bug 7164.
- - When we log a heartbeat, log how many one-hop circuits we have
- that are at least 30 minutes old, and log status information about
- a few of them. This is an attempt to track down bug 8387.
- - When encountering an unexpected CR while writing text to a file on
- Windows, log the name of the file. Should help diagnosing
- bug 11233.
- - Give more specific warnings when a client notices that an onion
- handshake has failed. Fixes ticket 9635.
- - Add significant new logging code to attempt to diagnose bug 12184,
- where relays seem to run out of available circuit IDs.
- - Improve the diagnostic log message for bug 8387 even further to
- try to improve our odds of figuring out why one-hop directory
- circuits sometimes do not get closed.
- o Minor features (security, memory management):
- - Memory allocation tricks (mempools and buffer freelists) are now
- disabled by default. You can turn them back on with
- --enable-mempools and --enable-buf-freelists respectively. We're
- disabling these features because malloc performance is good enough
- on most platforms, and a similar feature in OpenSSL exacerbated
- exploitation of the Heartbleed attack. Resolves ticket 11476.
- o Minor features (security):
- - Apply the secure SipHash-2-4 function to the hash table mapping
- circuit IDs and channels to circuits. We missed this one when we
- were converting all the other hash functions to use SipHash back
- in 0.2.5.3-alpha. Resolves ticket 11750.
- o Minor features (build):
- - The configure script has a --disable-seccomp option to turn off
- support for libseccomp on systems that have it, in case it (or
- Tor's use of it) is broken. Resolves ticket 11628.
- o Minor features (other):
- - Update geoip and geoip6 to the June 4 2014 Maxmind GeoLite2
- Country database.
- o Minor bugfixes (security, new since 0.2.5.4-alpha, also in 0.2.4.22):
- - When running a hidden service, do not allow TunneledDirConns 0;
- this will keep the hidden service from running, and also
- make it publish its descriptors directly over HTTP. Fixes bug 10849;
- bugfix on 0.2.1.1-alpha.
- o Minor bugfixes (performance):
- - Avoid a bug where every successful connection made us recompute
- the flag telling us whether we have sufficient information to
- build circuits. Previously, we would forget our cached value
- whenever we successfully opened a channel (or marked a router as
- running or not running for any other reason), regardless of
- whether we had previously believed the router to be running. This
- forced us to run an expensive update operation far too often.
- Fixes bug 12170; bugfix on 0.1.2.1-alpha.
- - Avoid using tor_memeq() for checking relay cell integrity. This
- removes a possible performance bottleneck. Fixes part of bug
- 12169; bugfix on 0.2.1.31.
- o Minor bugfixes (compilation):
- - Fix compilation of test_status.c when building with MVSC. Bugfix
- on 0.2.5.4-alpha. Patch from Gisle Vanem.
- - Resolve GCC complaints on OpenBSD about discarding constness in
- TO_{ORIGIN,OR}_CIRCUIT functions. Fixes part of bug 11633; bugfix
- on 0.1.1.23. Patch from Dana Koch.
- - Resolve clang complaints on OpenBSD with -Wshorten-64-to-32 due to
- treatment of long and time_t as comparable types. Fixes part of
- bug 11633. Patch from Dana Koch.
- - Make Tor compile correctly with --disable-buf-freelists. Fixes bug
- 11623; bugfix on 0.2.5.3-alpha.
- - When deciding whether to build the 64-bit curve25519
- implementation, detect platforms where we can compile 128-bit
- arithmetic but cannot link it. Fixes bug 11729; bugfix on
- 0.2.4.8-alpha. Patch from "conradev".
- - Fix compilation when DNS_CACHE_DEBUG is enabled. Fixes bug 11761;
- bugfix on 0.2.3.13-alpha. Found by "cypherpunks".
- - Fix compilation with dmalloc. Fixes bug 11605; bugfix
- on 0.2.4.10-alpha.
- o Minor bugfixes (Directory server):
- - When sending a compressed set of descriptors or microdescriptors,
- make sure to finalize the zlib stream. Previously, we would write
- all the compressed data, but if the last descriptor we wanted to
- send was missing or too old, we would not mark the stream as
- finished. This caused problems for decompression tools. Fixes bug
- 11648; bugfix on 0.1.1.23.
- o Minor bugfixes (Linux seccomp sandbox):
- - Make the seccomp sandbox code compile under ARM Linux. Fixes bug
- 11622; bugfix on 0.2.5.1-alpha.
- - Avoid crashing when re-opening listener ports with the seccomp
- sandbox active. Fixes bug 12115; bugfix on 0.2.5.1-alpha.
- - Avoid crashing with the seccomp sandbox enabled along with
- ConstrainedSockets. Fixes bug 12139; bugfix on 0.2.5.1-alpha.
- - When we receive a SIGHUP with the sandbox enabled, correctly
- support rotating our log files. Fixes bug 12032; bugfix
- on 0.2.5.1-alpha.
- - Avoid crash when running with sandboxing enabled and
- DirReqStatistics not disabled. Fixes bug 12035; bugfix
- on 0.2.5.1-alpha.
- - Fix a "BUG" warning when trying to write bridge-stats files with
- the Linux syscall sandbox filter enabled. Fixes bug 12041; bugfix
- on 0.2.5.1-alpha.
- - Prevent the sandbox from crashing on startup when run with the
- --enable-expensive-hardening configuration option. Fixes bug
- 11477; bugfix on 0.2.5.4-alpha.
- - When running with DirPortFrontPage and sandboxing both enabled,
- reload the DirPortFrontPage correctly when restarting. Fixes bug
- 12028; bugfix on 0.2.5.1-alpha.
- - Don't try to enable the sandbox when using the Tor binary to check
- its configuration, hash a passphrase, or so on. Doing so was
- crashing on startup for some users. Fixes bug 11609; bugfix
- on 0.2.5.1-alpha.
- - Avoid warnings when running with sandboxing and node statistics
- enabled at the same time. Fixes part of 12064; bugfix on
- 0.2.5.1-alpha. Patch from Michael Wolf.
- - Avoid warnings when running with sandboxing enabled at the same
- time as cookie authentication, hidden services, or directory
- authority voting. Fixes part of 12064; bugfix on 0.2.5.1-alpha.
- - Do not allow options that require calls to exec to be enabled
- alongside the seccomp2 sandbox: they will inevitably crash. Fixes
- bug 12043; bugfix on 0.2.5.1-alpha.
- - Handle failures in getpwnam()/getpwuid() when running with the
- User option set and the Linux syscall sandbox enabled. Fixes bug
- 11946; bugfix on 0.2.5.1-alpha.
- - Refactor the getaddrinfo workaround that the seccomp sandbox uses
- to avoid calling getaddrinfo() after installing the sandbox
- filters. Previously, it preloaded a cache with the IPv4 address
- for our hostname, and nothing else. Now, it loads the cache with
- every address that it used to initialize the Tor process. Fixes
- bug 11970; bugfix on 0.2.5.1-alpha.
- o Minor bugfixes (pluggable transports):
- - Enable the ExtORPortCookieAuthFile option, to allow changing the
- default location of the authentication token for the extended OR
- Port as used by sever-side pluggable transports. We had
- implemented this option before, but the code to make it settable
- had been omitted. Fixes bug 11635; bugfix on 0.2.5.1-alpha.
- - Avoid another 60-second delay when starting Tor in a pluggable-
- transport-using configuration when we already have cached
- descriptors for our bridges. Fixes bug 11965; bugfix
- on 0.2.3.6-alpha.
- o Minor bugfixes (client):
- - Avoid "Tried to open a socket with DisableNetwork set" warnings
- when starting a client with bridges configured and DisableNetwork
- set. (Tor launcher starts Tor with DisableNetwork set the first
- time it runs.) Fixes bug 10405; bugfix on 0.2.3.9-alpha.
- o Minor bugfixes (testing):
- - The Python parts of the test scripts now work on Python 3 as well
- as Python 2, so systems where '/usr/bin/python' is Python 3 will
- no longer have the tests break. Fixes bug 11608; bugfix
- on 0.2.5.2-alpha.
- - When looking for versions of python that we could run the tests
- with, check for "python2.7" and "python3.3"; previously we were
- only looking for "python", "python2", and "python3". Patch from
- Dana Koch. Fixes bug 11632; bugfix on 0.2.5.2-alpha.
- - Fix all valgrind warnings produced by the unit tests. There were
- over a thousand memory leak warnings previously, mostly produced
- by forgetting to free things in the unit test code. Fixes bug
- 11618, bugfixes on many versions of Tor.
- o Minor bugfixes (tor-fw-helper):
- - Give a correct log message when tor-fw-helper fails to launch.
- (Previously, we would say something like "tor-fw-helper sent us a
- string we could not parse".) Fixes bug 9781; bugfix
- on 0.2.4.2-alpha.
- o Minor bugfixes (relay, threading):
- - Check return code on spawn_func() in cpuworker code, so that we
- don't think we've spawned a nonworking cpuworker and write junk to
- it forever. Fix related to bug 4345; bugfix on all released Tor
- versions. Found by "skruffy".
- - Use a pthread_attr to make sure that spawn_func() cannot return an
- error while at the same time launching a thread. Fix related to
- bug 4345; bugfix on all released Tor versions. Reported
- by "cypherpunks".
- o Minor bugfixes (relay, oom prevention):
- - Correctly detect the total available system memory. We tried to do
- this in 0.2.5.4-alpha, but the code was set up to always return an
- error value, even on success. Fixes bug 11805; bugfix
- on 0.2.5.4-alpha.
- o Minor bugfixes (relay, other):
- - We now drop CREATE cells for already-existent circuit IDs and for
- zero-valued circuit IDs, regardless of other factors that might
- otherwise have called for DESTROY cells. Fixes bug 12191; bugfix
- on 0.0.8pre1.
- - Avoid an illegal read from stack when initializing the TLS module
- using a version of OpenSSL without all of the ciphers used by the
- v2 link handshake. Fixes bug 12227; bugfix on 0.2.4.8-alpha. Found
- by "starlight".
- - When rejecting DATA cells for stream_id zero, still count them
- against the circuit's deliver window so that we don't fail to send
- a SENDME. Fixes bug 11246; bugfix on 0.2.4.10-alpha.
- o Minor bugfixes (logging):
- - Fix a misformatted log message about delayed directory fetches.
- Fixes bug 11654; bugfix on 0.2.5.3-alpha.
- - Squelch a spurious LD_BUG message "No origin circuit for
- successful SOCKS stream" in certain hidden service failure cases;
- fixes bug 10616.
- o Distribution:
- - Include a tor.service file in contrib/dist for use with systemd.
- Some distributions will be able to use this file unmodified;
- others will need to tweak it, or write their own. Patch from Jamie
- Nguyen; resolves ticket 8368.
- o Documentation:
- - Clean up several option names in the manpage to match their real
- names, add the missing documentation for a couple of testing and
- directory authority options, remove the documentation for a
- V2-directory fetching option that no longer exists. Resolves
- ticket 11634.
- - Correct the documentation so that it lists the correct directory
- for the stats files. (They are in a subdirectory called "stats",
- not "status".)
- - In the manpage, move more authority-only options into the
- directory authority section so that operators of regular directory
- caches don't get confused.
- o Package cleanup:
- - The contrib directory has been sorted and tidied. Before, it was
- an unsorted dumping ground for useful and not-so-useful things.
- Now, it is divided based on functionality, and the items which
- seemed to be nonfunctional or useless have been removed. Resolves
- ticket 8966; based on patches from "rl1987".
- o Removed code:
- - Remove /tor/dbg-stability.txt URL that was meant to help debug WFU
- and MTBF calculations, but that nobody was using. Fixes ticket 11742.
- - The TunnelDirConns and PreferTunnelledDirConns options no longer
- exist; tunneled directory connections have been available since
- 0.1.2.5-alpha, and turning them off is not a good idea. This is a
- brute-force fix for 10849, where "TunnelDirConns 0" would break
- hidden services.
- Changes in version 0.2.4.22 - 2014-05-16
- Tor 0.2.4.22 backports numerous high-priority fixes from the Tor 0.2.5
- alpha release series. These include blocking all authority signing
- keys that may have been affected by the OpenSSL "heartbleed" bug,
- choosing a far more secure set of TLS ciphersuites by default, closing
- a couple of memory leaks that could be used to run a target relay out
- of RAM, and several others.
- o Major features (security, backport from 0.2.5.4-alpha):
- - Block authority signing keys that were used on authorities
- vulnerable to the "heartbleed" bug in OpenSSL (CVE-2014-0160). (We
- don't have any evidence that these keys _were_ compromised; we're
- doing this to be prudent.) Resolves ticket 11464.
- o Major bugfixes (security, OOM):
- - Fix a memory leak that could occur if a microdescriptor parse
- fails during the tokenizing step. This bug could enable a memory
- exhaustion attack by directory servers. Fixes bug 11649; bugfix
- on 0.2.2.6-alpha.
- o Major bugfixes (TLS cipher selection, backport from 0.2.5.4-alpha):
- - The relay ciphersuite list is now generated automatically based on
- uniform criteria, and includes all OpenSSL ciphersuites with
- acceptable strength and forward secrecy. Previously, we had left
- some perfectly fine ciphersuites unsupported due to omission or
- typo. Resolves bugs 11513, 11492, 11498, 11499. Bugs reported by
- 'cypherpunks'. Bugfix on 0.2.4.8-alpha.
- - Relays now trust themselves to have a better view than clients of
- which TLS ciphersuites are better than others. (Thanks to bug
- 11513, the relay list is now well-considered, whereas the client
- list has been chosen mainly for anti-fingerprinting purposes.)
- Relays prefer: AES over 3DES; then ECDHE over DHE; then GCM over
- CBC; then SHA384 over SHA256 over SHA1; and last, AES256 over
- AES128. Resolves ticket 11528.
- - Clients now try to advertise the same list of ciphersuites as
- Firefox 28. This change enables selection of (fast) GCM
- ciphersuites, disables some strange old ciphers, and stops
- advertising the ECDH (not to be confused with ECDHE) ciphersuites.
- Resolves ticket 11438.
- o Minor bugfixes (configuration, security):
- - When running a hidden service, do not allow TunneledDirConns 0:
- trying to set that option together with a hidden service would
- otherwise prevent the hidden service from running, and also make
- it publish its descriptors directly over HTTP. Fixes bug 10849;
- bugfix on 0.2.1.1-alpha.
- o Minor bugfixes (controller, backport from 0.2.5.4-alpha):
- - Avoid sending a garbage value to the controller when a circuit is
- cannibalized. Fixes bug 11519; bugfix on 0.2.3.11-alpha.
- o Minor bugfixes (exit relay, backport from 0.2.5.4-alpha):
- - Stop leaking memory when we successfully resolve a PTR record.
- Fixes bug 11437; bugfix on 0.2.4.7-alpha.
- o Minor bugfixes (bridge client, backport from 0.2.5.4-alpha):
- - Avoid 60-second delays in the bootstrapping process when Tor is
- launching for a second time while using bridges. Fixes bug 9229;
- bugfix on 0.2.0.3-alpha.
- o Minor bugfixes (relays and bridges, backport from 0.2.5.4-alpha):
- - Give the correct URL in the warning message when trying to run a
- relay on an ancient version of Windows. Fixes bug 9393.
- o Minor bugfixes (compilation):
- - Fix a compilation error when compiling with --disable-curve25519.
- Fixes bug 9700; bugfix on 0.2.4.17-rc.
- o Minor bugfixes:
- - Downgrade the warning severity for the the "md was still
- referenced 1 node(s)" warning. Tor 0.2.5.4-alpha has better code
- for trying to diagnose this bug, and the current warning in
- earlier versions of tor achieves nothing useful. Addresses warning
- from bug 7164.
- o Minor features (log verbosity, backport from 0.2.5.4-alpha):
- - When we run out of usable circuit IDs on a channel, log only one
- warning for the whole channel, and describe how many circuits
- there were on the channel. Fixes part of ticket 11553.
- o Minor features (security, backport from 0.2.5.4-alpha):
- - Decrease the lower limit of MaxMemInCellQueues to 256 MBytes (but
- leave the default at 8GBytes), to better support Raspberry Pi
- users. Fixes bug 9686; bugfix on 0.2.4.14-alpha.
- o Documentation (backport from 0.2.5.4-alpha):
- - Correctly document that we search for a system torrc file before
- looking in ~/.torrc. Fixes documentation side of 9213; bugfix on
- 0.2.3.18-rc.
- Changes in version 0.2.5.4-alpha - 2014-04-25
- Tor 0.2.5.4-alpha includes several security and performance
- improvements for clients and relays, including blacklisting authority
- signing keys that were used while susceptible to the OpenSSL
- "heartbleed" bug, fixing two expensive functions on busy relays,
- improved TLS ciphersuite preference lists, support for run-time
- hardening on compilers that support AddressSanitizer, and more work on
- the Linux sandbox code.
- There are also several usability fixes for clients (especially clients
- that use bridges), two new TransPort protocols supported (one on
- OpenBSD, one on FreeBSD), and various other bugfixes.
- This release marks end-of-life for Tor 0.2.2.x; those Tor versions
- have accumulated many known flaws; everyone should upgrade.
- o Major features (security):
- - If you don't specify MaxMemInQueues yourself, Tor now tries to
- pick a good value based on your total system memory. Previously,
- the default was always 8 GB. You can still override the default by
- setting MaxMemInQueues yourself. Resolves ticket 11396.
- - Block authority signing keys that were used on authorities
- vulnerable to the "heartbleed" bug in OpenSSL (CVE-2014-0160). (We
- don't have any evidence that these keys _were_ compromised; we're
- doing this to be prudent.) Resolves ticket 11464.
- o Major features (relay performance):
- - Speed up server-side lookups of rendezvous and introduction point
- circuits by using hashtables instead of linear searches. These
- functions previously accounted between 3 and 7% of CPU usage on
- some busy relays. Resolves ticket 9841.
- - Avoid wasting CPU when extending a circuit over a channel that is
- nearly out of circuit IDs. Previously, we would do a linear scan
- over possible circuit IDs before finding one or deciding that we
- had exhausted our possibilities. Now, we try at most 64 random
- circuit IDs before deciding that we probably won't succeed. Fixes
- a possible root cause of ticket 11553.
- o Major features (seccomp2 sandbox, Linux only):
- - The seccomp2 sandbox can now run a test network for multiple hours
- without crashing. The sandbox is still experimental, and more bugs
- will probably turn up. To try it, enable "Sandbox 1" on a Linux
- host. Resolves ticket 11351.
- - Strengthen sandbox code: the sandbox can now test the arguments
- for rename(), and blocks _sysctl() entirely. Resolves another part
- of ticket 11351.
- - When the sandbox blocks a system call, it now tries to log a stack
- trace before exiting. Resolves ticket 11465.
- o Major bugfixes (TLS cipher selection):
- - The relay ciphersuite list is now generated automatically based on
- uniform criteria, and includes all OpenSSL ciphersuites with
- acceptable strength and forward secrecy. Previously, we had left
- some perfectly fine ciphersuites unsupported due to omission or
- typo. Resolves bugs 11513, 11492, 11498, 11499. Bugs reported by
- 'cypherpunks'. Bugfix on 0.2.4.8-alpha.
- - Relays now trust themselves to have a better view than clients of
- which TLS ciphersuites are better than others. (Thanks to bug
- 11513, the relay list is now well-considered, whereas the client
- list has been chosen mainly for anti-fingerprinting purposes.)
- Relays prefer: AES over 3DES; then ECDHE over DHE; then GCM over
- CBC; then SHA384 over SHA256 over SHA1; and last, AES256 over
- AES128. Resolves ticket 11528.
- - Clients now try to advertise the same list of ciphersuites as
- Firefox 28. This change enables selection of (fast) GCM
- ciphersuites, disables some strange old ciphers, and stops
- advertising the ECDH (not to be confused with ECDHE) ciphersuites.
- Resolves ticket 11438.
- o Major bugfixes (bridge client):
- - Avoid 60-second delays in the bootstrapping process when Tor is
- launching for a second time while using bridges. Fixes bug 9229;
- bugfix on 0.2.0.3-alpha.
- o Minor features (transparent proxy, *BSD):
- - Support FreeBSD's ipfw firewall interface for TransPort ports on
- FreeBSD. To enable it, set "TransProxyType ipfw". Resolves ticket
- 10267; patch from "yurivict".
- - Support OpenBSD's divert-to rules with the pf firewall for
- transparent proxy ports. To enable it, set "TransProxyType
- pf-divert". This allows Tor to run a TransPort transparent proxy
- port on OpenBSD 4.4 or later without root privileges. See the
- pf.conf(5) manual page for information on configuring pf to use
- divert-to rules. Closes ticket 10896; patch from Dana Koch.
- o Minor features (security):
- - New --enable-expensive-hardening option to enable security
- hardening options that consume nontrivial amounts of CPU and
- memory. Right now, this includes AddressSanitizer and UbSan, which
- are supported in newer versions of GCC and Clang. Closes ticket
- 11477.
- o Minor features (log verbosity):
- - Demote the message that we give when a flushing connection times
- out for too long from NOTICE to INFO. It was usually meaningless.
- Resolves ticket 5286.
- - Don't log so many notice-level bootstrapping messages at startup
- about downloading descriptors. Previously, we'd log a notice
- whenever we learned about more routers. Now, we only log a notice
- at every 5% of progress. Fixes bug 9963.
- - Warn less verbosely when receiving a malformed
- ESTABLISH_RENDEZVOUS cell. Fixes ticket 11279.
- - When we run out of usable circuit IDs on a channel, log only one
- warning for the whole channel, and describe how many circuits
- there were on the channel. Fixes part of ticket 11553.
- o Minor features (relay):
- - If a circuit timed out for at least 3 minutes, check if we have a
- new external IP address, and publish a new descriptor with the new
- IP address if it changed. Resolves ticket 2454.
- o Minor features (controller):
- - Make the entire exit policy available from the control port via
- GETINFO exit-policy
|